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] rawhide: Reorganize patches Date: Wed, 01 Jul 2026 15:52:47 GMT Message-ID: <178292116763.1.3464042574256221660.rpms-onnx-351e8aaa0791@fedoraproject.org> List-ID: X-Git-Repo: rpms/onnx X-Git-Branch: rawhide X-Git-Rev: 351e8aaa07916fe2add96d84f24d7c9d1327770c QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb25ueApCcmFuY2gg OiByYXdoaWRlCkNvbW1pdCA6IDM1MWU4YWFhMDc5MTZmZTJhZGQ5NmQ4NGYyNGQ3YzlkMTMyNzc3 MGMKQXV0aG9yIDogRGllZ28gSGVycmVyYSA8ZGhlcnJlcmFAcmVkaGF0LmNvbT4KRGF0ZSAgIDog MjAyNi0wNy0wMVQwMDozNDozMi0wNDowMApTdGF0cyAgOiArNTk4MS8tNTgxNCBpbiAxMCBmaWxl KHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvb25ueC9jLzM1 MWU4YWFhMDc5MTZmZTJhZGQ5NmQ4NGYyNGQ3YzlkMTMyNzc3MGM/YnJhbmNoPXJhd2hpZGUKCkxv ZzoKUmVvcmdhbml6ZSBwYXRjaGVzCgotLS0KZGlmZiAtLWdpdCBhLzAwMDAtQnVpbGQtc2hhcmVk LWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2ggYi8wMDAwLUJ1aWxkLXNo YXJlZC1saWJyYXJpZXMtYW5kLWZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA1NDIzNzU1Li4wMDAwMDAwCi0tLSBhLzAwMDAtQnVpbGQtc2hh cmVkLWxpYnJhcmllcy1hbmQtZml4LWluc3RhbGwtbG9jYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw3MiArMCwwIEBACi1Gcm9tIGE0OGY0MmIxZTNkZDk3MmNmMmM1YWQ5YjkyMjdkYTll MmIxYzlmYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGVqYW5kcm8gQWx2YXJl eiBBeWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI0IEZlYiAy MDI0IDE0OjQ4OjQ1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMC8yXSBCdWlsZCBzaGFyZWQgbGli cmFyaWVzIGFuZCBmaXggaW5zdGFsbCBsb2NhdGlvbgotCi1UaGlzIHBhdGNoIHdhcyB1cGRhdGVk IHRvIGJlIGFibGUgdG8gYmUgdXNlZCBvbiBtb2Rlcm4gdmVyc2lvbnMgb2YgdGhlIGxpYnJhcnku Ci0KLUNvLWF1dGhvcmVkLWJ5OiBEaWVnbyBIZXJyZXJhIDxkaGVycmVyYUByZWRoYXQuY29tPgot Ci0tLS0KLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWlu ZGV4IDA0NDk5NmUxYi4uM2EwOGQzMjg5IDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsr KyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtNDE0LDE5ICs0MTQsMjEgQEAgaWYoT05OWF9VU0VfTElU RV9QUk9UTykKLSAgICAgc2V0KExJTktFRF9QUk9UT0JVRl9UQVJHRVQgcHJvdG9idWY6OmxpYnBy b3RvYnVmLWxpdGUpCi0gICBlbmRpZigpCi0gZW5kaWYoKQotLWFkZF9saWJyYXJ5KG9ubnhfcHJv dG8gJHtPTk5YX1BST1RPX1NSQ1N9KQotK2FkZF9saWJyYXJ5KG9ubnhfcHJvdG8gU0hBUkVEICR7 T05OWF9QUk9UT19TUkNTfSkKLSBhZGRfb25ueF9nbG9iYWxfZGVmaW5lcyhvbm54X3Byb3RvKQot LQotLWFkZF9saWJyYXJ5KG9ubnggJHtPTk5YX1NSQ1N9ICR7T05OWF9QUk9UT19TUkNTfSkKLStz ZXRfdGFyZ2V0X3Byb3BlcnRpZXMob25ueF9wcm90byBQUk9QRVJUSUVTIFZFUlNJT04gJHtPTk5Y X1ZFUlNJT059Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT T1ZFUlNJT04gJHtPTk5YX1ZFUlNJT059KQotK2FkZF9saWJyYXJ5KG9ubnggU0hBUkVEICR7T05O WF9TUkNTfSAke09OTlhfUFJPVE9fU1JDU30pCi0gYWRkX2RlcGVuZGVuY2llcyhvbm54IG9ubnhf cHJvdG8pCi0gc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7T05OWF9TUkNTfSBQUk9QRVJU SUVTIENYWF9WSVNJQklMSVRZX1BSRVNFVCBoaWRkZW4pCi0gYWRkX29ubnhfZ2xvYmFsX2RlZmlu ZXMob25ueCkKLS0KLStzZXRfdGFyZ2V0X3Byb3BlcnRpZXMob25ueCBQUk9QRVJUSUVTIFZFUlNJ T04gJHtPTk5YX1ZFUlNJT059Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNPVkVSU0lPTiAke09OTlhfVkVSU0lPTn0pCi0gaWYoT05OWF9CVUlMRF9QWVRIT04pCi0g ICAjIGZpbmQgc3lzdGVtIG5hbm9iaW5kCi0gICBpZihOT1QgREVGSU5FRCBuYW5vYmluZF9ESVIg T1IgIiR7bmFub2JpbmRfRElSfSIgU1RSRVFVQUwgIiIpCi0gICAgIGV4ZWN1dGVfcHJvY2VzcygK LS0gICAgICBDT01NQU5EICR7UHl0aG9uX0VYRUNVVEFCTEV9IC1tIG5hbm9iaW5kIC0tY21ha2Ut ZGlyCi0rICAgICAgQ09NTUFORCAke1B5dGhvbl9FWEVDVVRBQkxFfSAtbSBuYW5vYmluZCAtLWNt YWtlX2RpcgotICAgICAgIFJFU1VMVF9WQVJJQUJMRSBOQU5PQklORF9DTUFLRV9SRVNVTFQKLSAg ICAgICBPVVRQVVRfVkFSSUFCTEUgTkFOT0JJTkRfQ01BS0VfRElSCi0gICAgICAgT1VUUFVUX1NU UklQX1RSQUlMSU5HX1dISVRFU1BBQ0UKLUBAIC00OTEsNiArNDkzLDE2IEBAIGlmKE9OTlhfSU5T VEFMTCkKLSAgICAgICAgICAgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9 Ci0gICAgICAgICAgIEZJTEVTX01BVENISU5HCi0gICAgICAgICAgIFBBVFRFUk4gIiouaCIpCi0r ICBpbnN0YWxsKERJUkVDVE9SWSAke09OTlhfUk9PVH0vb25ueAotKyAgICAgICAgICBERVNUSU5B VElPTiAiJHtQWV9TSVRFQVJDSH0iCi0rICAgICAgICAgIEZJTEVTX01BVENISU5HCi0rICAgICAg ICAgIFBBVFRFUk4gIioucHkiCi0rICAgICAgICAgIFBBVFRFUk4gInRlc3QvKiIgRVhDTFVERSAp Ci0rICBpbnN0YWxsKERJUkVDVE9SWSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vb25ueAot KyAgICAgICAgICBERVNUSU5BVElPTiAgIiR7UFlfU0lURUFSQ0h9IgotKyAgICAgICAgICBGSUxF U19NQVRDSElORwotKyAgICAgICAgICBQQVRURVJOICIqLnB5IgotKyAgICAgICAgICBQQVRURVJO ICJ0ZXN0LyoiIEVYQ0xVREUgKQotIGVuZGlmKCkKLSAKLSBjb25maWd1cmVfZmlsZSgKLUBAIC01 NDQsNiArNTU2LDkgQEAgaWYoT05OWF9JTlNUQUxMKQotICAgaW5zdGFsbChUQVJHRVRTCi0gICAg IG9ubnggb25ueF9wcm90bwotICAgICBFWFBPUlQgT05OWFRhcmdldHMgREVTVElOQVRJT04gJHtD TUFLRV9JTlNUQUxMX0xJQkRJUn0pCi0rICBpbnN0YWxsKFRBUkdFVFMKLSsgICAgb25ueF9jcHAy cHlfZXhwb3J0Ci0rICAgIERFU1RJTkFUSU9OICIke1BZX1NJVEVBUkNIfS9vbm54IikKLSAKLSAg IGluc3RhbGwoRVhQT1JUIE9OTlhUYXJnZXRzCi0gICAgIERFU1RJTkFUSU9OICIke0NNQUtFX0lO U1RBTExfTElCRElSfS9jbWFrZS9PTk5YIgotLS0gCi0yLjU0LjAKLQoKZGlmZiAtLWdpdCBhLzAw MDEtQnVpbGQtc2hhcmVkLWxpYnJhcmllcy5wYXRjaCBiLzAwMDEtQnVpbGQtc2hhcmVkLWxpYnJh cmllcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTVlOWEzCi0t LSAvZGV2L251bGwKKysrIGIvMDAwMS1CdWlsZC1zaGFyZWQtbGlicmFyaWVzLnBhdGNoCkBAIC0w LDAgKzEsMzUgQEAKK0Zyb20gZGI2NmYzNjEyZjE1OWJkYWYwMWIzNzQ0OTM0ODRlMTkzZTc5ZDQ1 OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJh QHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDEgSnVsIDIwMjYgMDA6MDE6NDQgLTA0MDAKK1N1Ympl Y3Q6IFtQQVRDSCAxLzddIEJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMKKworVGhpcyBwYXRjaCBpcyBw YXJ0IG9mIHRoZSAiQnVpbGQgc2hhcmVkIGxpYnJhcmllcyBhbmQgZml4IGluc3RhbGwgbG9jYXRp b24iIHBhdGNoIGJ5IEFsZWphbmRybyBBbHZhcmV6IEF5bGxvbiA8YS5hbHZhcmV6YXlsbG9uQGdt YWlsLmNvbT4gLSBTYXQsIDI0IEZlYiAyMDI0IDE0OjQ4OjQ1ICswMTAwCisKK2RpZmYgLS1naXQg YS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAwNDQ5OTZlMWIuLjJkOGVh M2RmMCAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAor QEAgLTQxNCwxNCArNDE0LDE2IEBAIGlmKE9OTlhfVVNFX0xJVEVfUFJPVE8pCisgICAgIHNldChM SU5LRURfUFJPVE9CVUZfVEFSR0VUIHByb3RvYnVmOjpsaWJwcm90b2J1Zi1saXRlKQorICAgZW5k aWYoKQorIGVuZGlmKCkKKy1hZGRfbGlicmFyeShvbm54X3Byb3RvICR7T05OWF9QUk9UT19TUkNT fSkKKythZGRfbGlicmFyeShvbm54X3Byb3RvIFNIQVJFRCAke09OTlhfUFJPVE9fU1JDU30pCisg YWRkX29ubnhfZ2xvYmFsX2RlZmluZXMob25ueF9wcm90bykKKy0KKy1hZGRfbGlicmFyeShvbm54 ICR7T05OWF9TUkNTfSAke09OTlhfUFJPVE9fU1JDU30pCisrc2V0X3RhcmdldF9wcm9wZXJ0aWVz KG9ubnhfcHJvdG8gUFJPUEVSVElFUyBWRVJTSU9OICR7T05OWF9WRVJTSU9OfQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09WRVJTSU9OICR7T05OWF9WRVJT SU9OfSkKKythZGRfbGlicmFyeShvbm54IFNIQVJFRCAke09OTlhfU1JDU30gJHtPTk5YX1BST1RP X1NSQ1N9KQorIGFkZF9kZXBlbmRlbmNpZXMob25ueCBvbm54X3Byb3RvKQorIHNldF9zb3VyY2Vf ZmlsZXNfcHJvcGVydGllcygke09OTlhfU1JDU30gUFJPUEVSVElFUyBDWFhfVklTSUJJTElUWV9Q UkVTRVQgaGlkZGVuKQorIGFkZF9vbm54X2dsb2JhbF9kZWZpbmVzKG9ubngpCistCisrc2V0X3Rh cmdldF9wcm9wZXJ0aWVzKG9ubnggUFJPUEVSVElFUyBWRVJTSU9OICR7T05OWF9WRVJTSU9OfQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1ZFUlNJT04gJHtPTk5Y X1ZFUlNJT059KQorIGlmKE9OTlhfQlVJTERfUFlUSE9OKQorICAgIyBmaW5kIHN5c3RlbSBuYW5v YmluZAorICAgaWYoTk9UIERFRklORUQgbmFub2JpbmRfRElSIE9SICIke25hbm9iaW5kX0RJUn0i IFNUUkVRVUFMICIiKQorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDItRml4LWluc3Rh bGwtbG9jYXRpb24ucGF0Y2ggYi8wMDAyLUZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2Y2ZmZjQKLS0tIC9kZXYvbnVsbAorKysg Yi8wMDAyLUZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20g YWFlOTU4YjQ1MDVmMDYwZGM1OGQxNWU0MTU5OWQ1ZWZmMWI5ZWVlMiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJlZGhhdC5jb20+CitEYXRl OiBXZWQsIDEgSnVsIDIwMjYgMDA6MDI6MzkgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIEZp eCBpbnN0YWxsIGxvY2F0aW9uCisKK1RoaXMgcGF0Y2ggaXMgcGFydCBvZiB0aGUgIkJ1aWxkIHNo YXJlZCBsaWJyYXJpZXMgYW5kIGZpeCBpbnN0YWxsIGxvY2F0aW9uIiBwYXRjaCBieSBBbGVqYW5k cm8gQWx2YXJleiBBeWxsb24gPGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+IC0gU2F0LCAyNCBG ZWIgMjAyNCAxNDo0ODo0NSArMDEwMAorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9D TWFrZUxpc3RzLnR4dAoraW5kZXggMmQ4ZWEzZGYwLi4wOTQwNzgxNjAgMTAwNjQ0CistLS0gYS9D TWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC00OTMsNiArNDkzLDE2IEBA IGlmKE9OTlhfSU5TVEFMTCkKKyAgICAgICAgICAgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxM X0lOQ0xVREVESVJ9CisgICAgICAgICAgIEZJTEVTX01BVENISU5HCisgICAgICAgICAgIFBBVFRF Uk4gIiouaCIpCisrICBpbnN0YWxsKERJUkVDVE9SWSAke09OTlhfUk9PVH0vb25ueAorKyAgICAg ICAgICBERVNUSU5BVElPTiAiJHtQWV9TSVRFQVJDSH0iCisrICAgICAgICAgIEZJTEVTX01BVENI SU5HCisrICAgICAgICAgIFBBVFRFUk4gIioucHkiCisrICAgICAgICAgIFBBVFRFUk4gInRlc3Qv KiIgRVhDTFVERSApCisrICBpbnN0YWxsKERJUkVDVE9SWSAke0NNQUtFX0NVUlJFTlRfQklOQVJZ X0RJUn0vb25ueAorKyAgICAgICAgICBERVNUSU5BVElPTiAgIiR7UFlfU0lURUFSQ0h9IgorKyAg ICAgICAgICBGSUxFU19NQVRDSElORworKyAgICAgICAgICBQQVRURVJOICIqLnB5IgorKyAgICAg ICAgICBQQVRURVJOICJ0ZXN0LyoiIEVYQ0xVREUgKQorIGVuZGlmKCkKKyAKKyBjb25maWd1cmVf ZmlsZSgKK0BAIC01NDYsNiArNTU2LDkgQEAgaWYoT05OWF9JTlNUQUxMKQorICAgaW5zdGFsbChU QVJHRVRTCisgICAgIG9ubnggb25ueF9wcm90bworICAgICBFWFBPUlQgT05OWFRhcmdldHMgREVT VElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0pCisrICBpbnN0YWxsKFRBUkdFVFMKKysg ICAgb25ueF9jcHAycHlfZXhwb3J0CisrICAgIERFU1RJTkFUSU9OICIke1BZX1NJVEVBUkNIfS9v bm54IikKKyAKKyAgIGluc3RhbGwoRVhQT1JUIE9OTlhUYXJnZXRzCisgICAgIERFU1RJTkFUSU9O ICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9jbWFrZS9PTk5YIgorLS0gCisyLjU0LjAKKwoKZGlm ZiAtLWdpdCBhLzAwMDItUmVtb3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0 Y2ggYi8wMDAyLVJlbW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTExY2FiLi4wMDAwMDAwCi0tLSBhLzAwMDIt UmVtb3ZlLXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw1NzM5ICswLDAgQEAKLUZyb20gMjMxYjhlNTA5M2MyNGNkYzYyNDJkMmM4NTY1YzFh ZGI1MjZlZWJhNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERpZWdvIEhlcnJlcmEg PGRoZXJyZXJhQHJlZGhhdC5jb20+Ci1EYXRlOiBGcmksIDI5IE1heSAyMDI2IDE4OjQ3OjI2IC0w NDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBSZW1vdmUgcHl0aG9uLXBhcmFtZXRlcml6ZWQgZGVw ZW5kZW5jeQotCi0KLWRpZmYgLS1naXQgYS9vbm54L3Rlc3QvYmFzaWNfdGVzdC5weSBiL29ubngv dGVzdC9iYXNpY190ZXN0LnB5Ci1pbmRleCA5NzEzZTRkMWYuLjZkNmM2YzkwZSAxMDA2NDQKLS0t LSBhL29ubngvdGVzdC9iYXNpY190ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3QvYmFzaWNfdGVzdC5w eQotQEAgLTExLDcgKzExLDYgQEAgaW1wb3J0IHVuaXR0ZXN0Ci0gCi0gaW1wb3J0IGdvb2dsZS5w cm90b2J1Zi5tZXNzYWdlCi0gaW1wb3J0IGdvb2dsZS5wcm90b2J1Zi50ZXh0X2Zvcm1hdAotLWlt cG9ydCBwYXJhbWV0ZXJpemVkCi0gCi0gaW1wb3J0IG9ubngKLSBmcm9tIG9ubnggaW1wb3J0IHNl cmlhbGl6YXRpb24KLUBAIC0zNCw5NyArMzMsNiBAQCBkZWYgX3NpbXBsZV90ZW5zb3IoKSAtPiBv bm54LlRlbnNvclByb3RvOgotICAgICApCi0gCi0gCi0tQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVy aXplZF9jbGFzcygKLS0gICAgWwotLSAgICAgICAgeyJmb3JtYXQiOiAicHJvdG9idWYifSwKLS0g ICAgICAgIHsiZm9ybWF0IjogInRleHRwcm90byJ9LAotLSAgICAgICAgeyJmb3JtYXQiOiAianNv biJ9LAotLSAgICAgICAgeyJmb3JtYXQiOiAib25ueHR4dCJ9LAotLSAgICBdCi0tKQotLWNsYXNz IFRlc3RJTyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0tICAgIGZvcm1hdDogc3RyCi0tCi0tICAgIGRl ZiB0ZXN0X2xvYWRfbW9kZWxfd2hlbl9pbnB1dF9pc19ieXRlcyhzZWxmKSAtPiBOb25lOgotLSAg ICAgICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKLS0gICAgICAgIHByb3RvX3N0cmluZyA9IHNl cmlhbGl6YXRpb24ucmVnaXN0cnkuZ2V0KHNlbGYuZm9ybWF0KS5zZXJpYWxpemVfcHJvdG8ocHJv dG8pCi0tICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfbW9kZWxfZnJvbV9zdHJpbmco cHJvdG9fc3RyaW5nLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICBzZWxmLmFzc2VydEVx dWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRf bW9kZWxfd2hlbl9pbnB1dF9oYXNfcmVhZF9mdW5jdGlvbihzZWxmKSAtPiBOb25lOgotLSAgICAg ICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKLS0gICAgICAgICMgV2hlbiB0aGUgcHJvdG8gaXMg YSBieXRlcyByZXByZXNlbnRhdGlvbiBwcm92aWRlZCB0byBgc2F2ZV9tb2RlbGAsCi0tICAgICAg ICAjIGl0IHNob3VsZCBhbHdheXMgYmUgYSBzZXJpYWxpemVkIGJpbmFyeSBwcm90b2J1ZiByZXBy ZXNlbnRhdGlvbi4gQWthLiBmb3JtYXQ9InByb3RvYnVmIgotLSAgICAgICAgIyBUaGUgc2F2ZWQg ZmlsZSBmb3JtYXQgaXMgc3BlY2lmaWVkIGJ5IHRoZSBgZm9ybWF0YCBhcmd1bWVudC4KLS0gICAg ICAgIHByb3RvX3N0cmluZyA9IHNlcmlhbGl6YXRpb24ucmVnaXN0cnkuZ2V0KCJwcm90b2J1ZiIp LnNlcmlhbGl6ZV9wcm90byhwcm90bykKLS0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLS0gICAg ICAgIG9ubnguc2F2ZV9tb2RlbChwcm90b19zdHJpbmcsIGYsIGZvcm1hdD1zZWxmLmZvcm1hdCkK LS0gICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9tb2RlbChpby5CeXRlc0lPKGYuZ2V0 dmFsdWUoKSksIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo cHJvdG8sIGxvYWRlZF9wcm90bykKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF9tb2Rl bF93aGVuX2lucHV0X2lzX2ZpbGVfbmFtZShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgcHJvdG8g PSBfc2ltcGxlX21vZGVsKCkKLS0gICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0 b3J5KCkgYXMgdGVtcF9kaXI6Ci0tICAgICAgICAgICAgbW9kZWxfcGF0aCA9IG9zLnBhdGguam9p bih0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQotLSAgICAgICAgICAgIG9ubnguc2F2ZV9tb2RlbChw cm90bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIGxvYWRl ZF9wcm90byA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQp Ci0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQotLQot LSAgICBkZWYgdGVzdF9zYXZlX2FuZF9sb2FkX21vZGVsX3doZW5faW5wdXRfaXNfcGF0aGxpa2Uo c2VsZikgLT4gTm9uZToKLS0gICAgICAgIHByb3RvID0gX3NpbXBsZV9tb2RlbCgpCi0tICAgICAg ICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgotLSAgICAg ICAgICAgIG1vZGVsX3BhdGggPSBwYXRobGliLlBhdGgodGVtcF9kaXIsICJtb2RlbC5vbm54IikK LS0gICAgICAgICAgICBvbm54LnNhdmVfbW9kZWwocHJvdG8sIG1vZGVsX3BhdGgsIGZvcm1hdD1z ZWxmLmZvcm1hdCkKLS0gICAgICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfbW9kZWwo bW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykKLS0KLS0KLS1AcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkX2NsYXNzKAotLSAgICBbCi0tICAgICAgICB7ImZvcm1hdCI6ICJwcm90b2J1ZiJ9LAot LSAgICAgICAgeyJmb3JtYXQiOiAidGV4dHByb3RvIn0sCi0tICAgICAgICB7ImZvcm1hdCI6ICJq c29uIn0sCi0tICAgICAgICAjIFRoZSBvbm54dHh0IGZvcm1hdCBkb2VzIG5vdCBzdXBwb3J0IHNh dmluZy9sb2FkaW5nIHRlbnNvcnMgeWV0Ci0tICAgIF0KLS0pCi0tY2xhc3MgVGVzdElPVGVuc29y KHVuaXR0ZXN0LlRlc3RDYXNlKToKLS0gICAgIiIiVGVzdCBsb2FkaW5nIGFuZCBzYXZpbmcgb2Yg VGVuc29yUHJvdG8uIiIiCi0tCi0tICAgIGZvcm1hdDogc3RyCi0tCi0tICAgIGRlZiB0ZXN0X2xv YWRfdGVuc29yX3doZW5faW5wdXRfaXNfYnl0ZXMoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIHBy b3RvID0gX3NpbXBsZV90ZW5zb3IoKQotLSAgICAgICAgcHJvdG9fc3RyaW5nID0gc2VyaWFsaXph dGlvbi5yZWdpc3RyeS5nZXQoc2VsZi5mb3JtYXQpLnNlcmlhbGl6ZV9wcm90byhwcm90bykKLS0g ICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5zb3JfZnJvbV9zdHJpbmcocHJvdG9f c3RyaW5nLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBy b3RvLCBsb2FkZWRfcHJvdG8pCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfdGVuc29y X3doZW5faW5wdXRfaGFzX3JlYWRfZnVuY3Rpb24oc2VsZikgLT4gTm9uZToKLS0gICAgICAgICMg VGVzdCBpZiBpbnB1dCBoYXMgYSByZWFkIGZ1bmN0aW9uCi0tICAgICAgICBwcm90byA9IF9zaW1w bGVfdGVuc29yKCkKLS0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLS0gICAgICAgIG9ubnguc2F2 ZV90ZW5zb3IocHJvdG8sIGYsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgIGxvYWRlZF9w cm90byA9IG9ubngubG9hZF90ZW5zb3IoaW8uQnl0ZXNJTyhmLmdldHZhbHVlKCkpLCBmb3JtYXQ9 c2VsZi5mb3JtYXQpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJv dG8pCi0tCi0tICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfdGVuc29yX3doZW5faW5wdXRfaXNf ZmlsZV9uYW1lKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICAjIFRlc3QgaWYgaW5wdXQgaXMgYSBm aWxlIG5hbWUKLS0gICAgICAgIHByb3RvID0gX3NpbXBsZV90ZW5zb3IoKQotLSAgICAgICAgd2l0 aCB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKLS0gICAgICAgICAg ICBtb2RlbF9wYXRoID0gb3MucGF0aC5qb2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCi0tICAg ICAgICAgICAgb25ueC5zYXZlX3RlbnNvcihwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYu Zm9ybWF0KQotLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5zb3IobW9k ZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1 YWwocHJvdG8sIGxvYWRlZF9wcm90bykKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90 ZW5zb3Jfd2hlbl9pbnB1dF9pc19wYXRobGlrZShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgIyBU ZXN0IGlmIGlucHV0IGlzIGEgZmlsZSBuYW1lCi0tICAgICAgICBwcm90byA9IF9zaW1wbGVfdGVu c29yKCkKLS0gICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVt cF9kaXI6Ci0tICAgICAgICAgICAgbW9kZWxfcGF0aCA9IHBhdGhsaWIuUGF0aCh0ZW1wX2Rpciwg Im1vZGVsLm9ubngiKQotLSAgICAgICAgICAgIG9ubnguc2F2ZV90ZW5zb3IocHJvdG8sIG1vZGVs X3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAgICAgICBsb2FkZWRfcHJvdG8gPSBv bm54LmxvYWRfdGVuc29yKG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKLS0gICAgICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCi0tCi0tCi0gY2xhc3Mg VGVzdFNhdmVBbmRMb2FkRmlsZUV4dGVuc2lvbnModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICBk ZWYgdGVzdF9zYXZlX21vZGVsX3BpY2tzX2NvcnJlY3RfZm9ybWF0X2Zyb21fZXh0ZW5zaW9uKHNl bGYpIC0+IE5vbmU6Ci0gICAgICAgICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQotZGlmZiAtLWdp dCBhL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weSBiL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weQot aW5kZXggMjc3OTNmNTYxLi45MWY3NzM5YWEgMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3QvaGVscGVy X3Rlc3QucHkKLSsrKyBiL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weQotQEAgLTEyLDcgKzEyLDYg QEAgZnJvbSB0eXBpbmcgaW1wb3J0IEFueQotIGltcG9ydCBtbF9kdHlwZXMKLSBpbXBvcnQgbnVt cHkgYXMgbnAKLSBpbXBvcnQgbnVtcHkudHlwaW5nIGFzIG5wdAotLWltcG9ydCBwYXJhbWV0ZXJp emVkCi0gaW1wb3J0IHB5dGVzdAotIAotIGZyb20gb25ueCBpbXBvcnQgKAotQEAgLTYzNiw2MyAr NjM1LDYgQEAgY2xhc3MgVGVzdEhlbHBlclRlbnNvckZ1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2Fz ZSk6Ci0gICAgICAgICAgICAgZXhwZWN0ZWQudmlldyhucC51aW50OCksCi0gICAgICAgICApCi0g Ci0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgaXRl cnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQ cm90by5JTlQ0KSwKLS0gICAgICAgICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwg KDEsKSwgKDIqKjEwLCkpLAotLSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0ZXN0X21ha2Vf NGJpdF90ZW5zb3Ioc2VsZiwgZHR5cGUsIGRpbXMpIC0+IE5vbmU6Ci0tICAgICAgICB0eXBlX3Jh bmdlID0gewotLSAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQ0OiAoMCwgMTUpLAotLSAgICAg ICAgICAgIFRlbnNvclByb3RvLklOVDQ6ICgtOCwgNyksCi0tICAgICAgICB9Ci0tICAgICAgICBk YXRhID0gbnAucmFuZG9tLnJhbmRpbnQoCi0tICAgICAgICAgICAgdHlwZV9yYW5nZVtkdHlwZV1b MF0sIGhpZ2g9dHlwZV9yYW5nZVtkdHlwZV1bMV0gKyAxLCBzaXplPWRpbXMKLS0gICAgICAgICkK LS0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoInkiLCBkdHlwZSwgZGF0YS5zaGFwZSwg ZGF0YSkKLS0KLS0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0 YSBpbiBieXRlcwotLSAgICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplID0gbWF0aC5jZWlsKG5wLnBy b2QoZGF0YS5zaGFwZSkgLyAyLjApCi0tICAgICAgICBhY3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5 dGVzKHkuaW50MzJfZGF0YSkpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1 YWxfZGF0YV9zaXplLCBleHBlY3RlZF9kYXRhX3NpemUpCi0tCi0tICAgICAgICAjIENoZWNrIHRo ZSBleHBlY3RlZCBkYXRhIHZhbHVlcy4KLS0gICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19h cnJheSh5KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoeW5wLCBkYXRhKQotLQot LSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGl0ZXJ0 b29scy5wcm9kdWN0KAotLSAgICAgICAgICAgICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMp LCAoMSwpLCAoMioqMTAsKSksCi0tICAgICAgICApCi0tICAgICkKLS0gICAgZGVmIHRlc3RfNGJp dF90ZW5zb3Jfc2l6ZShzZWxmLCBkaW1zKSAtPiBOb25lOgotLSAgICAgICAgIyBBIGJ1ZyBjYXVz ZWQgbmVnYXRpdmUgaW50NCB2YWx1ZXMgdG8gaW5mbGF0ZSB0ZW5zb3Igc2l6ZS4KLS0gICAgICAg ICMgU28sIHRlc3QgbmVnYXRpdmUgdmFsdWVzIGhlcmUuCi0tICAgICAgICBudW1fZWxlbXMgPSBu cC5wcm9kKGRpbXMpCi0tICAgICAgICBkYXRhID0gbnAuYXJyYXkoWy00XSAqIG51bV9lbGVtcywg ZHR5cGU9bnAuaW50OCkucmVzaGFwZShkaW1zKQotLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3Rl bnNvcigieSIsIFRlbnNvclByb3RvLklOVDQsIGRhdGEuc2hhcGUsIGRhdGEpCi0tCi0tICAgICAg ICAjIENoZWNrIHRoZSBleHBlY3RlZCBzaXplIG9mIGludDMyX2RhdGEgaW4gYnl0ZXMKLS0gICAg ICAgIGV4cGVjdGVkX2RhdGFfc2l6ZSA9IG1hdGguY2VpbChudW1fZWxlbXMgLyAyLjApCi0tICAg ICAgICBhY3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5dGVzKHkuaW50MzJfZGF0YSkpCi0tICAgICAg ICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1YWxfZGF0YV9zaXplLCBleHBlY3RlZF9kYXRh X3NpemUpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAg ICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0 LCBUZW5zb3JQcm90by5JTlQ0KSwgKCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCkp Ci0tICAgICAgICApCi0tICAgICkKLS0gICAgZGVmIHRlc3RfbWFrZV80Yml0X3Jhd190ZW5zb3Io c2VsZiwgZHR5cGUsIGRpbXMpIC0+IE5vbmU6Ci0tICAgICAgICBkYXRhID0gbnAucmFuZG9tLnJh bmRpbnQoMCwgaGlnaD0xNiwgc2l6ZT1kaW1zLCBkdHlwZT1ucC51aW50OCkKLS0gICAgICAgIHBh Y2tlZF9kYXRhID0gX3BhY2tfNGJpdChkYXRhKQotLQotLSAgICAgICAgeSA9IGhlbHBlci5tYWtl X3RlbnNvcigKLS0gICAgICAgICAgICAicGFja2VkX2ludDQiLCBkdHlwZSwgZGltcywgcGFja2Vk X2RhdGEudG9ieXRlcygpLCByYXc9VHJ1ZQotLSAgICAgICAgKQotLSAgICAgICAgeW5wID0gbnVt cHlfaGVscGVyLnRvX2FycmF5KHkpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5 bnAudmlldyhucC51aW50OCksIGRhdGEpCi0tCi0gICAgIGRlZiB0ZXN0X21ha2VfZmxvYXQ0ZTJt MV9yYXdfdGVuc29yKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBkYXRhID0gbnAuYXJyYXkoWzAs IDAuNSwgMSwgMjQwLCAxMCwgLTJdLCBkdHlwZT1tbF9kdHlwZXMuZmxvYXQ0X2UybTFmbikKLSAg ICAgICAgIGV4cGVjdGVkID0gZGF0YS52aWV3KG5wLnVpbnQ4KQotQEAgLTcwNyw2MyArNjQ5LDYg QEAgY2xhc3MgVGVzdEhlbHBlclRlbnNvckZ1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g ICAgICAgICB5bnAgPSBudW1weV9oZWxwZXIudG9fYXJyYXkoeSkKLSAgICAgICAgIG5wLnRlc3Rp bmcuYXNzZXJ0X2VxdWFsKHlucC52aWV3KG5wLnVpbnQ4KSwgZXhwZWN0ZWQpCi0gCi0tICAgIEBw YXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgaXRlcnRvb2xzLnBy b2R1Y3QoCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQyLCBUZW5zb3JQcm90by5JTlQy KSwKLS0gICAgICAgICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSwgKDIq KjEwLCkpLAotLSAgICAgICAgKQotLSAgICApCi0tICAgIGRlZiB0ZXN0X21ha2VfMmJpdF90ZW5z b3Ioc2VsZiwgZHR5cGUsIGRpbXMpIC0+IE5vbmU6Ci0tICAgICAgICB0eXBlX3JhbmdlID0gewot LSAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQyOiAoMCwgMyksCi0tICAgICAgICAgICAgVGVu c29yUHJvdG8uSU5UMjogKC0yLCAxKSwKLS0gICAgICAgIH0KLS0gICAgICAgIGRhdGEgPSBucC5y YW5kb20ucmFuZGludCgKLS0gICAgICAgICAgICB0eXBlX3JhbmdlW2R0eXBlXVswXSwgaGlnaD10 eXBlX3JhbmdlW2R0eXBlXVsxXSArIDEsIHNpemU9ZGltcwotLSAgICAgICAgKQotLSAgICAgICAg eSA9IGhlbHBlci5tYWtlX3RlbnNvcigieSIsIGR0eXBlLCBkYXRhLnNoYXBlLCBkYXRhKQotLQot LSAgICAgICAgIyBDaGVjayB0aGUgZXhwZWN0ZWQgc2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVz Ci0tICAgICAgICBleHBlY3RlZF9kYXRhX3NpemUgPSBtYXRoLmNlaWwobnAucHJvZChkYXRhLnNo YXBlKSAvIDQuMCkKLS0gICAgICAgIGFjdHVhbF9kYXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQz Ml9kYXRhKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3Np emUsIGV4cGVjdGVkX2RhdGFfc2l6ZSkKLS0KLS0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVk IGRhdGEgdmFsdWVzLgotLSAgICAgICAgeW5wID0gbnVtcHlfaGVscGVyLnRvX2FycmF5KHkpCi0t ICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5bnAsIGRhdGEpCi0tCi0tICAgIEBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgaXRlcnRvb2xzLnByb2R1 Y3QoCi0tICAgICAgICAgICAgKCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCksICgy KioxMCwpKSwKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBkZWYgdGVzdF8yYml0X3RlbnNvcl9z aXplKHNlbGYsIGRpbXMpIC0+IE5vbmU6Ci0tICAgICAgICAjIEEgYnVnIGNhdXNlZCBuZWdhdGl2 ZSBpbnQyIHZhbHVlcyB0byBpbmZsYXRlIHRlbnNvciBzaXplLgotLSAgICAgICAgIyBTbywgdGVz dCBuZWdhdGl2ZSB2YWx1ZXMgaGVyZS4KLS0gICAgICAgIG51bV9lbGVtcyA9IG5wLnByb2QoZGlt cykKLS0gICAgICAgIGRhdGEgPSBucC5hcnJheShbLTJdICogbnVtX2VsZW1zLCBkdHlwZT1ucC5p bnQ4KS5yZXNoYXBlKGRpbXMpCi0tICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKCJ5Iiwg VGVuc29yUHJvdG8uSU5UMiwgZGF0YS5zaGFwZSwgZGF0YSkKLS0KLS0gICAgICAgICMgQ2hlY2sg dGhlIGV4cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0YSBpbiBieXRlcwotLSAgICAgICAgZXhwZWN0 ZWRfZGF0YV9zaXplID0gbWF0aC5jZWlsKG51bV9lbGVtcyAvIDQuMCkKLS0gICAgICAgIGFjdHVh bF9kYXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQzMl9kYXRhKSkKLS0gICAgICAgIG5wLnRlc3Rp bmcuYXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3NpemUsIGV4cGVjdGVkX2RhdGFfc2l6ZSkKLS0K LS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBpdGVy dG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDIsIFRlbnNvclBy b3RvLklOVDIpLCAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSkKLS0gICAgICAg ICkKLS0gICAgKQotLSAgICBkZWYgdGVzdF9tYWtlXzJiaXRfcmF3X3RlbnNvcihzZWxmLCBkdHlw ZSwgZGltcykgLT4gTm9uZToKLS0gICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGludCgwLCBo aWdoPTQsIHNpemU9ZGltcywgZHR5cGU9bnAudWludDgpCi0tICAgICAgICBwYWNrZWRfZGF0YSA9 IF9wYWNrXzJiaXQoZGF0YSkKLS0KLS0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoCi0t ICAgICAgICAgICAgInBhY2tlZF9pbnQyIiwgZHR5cGUsIGRpbXMsIHBhY2tlZF9kYXRhLnRvYnl0 ZXMoKSwgcmF3PVRydWUKLS0gICAgICAgICkKLS0gICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50 b19hcnJheSh5KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfZXF1YWwoeW5wLnZpZXcobnAu dWludDgpLCBkYXRhKQotLQotICAgICBkZWYgdGVzdF9tYWtlX2Zsb2F0NGUybTFfdGVuc29yKHNl bGYpIC0+IE5vbmU6Ci0gICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKAotICAgICAgICAg ICAgICJ6ZXJvX3BvaW50IiwKLUBAIC0xMTA1LDI4ICs5OTAsNiBAQCBjbGFzcyBUZXN0SGVscGVy TWFwcGluZ0Z1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gCi0gCi0gY2xhc3MgVGVzdEF0 dHJUeXBlVG9TdHIodW5pdHRlc3QuVGVzdENhc2UpOgotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJh bWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJv dG8uQXR0cmlidXRlVHlwZS5GTE9BVCwgIkZMT0FUIiksCi0tICAgICAgICAgICAgKEF0dHJpYnV0 ZVByb3RvLkF0dHJpYnV0ZVR5cGUuSU5ULCAiSU5UIiksCi0tICAgICAgICAgICAgKEF0dHJpYnV0 ZVByb3RvLkF0dHJpYnV0ZVR5cGUuU1RSSU5HLCAiU1RSSU5HIiksCi0tICAgICAgICAgICAgKEF0 dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuVEVOU09SLCAiVEVOU09SIiksCi0tICAgICAgICAg ICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuR1JBUEgsICJHUkFQSCIpLAotLSAgICAg ICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBlLlNQQVJTRV9URU5TT1IsICJTUEFS U0VfVEVOU09SIiksCi0tICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUu VFlQRV9QUk9UTywgIlRZUEVfUFJPVE8iKSwKLS0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8u QXR0cmlidXRlVHlwZS5GTE9BVFMsICJGTE9BVFMiKSwKLS0gICAgICAgICAgICAoQXR0cmlidXRl UHJvdG8uQXR0cmlidXRlVHlwZS5JTlRTLCAiSU5UUyIpLAotLSAgICAgICAgICAgIChBdHRyaWJ1 dGVQcm90by5BdHRyaWJ1dGVUeXBlLlNUUklOR1MsICJTVFJJTkdTIiksCi0tICAgICAgICAgICAg KEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuVEVOU09SUywgIlRFTlNPUlMiKSwKLS0gICAg ICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5HUkFQSFMsICJHUkFQSFMiKSwK LS0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5TUEFSU0VfVEVOU09S UywgIlNQQVJTRV9URU5TT1JTIiksCi0tICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJp YnV0ZVR5cGUuVFlQRV9QUk9UT1MsICJUWVBFX1BST1RPUyIpLAotLSAgICAgICAgXQotLSAgICAp Ci0tICAgIGRlZiB0ZXN0X2F0dHJfdHlwZV90b19zdHIoc2VsZiwgYXR0cl90eXBlLCBleHBlY3Rl ZF9zdHIpOgotLSAgICAgICAgcmVzdWx0ID0gaGVscGVyLl9hdHRyX3R5cGVfdG9fc3RyKGF0dHJf dHlwZSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZF9zdHIpCi0t Ci0gICAgIGRlZiB0ZXN0X2F0dHJfdHlwZV90b19zdHJfdW5kZWZpbmVkKHNlbGYpOgotICAgICAg ICAgcmVzdWx0ID0gaGVscGVyLl9hdHRyX3R5cGVfdG9fc3RyKDk5OTkpCi0gICAgICAgICBzZWxm LmFzc2VydEVxdWFsKHJlc3VsdCwgIlVOREVGSU5FRCIpCi1kaWZmIC0tZ2l0IGEvb25ueC90ZXN0 L25vZGVfc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkgYi9vbm54L3Rlc3Qvbm9kZV9zaGFwZV9pbmZl cmVuY2VfdGVzdC5weQotaW5kZXggZWNlNzc2ZTQ4Li42MzI1MmI5MjIgMTAwNjQ0Ci0tLS0gYS9v bm54L3Rlc3Qvbm9kZV9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weQotKysrIGIvb25ueC90ZXN0L25v ZGVfc2hhcGVfaW5mZXJlbmNlX3Rlc3QucHkKLUBAIC01LDM0ICs1LDkgQEAgZnJvbSBfX2Z1dHVy ZV9fIGltcG9ydCBhbm5vdGF0aW9ucwotIAotIGltcG9ydCB1bml0dGVzdAotIAotLWltcG9ydCBw YXJhbWV0ZXJpemVkCi0tCi0gaW1wb3J0IG9ubnguaGVscGVyCi0gaW1wb3J0IG9ubnguc2hhcGVf aW5mZXJlbmNlCi0gCi0gCi0tY2xhc3MgTm9kZUluZmVyZW5jZVRlc3QodW5pdHRlc3QuVGVzdENh c2UpOgotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAg IFsKLS0gICAgICAgICAgICAoIkdyZWF0ZXJPckVxdWFsIiwpLAotLSAgICAgICAgICAgICgiTGVz c09yRXF1YWwiLCksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfY29tcGFyaXNv bl9vcChzZWxmLCBvcF90eXBlKToKLS0gICAgICAgIG5vZGUgPSBvbm54LmhlbHBlci5tYWtlX25v ZGUob3BfdHlwZSwgWyJ4IiwgInkiXSwgWyJ6Il0pCi0tICAgICAgICBzY2hlbWEgPSBvbm54LmRl ZnMuZ2V0X3NjaGVtYShub2RlLm9wX3R5cGUsIDIzLCAiIikKLS0gICAgICAgIHh0eXBlID0gb25u eC5oZWxwZXIubWFrZV90ZW5zb3JfdHlwZV9wcm90byhvbm54LlRlbnNvclByb3RvLklOVDMyLCBb MSwgMTBdKQotLSAgICAgICAgeXR5cGUgPSBvbm54LmhlbHBlci5tYWtlX3RlbnNvcl90eXBlX3By b3RvKG9ubnguVGVuc29yUHJvdG8uSU5UMzIsIFsxMCwgMV0pCi0tICAgICAgICByZXN1bHQgPSBv bm54LnNoYXBlX2luZmVyZW5jZS5pbmZlcl9ub2RlX291dHB1dHMoCi0tICAgICAgICAgICAgc2No ZW1hLCBub2RlLCB7IngiOiB4dHlwZSwgInkiOiB5dHlwZX0KLS0gICAgICAgICkKLS0gICAgICAg IHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXN1bHQua2V5cygpKSwgWyJ6Il0pCi0tICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKHJlc3VsdFsieiJdLnRlbnNvcl90eXBlLmVsZW1fdHlwZSwgb25ueC5U ZW5zb3JQcm90by5CT09MKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLS0gICAgICAgICAg ICBbZGltLmRpbV92YWx1ZSBmb3IgZGltIGluIHJlc3VsdFsieiJdLnRlbnNvcl90eXBlLnNoYXBl LmRpbV0sCi0tICAgICAgICAgICAgWzEwLCAxMF0sCi0tICAgICAgICApCi0tCi0tCi0gaWYgX19u YW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICAgdW5pdHRlc3QubWFpbigpCi1kaWZmIC0tZ2l0IGEv b25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0LnB5IGIvb25ueC90ZXN0L251bXB5X2hlbHBlcl90 ZXN0LnB5Ci1pbmRleCA1NjgwMDA1NTAuLjIyNjUwMDhkMiAxMDA2NDQKLS0tLSBhL29ubngvdGVz dC9udW1weV9oZWxwZXJfdGVzdC5weQotKysrIGIvb25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0 LnB5Ci1AQCAtNiw3ICs2LDYgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucwot IGltcG9ydCB1bml0dGVzdAotIAotIGltcG9ydCBudW1weSBhcyBucAotLWltcG9ydCBwYXJhbWV0 ZXJpemVkCi0gCi0gaW1wb3J0IG9ubngKLSBpbXBvcnQgb25ueC5yZWZlcmVuY2UKLUBAIC0xNDgs MzggKzE0Nyw2IEBAIGNsYXNzIFRlc3ROdW1weUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRwLlNlcmlhbGl6ZVRvU3RyaW5nKCksIGFnYWluLlNl cmlhbGl6ZVRvU3RyaW5nKCkpCi0gICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRwLmRhdGFfdHlw ZSwgaGVscGVyLm5wX2R0eXBlX3RvX3RlbnNvcl9kdHlwZShiYWNrLmR0eXBlKSkKLSAKLS0gICAg QHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAg ICAgICAgKCJGTE9BVCIsIG9ubnguVGVuc29yUHJvdG8uRkxPQVQpLAotLSAgICAgICAgICAgICgi VUlOVDgiLCBvbm54LlRlbnNvclByb3RvLlVJTlQ4KSwKLS0gICAgICAgICAgICAoIklOVDgiLCBv bm54LlRlbnNvclByb3RvLklOVDgpLAotLSAgICAgICAgICAgICgiVUlOVDE2Iiwgb25ueC5UZW5z b3JQcm90by5VSU5UMTYpLAotLSAgICAgICAgICAgICgiSU5UMTYiLCBvbm54LlRlbnNvclByb3Rv LklOVDE2KSwKLS0gICAgICAgICAgICAoIklOVDMyIiwgb25ueC5UZW5zb3JQcm90by5JTlQzMiks Ci0tICAgICAgICAgICAgKCJJTlQ2NCIsIG9ubnguVGVuc29yUHJvdG8uSU5UNjQpLAotLSAgICAg ICAgICAgICgiQk9PTCIsIG9ubnguVGVuc29yUHJvdG8uQk9PTCksCi0tICAgICAgICAgICAgKCJG TE9BVDE2Iiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDE2KSwKLS0gICAgICAgICAgICAoIkRPVUJM RSIsIG9ubnguVGVuc29yUHJvdG8uRE9VQkxFKSwKLS0gICAgICAgICAgICAoIlVJTlQzMiIsIG9u bnguVGVuc29yUHJvdG8uVUlOVDMyKSwKLS0gICAgICAgICAgICAoIlVJTlQ2NCIsIG9ubnguVGVu c29yUHJvdG8uVUlOVDY0KSwKLS0gICAgICAgICAgICAoIkNPTVBMRVg2NCIsIG9ubnguVGVuc29y UHJvdG8uQ09NUExFWDY0KSwKLS0gICAgICAgICAgICAoIkNPTVBMRVgxMjgiLCBvbm54LlRlbnNv clByb3RvLkNPTVBMRVgxMjgpLAotLSAgICAgICAgICAgICgiQkZMT0FUMTYiLCBvbm54LlRlbnNv clByb3RvLkJGTE9BVDE2KSwKLS0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTiIsIG9ubnguVGVu c29yUHJvdG8uRkxPQVQ4RTRNM0ZOKSwKLS0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTlVaIiwg b25ueC5UZW5zb3JQcm90by5GTE9BVDhFNE0zRk5VWiksCi0tICAgICAgICAgICAgKCJGTE9BVDhF NU0yIiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDhFNU0yKSwKLS0gICAgICAgICAgICAoIkZMT0FU OEU1TTJGTlVaIiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDhFNU0yRk5VWiksCi0tICAgICAgICAg ICAgKCJGTE9BVDhFOE0wIiwgb25ueC5UZW5zb3JQcm90by5GTE9BVDhFOE0wKSwKLS0gICAgICAg ICAgICAoIlVJTlQ0Iiwgb25ueC5UZW5zb3JQcm90by5VSU5UNCksCi0tICAgICAgICAgICAgKCJJ TlQ0Iiwgb25ueC5UZW5zb3JQcm90by5JTlQ0KSwKLS0gICAgICAgICAgICAoIlVJTlQyIiwgb25u eC5UZW5zb3JQcm90by5VSU5UMiksCi0tICAgICAgICAgICAgKCJJTlQyIiwgb25ueC5UZW5zb3JQ cm90by5JTlQyKSwKLS0gICAgICAgICAgICAoIkZMT0FUNEUyTTEiLCBvbm54LlRlbnNvclByb3Rv LkZMT0FUNEUyTTEpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3RvX2FycmF5 X2Zyb21fYXJyYXkoc2VsZiwgXzogc3RyLCBkYXRhX3R5cGU6IG9ubnguVGVuc29yUHJvdG8uRGF0 YVR5cGUpOgotLSAgICAgICAgc2VsZi5fdG9fYXJyYXlfZnJvbV9hcnJheShkYXRhX3R5cGUpCi0t Ci0gICAgIGRlZiB0ZXN0X3RvX2FycmF5X2Zyb21fYXJyYXlfc3RyaW5nKHNlbGYpOgotICAgICAg ICAgc2VsZi5fdG9fYXJyYXlfZnJvbV9hcnJheShvbm54LlRlbnNvclByb3RvLlNUUklORywgRmFs c2UpCi0gCi1kaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5IGIvb25ueC90ZXN0 L3BhcnNlcl90ZXN0LnB5Ci1pbmRleCAxOWVlNDA3OTIuLjllMjJmMTlhZSAxMDA2NDQKLS0tLSBh L29ubngvdGVzdC9wYXJzZXJfdGVzdC5weQotKysrIGIvb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5 Ci1AQCAtNSw4ICs1LDYgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucwotIAot IGltcG9ydCB1bml0dGVzdAotIAotLWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVy aXplZAotLQotIGltcG9ydCBvbm54Ci0gZnJvbSBvbm54IGltcG9ydCBHcmFwaFByb3RvLCBPcGVy YXRvclNldElkUHJvdG8sIFRlbnNvclByb3RvLCBjaGVja2VyCi0gCi1AQCAtMTIwLDk0ICsxMTgs NiBAQCBjbGFzcyBUZXN0QmFzaWNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAg ICAgbW9kZWwgPSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbChpbnB1dCkKLSAgICAgICAgIGNoZWNr ZXIuY2hlY2tfbW9kZWwobW9kZWwpCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0g ICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICJhZ3JhcGggKGZsb2F0 W05dIHgpID0+IChmbG9hdFtOXSBvdXQpIHsgb3V0ID0gY3VzdG9tX2RvbWFpbi5TZWx1KHgpIH0i LAotLSAgICAgICAgICAgICAgICB7fSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgK LS0gICAgICAgICAgICAgICAgImFncmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05dIG91dCkg eyBvdXQgPSBjdXN0b21fZG9tYWluLlNlbHU8YWxwaGE9Mi4wPih4KSB9IiwKLS0gICAgICAgICAg ICAgICAgeyJhbHBoYSI6IDIuMH0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0t ICAgICAgICAgICAgICAgICJhZ3JhcGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtOXSBvdXQpIHsg b3V0ID0gY3VzdG9tX2RvbWFpbi5TZWx1PGdhbW1hPTMuMD4oeCkgfSIsCi0tICAgICAgICAgICAg ICAgIHsiZ2FtbWEiOiAzLjB9LAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAg ICAgICAgICAgICAgICAiYWdyYXBoIChmbG9hdFtOXSB4KSA9PiAoZmxvYXRbTl0gb3V0KSB7IG91 dCA9IGN1c3RvbV9kb21haW4uU2VsdTxhbHBoYT0yLjAsIGdhbW1hPTMuMD4oeCkgfSIsCi0tICAg ICAgICAgICAgICAgIHsiYWxwaGEiOiAyLjAsICJnYW1tYSI6IDMuMH0sCi0tICAgICAgICAgICAg KSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9jb21wb3NpdGVfcGFyc2VfZnVu Y3Rpb25fd2l0aF9hdHRyaWJ1dGVzKAotLSAgICAgICAgc2VsZiwgZ3JhcGhfdGV4dDogc3RyLCBl eHBlY3RlZF9hdHRyaWJ1dGU6IGRpY3QKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgZGVmYXVs dF9hbHBoYSA9IDEuNjczMjYzMTkyMTc2ODE4ODQ3NjU2MjUKLS0gICAgICAgIGRlZmF1bHRfZ2Ft bWEgPSAxLjA1MDcwMTAyMjE0ODEzMjMyNDIxODc1Ci0tCi0tICAgICAgICBkZWYgZXhwZWN0X2N1 c3RvbV9ub2RlX2F0dHJpYnV0ZShub2RlLCBhdHRyaWJ1dGVzKToKLS0gICAgICAgICAgICBmb3Ig a2V5IGluIGF0dHJpYnV0ZXM6Ci0tICAgICAgICAgICAgICAgIG1hdGNoX2F0dHIgPSBbYXR0ciBm b3IgYXR0ciBpbiBub2RlLmF0dHJpYnV0ZSBpZiBhdHRyLm5hbWUgPT0ga2V5XQotLSAgICAgICAg ICAgICAgICBhc3NlcnQgbGVuKG1hdGNoX2F0dHIpID09IDEKLS0gICAgICAgICAgICAgICAgYXNz ZXJ0IG1hdGNoX2F0dHJbMF0uZiA9PSBhdHRyaWJ1dGVzW2tleV0KLS0KLS0gICAgICAgIGRlZiBl eHBlY3RfbW9kZWxfZnVuY3Rpb25fYXR0cmlidXRlKG1vZGVsKToKLS0gICAgICAgICAgICBhc3Nl cnQgbGVuKG1vZGVsLmZ1bmN0aW9uc1swXS5hdHRyaWJ1dGVfcHJvdG8pID09IDIKLS0gICAgICAg ICAgICBhdHRyX3Byb3RvX2FscGhhID0gWwotLSAgICAgICAgICAgICAgICBhdHRyX3Byb3RvCi0t ICAgICAgICAgICAgICAgIGZvciBhdHRyX3Byb3RvIGluIG1vZGVsLmZ1bmN0aW9uc1swXS5hdHRy aWJ1dGVfcHJvdG8KLS0gICAgICAgICAgICAgICAgaWYgYXR0cl9wcm90by5uYW1lID09ICJhbHBo YSIKLS0gICAgICAgICAgICBdCi0tICAgICAgICAgICAgYXNzZXJ0IGxlbihhdHRyX3Byb3RvX2Fs cGhhKSA9PSAxIGFuZCBhdHRyX3Byb3RvX2FscGhhWzBdLmYgPT0gZGVmYXVsdF9hbHBoYQotLSAg ICAgICAgICAgIGF0dHJfcHJvdG9fZ2FtbWEgPSBbCi0tICAgICAgICAgICAgICAgIGF0dHJfcHJv dG8KLS0gICAgICAgICAgICAgICAgZm9yIGF0dHJfcHJvdG8gaW4gbW9kZWwuZnVuY3Rpb25zWzBd LmF0dHJpYnV0ZV9wcm90bwotLSAgICAgICAgICAgICAgICBpZiBhdHRyX3Byb3RvLm5hbWUgPT0g ImdhbW1hIgotLSAgICAgICAgICAgIF0KLS0gICAgICAgICAgICBhc3NlcnQgbGVuKGF0dHJfcHJv dG9fZ2FtbWEpID09IDEgYW5kIGF0dHJfcHJvdG9fZ2FtbWFbMF0uZiA9PSBkZWZhdWx0X2dhbW1h Ci0tCi0tICAgICAgICBmdW5jdGlvbl90ZXh0ID0gZiIiIgotLSAgICAgICAgIDwKLS0gICAgICAg ICBkb21haW46ICJjdXN0b21fZG9tYWluIiwKLS0gICAgICAgICBvcHNldF9pbXBvcnQ6IFsgIiIg OiAxNV0sCi0tICAgICAgICAgZG9jX3N0cmluZzogIlRlc3QgZnVuY3Rpb24gcHJvdG8iCi0tICAg ICAgICAgPgotLSAgICAgICAgICAgU2VsdQotLSAgICAgICAgICAgPGFscGhhOiBmbG9hdD17ZGVm YXVsdF9hbHBoYX0sIGdhbW1hOiBmbG9hdD17ZGVmYXVsdF9nYW1tYX0+Ci0tICAgICAgICAgICAo WCkgPT4gKEMpCi0tICAgICAgICAgICB7ewotLSAgICAgICAgICAgICAgIGNvbnN0YW50X2FscGhh ID0gQ29uc3RhbnQ8dmFsdWVfZmxvYXQ6IGZsb2F0PUBhbHBoYT4oKQotLSAgICAgICAgICAgICAg IGNvbnN0YW50X2dhbW1hID0gQ29uc3RhbnQ8dmFsdWVfZmxvYXQ6IGZsb2F0PUBnYW1tYT4oKQot LSAgICAgICAgICAgICAgIGFscGhhX3ggPSBDYXN0TGlrZShjb25zdGFudF9hbHBoYSwgWCkKLS0g ICAgICAgICAgICAgICBnYW1tYV94ID0gQ2FzdExpa2UoY29uc3RhbnRfZ2FtbWEsIFgpCi0tICAg ICAgICAgICAgICAgZXhwX3ggPSBFeHAoWCkKLS0gICAgICAgICAgICAgICBhbHBoYV94X2V4cF94 ID0gTXVsKGFscGhhX3gsIGV4cF94KQotLSAgICAgICAgICAgICAgIGFscGhhX3hfZXhwX3hfID0g U3ViKGFscGhhX3hfZXhwX3gsIGFscGhhX3gpCi0tICAgICAgICAgICAgICAgbmVnID0gTXVsKGdh bW1hX3gsIGFscGhhX3hfZXhwX3hfKQotLSAgICAgICAgICAgICAgIHBvcyA9IE11bChnYW1tYV94 LCBYKQotLSAgICAgICAgICAgICAgIF96ZXJvID0gQ29uc3RhbnQ8dmFsdWVfZmxvYXQ9MC4wPigp Ci0tICAgICAgICAgICAgICAgemVybyA9IENhc3RMaWtlKF96ZXJvLCBYKQotLSAgICAgICAgICAg ICAgIGxlc3NfZXEgPSBMZXNzT3JFcXVhbChYLCB6ZXJvKQotLSAgICAgICAgICAgICAgIEMgPSBX aGVyZShsZXNzX2VxLCBuZWcsIHBvcykKLS0gICAgICAgICAgIH19Ci0tICAgICAgICAiIiIKLS0K LS0gICAgICAgIGZ1bmN0aW9ucyA9IFtvbm54LnBhcnNlci5wYXJzZV9mdW5jdGlvbihmdW5jdGlv bl90ZXh0KV0KLS0gICAgICAgIGdyYXBoID0gb25ueC5wYXJzZXIucGFyc2VfZ3JhcGgoZ3JhcGhf dGV4dCkKLS0gICAgICAgIG9wc2V0X2ltcG9ydHMgPSBbCi0tICAgICAgICAgICAgT3BlcmF0b3JT ZXRJZFByb3RvKGRvbWFpbj0iIiwgdmVyc2lvbj0xNSksCi0tICAgICAgICAgICAgT3BlcmF0b3JT ZXRJZFByb3RvKGRvbWFpbj0iY3VzdG9tX2RvbWFpbiIsIHZlcnNpb249MSksCi0tICAgICAgICBd Ci0tCi0tICAgICAgICBtb2RlbCA9IG9ubnguaGVscGVyLm1ha2VfbW9kZWwoCi0tICAgICAgICAg ICAgZ3JhcGgsIGZ1bmN0aW9ucz1mdW5jdGlvbnMsIG9wc2V0X2ltcG9ydHM9b3BzZXRfaW1wb3J0 cwotLSAgICAgICAgKQotLSAgICAgICAgY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCkKLS0KLS0g ICAgICAgIGV4cGVjdF9tb2RlbF9mdW5jdGlvbl9hdHRyaWJ1dGUobW9kZWwpCi0tICAgICAgICBl eHBlY3RfY3VzdG9tX25vZGVfYXR0cmlidXRlKG1vZGVsLmdyYXBoLm5vZGVbMF0sIGV4cGVjdGVk X2F0dHJpYnV0ZSkKLS0KLSAgICAgZGVmIHRlc3RfcGFyc2Vfbm9kZShzZWxmKToKLSAgICAgICAg IG5vZGUgPSBvbm54LnBhcnNlci5wYXJzZV9ub2RlKAotICAgICAgICAgICAgICJvdXQxLCBvdXQy ID0gU29tZURvbWFpbi5Tb21lT3AgPGF0dHIxID0gMT4gKGluMSwgaW4yKSIKLUBAIC0yNDIsMTAx ICsxNTIsNiBAQCBjbGFzcyBUZXN0QmFzaWNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgot ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KG5vZGUuaW5wdXQpLCBbIiIsICJ5Il0pCi0g ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qobm9kZS5vdXRwdXQpLCBbIiIsICJ4Il0pCi0g Ci0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAo Im5vdF9hX2dvb2RfZmxvYXQiLCBUcnVlKSwKLS0gICAgICAgICAgICAoImluZjEiLCBUcnVlKSwK LS0gICAgICAgICAgICAoIi1pbmYxIiwgVHJ1ZSksCi0tICAgICAgICAgICAgKCJuYW4wIiwgVHJ1 ZSksCi0tICAgICAgICAgICAgKCItbmFuMCIsIFRydWUpLAotLSAgICAgICAgICAgICgibmFuaW5m IiwgVHJ1ZSksCi0tICAgICAgICAgICAgKCJpbmYiLCBGYWxzZSksCi0tICAgICAgICAgICAgKCIt aW5mIiwgRmFsc2UpLAotLSAgICAgICAgICAgICgiaW5maW5pdHkiLCBGYWxzZSksCi0tICAgICAg ICAgICAgKCItaW5maW5pdHkiLCBGYWxzZSksCi0tICAgICAgICAgICAgKCJuYW4iLCBGYWxzZSks Ci0tICAgICAgICAgICAgKCItTmFOIiwgRmFsc2UpLAotLSAgICAgICAgXQotLSAgICApCi0tICAg IGRlZiB0ZXN0X3BhcnNlX3ZhcmlvdXNfZmxvYXRfdmFsdWVzKHNlbGYsIHRlc3RfbGl0ZXJhbCwg ZXhwZWN0X2V4Y2VwdGlvbik6Ci0tICAgICAgICBtb2RlbF90ZXh0ID0gZiIiIgotLSAgICAgICAg PAotLSAgICAgICAgaXJfdmVyc2lvbjogOCwKLS0gICAgICAgIG9wc2V0X2ltcG9ydDogWyIiIDog MTgsICJ0aGlzIiA6IDFdLAotLSAgICAgICAgcHJvZHVjZXJfbmFtZTogIkZ1bmN0aW9uUHJvdG9U ZXN0IiwKLS0gICAgICAgIHByb2R1Y2VyX3ZlcnNpb246ICIxLjAiCi0tICAgICAgICA+Ci0tICAg ICAgICBfZnVuYyAoKSA9PiAoKQotLSAgICAgICAge3sKLS0gICAgICAgIHRtcCA9IENvbnN0YW50 IDx2YWx1ZV9mbG9hdCA9IHt0ZXN0X2xpdGVyYWx9PigpCi0tICAgICAgICB9fQotLSAgICAgICAg IiIiCi0tICAgICAgICBpZiBleHBlY3RfZXhjZXB0aW9uOgotLSAgICAgICAgICAgIHNlbGYuYXNz ZXJ0UmFpc2VzKAotLSAgICAgICAgICAgICAgICBvbm54LnBhcnNlci5QYXJzZUVycm9yLCBsYW1i ZGE6IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKG1vZGVsX3RleHQpCi0tICAgICAgICAgICAgKQot LSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICBtb2RlbCA9IG9ubngucGFyc2VyLnBhcnNlX21v ZGVsKG1vZGVsX3RleHQpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5pcl92 ZXJzaW9uLCA4KQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWwucHJvZHVjZXJf bmFtZSwgIkZ1bmN0aW9uUHJvdG9UZXN0IikKLS0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs KG1vZGVsLnByb2R1Y2VyX3ZlcnNpb24sICIxLjAiKQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwobGVuKG1vZGVsLmdyYXBoLm5vZGUpLCAxKQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwobGVuKG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlKSwgMSkKLS0gICAgICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLm5hbWUs ICJ2YWx1ZV9mbG9hdCIpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLS0gICAgICAg ICAgICAgICAgbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udHlwZSwgb25ueC5BdHRy aWJ1dGVQcm90by5GTE9BVAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxmLmFzc2Vy dEVxdWFsKAotLSAgICAgICAgICAgICAgICBzdHIobW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1 dGVbMF0uZiksIHN0cihmbG9hdCh0ZXN0X2xpdGVyYWwpKQotLSAgICAgICAgICAgICkKLS0KLS0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgiYmZs b2F0MTYiLCBUZW5zb3JQcm90by5CRkxPQVQxNiksCi0tICAgICAgICAgICAgKCJib29sIiwgVGVu c29yUHJvdG8uQk9PTCksCi0tICAgICAgICAgICAgKCJjb21wbGV4NjQiLCBUZW5zb3JQcm90by5D T01QTEVYNjQpLAotLSAgICAgICAgICAgICgiY29tcGxleDEyOCIsIFRlbnNvclByb3RvLkNPTVBM RVgxMjgpLAotLSAgICAgICAgICAgICgiZG91YmxlIiwgVGVuc29yUHJvdG8uRE9VQkxFKSwKLS0g ICAgICAgICAgICAoImZsb2F0MTYiLCBUZW5zb3JQcm90by5GTE9BVDE2KSwKLS0gICAgICAgICAg ICAoImZsb2F0IiwgVGVuc29yUHJvdG8uRkxPQVQpLAotLSAgICAgICAgICAgICgiZmxvYXQ4ZTRt M2ZuIiwgVGVuc29yUHJvdG8uRkxPQVQ4RTRNM0ZOKSwKLS0gICAgICAgICAgICAoImZsb2F0OGU0 bTNmbnV6IiwgVGVuc29yUHJvdG8uRkxPQVQ4RTRNM0ZOVVopLAotLSAgICAgICAgICAgICgiZmxv YXQ4ZTVtMiIsIFRlbnNvclByb3RvLkZMT0FUOEU1TTIpLAotLSAgICAgICAgICAgICgiZmxvYXQ4 ZTVtMmZudXoiLCBUZW5zb3JQcm90by5GTE9BVDhFNU0yRk5VWiksCi0tICAgICAgICAgICAgKCJp bnQyIiwgVGVuc29yUHJvdG8uSU5UMiksCi0tICAgICAgICAgICAgKCJpbnQ0IiwgVGVuc29yUHJv dG8uSU5UNCksCi0tICAgICAgICAgICAgKCJpbnQ4IiwgVGVuc29yUHJvdG8uSU5UOCksCi0tICAg ICAgICAgICAgKCJpbnQxNiIsIFRlbnNvclByb3RvLklOVDE2KSwKLS0gICAgICAgICAgICAoImlu dDMyIiwgVGVuc29yUHJvdG8uSU5UMzIpLAotLSAgICAgICAgICAgICgiaW50NjQiLCBUZW5zb3JQ cm90by5JTlQ2NCksCi0tICAgICAgICAgICAgKCJzdHJpbmciLCBUZW5zb3JQcm90by5TVFJJTkcp LAotLSAgICAgICAgICAgICgidWludDIiLCBUZW5zb3JQcm90by5VSU5UMiksCi0tICAgICAgICAg ICAgKCJ1aW50NCIsIFRlbnNvclByb3RvLlVJTlQ0KSwKLS0gICAgICAgICAgICAoInVpbnQ4Iiwg VGVuc29yUHJvdG8uVUlOVDgpLAotLSAgICAgICAgICAgICgidWludDE2IiwgVGVuc29yUHJvdG8u VUlOVDE2KSwKLS0gICAgICAgICAgICAoInVpbnQzMiIsIFRlbnNvclByb3RvLlVJTlQzMiksCi0t ICAgICAgICAgICAgKCJ1aW50NjQiLCBUZW5zb3JQcm90by5VSU5UNjQpLAotLSAgICAgICAgICAg ICgiZmxvYXQ0ZTJtMSIsIFRlbnNvclByb3RvLkZMT0FUNEUyTTEpLAotLSAgICAgICAgXQotLSAg ICApCi0tICAgIGRlZiB0ZXN0X3BhcnNlX2dyYXBoX3R5cGVzKHNlbGYsIG5hbWUsIGl0eXBlKSAt PiBOb25lOgotLSAgICAgICAgdyA9ICd7IjAifScgaWYgaXR5cGUgPT0gVGVuc29yUHJvdG8uU1RS SU5HIGVsc2UgInswfSIKLS0gICAgICAgIHRleHRfZ3JhcGggPSBmIiIiCi0tICAgICAgICAgICA8 Ci0tICAgICAgICAgICAgIGlyX3ZlcnNpb246IDEwLAotLSAgICAgICAgICAgICBvcHNldF9pbXBv cnQ6IFsgIiIgOiAxOV0KLS0gICAgICAgICAgID4KLS0gICAgICAgICAgIGFncmFwaCAoZmxvYXRb Tl0gWCkgPT4gKHtuYW1lfVtOXSBDKQotLSAgICAgICAgICAgPAotLSAgICAgICAgICAgICB7bmFt ZX1bMV0gd2VpZ2h0ID0ge3d9Ci0tICAgICAgICAgICA+Ci0tICAgICAgICAgICB7ewotLSAgICAg ICAgICAgICAgQyA9IENhc3Q8dG89e2l0eXBlfT4oWCkKLS0gICAgICAgICAgIH19Ci0tICAgICAg ICAgICAiIiIKLS0gICAgICAgIGdyYXBoID0gb25ueC5wYXJzZXIucGFyc2VfbW9kZWwodGV4dF9n cmFwaCkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGdyYXBoLmdyYXBoLm5vZGUpLCAx KQotLQotIAotIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIHVuaXR0ZXN0Lm1haW4o dmVyYm9zaXR5PTIpCi1kaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3Jf bWxfdGVzdC5weSBiL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rlc3QucHkKLWlu ZGV4IDdkYWQ5NjcwMy4uMWM0Mjc2NDgyIDEwMDY0NAotLS0tIGEvb25ueC90ZXN0L3JlZmVyZW5j ZV9ldmFsdWF0b3JfbWxfdGVzdC5weQotKysrIGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0 b3JfbWxfdGVzdC5weQotQEAgLTExLDcgKzExLDYgQEAgaW1wb3J0IHVuaXR0ZXN0Ci0gCi0gaW1w b3J0IG51bXB5IGFzIG5wCi0gZnJvbSBudW1weS50ZXN0aW5nIGltcG9ydCBhc3NlcnRfYWxsY2xv c2UKLS1mcm9tIHBhcmFtZXRlcml6ZWQgaW1wb3J0IHBhcmFtZXRlcml6ZWQKLSAKLSBpbXBvcnQg b25ueAotIGZyb20gb25ueCBpbXBvcnQgT05OWF9NTCwgVGVuc29yUHJvdG8sIFR5cGVQcm90bywg VmFsdWVJbmZvUHJvdG8KLUBAIC04OTMsMTE4ICs4OTIsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNl RXZhbHVhdG9yQWlPbm54TWwodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgb25ueC5jaGVj a2VyLmNoZWNrX21vZGVsKG1vZGVsKQotICAgICAgICAgcmV0dXJuIG1vZGVsCi0gCi0tICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIHR1cGxlKAotLSAgICAgICAgICAgIGl0ZXJ0 b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAg ICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlv bi5TVU0gaWYgb3BzZXQ1IGVsc2UgIlNVTSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAu YXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC41NzY5MjNdLCBbMC41NzY5 MjNdLCBbMC41NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgotLSAgICAgICAgICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAotLSAgICAgICAgICAgICAg ICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICAg ICBBZ2dyZWdhdGlvbkZ1bmN0aW9uLkFWRVJBR0UgaWYgb3BzZXQ1IGVsc2UgIkFWRVJBR0UiLAot LSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBbWzAuMjg4NDYyXSwgWzAuMjg4NDYyXSwgWzAuMjg4NDYyXV0sIGR0eXBlPW5wLmZs b2F0MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAg ICAoCi0tICAgICAgICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5NSU4gaWYg b3BzZXQ1IGVsc2UgIk1JTiIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC4wNzY5MjNdLCBbMC4wNzY5MjNdLCBbMC4w NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAotLSAgICAgICAgICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdh dGlvbkZ1bmN0aW9uLk1BWCBpZiBvcHNldDUgZWxzZSAiTUFYIiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICBucC5hcnJheShbWzAuNV0sIFswLjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIp LAotLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKLS0gICAgICAgICAgICAgICAgICAg ICksCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICAgICAgZm9yIG9wc2V0NSBpbiBb VHJ1ZSwgRmFsc2VdCi0tICAgICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICApCi0tICAgIEB1 bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0 aCBhaS5vbm54Lm1sIikKLS0gICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfYWdn cmVnYXRpb25fZnVuY3Rpb25zKAotLSAgICAgICAgc2VsZiwgYWdncmVnYXRlX2Z1bmN0aW9uLCBl eHBlY3RlZF9yZXN1bHQsIG9wc2V0NQotLSAgICApOgotLSAgICAgICAgeCA9IG5wLmFyYW5nZSg5 KS5yZXNoYXBlKCgtMSwgMykpLmFzdHlwZShucC5mbG9hdDMyKSAvIDEwIC0gMC41Ci0tICAgICAg ICBtb2RlbF9mYWN0b3J5ID0gKAotLSAgICAgICAgICAgIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5z ZW1ibGVfb3BzZXRfbGF0ZXN0Ci0tICAgICAgICAgICAgaWYgb3BzZXQ1Ci0tICAgICAgICAgICAg ZWxzZSBzZWxmLl9nZXRfdGVzdF90cmVlX2Vuc2VtYmxlX3JlZ3Jlc3NvcgotLSAgICAgICAgKQot LSAgICAgICAgbW9kZWxfcHJvdG8gPSBtb2RlbF9mYWN0b3J5KAotLSAgICAgICAgICAgIGFnZ3Jl Z2F0ZV9mdW5jdGlvbiwKLS0gICAgICAgICkKLS0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFs dWF0b3IobW9kZWxfcHJvdG8pCi0tICAgICAgICAoYWN0dWFsLCkgPSBzZXNzLnJ1bihOb25lLCB7 IlgiOiB4fSkKLS0gICAgICAgIGFzc2VydF9hbGxjbG9zZShhY3R1YWwsIGV4cGVjdGVkX3Jlc3Vs dCwgYXRvbD0xZS02KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICB0 dXBsZSgKLS0gICAgICAgICAgICBpdGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZSgKLS0gICAg ICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAg ICAgICAgIE1vZGUuTEVRIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfTEVRIiwKLS0gICAgICAgICAg ICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1sw LjU3NjkyM10sIFswLjU3NjkyM10sIFswLjU3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAg ICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUs Ci0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAg ICAgICAgICAgICAgICAgICAgIE1vZGUuR1QgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9HVCIsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1swLjVdLCBbMC41XSwgWzAuNV1dLCBk dHlwZT1ucC5mbG9hdDMyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0tICAg ICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICAgICAgICAgIE1vZGUuTFQgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9MVCIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg IFtbMC41NzY5MjNdLCBbMC41NzY5MjNdLCBbMC41NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgot LSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAgICAgb3Bz ZXQ1LAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICgKLS0g ICAgICAgICAgICAgICAgICAgICAgICBNb2RlLkdURSBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0dU RSIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1swLjVdLCBbMC41XSwgWzAu NV1dLCBkdHlwZT1ucC5mbG9hdDMyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUs Ci0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAg ICAgICAgICAgICAgICAgICAgIE1vZGUuRVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9FUSIsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxLjBdLCBbMS4wXSwgWzEuMF1dLCBk dHlwZT1ucC5mbG9hdDMyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCi0tICAg ICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICAgICAgICAgIE1vZGUuTkVRIGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfTkVRIiwKLS0gICAg ICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgW1swLjA3NjkyM10sIFswLjA3NjkyM10sIFswLjA3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMy Ci0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBv cHNldDUsCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICApCi0tICAg ICAgICAgICAgICAgIGZvciBvcHNldDUgaW4gW1RydWUsIEZhbHNlXQotLSAgICAgICAgICAgICkK LS0gICAgICAgICkKLS0gICAgKQotLSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01MLCBy ZWFzb249Im9ubnggbm90IGNvbXBpbGVkIHdpdGggYWkub25ueC5tbCIpCi0tICAgIGRlZiB0ZXN0 X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yX3J1bGUoc2VsZiwgcnVsZSwgZXhwZWN0ZWQsIG9wc2V0 NSk6Ci0tICAgICAgICB4ID0gbnAuYXJhbmdlKDkpLnJlc2hhcGUoKC0xLCAzKSkuYXN0eXBlKG5w LmZsb2F0MzIpIC8gMTAgLSAwLjUKLS0gICAgICAgIG1vZGVsX2ZhY3RvcnkgPSAoCi0tICAgICAg ICAgICAgc2VsZi5fZ2V0X3Rlc3RfdHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QKLS0gICAgICAg ICAgICBpZiBvcHNldDUKLS0gICAgICAgICAgICBlbHNlIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5z ZW1ibGVfcmVncmVzc29yCi0tICAgICAgICApCi0tICAgICAgICBhZ2dyZWdhdGVfZnVuY3Rpb24g PSBBZ2dyZWdhdGlvbkZ1bmN0aW9uLlNVTSBpZiBvcHNldDUgZWxzZSAiU1VNIgotLQotLSAgICAg ICAgbW9kZWxfcHJvdG8gPSBtb2RlbF9mYWN0b3J5KGFnZ3JlZ2F0ZV9mdW5jdGlvbiwgcnVsZSkK LS0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWxfcHJvdG8pCi0tICAgICAg ICAoYWN0dWFsLCkgPSBzZXNzLnJ1bihOb25lLCB7IlgiOiB4fSkKLS0gICAgICAgIGFzc2VydF9h bGxjbG9zZShhY3R1YWwsIGV4cGVjdGVkLCBhdG9sPTFlLTYpCi0tCi0gICAgIEB1bml0dGVzdC5z a2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54 Lm1sIikKLSAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfMl90YXJnZXRzX29w c2V0MyhzZWxmKToKLSAgICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVu c29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lXSkKLUBAIC0xMTE4LDIzICsxMDA1LDYgQEAgY2xh c3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvckFpT25ueE1sKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg ICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkLCBhdG9sPTFlLTYpCi0gICAg ICAgICBzZWxmLmFzc2VydEluKCJvcF90eXBlPVRyZWVFbnNlbWJsZVJlZ3Jlc3NvciIsIHN0cihz ZXNzLnJ0X25vZGVzX1swXSkpCi0gCi0tICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUws IHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWyhpbnB1dF90eXBlLCkgZm9yIGlucHV0X3R5cGUg aW4gW1RlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5ET1VCTEVdXQotLSAgICApCi0tICAg IGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfbWlzc2luZ19vcHNldDUoc2VsZiwgaW5wdXRfdHlwZSk6 Ci0tICAgICAgICBtb2RlbCA9IHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0 ZXN0KAotLSAgICAgICAgICAgIEFnZ3JlZ2F0aW9uRnVuY3Rpb24uU1VNLCBNb2RlLkxFUSwgVHJ1 ZSwgaW5wdXRfdHlwZQotLSAgICAgICAgKQotLSAgICAgICAgbnBfZHR5cGUgPSBvbm54LmhlbHBl ci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoaW5wdXRfdHlwZSkKLS0gICAgICAgIHggPSBucC5h cmFuZ2UoOSkucmVzaGFwZSgoLTEsIDMpKS5hc3R5cGUobnBfZHR5cGUpIC8gMTAgLSAwLjUKLS0g ICAgICAgIHhbMiwgMF0gPSA1Ci0tICAgICAgICB4WzEsIDpdID0gbnAubmFuCi0tICAgICAgICBl eHBlY3RlZCA9IG5wLmFycmF5KFtbMTAwMDAxLjBdLCBbMTAwMTAwLjBdLCBbMTAwMTAwLjBdXSwg ZHR5cGU9bnBfZHR5cGUpCi0tICAgICAgICBzZXNzaW9uID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1v ZGVsKQotLSAgICAgICAgKGFjdHVhbCwpID0gc2Vzc2lvbi5ydW4oTm9uZSwgeyJYIjogeH0pCi0t ICAgICAgICBhc3NlcnRfYWxsY2xvc2UoYWN0dWFsLCBleHBlY3RlZCwgYXRvbD0xZS02KQotLQot ICAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01MLCByZWFzb249Im9ubnggbm90IGNvbXBp bGVkIHdpdGggYWkub25ueC5tbCIpCi0gICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVz c29yX21pc3Npbmdfb3BzZXQ1X2Zsb2F0MTYoc2VsZik6Ci0gICAgICAgICBtb2RlbCA9IHNlbGYu X2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0ZXN0KAotZGlmZiAtLWdpdCBhL29ubngv dGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkgYi9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2 YWx1YXRvcl90ZXN0LnB5Ci1pbmRleCA4NWNjNGNjMGUuLmQwYTI1NWZjOCAxMDA2NDQKLS0tLSBh L29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKLSsrKyBiL29ubngvdGVzdC9y ZWZlcmVuY2VfZXZhbHVhdG9yX3Rlc3QucHkKLUBAIC0yNSw3ICsyNSw2IEBAIGZyb20gdHlwaW5n IGltcG9ydCBUWVBFX0NIRUNLSU5HCi0gCi0gaW1wb3J0IG1sX2R0eXBlcwotIGltcG9ydCBudW1w eSBhcyBucAotLWltcG9ydCBwYXJhbWV0ZXJpemVkCi0gaW1wb3J0IHZlcnNpb25fdXRpbHMKLSBm cm9tIG51bXB5LnRlc3RpbmcgaW1wb3J0IGFzc2VydF9hbGxjbG9zZQotIAotQEAgLTI5OTgsMTYz ICsyOTk3LDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2Fz ZSk6Ci0gICAgICAgICAjIG1vZGVsCi0gICAgICAgICByZXR1cm4gbWFrZV9tb2RlbChncmFwaCwg b3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIiLCBvcHNldCldKQotIAotLSAgICBAcGFyYW1l dGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0 KAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAg ICAgIlJlZHVjZU1pbiIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAg ICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbbnAubmFu LCBucC5uYW5dLCBbMTQuNDIyNzA2LCAxOC44MDUyN11dLCBkdHlwZT1ucC5mbG9hdDMyCi0tICAg ICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJh eShbWzIsIDE1XSwgWzEwLCA0XV0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAgICAgICAgICAg ICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICgKLS0gICAgICAg ICAgICAgICAgICAgICJSZWR1Y2VMMSIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg IFtbMi4yMzY3MDUzLCAyLjM1MTY2MTJdLCBbNC4wNzYyOTIsIDQuMjk3MDYzNF1dLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxOCwgNl0s IFsxMywgNl1dLCBkdHlwZT1ucC5pbnQ2NCksCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAg ICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAg ICAiUmVkdWNlTDIiLAotLSAgICAgICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuODAxNTUs IDEuODE2OTk0OF0sIFsyLjk5MjgwNzYsIDMuMTIwNTg4M11dLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkdHlwZT1ucC5mbG9hdDMyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICks Ci0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxMSwgMThdLCBbMTMsIDZdXSwg ZHR5cGU9bnAuaW50NjQpLAotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAg ICAgKSwKLS0gICAgICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUxv Z1N1bSIsCi0tICAgICAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAgICAg bnAuYXJyYXkoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC45NDk3ODQ4LCAxLjE4 NzI2NDNdLCBbMS42NzY0MTc1LCAxLjcwNzU5XV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGR0eXBlPW5wLmZsb2F0MzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzYsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5w LmludDY0KSwKLS0gICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VMb2dTdW1FeHAi LAotLSAgICAgICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFy cmF5KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuNjAwNTk3MywgMS43NDQ1OTM1 XSwgWzIuNTYxNjIyOSwgMi42NTM5Nzk1XV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg IGR0eXBlPW5wLmZsb2F0MzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBucC5hcnJheShbWzEzLCA2XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmlu dDY0KSwKLS0gICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VNYXgiLAotLSAgICAg ICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuNDIxNzEwOCwgMS41MDY5NTM2XSwgWzIuNDUz ODI2LCAyLjUwNDE3ODNdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAu ZmxvYXQzMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIG5wLmFycmF5KFtbMTMsIDExXSwgWzEzLCAxMV1dLCBkdHlwZT1ucC5pbnQ2NCksCi0t ICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAg ICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTWVhbiIsCi0tICAgICAgICAgICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFtbMC4zOTI0NzkwMywgMC43ODQ5NzYzNl0sIFsyLjAzODE0Niwg Mi4xNDg1MzE3XV0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0 MzIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICBucC5hcnJheShbWzEzLCA2XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAg ICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICgK LS0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VTdW1TcXVhcmUiLAotLSAgICAgICAgICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBbWzMuMjQ1NTgyOCwgMy4zMDE0Njk2XSwgWzguOTU2ODk2LCA5Ljcz ODA3MDVdXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwK LS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgICAgIG5w LmFycmF5KFtbMTEsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKLS0gICAgICAgICAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICgKLS0g ICAgICAgICAgICAgICAgICAgICJSZWR1Y2VQcm9kIiwKLS0gICAgICAgICAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSgKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgW1tucC5uYW4sIG5wLm5hbl0sIFsxNC40MjI3MDYsIDE4LjgwNTI3XV0sIGR0eXBl PW5wLmZsb2F0MzIKLS0gICAgICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAg ICAgICAgICAgIG5wLmFycmF5KFtbMiwgMTVdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAot LSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICBdLAotLSAgICAgICAgICAgIFsxNywgMThdLAotLSAgICAgICAgKQotLSAgICApCi0tICAgIGRl ZiB0ZXN0X29wX3JlZHVjZShzZWxmLCByZWR1Y2Vfb3BfZXhwZWN0ZWQsIG9wc2V0OiBpbnQpOgot LSAgICAgICAgcmVkdWNlX29wLCBleHBlY3RlZCA9IHJlZHVjZV9vcF9leHBlY3RlZAotLSAgICAg ICAgWCA9IG5wLmFyYW5nZSg4KS5yZXNoYXBlKCgtMSwgNCkpLmFzdHlwZShucC5mbG9hdDMyKQot LQotLSAgICAgICAgcmVzdWx0cyA9IHt9Ci0tCi0tICAgICAgICBtb2RlbCA9IHNlbGYuX2NkaXN0 X21vZGVsKG9wc2V0LCByZWR1Y2Vfb3ApCi0tICAgICAgICBzZXNzID0gUmVmZXJlbmNlRXZhbHVh dG9yKG1vZGVsKQotLSAgICAgICAgZ290ID0gc2Vzcy5ydW4oTm9uZSwgeyJpbnB1dCI6IFh9KQot LSAgICAgICAgcmVzdWx0c1sicmVmIiwgb3BzZXRdID0gZ290Ci0tCi0tICAgICAgICBjbCA9IFsK LS0gICAgICAgICAgICBuCi0tICAgICAgICAgICAgZm9yIG4gaW4gc2Vzcy5ydF9ub2Rlc19bMF0u Ym9keS5ydF9ub2Rlc18KLS0gICAgICAgICAgICBpZiBuLl9fY2xhc3NfXy5fX25hbWVfXy5zdGFy dHN3aXRoKHJlZHVjZV9vcCkKLS0gICAgICAgIF0KLS0gICAgICAgIHNjaGVtYSA9IGNsWzBdLl9z Y2hlbWEKLS0gICAgICAgIG5ld19jbCA9IHR5cGUocmVkdWNlX29wLCAoY2xbMF0uX19jbGFzc19f LCksIHsib3Bfc2NoZW1hIjogc2NoZW1hfSkKLS0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFs dWF0b3IobW9kZWwsIG5ld19vcHM9W25ld19jbF0pCi0tICAgICAgICBnb3QgPSBzZXNzLnJ1bihO b25lLCB7ImlucHV0IjogWH0pCi0tICAgICAgICByZXN1bHRzWyJyZWZfY2wiLCBvcHNldF0gPSBn b3QKLS0KLS0gICAgICAgIGJhc2VsaW5lID0gImNvbnN0YW50IgotLSAgICAgICAgZm9yIGssIHYg aW4gcmVzdWx0cy5pdGVtcygpOgotLSAgICAgICAgICAgIGZvciBhLCBiIGluIHppcChyZXZlcnNl ZChleHBlY3RlZCksIHJldmVyc2VkKHYpLCBzdHJpY3Q9VHJ1ZSk6Ci0tICAgICAgICAgICAgICAg IGlmIGEuc2hhcGUgIT0gYi5zaGFwZToKLS0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2Vy dGlvbkVycm9yKAotLSAgICAgICAgICAgICAgICAgICAgICAgIGYiU2hhcGUgbWlzbWF0Y2ggZm9y IHtyZWR1Y2Vfb3Ahcn0sIHtiYXNlbGluZX06e2Euc2hhcGV9ICE9IHtrfTp7Yi5zaGFwZX0uIgot LSAgICAgICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgICAgICBkaWZmID0gbnAuYWJzKGEg LSBiKS5tYXgoKQotLSAgICAgICAgICAgICAgICBpZiBkaWZmID4gMWUtNjoKLS0gICAgICAgICAg ICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAotLSAgICAgICAgICAgICAgICAgICAgICAg IGYiRGlzY3JlcGFuY2llcyAobWF4PXtkaWZmfSkgZm9yIHtyZWR1Y2Vfb3Ahcn0sIHtiYXNlbGlu ZX0gIT0ge2t9XG57YX1cbiE9XG57Yn0iCi0tICAgICAgICAgICAgICAgICAgICApCi0tCi0tICAg IEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAg ICAgICAgICgxMywpLAotLSAgICAgICAgICAgICgxNywpLAotLSAgICAgICAgICAgICgxOCwpLAot LSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X212bihzZWxmLCBvcHNldDogaW50LCBy ZWZfb3BzZXQ6IGludCA9IDEzKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lLCBOb25lXSkKLS0gICAg ICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtO b25lLCBOb25lLCBOb25lLCBOb25lXSkKLS0gICAgICAgIG5vZGVzID0gWwotLSAgICAgICAgICAg IG1ha2Vfbm9kZSgiTWVhblZhcmlhbmNlTm9ybWFsaXphdGlvbiIsIFsiWCJdLCBbIlkiXSksCi0t ICAgICAgICBdCi0tICAgICAgICBncmFwaCA9IG1ha2VfZ3JhcGgobm9kZXMsICJnIiwgW1hdLCBb WV0pCi0tICAgICAgICB4ID0gbnAucmFuZG9tLnJhbmQoMywgMywgMywgMSkuYXN0eXBlKG5wLmZs b2F0MzIpCi0tCi0tICAgICAgICBvbm54X21vZGVsID0gbWFrZV9tb2RlbChncmFwaCwgb3BzZXRf aW1wb3J0cz1bbWFrZV9vcHNldGlkKCIiLCBvcHNldCldKQotLSAgICAgICAgcmVmID0gUmVmZXJl bmNlRXZhbHVhdG9yKG9ubnhfbW9kZWwpCi0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsi WCI6IHh9KVswXQotLQotLSAgICAgICAgcmVmX29ubnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBo LCBvcHNldF9pbXBvcnRzPVttYWtlX29wc2V0aWQoIiIsIHJlZl9vcHNldCldKQotLSAgICAgICAg cmVmX2V4cGVjdGVkID0gUmVmZXJlbmNlRXZhbHVhdG9yKHJlZl9vbm54X21vZGVsKQotLSAgICAg ICAgZXhwZWN0ZWQgPSByZWZfZXhwZWN0ZWQucnVuKE5vbmUsIHsiWCI6IHh9KVswXQotLQotLSAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3Quc2hhcGUsIGV4cGVjdGVkLnNoYXBlKQotLSAgICAg ICAgYXNzZXJ0X2FsbGNsb3NlKGdvdCwgZXhwZWN0ZWQpCi0tCi0gICAgIGRlZiB0ZXN0X2NvbmNh dF9pbl9hX2Z1bmN0aW9uKHNlbGYpOgotICAgICAgICAgZGVmIGNyZWF0ZV9tb2RlbCgpOgotICAg ICAgICAgICAgIG5vZGVzID0gW10KLUBAIC0zODI5LDIxMSArMzY3MSw2IEBAIGNsYXNzIFRlc3RS ZWZlcmVuY2VFdmFsdWF0b3IodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgZ290ID0gcmVm LnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKLSAgICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0s IGV4cGVjdGVkKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgK LS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIDQgKiBucC5hcmFu Z2UoMTIpLnJlc2hhcGUoMywgNCksCi0tICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5y ZXNoYXBlKDMsIDIpLAotLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgMikpLAotLSAgICAg ICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAgICBbWzAs IDQsIDQsIDZdLCBbNSwgNywgNiwgN10sIFs2LCA3LCA3LCA3XV0sCi0tICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIDQgKiBucC5hcmFuZ2UoMTIpLnJlc2hh cGUoMywgNCksCi0tICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIp LAotLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCAyKSksCi0tICAgICAgICAgICAgICAgIDEs Ci0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIFtbMSwgNSwgNSwgN10sIFs2 LCA4LCA3LCA4XSwgWzcsIDgsIDgsIDhdXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAg ICgKLS0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDI0KS5yZXNoYXBlKDMsIDgpLAotLSAgICAg ICAgICAgICAgICBbWzAuMjUsIDAuNSwgMV0sIFswLjI1LCAwLjUsIDFdLCBbMC4yNSwgMC41LCAx XV0sCi0tICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAzKSksCi0tICAgICAgICAgICAgICAg IDEsCi0tICAgICAgICAgICAgICAgIDMsCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgICAgIFswLCA0LCA4LCA2LCA4LCAxMCwgNiwgN10sCi0tICAgICAgICAgICAgICAgICAg ICBbMzIsIDM2LCA0MCwgMjIsIDI0LCAyNiwgMTQsIDE1XSwKLS0gICAgICAgICAgICAgICAgICAg IFs2NCwgNjgsIDcyLCAzOCwgNDAsIDQyLCAyMiwgMjNdLAotLSAgICAgICAgICAgICAgICBdLAot LSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBucC5hcmFu Z2UoNiksCi0tICAgICAgICAgICAgICAgIFswLjI1LCAwLjVdLAotLSAgICAgICAgICAgICAgICBb LTEsIC0yXSwKLS0gICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgMywKLS0gICAg ICAgICAgICAgICAgWy0xLCAzLCA3LCA0LCA2LCA4XSwKLS0gICAgICAgICAgICApLAotLSAgICAg ICAgICAgICgKLS0gICAgICAgICAgICAgICAgbnAub25lcygoOSwgMTIpKSwKLS0gICAgICAgICAg ICAgICAgbnAub25lcygoMywgNCkpLAotLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgNCkp LAotLSAgICAgICAgICAgICAgICAwLAotLSAgICAgICAgICAgICAgICAzLAotLSAgICAgICAgICAg ICAgICBOb25lLCAgIyBCbG9ja2VkIHF1YW50aXphdGlvbiBpcyBkZWZpbmVkIGZvciAxLUQgYmxv Y2tzIG9ubHkKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAg ICAgbnAub25lcygoMywgNCwgNSwgNikpLAotLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0 KSksCi0tICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCA0KSksCi0tICAgICAgICAgICAgICAg IDIsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAgIE5vbmUsICAjIFNjYWxl IGFuZCBaUCBtdXN0IGhhdmUgdGhlIHNhbWUgcmFuayBhcyB0aGUgaW5wdXQKLS0gICAgICAgICAg ICApLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2Jsb2NrZWRfcXVhbnRpemVf bGluZWFyKAotLSAgICAgICAgc2VsZiwgeCwgc2NhbGUsIHplcm9fcG9pbnQsIGF4aXMsIGJsb2Nr X3NpemUsIGV4cGVjdGVkCi0tICAgICk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBbTm9uZV0pCi0tICAgICAgICBZID0gbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLklOVDgsIFtOb25lXSkKLS0KLS0gICAg ICAgIHNjYWxlX2RhdGEgPSBucC5hcnJheShzY2FsZSwgZHR5cGU9bnAuZmxvYXQzMikKLS0gICAg ICAgIHpwX2RhdGEgPSBucC5hcnJheSh6ZXJvX3BvaW50LCBkdHlwZT1ucC5pbnQ4KQotLSAgICAg ICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAg ICAgICAgICAgICAgICAiUXVhbnRpemVMaW5lYXIiLAotLSAgICAgICAgICAgICAgICAgICAgICAg IFsiWCIsICJzY2FsZSIsICJ6ZXJvIl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgWyJZIl0s Ci0tICAgICAgICAgICAgICAgICAgICAgICAgYXhpcz1heGlzLAotLSAgICAgICAgICAgICAgICAg ICAgICAgIGJsb2NrX3NpemU9YmxvY2tfc2l6ZSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICJnIiwKLS0gICAgICAgICAgICAg ICAgW1hdLAotLSAgICAgICAgICAgICAgICBbWV0sCi0tICAgICAgICAgICAgICAgIFsKLS0gICAg ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJz Y2FsZSIsIFRlbnNvclByb3RvLkZMT0FULCBzY2FsZV9kYXRhLnNoYXBlLCBzY2FsZV9kYXRhCi0t ICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Io Inplcm8iLCBUZW5zb3JQcm90by5JTlQ4LCBzY2FsZV9kYXRhLnNoYXBlLCB6cF9kYXRhKSwKLS0g ICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICApCi0tICAgICAgICBy ZWYgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwpCi0tCi0tICAgICAgICBkYXRhID0gbnAuYXJy YXkoeCwgZHR5cGU9bnAuZmxvYXQzMikKLS0KLS0gICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBO b25lOgotLSAgICAgICAgICAgIGV4cGVjdGVkID0gbnAuYXJyYXkoZXhwZWN0ZWQsIGR0eXBlPW5w LmludDgpCi0tICAgICAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKLS0g ICAgICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBleHBlY3RlZCkKLS0gICAgICAgIGVs c2U6Ci0tICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLS0g ICAgICAgICAgICAgICAgcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKLS0KLS0gICAgQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAg KAotLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCi0tICAgICAg ICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAotLSAgICAgICAgICAgICAg ICBucC56ZXJvcygoMywgMikpLAotLSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAg ICAyLAotLSAgICAgICAgICAgICAgICBbWzAsIDEsIDQsIDZdLCBbMTIsIDE1LCAyNCwgMjhdLCBb NDAsIDQ1LCA2MCwgNjZdXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAg ICAgICAgICAgICAgbnAuYXJhbmdlKDEyKS5yZXNoYXBlKDMsIDQpLAotLSAgICAgICAgICAgICAg ICBucC5hcmFuZ2UoMSwgNykucmVzaGFwZSgzLCAyKSwKLS0gICAgICAgICAgICAgICAgbnAub25l cygoMywgMikpLAotLSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAgICAyLAotLSAg ICAgICAgICAgICAgICBbWy0xLCAwLCAyLCA0XSwgWzksIDEyLCAyMCwgMjRdLCBbMzUsIDQwLCA1 NCwgNjBdXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAg ICAgbnAuZHN0YWNrKFtucC5hcmFuZ2UoNCkucmVzaGFwZSgyLCAyKV0gKiA0KSwKLS0gICAgICAg ICAgICAgICAgbnAuZHN0YWNrKFtucC5hcnJheShbWzEsIDFdLCBbMiwgM11dKSwgbnAuYXJyYXko W1s0LCA1XSwgWzYsIDddXSldKSwKLS0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDIsIDIsIDIp KSwKLS0gICAgICAgICAgICAgICAgMiwKLS0gICAgICAgICAgICAgICAgMiwKLS0gICAgICAgICAg ICAgICAgW1tbMCwgMCwgMCwgMF0sIFsxLCAxLCA1LCA1XV0sIFtbNCwgNCwgMTIsIDEyXSwgWzks IDksIDIxLCAyMV1dXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAg ICAgICAgICAgbnAuYXJhbmdlKDI0KS5yZXNoYXBlKDMsIDgpLAotLSAgICAgICAgICAgICAgICBb WzIsIDEsIDNdLCBbMiwgMSwgM10sIFsyLCAxLCAzXV0sCi0tICAgICAgICAgICAgICAgIG5wLnpl cm9zKCgzLCAzKSksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIDMsCi0t ICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIFswLCAyLCA0LCAzLCA0LCA1 LCAxOCwgMjFdLAotLSAgICAgICAgICAgICAgICAgICAgWzE2LCAxOCwgMjAsIDExLCAxMiwgMTMs IDQyLCA0NV0sCi0tICAgICAgICAgICAgICAgICAgICBbMzIsIDM0LCAzNiwgMTksIDIwLCAyMSwg NjYsIDY5XSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAg ICAgICgKLS0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKAotLSAgICAgICAgICAgICAgICAgICAg NiwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgWzIsIDNdLAotLSAgICAg ICAgICAgICAgICBbMSwgMl0sCi0tICAgICAgICAgICAgICAgIDAsCi0tICAgICAgICAgICAgICAg IDMsCi0tICAgICAgICAgICAgICAgIFstMiwgMCwgMiwgMywgNiwgOV0sCi0tICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIG5wLm9uZXMoKDksIDEyKSksCi0t ICAgICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQpKSwKLS0gICAgICAgICAgICAgICAgbnAuemVy b3MoKDMsIDQpKSwKLS0gICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgMywKLS0g ICAgICAgICAgICAgICAgTm9uZSwgICMgQmxvY2tlZCBxdWFudGl6YXRpb24gaXMgZGVmaW5lZCBm b3IgMS1EIGJsb2NrcyBvbmx5Ci0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAg ICAgICAgICAgICAgIG5wLm9uZXMoKDMsIDQsIDUsIDYpKSwKLS0gICAgICAgICAgICAgICAgbnAu b25lcygoMywgNCkpLAotLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgNCkpLAotLSAgICAg ICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAgICAyLAotLSAgICAgICAgICAgICAgICBOb25l LCAgIyBTY2FsZSBhbmQgWlAgbXVzdCBoYXZlIHRoZSBzYW1lIHJhbmsgYXMgdGhlIGlucHV0Ci0t ICAgICAgICAgICAgKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9ibG9ja2Vk X2RlcXVhbnRpemVfbGluZWFyKAotLSAgICAgICAgc2VsZiwgeCwgc2NhbGUsIHplcm9fcG9pbnQs IGF4aXMsIGJsb2NrX3NpemUsIGV4cGVjdGVkCi0tICAgICk6Ci0tICAgICAgICBYID0gbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLklOVDgsIFtOb25lXSkKLS0gICAgICAg IFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25l XSkKLS0KLS0gICAgICAgIHNjYWxlX2RhdGEgPSBucC5hcnJheShzY2FsZSwgZHR5cGU9bnAuZmxv YXQzMikKLS0gICAgICAgIHpwX2RhdGEgPSBucC5hcnJheSh6ZXJvX3BvaW50LCBkdHlwZT1ucC5p bnQ4KQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK LS0gICAgICAgICAgICAgICAgICAgICAgICAiRGVxdWFudGl6ZUxpbmVhciIsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgWyJYIiwgInNjYWxlIiwgInplcm8iXSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICBbIlkiXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19zaXplLAotLSAgICAgICAgICAg ICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgImciLAot LSAgICAgICAgICAgICAgICBbWF0sCi0tICAgICAgICAgICAgICAgIFtZXSwKLS0gICAgICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAg ICAgICAgICAgICAgInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX2RhdGEuc2hhcGUs IHNjYWxlX2RhdGEKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcigiemVybyIsIFRlbnNvclByb3RvLklOVDgsIHNjYWxlX2RhdGEuc2hhcGUs IHpwX2RhdGEpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkKLS0gICAgICAg ICkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0gICAgICAgIGRh dGEgPSBucC5hcnJheSh4LCBkdHlwZT1ucC5pbnQ4KQotLQotLSAgICAgICAgaWYgZXhwZWN0ZWQg aXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgZXhwZWN0ZWQgPSBucC5hcnJheShleHBlY3RlZCwg ZHR5cGU9bnAuZmxvYXQzMikKLS0gICAgICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6 IGRhdGF9KQotLSAgICAgICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQot LSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl RXJyb3IpOgotLSAgICAgICAgICAgICAgICByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLQot ICAgICBkZWYgdGVzdF9scm4oc2VsZik6Ci0gICAgICAgICBkZWYgX2V4cGVjdGVkKHgsIGFscGhh LCBiZXRhLCBiaWFzLCBzaXplKToKLSAgICAgICAgICAgICBzcXVhcmVfc3VtID0gbnAuemVyb3Mo KDUsIDUsIDUsIDUpKS5hc3R5cGUobnAuZmxvYXQzMikKLUBAIC00MjE3LDUyICszODU0LDYgQEAg Y2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAg ICBnb3QgPSBfY29udl9pbXBsZW1lbnRhdGlvbl9pbTJjb2woKipmZWVkcywgKiprd2FyZ3MpCi0g ICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290LCBleHBlY3RlZCkKLSAKLS0gICAgQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKCJS ZWR1Y2VTdW0iLCksCi0tICAgICAgICAgICAgKCJSZWR1Y2VMMSIsKSwKLS0gICAgICAgICAgICAo IlJlZHVjZUwyIiwpLAotLSAgICAgICAgICAgICgiUmVkdWNlTWluIiwpLAotLSAgICAgICAgICAg ICgiUmVkdWNlTWF4IiwpLAotLSAgICAgICAgICAgICgiUmVkdWNlUHJvZCIsKSwKLS0gICAgICAg ICAgICAoIlJlZHVjZVN1bVNxdWFyZSIsKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYg dGVzdF9yZWR1Y2Vfb3Bfbm9fYXhpcyhzZWxmLCBvcCk6Ci0tICAgICAgICBYID0gbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKQotLSAgICAgICAgWSA9 IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKLS0g ICAgICAgIGRhdGEgPSBucC5hcmFuZ2UoNikucmVzaGFwZSgoMSwgMywgMikpLmFzdHlwZShucC5m bG9hdDMyKQotLSAgICAgICAgbm9kZXMgPSBbbWFrZV9ub2RlKG9wLCBbIlgiXSwgWyJZIl0sIGtl ZXBkaW1zPTApXQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgobm9kZXMs ICJnIiwgW1hdLCBbWV0pKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVs KQotLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKLS0gICAgICAgIHIg PSBnb3RbMF0KLS0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBucC5uZGFycmF5KQot LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyLnNoYXBlLCAoKSkKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoWygxLCksICgyLCksICgzLCksICg0LCksICg1LCks ICg2LCldKQotLSAgICBkZWYgdGVzdF9wYWQoc2VsZiwgZGltKToKLS0gICAgICAgIFggPSBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCi0tICAgICAg ICBQID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiUCIsIFRlbnNvclByb3RvLklOVDY0LCBOb25l KQotLSAgICAgICAgViA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlYiLCBUZW5zb3JQcm90by5G TE9BVCwgTm9uZSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVu c29yUHJvdG8uRkxPQVQsIE5vbmUpCi0tICAgICAgICB2YWx1ZSA9IG5wLmFycmF5KFstNV0sIGR0 eXBlPW5wLmZsb2F0MzIpCi0tCi0tICAgICAgICBub2RlID0gbWFrZV9ub2RlKCJQYWQiLCBpbnB1 dHM9WyJYIiwgIlAiLCAiViJdLCBvdXRwdXRzPVsiWSJdLCBtb2RlPSJjb25zdGFudCIpCi0tICAg ICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW1gsIFAsIFZd LCBbWV0pKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAg ICAgeCA9IG5wLmFycmF5KFsxXSwgZHR5cGU9bnAuZmxvYXQzMikucmVzaGFwZSgoMSwpICogZGlt KQotLQotLSAgICAgICAgcCA9IG5wLmFycmF5KFsxLCAxXSAqIGRpbSwgZHR5cGU9bnAuaW50NjQp Ci0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IHgsICJQIjogcCwgIlYiOiB2YWx1 ZX0pWzBdCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdvdC5zaGFwZSwgKDMsKSAqIGRpbSkK LS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ290LmR0eXBlLCBucC5mbG9hdDMyKQotLQotLSAg ICAgICAgcCA9IG5wLnJlcGVhdChbNywgM10sIGRpbSkuYXN0eXBlKG5wLmludDY0KQotLSAgICAg ICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiB4LCAiUCI6IHAsICJWIjogdmFsdWV9KVswXQot LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3Quc2hhcGUsICgxMSwpICogZGltKQotLSAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChnb3QuZHR5cGUsIG5wLmZsb2F0MzIpCi0tCi0gICAgIGRlZiB0 ZXN0X2NvbnN0YW50X29mX3NoYXBlKHNlbGYpOgotICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKLSAgICAgICAgIFkgPSBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCi1AQCAtNTM3 MywxMjQgKzQ5NjQsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRl c3RDYXNlKToKLSAgICAgICAgIGZvciBpIGluIHJhbmdlKDIsIC0xLCAtMSk6Ci0gICAgICAgICAg ICAgYXNzZXJ0X2FsbGNsb3NlKGdvdFtpXSwgZXhwZWN0ZWRbaV0pCi0gCi0tICAgIEBwYXJhbWV0 ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgIChb ImFiYyIsICJkZWYiXSwgWyIuY29tIiwgIi5uZXQiXSwgWyJhYmMuY29tIiwgImRlZi5uZXQiXSwg KDIsKSksCi0tICAgICAgICAgICAgKFsiY2F0IiwgImRvZyIsICJzbmFrZSJdLCBbInMiXSwgWyJj YXRzIiwgImRvZ3MiLCAic25ha2VzIl0sICgzLCkpLAotLSAgICAgICAgICAgICgiY2F0IiwgInMi LCAiY2F0cyIsICgpKSwKLS0gICAgICAgICAgICAoWyJhIiwgIsOfIiwgInkiXSwgWyJhIiwgIsOf IiwgInkiXSwgWyJhYSIsICLDn8OfIiwgInl5Il0sICgzLCkpLAotLSAgICAgICAgXQotLSAgICAp Ci0tICAgIGRlZiB0ZXN0X3N0cmluZ19jb25jYXQoc2VsZiwgYSwgYiwgZXhwZWN0ZWQsIGV4cGVj dGVkX3NoYXBlKToKLS0gICAgICAgIEEgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJBIiwgVGVu c29yUHJvdG8uU1RSSU5HLCBOb25lKQotLSAgICAgICAgQiA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIkIiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5vbmUpCi0tICAgICAgICBZID0gbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlNUUklORywgTm9uZSkKLS0gICAgICAgIG5v ZGUgPSBtYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIsIGlucHV0cz1bIkEiLCAiQiJdLCBvdXRwdXRz PVsiWSJdKQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAi ZyIsIFtBLCBCXSwgW1ldKSkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2Rl bCkKLS0gICAgICAgIHJlc3VsdCwgKl8gPSByZWYucnVuKE5vbmUsIHsiQSI6IG5wLmFycmF5KGEp LCAiQiI6IG5wLmFycmF5KGIpfSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2Vx dWFsKHJlc3VsdCwgZXhwZWN0ZWQpCi0tICAgICAgICBzZWxmLmFzc2VydEluKHJlc3VsdC5kdHlw ZS5raW5kLCB7Ik8iLCAiVSJ9KQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc2hh cGUsIGV4cGVjdGVkX3NoYXBlKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVk LmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsi MSwyLDMiLCAiNCw1LDYiXSwKLS0gICAgICAgICAgICAgICAgIiwiLAotLSAgICAgICAgICAgICAg ICBOb25lLAotLSAgICAgICAgICAgICAgICBbWyIxIiwgIjIiLCAiMyJdLCBbIjQiLCAiNSIsICI2 Il1dLAotLSAgICAgICAgICAgICAgICBbMywgM10sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAg ICAgICAoCi0tICAgICAgICAgICAgICAgIFsiMSwiLCAiNCw2IiwgIiJdLAotLSAgICAgICAgICAg ICAgICAiLCIsCi0tICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAgICAgIFtbIjEi LCAiIl0sIFsiNCIsICI2Il0sIFsiIiwgIiJdXSwKLS0gICAgICAgICAgICAgICAgWzIsIDIsIDFd LAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBbIjEi LCAiNCw2IiwgIjQsNSw2Il0sCi0tICAgICAgICAgICAgICAgICIsIiwKLS0gICAgICAgICAgICAg ICAgMSwKLS0gICAgICAgICAgICAgICAgW1siMSIsICIiXSwgWyI0IiwgIjYiXSwgWyI0IiwgIjUs NiJdXSwKLS0gICAgICAgICAgICAgICAgWzEsIDIsIDJdLAotLSAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBbWyIxLCIsICI0LDYiLCAiNCw1LDYiXSwgWyIx LCIsICI0LDYiLCAiNCw1LDYiXV0sCi0tICAgICAgICAgICAgICAgICIsIiwKLS0gICAgICAgICAg ICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgW1si MSIsICIiLCAiIl0sIFsiNCIsICI2IiwgIiJdLCBbIjQiLCAiNSIsICI2Il1dLAotLSAgICAgICAg ICAgICAgICAgICAgW1siMSIsICIiLCAiIl0sIFsiNCIsICI2IiwgIiJdLCBbIjQiLCAiNSIsICI2 Il1dLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbWzIsIDIsIDNdLCBb MiwgMiwgM11dLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICBbImhlbGxvIHdvcmxkICEiLCAiICBoZWxsbyAgIHdvcmxkICEiLCAiIGhlbGxvIHdvcmxk ICAgISAiXSwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgTm9uZSwK LS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3Js ZCIsICIhIl0sCi0tICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwK LS0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAotLSAgICAgICAg ICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbMywgMywgM10sCi0tICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFsiaGVsbG8gd29ybGQgISIsICIgIGhl bGxvICAgd29ybGQgISIsICIgaGVsbG8gd29ybGQgICAhICJdLAotLSAgICAgICAgICAgICAgICAi IiwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCi0tICAgICAgICAgICAgICAgICAg ICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8i LCAid29ybGQiLCAiISJdLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBb MywgMywgM10sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAg ICAgIFsiby1uLW4tLXgtIiwgIm8tbi0tLS1ueCJdLAotLSAgICAgICAgICAgICAgICAiLSIsCi0t ICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAgICAgIFtbIm8iLCAibiIsICJuIiwg IiIsICJ4IiwgIiJdLCBbIm8iLCAibiIsICIiLCAiIiwgIiIsICJueCJdXSwKLS0gICAgICAgICAg ICAgICAgWzYsIDZdLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAg ICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgIiAiLAotLSAgICAgICAgICAgICAgICAyLAot LSAgICAgICAgICAgICAgICBucC5hcnJheShbXSkucmVzaGFwZSgoMCwgMCkpLAotLSAgICAgICAg ICAgICAgICBbXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRl ZiB0ZXN0X3N0cmluZ19zcGxpdCgKLS0gICAgICAgIHNlbGYsCi0tICAgICAgICB4LAotLSAgICAg ICAgZGVsaW1pdGVyLAotLSAgICAgICAgbWF4c3BsaXQsCi0tICAgICAgICBleHBlY3RlZF9zcGxp dCwKLS0gICAgICAgIGV4cGVjdGVkX251bV9zcGxpdHMsCi0tICAgICk6Ci0tICAgICAgICBYID0g bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLlNUUklORywgKE5vbmUpKQot LSAgICAgICAgU3BsaXRzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiU3BsaXRzIiwgVGVuc29y UHJvdG8uU1RSSU5HLCAoTm9uZSkpCi0tICAgICAgICBNYXhTcGxpdHMgPSBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJNYXhTcGxpdHMiLCBUZW5zb3JQcm90by5JTlQzMiwgKE5vbmUpKQotLSAgICAg ICAgbm9kZSA9IG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAiU3RyaW5nU3BsaXQiLAotLSAgICAg ICAgICAgIGlucHV0cz1bIlgiXSwKLS0gICAgICAgICAgICBvdXRwdXRzPVsiU3BsaXRzIiwgIk1h eFNwbGl0cyJdLAotLSAgICAgICAgICAgIGRlbGltaXRlcj1kZWxpbWl0ZXIsCi0tICAgICAgICAg ICAgbWF4c3BsaXQ9bWF4c3BsaXQsCi0tICAgICAgICApCi0tICAgICAgICBtb2RlbCA9IG1ha2Vf bW9kZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW1hdLCBbU3BsaXRzLCBNYXhTcGxpdHNdKSkK LS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0gICAgICAgIHggPSBu cC5hcnJheSh4LCBkdHlwZT1vYmplY3QpCi0tICAgICAgICByZXN1bHQsIG51bV9zcGxpdHMsICpf ID0gcmVmLnJ1bihOb25lLCB7IlgiOiB4fSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2Fy cmF5X2VxdWFsKHJlc3VsdCwgbnAuYXJyYXkoZXhwZWN0ZWRfc3BsaXQsIGR0eXBlPW9iamVjdCkp Ci0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hcnJheV9lcXVhbCgKLS0gICAgICAgICAgICBu dW1fc3BsaXRzLCBucC5hcnJheShleHBlY3RlZF9udW1fc3BsaXRzLCBkdHlwZT1ucC5pbnQ2NCkK LS0gICAgICAgICkKLS0KLSAgICAgZGVmIHRlc3RfcWxpbmVhcmNvbnZfaW50OChzZWxmKToKLSAg ICAgICAgIG5vZGUgPSBtYWtlX25vZGUoCi0gICAgICAgICAgICAgIlFMaW5lYXJNYXRNdWwiLAot QEAgLTU1NjEsNDQgKzUwMzQsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0 ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgICAgICBucC5hcnJheShbWzQxLCAtMTIsIC05XSwgWzEs IC03NSwgMjBdXSwgZHR5cGU9bnAuaW50OCksIGdvdFswXQotICAgICAgICAgKQotIAotLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAg ICAgICAoCi0tICAgICAgICAgICAgICAgIFsid3d3Lmdvb2dsZS5jb20iLCAid3d3LmZhY2Vib29r LmNvbSIsICJ3d3cuYmJjLmNvLnVrIl0sCi0tICAgICAgICAgICAgICAgIHIid3d3XC5bXHcuLV0r XC5cYmNvbVxiIiwKLS0gICAgICAgICAgICAgICAgW1RydWUsIFRydWUsIEZhbHNlXSwKLS0gICAg ICAgICAgICAgICAgKDMsKSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAg ICAgICAgICAgICAgW1siT25ueCIsICJ0ZW5zb3JmbG93IiwgIk51bXB5Il0sIFsiUHl0b3JjaCIs ICJDeXRob24iLCAibnVtYmEiXV0sCi0tICAgICAgICAgICAgICAgIHIiXltBLVpdW2Etel0qJCIs Ci0tICAgICAgICAgICAgICAgIFtbVHJ1ZSwgRmFsc2UsIFRydWVdLCBbVHJ1ZSwgVHJ1ZSwgRmFs c2VdXSwKLS0gICAgICAgICAgICAgICAgKDIsIDMpLAotLSAgICAgICAgICAgICksCi0tICAgICAg ICAgICAgKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAiYWNjb3Vu dEBnbWFpbC5jb20iLAotLSAgICAgICAgICAgICAgICAgICAgImFjY291bnRAaG90bWFpbC5jb20i LAotLSAgICAgICAgICAgICAgICAgICAgIm5vdCBlbWFpbCIsCi0tICAgICAgICAgICAgICAgICAg ICAiYWNjb3VudDJAeWFob28uY29tIiwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICAgICAgciIoXFd8XilbXHcuXC1dezAsMjV9QCh5YWhvb3xnbWFpbClcLmNvbShcV3wkKSIsCi0t ICAgICAgICAgICAgICAgIFtUcnVlLCBGYWxzZSwgRmFsc2UsIFRydWVdLAotLSAgICAgICAgICAg ICAgICAoNCwpLAotLSAgICAgICAgICAgICksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVm IHRlc3RfcmVnZXhfZnVsbF9tYXRjaChzZWxmLCB4LCBwYXR0ZXJuLCBleHBlY3RlZCwgZXhwZWN0 ZWRfc2hhcGUpOgotLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5z b3JQcm90by5TVFJJTkcsIE5vbmUpCi0tICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygiWSIsIFRlbnNvclByb3RvLkJPT0wsIE5vbmUpCi0tICAgICAgICBub2RlID0gbWFrZV9ub2Rl KCJSZWdleEZ1bGxNYXRjaCIsIGlucHV0cz1bIlgiXSwgb3V0cHV0cz1bIlkiXSwgcGF0dGVybj1w YXR0ZXJuKQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAi ZyIsIFtYXSwgW1ldKSkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkK LS0gICAgICAgIHJlc3VsdCwgKl8gPSByZWYucnVuKE5vbmUsIHsiWCI6IG5wLmFycmF5KHgpfSkK LS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKHJlc3VsdCwgZXhwZWN0ZWQp Ci0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5kdHlwZS5raW5kLCAiYiIpCi0tICAg ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5zaGFwZSwgZXhwZWN0ZWRfc2hhcGUpCi0tCi0g ICAgIGRlZiB0ZXN0X3JlZ2V4X2ludmFsaWRfcGF0dGVybihzZWxmKToKLSAgICAgICAgIFggPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25lKQotICAg ICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5CT09MLCBO b25lKQotQEAgLTU2MDgsMjIwICs1MDQzLDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRv cih1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZh bHVlRXJyb3IpOgotICAgICAgICAgICAgIHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXJyYXkoWyJ4 Il0pfSkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAg ICAgICBbCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5U MiwKLS0gICAgICAgICAgICAgICAgWy0xLCAwLCAxLjUsIDIsIDMuMywgMTAsIDIwLCA0MF0sCi0t ICAgICAgICAgICAgICAgIFswLCAwLCAyLCAyLCA0LCA2LCA2LCA2XSwKLS0gICAgICAgICAgICAp LAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwgWy0xLCAwLCAxLjUsIDIsIDMuMywg MTAsIDQwXSwgWzAsIDAsIDIsIDIsIDQsIDYsIDZdKSwKLS0gICAgICAgICAgICAoVGVuc29yUHJv dG8uVUlOVDIsIFswXSwgWzBdKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFRl bnNvclByb3RvLklOVDIsCi0tICAgICAgICAgICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIs IDMuMywgMTAsIDIwXSwKLS0gICAgICAgICAgICAgICAgWy00LCAtNCwgMCwgMiwgMiwgMiwgMiwg Ml0sCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFRl bnNvclByb3RvLklOVDIsCi0tICAgICAgICAgICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIs IDMuMywgMTBdLAotLSAgICAgICAgICAgICAgICBbLTQsIC00LCAwLCAyLCAyLCAyLCAyXSwKLS0g ICAgICAgICAgICApLAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5JTlQyLCBbMF0sIFswXSks Ci0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfcXVhbnRpemVfbGluZWFyX2ludDIo c2VsZiwgcXR5cGUsIGRhdGEsIGV4cGVjdGVkKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKLS0gICAgICAgIFkgPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKLS0g ICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKLS0gICAgICAgICAgICBtYWtlX2dyYXBoKAotLSAg ICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAg ICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbInNjYWxlIl0sCi0tICAgICAgICAgICAgICAg ICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIFsx XSwgWzIuMF0pLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAg ICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsiemVybyJd LAotLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJ6ZXJvIiwgcXR5 cGUsIFsxXSwgWzBdKSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAg ICAgICBtYWtlX25vZGUoIlF1YW50aXplTGluZWFyIiwgWyJYIiwgInNjYWxlIiwgInplcm8iXSwg WyJUIl0pLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJEZXF1YW50aXplTGluZWFy IiwgWyJUIiwgInNjYWxlIl0sIFsiWSJdLCBheGlzPTApLAotLSAgICAgICAgICAgICAgICBdLAot LSAgICAgICAgICAgICAgICAiZyIsCi0tICAgICAgICAgICAgICAgIFtYXSwKLS0gICAgICAgICAg ICAgICAgW1ldLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICkKLS0gICAgICAgIHJlZiA9IFJl ZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJY IjogbnAuYXNhcnJheShkYXRhKX0pCi0tICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBl eHBlY3RlZCkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0t ICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxP QVQsIFRlbnNvclByb3RvLkZMT0FUMTYpLAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5U MiwgVGVuc29yUHJvdG8uSU5UMiksCi0tICAgICAgICApCi0tICAgICkKLS0gICAgZGVmIHRlc3Rf Y2FzdF9pbnQyX291dHB1dChzZWxmLCBjYXN0X2Zyb20sIGNhc3RfdG8pOgotLSAgICAgICAgWCA9 IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBjYXN0X2Zyb20sIFtOb25lXSkKLS0gICAgICAg IFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgY2FzdF90bywgW05vbmVdKQotLSAgICAg ICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJd LCBbIlkiXSwgdG89Y2FzdF90byksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg ICAgICJnIiwKLS0gICAgICAgICAgICAgICAgW1hdLAotLSAgICAgICAgICAgICAgICBbWV0sCi0t ICAgICAgICAgICAgKQotLSAgICAgICAgKQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVh dG9yKG1vZGVsKQotLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KAotLSAgICAgICAgICAgIFswLCAx LCAyLjQsIDIuNiwgNCwgMTBdLAotLSAgICAgICAgICAgIGR0eXBlPW9ubnguaGVscGVyLnRlbnNv cl9kdHlwZV90b19ucF9kdHlwZShjYXN0X2Zyb20pLAotLSAgICAgICAgKQotLSAgICAgICAgZXhw ZWN0ZWQgPSBkYXRhLmFzdHlwZShvbm54LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUo Y2FzdF90bykpCi0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLSAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3RbMF0udG9saXN0KCksIGV4cGVjdGVkLnRvbGlzdCgp KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAg IGl0ZXJ0b29scy5wcm9kdWN0KAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwgVGVu c29yUHJvdG8uSU5UMiksCi0tICAgICAgICAgICAgKFRlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQ cm90by5GTE9BVDE2KSwKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBkZWYgdGVzdF9jYXN0X2lu dDJfaW5wdXQoCi0tICAgICAgICBzZWxmLCBjYXN0X2Zyb206IFRlbnNvclByb3RvLkRhdGFUeXBl LCBjYXN0X3RvOiBUZW5zb3JQcm90by5EYXRhVHlwZQotLSAgICApOgotLSAgICAgICAgWCA9IG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBjYXN0X2Zyb20sIFtOb25lXSkKLS0gICAgICAgIFkg PSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgY2FzdF90bywgW05vbmVdKQotLSAgICAgICAg bW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBb IlkiXSwgdG89VGVuc29yUHJvdG8uRkxPQVQpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAg ICAgICAgICAgICAiZyIsCi0tICAgICAgICAgICAgICAgIFtYXSwKLS0gICAgICAgICAgICAgICAg W1ldLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5j ZUV2YWx1YXRvcihtb2RlbCkKLS0gICAgICAgIGRhdGEgPSBucC5hcnJheShyYW5nZSgyKSwgZHR5 cGU9bnAuZmxvYXQzMikKLS0gICAgICAgIGV4cGVjdGVkID0gZGF0YS5hc3R5cGUob25ueC5oZWxw ZXIudGVuc29yX2R0eXBlX3RvX25wX2R0eXBlKGNhc3RfZnJvbSkpCi0tICAgICAgICBnb3QgPSBy ZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJy YXlfZXF1YWwoZ290WzBdLCBleHBlY3RlZCkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1l dGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAg ICAgICBUZW5zb3JQcm90by5VSU5UNCwKLS0gICAgICAgICAgICAgICAgWy0xLCAwLCAxLjUsIDIs IDMuMywgMTAsIDIwLCA0MF0sCi0tICAgICAgICAgICAgICAgIFswLCAwLCAyLCAyLCA0LCAxMCwg MjAsIDMwXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5U NCwgWy0xLCAwLCAxLjUsIDIsIDMuMywgMTAsIDQwXSwgWzAsIDAsIDIsIDIsIDQsIDEwLCAzMF0p LAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgWzBdLCBbMF0pLAotLSAgICAgICAg ICAgICgKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNCwKLS0gICAgICAgICAgICAg ICAgWy0yMCwgLTE0LjUsIDAsIDEuNSwgMiwgMy4zLCAxMCwgMjBdLAotLSAgICAgICAgICAgICAg ICBbLTE2LCAtMTQsIDAsIDIsIDIsIDQsIDEwLCAxNF0sCi0tICAgICAgICAgICAgKSwKLS0gICAg ICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDQsCi0tICAgICAgICAg ICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIsIDMuMywgMTBdLAotLSAgICAgICAgICAgICAg ICBbLTE2LCAtMTQsIDAsIDIsIDIsIDQsIDEwXSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAg ICAgIChUZW5zb3JQcm90by5JTlQ0LCBbMF0sIFswXSksCi0tICAgICAgICBdCi0tICAgICkKLS0g ICAgZGVmIHRlc3RfcXVhbnRpemVfbGluZWFyX2ludDQoc2VsZiwgcXR5cGUsIGRhdGEsIGV4cGVj dGVkKToKLS0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJv dG8uRkxPQVQsIFtOb25lXSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZ IiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKLS0gICAgICAgIG1vZGVsID0gbWFrZV9tb2Rl bCgKLS0gICAgICAgICAgICBtYWtlX2dyYXBoKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0 YW50IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBbInNjYWxlIl0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5z b3IoInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIFsxXSwgWzIuMF0pLAotLSAgICAgICAgICAg ICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAg ICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAot LSAgICAgICAgICAgICAgICAgICAgICAgIFsiemVybyJdLAotLSAgICAgICAgICAgICAgICAgICAg ICAgIHZhbHVlPW1ha2VfdGVuc29yKCJ6ZXJvIiwgcXR5cGUsIFsxXSwgWzBdKSwKLS0gICAgICAg ICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlF1YW50aXpl TGluZWFyIiwgWyJYIiwgInNjYWxlIiwgInplcm8iXSwgWyJUIl0pLAotLSAgICAgICAgICAgICAg ICAgICAgbWFrZV9ub2RlKCJEZXF1YW50aXplTGluZWFyIiwgWyJUIiwgInNjYWxlIl0sIFsiWSJd LCBheGlzPTApLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAiZyIsCi0t ICAgICAgICAgICAgICAgIFtYXSwKLS0gICAgICAgICAgICAgICAgW1ldLAotLSAgICAgICAgICAg ICkKLS0gICAgICAgICkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkK LS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXNhcnJheShkYXRhKX0pCi0t ICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBleHBlY3RlZCkKLS0KLS0gICAgQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBpdGVydG9vbHMucHJvZHVj dCgKLS0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FUMTYp LAotLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCi0t ICAgICAgICApCi0tICAgICkKLS0gICAgZGVmIHRlc3RfY2FzdF9pbnQ0X291dHB1dChzZWxmLCBj YXN0X2Zyb20sIGNhc3RfdG8pOgotLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlgiLCBjYXN0X2Zyb20sIFtOb25lXSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJZIiwgY2FzdF90bywgW05vbmVdKQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAot LSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlkiXSwgdG89Y2FzdF90byksCi0t ICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgICJnIiwKLS0gICAgICAgICAgICAg ICAgW1hdLAotLSAgICAgICAgICAgICAgICBbWV0sCi0tICAgICAgICAgICAgKQotLSAgICAgICAg KQotLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQotLSAgICAgICAgZGF0 YSA9IG5wLmFycmF5KAotLSAgICAgICAgICAgIFswLCAxLCAyLjQsIDIuNiwgNCwgMTBdLAotLSAg ICAgICAgICAgIGR0eXBlPW9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShjYXN0 X2Zyb20pLAotLSAgICAgICAgKQotLSAgICAgICAgZXhwZWN0ZWQgPSBkYXRhLmFzdHlwZShvbm54 LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoY2FzdF90bykpCi0tICAgICAgICBnb3Qg PSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChn b3RbMF0udG9saXN0KCksIGV4cGVjdGVkLnRvbGlzdCgpKQotLQotLSAgICBAcGFyYW1ldGVyaXpl ZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAotLSAg ICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCi0tICAgICAg ICAgICAgKFRlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5GTE9BVDE2KSwKLS0gICAgICAg ICkKLS0gICAgKQotLSAgICBkZWYgdGVzdF9jYXN0X2ludDRfaW5wdXQoCi0tICAgICAgICBzZWxm LCBjYXN0X2Zyb206IFRlbnNvclByb3RvLkRhdGFUeXBlLCBjYXN0X3RvOiBUZW5zb3JQcm90by5E YXRhVHlwZQotLSAgICApOgotLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgi LCBjYXN0X2Zyb20sIFtOb25lXSkKLS0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJZIiwgY2FzdF90bywgW05vbmVdKQotLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAg ICAgICAgICAgIG1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlkiXSwgdG89VGVuc29yUHJvdG8uRkxP QVQpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAiZyIsCi0tICAgICAg ICAgICAgICAgIFtYXSwKLS0gICAgICAgICAgICAgICAgW1ldLAotLSAgICAgICAgICAgICkKLS0g ICAgICAgICkKLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0gICAg ICAgIGRhdGEgPSBucC5hcnJheShyYW5nZSg3KSwgZHR5cGU9bnAuZmxvYXQzMikKLS0gICAgICAg IGV4cGVjdGVkID0gZGF0YS5hc3R5cGUob25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3RvX25wX2R0 eXBlKGNhc3RfZnJvbSkpCi0tICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9 KQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwoZ290WzBdLCBleHBlY3Rl ZCkKLS0KLSAgICAgZGVmIHRlc3RfYV9mdW5jdGlvbl9jYWxsaW5nX2FfZnVuY3Rpb25fb25jZShz ZWxmKToKLSAgICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJv dG8uRkxPQVQsIFsiTiJdKQotICAgICAgICAgb3V0cHV0ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIFsiTiJdKQotQEAgLTYwNTQsOTQgKzUyNzUs NiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg ICAgICAgIGZvciB2IGluIG9pbmYuZnVuY3Rpb25zXy52YWx1ZXMoKToKLSAgICAgICAgICAgICBz ZWxmLmFzc2VydElzSW5zdGFuY2UodiwgTXlSZWZlcmVuY2VFdmFsdWF0b3IpCi0gCi0tICAgIEBw YXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAg ICAgICgiRkxPQVQ4RTRNM0ZOIiwgMC4yMyksCi0tICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk5V WiIsIDAuMjMpLAotLSAgICAgICAgICAgICgiRkxPQVQ4RTVNMiIsIDAuODUpLAotLSAgICAgICAg ICAgICgiRkxPQVQ4RTVNMkZOVVoiLCAwLjg1KSwKLS0gICAgICAgICAgICAoIkRPVUJMRSIsIDAp LAotLSAgICAgICAgICAgICgiRkxPQVQiLCAwKSwKLS0gICAgICAgICAgICAoIkZMT0FUMTYiLCAy ZS0zKSwKLS0gICAgICAgICAgICAoIkJGTE9BVDE2IiwgMmUtMiksCi0tICAgICAgICBdCi0tICAg ICkKLS0gICAgZGVmIHRlc3RfYWRkX2N1c3RvbV9kdHlwZShzZWxmLCBzdHlwZTogc3RyLCBhdG9s OiBmbG9hdCk6Ci0tICAgICAgICBpdHlwZSA9IGdldGF0dHIoVGVuc29yUHJvdG8sIHN0eXBlKQot LSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAotLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi0t ICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIs IFsiWCJdLCBbIlhjIl0sIHRvPWl0eXBlKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9k ZSgiQ2FzdCIsIFsiWSJdLCBbIlljIl0sIHRvPWl0eXBlKSwKLS0gICAgICAgICAgICAgICAgICAg IG1ha2Vfbm9kZSgiQWRkIiwgWyJYYyIsICJZYyJdLCBbIlpjIl0pLAotLSAgICAgICAgICAgICAg ICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJaYyJdLCBbIloiXSwgdG89VGVuc29yUHJvdG8uRkxP QVQpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAibmQiLAotLSAgICAg ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSksCi0tICAgICAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQs IFtOb25lLCBOb25lLCBOb25lXSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg ICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJaIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25l LCBOb25lLCBOb25lXSldLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1bbWFrZV9vcHNldGlkKCIiLCAxOCldLAotLSAgICAgICAgICAgIGlyX3ZlcnNpb249OSwK LS0gICAgICAgICkKLS0KLS0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCwg dmVyYm9zZT0wKQotLQotLSAgICAgICAgeCA9IChucC5hcmFuZ2UoMTgpIC8gNikucmVzaGFwZSgo MiwgMywgMykpLmFzdHlwZShucC5mbG9hdDMyKQotLSAgICAgICAgeSA9IChucC5hcmFuZ2UoMTgp IC8gOSkucmVzaGFwZSgoMiwgMywgMykpLmFzdHlwZShucC5mbG9hdDMyKQotLSAgICAgICAgZmVl ZHMgPSBkaWN0KFg9eCwgWT15KQotLSAgICAgICAgZXhwZWN0ZWQgPSB4ICsgeQotLSAgICAgICAg Z290ID0gcmVmLnJ1bihOb25lLCBmZWVkcylbMF0KLS0gICAgICAgIGFzc2VydF9hbGxjbG9zZShn b3QsIGV4cGVjdGVkLCBhdG9sPWF0b2wpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRl cml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgiRE9VQkxFIiwpLAotLSAg ICAgICAgICAgICgiRkxPQVQiLCksCi0tICAgICAgICAgICAgKCJGTE9BVDE2IiwpLAotLSAgICAg ICAgICAgICgiQkZMT0FUMTYiLCksCi0tICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk4iLCksCi0t ICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk5VWiIsKSwKLS0gICAgICAgICAgICAoIkZMT0FUOEU1 TTIiLCksCi0tICAgICAgICAgICAgKCJGTE9BVDhFNU0yRk5VWiIsKSwKLS0gICAgICAgICAgICAo IklOVDQiLCksCi0tICAgICAgICAgICAgKCJVSU5UNCIsKSwKLS0gICAgICAgICAgICAoIklOVDIi LCksCi0tICAgICAgICAgICAgKCJVSU5UMiIsKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBk ZWYgdGVzdF9jbXBfY3VzdG9tX2R0eXBlKHNlbGYsIHN0eXBlKToKLS0gICAgICAgIGl0eXBlID0g Z2V0YXR0cihUZW5zb3JQcm90bywgc3R5cGUpCi0tICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwo Ci0tICAgICAgICAgICAgbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJYIl0sIFsiWGMiXSwgdG89aXR5cGUpLAot LSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0IiwgWyJZIl0sIFsiWWMiXSwgdG89 aXR5cGUpLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJHcmVhdGVyT3JFcXVhbCIs IFsiWGMiLCAiWWMiXSwgWyJaYyJdKSwKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi Q2FzdCIsIFsiWmMiXSwgWyJaIl0sIHRvPVRlbnNvclByb3RvLkJPT0wpLAotLSAgICAgICAgICAg ICAgICBdLAotLSAgICAgICAgICAgICAgICAibmQiLAotLSAgICAgICAgICAgICAgICBbCi0tICAg ICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8u RkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25l XSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJaIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSldLAot LSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlk KCIiLCAxOCldLAotLSAgICAgICAgICAgIGlyX3ZlcnNpb249OSwKLS0gICAgICAgICkKLS0KLS0g ICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKLS0KLS0gICAgICAgIHggPSAo bnAuYXJhbmdlKDE4KSAvIDE4KS5yZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIp Ci0tICAgICAgICB5ID0gKChucC5hcmFuZ2UoMTgpIC0gOSkgLyAxOCkucmVzaGFwZSgoMiwgMywg MykpLmFzdHlwZShucC5mbG9hdDMyKQotLSAgICAgICAgZmVlZHMgPSBkaWN0KFg9eCwgWT15KQot LSAgICAgICAgZXhwZWN0ZWQgPSB4ID49IHkKLS0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwg ZmVlZHMpWzBdCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChnb3QsIGV4cGVjdGVk KQotLQotICAgICBkZWYgdGVzdF9zY2F0dGVyX2VsZW1lbnRzXzRkKHNlbGYpOgotICAgICAgICAg bW9kZWwgPSBtYWtlX21vZGVsKAotICAgICAgICAgICAgIG1ha2VfZ3JhcGgoCi1kaWZmIC0tZ2l0 IGEvb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5IGIvb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5Ci1p bmRleCBmOGIzZjhhNjUuLjcxMGI2MDJhMyAxMDA2NDQKLS0tLSBhL29ubngvdGVzdC9zY2hlbWFf dGVzdC5weQotKysrIGIvb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5Ci1AQCAtNyw4ICs3LDYgQEAg aW1wb3J0IGNvbnRleHRsaWIKLSBpbXBvcnQgdW5pdHRlc3QKLSBmcm9tIHR5cGluZyBpbXBvcnQg VFlQRV9DSEVDS0lORwotIAotLWltcG9ydCBwYXJhbWV0ZXJpemVkCi0tCi0gaW1wb3J0IG9ubngK LSBmcm9tIG9ubnggaW1wb3J0IGRlZnMKLSAKLUBAIC0yNDcsMzQgKzI0NSw2IEBAIGNsYXNzIFRl c3RGb3JtYWxQYXJhbWV0ZXIodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgKQotIAotIAot LWNsYXNzIFRlc3RUeXBlQ29uc3RyYWludFBhcmFtKHVuaXR0ZXN0LlRlc3RDYXNlKToKLS0gICAg QHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAg ICAgICAgKCJzaW5nbGVfdHlwZSIsICJUIiwgWyJ0ZW5zb3IoZmxvYXQpIl0sICJUZXN0IGRlc2Ny aXB0aW9uIiksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICAiZG91YmxlX3R5cGVz IiwKLS0gICAgICAgICAgICAgICAgIlQiLAotLSAgICAgICAgICAgICAgICBbInRlbnNvcihmbG9h dCkiLCAidGVuc29yKGludDY0KSJdLAotLSAgICAgICAgICAgICAgICAiVGVzdCBkZXNjcmlwdGlv biIsCi0tICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoInR1cGxlIiwgIlQiLCAoInRlbnNv cihmbG9hdCkiLCAidGVuc29yKGludDY0KSIpLCAiVGVzdCBkZXNjcmlwdGlvbiIpLAotLSAgICAg ICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2luaXQoCi0tICAgICAgICBzZWxmLAotLSAgICAg ICAgXzogc3RyLAotLSAgICAgICAgdHlwZV9wYXJhbV9zdHI6IHN0ciwKLS0gICAgICAgIGFsbG93 ZWRfdHlwZXM6IFNlcXVlbmNlW3N0cl0sCi0tICAgICAgICBkZXNjcmlwdGlvbjogc3RyLAotLSAg ICApIC0+IE5vbmU6Ci0tICAgICAgICB0eXBlX2NvbnN0cmFpbnQgPSBkZWZzLk9wU2NoZW1hLlR5 cGVDb25zdHJhaW50UGFyYW0oCi0tICAgICAgICAgICAgdHlwZV9wYXJhbV9zdHIsIGFsbG93ZWRf dHlwZXMsIGRlc2NyaXB0aW9uCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFs KHR5cGVfY29uc3RyYWludC5kZXNjcmlwdGlvbiwgZGVzY3JpcHRpb24pCi0tICAgICAgICBzZWxm LmFzc2VydEVxdWFsKHR5cGVfY29uc3RyYWludC5hbGxvd2VkX3R5cGVfc3RycywgbGlzdChhbGxv d2VkX3R5cGVzKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LnR5 cGVfcGFyYW1fc3RyLCB0eXBlX3BhcmFtX3N0cikKLS0KLS0KLSBjbGFzcyBUZXN0QXR0cmlidXRl KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKLSAgICAgICAg IG5hbWUgPSAidGVzdF9hdHRyIgotQEAgLTI5NywxNjkgKzI2Nyw1IEBAIGNsYXNzIFRlc3RBdHRy aWJ1dGUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYXR0 cjEgZGVzY3JpcHRpb24iLCBhdHRyaWJ1dGUuZGVzY3JpcHRpb24pCi0gCi0gCi0tQHBhcmFtZXRl cml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKLS0gICAgWwotLSAgICAgICAgIyByZWdpc3RlciB0 byBleGlzdCBkb21haW4KLS0gICAgICAgIHsKLS0gICAgICAgICAgICAib3BfdHlwZSI6ICJDdXN0 b21PcCIsCi0tICAgICAgICAgICAgIm9wX3ZlcnNpb24iOiA1LAotLSAgICAgICAgICAgICJvcF9k b21haW4iOiAiIiwKLS0gICAgICAgICAgICAidHJhcF9vcF92ZXJzaW9uIjogWzEsIDIsIDYsIDdd LAotLSAgICAgICAgfSwKLS0gICAgICAgICMgcmVnaXN0ZXIgdG8gbmV3IGRvbWFpbgotLSAgICAg ICAgewotLSAgICAgICAgICAgICJvcF90eXBlIjogIkN1c3RvbU9wIiwKLS0gICAgICAgICAgICAi b3BfdmVyc2lvbiI6IDUsCi0tICAgICAgICAgICAgIm9wX2RvbWFpbiI6ICJ0ZXN0IiwKLS0gICAg ICAgICAgICAidHJhcF9vcF92ZXJzaW9uIjogWzEsIDIsIDYsIDddLAotLSAgICAgICAgfSwKLS0g ICAgXQotLSkKLS1jbGFzcyBUZXN0T3BTY2hlbWFSZWdpc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6 Ci0tICAgIG9wX3R5cGU6IHN0cgotLSAgICBvcF92ZXJzaW9uOiBpbnQKLS0gICAgb3BfZG9tYWlu OiBzdHIKLS0gICAgIyByZWdpc3RlciBzb21lIGZha2Ugc2NoZW1hIHRvIGNoZWNrIGJlaGF2aW9y Ci0tICAgIHRyYXBfb3BfdmVyc2lvbjogbGlzdFtpbnRdCi0tCi0tICAgIGRlZiBzZXRVcChzZWxm KSAtPiBOb25lOgotLSAgICAgICAgIyBFbnN1cmUgdGhlIHNjaGVtYSBpcyB1bnJlZ2lzdGVyZWQK LS0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob25ueC5kZWZzLmhhcyhzZWxmLm9wX3R5cGUsIHNl bGYub3BfZG9tYWluKSkKLS0KLS0gICAgZGVmIHRlYXJEb3duKHNlbGYpIC0+IE5vbmU6Ci0tICAg ICAgICAjIENsZWFuIHVwIHRoZSByZWdpc3RlcmVkIHNjaGVtYQotLSAgICAgICAgZm9yIHZlcnNp b24gaW4gWypzZWxmLnRyYXBfb3BfdmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uXToKLS0gICAgICAg ICAgICB3aXRoIGNvbnRleHRsaWIuc3VwcHJlc3Mob25ueC5kZWZzLlNjaGVtYUVycm9yKToKLS0g ICAgICAgICAgICAgICAgb25ueC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKHNlbGYub3BfdHlwZSwg dmVyc2lvbiwgc2VsZi5vcF9kb21haW4pCi0tCi0tICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX211bHRp X3NjaGVtYShzZWxmKToKLS0gICAgICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFwX29wX3Zl cnNpb24sIHNlbGYub3BfdmVyc2lvbl06Ci0tICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5P cFNjaGVtYSgKLS0gICAgICAgICAgICAgICAgc2VsZi5vcF90eXBlLAotLSAgICAgICAgICAgICAg ICBzZWxmLm9wX2RvbWFpbiwKLS0gICAgICAgICAgICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAg ICApCi0tICAgICAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCi0t ICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9ubnguZGVmcy5oYXMoc2VsZi5vcF90eXBlLCB2 ZXJzaW9uLCBzZWxmLm9wX2RvbWFpbikpCi0tICAgICAgICBmb3IgdmVyc2lvbiBpbiBbKnNlbGYu dHJhcF9vcF92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb25dOgotLSAgICAgICAgICAgICMgQWxzbyBt YWtlIHN1cmUgdGhlIGBvcF9zY2hlbWFgIGlzIGFjY2Vzc2libGUgYWZ0ZXIgcmVnaXN0ZXIKLS0g ICAgICAgICAgICByZWdpc3RlcmVkX29wID0gb25ueC5kZWZzLmdldF9zY2hlbWEoCi0tICAgICAg ICAgICAgICAgIG9wX3NjaGVtYS5uYW1lLCB2ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluCi0tICAg ICAgICAgICAgKQotLSAgICAgICAgICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCi0tICAg ICAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKLS0gICAgICAgICAgICAgICAgc2VsZi5vcF9kb21h aW4sCi0tICAgICAgICAgICAgICAgIHZlcnNpb24sCi0tICAgICAgICAgICAgKQotLSAgICAgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHJlZ2lzdGVyZWRfb3ApLCBzdHIob3Bfc2NoZW1hKSkK LS0KLS0gICAgZGVmIHRlc3RfdXNpbmdfdGhlX3NwZWNpZmllZF92ZXJzaW9uX2luX29ubnhfY2hl Y2soc2VsZik6Ci0tICAgICAgICBpbnB1dCA9IGYiIiIKLS0gICAgICAgICAgICA8Ci0tICAgICAg ICAgICAgICAgIGlyX3ZlcnNpb246IDcsCi0tICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydDog WwotLSAgICAgICAgICAgICAgICAgICAgIntzZWxmLm9wX2RvbWFpbn0iIDoge3NlbGYub3BfdmVy c2lvbn0KLS0gICAgICAgICAgICAgICAgXQotLSAgICAgICAgICAgID4KLS0gICAgICAgICAgICBh Z3JhcGggKGZsb2F0W04sIDEyOF0gWCwgaW50MzIgWSkgPT4gKGZsb2F0W05dIFopCi0tICAgICAg ICAgICAge3sKLS0gICAgICAgICAgICAgICAgWiA9IHtzZWxmLm9wX2RvbWFpbn0ue3NlbGYub3Bf dHlwZX08YXR0cjE9WzEsMl0+KFgsIFkpCi0tICAgICAgICAgICAgfX0KLS0gICAgICAgICAgICIi IgotLSAgICAgICAgbW9kZWwgPSBvbm54LnBhcnNlci5wYXJzZV9tb2RlbChpbnB1dCkKLS0gICAg ICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCi0tICAgICAgICAgICAgc2VsZi5vcF90eXBl LAotLSAgICAgICAgICAgIHNlbGYub3BfZG9tYWluLAotLSAgICAgICAgICAgIHNlbGYub3BfdmVy c2lvbiwKLS0gICAgICAgICAgICBpbnB1dHM9WwotLSAgICAgICAgICAgICAgICBkZWZzLk9wU2No ZW1hLkZvcm1hbFBhcmFtZXRlcigiaW5wdXQxIiwgIlQiKSwKLS0gICAgICAgICAgICAgICAgZGVm cy5PcFNjaGVtYS5Gb3JtYWxQYXJhbWV0ZXIoImlucHV0MiIsICJpbnQzMiIpLAotLSAgICAgICAg ICAgIF0sCi0tICAgICAgICAgICAgb3V0cHV0cz1bCi0tICAgICAgICAgICAgICAgIGRlZnMuT3BT Y2hlbWEuRm9ybWFsUGFyYW1ldGVyKCJvdXRwdXQxIiwgIlQiKSwKLS0gICAgICAgICAgICBdLAot LSAgICAgICAgICAgIHR5cGVfY29uc3RyYWludHM9WygiVCIsIFsidGVuc29yKGZsb2F0KSJdLCAi IildLAotLSAgICAgICAgICAgIGF0dHJpYnV0ZXM9WwotLSAgICAgICAgICAgICAgICBkZWZzLk9w U2NoZW1hLkF0dHJpYnV0ZSgKLS0gICAgICAgICAgICAgICAgICAgICJhdHRyMSIsIGRlZnMuT3BT Y2hlbWEuQXR0clR5cGUuSU5UUywgImF0dHIxIGRlc2NyaXB0aW9uIgotLSAgICAgICAgICAgICAg ICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAgICAgIHdpdGggc2VsZi5hc3Nl cnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcik6Ci0tICAgICAgICAgICAgb25u eC5jaGVja2VyLmNoZWNrX21vZGVsKG1vZGVsLCBjaGVja19jdXN0b21fZG9tYWluPVRydWUpCi0t ICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0gICAgICAgICMg VGhlIGZha2Ugc2NoZW1hIHdpbGwgcmFpc2UgY2hlY2sgZXhjZXB0aW9uIGlmIHNlbGVjdGVkIGlu IGNoZWNrZXIKLS0gICAgICAgIGZvciB2ZXJzaW9uIGluIHNlbGYudHJhcF9vcF92ZXJzaW9uOgot LSAgICAgICAgICAgIG9ubnguZGVmcy5yZWdpc3Rlcl9zY2hlbWEoCi0tICAgICAgICAgICAgICAg IGRlZnMuT3BTY2hlbWEoCi0tICAgICAgICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCi0tICAg ICAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKLS0gICAgICAgICAgICAgICAgICAgIHZl cnNpb24sCi0tICAgICAgICAgICAgICAgICAgICBvdXRwdXRzPVsKLS0gICAgICAgICAgICAgICAg ICAgICAgICBkZWZzLk9wU2NoZW1hLkZvcm1hbFBhcmFtZXRlcigib3V0cHV0MSIsICJpbnQzMiIp LAotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAg ICAgICkKLS0gICAgICAgIG9ubnguY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCwgY2hlY2tfY3Vz dG9tX2RvbWFpbj1UcnVlKQotLQotLSAgICBkZWYgdGVzdF9yZWdpc3Rlcl9zY2hlbWFfcmFpc2Vz X2Vycm9yX3doZW5fcmVnaXN0ZXJpbmdfYV9zY2hlbWFfdHdpY2Uoc2VsZik6Ci0tICAgICAgICBv cF9zY2hlbWEgPSBkZWZzLk9wU2NoZW1hKAotLSAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKLS0g ICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKLS0gICAgICAgICAgICBzZWxmLm9wX3ZlcnNpb24s Ci0tICAgICAgICApCi0tICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVt YSkKLS0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5kZWZzLlNjaGVtYUVycm9y KToKLS0gICAgICAgICAgICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKLS0K LS0gICAgZGVmIHRlc3RfZGVyZWdpc3Rlcl90aGVfc3BlY2lmaWVkX3NjaGVtYShzZWxmKToKLS0g ICAgICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFwX29wX3ZlcnNpb24sIHNlbGYub3BfdmVy c2lvbl06Ci0tICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKLS0gICAgICAg ICAgICAgICAgc2VsZi5vcF90eXBlLAotLSAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwK LS0gICAgICAgICAgICAgICAgdmVyc2lvbiwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAg b25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCi0tICAgICAgICAgICAgc2VsZi5h c3NlcnRUcnVlKG9ubnguZGVmcy5oYXMob3Bfc2NoZW1hLm5hbWUsIHZlcnNpb24sIG9wX3NjaGVt YS5kb21haW4pKQotLSAgICAgICAgb25ueC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVt YS5uYW1lLCBzZWxmLm9wX3ZlcnNpb24sIG9wX3NjaGVtYS5kb21haW4pCi0tICAgICAgICBmb3Ig dmVyc2lvbiBpbiBzZWxmLnRyYXBfb3BfdmVyc2lvbjoKLS0gICAgICAgICAgICBzZWxmLmFzc2Vy dFRydWUob25ueC5kZWZzLmhhcyhvcF9zY2hlbWEubmFtZSwgdmVyc2lvbiwgb3Bfc2NoZW1hLmRv bWFpbikpCi0tICAgICAgICAjIE1heWJlIGhhcyBsZXNzZXIgb3AgdmVyc2lvbiBpbiB0cmFwIGxp c3QKLS0gICAgICAgIGlmIG9ubnguZGVmcy5oYXMob3Bfc2NoZW1hLm5hbWUsIHNlbGYub3BfdmVy c2lvbiwgb3Bfc2NoZW1hLmRvbWFpbik6Ci0tICAgICAgICAgICAgc2NoZW1hID0gb25ueC5kZWZz LmdldF9zY2hlbWEoCi0tICAgICAgICAgICAgICAgIG9wX3NjaGVtYS5uYW1lLCBzZWxmLm9wX3Zl cnNpb24sIG9wX3NjaGVtYS5kb21haW4KLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgc2Vs Zi5hc3NlcnRMZXNzKHNjaGVtYS5zaW5jZV92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb24pCi0tCi0t ICAgIGRlZiB0ZXN0X2RlcmVnaXN0ZXJfc2NoZW1hX3JhaXNlc19lcnJvcl93aGVuX29wc2NoZW1h X2RvZXNfbm90X2V4aXN0KHNlbGYpOgotLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhv bm54LmRlZnMuU2NoZW1hRXJyb3IpOgotLSAgICAgICAgICAgIG9ubnguZGVmcy5kZXJlZ2lzdGVy X3NjaGVtYShzZWxmLm9wX3R5cGUsIHNlbGYub3BfdmVyc2lvbiwgc2VsZi5vcF9kb21haW4pCi0t Ci0tICAgIGRlZiB0ZXN0X2xlZ2FjeV9zY2hlbWFfYWNjZXNzaWJsZV9hZnRlcl9kZXJlZ2lzdGVy KHNlbGYpOgotLSAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKLS0gICAgICAgICAg ICBzZWxmLm9wX3R5cGUsCi0tICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCi0tICAgICAgICAg ICAgc2VsZi5vcF92ZXJzaW9uLAotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5kZWZzLnJlZ2lz dGVyX3NjaGVtYShvcF9zY2hlbWEpCi0tICAgICAgICBzY2hlbWFfYSA9IG9ubnguZGVmcy5nZXRf c2NoZW1hKAotLSAgICAgICAgICAgIG9wX3NjaGVtYS5uYW1lLCBvcF9zY2hlbWEuc2luY2VfdmVy c2lvbiwgb3Bfc2NoZW1hLmRvbWFpbgotLSAgICAgICAgKQotLSAgICAgICAgc2NoZW1hX2IgPSBv bm54LmRlZnMuZ2V0X3NjaGVtYShvcF9zY2hlbWEubmFtZSwgb3Bfc2NoZW1hLmRvbWFpbikKLS0K LS0gICAgICAgIGRlZiBmaWx0ZXJfc2NoZW1hKHNjaGVtYXMpOgotLSAgICAgICAgICAgIHJldHVy biBbb3AgZm9yIG9wIGluIHNjaGVtYXMgaWYgb3AubmFtZSA9PSBvcF9zY2hlbWEubmFtZV0KLS0K LS0gICAgICAgIHNjaGVtYV9jID0gZmlsdGVyX3NjaGVtYShvbm54LmRlZnMuZ2V0X2FsbF9zY2hl bWFzKCkpCi0tICAgICAgICBzY2hlbWFfZCA9IGZpbHRlcl9zY2hlbWEob25ueC5kZWZzLmdldF9h bGxfc2NoZW1hc193aXRoX2hpc3RvcnkoKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVu KHNjaGVtYV9jKSwgMSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNjaGVtYV9kKSwg MSkKLS0gICAgICAgICMgQXZvaWQgbWVtb3J5IHJlc2lkdWUgYW5kIGFjY2VzcyBzdG9yYWdlIGFz IG11Y2ggYXMgcG9zc2libGUKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9h KSwgc3RyKG9wX3NjaGVtYSkpCi0tICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzY2hlbWFf YiksIHN0cihvcF9zY2hlbWEpKQotLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1h X2NbMF0pLCBzdHIob3Bfc2NoZW1hKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNj aGVtYV9kWzBdKSwgc3RyKG9wX3NjaGVtYSkpCi0tCi0tCi0gaWYgX19uYW1lX18gPT0gIl9fbWFp bl9fIjoKLSAgICAgdW5pdHRlc3QubWFpbigpCi1kaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3NoYXBl X2luZmVyZW5jZV90ZXN0LnB5IGIvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5Ci1p bmRleCBlZTIyYzhmZmIuLjg0OWFlMDQyYSAxMDA2NDQKLS0tLSBhL29ubngvdGVzdC9zaGFwZV9p bmZlcmVuY2VfdGVzdC5weQotKysrIGIvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5 Ci1AQCAtMTIsNyArMTIsNiBAQCBmcm9tIHR5cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORywgQW55 Ci0gaW1wb3J0IG51bXB5IGFzIG5wCi0gaW1wb3J0IHB5dGVzdAotIGZyb20gZ29vZ2xlLnByb3Rv YnVmIGltcG9ydCB0ZXh0X2Zvcm1hdAotLWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1l dGVyaXplZAotIAotIGltcG9ydCBvbm54LnNoYXBlX2luZmVyZW5jZQotIGZyb20gb25ueCBpbXBv cnQgKAotQEAgLTI0NCw4NiArMjQzLDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RT aGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzMCwgNCwgNSkpXQotICAgICAgICAg KQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNw b3NlIikpCi0tICAgIGRlZiB0ZXN0X3RyYW5zcG9zZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25l OgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIlgi LCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9k ZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAotLSAgICAgICAg ICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAg ICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZ IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAyLCA0KSldLAotLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAg ICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRy YW5zcG9zZSIpKQotLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfcHJlZXhpc3Rpbmcoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0g ICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAg ICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwg Ml0pXSwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclBy b3RvLkZMT0FULCBOb25lKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIsIDQpKV0sCi0tICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiVHJhbnNwb3NlIikpCi0tICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9zY2FsYXIoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKLS0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCi0tICAgICAg ICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdKV0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICApCi0tCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0t ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAp Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bv c2UiKSkKLS0gICAgZGVmIHRlc3RfdHJhbnNwb3NlX3BhcnRpYWwoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAg ICBbKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAotLSAgICAgICAgICAgIFtt YWtlX25vZGUoIlRyYW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKLS0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlVOREVG SU5FRCwgKDMsICJhIiwgImIiKSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAyLCA0KSldLAotLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQotLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfcHJlZXhp c3RpbmdfaW5jb3JyZWN0X3NoYXBlKHNlbGYsICpfKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9B VCwgKDIsIDMsIDQpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJY Il0sIFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsICg1LCA1LCA1KSldLAotLSAgICAgICAg KQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJl bmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQotLSAgICBkZWYgdGVzdF90cmFu c3Bvc2VfcHJlZXhpc3RpbmdfaW5jb3JyZWN0X3R5cGUoc2VsZiwgKl8pIC0+IE5vbmU6Ci0tICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygiWCIsIFRlbnNv clByb3RvLkZMT0FULCAoMiwgMywgNCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFu c3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDJdKV0sCi0tICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgzLCAyLCA0KSld LAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZl cmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQotLSAgICBk ZWYgdGVzdF90cmFuc3Bvc2VfaW5jb3JyZWN0X3JlcGVhdGVkX3Blcm0oc2VsZiwgKl8pIC0+IE5v bmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygi WCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9u b2RlKCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0sIHBlcm09WzEsIDAsIDFdKV0sCi0tICAgICAg ICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNo YXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQotLQot ICAgICBkZWYgX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24oCi0gICAgICAgICBzZWxm LCB2ZXJzaW9uLCBzaGFwZTE6IFNlcXVlbmNlW2ludF0sIHNoYXBlMjogU2VxdWVuY2VbaW50XQot ICAgICApIC0+IE5vbmU6Ci1AQCAtMzQyLDIxICsyNjEsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZl cmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0gICAgICAg ICApCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJNYXRN dWwiKSkKLS0gICAgZGVmIHRlc3RfbWF0bXVsX2FsbF9kaW1zX2tub3duKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tu b3duKHZlcnNpb24sICgyLCksICgyLCkpCi0tCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90 ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg0LCAyKSwgKDIsIDQpKQotLSAgICAgICAgc2Vs Zi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMiksICgyLCA0 KSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lv biwgKDUsIDIpLCAoMiwgMSkpCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9k aW1zX2tub3duKHZlcnNpb24sICgxLCAyKSwgKDIsIDMpKQotLSAgICAgICAgc2VsZi5fbWFrZV9t YXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoMiwpLCAoMiwgMykpCi0tICAgICAg ICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg0LCAyKSwg KDIsKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVy c2lvbiwgKDEsIDQsIDIpLCAoMywgMiwgMykpCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90 ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgzLCA0LCAyKSwgKDMsIDIsIDMpKQotLSAgICAg ICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMSwg NCwgMiksICgxLCAzLCAyLCAzKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxs X2RpbXNfa25vd24odmVyc2lvbiwgKDQsIDIpLCAoMywgMiwgMykpCi0tCi0gICAgIGRlZiBfbWFr ZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKAotICAgICAgICAgc2VsZiwgdmVyc2lvbiwgc2hh cGUxOiBBbnksIHNoYXBlMjogQW55LCBleHBlY3RlZF9vdXRfc2hhcGU6IEFueQotICAgICApIC0+ IE5vbmU6Ci1AQCAtMzY3LDEzMTggKzI3MSwzOSBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2Uo VGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLSAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCBleHBlY3RlZF9vdXRfc2hh cGUpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJNYXRNdWwiKSkKLS0gICAgZGVmIHRlc3RfbWF0bXVs X2FsbG93X3Vua25vd24oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYu X21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoTm9uZSwpLCAoTm9uZSwp LCAoKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJz aW9uLCAoMywpLCAoTm9uZSwpLCAoKSkKLS0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3Rf YWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoMiwpLCAoMiwgImEiKSwgKCJhIiwpKQotLSAgICAgICAg c2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCAyKSwgKDIs ICJhIiksICg0LCAiYSIpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191 bmtub3duKHZlcnNpb24sICg0LCBOb25lKSwgKDIsICJhIiksICg0LCAiYSIpKQotLSAgICAgICAg c2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCBOb25lKSwg KE5vbmUsICJhIiksICg0LCAiYSIpKQotLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9h bGxvd191bmtub3duKAotLSAgICAgICAgICAgIHZlcnNpb24sICgxLCA0LCAyKSwgKCJhIiwgMiwg NSksICgiYSIsIDQsIDUpCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90 ZXN0X2FsbG93X3Vua25vd24oCi0tICAgICAgICAgICAgdmVyc2lvbiwgKDEsIDMsIDQsIDIpLCAo ImEiLCAyLCA1KSwgKDEsIDMsIDQsIDUpCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9tYWtl X21hdG11bF90ZXN0X2FsbG93X3Vua25vd24odmVyc2lvbiwgKDMsKSwgTm9uZSwgTm9uZSkKLS0g ICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCBOb25l LCBOb25lLCBOb25lKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiQ2FzdCIpKQotLSAgICBkZWYgdGVzdF9jYXN0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKLS0gICAgICAgICAgICBbbWFrZV9u b2RlKCJDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5VSU5UOCldLAotLSAgICAg ICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0g ICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3Io IkNhc3QiKSkKLS0gICAgQHVuaXR0ZXN0LnNraXAoCi0tICAgICAgICAiSXNzdWUgIzU5NjAiCi0t ICAgICkgICMgRklYTUUoIzU5NjApIHByb3BhZ2F0ZUVsZW1UeXBlRnJvbUF0dHJpYnV0ZVRvT3V0 cHV0IGRvZXMgbm90IHZhbGlkYXRlIGFnYWluc3Qgb3V0cHV0IHR5cGUgY29uc3RyYWludHMKLS0g ICAgZGVmIHRlc3RfY2FzdF90b19jb21wbGV4KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6ICAj IG5vcWE6IEFSRzAwMgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAg ICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAg ICAgW21ha2Vfbm9kZSgiQ2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8uQ09NUExF WDEyOCldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2VsZi5h c3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2lu ZmVycmVkLCBncmFwaCkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIkNhc3RMaWtlIikpCi0tICAgIGRlZiB0ZXN0X2Nhc3RfbGlrZShzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAg ICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDQsIDMpKSwgKCJ0IiwgVGVuc29y UHJvdG8uRkxPQVQxNiwgKCJOIiwpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ2FzdExp a2UiLCBbIngiLCAidCJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQx NiwgKDIsIDQsIDMpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQotLSAgICBkZWYg dGVzdF9iaXRjYXN0X3NhbWVfc2l6ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAg ICAgIyBUZXN0IGJpdGNhc3QgYmV0d2VlbiB0eXBlcyBvZiBzYW1lIHNpemUgKGZsb2F0MzIgLT4g aW50MzIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAg WygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKLS0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJCaXRDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5JTlQzMildLAot LSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIkJpdENhc3QiKSkKLS0gICAgZGVmIHRlc3RfYml0Y2FzdF9zY2FsYXIoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgICMgVGVzdCBiaXRjYXN0IHdpdGggc2NhbGFyIGlu cHV0IChzYW1lIHNpemUpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAg ICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAotLSAgICAgICAgICAgIFtt YWtlX25vZGUoIkJpdENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLklOVDMyKV0s Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKCkpXSwKLS0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0t ICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJCaXRDYXN0IikpCi0tICAgIGRlZiB0ZXN0X2JpdGNhc3RfMWQoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKLS0gICAgICAgICMgVGVzdCBiaXRjYXN0IHdpdGggMUQgdGVuc29yIChmbG9hdDMy IC0+IHVpbnQzMiwgc2FtZSBzaXplKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSldLAotLSAgICAg ICAgICAgIFttYWtlX25vZGUoIkJpdENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3Rv LlVJTlQzMildLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDMyLCAoOCwpKV0sCi0tICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQotLSAgICBkZWYgdGVzdF9iaXRjYXN0X2RvdWJsZV90 b19pbnQ2NChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgIyBUZXN0IGJpdGNh c3QgYmV0d2VlbiA2NC1iaXQgdHlwZXMgKGRvdWJsZSAtPiBpbnQ2NCkKLS0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRE9V QkxFLCAoMywgNSkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJCaXRDYXN0IiwgWyJ4Il0s IFsieSJdLCB0bz1UZW5zb3JQcm90by5JTlQ2NCldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u SU5UNjQsICgzLCA1KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkJpdENhc3QiKSkKLS0gICAgZGVm IHRlc3RfYml0Y2FzdF9pbnQ4X3RvX3VpbnQ4KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0t ICAgICAgICAjIFRlc3QgYml0Y2FzdCBiZXR3ZWVuIDgtYml0IHR5cGVzIChpbnQ4IC0+IHVpbnQ4 KQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5JTlQ4LCAoNCwgNikpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJC aXRDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5VSU5UOCldLAotLSAgICAgICAg ICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAg ICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uVUlOVDgsICg0LCA2KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkJpdENh c3QiKSkKLS0gICAgZGVmIHRlc3RfYml0Y2FzdF9mbG9hdDE2X3RvX2ludDE2KHNlbGYsIF8sIHZl cnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICAjIFRlc3QgYml0Y2FzdCBiZXR3ZWVuIDE2LWJpdCB0 eXBlcyAoZmxvYXQxNiAtPiBpbnQxNikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQxNiwgKDIsIDMpKV0sCi0t ICAgICAgICAgICAgW21ha2Vfbm9kZSgiQml0Q2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29y UHJvdG8uSU5UMTYpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDE2LCAoMiwgMykpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJDb2wySW0iKSkKLS0gICAgZGVmIHRlc3RfY29sMmltKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJvdG8u RkxPQVQsICgxLCA1LCA1KSksCi0tICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkNv bDJJbSIsIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLCBbIm91dHB1 dCJdCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtd LAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5z b3IoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNSwgNSkpLAotLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCksICgxLCA1KSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgx LCAxLCA1LCA1KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQotLSAgICBkZWYgdGVz dF9jb2wyaW1fc3RyaWRlcyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg KCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgOSwgNCkpLAotLSAgICAgICAgICAgICAg ICAoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAg ICAgICAgKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0g ICAgICAgICAgICAgICAgICAgICJDb2wySW0iLAotLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1 dCIsICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAg ICBbIm91dHB1dCJdLAotLSAgICAgICAgICAgICAgICAgICAgc3RyaWRlcz1bMiwgMl0sCi0tICAg ICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1 dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNSwgNSkpLAotLSAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCks ICgzLCAzKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxLCA1LCA1 KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05O WF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQotLSAgICBkZWYgdGVzdF9jb2wyaW1f cGFkcyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRl bnNvclByb3RvLkZMT0FULCAoMSwgNSwgMTUpKSwKLS0gICAgICAgICAgICAgICAgKCJvdXRwdXRf c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgICAgICgia2Vy bmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAg ICAgICAgICAiQ29sMkltIiwKLS0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAib3V0cHV0 X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQi XSwKLS0gICAgICAgICAgICAgICAgICAgIHBhZHM9WzAsIDEsIDAsIDFdLAotLSAgICAgICAgICAg ICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBp bml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDUsIDUpKSwKLS0gICAgICAgICAgICAgICAgbWFr ZV90ZW5zb3IoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMSwgNSkp LAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMSwgNSwgNSkpXSwKLS0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlO LCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChh bGxfdmVyc2lvbnNfZm9yKCJDb2wySW0iKSkKLS0gICAgZGVmIHRlc3RfY29sMmltX2RpbGF0aW9u cyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNv clByb3RvLkZMT0FULCAoMSwgNCwgNSkpLAotLSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKLS0gICAgICAgICAgICAgICAgKCJrZXJuZWxf c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAg ICAgICJDb2wySW0iLAotLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIsICJvdXRwdXRfc2hh cGUiLCAia2VybmVsX3NoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAot LSAgICAgICAgICAgICAgICAgICAgZGlsYXRpb25zPVsxLCA1XSwKLS0gICAgICAgICAgICAgICAg KQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlh bGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3NoYXBlIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCksICg2LCA2KSksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDIsIDIpKSwKLS0g ICAgICAgICAgICBdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDEsIDYsIDYpKV0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiQ29sMkltIikpCi0tICAgIGRlZiB0ZXN0X2NvbDJpbV81ZChzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMSwgMTAsIDEyKSksCi0tICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29y UHJvdG8uSU5UNjQsICgzLCkpLAotLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMywpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFsK LS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJ bSIsIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLCBbIm91dHB1dCJd Ci0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAot LSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Io Im91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpLCAoMywgNCwgNSkpLAotLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5U NjQsICgzLCksICgxLCAxLCA1KSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgxLCAyLCAzLCA0LCA1KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIpKQotLSAgICBk ZWYgdGVzdF9jb25jYXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxP QVQsICgyLCA0LCAzKSksICgieSIsIFRlbnNvclByb3RvLkZMT0FULCAoNywgNCwgMykpXSwKLS0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngiLCAieSJdLCBbInoiXSwgYXhpcz0w KV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInoiLCBUZW5zb3JQcm90by5GTE9BVCwgKDksIDQsIDMpKV0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiQ29uY2F0IikpCi0tICAgIGRlZiB0ZXN0X2NvbmNhdF9taXNzaW5nX3NoYXBl KHNlbGYsICpfKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAot LSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgyLCA0LCAzKSksCi0tICAgICAgICAgICAgICAgICJ5IiwKLS0gICAgICAgICAgICAgICAgKCJ6 IiwgVGVuc29yUHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lKSksCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDb25jYXQiLCBbIngiLCAieSIsICJ6Il0sIFsi b3V0Il0sIGF4aXM9MCldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNl bGYuX2luZmVycmVkLCBncmFwaCkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIkNvbmNhdCIpKQotLSAgICBkZWYgdGVzdF9jb25jYXRfM2RfYXhpc18yKHNl bGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMiwgMikpLCAo InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDIsIDIpKV0sCi0tICAgICAgICAgICAgW21ha2Vf bm9kZSgiQ29uY2F0IiwgWyJ4IiwgInkiXSwgWyJ6Il0sIGF4aXM9MildLAotLSAgICAgICAgICAg IFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAg ICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgyLCAyLCA0KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNh dCIpKQotLSAgICBkZWYgdGVzdF9jb25jYXRfcGFyYW0oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4 IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiYSIsIDIpKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgiYSIsIDMpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4IiwgInki XSwgWyJ6Il0sIGF4aXM9MSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAg ICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiYSIs IDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0IikpCi0tICAgIGRlZiB0ZXN0X2NvbmNh dF9wYXJhbV9zaW5nbGVfaW5wdXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJv dG8uRkxPQVQsICgiYSIsIDIpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0Iiwg WyJ4Il0sIFsieiJdLCBheGlzPTApXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAo ImEiLCAyKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKLS0gICAgZGVmIHRlc3Rf cmVzaGFwZV9keW5hbWljX3NoYXBlX2tub3duX3Jhbmsoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNCwgIlJhbmsgaW5mZXJlbmNlIGlz IGFkZGVkIGZyb20gVmVyc2lvbiAxNCIpCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAo InNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9u b2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5VSU5UOCwgKE5vbmUsIE5vbmUpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAg KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFw ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNoYXBlX2R5bmFtaWNfc2hhcGVfc3ltYm9saWMoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJNIiwpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9k ZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAot LSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAg IGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uVUlOVDgsIE5vbmUpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCi0tICAg IGRlZiB0ZXN0X3Jlc2hhcGVfZHluYW1pY191bmtub3duX3NoYXBlKHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29y UHJvdG8uSU5UNjQsIE5vbmUpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwg WyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0t ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwg Tm9uZSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQo T05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKLS0gICAgZGVmIHRlc3RfcmVz aGFwZV9zdGF0aWNfc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u VUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAot LSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0p XSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5z b3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgzLCA4KSldLAotLSAgICAgICAg KQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAot LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlO VDgsICgzLCA4KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKLS0gICAgZGVmIHRl c3RfcmVzaGFwZV9zdGF0aWNfc2hhcGVfaW5mZXJyZWQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4 IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDMsKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAi c2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFs aXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgwLCAz LCAtMSkpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0g ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgMywgNCkpXSwKLS0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAg ICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJS ZXNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlX3plcm8oc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgxLCAxLCAxKSksICgic2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUo IlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0g ICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgzLCksICgwLCAxLCAxKSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgxLCAxLCAxKSldLAotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNf c2hhcGVfYWxsb3d6ZXJvKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxm LnNraXBJZih2ZXJzaW9uIDwgMTQsICJhbGxvd3plcm8gaXMgYWRkZWQgZnJvbSBWZXJzaW9uIDE0 IikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMSwgMCwgMCkpLAotLSAg ICAgICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpLAotLSAgICAg ICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFw ZSJdLCBbInkiXSwgYWxsb3d6ZXJvPTEpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAg ICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgz LCksICgwLCAxLCAxKSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgwLCAxLCAxKSldLAotLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlJlc2hhcGUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hhcGVfY29u c3RhbnQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0 LCAzKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAg ICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgIFtdLAot LSAgICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAotLSAgICAgICAgICAgICAgICAgICAgdmFs dWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgzLCA4KSks Ci0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiUmVzaGFw ZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAg ICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgs ICgzLCA4KSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0t Ci0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJVcHNhbXBsZSIp KQotLSAgICBkZWYgdGVzdF91cHNhbXBsZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAg ICAgICAgaWYgdmVyc2lvbiA9PSA3OgotLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwg MywgNSkpXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiXSwg WyJ5Il0sIHNjYWxlcz1bMS4wLCAxLjEsIDEuMywgMS45XSldLAotLSAgICAgICAgICAgICAgICBb XSwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCi0tICAgICAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAg ICAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKLS0g ICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUi LCBbIngiLCAic2NhbGVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgICAgIFtdLAotLSAgICAg ICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cigic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCksICgxLjAsIDEuMSwgMS4zLCAxLjkp KQotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkKLS0KLS0gICAgICAgICAgICBk ZWYgY2FsbF9pbmZlcmVuY2UoKToKLS0gICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAotLSAgICAgICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywg OSkpXSwKLS0gICAgICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICAgICAgICAgKQotLQotLSAg ICAgICAgICAgIGlmIHZlcnNpb24gPT0gOToKLS0gICAgICAgICAgICAgICAgY2FsbF9pbmZlcmVu Y2UoKQotLSAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgICMgVXBzYW1wbGUgaXMg ZGVwcmVjYXRlZCBzaW5jZSBWZXJzaW9uIDEwLgotLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYu YXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgotLSAgICAg ICAgICAgICAgICAgICAgY2FsbF9pbmZlcmVuY2UoKQotLSAgICAgICAgICAgICAgICBleGNlcHRp b24gPSBjbS5leGNlcHRpb24KLS0gICAgICAgICAgICAgICAgYXNzZXJ0ICJVcHNhbXBsZSBpcyBk ZXByZWNhdGVkIiBpbiBzdHIoZXhjZXB0aW9uKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiVXBzYW1wbGUiKSkKLS0gICAgZGVmIHRlc3RfdXBzYW1wbGVf cmF3X2RhdGEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGlmIHZlcnNpb24g PT0gNzoKLS0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAg ICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDEsIDMsIDQsIDUpKV0sCi0tICAgICAg ICAgICAgICAgIFttYWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4Il0sIFsieSJdLCBzY2FsZXM9WzIu MCwgMS4xLCAyLjMsIDEuOV0pXSwKLS0gICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAg KQotLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICAgICAg Z3JhcGgsCi0tICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCAzLCA5LCA5KSldLAotLSAgICAgICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAg ICAgICAgICAgKQotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgICgieCIs IFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAotLSAgICAgICAgICAgICAgICAgICAg KCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAgICAgIF0s Ci0tICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4IiwgInNjYWxlcyJd LCBbInkiXSldLAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgaW5pdGlh bGl6ZXI9WwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAg ICAgICAgICAgICAgInNjYWxlcyIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJv dG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgKDQsKSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICB2YWxzPW5wLmFycmF5KFsxLjAsIDEuMSwgMS4zLCAxLjldLCBkdHlwZT0iPGY0 IikudG9ieXRlcygpLAotLSAgICAgICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAotLSAgICAg ICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkgICMg RmVlZCByYXcgYnl0ZXMgKGZvcmNlIGxpdHRsZSBlbmRpYW4gb3JkZXJpbmcgbGlrZSBvbm54IHN0 YW5kYXJkKSBmb3IgdGVzdCBwdXJwb3NlCi0tCi0tICAgICAgICAgICAgZGVmIGNhbGxfaW5mZXJl bmNlKCk6Ci0tICAgICAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAg ICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCi0tICAgICAg ICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAgICAgICAgICkKLS0KLS0gICAgICAgICAgICBpZiB2 ZXJzaW9uID09IDk6Ci0tICAgICAgICAgICAgICAgIGNhbGxfaW5mZXJlbmNlKCkKLS0gICAgICAg ICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICAjIFVwc2FtcGxlIGlzIGRlcHJlY2F0ZWQgc2lu Y2UgVmVyc2lvbiAxMC4KLS0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhv bm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBjbToKLS0gICAgICAgICAgICAgICAgICAg IGNhbGxfaW5mZXJlbmNlKCkKLS0gICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0 aW9uCi0tICAgICAgICAgICAgICAgIGFzc2VydCAiVXBzYW1wbGUgaXMgZGVwcmVjYXRlZCIgaW4g c3RyKGV4Y2VwdGlvbikKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIkV4cGFuZCIpKQotLSAgICBkZWYgdGVzdF9leHBhbmQoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAg ICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgzLCAxKSksICgic2hhcGUiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKDMsKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIs ICJzaGFwZSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRp YWxpemVyPVttYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDIs IDEsIDYpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0t ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDMsIDYpKV0sCi0tICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAg ICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi RXhwYW5kIikpCi0tICAgIGRlZiB0ZXN0X2V4cGFuZF9zY2FsYXJfaW5wdXQoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgpKSwgKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoMiwpKV0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4 IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5p dGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAo NCwgOCkpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0g ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLklOVDMyLCAoNCwgOCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAg ICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBh bmQiKSkKLS0gICAgZGVmIHRlc3RfZXhwYW5kX3Jhd19kYXRhKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAg WygieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgMSkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgyLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAi c2hhcGUiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFs aXplcj1bCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAg ICAgInNoYXBlIiwKLS0gICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDY0LAotLSAg ICAgICAgICAgICAgICAgICAgKDIsKSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJy YXkoWzMsIDRdLCBkdHlwZT0iPGk4IikudG9ieXRlcygpLAotLSAgICAgICAgICAgICAgICAgICAg cmF3PVRydWUsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAg KSAgIyBGZWVkIHJhdyBieXRlcyAoZm9yY2UgbGl0dGxlIGVuZGlhbiBvcmRlcmluZyBsaWtlIG9u bnggc3RhbmRhcmQpIGZvciB0ZXN0IHB1cnBvc2UKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNCkpXSwKLS0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s Ci0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJFeHBhbmQiKSkKLS0gICAgZGVmIHRlc3RfZXhwYW5kX2R5bmFtaWNfc2hhcGUoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMy LCAoMSwgMiwgTm9uZSkpLAotLSAgICAgICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgzLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgi RXhwYW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgaW5pdGlhbGl6ZXI9W10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKE5vbmUsIDIsIE5vbmUpKV0s Ci0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCi0tICAgIGRlZiB0ZXN0X2V4cGFuZF9zeW1i b2xpY19zaGFwZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uSU5UMzIsICgxLCAyLCBOb25lKSksCi0tICAgICAgICAgICAgICAgICgic2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJ1bmtfXzAiLCkpLAotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0s Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W10sCi0tICAgICAg ICApCi0tICAgICAgICAjIGlmIGdpdmluZyBhIHN5bWJvbGljIHNoYXBlLCBFeHBhbmQgc2hvdWxk IG5vdCBpbmZlciBhbnkgc2hhcGUgb3IgcmFuayBpbmZlcmVuY2UKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCBOb25lKV0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVy c2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3Zl cnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBpZiB2ZXJzaW9uID09IDEwOgotLSAgICAgICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0t ICAgICAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwK LS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXpl IiwgWyJ4IiwgInNjYWxlcyJdLCBbInkiXSldLAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAg ICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5z b3IoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpLCAoMS4wLCAxLjEsIDEuMywgMS45 KSkKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIs IDQsIDMsIDkpKV0sCi0tICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICAgICApCi0tICAgICAg ICBlbGlmIHZlcnNpb24gPT0gMTE6Ci0tICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAotLSAgICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5z b3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicm9p IiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJzY2Fs ZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAgICAgICAgICAoInNp emVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCkpLAotLSAgICAgICAgICAgICAgICBdLAotLSAg ICAgICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyIs ICJzaXplcyJdLCBbInkiXSldLAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNpemVz IiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCksICgzLCA1LCA2LCA3KSkKLS0gICAgICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAotLSAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDUsIDYsIDcpKV0sCi0tICAg ICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICBlbHNlOgotLSAgICAgICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0t ICAgICAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKLS0g ICAgICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSksCi0t ICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIs IFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgICAgIFtd LAotLSAgICAgICAgICAgICAgICBpbml0aWFsaXplcj1bCi0tICAgICAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSwgKDMsIDUsIDYsIDcp KQotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMywg NSwgNiwgNykpXSwKLS0gICAgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgICAgICkKLS0KLS0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJNU05vcm1hbGl6YXRpb24i KSkKLS0gICAgZGVmIHRlc3Rfcm1zX25vcm1hbGl6YXRpb24oc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoIk4iLCAiQyIsICJI IiwgIlciKSksCi0tICAgICAgICAgICAgICAgICgic2NhbGUiLCBUZW5zb3JQcm90by5GTE9BVCwg KCJIIiwgIlciKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJS TVNOb3JtYWxpemF0aW9uIiwgWyJYIiwgInNjYWxlIl0sIFsieSJdLCBheGlzPTIpXSwKLS0gICAg ICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK LS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoIk4iLCAiQyIsICJIIiwgIlciKSldLAotLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVzXzJf MyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lv biA8IDE4LCAiYXhlcyBpcyBmcm9tIFZlcnNpb24gMTgiKQotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwg VGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21h a2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwgWyJ5Il0sIGF4ZXM9 KDIsIDMpKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21h a2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNykpXSwKLS0g ICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBn cmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLklOVDMyLCAoMiwgNCwgNiwgNykpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVto ZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0t Ci0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkK LS0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfYXhlc18zXzIoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBW ZXJzaW9uIDE4IikKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwg MywgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwp KSwKLS0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwK LS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIs ICJyb2kiLCAiIiwgInNpemVzIl0sIFsieSJdLCBheGVzPSgzLCAyKSldLAotLSAgICAgICAgICAg IFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDcpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDcsIDYp KV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAgIGRlZiB0ZXN0X3Jlc2l6ZV9z aXplX25vdF9sYXJnZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYu c2tpcElmKAotLSAgICAgICAgICAgIHZlcnNpb24gPCAxOCwKLS0gICAgICAgICAgICAia2VlcF9h c3BlY3RfcmF0aW9fcG9saWN5IGlzIGZyb20gVmVyc2lvbiAxOCIsCi0tICAgICAgICApCi0tICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAg ICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDUpKSwKLS0gICAgICAgICAgICAg ICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAgICAgICgi c2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAg ICAgICJSZXNpemUiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAic2l6 ZXMiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAgICAg a2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5PSJub3RfbGFyZ2VyIiwKLS0gICAgICAgICAgICAgICAg KQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlh bGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwg NikpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAg ICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDMyLCAoNCwgNikpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAp Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUi KSkKLS0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfYXhlc18yXzNfbm90X2xhcmdlcihzZWxmLCBf LCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYoCi0tICAgICAgICAgICAg dmVyc2lvbiA8IDE4LAotLSAgICAgICAgICAgICJheGVzICYga2VlcF9hc3BlY3RfcmF0aW9fcG9s aWN5IGFyZSBmcm9tIFZlcnNpb24gMTgiLAotLSAgICAgICAgKQotLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9p IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNpemVzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg WwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiUmVz aXplIiwKLS0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sCi0t ICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGF4ZXM9KDIs IDMpLAotLSAgICAgICAgICAgICAgICAgICAga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5PSJub3Rf bGFyZ2VyIiwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNikpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgNCwg NikpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaXpl X3NpemVfbm90X3NtYWxsZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNl bGYuc2tpcElmKAotLSAgICAgICAgICAgIHZlcnNpb24gPCAxOCwKLS0gICAgICAgICAgICAia2Vl cF9hc3BlY3RfcmF0aW9fcG9saWN5IGlzIGZyb20gVmVyc2lvbiAxOCIsCi0tICAgICAgICApCi0t ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDMsIDUpKSwKLS0gICAgICAgICAg ICAgICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsKSksCi0tICAgICAgICAgICAgICAg ICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0g ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAg ICAgICAgICJSZXNpemUiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAi c2l6ZXMiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAg ICAga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5PSJub3Rfc21hbGxlciIsCi0tICAgICAgICAgICAg ICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGlu aXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwg KDYsIDYpKV0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0t ICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDYsIDEwKSldLAotLSAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAg ICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJl c2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVzXzJfM19ub3Rfc21hbGxlcihz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYoCi0tICAgICAg ICAgICAgdmVyc2lvbiA8IDE4LAotLSAgICAgICAgICAgICJheGVzICYga2VlcF9hc3BlY3RfcmF0 aW9fcG9saWN5IGFyZSBmcm9tIFZlcnNpb24gMTgiLAotLSAgICAgICAgKQotLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAg KCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAgICAgICAgICAg ICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCkpLAotLSAgICAgICAgICAgICAgICAoInNp emVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAg ICAiUmVzaXplIiwKLS0gICAgICAgICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVz Il0sCi0tICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGF4 ZXM9KDIsIDMpLAotLSAgICAgICAgICAgICAgICAgICAga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5 PSJub3Rfc21hbGxlciIsCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAg ICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6 ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDYpKV0sCi0tICAgICAgICApCi0tICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIs IDQsIDYsIDEwKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVz dF9yZXNpemVfc2NhbGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYu c2tpcElmKHZlcnNpb24gPCAxMSwgInJvaSBpbnB1dCBpcyBmcm9tIFZlcnNpb24gMTEiKQotLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAg ICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCi0tICAgICAg ICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAotLSAgICAgICAgICAg ICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVz Il0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9 WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxP QVQsICg0LCksICgxLjAsIDEuMSwgMS4zLCAxLjkpKQotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgs Ci0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5J TlQzMiwgKDIsIDQsIDMsIDkpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVy Lm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCi0tICAg IGRlZiB0ZXN0X3Jlc2l6ZV9zY2FsZV9heGVzXzJfMyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25l OgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE4LCAiYXhlcyBpcyBmcm9tIFZlcnNp b24gMTgiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1 KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAot LSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpKSwKLS0g ICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJy b2kiLCAic2NhbGVzIl0sIFsieSJdLCBheGVzPSgyLCAzKSldLAotLSAgICAgICAgICAgIFtdLAot LSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJv dG8uRkxPQVQsICgyLCksICgxLjMsIDEuOSkpXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkp XSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRlc3RfcmVzaXplX3Nj YWxlX2F4ZXNfM18yKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNr aXBJZih2ZXJzaW9uIDwgMTgsICJheGVzIGlzIGZyb20gVmVyc2lvbiAxOCIpCi0tICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAg ICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDUpKSwKLS0gICAgICAgICAgICAg ICAgKCJyb2kiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSksCi0tICAgICAgICAgICAgICAgICgi c2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAg ICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5 Il0sIGF4ZXM9KDMsIDIpKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlh bGl6ZXI9W21ha2VfdGVuc29yKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSwgKDEu OSwgMS4zKSldLAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAot LSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA5KSldLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK LS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlJlc2l6ZSIpKQotLSAgICBkZWYgdGVzdF9yZXNpemVfc2NhbGVfcmF3X2RhdGEoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxMSwg InJvaSBpbnB1dCBpcyBmcm9tIFZlcnNpb24gMTEiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29y UHJvdG8uSU5UMzIsICgxLCAzLCA0LCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwgVGVu c29yUHJvdG8uRkxPQVQsICg4LCkpLAotLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNv clByb3RvLkZMT0FULCAoNCwpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtl X25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIl0sIFsieSJdKV0sCi0tICAgICAg ICAgICAgW10sCi0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICJzY2FsZXMiLAotLSAgICAgICAgICAg ICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAoNCwpLAot LSAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheShbMi4wLCAxLjEsIDIuMywgMS45XSwg ZHR5cGU9IjxmNCIpLnRvYnl0ZXMoKSwKLS0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAot LSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgMywg OSwgOSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAgZGVmIHRlc3RfcmVz aXplX3NjYWxlX2FuZF9zaXplX2J1dF9vbmVfaXNfZW1wdHkoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxMSwgInJvaSBpbnB1dCBpcyBm cm9tIFZlcnNpb24gMTEiKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgx LCAzLCA0LCA1KSksCi0tICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg4LCkpLAotLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAo NCwpKSwKLS0gICAgICAgICAgICAgICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMCwp KSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsi eCIsICJyb2kiLCAic2NhbGVzIiwgInNpemVzIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cigKLS0gICAgICAgICAgICAgICAgICAgICJzY2FsZXMiLAotLSAgICAgICAgICAgICAgICAgICAg VGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAoNCwpLAotLSAgICAgICAg ICAgICAgICAgICAgdmFscz1ucC5hcnJheShbMi4wLCAxLjEsIDIuMywgMS45XSwgZHR5cGU9Ijxm NCIpLnRvYnl0ZXMoKSwKLS0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAotLSAgICAgICAg ICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAg ICAgICAgICJzaXplcyIsCi0tICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwK LS0gICAgICAgICAgICAgICAgICAgICgwLCksCi0tICAgICAgICAgICAgICAgICAgICB2YWxzPW5w LmFycmF5KFtdLCBkdHlwZT0iPGk4IikudG9ieXRlcygpLAotLSAgICAgICAgICAgICAgICAgICAg cmF3PVRydWUsCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAg ICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwK LS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklO VDMyLCAoMiwgMywgOSwgOSkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKLS0gICAg ZGVmIHRlc3RfcmVzaXplX29wc2V0MTFfc2NhbGVzX2lzX2VtcHR5KHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6Ci0tICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uICE9IDExLCAiVGhpcyB0ZXN0 IG9ubHkgd29ya3MgZm9yIFZlcnNpb24gMTEiKQotLSAgICAgICAgIyAic2NhbGVzIiBpbnB1dCBp biBSZXNpemUgaW4gb3BzZXQxMSBpcyBub3Qgb3B0aW9uYWwuIEl0IG11c3QgYmUgYW4gZW1wdHkg dGVuc29yCi0tICAgICAgICAjIGlmIHNpemVzIGlzIG5lZWRlZC4gU2hhcGUgaW5mZXJlbmNlIGZv ciBSZXNpemUgc2hhbGwgaGFuZGxlIHRoaXMgY2FzZS4KLS0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNv clByb3RvLklOVDMyLCAoMSwgMywgNCwgNSkpLAotLSAgICAgICAgICAgICAgICAoInJvaSIsIFRl bnNvclByb3RvLkZMT0FULCAoOCwpKSwKLS0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5z b3JQcm90by5GTE9BVCwgKDAsKSksCi0tICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDQsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9u b2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyIsICJzaXplcyJdLCBbInkiXSldLAot LSAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAgICAic2l6ZXMiLAotLSAgICAg ICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCi0tICAgICAgICAgICAgICAgICAgICAo NCwpLAotLSAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5hcnJheSgKLS0gICAgICAgICAgICAg ICAgICAgICAgICBbMiwgNiwgOCwgMTBdLCBkdHlwZT0iPGk4IgotLSAgICAgICAgICAgICAgICAg ICAgKS50b2J5dGVzKCksICAjIGRvdWJsZSBpbiBhbGwgZGltZW5zaW9ucwotLSAgICAgICAgICAg ICAgICAgICAgcmF3PVRydWUsCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgXSwK LS0gICAgICAgICkKLS0KLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAg ICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLklOVDMyLCAoMiwgNiwgOCwgMTApKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZCgiIiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQot LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKLS0g ICAgZGVmIHRlc3Rfc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4 Il0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAotLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIlNoYXBlIikpCi0tICAgIGRlZiB0ZXN0X3NoYXBlX3N0YXJ0XzEoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAx NSwgInN0YXJ0IGFuZCBlbmQgYXJlIGZyb20gVmVyc2lvbiAxNSIpCi0tICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMiwgNCwgMykpXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBb InkiXSwgc3RhcnQ9MSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQotLSAgICBkZWYgdGVzdF9zaGFwZV9lbmRfMShz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8 IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKLS0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxP QVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0s IFsieSJdLCBlbmQ9MSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCkpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQotLSAgICBkZWYgdGVzdF9zaGFwZV9uZWdhdGl2 ZV9zdGFydChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYo dmVyc2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKLS0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBl IiwgWyJ4Il0sIFsieSJdLCBzdGFydD0tMSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAg KQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAot LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U NjQsICgxLCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0 ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQotLSAgICBkZWYgdGVzdF9z aGFwZV9jbGlwMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lw SWYodmVyc2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKLS0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNo YXBlIiwgWyJ4Il0sIFsieSJdLCBzdGFydD0tNSldLAotLSAgICAgICAgICAgIFtdLAotLSAgICAg ICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8u SU5UNjQsICgzLCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTaGFwZSIpKQotLSAgICBkZWYgdGVz dF9zaGFwZV9jbGlwMihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5z a2lwSWYodmVyc2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikK LS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUo IlNoYXBlIiwgWyJ4Il0sIFsieSJdLCBlbmQ9MTApXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAg ICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFw aCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMywpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2l6ZSIpKQotLSAgICBkZWYgdGVz dF9zaXplKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwg NCwgMykpXSwgW21ha2Vfbm9kZSgiU2l6ZSIsIFsieCJdLCBbInkiXSldLCBbXQotLSAgICAgICAg KQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAot LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U NjQsICgpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyIikpCi0tICAgIGRlZiB0ZXN0X2dh dGhlcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDMp KSwgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKLS0gICAgICAgICAgICBbbWFrZV9u b2RlKCJHYXRoZXIiLCBbIngiLCAiaSJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAotLSAg ICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdy YXBoLAotLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uRkxPQVQsICgyLCAzKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICkKLS0KLS0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlciIpKQotLSAgICBk ZWYgdGVzdF9nYXRoZXJfYXhpczEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJv dG8uRkxPQVQsICg0LCAzLCA1KSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpXSwK LS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJHYXRoZXIiLCBbIngiLCAiaSJdLCBbInkiXSwgYXhp cz0xKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDEsIDIsIDUpKV0sCi0t ICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQo YWxsX3ZlcnNpb25zX2ZvcigiR2F0aGVyIikpCi0tICAgIGRlZiB0ZXN0X2dhdGhlcl9pbnRvX3Nj YWxhcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsKSks ICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUo IkdhdGhlciIsIFsieCIsICJpIl0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAg ICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgs Ci0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5G TE9BVCwgKCkpXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0 ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJHYXRoZXJFbGVtZW50cyIpKQotLSAgICBk ZWYgdGVzdF9nYXRoZXJfZWxlbWVudHMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uRkxPQVQsICgyLCAyKSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMikpXSwK LS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJHYXRoZXJFbGVtZW50cyIsIFsieCIsICJpIl0sIFsi eSJdLCBheGlzPTEpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMikpXSwK LS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJHYXRoZXJFbGVtZW50cyIpKQotLSAgICBkZWYgdGVzdF9nYXRo ZXJfZWxlbWVudHNfYXhpczAoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u RkxPQVQsICgzLCAzKSksICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpXSwKLS0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJHYXRoZXJFbGVtZW50cyIsIFsieCIsICJpIl0sIFsieSJdLCBh eGlzPTApXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpXSwKLS0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJTY2F0dGVyIikpCi0tICAgIGRlZiB0ZXN0X3NjYXR0ZXIoc2VsZiwgXywg dmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGlmIHZlcnNpb24gPj0gMTE6Ci0tICAgICAgICAg ICAgIyBTY2F0dGVyIGlzIGRlcHJlY2F0ZWQgaW4gZG9tYWluX3ZlcnNpb24gb2YgMTEuCi0tICAg ICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVy cm9yKSBhcyBjbToKLS0gICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9zY2F0dGVyKHZlcnNpb24p Ci0tICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCi0tICAgICAgICAgICAgYXNz ZXJ0ICJTY2F0dGVyIGlzIGRlcHJlY2F0ZWQiIGluIHN0cihleGNlcHRpb24pCi0tICAgICAgICBl bHNlOgotLSAgICAgICAgICAgIHNlbGYuX3Rlc3Rfc2NhdHRlcih2ZXJzaW9uKQotLQotLSAgICBk ZWYgX3Rlc3Rfc2NhdHRlcihzZWxmLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4 IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzKSksCi0tICAgICAgICAgICAgICAgICgiaSIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwgMykpLAotLSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDIsIDMpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtl X25vZGUoIlNjYXR0ZXIiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJdKV0sCi0tICAgICAgICAgICAg W10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAg ICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlciIp KQotLSAgICBkZWYgdGVzdF9zY2F0dGVyX2F4aXMxKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 Ci0tICAgICAgICBpZiB2ZXJzaW9uID49IDExOgotLSAgICAgICAgICAgICMgU2NhdHRlciBpcyBk ZXByZWNhdGVkIGluIGRvbWFpbl92ZXJzaW9uIG9mIDExLgotLSAgICAgICAgICAgIHdpdGggc2Vs Zi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206Ci0tICAg ICAgICAgICAgICAgIHNlbGYuX3Rlc3Rfc2NhdHRlcl9heGlzMSh2ZXJzaW9uKQotLSAgICAgICAg ICAgIGV4Y2VwdGlvbiA9IGNtLmV4Y2VwdGlvbgotLSAgICAgICAgICAgIGFzc2VydCAiU2NhdHRl ciBpcyBkZXByZWNhdGVkIiBpbiBzdHIoZXhjZXB0aW9uKQotLSAgICAgICAgZWxzZToKLS0gICAg ICAgICAgICBzZWxmLl90ZXN0X3NjYXR0ZXJfYXhpczEodmVyc2lvbikKLS0KLS0gICAgZGVmIF90 ZXN0X3NjYXR0ZXJfYXhpczEoc2VsZiwgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpLAotLSAgICAgICAgICAgICAgICAoImkiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIpKSwKLS0gICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29y UHJvdG8uRkxPQVQsICgxLCAyKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJTY2F0dGVyIiwgWyJ4IiwgImkiLCAidSJdLCBbInkiXSwgYXhpcz0xKV0sCi0tICAg ICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Ci0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKV0sCi0tICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAg ICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi U2NhdHRlckVsZW1lbnRzIikpCi0tICAgIGRlZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHMoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMywgMykpLAotLSAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIs IDMpKSwKLS0gICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSks Ci0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyRWxlbWVu dHMiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJdKV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAg ICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgs Ci0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5G TE9BVCwgKDMsIDMpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlckVsZW1lbnRzIikpCi0t ICAgIGRlZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHNfYXhpczEoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBb Ci0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpLAotLSAg ICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIpKSwKLS0gICAgICAg ICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyKSksCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyRWxlbWVudHMiLCBbIngiLCAiaSIs ICJ1Il0sIFsieSJdLCBheGlzPTEpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAo MSwgNSkpXSwKLSsgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNv clByb3RvLkZMT0FULCBleHBlY3RlZF9vdXRfc2hhcGUpXSwKLSAgICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0gICAg ICAgICApCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJT Y2F0dGVyTkQiKSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcm5kKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6Ci0rICAgIGRlZiBfdGVzdF9zY2F0dGVyKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6Ci0g ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgWwotLSAgICAg ICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKSwKLS0gICAgICAg ICAgICAgICAgKCJpbmRpY2VzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCAzLCAyKSksCi0tICAg ICAgICAgICAgICAgICgidXBkYXRlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMywgNikpLAot KyAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKLSsgICAg ICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAzKSksCi0rICAgICAgICAg ICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpLAotICAgICAgICAgICAgIF0s Ci0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlck5EIiwgWyJ4IiwgImluZGljZXMiLCAi dXBkYXRlcyJdLCBbInkiXSldLAotKyAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXIiLCBb IngiLCAiaSIsICJ1Il0sIFsieSJdKV0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICApCi0g ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0gICAgICAgICAgICAgZ3JhcGgsCi0tICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwg KDQsIDUsIDYpKV0sCi0rICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKV0sCi0gICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotICAgICAgICAgKQot IAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlck5E IikpCi0tICAgIGRlZiB0ZXN0X3NjYXR0ZXJuZF9ub3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+ IE5vbmU6Ci0tICAgICAgICAjIFRoZSBzaGFwZSBvZiAneF9yZXNoYXBlZCcgY2Fubm90IGJlIGlu ZmVycmVkLCBzaW5jZSBpdCBpcyB0aGUgb3V0cHV0IG9mIGEgZHluYW1pYyByZXNoYXBlLgotLSAg ICAgICAgIyBUaHVzIHRoZSBzaGFwZSBvZiAneScgaXMgYWxzbyBOb25lLgotKyAgICBkZWYgX3Rl c3Rfc2NhdHRlcl9heGlzMShzZWxmLCB2ZXJzaW9uKSAtPiBOb25lOgotICAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAotICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4 IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCA1LCA2KSksCi0tICAgICAgICAgICAgICAgICgiaW5k aWNlcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMywgMywgMikpLAotLSAgICAgICAgICAgICAgICAo InVwZGF0ZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMsIDYpKSwKLS0gICAgICAgICAgICAg ICAgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCkpLAotLSAgICAgICAgICAgIF0s Ci0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlJlc2hhcGUiLCBb IngiLCAic2hhcGUiXSwgWyJ4X3Jlc2hhcGVkIl0pLAotLSAgICAgICAgICAgICAgICBtYWtlX25v ZGUoIlNjYXR0ZXJORCIsIFsieF9yZXNoYXBlZCIsICJpbmRpY2VzIiwgInVwZGF0ZXMiXSwgWyJ5 Il0pLAotKyAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKSwK LSsgICAgICAgICAgICAgICAgKCJpIiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCAyKSksCi0rICAg ICAgICAgICAgICAgICgidSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMikpLAotICAgICAgICAg ICAgIF0sCi0rICAgICAgICAgICAgW21ha2Vfbm9kZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUi XSwgWyJ5Il0sIGF4aXM9MSldLAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgKQotICAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotICAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAg ICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieF9yZXNoYXBl ZCIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKSwKLS0gICAgICAgICAg ICBdLAotKyAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uRkxPQVQsICgxLCA1KSldLAotICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLSAgICAgICAgICkKLSAKLUBAIC0x NzA5LDk1ICszMzQsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJl bmNlSGVscGVyKToKLSAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCAyNCldLAotICAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3F1ZWV6ZSIpKQotLSAgICBkZWYgdGVzdF9zcXVl ZXplKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBpZiB2ZXJzaW9uID09IDEx OgotLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMywgMSwgMSwgMiwgMSkpXSwKLS0gICAg ICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3F1ZWV6ZSIsICJ4IiwgInkiLCBheGVzPVswLCAyLCAz LCA1XSldLAotLSAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgICAgICBncmFwaCwKLS0gICAg ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9B VCwgKDMsIDIpKV0sCi0tICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICAgICApCi0tICAgICAg ICBlbHNlOgotLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAg ICAgICAgICAgWwotLSAgICAgICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgxLCAzLCAxLCAxLCAyLCAxKSksCi0tICAgICAgICAgICAgICAgICAgICAoImF4ZXMiLCBUZW5z b3JQcm90by5JTlQ2NCwgKDQsKSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg ICAgIFttYWtlX25vZGUoIlNxdWVlemUiLCBbIngiLCAiYXhlcyJdLCAieSIpXSwKLS0gICAgICAg ICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgIGluaXRpYWxpemVyPVsKLS0gICAgICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yKCJheGVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCksICgw LCAyLCAzLCA1KSkKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICApCi0tICAgICAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgICAgICBncmFwaCwKLS0g ICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5G TE9BVCwgKDMsIDIpKV0sCi0tICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAgICAgICApCi0tCi0t ICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdDb25jYXQi KSkKLS0gICAgZGVmIHRlc3Rfc3RyaW5nY29uY2F0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwotLSAg ICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSksCi0tICAg ICAgICAgICAgICAgICgieSIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKSwKLS0gICAg ICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIsIFsieCIs ICJ5Il0sICJ6IildLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkp XSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdDb25jYXQiKSkKLS0gICAgZGVmIHRlc3Rfc3Ry aW5nY29uY2F0X2Jyb2FkY2FzdGluZyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAg ICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpLAotLSAgICAgICAgICAg ICAgICAoInkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgxLCAzLCAxKSksCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdDb25jYXQiLCBbIngiLCAieSJdLCAi eiIpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKV0sCi0tICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiUmVnZXhGdWxsTWF0Y2giKSkKLS0gICAgZGVmIHRlc3RfcmVnZXhfZnVs bF9tYXRjaChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgy LCA0LCAzLCA5KSldLAotLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlZ2V4RnVsbE1hdGNoIiwg WyJ4Il0sIFsieSJdLCBwYXR0ZXJuPXIiXltBLVpdW2Etel0qJCIpXSwKLS0gICAgICAgICAgICBb XSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAg ICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLkJPT0wsICgyLCA0LCAzLCA5KSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlZ2V4 RnVsbE1hdGNoIikpCi0tICAgIGRlZiB0ZXN0X3JlZ2V4X2Z1bGxfbWF0Y2hfZW1wdHlfc2hhcGUo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoKSldLAotLSAg ICAgICAgICAgIFttYWtlX25vZGUoIlJlZ2V4RnVsbE1hdGNoIiwgWyJ4Il0sIFsieSJdLCBwYXR0 ZXJuPXIiXltBLVpdW2Etel0qJCIpXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkJPT0wsICgp KV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5Y X0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotICAgICBkZWYgdGVzdF9zcXVlZXpl X25vX2F4ZXNfb3BzZXQxMShzZWxmKSAtPiBOb25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotICAgICAgICAgICAgIFsKLUBAIC01NjMyLDIzICs0MTY4LDYgQEAgY2xhc3Mg VGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICBz ZWxmLl9tYWtlX21hdG11bGludGVnZXJfdGVzdCgoNSwgMSwgNCwgMiksICgxLCAzLCAyLCAzKSkK LSAgICAgICAgIHNlbGYuX21ha2VfbWF0bXVsaW50ZWdlcl90ZXN0KCg0LCAyKSwgKDMsIDIsIDMp KQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbb25ueC5UZW5zb3JQ cm90by5GTE9BVCwgb25ueC5UZW5zb3JQcm90by5GTE9BVDE2LCBvbm54LlRlbnNvclByb3RvLkJG TE9BVDE2XQotLSAgICApCi0tICAgIGRlZiB0ZXN0X3F1YW50aXplbGluZWFyKHNlbGYsIGVsZW1f dHlwZSkgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIGVsZW1fdHlwZSwgKDMwLCA0LCA1KSks Ci0tICAgICAgICAgICAgICAgICgieV9zY2FsZSIsIGVsZW1fdHlwZSwgKCkpLAotLSAgICAgICAg ICAgICAgICAoInlfemVyb19wb2ludCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoKSksCi0tICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICBbbWFrZV9ub2RlKCJRdWFudGl6ZUxpbmVhciIsIFsieCIs ICJ5X3NjYWxlIiwgInlfemVyb19wb2ludCJdLCBbInkiXSldLAotLSAgICAgICAgICAgIFtdLAot LSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAg IGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAo MzAsIDQsIDUpKV0KLS0gICAgICAgICkKLS0KLSAgICAgZGVmIHRlc3RfcXVhbnRpemVsaW5lYXJf ZGVmYXVsdF96cChzZWxmKSAtPiBOb25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dy YXBoKAotICAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMwLCA0LCA1KSks ICgieV9zY2FsZSIsIFRlbnNvclByb3RvLkZMT0FULCAoKSldLAotQEAgLTU3NTQsMjMgKzQyNzMs NiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToK LSAgICAgICAgICAgICBncmFwaCwKLSAgICAgICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKAotLSAgICAgICAgW29ubnguVGVuc29yUHJvdG8uRkxPQVQsIG9ubnguVGVuc29yUHJv dG8uRkxPQVQxNiwgb25ueC5UZW5zb3JQcm90by5CRkxPQVQxNl0KLS0gICAgKQotLSAgICBkZWYg dGVzdF9kZXF1YW50aXplbGluZWFyKHNlbGYsIGVsZW1fdHlwZSkgLT4gTm9uZToKLS0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAg ICAgICgieCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMzAsIDQsIDUpKSwKLS0gICAgICAgICAgICAg ICAgKCJ4X3NjYWxlIiwgZWxlbV90eXBlLCAoKSksCi0tICAgICAgICAgICAgICAgICgieF96ZXJv X3BvaW50IiwgVGVuc29yUHJvdG8uVUlOVDgsICgpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAg ICAgICAgIFttYWtlX25vZGUoIkRlcXVhbnRpemVMaW5lYXIiLCBbIngiLCAieF9zY2FsZSIsICJ4 X3plcm9fcG9pbnQiXSwgWyJ5Il0pXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBlbGVtX3R5cGUsICgzMCwgNCwgNSkpXQotLSAgICAgICAg KQotLQotICAgICBkZWYgdGVzdF9keW5hbWljcXVhbnRpemVsaW5lYXIoc2VsZikgLT4gTm9uZToK LSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLSAgICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uRkxPQVQsICgzMCwgNCwgNSkpXSwKLUBAIC02MDA1LDMxOSArNDUwNyw2MSBA QCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAg ICAgICAgICAgICBbbWFrZV9ub2RlKCJSb2lBbGlnbiIsIFsieCIsICJyb2lzIiwgImJhdGNoX2lu ZGljZXMiXSwgWyJ5Il0pXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAgICAgICkKLS0gICAgICAg IHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDE1LCAiQyIsIDEsIDEpKV0KLS0g ICAgICAgICkKLS0KLS0gICAgZGVmIHRlc3Rfcm90YXJ5ZW1iZWRkaW5nXzRkKHNlbGYpIC0+IE5v bmU6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWwot LSAgICAgICAgICAgICAgICAoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgIm51bV9oZWFk cyIsICJzZXFfbGVuIiwgImhlYWRfc2l6ZSIpKSwKLS0gICAgICAgICAgICAgICAgKCJjb3NfY2Fj aGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIi KSksCi0tICAgICAgICAgICAgICAgICgic2luX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgi bWF4X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAotLSAgICAgICAgICAgICAgICAoInBv c2l0aW9uX2lkcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIkIiLCAic2VxX2xlbiIpKSwKLS0gICAg ICAgICAgICBdLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAot LSAgICAgICAgICAgICAgICAgICAgIlJvdGFyeUVtYmVkZGluZyIsCi0tICAgICAgICAgICAgICAg ICAgICBbIlgiLCAiY29zX2NhY2hlIiwgInNpbl9jYWNoZSIsICJwb3NpdGlvbl9pZHMiXSwKLS0g ICAgICAgICAgICAgICAgICAgIFsiWSJdLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAg ICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2Vy dF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgICAgICAgICAi WSIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAibnVtX2hlYWRzIiwgInNlcV9sZW4iLCAiaGVh ZF9zaXplIikKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAp Ci0tCi0tICAgIGRlZiB0ZXN0X3JvdGFyeWVtYmVkZGluZ18zZChzZWxmKSAtPiBOb25lOgotLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsKLS0gICAgICAg ICAgICAgICAgKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsICgiQiIsICJzZXFfbGVuIiwgImhpZGRl bl9zaXplIikpLAotLSAgICAgICAgICAgICAgICAoImNvc19jYWNoZSIsIFRlbnNvclByb3RvLkZM T0FULCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwKLS0gICAgICAgICAgICAg ICAgKCJzaW5fY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFk X3NpemVfZGl2XzIiKSksCi0tICAgICAgICAgICAgICAgICgicG9zaXRpb25faWRzIiwgVGVuc29y UHJvdG8uSU5UNjQsICgiQiIsICJzZXFfbGVuIikpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAg ICAiUm90YXJ5RW1iZWRkaW5nIiwKLS0gICAgICAgICAgICAgICAgICAgIFsiWCIsICJjb3NfY2Fj aGUiLCAic2luX2NhY2hlIiwgInBvc2l0aW9uX2lkcyJdLAotLSAgICAgICAgICAgICAgICAgICAg WyJZIl0sCi0tICAgICAgICAgICAgICAgICAgICBudW1faGVhZHM9NCwKLS0gICAgICAgICAgICAg ICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAotLSAgICAg ICAgICAgICAgICAgICAgIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgInNlcV9sZW4iLCAi aGlkZGVuX3NpemUiKQotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgYWxsX3ZlcnNp b25zX2ZvcigiTGFiZWxFbmNvZGVyIikgaWYgT05OWF9NTCBlbHNlIFtdLCBza2lwX29uX2VtcHR5 PVRydWUKLS0gICAgKQotLSAgICBkZWYgdGVzdF9sYWJlbF9lbmNvZGVyX3N0cmluZ19pbnQ2NChz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5za2lwSWYoCi0tICAgICAg ICAgICAgdmVyc2lvbiA8IDIsICJrZXlzXyogYXR0cmlidXRlcyB3ZXJlIGludHJvZHVjZWQgaW4g YWkub25ueC5tbCBvcHNldCAyIgotLSAgICAgICAgKQotLSAgICAgICAgc3RyaW5nX2xpc3QgPSBb IkEiLCAibSIsICJ5Il0KLS0gICAgICAgIGZsb2F0X2xpc3QgPSBbOTQuMTcsIDM2LjAwLCAtOTku MF0KLS0gICAgICAgIGludDY0X2xpc3QgPSBbMTIsIDI4LCA4Nl0KLS0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5H LCAoNiwgMSkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK LS0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAg ICAgWyJ4Il0sCi0tICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAg ICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfc3Ry aW5ncz1zdHJpbmdfbGlzdCwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19pbnQ2NHM9aW50 NjRfbGlzdCwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAg ICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAg ICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBUZW5zb3JQcm90by5JTlQ2NCwgKDYsIDEpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1bCi0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lv biksCi0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotLSAg ICAgICAgICAgIF0sCi0tICAgICAgICApCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpXSwK LS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAg ICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0t ICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1P Tk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfaW50NjRzPWludDY0X2xp c3QsCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKLS0g ICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAg ICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3Jh cGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5TVFJJTkcsICgyLCAzKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAg ICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAotLSAgICAg ICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBd LAotLSAgICAgICAgKQotLQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSldLAotLSAgICAgICAgICAg IFsKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkxh YmVsRW5jb2RlciIsCi0tICAgICAgICAgICAgICAgICAgICBbIngiXSwKLS0gICAgICAgICAgICAg ICAgICAgIFsieSJdLAotLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlO LAotLSAgICAgICAgICAgICAgICAgICAga2V5c19mbG9hdHM9ZmxvYXRfbGlzdCwKLS0gICAgICAg ICAgICAgICAgICAgIHZhbHVlc19pbnQ2NHM9aW50NjRfbGlzdCwKLS0gICAgICAgICAgICAgICAg KQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSld LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtlX29w c2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAotLSAgICAgICAgICAgICAgICBtYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQot LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDgsKSldLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAg ICAgICAgICAgICAgICAgICBbIngiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAg ICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAg ICAgICAga2V5c19pbnQ2NHM9aW50NjRfbGlzdCwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVl c19mbG9hdHM9ZmxvYXRfbGlzdCwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0s Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSldLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01B SU4sIHZlcnNpb24pLAotLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQotLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwg KCkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAg ICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4 Il0sCi0tICAgICAgICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRv bWFpbj1PTk5YX01MX0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfZmxvYXRzPWZs b2F0X2xpc3QsCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1zdHJpbmdfbGlz dCwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10s Ci0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAg ICAgZ3JhcGgsCi0tICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5TVFJJTkcsICgpKV0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAg ICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCi0tICAg ICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAotLSAgICAgICAgICAg IF0sCi0tICAgICAgICApCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0t ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLlNUUklORywgKDEsIDIpKV0sCi0tICAgICAg ICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAg ICAiTGFiZWxFbmNvZGVyIiwKLS0gICAgICAgICAgICAgICAgICAgIFsieCJdLAotLSAgICAgICAg ICAgICAgICAgICAgWyJ5Il0sCi0tICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9E T01BSU4sCi0tICAgICAgICAgICAgICAgICAgICBrZXlzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCi0t ICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfZmxvYXRzPWZsb2F0X2xpc3QsCi0tICAgICAgICAg ICAgICAgICkKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgxLCAyKSldLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAg ICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAotLSAgICAgICAgICAgICAg ICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAg ICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBhbGxfdmVyc2lv bnNfZm9yKCJMYWJlbEVuY29kZXIiKSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBfb25fZW1wdHk9 VHJ1ZQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2xhYmVsX2VuY29kZXJfdGVuc29yX2F0dHJpYnV0 ZXMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKLS0gICAgICAgIHNlbGYuc2tpcElmKAotLSAg ICAgICAgICAgIHZlcnNpb24gPCA0LCAidGVuc29yIGF0dHJpYnV0ZXMgd2VyZSBpbnRyb2R1Y2Vk IGluIGFpLm9ubngubWwgb3BzZXQgNCIKLS0gICAgICAgICkKLS0gICAgICAgIGtleV90ZW5zb3Ig PSBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAia2V5c190ZW5zb3IiLCBUZW5zb3JQcm90by5T VFJJTkcsIFs0XSwgWyJhIiwgImIiLCAiY2MiLCAiZGRkIl0KLS0gICAgICAgICkKLS0gICAgICAg IHZhbHVlc190ZW5zb3IgPSBtYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAidmFsdWVzX3RlbnNv ciIsIFRlbnNvclByb3RvLklOVDY0LCBbNF0sIFsxLCAyLCAzLCA0XQotKyAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAotKyAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTUsICJDIiwgMSwgMSkpXQotICAgICAgICAg KQotKwotKyAgICBkZWYgdGVzdF9yb3RhcnllbWJlZGRpbmdfNGQoc2VsZikgLT4gTm9uZToKLSAg ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4IiwgVGVu c29yUHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKLSsgICAgICAgICAgICBbCi0r ICAgICAgICAgICAgICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAibnVtX2hlYWRz IiwgInNlcV9sZW4iLCAiaGVhZF9zaXplIikpLAotKyAgICAgICAgICAgICAgICAoImNvc19jYWNo ZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIp KSwKLSsgICAgICAgICAgICAgICAgKCJzaW5fY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJt YXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCi0rICAgICAgICAgICAgICAgICgicG9z aXRpb25faWRzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiQiIsICJzZXFfbGVuIikpLAotKyAgICAg ICAgICAgIF0sCi0gICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0t ICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKLS0gICAgICAgICAgICAgICAgICAg IFsieCJdLAotLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCi0tICAgICAgICAgICAgICAgICAg ICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAgICAgICAgICAgICAgICBrZXlzX3RlbnNv cj1rZXlfdGVuc29yLAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzX3RlbnNvcj12YWx1ZXNf dGVuc29yLAotLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5zb3Io Ci0tICAgICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHRfdGVuc29yIiwgVGVuc29yUHJvdG8u SU5UNjQsIFsxXSwgWzBdCi0tICAgICAgICAgICAgICAgICAgICApLAotKyAgICAgICAgICAgICAg ICAgICAgIlJvdGFyeUVtYmVkZGluZyIsCi0rICAgICAgICAgICAgICAgICAgICBbIlgiLCAiY29z X2NhY2hlIiwgInNpbl9jYWNoZSIsICJwb3NpdGlvbl9pZHMiXSwKLSsgICAgICAgICAgICAgICAg ICAgIFsiWSJdLAotICAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgXSwKLSAgICAgICAg ICAgICBbXSwKLSAgICAgICAgICkKLSAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSAg ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCBOb25lLCAzLCAxMikpXSwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxf RE9NQUlOLCB2ZXJzaW9uKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCAxMSksCi0rICAgICAgICAgICAgWwotKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKAotKyAgICAgICAgICAgICAgICAgICAgIlkiLCBUZW5zb3JQcm90by5GTE9BVCwg KCJCIiwgIm51bV9oZWFkcyIsICJzZXFfbGVuIiwgImhlYWRfc2l6ZSIpCi0rICAgICAgICAgICAg ICAgICkKLSAgICAgICAgICAgICBdLAotICAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoCi0tICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJMYWJlbEVuY29kZXIiKSBpZiBP Tk5YX01MIGVsc2UgW10sIHNraXBfb25fZW1wdHk9VHJ1ZQotLSAgICApCi0tICAgIGRlZiB0ZXN0 X2xhYmVsX2VuY29kZXJfdGVuc29yX2F0dHJpYnV0ZXNfaW52YWxpZF9jb25maWd1cmF0aW9ucygK LS0gICAgICAgIHNlbGYsIF8sIHZlcnNpb24KLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgc2Vs Zi5za2lwSWYodmVyc2lvbiA8IDQsICJ0ZW5zb3IgYXR0cmlidXRlcyBpbnRyb2R1Y2VkIGluIGFp Lm9ubngubWwgb3BzZXQgNCIpCi0tICAgICAgICBrZXlfdGVuc29yID0gbWFrZV90ZW5zb3IoCi0t ICAgICAgICAgICAgImtleXNfdGVuc29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbNF0sIFsiYSIs ICJiIiwgImNjIiwgImRkZCJdCi0tICAgICAgICApCi0tICAgICAgICB2YWx1ZXNfdGVuc29yID0g bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgInZhbHVlc190ZW5zb3IiLCBUZW5zb3JQcm90by5J TlQ2NCwgWzRdLCBbMSwgMiwgMywgNF0KLS0gICAgICAgICkKLS0KLS0gICAgICAgIG9wc2V0X2lt cG9ydHMgPSBbCi0tICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJz aW9uKSwKLS0gICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAg ICAgIF0KLS0KLS0gICAgICAgICMgZGVmYXVsdF90ZW5zb3Igc2hvdWxkIGJlIElOVDY0LCBzYW1l IHR5cGUgYXMgdmFsdWVzX3RlbnNvcgotKyAgICBkZWYgdGVzdF9yb3RhcnllbWJlZGRpbmdfM2Qo c2VsZikgLT4gTm9uZToKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAg ICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwK LSsgICAgICAgICAgICBbCi0rICAgICAgICAgICAgICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FU LCAoIkIiLCAic2VxX2xlbiIsICJoaWRkZW5fc2l6ZSIpKSwKLSsgICAgICAgICAgICAgICAgKCJj b3NfY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVf ZGl2XzIiKSksCi0rICAgICAgICAgICAgICAgICgic2luX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxP QVQsICgibWF4X3NlcV9sZW4iLCAiaGVhZF9zaXplX2Rpdl8yIikpLAotKyAgICAgICAgICAgICAg ICAoInBvc2l0aW9uX2lkcyIsIFRlbnNvclByb3RvLklOVDY0LCAoIkIiLCAic2VxX2xlbiIpKSwK LSsgICAgICAgICAgICBdLAotICAgICAgICAgICAgIFsKLSAgICAgICAgICAgICAgICAgbWFrZV9u b2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCi0tICAgICAgICAgICAg ICAgICAgICBbIngiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAg ICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAotLSAgICAgICAgICAgICAgICAgICAga2V5 c190ZW5zb3I9a2V5X3RlbnNvciwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlc190ZW5zb3I9 dmFsdWVzX3RlbnNvciwKLS0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdGVuc29yPW1ha2Vf dGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0X3RlbnNvciIsIFRlbnNv clByb3RvLklOVDMyLCBbMV0sIFswXQotLSAgICAgICAgICAgICAgICAgICAgKSwKLSsgICAgICAg ICAgICAgICAgICAgICJSb3RhcnlFbWJlZGRpbmciLAotKyAgICAgICAgICAgICAgICAgICAgWyJY IiwgImNvc19jYWNoZSIsICJzaW5fY2FjaGUiLCAicG9zaXRpb25faWRzIl0sCi0rICAgICAgICAg ICAgICAgICAgICBbIlkiXSwKLSsgICAgICAgICAgICAgICAgICAgIG51bV9oZWFkcz00LAotICAg ICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbXSwKLSAgICAg ICAgICkKLS0KLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotLSAgICAgICAgICAgIG9ubngu c2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAotLSAgICAgICAgICAgIHNlbGYuX2luZmVy cmVkLAotKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotICAgICAgICAgICAgIGdyYXBo LAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9b3BzZXRfaW1wb3J0cywKLS0gICAgICAgICkK LS0KLS0gICAgICAgICMgZGVmYXVsdF90ZW5zb3Igc2hvdWxkIGJlIGEgc2luZ2xldG9uIG9mIHNo YXBlICgxLCkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAg ICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKLSAgICAg ICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAg ICAgICJMYWJlbEVuY29kZXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCi0tICAgICAg ICAgICAgICAgICAgICBbInkiXSwKLS0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01M X0RPTUFJTiwKLS0gICAgICAgICAgICAgICAgICAgIGtleXNfdGVuc29yPWtleV90ZW5zb3IsCi0t ICAgICAgICAgICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1bImEiLCAiYiIsICJjYyIsICJkZGQi XSwKLS0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfdGVuc29yPW1ha2VfdGVuc29yKAotLSAg ICAgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0X3RlbnNvciIsIFRlbnNvclByb3RvLlNUUklO RywgWzEsIDJdLCBbImEiLCAiYiJdCi0tICAgICAgICAgICAgICAgICAgICApLAotKyAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAotKyAgICAgICAgICAgICAgICAgICAgIlki LCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgInNlcV9sZW4iLCAiaGlkZGVuX3NpemUiKQotICAg ICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAg ICAgICkKLS0KLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotLSAgICAgICAgICAgIG9ubngu c2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAotLSAgICAgICAgICAgIHNlbGYuX2luZmVy cmVkLAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9b3Bz ZXRfaW1wb3J0cywKLSAgICAgICAgICkKLSAKLSAgICAgZGVmIG1ha2Vfc3BhcnNlKAotQEAgLTg3 NDYsMTA1ICs2OTkwLDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVy ZW5jZUhlbHBlcik6Ci0gICAgICAgICApCi0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQo Z3JhcGgsIFtvdXRwdXRfdGVuc29yX3ZhbF9pbmZvXSkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCi0tICAgIGRlZiB0ZXN0X3N0 cmluZ19zcGxpdF9iYXNpYyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAgc3Vi c3RyaW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgInN1YnN0cmlu Z3MiLAotLSAgICAgICAgICAgIFRlbnNvclByb3RvLlNUUklORywKLS0gICAgICAgICAgICAoMiwg Tm9uZSksCi0tICAgICAgICApCi0tICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSkKLS0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIs IFRlbnNvclByb3RvLlNUUklORywgKDIsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICAg ICBbbWFrZV9ub2RlKCJTdHJpbmdTcGxpdCIsIFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3Ro Il0pXSwKLS0gICAgICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0gICAgICAgICkKLS0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAg ICAgICAgICBbc3Vic3RyaW5ncywgbGVuZ3RoXSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICAp Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdT cGxpdCIpKQotLSAgICBkZWYgdGVzdF9zdHJpbmdfc3BsaXRfc3ltYm9saWMoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKLS0gICAgICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKAotLSAgICAgICAgICAgICJzdWJzdHJpbmdzIiwKLS0gICAgICAgICAgICBUZW5zb3JQcm90 by5TVFJJTkcsCi0tICAgICAgICAgICAgKCJBIiwgTm9uZSksCi0tICAgICAgICApCi0tICAgICAg ICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5J TlQ2NCwgKCJBIiwpKQotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAg ICAgICAgIFsKLS0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIkEi LCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3Bs aXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdKV0sCi0tICAgICAgICAgICAgW3N1 YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxl bmd0aF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKLS0gICAgZGVmIHRlc3Rf c3RyaW5nX3NwbGl0X25lc3RlZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgotLSAgICAgICAg c3Vic3RyaW5ncyA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgInN1YnN0 cmluZ3MiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCA0LCAzLCBOb25lKQotLSAgICAgICAgKQot LSAgICAgICAgbGVuZ3RoID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVuc29y UHJvdG8uSU5UNjQsICgyLCA0LCAzKSkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNU UklORywgKDIsIDQsIDMpKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFttYWtlX25v ZGUoIlN0cmluZ1NwbGl0IiwgWyJ4Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSwgbWF4c3Bs aXQ9MildLAotLSAgICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIFtzdWJzdHJpbmdzLCBsZW5ndGhdLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmlu Z1NwbGl0IikpCi0tICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdF96ZXJvX2RpbWVuc2lvbmFsX2lu cHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzdWJzdHJpbmdzID0gbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygic3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKE5v bmUsKSkKLS0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIs IFRlbnNvclByb3RvLklOVDY0LCAoKSkKLS0KLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3Rv LlNUUklORywgKCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgi U3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdLCBtYXhzcGxpdD0y KV0sCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICApCi0tICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAg ICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQot LQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3Bs aXQiKSkKLS0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X2VtcHR5X2lucHV0KHNlbGYsIF8sIHZl cnNpb24pIC0+IE5vbmU6Ci0tICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygKLS0gICAgICAgICAgICAic3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKCJN IiwgMywgMCwgTm9uZSkKLS0gICAgICAgICkKLS0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCAzLCAwKSkKLS0K LS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbCi0tICAg ICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKCJNIiwgMywgMCkpLAotLSAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngi XSwgWyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdLCBtYXhzcGxpdD0yKV0sCi0tICAgICAgICAgICAg W3N1YnN0cmluZ3MsIGxlbmd0aF0sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgW3N1YnN0cmluZ3Ms IGxlbmd0aF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAotLSAgICAgICAgKQotLQotICAgICBkZWYgdGVzdF9v cHRpb25hbF90ZW5zb3JfZ2V0X2VsZW1lbnQoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIHRlbnNv cl90eXBlX3Byb3RvID0gaGVscGVyLm1ha2VfdGVuc29yX3R5cGVfcHJvdG8oCi0gICAgICAgICAg ICAgZWxlbV90eXBlPVRlbnNvclByb3RvLkRPVUJMRSwgc2hhcGU9WzIsIDEsIDRdCi1AQCAtOTQ1 Miw0MjYgKzc1OTcsNzYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVy ZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgW10sCi0gICAgICAgICApCi0gICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgWwot LSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoKSksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAg ICApCi0tCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAg W10sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAg ICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0tICAg ICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1t YWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKLS0gICAg ICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW5uV2luZG93Iiwg WyJzaGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAg ICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLS0g ICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAg ICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FU LCAoMTAsKSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLS0gICAgZGVmIHRlc3Rf YmxhY2ttYW53aW5kb3coc2VsZik6Ci0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAg ICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCi0tICAgICAgICAgICAg ICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCks ICgxMCwpKSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2Rl KCJCbGFja21hbldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0pLAotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSks Ci0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDEwLCkpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tCi0tICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAg ICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAi Q29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAg ICBbInNoYXBlIl0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hh cGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKLS0gICAgICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJCbGFja21hbldpbmRvdyIsIFsic2hhcGUiXSwg WyJ5Il0sIHBlcmlvZGljPTApLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0t ICAgICAgICApCi0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAg Z3JhcGgsCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCi0tICAgICAgICAgICAgICAg IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAot LSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIG5hbWUsCi0t ICAgICAgICAgICAgICAgIHZlcnNpb24sCi0tICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAot LSAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKLS0gICAgICAgICAgICAgICAgYXhpcywKLS0g ICAgICAgICAgICAgICAgb25lc2lkZWQsCi0tICAgICAgICAgICAgICAgIGludmVyc2UsCi0tICAg ICAgICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAotLSAgICAgICAgICAgICkKLS0gICAgICAgICAg ICBmb3IgKG5hbWUsIHZlcnNpb24pLCAoCi0tICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAot LSAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKLS0gICAgICAgICAgICAgICAgYXhpcywKLS0g ICAgICAgICAgICAgICAgb25lc2lkZWQsCi0tICAgICAgICAgICAgICAgIGludmVyc2UsCi0tICAg ICAgICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAotLSAgICAgICAgICAgICkgaW4gaXRlcnRvb2xz LnByb2R1Y3QoCi0tICAgICAgICAgICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkRGVCIpLAotLSAg ICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2RlZmF1bHRfYXhp cyIsICgyLCA1LCAxKSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDUsIDIpKSwKLS0gICAgICAgICAg ICAgICAgICAgICgicmVhbHNfYXhpc18wIiwgKDMsIDUsIDEwLCAxKSwgMCwgMCwgMCwgKDMsIDUs IDEwLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMSIsICgzLCA1LCAx MCwgMSksIDEsIDAsIDAsICgzLCA1LCAxMCwgMikpLAotLSAgICAgICAgICAgICAgICAgICAgKCJy ZWFsc19heGlzXzIiLCAoMywgNSwgMTAsIDEpLCAyLCAwLCAwLCAoMywgNSwgMTAsIDIpKSwKLS0g ICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWciLCAoMywgNSwgMTAsIDEpLCAtMiwg MCwgMCwgKDMsIDUsIDEwLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNf MF9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDAsIDEsIDAsICgyLCA1LCAxMCwgMikpLAotLSAg ICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzFfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEp LCAxLCAxLCAwLCAoMywgMywgMTAsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNf YXhpc18yX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMiwgMSwgMCwgKDMsIDUsIDYsIDIpKSwK LS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWdfb25lc2lkZWQiLCAoMywgNSwg MTAsIDEpLCAtMiwgMSwgMCwgKDMsIDUsIDYsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgi Y29tcGxleF9kZWZhdWx0X2F4aXMiLCAoMiwgNSwgMiksIE5vbmUsIE5vbmUsIE5vbmUsICgyLCA1 LCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxfaW52ZXJzZSIsICgyLCA1LCAxKSwg MSwgTm9uZSwgMSwgKDIsIDUsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgiY29tcGxleF9p bnZlcnNlIiwgKDIsIDUsIDIpLCAxLCBOb25lLCAxLCAoMiwgNSwgMikpLAotLSAgICAgICAgICAg ICAgICAgICAgKCJpcmZmdF9heGlzXzAiLCAoMiwgNSwgMTAsIDIpLCAwLCAxLCAxLCAoMiwgNSwg MTAsIDEpKSwKLS0gICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc18xIiwgKDMsIDMsIDEw LCAyKSwgMSwgMSwgMSwgKDMsIDQsIDEwLCAxKSksCi0tICAgICAgICAgICAgICAgICAgICAoImly ZmZ0X2F4aXNfMiIsICgzLCA1LCA2LCAyKSwgMiwgMSwgMSwgKDMsIDUsIDEwLCAxKSksCi0tICAg ICAgICAgICAgICAgICAgICAoImlyZmZ0X2F4aXNfbmVnIiwgKDMsIDUsIDYsIDIpLCAtMiwgMSwg MSwgKDMsIDUsIDEwLCAxKSksCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKQot LSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2RmdCgKLS0gICAgICAgIHNlbGYsCi0t ICAgICAgICBfOiBzdHIsCi0tICAgICAgICB2ZXJzaW9uOiBpbnQsCi0tICAgICAgICBfdGVzdF9h c3BlY3Q6IHN0ciwKLS0gICAgICAgIGlucHV0X3NoYXBlOiB0dXBsZVtpbnRdLAotLSAgICAgICAg YXhpczogaW50IHwgTm9uZSwKLS0gICAgICAgIG9uZXNpZGVkOiBpbnQgfCBOb25lLAotLSAgICAg ICAgaW52ZXJzZTogaW50IHwgTm9uZSwKLS0gICAgICAgIGV4cGVjdGVkX3NoYXBlOiB0dXBsZVtp bnRdLAotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICAjIEJ1aWxkIHRoZSBhdHRyaWJ1dGVzIGZv ciBkaWZmZXJlbnQgb3BzZXQgdmVyc2lvbnMKLS0gICAgICAgIGF0dHJpYnV0ZXMgPSB7fQotLSAg ICAgICAgaWYgb25lc2lkZWQgaXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgYXR0cmlidXRlc1si b25lc2lkZWQiXSA9IG9uZXNpZGVkCi0tICAgICAgICBpZiBpbnZlcnNlIGlzIG5vdCBOb25lOgot LSAgICAgICAgICAgIGF0dHJpYnV0ZXNbImludmVyc2UiXSA9IGludmVyc2UKLS0KLS0gICAgICAg IGlmIHZlcnNpb24gPCAyMDoKLS0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgotLSAg ICAgICAgICAgICAgICBhdHRyaWJ1dGVzWyJheGlzIl0gPSBheGlzCi0tICAgICAgICAgICAgbm9k ZXMgPSBbbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiJdLCBbIm91dHB1dCJdLCAqKmF0dHJp YnV0ZXMpXQotLSAgICAgICAgICAgIHZhbHVlX2luZm9zID0gW10KLS0gICAgICAgIGVsc2U6Ci0t ICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24gPj0gMjAKLS0gICAgICAgICAgICBpZiBheGlzIGlz IG5vdCBOb25lOgotLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKLS0gICAgICAgICAgICAgICAg ICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAg ICAgICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsiYXhp cyJdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpLCAoYXhpcywpKSwKLS0gICAgICAgICAgICAgICAgICAgICks Ci0tICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4 aXMiXSwgWyJvdXRwdXQiXSwgKiphdHRyaWJ1dGVzKSwKLS0gICAgICAgICAgICAgICAgXQotLSAg ICAgICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlz IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0KLS0gICAgICAgICAgICBlbHNlOgotLSAgICAgICAg ICAgICAgICBub2RlcyA9IFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwg WyJpbnB1dCIsICIiLCAiIl0sIFsib3V0cHV0Il0sICoqYXR0cmlidXRlcyksCi0tICAgICAgICAg ICAgICAgIF0KLS0gICAgICAgICAgICAgICAgdmFsdWVfaW5mb3MgPSBbXQotLQotLSAgICAgICAg IyBDb25zdHJ1Y3QgdGhlIGdyYXBoCi0tICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgo Ci0tICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtl X25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAgICAg ICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCi0tICAgICAgICAgICAg ICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICAgICAiaW5w dXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAotLSAgICAg ICAgICAgICAgICAgICAgICAgIGlucHV0X3NoYXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAg IG5wLm9uZXMoaW5wdXRfc2hhcGUsIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKLS0gICAg ICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAg ICpub2RlcywKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQot LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5w dXQiLCBUZW5zb3JQcm90by5GTE9BVCwgaW5wdXRfc2hhcGUpLAotLSAgICAgICAgICAgICAgICAq dmFsdWVfaW5mb3MsCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91 dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBleHBlY3RlZF9zaGFwZSksCi0tICAgICAgICAgICAg XSwKLS0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCB2ZXJzaW9uKV0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIG5hbWUs Ci0tICAgICAgICAgICAgICAgIHZlcnNpb24sCi0tICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0 LAotLSAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKLS0gICAgICAgICAgICAgICAgYXhpcywK LS0gICAgICAgICAgICAgICAgb25lc2lkZWQsCi0tICAgICAgICAgICAgICAgIGludmVyc2UsCi0t ICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAotLSAgICAgICAgICAgICkKLS0gICAgICAg ICAgICBmb3IgKG5hbWUsIHZlcnNpb24pLCAoCi0tICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0 LAotLSAgICAgICAgICAgICAgICBpbnB1dF9zaGFwZSwKLS0gICAgICAgICAgICAgICAgYXhpcywK LS0gICAgICAgICAgICAgICAgb25lc2lkZWQsCi0tICAgICAgICAgICAgICAgIGludmVyc2UsCi0t ICAgICAgICAgICAgICAgIGV4cGVjdGVkX3NoYXBlLAotLSAgICAgICAgICAgICkgaW4gaXRlcnRv b2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkRGVCIpLAot LSAgICAgICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2RlZmF1bHRf YXhpcyIsICgyLCA1LCAxKSwgTm9uZSwgTm9uZSwgTm9uZSwgKDIsIDQyLCAyKSksCi0tICAgICAg ICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMCIsICgzLCA1LCAxMCwgMSksIDAsIDAsIDAsICg0 MiwgNSwgMTAsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18xIiwgKDMs IDUsIDEwLCAxKSwgMSwgMCwgMCwgKDMsIDQyLCAxMCwgMikpLAotLSAgICAgICAgICAgICAgICAg ICAgKCJyZWFsc19heGlzXzIiLCAoMywgNSwgMTAsIDEpLCAyLCAwLCAwLCAoMywgNSwgNDIsIDIp KSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWciLCAoMywgNSwgMTAsIDEp LCAtMiwgMCwgMCwgKDMsIDUsIDQyLCAyKSksCi0tICAgICAgICAgICAgICAgICAgICAoInJlYWxz X2F4aXNfMF9vbmVzaWRlZCIsICgzLCA1LCAxMCwgMSksIDAsIDEsIDAsICgyMiwgNSwgMTAsIDIp KSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18xX29uZXNpZGVkIiwgKDMsIDUs IDEwLCAxKSwgMSwgMSwgMCwgKDMsIDIyLCAxMCwgMikpLAotLSAgICAgICAgICAgICAgICAgICAg KCJyZWFsc19heGlzXzJfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAyLCAxLCAwLCAoMywgNSwg MjIsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc19uZWdfb25lc2lkZWQi LCAoMywgNSwgMTAsIDEpLCAtMiwgMSwgMCwgKDMsIDUsIDIyLCAyKSksCi0tICAgICAgICAgICAg ICAgICAgICAoImNvbXBsZXhfZGVmYXVsdF9heGlzIiwgKDIsIDUsIDIpLCBOb25lLCBOb25lLCBO b25lLCAoMiwgNDIsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAgICgicmVhbF9pbnZlcnNlIiwg KDIsIDUsIDEpLCAxLCBOb25lLCAxLCAoMiwgNDIsIDIpKSwKLS0gICAgICAgICAgICAgICAgICAg ICgiY29tcGxleF9pbnZlcnNlIiwgKDIsIDUsIDIpLCAxLCBOb25lLCAxLCAoMiwgNDIsIDIpKSwK LS0gICAgICAgICAgICAgICAgICAgICgiaXJmZnRfYXhpc18wIiwgKDIsIDUsIDEwLCAyKSwgMCwg MSwgMSwgKDQyLCA1LCAxMCwgMSkpLAotLSAgICAgICAgICAgICAgICAgICAgKCJpcmZmdF9heGlz XzEiLCAoMywgMywgMTAsIDIpLCAxLCAxLCAxLCAoMywgNDIsIDEwLCAxKSksCi0tICAgICAgICAg ICAgICAgICAgICAoImlyZmZ0X2F4aXNfMiIsICgzLCA1LCA2LCAyKSwgMiwgMSwgMSwgKDMsIDUs IDQyLCAxKSksCi0tICAgICAgICAgICAgICAgICAgICAoImlyZmZ0X2F4aXNfbmVnIiwgKDMsIDUs IDYsIDIpLCAtMiwgMSwgMSwgKDMsIDUsIDQyLCAxKSksCi0tICAgICAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgKQotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRlZiB0ZXN0X2RmdF9kZnRf bGVuZ3RoKAotLSAgICAgICAgc2VsZiwKLS0gICAgICAgIF86IHN0ciwKLS0gICAgICAgIHZlcnNp b246IGludCwKLS0gICAgICAgIF90ZXN0X2FzcGVjdDogc3RyLAotLSAgICAgICAgaW5wdXRfc2hh cGU6IHR1cGxlW2ludF0sCi0tICAgICAgICBheGlzOiBpbnQgfCBOb25lLAotLSAgICAgICAgb25l c2lkZWQ6IGludCB8IE5vbmUsCi0tICAgICAgICBpbnZlcnNlOiBpbnQgfCBOb25lLAotLSAgICAg ICAgZXhwZWN0ZWRfc2hhcGU6IHR1cGxlW2ludF0sCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAg ICMgQnVpbGQgdGhlIGF0dHJpYnV0ZXMgZm9yIGRpZmZlcmVudCBvcHNldCB2ZXJzaW9ucwotLSAg ICAgICAgYXR0cmlidXRlcyA9IHt9Ci0tICAgICAgICBpZiBvbmVzaWRlZCBpcyBub3QgTm9uZToK LS0gICAgICAgICAgICBhdHRyaWJ1dGVzWyJvbmVzaWRlZCJdID0gb25lc2lkZWQKLS0gICAgICAg IGlmIGludmVyc2UgaXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgYXR0cmlidXRlc1siaW52ZXJz ZSJdID0gaW52ZXJzZQotLQotLSAgICAgICAgZGZ0X2xlbmd0aCA9IDQyCi0tCi0tICAgICAgICBp ZiB2ZXJzaW9uIDwgMjA6Ci0tICAgICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToKLS0gICAg ICAgICAgICAgICAgYXR0cmlidXRlc1siYXhpcyJdID0gYXhpcwotLSAgICAgICAgICAgIG5vZGVz ID0gWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAi Q29uc3RhbnQiLAotLSAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAg ICBbImRmdF9sZW5ndGgiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29y KAotLSAgICAgICAgICAgICAgICAgICAgICAgICJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5U NjQsICgpLCAoZGZ0X2xlbmd0aCwpCi0tICAgICAgICAgICAgICAgICAgICApLAotLSAgICAgICAg ICAgICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAi ZGZ0X2xlbmd0aCJdLCBbIm91dHB1dCJdLCAqKmF0dHJpYnV0ZXMpLAotLSAgICAgICAgICAgIF0K LS0gICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRf bGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0KLS0gICAgICAgIGVsc2U6Ci0tICAgICAg ICAgICAgYXNzZXJ0IHZlcnNpb24gPj0gMjAKLS0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBO b25lOgotLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKLS0gICAgICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAg ICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAot LSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwgVGVuc29y UHJvdG8uSU5UNjQsICgpLCAoYXhpcywpKSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0tICAgICAgICAgICAgICAgICAgICAgICAgIkNv bnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICBbImRmdF9sZW5ndGgiXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1t YWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImRmdF9sZW5ndGgiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKCksIChkZnRfbGVuZ3RoLCkKLS0gICAgICAgICAgICAgICAgICAg ICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiREZUIiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICBbImlucHV0IiwgImRmdF9sZW5ndGgiLCAiYXhpcyJdLAotLSAgICAgICAgICAg ICAgICAgICAgICAgIFsib3V0cHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgKiphdHRy aWJ1dGVzLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgXQotLSAg ICAgICAgICAgICAgICB2YWx1ZV9pbmZvcyA9IFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAot LSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiYXhpcyIsIFRlbnNv clByb3RvLklOVDY0LCAoKSksCi0tICAgICAgICAgICAgICAgIF0KLS0gICAgICAgICAgICBlbHNl OgotLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKLS0gICAgICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAotLSAgICAgICAgICAg ICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsiZGZ0X2xlbmd0aCJd LAotLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwg KGRmdF9sZW5ndGgsKQotLSAgICAgICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAg ICAgICAgICApLAotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAg ICAgICAgICAgICAgICJERlQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAi ZGZ0X2xlbmd0aCIsICIiXSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAot LSAgICAgICAgICAgICAgICAgICAgICAgICoqYXR0cmlidXRlcywKLS0gICAgICAgICAgICAgICAg ICAgICksCi0tICAgICAgICAgICAgICAgIF0KLS0gICAgICAgICAgICAgICAgdmFsdWVfaW5mb3Mg PSBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVu Z3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKQotLSAgICAgICAgICAgICAgICBdCi0rICAgICAg ICAgICAgZ3JhcGgsCi0rICAgICAgICAgICAgWwotKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCi0rICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEw LCkpLAotKyAgICAgICAgICAgIF0sCi0rICAgICAgICApCi0gCi0tICAgICAgICAjIENvbnN0cnVj dCB0aGUgZ3JhcGgKLSAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLSAgICAgICAg ICAgICBbXSwKLSAgICAgICAgICAgICBbCi0gICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLSAg ICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0gICAgICAgICAgICAgICAgICAgICBbXSwK LS0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZh bHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgaW5wdXRfc2hhcGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhp bnB1dF9zaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAotLSAgICAgICAgICAgICAg ICAgICAgKSwKLSsgICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwKLSsgICAgICAgICAgICAg ICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwg KDEwLCkpLAotICAgICAgICAgICAgICAgICApLAotLSAgICAgICAgICAgICAgICAqbm9kZXMsCi0r ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFubldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0s IHBlcmlvZGljPTApLAotICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAg ICApCi0gICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0gICAgICAgICAgICAgZ3JhcGgs Ci0gICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBpbnB1dF9zaGFwZSksCi0tICAgICAgICAgICAg ICAgICp2YWx1ZV9pbmZvcywKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIGV4cGVjdGVkX3NoYXBlKSwKLSsgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKCkpLAotKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVu c29yUHJvdG8uRkxPQVQsICgxMCwpKSwKLSAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK LSAgICAgICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwot LSAgICAgICAgICAgICgibGFzdCIsIDMpLAotLSAgICAgICAgICAgICgibGFzdF9uZWdhdGl2ZSIs IC0xKSwKLS0gICAgICAgICAgICAoIm91dF9vZl9yYW5nZSIsIDQpLAotLSAgICAgICAgICAgICgi b3V0X29mX3JhbmdlX25lZ2F0aXZlIiwgLTUpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRl ZiB0ZXN0X2RmdF9pbnZhbGlkX2F4aXNfb3BzZXQxNyhzZWxmLCBfOiBzdHIsIGF4aXM6IGludCkg LT4gTm9uZToKLSsgICAgZGVmIHRlc3RfYmxhY2ttYW53aW5kb3coc2VsZik6Ci0gICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICAgICAg WwotICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCi0gICAgICAgICAgICAgICAgICAgICAiQ29u c3RhbnQiLAotICAgICAgICAgICAgICAgICAgICAgW10sCi0tICAgICAgICAgICAgICAgICAgICBb ImlucHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKLS0gICAg ICAgICAgICAgICAgICAgICAgICAiaW5wdXQiLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFRl bnNvclByb3RvLkZMT0FULAotLSAgICAgICAgICAgICAgICAgICAgICAgICgyLCA1LCA1LCAyKSwK LS0gICAgICAgICAgICAgICAgICAgICAgICBucC5vbmVzKCgyLCA1LCA1LCAyKSwgZHR5cGU9bnAu ZmxvYXQzMikuZmxhdHRlbigpLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLSsgICAgICAgICAg ICAgICAgICAgIFsic2hhcGUiXSwKLSsgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVu c29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAotICAgICAgICAgICAg ICAgICApLAotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIl0s IFsib3V0cHV0Il0sIG9uZXNpZGVkPTEsIGF4aXM9YXhpcyksCi0rICAgICAgICAgICAgICAgIG1h a2Vfbm9kZSgiSGFtbWluZ1dpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0pLAotICAgICAgICAgICAg IF0sCi0gICAgICAgICAgICAgW10sCi0gICAgICAgICApCi0tICAgICAgICB3aXRoIHNlbGYuYXNz ZXJ0UmFpc2VzKG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yKToKLS0gICAgICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgICAgIGdyYXBoLAotLSAg ICAgICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNSwgNSwgMikpLAotLSAgICAgICAg ICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCAzLCA1LCAyKSksCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDE3KV0s Ci0tICAgICAgICAgICAgKQotKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotKyAgICAg ICAgICAgIGdyYXBoLAotKyAgICAgICAgICAgIFsKLSsgICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAotKyAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgx MCwpKSwKLSsgICAgICAgICAgICBdLAotKyAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoCi0tICAgICAgICBbCi0tICAgICAgICAgICAgKCJsYXN0IiwgMyksCi0tICAgICAg ICAgICAgKCJsYXN0X25lZ2F0aXZlIiwgLTEpLAotLSAgICAgICAgICAgICgib3V0X29mX3Jhbmdl IiwgNCksCi0tICAgICAgICAgICAgKCJvdXRfb2ZfcmFuZ2VfbmVnYXRpdmUiLCAtNSksCi0tICAg ICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfZGZ0X2ludmFsaWRfYXhpc19vcHNldDIwKHNl bGYsIF86IHN0ciwgYXhpczogaW50KSAtPiBOb25lOgotICAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotICAgICAgICAgICAgIFtdLAotICAgICAgICAgICAgIFsKLSAgICAgICAgICAg ICAgICAgbWFrZV9ub2RlKAotICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKLSAgICAg ICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAotLSAg ICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoCi0tICAgICAgICAgICAgICAgICAg ICAgICAgImlucHV0IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9B VCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAoMiwgNSwgNSwgMiksCi0tICAgICAgICAgICAg ICAgICAgICAgICAgbnAub25lcygoMiwgNSwgNSwgMiksIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0 ZW4oKSwKLS0gICAgICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgICAgICksCi0tICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIs Ci0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiYXhpcyJd LAotLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoImF4aXMiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKCksIChheGlzLCkpLAotKyAgICAgICAgICAgICAgICAgICAgWyJzaGFwZSJd LAotKyAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29y UHJvdG8uSU5UNjQsICgpLCAoMTAsKSksCi0gICAgICAgICAgICAgICAgICksCi0tICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICIiLCAiYXhpcyJdLCBbIm91dHB1dCJd KSwKLSsgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW1taW5nV2luZG93IiwgWyJzaGFwZSJd LCBbInkiXSwgcGVyaW9kaWM9MCksCi0gICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICBbXSwK LSAgICAgICAgICkKLS0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9p bmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IpOgotLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKLS0gICAgICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAgICAgICAgIFsKLS0gICAg ICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJv dG8uRkxPQVQsICgyLCA1LCA1LCAyKSksCi0tICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLS0gICAgICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZM T0FULCAoMiwgMywgNSwgMikpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAot LSAgICAgICAgICAgICkKLSsgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKLSsgICAgICAg ICAgICBncmFwaCwKLSsgICAgICAgICAgICBbCi0rICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKLSsgICAgICAgICAg ICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAs KSksCi0rICAgICAgICAgICAgXSwKLSsgICAgICAgICkKLSAKLSAgICAgZGVmIHRlc3RfZGZ0X3Jm ZnRfaW52YWxpZF9jb21wbGV4X2lucHV0X29wc2V0MTcoc2VsZikgLT4gTm9uZToKLSAgICAgICAg ICIiIlRlc3QgdGhhdCBSRkZUIChvbmVzaWRlZD0xLCBpbnZlcnNlPTApIHJlamVjdHMgY29tcGxl eCBpbnB1dCIiIgotQEAgLTEwMDExLDEyOCArNzgwNiw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVy ZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAotICAgICAgICAg ICAgICkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAg ICAgICAgICgicmVhbCIsICgyLCA1LCA1LCAxKSksCi0tICAgICAgICAgICAgKCJjb21wbGV4Iiwg KDIsIDUsIDUsIDIpKSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9kZnRfZHlu YW1pY19heGlzX29wc2V0MjAoc2VsZiwgXzogc3RyLCBzaGFwZTogdHVwbGVbaW50LCAuLi5dKSAt PiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAg IFsoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKLS0gICAgICAgICAgICBbCi0tICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIs Ci0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQi XSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAg ICAgICAgICAgICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJv dG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAot LSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAg ICAgICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0p LAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0tICAgICAgICAg ICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRl bnNvclByb3RvLkZMT0FULCBzaGFwZSksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNSwgNSwgMikpLAotLSAg ICAgICAgICAgIF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgMjApXSwKLS0gICAgICAgICkKLS0KLS0gICAgQHBhcmFtZXRlcml6 ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgicmVhbCIsICgyLCA1LCA1LCAx KSksCi0tICAgICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3RfZGZ0X2R5bmFtaWNfYXhpc19v bmVzaWRlZF9kZnRfbGVuZ3RoX29wc2V0MjAoCi0tICAgICAgICBzZWxmLCBfOiBzdHIsIHNoYXBl OiB0dXBsZVtpbnQsIC4uLl0KLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwg KCkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAg ICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0tICAgICAgICAgICAgICAgICAgICBbXSwKLS0g ICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKLS0gICAgICAgICAgICAgICAgICAgIHZhbHVl PW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgc2hhcGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5 cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAg ICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAg ICAgICAgICAgIkNvbnN0YW50IiwKLS0gICAgICAgICAgICAgICAgICAgIFtdLAotLSAgICAgICAg ICAgICAgICAgICAgWyJkZnRfbGVuZ3RoIl0sCi0tICAgICAgICAgICAgICAgICAgICB2YWx1ZT1t YWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAgICAgICAgICAiZGZ0X2xlbmd0aCIsCi0tICAg ICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UNjQsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoWzQyXSwgZHR5 cGU9bnAuaW50NjQpLAotLSAgICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAg KSwKLS0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAgIkRG VCIsIFsiaW5wdXQiLCAiZGZ0X2xlbmd0aCIsICJheGlzIl0sIFsib3V0cHV0Il0sIG9uZXNpZGVk PTEKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgICAgIFtd LAotLSAgICAgICAgKQotLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAotLSAgICAgICAg ICAgIGdyYXBoLAotLSAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgc2hhcGUpLAotLSAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8u SU5UNjQsICgpKSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKLS0g ICAgICAgICAgICAgICAgICAgICJvdXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5v bmUsIE5vbmUsIDIpCi0tICAgICAgICAgICAgICAgICksCi0tICAgICAgICAgICAgXSwKLS0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAy MCldLAotLSAgICAgICAgKQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAg ICBbCi0tICAgICAgICAgICAgKCJyZWFsIiwgKDIsIDUsIDUsIDEpKSwKLS0gICAgICAgIF0KLS0g ICAgKQotLSAgICBkZWYgdGVzdF9kZnRfZHluYW1pY19heGlzX29uZXNpZGVkX29wc2V0MjAoCi0t ICAgICAgICBzZWxmLCBfOiBzdHIsIHNoYXBlOiB0dXBsZVtpbnQsIC4uLl0KLS0gICAgKSAtPiBO b25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAotLSAgICAgICAgICAgIFso ImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKLS0gICAgICAgICAgICBbCi0tICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCi0t ICAgICAgICAgICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwK LS0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAotLSAgICAgICAgICAgICAg ICAgICAgICAgICJpbnB1dCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8u RkxPQVQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAotLSAg ICAgICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAg ICAgbWFrZV9ub2RlKCJERlQiLCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0sIG9u ZXNpZGVkPTEpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICAp Ci0tICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCi0tICAgICAgICAgICAgZ3JhcGgsCi0t ICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJp bnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBzaGFwZSksCi0tICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oCi0tICAgICAgICAgICAgICAgICAgICAib3V0cHV0IiwgVGVuc29y UHJvdG8uRkxPQVQsIChOb25lLCBOb25lLCBOb25lLCAyKQotLSAgICAgICAgICAgICAgICApLAot LSAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgMjApXSwKLS0gICAgICAgICkKLS0KLSAgICAgZGVmIHRlc3Rf ZGZ0X29uZXNpZGVkX2RlZmF1bHRfYXhpc19vcHNldDE3KHNlbGYpIC0+IE5vbmU6Ci0gICAgICAg ICAjIE9wc2V0IDE3IHNldHMgZGVmYXVsdCBheGlzIHRvIGJlIDEuCi0gICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCi1AQCAtMTA1OTEsNDEgKzgyNjQsNiBAQCBjbGFzcyBUZXN0U2hh cGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKLSAgICAgICAgICAgICBdLAot ICAgICAgICAgKQotIAotLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAgICAgICBbCi0t ICAgICAgICAgICAgKFsxLCAyLCAzXSwgWyIxIiwgIjIiXSksCi0tICAgICAgICAgICAgKFsxLCAy LCAzXSwgTm9uZSksCi0tICAgICAgICAgICAgKE5vbmUsIFsiMSIsICIyIiwgIjMiXSksCi0tICAg ICAgICAgICAgKE5vbmUsIE5vbmUpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIEB1bml0dGVz dC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5t bCBvcGVyYXRvcnMiKQotLSAgICBkZWYgdGVzdF9jYXRlZ29yeV9tYXBwZXJfZmFpbHNfaWZfaW52 YWxpZF9hdHRyaWJ1dGVzKAotLSAgICAgICAgc2VsZiwgY2F0c19pbnQ2NHMsIGNhdHNfc3RyaW5n cwotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBjYXQgPSBtYWtlX25vZGUoCi0tICAgICAgICAg ICAgIkNhdGVnb3J5TWFwcGVyIiwKLS0gICAgICAgICAgICBbIngiXSwKLS0gICAgICAgICAgICBb InkiXSwKLS0gICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCi0tICAgICAgICAgICAg Y2F0c19pbnQ2NHM9Y2F0c19pbnQ2NHMsCi0tICAgICAgICAgICAgY2F0c19zdHJpbmdzPWNhdHNf c3RyaW5ncywKLS0gICAgICAgICkKLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK LS0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzMCwgNCwgNSkpXSwKLS0g ICAgICAgICAgICBbY2F0XSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICkKLS0gICAgICAg IHNlbGYuYXNzZXJ0UmFpc2VzKAotLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLklu ZmVyZW5jZUVycm9yLAotLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAotLSAgICAgICAgICAg IGdyYXBoLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WwotLSAgICAgICAgICAgICAgICBt YWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIDEpLAotLSAgICAgICAgICAgICAgICBtYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIDExKSwKLS0gICAgICAgICAgICBdLAotLSAgICAgICAgKQotLQot ICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0 ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKLSAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9y ZWdyZXNzb3Ioc2VsZikgLT4gTm9uZToKLSAgICAgICAgIHRyZWUgPSBtYWtlX25vZGUoCi1AQCAt MTA2NDksMTMxICs4Mjg3LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUlu ZmVyZW5jZUhlbHBlcik6Ci0gICAgICAgICAgICAgXSwKLSAgICAgICAgICkKLSAKLS0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKFtUZW5zb3JQcm90by5GTE9BVCwgVGVuc29yUHJvdG8uRE9VQkxF LCBUZW5zb3JQcm90by5GTE9BVDE2XSkKLS0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9N TCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCi0tICAg IGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGUoc2VsZiwgZHR5cGUpIC0+IE5vbmU6Ci0tICAgICAgICBp bnRlcmlvcl9ub2RlcyA9IDUKLS0gICAgICAgIGxlYXZlcyA9IDkKLS0gICAgICAgIHRyZWUgPSBt YWtlX25vZGUoCi0tICAgICAgICAgICAgIlRyZWVFbnNlbWJsZSIsCi0tICAgICAgICAgICAgWyJ4 Il0sCi0tICAgICAgICAgICAgWyJ5Il0sCi0tICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9N QUlOLAotLSAgICAgICAgICAgIG5fdGFyZ2V0cz01LAotLSAgICAgICAgICAgIG5vZGVzX2ZlYXR1 cmVpZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgbm9kZXNfc3BsaXRzPW1h a2VfdGVuc29yKAotLSAgICAgICAgICAgICAgICAibm9kZXNfc3BsaXRzIiwKLS0gICAgICAgICAg ICAgICAgZHR5cGUsCi0tICAgICAgICAgICAgICAgIChpbnRlcmlvcl9ub2RlcywpLAotLSAgICAg ICAgICAgICAgICBsaXN0KHJhbmdlKGludGVyaW9yX25vZGVzKSksCi0tICAgICAgICAgICAgKSwK LS0gICAgICAgICAgICBub2Rlc19tb2Rlcz1tYWtlX3RlbnNvcigKLS0gICAgICAgICAgICAgICAg Im5vZGVzX21vZGVzIiwKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDgsCi0tICAg ICAgICAgICAgICAgIChpbnRlcmlvcl9ub2RlcywpLAotLSAgICAgICAgICAgICAgICBbMF0gKiBp bnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgIG5vZGVzX3RydWVu b2RlaWRzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVzX2ZhbHNlbm9k ZWlkcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBub2Rlc190cnVlbGVhZnM9 WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgbm9kZXNfZmFsc2VsZWFmcz1bMF0g KiBpbnRlcmlvcl9ub2RlcywKLS0gICAgICAgICAgICBtZW1iZXJzaGlwX3ZhbHVlcz1tYWtlX3Rl bnNvcigKLS0gICAgICAgICAgICAgICAgIm1lbWJlcnNoaXBfdmFsdWVzIiwKLS0gICAgICAgICAg ICAgICAgZHR5cGUsCi0tICAgICAgICAgICAgICAgICg3LCksCi0tICAgICAgICAgICAgICAgIFsw LjAsIDAuMSwgMC4yLCBucC5uYW4sIDAuNCwgMC41LCAxLjBdLAotLSAgICAgICAgICAgICksCi0t ICAgICAgICAgICAgbGVhZl90YXJnZXRpZHM9WzBdICogbGVhdmVzLAotLSAgICAgICAgICAgIGxl YWZfd2VpZ2h0cz1tYWtlX3RlbnNvcigibGVhZl93ZWlnaHRzIiwgZHR5cGUsIChsZWF2ZXMsKSwg WzFdICogbGVhdmVzKSwKLS0gICAgICAgICAgICB0cmVlX3Jvb3RzPVswXSwKLS0gICAgICAgICkK LS0KLS0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJ4 IiwgZHR5cGUsICgiQmF0Y2ggU2l6ZSIsICJGZWF0dXJlcyIpKV0sCi0tICAgICAgICAgICAgW3Ry ZWVdLAotLSAgICAgICAgICAgIFtdLAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgZHR5cGUsICgiQmF0Y2ggU2l6ZSIsIDUpKV0sCi0tICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1bCi0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5Y X01MX0RPTUFJTiwgNSksCi0tICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJ TiwgMTEpLAotLSAgICAgICAgICAgIF0sCi0tICAgICAgICApCi0tCi0tICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAg IFswXSAqIDYsCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBU ZW5zb3JQcm90by5ET1VCTEUsICg5LCksIFsxXSAqIDkpLAotLSAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcigibm9kZXNfc3BsaXRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoNSwpLCBbMV0gKiA1 KSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgWzBd ICogNSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIFRlbnNv clByb3RvLkZMT0FULCAoOSwpLCBbMV0gKiA5KSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5z b3IoIm5vZGVzX3NwbGl0cyIsIFRlbnNvclByb3RvLkRPVUJMRSwgKDUsKSwgWzFdICogNSksCi0t ICAgICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgIFswXSAqIDUs Ci0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBUZW5zb3JQcm90 by5ET1VCTEUsICgxOCwpLCBbMV0gKiAxOCksCi0tICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y KCJub2Rlc19zcGxpdHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg1LCksIFsxXSAqIDUpLAotLSAg ICAgICAgICAgICksCi0tICAgICAgICAgICAgKAotLSAgICAgICAgICAgICAgICBbMF0gKiA1LAot LSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigibGVhZl93ZWlnaHRzIiwgVGVuc29yUHJvdG8u RE9VQkxFLCAoOSwpLCBbMV0gKiA5KSwKLS0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm5v ZGVzX3NwbGl0cyIsIFRlbnNvclByb3RvLkZMT0FULCAoNSwpLCBbMV0gKiA1KSwKLS0gICAgICAg ICAgICApLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9O TlhfTUwsICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQot LSAgICBkZWYgdGVzdF90cmVlX2Vuc2VtYmxlX2ZhaWxzX2lmX2ludmFsaWRfYXR0cmlidXRlcygK LS0gICAgICAgIHNlbGYsCi0tICAgICAgICBub2Rlc190cnVlbm9kZWlkcywKLS0gICAgICAgIGxl YWZfd2VpZ2h0cywKLS0gICAgICAgIG5vZGVzX3NwbGl0cywKLS0gICAgKSAtPiBOb25lOgotLSAg ICAgICAgaW50ZXJpb3Jfbm9kZXMgPSA1Ci0tICAgICAgICBsZWF2ZXMgPSA5Ci0tICAgICAgICB0 cmVlID0gbWFrZV9ub2RlKAotLSAgICAgICAgICAgICJUcmVlRW5zZW1ibGUiLAotLSAgICAgICAg ICAgIFsieCJdLAotLSAgICAgICAgICAgIFsieSJdLAotLSAgICAgICAgICAgIGRvbWFpbj1PTk5Y X01MX0RPTUFJTiwKLS0gICAgICAgICAgICBuX3RhcmdldHM9NSwKLS0gICAgICAgICAgICBub2Rl c19mZWF0dXJlaWRzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVzX3Nw bGl0cz1ub2Rlc19zcGxpdHMsCi0tICAgICAgICAgICAgbm9kZXNfbW9kZXM9bWFrZV90ZW5zb3Io Ci0tICAgICAgICAgICAgICAgICJub2Rlc19tb2RlcyIsCi0tICAgICAgICAgICAgICAgIFRlbnNv clByb3RvLlVJTlQ4LAotLSAgICAgICAgICAgICAgICAoaW50ZXJpb3Jfbm9kZXMsKSwKLS0gICAg ICAgICAgICAgICAgWzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgKSwKLS0gICAg ICAgICAgICBub2Rlc190cnVlbm9kZWlkcz1ub2Rlc190cnVlbm9kZWlkcywKLS0gICAgICAgICAg ICBub2Rlc19mYWxzZW5vZGVpZHM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAg bm9kZXNfdHJ1ZWxlYWZzPVswXSAqIGludGVyaW9yX25vZGVzLAotLSAgICAgICAgICAgIG5vZGVz X2ZhbHNlbGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMsCi0tICAgICAgICAgICAgbGVhZl90YXJn ZXRpZHM9WzBdICogbGVhdmVzLAotLSAgICAgICAgICAgIGxlYWZfd2VpZ2h0cz1sZWFmX3dlaWdo dHMsCi0tICAgICAgICAgICAgdHJlZV9yb290cz1bMF0sCi0tICAgICAgICApCi0tCi0tICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgWygieCIsIFRlbnNvclBy b3RvLkRPVUJMRSwgKCJCYXRjaCBTaXplIiwgIkZlYXR1cmVzIikpXSwKLS0gICAgICAgICAgICBb dHJlZV0sCi0tICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2Vy dFJhaXNlcygKLS0gICAgICAgICAgICBvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJv ciwKLS0gICAgICAgICAgICBzZWxmLl9pbmZlcnJlZCwKLS0gICAgICAgICAgICBncmFwaCwKLS0g ICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlk KE9OTlhfTUxfRE9NQUlOLCA1KSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhf RE9NQUlOLCAxMSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLSAgICAgQHVuaXR0 ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54 Lm1sIG9wZXJhdG9ycyIpCi0gICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfY2xhc3NpZmllcihz ZWxmKSAtPiBOb25lOgotICAgICAgICAgdHJlZSA9IG1ha2Vfbm9kZSgKLUBAIC0xMDg3OCw0MCAr ODM5MSw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxw ZXIpOgotICAgICAgICAgICAgIF0sCi0gICAgICAgICApCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoWzEsIDIsIDNdLCBbIjEiLCAiMiIs ICIzIl0pLAotLSAgICAgICAgICAgIChOb25lLCBOb25lKSwKLS0gICAgICAgIF0KLS0gICAgKQot LSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0 ZXN0IGFpLm9ubngubWwgb3BlcmF0b3JzIikKLS0gICAgZGVmIHRlc3Rfb25lX2hvdF9lbmNvZGVy X2ZhaWxzX2lmX2ludmFsaWRfYXR0cmlidXRlcygKLS0gICAgICAgIHNlbGYsIGNhdHNfaW50NjRz LCBjYXRzX3N0cmluZ3MKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFsoImlucHV0IiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCAiTiIsIDMpKV0sCi0tICAgICAgICAgICAgWwotLSAgICAgICAgICAgICAgICBtYWtlX25vZGUo Ci0tICAgICAgICAgICAgICAgICAgICAiT25lSG90RW5jb2RlciIsCi0tICAgICAgICAgICAgICAg ICAgICBbImlucHV0Il0sCi0tICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAotLSAgICAg ICAgICAgICAgICAgICAgY2F0c19pbnQ2NHM9Y2F0c19pbnQ2NHMsCi0tICAgICAgICAgICAgICAg ICAgICBjYXRzX3N0cmluZ3M9Y2F0c19zdHJpbmdzLAotLSAgICAgICAgICAgICAgICAgICAgZG9t YWluPSJhaS5vbm54Lm1sIiwKLS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0sCi0t ICAgICAgICAgICAgW10sCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygK LS0gICAgICAgICAgICBvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwKLS0gICAg ICAgICAgICBzZWxmLl9pbmZlcnJlZCwKLS0gICAgICAgICAgICBncmFwaCwKLS0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVsKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxf RE9NQUlOLCAxKSwKLS0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAx MSksCi0tICAgICAgICAgICAgXSwKLS0gICAgICAgICkKLS0KLSAgICAgQHVuaXR0ZXN0LnNraXBV bmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJh dG9ycyIpCi0gICAgIGRlZiB0ZXN0X3ppcF9tYXAoc2VsZikgLT4gTm9uZToKLSAgICAgICAgIHBh cmFtcyA9ICgKLUBAIC0xMTA2NiwyOCArODU0NSw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5j ZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgotICAgICAgICAgICAgIG9ubnguY2hlY2tlci5j aGVja19tb2RlbChtb2RlbCwgZnVsbF9jaGVjaz1UcnVlKQotICAgICAgICAgICAgIG9ubnguc2hh cGVfaW5mZXJlbmNlLmluZmVyX3NoYXBlcyhtb2RlbCkKLSAKLS0gICAgQHBhcmFtZXRlcml6ZWQu ZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbnN0YW50T2ZTaGFwZSIpKQotLSAgICBkZWYgdGVz dF9pc3N1ZV9jb25zdGFudG9mc2hhcGVfNjEzNShzZWxmLCBfLCB2ZXJzaW9uKToKLS0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKLS0gICAgICAgICAgICBbKCJzdGQuY29uc3RhbnQi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDEsKSksICJvdXRwdXQiXSwKLS0gICAgICAgICAgICBbCi0t ICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAgICAgICAgICJDb25zdGFu dE9mU2hhcGUiLAotLSAgICAgICAgICAgICAgICAgICAgaW5wdXRzPVsic3RkLmNvbnN0YW50Il0s Ci0tICAgICAgICAgICAgICAgICAgICBvdXRwdXRzPVsib3V0cHV0Il0sCi0tICAgICAgICAgICAg ICAgICAgICBuYW1lPSJpbnZhbGlkX25vZGUiLAotLSAgICAgICAgICAgICAgICApCi0tICAgICAg ICAgICAgXSwKLS0gICAgICAgICAgICBbXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFr ZV90ZW5zb3IoInN0ZC5jb25zdGFudCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwpLCAoLTEwLCkp XSwKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAotLSAgICAgICAgICAg IG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAotLSAgICAgICAgICAgIHNlbGYu X2luZmVycmVkLAotLSAgICAgICAgICAgIGdyYXBoLAotLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKLS0gICAgICAg ICkKLS0KLSAgICAgZGVmIHRlc3RfcHJvdG9idWZfZGVmYXVsdChzZWxmKSAtPiBOb25lOgotICAg ICAgICAgbW9kZWxfdGV4dCA9ICIiIgotICAgICAgICAgICAgIGlyX3ZlcnNpb246IDgKLWRpZmYg LS1naXQgYS9vbm54L3Rlc3QvdGVzdF9leHRlcm5hbF9kYXRhLnB5IGIvb25ueC90ZXN0L3Rlc3Rf ZXh0ZXJuYWxfZGF0YS5weQotaW5kZXggYzA4NDVmOTZhLi5lYjA3ZjA5ZTggMTAwNjQ0Ci0tLS0g YS9vbm54L3Rlc3QvdGVzdF9leHRlcm5hbF9kYXRhLnB5Ci0rKysgYi9vbm54L3Rlc3QvdGVzdF9l eHRlcm5hbF9kYXRhLnB5Ci1AQCAtMTQsNyArMTQsNiBAQCBpbXBvcnQgd2FybmluZ3MKLSBmcm9t IHR5cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORywgQW55Ci0gCi0gaW1wb3J0IG51bXB5IGFzIG5w Ci0taW1wb3J0IHBhcmFtZXRlcml6ZWQKLSAKLSBpbXBvcnQgb25ueAotIGZyb20gb25ueCBpbXBv cnQgKAotQEAgLTEyMyw2MTYgKzEyMiw2IEBAIGNsYXNzIFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFz ZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYu bW9kZWxfZmlsZW5hbWUpCi0gCi0gCi0tQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFz cygKLS0gICAgWwotLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJwcm90b2J1ZiJ9 LAotLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwKLS0gICAg XQotLSkKLS1jbGFzcyBUZXN0TG9hZEV4dGVybmFsRGF0YShUZXN0TG9hZEV4dGVybmFsRGF0YUJh c2UpOgotLSAgICBkZWYgdGVzdF9sb2FkX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToKLS0g ICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2Rl bC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xv c2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkK LS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJp YnV0ZVswXS50Ci0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShh dHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCi0tCi0tICAgIGRlZiB0ZXN0 X2xvYWRfZXh0ZXJuYWxfZGF0YV9mb3JfbW9kZWwoc2VsZikgLT4gTm9uZToKLS0gICAgICAgIG1v ZGVsID0gb25ueC5sb2FkX21vZGVsKAotLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZW5hbWUs IHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAg ICAgICAgKQotLSAgICAgICAgbG9hZF9leHRlcm5hbF9kYXRhX2Zvcl9tb2RlbChtb2RlbCwgc2Vs Zi50ZW1wX2RpcikKLS0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmlu aXRpYWxpemVyWzBdCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJh eShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQotLQotLSAgICAg ICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQK LS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90 ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0gICAgZGVmIHRlc3Rfc2F2ZV9leHRl cm5hbF9kYXRhKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2Rl bChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLSAg ICAgICAgdGVtcF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgInNhdmVfY29weSIp Ci0tICAgICAgICBvcy5ta2Rpcih0ZW1wX2RpcikKLS0gICAgICAgIG5ld19tb2RlbF9maWxlbmFt ZSA9IG9zLnBhdGguam9pbih0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQotLSAgICAgICAgb25ueC5z YXZlX21vZGVsKG1vZGVsLCBuZXdfbW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9m b3JtYXQpCi0tCi0tICAgICAgICBuZXdfbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobmV3X21vZGVs X2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLSAgICAgICAgaW5pdGlhbGl6 ZXJfdGVuc29yID0gbmV3X21vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBucC50 ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxm LmluaXRpYWxpemVyX3ZhbHVlKQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG5ld19t b2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50Ci0tICAgICAgICBucC50ZXN0aW5nLmFz c2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVf dmFsdWUpCi0tCi0tCi0tQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKLS0gICAg WwotLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJwcm90b2J1ZiJ9LAotLSAgICAg ICAgeyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwKLS0gICAgXQotLSkKLS1j bGFzcyBUZXN0TG9hZEV4dGVybmFsRGF0YVNpbmdsZUZpbGUoVGVzdExvYWRFeHRlcm5hbERhdGFC YXNlKToKLS0gICAgZGVmIGNyZWF0ZV9leHRlcm5hbF9kYXRhX3RlbnNvcnMoCi0tICAgICAgICBz ZWxmLCB0ZW5zb3JzX2RhdGE6IGxpc3RbdHVwbGVbbGlzdFtBbnldLCBBbnldXQotLSAgICApIC0+ IGxpc3RbVGVuc29yUHJvdG9dOgotLSAgICAgICAgdGVuc29yX2ZpbGVuYW1lID0gInRlbnNvcnMu YmluIgotLSAgICAgICAgdGVuc29ycyA9IFtdCi0tCi0tICAgICAgICB3aXRoIG9wZW4ob3MucGF0 aC5qb2luKHNlbGYudGVtcF9kaXIsIHRlbnNvcl9maWxlbmFtZSksICJhYiIpIGFzIGRhdGFfZmls ZToKLS0gICAgICAgICAgICBmb3IgdmFsdWUsIHRlbnNvcl9uYW1lIGluIHRlbnNvcnNfZGF0YToK LS0gICAgICAgICAgICAgICAgdGVuc29yID0gZnJvbV9hcnJheShucC5hcnJheSh2YWx1ZSkpCi0t ICAgICAgICAgICAgICAgIG9mZnNldCA9IGRhdGFfZmlsZS50ZWxsKCkKLS0gICAgICAgICAgICAg ICAgaWYgb2Zmc2V0ICUgNDA5NiAhPSAwOgotLSAgICAgICAgICAgICAgICAgICAgZGF0YV9maWxl LndyaXRlKGIiXDAiICogKDQwOTYgLSBvZmZzZXQgJSA0MDk2KSkKLS0gICAgICAgICAgICAgICAg ICAgIG9mZnNldCA9IG9mZnNldCArIDQwOTYgLSBvZmZzZXQgJSA0MDk2Ci0tCi0tICAgICAgICAg ICAgICAgIGRhdGFfZmlsZS53cml0ZSh0ZW5zb3IucmF3X2RhdGEpCi0tICAgICAgICAgICAgICAg IHNldF9leHRlcm5hbF9kYXRhKAotLSAgICAgICAgICAgICAgICAgICAgdGVuc29yLAotLSAgICAg ICAgICAgICAgICAgICAgbG9jYXRpb249dGVuc29yX2ZpbGVuYW1lLAotLSAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0PW9mZnNldCwKLS0gICAgICAgICAgICAgICAgICAgIGxlbmd0aD1kYXRhX2Zp bGUudGVsbCgpIC0gb2Zmc2V0LAotLSAgICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgICAg IHRlbnNvci5uYW1lID0gdGVuc29yX25hbWUKLS0gICAgICAgICAgICAgICAgdGVuc29yLkNsZWFy RmllbGQoInJhd19kYXRhIikKLS0gICAgICAgICAgICAgICAgdGVuc29yLmRhdGFfbG9jYXRpb24g PSBvbm54LlRlbnNvclByb3RvLkVYVEVSTkFMCi0tICAgICAgICAgICAgICAgIHRlbnNvcnMuYXBw ZW5kKHRlbnNvcikKLS0KLS0gICAgICAgIHJldHVybiB0ZW5zb3JzCi0tCi0tICAgIGRlZiB0ZXN0 X2xvYWRfZXh0ZXJuYWxfc2luZ2xlX2ZpbGVfZGF0YShzZWxmKSAtPiBOb25lOgotLSAgICAgICAg bW9kZWwgPSBvbm54LmxvYWRfbW9kZWwoc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxp emF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdy YXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0 b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQotLQot LSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRl WzBdLnQKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJp YnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0gICAgZGVmIHRlc3Rfc2F2 ZV9leHRlcm5hbF9zaW5nbGVfZmlsZV9kYXRhKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2Rl bCA9IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRp b25fZm9ybWF0KQotLQotLSAgICAgICAgdGVtcF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1w X2RpciwgInNhdmVfY29weSIpCi0tICAgICAgICBvcy5ta2Rpcih0ZW1wX2RpcikKLS0gICAgICAg IG5ld19tb2RlbF9maWxlbmFtZSA9IG9zLnBhdGguam9pbih0ZW1wX2RpciwgIm1vZGVsLm9ubngi KQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBuZXdfbW9kZWxfZmlsZW5hbWUsIHNl bGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBuZXdfbW9kZWwgPSBvbm54Lmxv YWRfbW9kZWwobmV3X21vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQot LSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbmV3X21vZGVsLmdyYXBoLmluaXRpYWxpemVy WzBdCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFs aXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQotLQotLSAgICAgICAgYXR0cmli dXRlX3RlbnNvciA9IG5ld19tb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50Ci0tICAg ICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29y KSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCi0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRl cml6ZWQuZXhwYW5kKAotLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCi0tICAgICAgICAgICAg KFRydWUsIEZhbHNlKSwKLS0gICAgICAgICkKLS0gICAgKQotLSAgICBkZWYgdGVzdF9zYXZlX2V4 dGVybmFsX2ludmFsaWRfc2luZ2xlX2ZpbGVfZGF0YV9hbmRfY2hlY2soCi0tICAgICAgICBzZWxm LCB1c2VfYWJzb2x1dGVfcGF0aDogYm9vbAotLSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBtb2Rl bCA9IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRp b25fZm9ybWF0KQotLQotLSAgICAgICAgbW9kZWxfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVt cF9kaXIsICJzYXZlX2NvcHkiKQotLSAgICAgICAgb3MubWtkaXIobW9kZWxfZGlyKQotLQotLSAg ICAgICAgdHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfZGlyID0gb3MucGF0aC5qb2luKAotLSAgICAg ICAgICAgIHNlbGYudGVtcF9kaXIsICJpbnZhbGlkX2V4dGVybmFsX2RhdGEiCi0tICAgICAgICAp Ci0tICAgICAgICBvcy5ta2Rpcih0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9kaXIpCi0tCi0tICAg ICAgICBpZiB1c2VfYWJzb2x1dGVfcGF0aDoKLS0gICAgICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJu YWxfZGF0YV9sb2NhdGlvbiA9IG9zLnBhdGguam9pbigKLS0gICAgICAgICAgICAgICAgdHJhdmVy c2FsX2V4dGVybmFsX2RhdGFfZGlyLCAidGVuc29ycy5iaW4iCi0tICAgICAgICAgICAgKQotLSAg ICAgICAgZWxzZToKLS0gICAgICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9sb2NhdGlv biA9ICIuLi9pbnZhbGlkX2V4dGVybmFsX2RhdGEvdGVuc29ycy5iaW4iCi0tCi0tICAgICAgICBl eHRlcm5hbF9kYXRhX2RpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiZXh0ZXJuYWxf ZGF0YSIpCi0tICAgICAgICBvcy5ta2RpcihleHRlcm5hbF9kYXRhX2RpcikKLS0gICAgICAgIG5l d19tb2RlbF9maWxlcGF0aCA9IG9zLnBhdGguam9pbihtb2RlbF9kaXIsICJtb2RlbC5vbm54IikK LS0KLS0gICAgICAgIGRlZiBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfbm9fY2hlY2so bW9kZWw6IE1vZGVsUHJvdG8sIGxvY2F0aW9uOiBzdHIpOgotLSAgICAgICAgICAgIGZvciB0ZW5z b3IgaW4gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXI6Ci0tICAgICAgICAgICAgICAgIGlmIHRlbnNv ci5IYXNGaWVsZCgicmF3X2RhdGEiKToKLS0gICAgICAgICAgICAgICAgICAgIHNldF9leHRlcm5h bF9kYXRhKHRlbnNvciwgbG9jYXRpb24pCi0tCi0tICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4 dGVybmFsX2RhdGFfbm9fY2hlY2soCi0tICAgICAgICAgICAgbW9kZWwsCi0tICAgICAgICAgICAg bG9jYXRpb249dHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfbG9jYXRpb24sCi0tICAgICAgICApCi0t Ci0tICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9u RXJyb3IpOgotLSAgICAgICAgICAgIG9ubnguc2F2ZV9tb2RlbChtb2RlbCwgbmV3X21vZGVsX2Zp bGVwYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQotLQotLUBwYXJhbWV0ZXJpemVk LnBhcmFtZXRlcml6ZWRfY2xhc3MoCi0tICAgIFsKLS0gICAgICAgIHsic2VyaWFsaXphdGlvbl9m b3JtYXQiOiAicHJvdG9idWYifSwKLS0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAi dGV4dHByb3RvIn0sCi0tICAgIF0KLS0pCi0tY2xhc3MgVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRl cm5hbERhdGEodW5pdHRlc3QuVGVzdENhc2UpOgotLSAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdDog c3RyID0gInByb3RvYnVmIgotLQotLSAgICBkZWYgc2V0VXAoc2VsZikgLT4gTm9uZToKLS0gICAg ICAgIHNlbGYuX3RlbXBfZGlyX29iaiA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCi0t ICAgICAgICBzZWxmLnRlbXBfZGlyOiBzdHIgPSBzZWxmLl90ZW1wX2Rpcl9vYmoubmFtZQotLSAg ICAgICAgc2VsZi5pbml0aWFsaXplcl92YWx1ZSA9IG5wLmFyYW5nZSg2KS5yZXNoYXBlKDMsIDIp LmFzdHlwZShucC5mbG9hdDMyKSArIDUxMgotLSAgICAgICAgc2VsZi5hdHRyaWJ1dGVfdmFsdWUg PSBucC5hcmFuZ2UoNikucmVzaGFwZSgyLCAzKS5hc3R5cGUobnAuZmxvYXQzMikgKyAyNTYKLS0g ICAgICAgIHNlbGYubW9kZWwgPSBzZWxmLmNyZWF0ZV90ZXN0X21vZGVsX3Byb3RvKCkKLS0KLS0g ICAgZGVmIGdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKHNlbGYpOgotLSAgICAgICAgcmV0dXJuIG9z LnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCBzdHIodXVpZC51dWlkNCgpKSArICIub25ueCIpCi0t Ci0tICAgIGRlZiBjcmVhdGVfZGF0YV90ZW5zb3JzKAotLSAgICAgICAgc2VsZiwgdGVuc29yc19k YXRhOiBsaXN0W3R1cGxlW2xpc3RbQW55XSwgQW55XV0KLS0gICAgKSAtPiBsaXN0W1RlbnNvclBy b3RvXToKLS0gICAgICAgIHRlbnNvcnMgPSBbXQotLSAgICAgICAgZm9yIHZhbHVlLCB0ZW5zb3Jf bmFtZSBpbiB0ZW5zb3JzX2RhdGE6Ci0tICAgICAgICAgICAgdGVuc29yID0gZnJvbV9hcnJheShu cC5hcnJheSh2YWx1ZSkpCi0tICAgICAgICAgICAgdGVuc29yLm5hbWUgPSB0ZW5zb3JfbmFtZQot LSAgICAgICAgICAgIHRlbnNvcnMuYXBwZW5kKHRlbnNvcikKLS0KLS0gICAgICAgIHJldHVybiB0 ZW5zb3JzCi0tCi0tICAgIGRlZiBjcmVhdGVfdGVzdF9tb2RlbF9wcm90byhzZWxmKSAtPiBNb2Rl bFByb3RvOgotLSAgICAgICAgdGVuc29ycyA9IHNlbGYuY3JlYXRlX2RhdGFfdGVuc29ycygKLS0g ICAgICAgICAgICBbCi0tICAgICAgICAgICAgICAgIChzZWxmLmF0dHJpYnV0ZV92YWx1ZSwgImF0 dHJpYnV0ZV92YWx1ZSIpLAotLSAgICAgICAgICAgICAgICAoc2VsZi5pbml0aWFsaXplcl92YWx1 ZSwgImlucHV0X3ZhbHVlIiksCi0tICAgICAgICAgICAgXQotLSAgICAgICAgKQotLQotLSAgICAg ICAgY29uc3RhbnRfbm9kZSA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKLS0gICAgICAgICAgICAi Q29uc3RhbnQiLCBpbnB1dHM9W10sIG91dHB1dHM9WyJ2YWx1ZXMiXSwgdmFsdWU9dGVuc29yc1sw XQotLSAgICAgICAgKQotLQotLSAgICAgICAgaW5wdXRzID0gWwotLSAgICAgICAgICAgIGhlbHBl ci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAotLSAgICAgICAgICAgICAgICAiaW5wdXRfdmFsdWUi LCBvbm54LlRlbnNvclByb3RvLkZMT0FULCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlLnNoYXBlCi0t ICAgICAgICAgICAgKQotLSAgICAgICAgXQotLQotLSAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFr ZV9ncmFwaCgKLS0gICAgICAgICAgICBbY29uc3RhbnRfbm9kZV0sCi0tICAgICAgICAgICAgInRl c3RfZ3JhcGgiLAotLSAgICAgICAgICAgIGlucHV0cz1pbnB1dHMsCi0tICAgICAgICAgICAgb3V0 cHV0cz1bXSwKLS0gICAgICAgICAgICBpbml0aWFsaXplcj1bdGVuc29yc1sxXV0sCi0tICAgICAg ICApCi0tICAgICAgICByZXR1cm4gaGVscGVyLm1ha2VfbW9kZWwoZ3JhcGgpCi0tCi0tICAgIEB1 bml0dGVzdC5za2lwSWYoCi0tICAgICAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdCAhPSAicHJvdG9i dWYiLAotLSAgICAgICAgImNoZWNrX21vZGVsIHN1cHBvcnRzIHByb3RvYnVmIG9ubHkgd2hlbiBw cm92aWRlZCBhcyBhIHBhdGgiLAotLSAgICApCi0tICAgIGRlZiB0ZXN0X2NoZWNrX21vZGVsKHNl bGYpIC0+IE5vbmU6Ci0tICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWwpCi0t Ci0tICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV93aXRoX3NpemVf dGhyZXNob2xkKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxm LmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0KLS0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9f ZXh0ZXJuYWxfZGF0YShzZWxmLm1vZGVsLCBzaXplX3RocmVzaG9sZD0xMDI0KQotLSAgICAgICAg b25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxp emF0aW9uX2Zvcm1hdCkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVs X2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGluaXRpYWxp emVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBzZWxmLmFz c2VydEZhbHNlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQot LQotLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfd2l0aG91dF9z aXplX3RocmVzaG9sZChzZWxmKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0g c2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCi0tICAgICAgICBjb252ZXJ0X21vZGVsX3Rv X2V4dGVybmFsX2RhdGEoc2VsZi5tb2RlbCwgc2l6ZV90aHJlc2hvbGQ9MCkKLS0gICAgICAgIG9u bnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXph dGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9m aWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpbml0aWFsaXpl cl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAg ICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVu c29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKLS0KLS0gICAgZGVmIHRlc3RfY29udmVydF9t b2RlbF90b19leHRlcm5hbF9kYXRhX2Zyb21fb25lX2ZpbGVfd2l0aF9sb2NhdGlvbihzZWxmKSAt PiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9m aWxlbmFtZSgpCi0tICAgICAgICBleHRlcm5hbF9kYXRhX2ZpbGUgPSBzdHIodXVpZC51dWlkNCgp KQotLQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAotLSAgICAgICAg ICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0gICAgICAg ICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1UcnVlLAotLSAgICAgICAgICAgIGxvY2F0aW9u PWV4dGVybmFsX2RhdGFfZmlsZSwKLS0gICAgICAgICkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2Rl bChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQp Ci0tCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2lu KHNlbGYudGVtcF9kaXIsIGV4dGVybmFsX2RhdGFfZmlsZSkpKQotLQotLSAgICAgICAgbW9kZWwg PSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9y bWF0KQotLQotLSAgICAgICAgIyB0ZXN0IGNvbnZlcnQgbW9kZWwgZnJvbSBleHRlcm5hbCBkYXRh Ci0tICAgICAgICBjb252ZXJ0X21vZGVsX2Zyb21fZXh0ZXJuYWxfZGF0YShtb2RlbCkKLS0gICAg ICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQotLSAg ICAgICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFs aXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9m aWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tICAgICAgICBpbml0aWFsaXpl cl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgc2VsZi5hc3Nl cnRGYWxzZShsZW4oaW5pdGlhbGl6ZXJfdGVuc29yLmV4dGVybmFsX2RhdGEpKQotLSAgICAgICAg c2VsZi5hc3NlcnRFcXVhbChpbml0aWFsaXplcl90ZW5zb3IuZGF0YV9sb2NhdGlvbiwgVGVuc29y UHJvdG8uREVGQVVMVCkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2Fy cmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAg ICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0u dAotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oYXR0cmlidXRlX3RlbnNvci5leHRlcm5h bF9kYXRhKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXR0cmlidXRlX3RlbnNvci5kYXRh X2xvY2F0aW9uLCBUZW5zb3JQcm90by5ERUZBVUxUKQotLSAgICAgICAgbnAudGVzdGluZy5hc3Nl cnRfYWxsY2xvc2UodG9fYXJyYXkoYXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3Zh bHVlKQotLQotLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfZnJv bV9vbmVfZmlsZV93aXRob3V0X2xvY2F0aW9uX3VzZXNfbW9kZWxfbmFtZSgKLS0gICAgICAgIHNl bGYsCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0 X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQotLQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRl cm5hbF9kYXRhKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTAsIGFs bF90ZW5zb3JzX3RvX29uZV9maWxlPVRydWUKLS0gICAgICAgICkKLS0gICAgICAgIG9ubnguc2F2 ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9m b3JtYXQpCi0tCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxf ZmlsZV9wYXRoKSkKLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5w YXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgbW9kZWxfZmlsZV9wYXRoKSkpCi0tCi0tICAgIGRlZiB0 ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9vbmVfZmlsZV9wZXJfdGVuc29yX3dp dGhvdXRfYXR0cmlidXRlKAotLSAgICAgICAgc2VsZiwKLS0gICAgKSAtPiBOb25lOgotLSAgICAg ICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCi0tCi0t ICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoCi0tICAgICAgICAgICAgc2Vs Zi5tb2RlbCwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAotLSAgICAgICAgICAgIGFs bF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmli dXRlPUZhbHNlLAotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9k ZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0KLS0gICAg ICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQotLSAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRl bXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCi0tICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBh dGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiYXR0cmlidXRlX3ZhbHVlIikp KQotLQotLSAgICBkZWYgdGVzdF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfb25lX2Zp bGVfcGVyX3RlbnNvcl93aXRoX2F0dHJpYnV0ZSgKLS0gICAgICAgIHNlbGYsCi0tICAgICkgLT4g Tm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmls ZW5hbWUoKQotLQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAotLSAg ICAgICAgICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKLS0g ICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKLS0gICAgICAgICAgICBj b252ZXJ0X2F0dHJpYnV0ZT1UcnVlLAotLSAgICAgICAgKQotLSAgICAgICAgb25ueC5zYXZlX21v ZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1h dCkKLS0KLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxl X3BhdGgpKQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGgu am9pbihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCi0tICAgICAgICBzZWxmLmFzc2Vy dFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJhdHRyaWJ1 dGVfdmFsdWUiKSkpCi0tCi0tICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxf ZGF0YV9kb2VzX25vdF9jb252ZXJ0X2F0dHJpYnV0ZV92YWx1ZXMoCi0tICAgICAgICBzZWxmLAot LSAgICApIC0+IE5vbmU6Ci0tICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1w X21vZGVsX2ZpbGVuYW1lKCkKLS0KLS0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxf ZGF0YSgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNo b2xkPTAsCi0tICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1dGU9RmFsc2UsCi0tICAgICAgICAg ICAgYWxsX3RlbnNvcnNfdG9fb25lX2ZpbGU9RmFsc2UsCi0tICAgICAgICApCi0tICAgICAgICBv bm54LnNhdmVfbW9kZWwoc2VsZi5tb2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6 YXRpb25fZm9ybWF0KQotLQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxl KG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCi0tICAgICAgICBz ZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGly LCAiYXR0cmlidXRlX3ZhbHVlIikpKQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9k ZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLSAgICAgICAg aW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0gICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRp b24iKSkKLS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBd LmF0dHJpYnV0ZVswXS50Ci0tICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5z b3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKLS0KLS0gICAgZGVmIHRlc3RfY29udmVydF9t b2RlbF90b19leHRlcm5hbF9kYXRhX2NvbnZlcnRzX2F0dHJpYnV0ZV92YWx1ZXMoc2VsZikgLT4g Tm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmls ZW5hbWUoKQotLQotLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAotLSAg ICAgICAgICAgIHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTAsIGNvbnZlcnRfYXR0cmlidXRl PVRydWUKLS0gICAgICAgICkKLS0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBt b2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0tCi0tICAgICAgICBt b2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlv bl9mb3JtYXQpCi0tCi0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5p bml0aWFsaXplclswXQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJy YXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKLS0gICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRp b24iKSkKLS0KLS0gICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBd LmF0dHJpYnV0ZVswXS50Ci0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19h cnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCi0tICAgICAgICBz ZWxmLmFzc2VydFRydWUoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIp KQotLQotLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX2RvZXNfbm90X2NvbnZlcnRfdG9fZXh0ZXJu YWxfZGF0YV9hbmRfc2F2ZXNfdGhlX21vZGVsKAotLSAgICAgICAgc2VsZiwKLS0gICAgKSAtPiBO b25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxl bmFtZSgpCi0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAgICAgICAgc2VsZi5tb2Rl bCwKLS0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsCi0tICAgICAgICAgICAgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCwKLS0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9RmFs c2UsCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUo bW9kZWxfZmlsZV9wYXRoKSkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1v ZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKLS0gICAgICAgIGluaXRp YWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCi0tICAgICAgICBzZWxm LmFzc2VydEZhbHNlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIp KQotLQotLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0 cmlidXRlWzBdLnQKLS0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5I YXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLQotLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX2Rv ZXNfY29udmVydF9hbmRfc2F2ZXNfdGhlX21vZGVsKHNlbGYpIC0+IE5vbmU6Ci0tICAgICAgICBt b2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKLS0gICAgICAg IG9ubnguc2F2ZV9tb2RlbCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAg IG1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAgICAg IGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPVRydWUsCi0tICAgICAgICAgICAgbG9jYXRpb249Tm9u ZSwKLS0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAotLSAgICAgICAgICAgIGNvbnZlcnRf YXR0cmlidXRlPUZhbHNlLAotLSAgICAgICAgKQotLQotLSAgICAgICAgbW9kZWwgPSBvbm54Lmxv YWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQotLQot LSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0K LS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRh dGFfbG9jYXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2Fy cmF5KGluaXRpYWxpemVyX3RlbnNvciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCi0tCi0tICAg ICAgICBhdHRyaWJ1dGVfdGVuc29yID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0u dAotLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJk YXRhX2xvY2F0aW9uIikpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19h cnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCi0tCi0tICAgIGRl ZiB0ZXN0X3NhdmVfbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsX2RhdGEoc2VsZikgLT4g Tm9uZToKLS0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmls ZW5hbWUoKQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIHNlbGYubW9k ZWwsCi0tICAgICAgICAgICAgbW9kZWxfZmlsZV9wYXRoLAotLSAgICAgICAgICAgIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQsCi0tICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRy dWUsCi0tICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKLS0gICAgICAgICAgICBzaXplX3RocmVz aG9sZD0wLAotLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAotLSAgICAgICAg KQotLSAgICAgICAgIyBTYXZlIHdpdGhvdXQgbG9hZF9leHRlcm5hbF9kYXRhCi0tICAgICAgICBt b2RlbCA9IG9ubngubG9hZF9tb2RlbCgKLS0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsIHNl bGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAgICAg ICAgKQotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIG1vZGVsLAotLSAg ICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRp b25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAg ICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCi0tICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwK LS0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1GYWxzZSwKLS0gICAgICAgICkKLS0gICAg ICAgICMgTG9hZCB0aGUgc2F2ZWQgbW9kZWwgYWdhaW47IE9ubHkgd29ya3MgaWYgdGhlIHNhdmVk IHBhdGggaXMgdW5kZXIgdGhlIHNhbWUgZGlyZWN0b3J5Ci0tICAgICAgICBtb2RlbCA9IG9ubngu bG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCi0t Ci0tICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclsw XQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgi ZGF0YV9sb2NhdGlvbiIpKQotLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9f YXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKLS0KLS0g ICAgICAgIGF0dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVsw XS50Ci0tICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQo ImRhdGFfbG9jYXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRv X2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKLS0KLS0gICAg ZGVmIHRlc3Rfc2F2ZV9tb2RlbF93aXRoX2V4aXN0aW5nX3Jhd19kYXRhX3Nob3VsZF9vdmVycmlk ZShzZWxmKSAtPiBOb25lOgotLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVt cF9tb2RlbF9maWxlbmFtZSgpCi0tICAgICAgICBvcmlnaW5hbF9yYXdfZGF0YSA9IHNlbGYubW9k ZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0ucmF3X2RhdGEKLS0gICAgICAgIG9ubnguc2F2ZV9tb2Rl bCgKLS0gICAgICAgICAgICBzZWxmLm1vZGVsLAotLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0 aCwKLS0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAg IHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xk PTAsCi0tICAgICAgICApCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUo bW9kZWxfZmlsZV9wYXRoKSkKLS0KLS0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKAot LSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwg bG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCi0tICAgICAgICApCi0tICAgICAgICBpbml0aWFsaXpl cl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgaW5pdGlhbGl6 ZXJfdGVuc29yLnJhd19kYXRhID0gYiJkdW1tcHlfcmF3X2RhdGEiCi0tICAgICAgICAjIElmIHJh d19kYXRhIGFuZCBleHRlcm5hbCB0ZW5zb3IgZXhpc3QgYXQgdGhlIHNhbWUgdGltZSwgb3ZlcnJp ZGUgZXhpc3RpbmcgcmF3X2RhdGEKLS0gICAgICAgIGxvYWRfZXh0ZXJuYWxfZGF0YV9mb3JfdGVu c29yKGluaXRpYWxpemVyX3RlbnNvciwgc2VsZi50ZW1wX2RpcikKLS0gICAgICAgIHNlbGYuYXNz ZXJ0RXF1YWwoaW5pdGlhbGl6ZXJfdGVuc29yLnJhd19kYXRhLCBvcmlnaW5hbF9yYXdfZGF0YSkK LS0KLS0KLS1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAotLSAgICBbCi0tICAg ICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0IjogInByb3RvYnVmIn0sCi0tICAgICAgICB7InNl cmlhbGl6YXRpb25fZm9ybWF0IjogInRleHRwcm90byJ9LAotLSAgICBdCi0tKQotLWNsYXNzIFRl c3RFeHRlcm5hbERhdGFUb0FycmF5KHVuaXR0ZXN0LlRlc3RDYXNlKToKLS0gICAgc2VyaWFsaXph dGlvbl9mb3JtYXQ6IHN0ciA9ICJwcm90b2J1ZiIKLS0KLS0gICAgZGVmIHNldFVwKHNlbGYpIC0+ IE5vbmU6Ci0tICAgICAgICBzZWxmLl90ZW1wX2Rpcl9vYmogPSB0ZW1wZmlsZS5UZW1wb3JhcnlE aXJlY3RvcnkoKQotLSAgICAgICAgc2VsZi50ZW1wX2Rpcjogc3RyID0gc2VsZi5fdGVtcF9kaXJf b2JqLm5hbWUKLS0gICAgICAgIHNlbGYuX21vZGVsX2ZpbGVfcGF0aDogc3RyID0gb3MucGF0aC5q b2luKHNlbGYudGVtcF9kaXIsICJtb2RlbC5vbm54IikKLS0gICAgICAgIHNlbGYubGFyZ2VfZGF0 YSA9IG5wLnJhbmRvbS5yYW5kKDEwLCA2MCwgMTAwKS5hc3R5cGUobnAuZmxvYXQzMikKLS0gICAg ICAgIHNlbGYuc21hbGxfZGF0YSA9ICgyMDAsIDMwMCkKLS0gICAgICAgIHNlbGYubW9kZWwgPSBz ZWxmLmNyZWF0ZV90ZXN0X21vZGVsKCkKLS0KLS0gICAgQHByb3BlcnR5Ci0tICAgIGRlZiBtb2Rl bF9maWxlX3BhdGgoc2VsZik6Ci0tICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWxfZmlsZV9wYXRo Ci0tCi0tICAgIGRlZiB0ZWFyRG93bihzZWxmKSAtPiBOb25lOgotLSAgICAgICAgc2VsZi5fdGVt cF9kaXJfb2JqLmNsZWFudXAoKQotLQotLSAgICBkZWYgY3JlYXRlX3Rlc3RfbW9kZWwoc2VsZikg LT4gTW9kZWxQcm90bzoKLS0gICAgICAgIFggPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5m bygiWCIsIFRlbnNvclByb3RvLkZMT0FULCBzZWxmLmxhcmdlX2RhdGEuc2hhcGUpCi0tICAgICAg ICBpbnB1dF9pbml0ID0gaGVscGVyLm1ha2VfdGVuc29yKAotLSAgICAgICAgICAgIG5hbWU9Ilgi LAotLSAgICAgICAgICAgIGRhdGFfdHlwZT1UZW5zb3JQcm90by5GTE9BVCwKLS0gICAgICAgICAg ICBkaW1zPXNlbGYubGFyZ2VfZGF0YS5zaGFwZSwKLS0gICAgICAgICAgICB2YWxzPW9ubngubnVt cHlfaGVscGVyLnRvYnl0ZXNfbGl0dGxlX2VuZGlhbihzZWxmLmxhcmdlX2RhdGEpLAotLSAgICAg ICAgICAgIHJhdz1UcnVlLAotLSAgICAgICAgKQotLQotLSAgICAgICAgc2hhcGVfZGF0YSA9IG5w LmFycmF5KHNlbGYuc21hbGxfZGF0YSwgbnAuaW50NjQpCi0tICAgICAgICBzaGFwZV9pbml0ID0g aGVscGVyLm1ha2VfdGVuc29yKAotLSAgICAgICAgICAgIG5hbWU9IlNoYXBlIiwKLS0gICAgICAg ICAgICBkYXRhX3R5cGU9VGVuc29yUHJvdG8uSU5UNjQsCi0tICAgICAgICAgICAgZGltcz1zaGFw ZV9kYXRhLnNoYXBlLAotLSAgICAgICAgICAgIHZhbHM9b25ueC5udW1weV9oZWxwZXIudG9ieXRl c19saXR0bGVfZW5kaWFuKHNoYXBlX2RhdGEpLAotLSAgICAgICAgICAgIHJhdz1UcnVlLAotLSAg ICAgICAgKQotLSAgICAgICAgQyA9IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJDIiwg VGVuc29yUHJvdG8uSU5UNjQsIHNlbGYuc21hbGxfZGF0YSkKLS0KLS0gICAgICAgIHJlc2hhcGUg PSBvbm54LmhlbHBlci5tYWtlX25vZGUoCi0tICAgICAgICAgICAgIlJlc2hhcGUiLAotLSAgICAg ICAgICAgIGlucHV0cz1bIlgiLCAiU2hhcGUiXSwKLS0gICAgICAgICAgICBvdXRwdXRzPVsiWSJd LAotLSAgICAgICAgKQotLSAgICAgICAgY2FzdCA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKLS0g ICAgICAgICAgICAiQ2FzdCIsIGlucHV0cz1bIlkiXSwgb3V0cHV0cz1bIkMiXSwgdG89VGVuc29y UHJvdG8uSU5UNjQKLS0gICAgICAgICkKLS0KLS0gICAgICAgIGdyYXBoX2RlZiA9IGhlbHBlci5t YWtlX2dyYXBoKAotLSAgICAgICAgICAgIFtyZXNoYXBlLCBjYXN0XSwKLS0gICAgICAgICAgICAi dGVzdC1tb2RlbCIsCi0tICAgICAgICAgICAgW1hdLAotLSAgICAgICAgICAgIFtDXSwKLS0gICAg ICAgICAgICBpbml0aWFsaXplcj1baW5wdXRfaW5pdCwgc2hhcGVfaW5pdF0sCi0tICAgICAgICAp Ci0tICAgICAgICByZXR1cm4gaGVscGVyLm1ha2VfbW9kZWwoZ3JhcGhfZGVmLCBwcm9kdWNlcl9u YW1lPSJvbm54LWV4YW1wbGUiKQotLQotLSAgICBAdW5pdHRlc3Quc2tpcElmKAotLSAgICAgICAg c2VyaWFsaXphdGlvbl9mb3JtYXQgIT0gInByb3RvYnVmIiwKLS0gICAgICAgICJjaGVja19tb2Rl bCBzdXBwb3J0cyBwcm90b2J1ZiBvbmx5IHdoZW4gcHJvdmlkZWQgYXMgYSBwYXRoIiwKLS0gICAg KQotLSAgICBkZWYgdGVzdF9jaGVja19tb2RlbChzZWxmKSAtPiBOb25lOgotLSAgICAgICAgY2hl Y2tlci5jaGVja19tb2RlbChzZWxmLm1vZGVsKQotLQotLSAgICBkZWYgdGVzdF9yZXNoYXBlX2lu ZmVyZW5jZV93aXRoX2V4dGVybmFsX2RhdGFfZmFpbChzZWxmKSAtPiBOb25lOgotLSAgICAgICAg b25ueC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIHNlbGYubW9kZWwsCi0tICAgICAgICAgICAg c2VsZi5tb2RlbF9maWxlX3BhdGgsCi0tICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zv cm1hdCwKLS0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKLS0gICAgICAg ICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKLS0gICAgICAgICAgICBzaXplX3Ro cmVzaG9sZD0wLAotLSAgICAgICAgKQotLSAgICAgICAgbW9kZWxfd2l0aG91dF9leHRlcm5hbF9k YXRhID0gb25ueC5sb2FkKAotLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxm LnNlcmlhbGl6YXRpb25fZm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKLS0gICAgICAg ICkKLS0gICAgICAgICMgU2hhcGUgaW5mZXJlbmNlIG9mIFJlc2hhcGUgdXNlcyBQYXJzZURhdGEK LS0gICAgICAgICMgUGFyc2VEYXRhIGNhbm5vdCBoYW5kbGUgZXh0ZXJuYWwgZGF0YSBhbmQgc2hv dWxkIHRocm93IHRoZSBlcnJvciBhcyBmb2xsb3dzOgotLSAgICAgICAgIyBDYW5ub3QgcGFyc2Ug ZGF0YSBmcm9tIGV4dGVybmFsIHRlbnNvcnMuIFBsZWFzZSBsb2FkIGV4dGVybmFsIGRhdGEgaW50 byByYXcgZGF0YSBmb3IgdGVuc29yOiBTaGFwZQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo Ci0tICAgICAgICAgICAgc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAotLSAgICAgICAg ICAgIHNoYXBlX2luZmVyZW5jZS5pbmZlcl9zaGFwZXMsCi0tICAgICAgICAgICAgbW9kZWxfd2l0 aG91dF9leHRlcm5hbF9kYXRhLAotLSAgICAgICAgICAgIHN0cmljdF9tb2RlPVRydWUsCi0tICAg ICAgICApCi0tCi0tICAgIGRlZiB0ZXN0X3RvX2FycmF5X3dpdGhfZXh0ZXJuYWxfZGF0YShzZWxm KSAtPiBOb25lOgotLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAotLSAgICAgICAgICAgIHNlbGYu bW9kZWwsCi0tICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsCi0tICAgICAgICAgICAg c2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKLS0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFs X2RhdGE9VHJ1ZSwKLS0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwK LS0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAotLSAgICAgICAgKQotLSAgICAgICAgIyBy YXdfZGF0YSBvZiBleHRlcm5hbCB0ZW5zb3IgaXMgbm90IGxvYWRlZAotLSAgICAgICAgbW9kZWwg PSBvbm54LmxvYWQoCi0tICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYuc2Vy aWFsaXphdGlvbl9mb3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQotLSAgICAgICAgKQot LSAgICAgICAgIyBTcGVjaWZ5IHNlbGYudGVtcF9kaXIgdG8gbG9hZCBleHRlcm5hbCB0ZW5zb3IK LS0gICAgICAgIGxvYWRlZF9sYXJnZV9kYXRhID0gdG9fYXJyYXkobW9kZWwuZ3JhcGguaW5pdGlh bGl6ZXJbMF0sIHNlbGYudGVtcF9kaXIpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxj bG9zZShsb2FkZWRfbGFyZ2VfZGF0YSwgc2VsZi5sYXJnZV9kYXRhKQotLQotLSAgICBkZWYgdGVz dF9zYXZlX21vZGVsX3dpdGhfZXh0ZXJuYWxfZGF0YV9tdWx0aXBsZV90aW1lcyhzZWxmKSAtPiBO b25lOgotLSAgICAgICAgIyBUZXN0IG9ubnguc2F2ZSBzaG91bGQgcmVzcGVjdGl2ZWx5IGhhbmRs ZSB0eXBpY2FsIHRlbnNvciBhbmQgZXh0ZXJuYWwgdGVuc29yIHByb3Blcmx5Ci0tICAgICAgICAj IDFzdCBzYXZlOiBzYXZlIHR3byB0ZW5zb3JzIHdoaWNoIGhhdmUgcmF3X2RhdGEKLS0gICAgICAg ICMgT25seSB3X2xhcmdlIHdpbGwgYmUgc3RvcmVkIGFzIGV4dGVybmFsIHRlbnNvcnMgc2luY2Ug aXQncyBsYXJnZXIgdGhhbiAxMDI0Ci0tICAgICAgICBvbm54LnNhdmVfbW9kZWwoCi0tICAgICAg ICAgICAgc2VsZi5tb2RlbCwKLS0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKLS0g ICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAotLSAgICAgICAgICAgIHNhdmVf YXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAotLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9m aWxlPUZhbHNlLAotLSAgICAgICAgICAgIGxvY2F0aW9uPU5vbmUsCi0tICAgICAgICAgICAgc2l6 ZV90aHJlc2hvbGQ9MTAyNCwKLS0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVlLAot LSAgICAgICAgKQotLSAgICAgICAgbW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsID0gb25u eC5sb2FkKAotLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6 YXRpb25fZm9ybWF0LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKLS0gICAgICAgICkKLS0gICAg ICAgIGxhcmdlX2lucHV0X3RlbnNvciA9IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbC5n cmFwaC5pbml0aWFsaXplclswXQotLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxhcmdlX2lucHV0 X3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQotLSAgICAgICAgbnAudGVzdGluZy5h c3NlcnRfYWxsY2xvc2UoCi0tICAgICAgICAgICAgdG9fYXJyYXkobGFyZ2VfaW5wdXRfdGVuc29y LCBzZWxmLnRlbXBfZGlyKSwgc2VsZi5sYXJnZV9kYXRhCi0tICAgICAgICApCi0tCi0tICAgICAg ICBzbWFsbF9zaGFwZV90ZW5zb3IgPSBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3Jh cGguaW5pdGlhbGl6ZXJbMV0KLS0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc21hbGxfc2hh cGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCi0tICAgICAgICBucC50ZXN0aW5n LmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShzbWFsbF9zaGFwZV90ZW5zb3IpLCBzZWxmLnNtYWxs X2RhdGEpCi0tCi0tICAgICAgICAjIDJuZCBzYXZlOiBvbmUgdGVuc29yIGhhcyByYXdfZGF0YSAo c21hbGwpOyBvbmUgZXh0ZXJuYWwgdGVuc29yIChsYXJnZSkKLS0gICAgICAgICMgU2F2ZSB0aGVt IGJvdGggYXMgZXh0ZXJuYWwgdGVuc29ycyB0aGlzIHRpbWUKLS0gICAgICAgIG9ubnguc2F2ZV9t b2RlbCgKLS0gICAgICAgICAgICBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwsCi0tICAg ICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsCi0tICAgICAgICAgICAgc2VsZi5zZXJpYWxp emF0aW9uX2Zvcm1hdCwKLS0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwK LS0gICAgICAgICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKLS0gICAgICAgICAg ICBsb2NhdGlvbj1Ob25lLAotLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCi0tICAgICAg ICAgICAgY29udmVydF9hdHRyaWJ1dGU9VHJ1ZSwKLS0gICAgICAgICkKLS0KLS0gICAgICAgIG1v ZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbCA9IG9ubngubG9hZCgKLS0gICAgICAgICAgICBz ZWxmLm1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRl cm5hbF9kYXRhPUZhbHNlCi0tICAgICAgICApCi0tICAgICAgICBsYXJnZV9pbnB1dF90ZW5zb3Ig PSBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KLS0g ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsYXJnZV9pbnB1dF90ZW5zb3IuSGFzRmllbGQoImRhdGFf bG9jYXRpb24iKSkKLS0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAotLSAgICAg ICAgICAgIHRvX2FycmF5KGxhcmdlX2lucHV0X3RlbnNvciwgc2VsZi50ZW1wX2RpciksIHNlbGYu bGFyZ2VfZGF0YQotLSAgICAgICAgKQotLQotLSAgICAgICAgc21hbGxfc2hhcGVfdGVuc29yID0g bW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzFdCi0tICAg ICAgICBzZWxmLmFzc2VydFRydWUoc21hbGxfc2hhcGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xv Y2F0aW9uIikpCi0tICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSgKLS0gICAgICAg ICAgICB0b19hcnJheShzbWFsbF9zaGFwZV90ZW5zb3IsIHNlbGYudGVtcF9kaXIpLCBzZWxmLnNt YWxsX2RhdGEKLS0gICAgICAgICkKLS0KLS0KLSBjbGFzcyBUZXN0Tm90QWxsb3dUb0xvYWRFeHRl cm5hbERhdGFPdXRzaWRlTW9kZWxEaXJlY3RvcnkoVGVzdExvYWRFeHRlcm5hbERhdGFCYXNlKToK LSAgICAgIiIiRXNzZW50aWFsIHRlc3QgdG8gY2hlY2sgdGhhdCBvbm54ICh2YWxpZGF0ZSkgQysr IGNvZGUgd2lsbCBub3QgYWxsb3cgdG8gbG9hZCBleHRlcm5hbF9kYXRhIG91dHNpZGUgdGhlIG1v ZGVsCi0gICAgIGRpcmVjdG9yeS4KLUBAIC03OTcsMTcgKzE4Niw2IEBAIGNsYXNzIFRlc3ROb3RB bGxvd1RvTG9hZEV4dGVybmFsRGF0YU91dHNpZGVNb2RlbERpcmVjdG9yeU9uV2luZG93cygKLSAg ICAgICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUpCi0gCi0g Ci0tY2xhc3MgVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRlcm5hbERhdGFXaXRoUGF0aChUZXN0U2F2 ZUFsbFRlbnNvcnNBc0V4dGVybmFsRGF0YSk6Ci0tICAgIGRlZiBnZXRfdGVtcF9tb2RlbF9maWxl bmFtZShzZWxmKSAtPiBwYXRobGliLlBhdGg6Ci0tICAgICAgICByZXR1cm4gcGF0aGxpYi5QYXRo KHN1cGVyKCkuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKSkKLS0KLS0KLS1jbGFzcyBUZXN0RXh0 ZXJuYWxEYXRhVG9BcnJheVdpdGhQYXRoKFRlc3RFeHRlcm5hbERhdGFUb0FycmF5KToKLS0gICAg QHByb3BlcnR5Ci0tICAgIGRlZiBtb2RlbF9maWxlX3BhdGgoc2VsZikgLT4gcGF0aGxpYi5QYXRo OgotLSAgICAgICAgcmV0dXJuIHBhdGhsaWIuUGF0aChzZWxmLl9tb2RlbF9maWxlX3BhdGgpCi0t Ci0tCi0gY2xhc3MgVGVzdEZ1bmN0aW9uc0FuZFN1YkdyYXBocyh1bml0dGVzdC5UZXN0Q2FzZSk6 Ci0gICAgIGRlZiBzZXRVcChzZWxmKSAtPiBOb25lOgotICAgICAgICAgc2VsZi5fdGVtcF9kaXJf b2JqID0gdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkKLWRpZmYgLS1naXQgYS9vbm54L3Rl c3QvdmVyc2lvbl9jb252ZXJ0ZXIvYXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5IGIvb25ueC90 ZXN0L3ZlcnNpb25fY29udmVydGVyL2F1dG9tYXRpY19kb3duZ3JhZGVfdGVzdC5weQotaW5kZXgg YTk0YWVhMWE5Li5mNjM5ZDQ0ZjggMTAwNjQ0Ci0tLS0gYS9vbm54L3Rlc3QvdmVyc2lvbl9jb252 ZXJ0ZXIvYXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5Ci0rKysgYi9vbm54L3Rlc3QvdmVyc2lv bl9jb252ZXJ0ZXIvYXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5Ci1AQCAtNyw3ICs3LDYgQEAg aW1wb3J0IHVuaXR0ZXN0Ci0gCi0gaW1wb3J0IGF1dG9tYXRpY19jb252ZXJzaW9uX3Rlc3RfYmFz ZQotIGltcG9ydCBudW1weSBhcyBucAotLWltcG9ydCBwYXJhbWV0ZXJpemVkCi0gCi0gaW1wb3J0 IG9ubngKLSBmcm9tIG9ubnggaW1wb3J0IGhlbHBlcgotQEAgLTIyLDM1ICsyMSw2IEBAIGNsYXNz IFRlc3RBdXRvbWF0aWNEb3duZ3JhZGUoYXV0b21hdGljX2NvbnZlcnNpb25fdGVzdF9iYXNlLlRl c3RBdXRvbWF0aWNDb252ZXJzCi0gICAgIGRlZiBfdGVzdF9vcF9kb3duZ3JhZGUoc2VsZiwgb3A6 IHN0ciwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgIHNlbGYuX3Rlc3Rfb3BfY29udmVyc2lv bihvcCwgKmFyZ3MsICoqa3dhcmdzLCBpc191cGdyYWRlPUZhbHNlKQotIAotLSAgICBAcGFyYW1l dGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAi UmVkdWNlTDEiLAotLSAgICAgICAgICAgICJSZWR1Y2VMMiIsCi0tICAgICAgICAgICAgIlJlZHVj ZUxvZ1N1bSIsCi0tICAgICAgICAgICAgIlJlZHVjZUxvZ1N1bUV4cCIsCi0tICAgICAgICAgICAg IlJlZHVjZU1lYW4iLAotLSAgICAgICAgICAgICJSZWR1Y2VNYXgiLAotLSAgICAgICAgICAgICJS ZWR1Y2VNaW4iLAotLSAgICAgICAgICAgICJSZWR1Y2VQcm9kIiwKLS0gICAgICAgICAgICAiUmVk dWNlU3VtIiwKLS0gICAgICAgICAgICAiUmVkdWNlU3VtU3F1YXJlIiwKLS0gICAgICAgIF0KLS0g ICAgKQotLSAgICBkZWYgdGVzdF9yZWR1Y2Vfb3BzKHNlbGYsIG9wKSAtPiBOb25lOgotLSAgICAg ICAgIyBUT0RPOiBuZWVkIHRvIGFkZCB0ZXN0IGNhc2VzIGZvciBtaXNzaW5nIGF4ZXMgaW5wdXQg d2hpY2ggZGVwZW5kcyBvbiB0aGlzIHByOgotLSAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20v b25ueC9vbm54L3B1bGwvNTYxMwotLSAgICAgICAgYXhlcyA9IGhlbHBlci5tYWtlX3RlbnNvcigK LS0gICAgICAgICAgICAiYiIsIG9ubnguVGVuc29yUHJvdG8uSU5UNjQsIGRpbXM9WzNdLCB2YWxz PW5wLmFycmF5KFswLCAxLCAyXSkKLS0gICAgICAgICkKLS0gICAgICAgIHNlbGYuX3Rlc3Rfb3Bf ZG93bmdyYWRlKAotLSAgICAgICAgICAgIG9wLAotLSAgICAgICAgICAgIGZyb21fb3BzZXQ9MTMs Ci0tICAgICAgICAgICAgaW5wdXRfc2hhcGVzPVtbMywgNCwgNV0sIFszXV0sCi0tICAgICAgICAg ICAgb3V0cHV0X3NoYXBlcz1bWzEsIDEsIDFdXSwKLS0gICAgICAgICAgICBpbnB1dF90eXBlcz1b b25ueC5UZW5zb3JQcm90by5GTE9BVCwgb25ueC5UZW5zb3JQcm90by5JTlQ2NF0sCi0tICAgICAg ICAgICAgaW5pdGlhbGl6ZXI9W2F4ZXNdLAotLSAgICAgICAgKQotLQotICAgICBkZWYgdGVzdF9k ZnQyMF9ub19heGlzKHNlbGYpIC0+IE5vbmU6Ci0gICAgICAgICBzZWxmLl90ZXN0X21vZGVsX2Nv bnZlcnNpb24oCi0gICAgICAgICAgICAgdG9fb3BzZXQ9MTksCi1kaWZmIC0tZ2l0IGEvb25ueC90 ZXN0L3ZlcnNpb25fY29udmVydGVyX3Rlc3QucHkgYi9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0 ZXJfdGVzdC5weQotaW5kZXggYTc1ZWRjZGU3Li5mZDA1NzUxOGYgMTAwNjQ0Ci0tLS0gYS9vbm54 L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXJfdGVzdC5weQotKysrIGIvb25ueC90ZXN0L3ZlcnNpb25f Y29udmVydGVyX3Rlc3QucHkKLUBAIC0xMCw3ICsxMCw2IEBAIGltcG9ydCB0ZW1wZmlsZQotIGlt cG9ydCB1bml0dGVzdAotIAotIGltcG9ydCBudW1weSBhcyBucAotLWltcG9ydCBwYXJhbWV0ZXJp emVkCi0gCi0gaW1wb3J0IG9ubngudmVyc2lvbl9jb252ZXJ0ZXIKLSBmcm9tIG9ubnggaW1wb3J0 ICgKLUBAIC0yMTE1LDE2OSArMjExNCw2IEBAIGNsYXNzIFRlc3RWZXJzaW9uQ29udmVydGVyKHVu aXR0ZXN0LlRlc3RDYXNlKToKLSAgICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfbW9kZWwuZ3JhcGgu bm9kZVswXS5hdHRyaWJ1dGVbMF0uaSA9PSAyCi0gICAgICAgICBhc3NlcnQgY29udmVydGVkX21v ZGVsLm9wc2V0X2ltcG9ydFswXS52ZXJzaW9uID09IDEyCi0gCi0tICAgIEBwYXJhbWV0ZXJpemVk LnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAgICgicGVyX3Rl bnNvciIsICgxNiwgMyksICgxLCksIE5vbmUsIE5vbmUsIE5vbmUsIFRlbnNvclByb3RvLklOVDgs IFRydWUpLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgInBlcl9heGlzX25vbmVf YmxvY2tfc2hhcGUiLAotLSAgICAgICAgICAgICAgICAoMTYsIDMpLAotLSAgICAgICAgICAgICAg ICAoMTYsKSwKLS0gICAgICAgICAgICAgICAgMSwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0g ICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwK LS0gICAgICAgICAgICAgICAgVHJ1ZSwKLS0gICAgICAgICAgICApLAotLSAgICAgICAgICAgICgK LS0gICAgICAgICAgICAgICAgInBlcl9heGlzX3plcm9fYmxvY2tfc2hhcGUiLAotLSAgICAgICAg ICAgICAgICAoMTYsIDMpLAotLSAgICAgICAgICAgICAgICAoMTYsKSwKLS0gICAgICAgICAgICAg ICAgMSwKLS0gICAgICAgICAgICAgICAgMCwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAg ICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwKLS0gICAgICAgICAgICAgICAgVHJ1ZSwKLS0g ICAgICAgICAgICApLAotLSAgICAgICAgICAgICgKLS0gICAgICAgICAgICAgICAgInBlcl90ZW5z b3JfcG9zaXRpdmVfYmxvY2tfc2hhcGUiLAotLSAgICAgICAgICAgICAgICAoMTYsIDMpLAotLSAg ICAgICAgICAgICAgICAoMSwpLAotLSAgICAgICAgICAgICAgICAxLAotLSAgICAgICAgICAgICAg ICAyLAotLSAgICAgICAgICAgICAgICBOb25lLAotLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90 by5JTlQ4LAotLSAgICAgICAgICAgICAgICBGYWxzZSwKLS0gICAgICAgICAgICApLAotLSAgICAg ICAgICAgICgKLS0gICAgICAgICAgICAgICAgInBlcl9heGlzX3Bvc2l0aXZlX2Jsb2NrX3NoYXBl IiwKLS0gICAgICAgICAgICAgICAgKDE2LCAzKSwKLS0gICAgICAgICAgICAgICAgKDE2LCksCi0t ICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIDIsCi0tICAgICAgICAgICAgICAg IE5vbmUsCi0tICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDgsCi0tICAgICAgICAgICAg ICAgIEZhbHNlLAotLSAgICAgICAgICAgICksCi0tICAgICAgICAgICAgKCJibG9ja2VkXzJkIiwg KDE2LCAzKSwgKDQsIDMpLCAwLCA0LCBOb25lLCBUZW5zb3JQcm90by5JTlQ4LCBGYWxzZSksCi0t ICAgICAgICAgICAgKCJibG9ja2VkXzNkIiwgKDQsIDMsIDMyKSwgKDQsIDMsIDgpLCAyLCA0LCBO b25lLCBUZW5zb3JQcm90by5JTlQ4LCBGYWxzZSksCi0tICAgICAgICAgICAgKAotLSAgICAgICAg ICAgICAgICAicGVyX2F4aXNfb3V0cHV0X2R0eXBlIiwKLS0gICAgICAgICAgICAgICAgKDE2LCAz KSwKLS0gICAgICAgICAgICAgICAgKDE2LCksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAg ICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FUOEU0TTNG TiwKLS0gICAgICAgICAgICAgICAgTm9uZSwKLS0gICAgICAgICAgICAgICAgRmFsc2UsCi0tICAg ICAgICAgICAgKSwKLS0gICAgICAgICAgICAoCi0tICAgICAgICAgICAgICAgICJwZXJfYXhpc191 bnN1cHBvcnRlZF90eXBlIiwKLS0gICAgICAgICAgICAgICAgKDE2LCAzKSwKLS0gICAgICAgICAg ICAgICAgKDE2LCksCi0tICAgICAgICAgICAgICAgIDEsCi0tICAgICAgICAgICAgICAgIE5vbmUs Ci0tICAgICAgICAgICAgICAgIE5vbmUsCi0tICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJ TlQxNiwKLS0gICAgICAgICAgICAgICAgRmFsc2UsCi0tICAgICAgICAgICAgKSwKLS0gICAgICAg IF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9xdWFudGl6ZV8yMV8yMCgKLS0gICAgICAgIHNlbGYs Ci0tICAgICAgICBfOiBzdHIsCi0tICAgICAgICB4X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCi0t ICAgICAgICBzY2FsZV9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAotLSAgICAgICAgYXhpczogaW50 LAotLSAgICAgICAgYmxvY2tfc2l6ZTogaW50LAotLSAgICAgICAgb3V0cHV0X2R0eXBlOiBpbnQg fCBOb25lLAotLSAgICAgICAgemVyb19wb2ludF9kdHlwZTogaW50IHwgTm9uZSwKLS0gICAgICAg IGNvbXBhdGlibGU6IGJvb2wsCi0tICAgICkgLT4gTm9uZToKLS0gICAgICAgIGRlZiB0ZXN0KAot LSAgICAgICAgICAgIGlucHV0X3NoYXBlLCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tfc2l6ZSwg b3V0cHV0X2R0eXBlLCB6ZXJvX3BvaW50X2R0eXBlCi0tICAgICAgICApIC0+IE5vbmU6Ci0tICAg ICAgICAgICAgbm9kZXMgPSBbCi0tICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX25vZGUoCi0t ICAgICAgICAgICAgICAgICAgICAiUXVhbnRpemVMaW5lYXIiLAotLSAgICAgICAgICAgICAgICAg ICAgWyJYIiwgIlMiXSwKLS0gICAgICAgICAgICAgICAgICAgIFsiWSJdLAotLSAgICAgICAgICAg ICAgICAgICAgYXhpcz1heGlzLAotLSAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9j a19zaXplLAotLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2R0eXBlPW91dHB1dF9kdHlwZSwK LS0gICAgICAgICAgICAgICAgKQotLSAgICAgICAgICAgIF0KLS0gICAgICAgICAgICBpbnB1dHMg PSBbCi0tICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwg VGVuc29yUHJvdG8uRkxPQVQsIGlucHV0X3NoYXBlKSwKLS0gICAgICAgICAgICAgICAgaGVscGVy Lm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlMiLCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfc2hh cGUpLAotLSAgICAgICAgICAgIF0KLS0gICAgICAgICAgICBpZiB6ZXJvX3BvaW50X2R0eXBlOgot LSAgICAgICAgICAgICAgICBpbnB1dHMuYXBwZW5kKAotLSAgICAgICAgICAgICAgICAgICAgaGVs cGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlpQIiwgemVyb19wb2ludF9kdHlwZSwgc2NhbGVf c2hhcGUpCi0tICAgICAgICAgICAgICAgICkKLS0gICAgICAgICAgICAgICAgbm9kZXNbMF0uaW5w dXQuYXBwZW5kKCJaUCIpCi0tICAgICAgICAgICAgb3V0cHV0X3R5cGVfID0gb3V0cHV0X2R0eXBl IG9yIHplcm9fcG9pbnRfZHR5cGUKLS0gICAgICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtlX2dy YXBoKAotLSAgICAgICAgICAgICAgICBub2RlcywKLS0gICAgICAgICAgICAgICAgInRlc3QiLAot LSAgICAgICAgICAgICAgICBpbnB1dHMsCi0tICAgICAgICAgICAgICAgIFtoZWxwZXIubWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygiWSIsIG91dHB1dF90eXBlXywgaW5wdXRfc2hhcGUpXSwKLS0gICAg ICAgICAgICApCi0tICAgICAgICAgICAgXyA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVy Lm1ha2Vfb3BlcmF0b3JzZXRpZCgiIiwgMjEpLCAyMCkKLS0KLS0gICAgICAgIGNvbnRleHRfbWFu YWdlciA9ICgKLS0gICAgICAgICAgICBjb250ZXh0bGliLm51bGxjb250ZXh0KCkgaWYgY29tcGF0 aWJsZSBlbHNlIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikKLS0gICAgICAgICkKLS0g ICAgICAgIHdpdGggY29udGV4dF9tYW5hZ2VyOgotLSAgICAgICAgICAgIHRlc3QoeF9zaGFwZSwg c2NhbGVfc2hhcGUsIGF4aXMsIGJsb2NrX3NpemUsIG91dHB1dF9kdHlwZSwgemVyb19wb2ludF9k dHlwZSkKLS0KLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0tICAg ICAgICBbCi0tICAgICAgICAgICAgKCJwZXJfdGVuc29yIiwgKDE2LCAzKSwgKDEsKSwgTm9uZSwg Tm9uZSwgVHJ1ZSksCi0tICAgICAgICAgICAgKCJwZXJfYXhpc19ub25lX2Jsb2NrX3NoYXBlIiwg KDE2LCAzKSwgKDE2LCksIDEsIE5vbmUsIFRydWUpLAotLSAgICAgICAgICAgICgicGVyX2F4aXNf emVyb19ibG9ja19zaGFwZSIsICgxNiwgMyksICgxNiwpLCAxLCAwLCBUcnVlKSwKLS0gICAgICAg ICAgICAoInBlcl90ZW5zb3JfcG9zaXRpdmVfYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMSwpLCAx LCAyLCBGYWxzZSksCi0tICAgICAgICAgICAgKCJwZXJfYXhpc19wb3NpdGl2ZV9ibG9ja19zaGFw ZSIsICgxNiwgMyksICgxNiwpLCAxLCAyLCBGYWxzZSksCi0tICAgICAgICAgICAgKCJibG9ja2Vk XzJkIiwgKDE2LCAzKSwgKDQsIDMpLCAwLCA0LCBGYWxzZSksCi0tICAgICAgICAgICAgKCJibG9j a2VkXzNkIiwgKDQsIDMsIDMyKSwgKDQsIDMsIDgpLCAyLCA0LCBGYWxzZSksCi0tICAgICAgICBd Ci0tICAgICkKLS0gICAgZGVmIHRlc3RfZGVxdWFudGl6ZV8yMV8yMCgKLS0gICAgICAgIHNlbGYs Ci0tICAgICAgICBfOiBzdHIsCi0tICAgICAgICB5X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCi0t ICAgICAgICBzY2FsZV9zaGFwZTogdHVwbGVbaW50LCAuLi5dLAotLSAgICAgICAgYXhpczogaW50 LAotLSAgICAgICAgYmxvY2tfc2l6ZTogaW50LAotLSAgICAgICAgY29tcGF0aWJsZTogYm9vbCwK LS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgZGVmIHRlc3QoaW5wdXRfc2hhcGUsIHNjYWxlX3No YXBlLCBheGlzLCBibG9ja19zaXplKSAtPiBOb25lOgotLSAgICAgICAgICAgIG5vZGVzID0gWwot LSAgICAgICAgICAgICAgICBoZWxwZXIubWFrZV9ub2RlKAotLSAgICAgICAgICAgICAgICAgICAg IkRlcXVhbnRpemVMaW5lYXIiLAotLSAgICAgICAgICAgICAgICAgICAgWyJYIiwgIlMiLCAiWlAi XSwKLS0gICAgICAgICAgICAgICAgICAgIFsiWSJdLAotLSAgICAgICAgICAgICAgICAgICAgYXhp cz1heGlzLAotLSAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19zaXplLAotLSAg ICAgICAgICAgICAgICApCi0tICAgICAgICAgICAgXQotLSAgICAgICAgICAgIGdyYXBoID0gaGVs cGVyLm1ha2VfZ3JhcGgoCi0tICAgICAgICAgICAgICAgIG5vZGVzLAotLSAgICAgICAgICAgICAg ICAidGVzdCIsCi0tICAgICAgICAgICAgICAgIFsKLS0gICAgICAgICAgICAgICAgICAgIGhlbHBl ci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uSU5UOCwgaW5wdXRfc2hh cGUpLAotLSAgICAgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlMiLCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfc2hhcGUpLAotLSAgICAgICAgICAgICAgICAg ICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlpQIiwgVGVuc29yUHJvdG8uSU5UOCwg c2NhbGVfc2hhcGUpLAotLSAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICBbaGVs cGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgaW5wdXRf c2hhcGUpXSwKLS0gICAgICAgICAgICApCi0tICAgICAgICAgICAgXyA9IHNlbGYuX2NvbnZlcnRl ZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRpZCgiIiwgMjEpLCAyMCkKLS0KLS0gICAg ICAgIGNvbnRleHRfbWFuYWdlciA9ICgKLS0gICAgICAgICAgICBjb250ZXh0bGliLm51bGxjb250 ZXh0KCkgaWYgY29tcGF0aWJsZSBlbHNlIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikK LS0gICAgICAgICkKLS0gICAgICAgIHdpdGggY29udGV4dF9tYW5hZ2VyOgotLSAgICAgICAgICAg IHRlc3QoeV9zaGFwZSwgc2NhbGVfc2hhcGUsIGF4aXMsIGJsb2NrX3NpemUpCi0tCi0gICAgIGRl ZiB0ZXN0X2V4dGVybmFsX2RhdGFfdmVyc2lvbl9jb252ZXJzaW9uKHNlbGYpIC0+IE5vbmU6Ci0g ICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgot ICAgICAgICAgICAgICMgQ3JlYXRlIGEgbW9kZWwgd2l0aCBleHRlcm5hbCBkYXRhCi1AQCAtMjQx Myw3NiArMjI0OSw2IEBAIGNsYXNzIFRlc3RWZXJzaW9uQ29udmVydGVyKHVuaXR0ZXN0LlRlc3RD YXNlKToKLSAgICAgICAgICAgICBbaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dCIs IGR0eXBlLCBkYXRhX3MpXSwKLSAgICAgICAgICkKLSAKLS0gICAgIyBTY2F0dGVyIDE2IC0+IDE1 OiBUeXBlUmVzdHJpY3Rpb24gKGJmbG9hdDE2KSArIFJlbW92ZUF0dHJpYnV0ZSAocmVkdWN0aW9u KQotLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZChbKCJTY2F0dGVyRWxl bWVudHMiLCksICgiU2NhdHRlck5EIiwpXSkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcl8xNl8xNV9z dWNjZXNzKHNlbGYsIG9wX25hbWU6IHN0cikgLT4gTm9uZToKLS0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9zY2F0dGVyX2dyYXBoKG9wX25hbWUsIFRlbnNvclByb3RvLkZMT0FULCAibm9uZSIp Ci0tICAgICAgICBjb252ZXJ0ZWQgPSBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtl X29wZXJhdG9yc2V0aWQoIiIsIDE2KSwgMTUpCi0tICAgICAgICBhc3NlcnQgY29udmVydGVkLm9w c2V0X2ltcG9ydFswXS52ZXJzaW9uID09IDE1Ci0tCi0tICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFt ZXRlcml6ZWQuZXhwYW5kKFsoIlNjYXR0ZXJFbGVtZW50cyIsKSwgKCJTY2F0dGVyTkQiLCldKQot LSAgICBkZWYgdGVzdF9zY2F0dGVyXzE2XzE1X2JmbG9hdDE2X2ZhaWxzKHNlbGYsIG9wX25hbWU6 IHN0cikgLT4gTm9uZToKLS0gICAgICAgIGRlZiB0ZXN0KCkgLT4gTm9uZToKLS0gICAgICAgICAg ICBncmFwaCA9IHNlbGYuX21ha2Vfc2NhdHRlcl9ncmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5C RkxPQVQxNikKLS0gICAgICAgICAgICBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtl X29wZXJhdG9yc2V0aWQoIiIsIDE2KSwgMTUpCi0tCi0tICAgICAgICBzZWxmLmFzc2VydFJhaXNl cyhSdW50aW1lRXJyb3IsIHRlc3QpCi0tCi0tICAgICMgT3BzZXQgMTYgYWRkZWQgcmVkdWN0aW9u ICdhZGQnIGFuZCAnbXVsJzsgMTYgLT4gMTUgb25seSBhbGxvd3MgJ25vbmUnCi0tICAgIEBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAotLSAgICAgICAgWwotLSAgICAgICAgICAg ICgiU2NhdHRlckVsZW1lbnRzIiwgImFkZCIpLAotLSAgICAgICAgICAgICgiU2NhdHRlckVsZW1l bnRzIiwgIm11bCIpLAotLSAgICAgICAgICAgICgiU2NhdHRlck5EIiwgImFkZCIpLAotLSAgICAg ICAgICAgICgiU2NhdHRlck5EIiwgIm11bCIpLAotLSAgICAgICAgXQotLSAgICApCi0tICAgIGRl ZiB0ZXN0X3NjYXR0ZXJfMTZfMTVfcmVkdWN0aW9uX2FkZF9tdWxfZmFpbHMoCi0tICAgICAgICBz ZWxmLCBvcF9uYW1lOiBzdHIsIHJlZHVjdGlvbjogc3RyCi0tICAgICkgLT4gTm9uZToKLS0gICAg ICAgIGRlZiB0ZXN0KCkgLT4gTm9uZToKLS0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf c2NhdHRlcl9ncmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5GTE9BVCwgcmVkdWN0aW9uKQotLSAg ICAgICAgICAgIHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRp ZCgiIiwgMTYpLCAxNSkKLS0KLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJv ciwgdGVzdCkKLS0KLS0gICAgIyBTY2F0dGVyIDE4IC0+IDE3OiByZWplY3QgcmVkdWN0aW9uICJt YXgiIC8gIm1pbiIKLS0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCi0t ICAgICAgICBbCi0tICAgICAgICAgICAgKCJTY2F0dGVyRWxlbWVudHMiLCAibWF4IiksCi0tICAg ICAgICAgICAgKCJTY2F0dGVyRWxlbWVudHMiLCAibWluIiksCi0tICAgICAgICAgICAgKCJTY2F0 dGVyTkQiLCAibWF4IiksCi0tICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAibWluIiksCi0tICAg ICAgICBdCi0tICAgICkKLS0gICAgZGVmIHRlc3Rfc2NhdHRlcl8xOF8xN19yZWR1Y3Rpb25fbWF4 X21pbl9mYWlscygKLS0gICAgICAgIHNlbGYsIG9wX25hbWU6IHN0ciwgcmVkdWN0aW9uOiBzdHIK LS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgZGVmIHRlc3QoKSAtPiBOb25lOgotLSAgICAgICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9zY2F0dGVyX2dyYXBoKG9wX25hbWUsIFRlbnNvclByb3Rv LkZMT0FULCByZWR1Y3Rpb24pCi0tICAgICAgICAgICAgc2VsZi5fY29udmVydGVkKGdyYXBoLCBo ZWxwZXIubWFrZV9vcGVyYXRvcnNldGlkKCIiLCAxOCksIDE3KQotLQotLSAgICAgICAgc2VsZi5h c3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB0ZXN0KQotLQotLSAgICBAcGFyYW1ldGVyaXplZC5w YXJhbWV0ZXJpemVkLmV4cGFuZCgKLS0gICAgICAgIFsKLS0gICAgICAgICAgICAoIlNjYXR0ZXJF bGVtZW50cyIsIE5vbmUpLAotLSAgICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwgIm5vbmUi KSwKLS0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIsICJhZGQiKSwKLS0gICAgICAgICAg ICAoIlNjYXR0ZXJFbGVtZW50cyIsICJtdWwiKSwKLS0gICAgICAgICAgICAoIlNjYXR0ZXJORCIs IE5vbmUpLAotLSAgICAgICAgICAgICgiU2NhdHRlck5EIiwgIm5vbmUiKSwKLS0gICAgICAgICAg ICAoIlNjYXR0ZXJORCIsICJhZGQiKSwKLS0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsICJtdWwi KSwKLS0gICAgICAgIF0KLS0gICAgKQotLSAgICBkZWYgdGVzdF9zY2F0dGVyXzE4XzE3X2FsbG93 ZWRfcmVkdWN0aW9uc19zdWNjZXNzKAotLSAgICAgICAgc2VsZiwgb3BfbmFtZTogc3RyLCByZWR1 Y3Rpb246IHN0ciB8IE5vbmUKLS0gICAgKSAtPiBOb25lOgotLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX3NjYXR0ZXJfZ3JhcGgob3BfbmFtZSwgVGVuc29yUHJvdG8uRkxPQVQsIHJlZHVjdGlv bikKLS0gICAgICAgIGNvbnZlcnRlZCA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1h a2Vfb3BlcmF0b3JzZXRpZCgiIiwgMTgpLCAxNykKLS0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9k ZWwoY29udmVydGVkKQotLQotIAotIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgIHVu aXR0ZXN0Lm1haW4oKQotZGlmZiAtLWdpdCBhL3JlcXVpcmVtZW50cy1kZXYudHh0IGIvcmVxdWly ZW1lbnRzLWRldi50eHQKLWluZGV4IGUzNmVjZDZkOS4uN2U0YTBjY2Q0IDEwMDY0NAotLS0tIGEv cmVxdWlyZW1lbnRzLWRldi50eHQKLSsrKyBiL3JlcXVpcmVtZW50cy1kZXYudHh0Ci1AQCAtMSw2 ICsxLDUgQEAKLSBidWlsZAotIG51bXB5Ci0tcGFyYW1ldGVyaXplZAotIHByb3RvYnVmCi0gcHl0 ZXN0Ci0gcHl0ZXN0LWNvdgotLS0gCi0yLjU0LjAKLQoKZGlmZiAtLWdpdCBhLzAwMDMtRml4LW5h bm9iaW5kLWFyZ3VtZW50cy5wYXRjaCBiLzAwMDMtRml4LW5hbm9iaW5kLWFyZ3VtZW50cy5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjI1ZDhhCi0tLSAvZGV2L251 bGwKKysrIGIvMDAwMy1GaXgtbmFub2JpbmQtYXJndW1lbnRzLnBhdGNoCkBAIC0wLDAgKzEsMjIg QEAKK0Zyb20gZDA4MGMwMzVmNWU0NmJjNjU5MjY0YmExYTUwZjJmOWM3MDUzZWFlNyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJlZGhhdC5j b20+CitEYXRlOiBXZWQsIDEgSnVsIDIwMjYgMDA6MDM6MTQgLTA0MDAKK1N1YmplY3Q6IFtQQVRD SCAzLzddIEZpeCBuYW5vYmluZCBhcmd1bWVudHMKKworCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0 cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggMDk0MDc4MTYwLi4zYTA4ZDMyODkgMTAwNjQ0 CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC00MjgsNyAr NDI4LDcgQEAgaWYoT05OWF9CVUlMRF9QWVRIT04pCisgICAjIGZpbmQgc3lzdGVtIG5hbm9iaW5k CisgICBpZihOT1QgREVGSU5FRCBuYW5vYmluZF9ESVIgT1IgIiR7bmFub2JpbmRfRElSfSIgU1RS RVFVQUwgIiIpCisgICAgIGV4ZWN1dGVfcHJvY2VzcygKKy0gICAgICBDT01NQU5EICR7UHl0aG9u X0VYRUNVVEFCTEV9IC1tIG5hbm9iaW5kIC0tY21ha2UtZGlyCisrICAgICAgQ09NTUFORCAke1B5 dGhvbl9FWEVDVVRBQkxFfSAtbSBuYW5vYmluZCAtLWNtYWtlX2RpcgorICAgICAgIFJFU1VMVF9W QVJJQUJMRSBOQU5PQklORF9DTUFLRV9SRVNVTFQKKyAgICAgICBPVVRQVVRfVkFSSUFCTEUgTkFO T0JJTkRfQ01BS0VfRElSCisgICAgICAgT1VUUFVUX1NUUklQX1RSQUlMSU5HX1dISVRFU1BBQ0UK Ky0tIAorMi41NC4wCisKCmRpZmYgLS1naXQgYS8wMDA0LUxldC1weXByb2plY3Rfd2hlZWwtdXNl LWJpbmFyaWVzLWZyb20tY21ha2VfYnVpbGQucGF0Y2ggYi8wMDA0LUxldC1weXByb2plY3Rfd2hl ZWwtdXNlLWJpbmFyaWVzLWZyb20tY21ha2VfYnVpbGQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uOTdkMTVjNAotLS0gL2Rldi9udWxsCisrKyBiLzAwMDQtTGV0LXB5 cHJvamVjdF93aGVlbC11c2UtYmluYXJpZXMtZnJvbS1jbWFrZV9idWlsZC5wYXRjaApAQCAtMCww ICsxLDMwIEBACitGcm9tIDc1ZTEwODJmMmQxN2MyYzJjY2IzYzM4YjQyOWZhMjRhNGI0NWJiZWEg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGVqYW5kcm8gQWx2YXJleiBBeWxsb24g PGEuYWx2YXJlemF5bGxvbkBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI0IEZlYiAyMDI0IDE0OjUz OjEwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNC83XSBMZXQgcHlwcm9qZWN0X3doZWVsIHVzZSBi aW5hcmllcyBmcm9tIGNtYWtlX2J1aWxkCisKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0 dXAucHkKK2luZGV4IGRiNzhiZmEyYi4uMmRmZDY1MDI0IDEwMDY0NAorLS0tIGEvc2V0dXAucHkK KysrKyBiL3NldHVwLnB5CitAQCAtMjcsNyArMjcsNyBAQCBpbXBvcnQgc2V0dXB0b29scy5jb21t YW5kLmJ1aWxkX3B5CisgaW1wb3J0IHNldHVwdG9vbHMuY29tbWFuZC5kZXZlbG9wCisgCisgVE9Q X0RJUiA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKy1DTUFL RV9CVUlMRF9ESVIgPSBvcy5wYXRoLmpvaW4oVE9QX0RJUiwgIi5zZXR1cHRvb2xzLWNtYWtlLWJ1 aWxkIikKKytDTUFLRV9CVUlMRF9ESVIgPSBvcy5wYXRoLmpvaW4oVE9QX0RJUiwgb3MuZW52aXJv bi5nZXQoIlZQQVRIX0JVSUxERElSIiwgInJlZGhhdC1saW51eC1idWlsZCIpKQorIAorIFdJTkRP V1MgPSBvcy5uYW1lID09ICJudCIKKyAKK0BAIC0xNzMsNiArMTczLDcgQEAgY2xhc3MgQ21ha2VC dWlsZChzZXR1cHRvb2xzLkNvbW1hbmQpOgorICAgICAgICAgICAgIHNlbGYuam9icyA9IG11bHRp cHJvY2Vzc2luZy5jcHVfY291bnQoKQorIAorICAgICBkZWYgcnVuKHNlbGYpOgorKyAgICAgICAg cmV0dXJuCisgICAgICAgICBhc3NlcnQgQ01BS0UsICJDb3VsZCBub3QgZmluZCBjbWFrZSBpbiBQ QVRIIgorIAorICAgICAgICAgb3MubWFrZWRpcnMoQ01BS0VfQlVJTERfRElSLCBleGlzdF9vaz1U cnVlKQorLS0gCisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDUtUHl0aG9uLWJpbmFyeS1zaG91 bGQtbGluay10by1zeXN0ZW0tb25ueC5wYXRjaCBiLzAwMDUtUHl0aG9uLWJpbmFyeS1zaG91bGQt bGluay10by1zeXN0ZW0tb25ueC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi44NjU4MjY3Ci0tLSAvZGV2L251bGwKKysrIGIvMDAwNS1QeXRob24tYmluYXJ5LXNob3Vs ZC1saW5rLXRvLXN5c3RlbS1vbm54LnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gZDhhMzM1 NmUzZGFmNmQyNTE0Zjg0ZmYwY2Q2YjI0MGU4MTEzOTMxZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKK0Zyb206IERpZWdvIEhlcnJlcmEgPGRoZXJyZXJhQHJlZGhhdC5jb20+CitEYXRlOiBXZWQs IDEgSnVsIDIwMjYgMDA6MDY6MTggLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCA1LzddIFB5dGhvbiBi aW5hcnkgc2hvdWxkIGxpbmsgdG8gc3lzdGVtIG9ubngKKworCitkaWZmIC0tZ2l0IGEvQ01ha2VM aXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggM2EwOGQzMjg5Li44OTVhNjFkODQgMTAw NjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC00NjAs OCArNDYwLDE1IEBAIGlmKE9OTlhfQlVJTERfUFlUSE9OKQorICAgbmFub2JpbmRfYWRkX21vZHVs ZSgKKyAgICAgb25ueF9jcHAycHlfZXhwb3J0CisgICAgIE5CX1NUQVRJQyBOQl9ET01BSU4gb25u eCBTVEFCTEVfQUJJIEZSRUVfVEhSRUFERUQgTFRPCistICAgICIke09OTlhfUk9PVH0vb25ueC9j cHAycHlfZXhwb3J0LmNjIiAke09OTlhfU1JDU30gJHtPTk5YX1BST1RPX1NSQ1N9KQorKyAgICAi JHtPTk5YX1JPT1R9L29ubngvY3BwMnB5X2V4cG9ydC5jYyIpCisgICBhZGRfZGVwZW5kZW5jaWVz KG9ubnhfY3BwMnB5X2V4cG9ydCBvbm54KQorKyAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKAorKyAg ICBvbm54X2NwcDJweV9leHBvcnQKKysgICAgUFJJVkFURQorKyAgICBvbm54CisrICAgIG9ubnhf cHJvdG8KKysgICAgcHJvdG9idWYKKysgICkKKyBlbmRpZigpCisgCisgYWRkX29ubnhfY29tcGls ZV9vcHRpb25zKG9ubnhfcHJvdG8pCistLSAKKzIuNTQuMAorCgpkaWZmIC0tZ2l0IGEvMDAwNi1S ZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaCBiLzAwMDYtUmVtb3Zl LXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uZWYxZmJhZgotLS0gL2Rldi9udWxsCisrKyBiLzAwMDYtUmVtb3Zl LXB5dGhvbi1wYXJhbWV0ZXJpemVkLWRlcGVuZGVuY3kucGF0Y2gKQEAgLTAsMCArMSw1NzM5IEBA CitGcm9tIDljYTkxNjUwYjNmYjI3YjA5YmFlODg1NDY0ZWM5YjZlMjkyOTI4NTUgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCitGcm9tOiBEaWVnbyBIZXJyZXJhIDxkaGVycmVyYUByZWRoYXQuY29t PgorRGF0ZTogV2VkLCAxIEp1bCAyMDI2IDAwOjA2OjU3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0gg Ni83XSBSZW1vdmUgcHl0aG9uIHBhcmFtZXRlcml6ZWQgZGVwZW5kZW5jeQorCisKK2RpZmYgLS1n aXQgYS9vbm54L3Rlc3QvYmFzaWNfdGVzdC5weSBiL29ubngvdGVzdC9iYXNpY190ZXN0LnB5Citp bmRleCA5NzEzZTRkMWYuLjZkNmM2YzkwZSAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9iYXNpY190 ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvYmFzaWNfdGVzdC5weQorQEAgLTExLDcgKzExLDYgQEAg aW1wb3J0IHVuaXR0ZXN0CisgCisgaW1wb3J0IGdvb2dsZS5wcm90b2J1Zi5tZXNzYWdlCisgaW1w b3J0IGdvb2dsZS5wcm90b2J1Zi50ZXh0X2Zvcm1hdAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisg CisgaW1wb3J0IG9ubngKKyBmcm9tIG9ubnggaW1wb3J0IHNlcmlhbGl6YXRpb24KK0BAIC0zNCw5 NyArMzMsNiBAQCBkZWYgX3NpbXBsZV90ZW5zb3IoKSAtPiBvbm54LlRlbnNvclByb3RvOgorICAg ICApCisgCisgCistQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKKy0gICAgWwor LSAgICAgICAgeyJmb3JtYXQiOiAicHJvdG9idWYifSwKKy0gICAgICAgIHsiZm9ybWF0IjogInRl eHRwcm90byJ9LAorLSAgICAgICAgeyJmb3JtYXQiOiAianNvbiJ9LAorLSAgICAgICAgeyJmb3Jt YXQiOiAib25ueHR4dCJ9LAorLSAgICBdCistKQorLWNsYXNzIFRlc3RJTyh1bml0dGVzdC5UZXN0 Q2FzZSk6CistICAgIGZvcm1hdDogc3RyCistCistICAgIGRlZiB0ZXN0X2xvYWRfbW9kZWxfd2hl bl9pbnB1dF9pc19ieXRlcyhzZWxmKSAtPiBOb25lOgorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxl X21vZGVsKCkKKy0gICAgICAgIHByb3RvX3N0cmluZyA9IHNlcmlhbGl6YXRpb24ucmVnaXN0cnku Z2V0KHNlbGYuZm9ybWF0KS5zZXJpYWxpemVfcHJvdG8ocHJvdG8pCistICAgICAgICBsb2FkZWRf cHJvdG8gPSBvbm54LmxvYWRfbW9kZWxfZnJvbV9zdHJpbmcocHJvdG9fc3RyaW5nLCBmb3JtYXQ9 c2VsZi5mb3JtYXQpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJv dG8pCistCistICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfbW9kZWxfd2hlbl9pbnB1dF9oYXNf cmVhZF9mdW5jdGlvbihzZWxmKSAtPiBOb25lOgorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21v ZGVsKCkKKy0gICAgICAgICMgV2hlbiB0aGUgcHJvdG8gaXMgYSBieXRlcyByZXByZXNlbnRhdGlv biBwcm92aWRlZCB0byBgc2F2ZV9tb2RlbGAsCistICAgICAgICAjIGl0IHNob3VsZCBhbHdheXMg YmUgYSBzZXJpYWxpemVkIGJpbmFyeSBwcm90b2J1ZiByZXByZXNlbnRhdGlvbi4gQWthLiBmb3Jt YXQ9InByb3RvYnVmIgorLSAgICAgICAgIyBUaGUgc2F2ZWQgZmlsZSBmb3JtYXQgaXMgc3BlY2lm aWVkIGJ5IHRoZSBgZm9ybWF0YCBhcmd1bWVudC4KKy0gICAgICAgIHByb3RvX3N0cmluZyA9IHNl cmlhbGl6YXRpb24ucmVnaXN0cnkuZ2V0KCJwcm90b2J1ZiIpLnNlcmlhbGl6ZV9wcm90byhwcm90 bykKKy0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChw cm90b19zdHJpbmcsIGYsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgIGxvYWRlZF9wcm90 byA9IG9ubngubG9hZF9tb2RlbChpby5CeXRlc0lPKGYuZ2V0dmFsdWUoKSksIGZvcm1hdD1zZWxm LmZvcm1hdCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90bykK Ky0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF9tb2RlbF93aGVuX2lucHV0X2lzX2ZpbGVf bmFtZShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgcHJvdG8gPSBfc2ltcGxlX21vZGVsKCkKKy0g ICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6Cist ICAgICAgICAgICAgbW9kZWxfcGF0aCA9IG9zLnBhdGguam9pbih0ZW1wX2RpciwgIm1vZGVsLm9u bngiKQorLSAgICAgICAgICAgIG9ubnguc2F2ZV9tb2RlbChwcm90bywgbW9kZWxfcGF0aCwgZm9y bWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF9t b2RlbChtb2RlbF9wYXRoLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChwcm90bywgbG9hZGVkX3Byb3RvKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX2Fu ZF9sb2FkX21vZGVsX3doZW5faW5wdXRfaXNfcGF0aGxpa2Uoc2VsZikgLT4gTm9uZToKKy0gICAg ICAgIHByb3RvID0gX3NpbXBsZV9tb2RlbCgpCistICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBv cmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgorLSAgICAgICAgICAgIG1vZGVsX3BhdGggPSBw YXRobGliLlBhdGgodGVtcF9kaXIsICJtb2RlbC5vbm54IikKKy0gICAgICAgICAgICBvbm54LnNh dmVfbW9kZWwocHJvdG8sIG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAg ICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfcGF0aCwgZm9ybWF0PXNl bGYuZm9ybWF0KQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9w cm90bykKKy0KKy0KKy1AcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAorLSAgICBb CistICAgICAgICB7ImZvcm1hdCI6ICJwcm90b2J1ZiJ9LAorLSAgICAgICAgeyJmb3JtYXQiOiAi dGV4dHByb3RvIn0sCistICAgICAgICB7ImZvcm1hdCI6ICJqc29uIn0sCistICAgICAgICAjIFRo ZSBvbm54dHh0IGZvcm1hdCBkb2VzIG5vdCBzdXBwb3J0IHNhdmluZy9sb2FkaW5nIHRlbnNvcnMg eWV0CistICAgIF0KKy0pCistY2xhc3MgVGVzdElPVGVuc29yKHVuaXR0ZXN0LlRlc3RDYXNlKToK Ky0gICAgIiIiVGVzdCBsb2FkaW5nIGFuZCBzYXZpbmcgb2YgVGVuc29yUHJvdG8uIiIiCistCist ICAgIGZvcm1hdDogc3RyCistCistICAgIGRlZiB0ZXN0X2xvYWRfdGVuc29yX3doZW5faW5wdXRf aXNfYnl0ZXMoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIHByb3RvID0gX3NpbXBsZV90ZW5zb3Io KQorLSAgICAgICAgcHJvdG9fc3RyaW5nID0gc2VyaWFsaXphdGlvbi5yZWdpc3RyeS5nZXQoc2Vs Zi5mb3JtYXQpLnNlcmlhbGl6ZV9wcm90byhwcm90bykKKy0gICAgICAgIGxvYWRlZF9wcm90byA9 IG9ubngubG9hZF90ZW5zb3JfZnJvbV9zdHJpbmcocHJvdG9fc3RyaW5nLCBmb3JtYXQ9c2VsZi5m b3JtYXQpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCist CistICAgIGRlZiB0ZXN0X3NhdmVfYW5kX2xvYWRfdGVuc29yX3doZW5faW5wdXRfaGFzX3JlYWRf ZnVuY3Rpb24oc2VsZikgLT4gTm9uZToKKy0gICAgICAgICMgVGVzdCBpZiBpbnB1dCBoYXMgYSBy ZWFkIGZ1bmN0aW9uCistICAgICAgICBwcm90byA9IF9zaW1wbGVfdGVuc29yKCkKKy0gICAgICAg IGYgPSBpby5CeXRlc0lPKCkKKy0gICAgICAgIG9ubnguc2F2ZV90ZW5zb3IocHJvdG8sIGYsIGZv cm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgIGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5z b3IoaW8uQnl0ZXNJTyhmLmdldHZhbHVlKCkpLCBmb3JtYXQ9c2VsZi5mb3JtYXQpCistICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKHByb3RvLCBsb2FkZWRfcHJvdG8pCistCistICAgIGRlZiB0ZXN0 X3NhdmVfYW5kX2xvYWRfdGVuc29yX3doZW5faW5wdXRfaXNfZmlsZV9uYW1lKHNlbGYpIC0+IE5v bmU6CistICAgICAgICAjIFRlc3QgaWYgaW5wdXQgaXMgYSBmaWxlIG5hbWUKKy0gICAgICAgIHBy b3RvID0gX3NpbXBsZV90ZW5zb3IoKQorLSAgICAgICAgd2l0aCB0ZW1wZmlsZS5UZW1wb3JhcnlE aXJlY3RvcnkoKSBhcyB0ZW1wX2RpcjoKKy0gICAgICAgICAgICBtb2RlbF9wYXRoID0gb3MucGF0 aC5qb2luKHRlbXBfZGlyLCAibW9kZWwub25ueCIpCistICAgICAgICAgICAgb25ueC5zYXZlX3Rl bnNvcihwcm90bywgbW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYuZm9ybWF0KQorLSAgICAgICAgICAg IGxvYWRlZF9wcm90byA9IG9ubngubG9hZF90ZW5zb3IobW9kZWxfcGF0aCwgZm9ybWF0PXNlbGYu Zm9ybWF0KQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHJvdG8sIGxvYWRlZF9wcm90 bykKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9hbmRfbG9hZF90ZW5zb3Jfd2hlbl9pbnB1dF9pc19w YXRobGlrZShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgIyBUZXN0IGlmIGlucHV0IGlzIGEgZmls ZSBuYW1lCistICAgICAgICBwcm90byA9IF9zaW1wbGVfdGVuc29yKCkKKy0gICAgICAgIHdpdGgg dGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdGVtcF9kaXI6CistICAgICAgICAgICAg bW9kZWxfcGF0aCA9IHBhdGhsaWIuUGF0aCh0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQorLSAgICAg ICAgICAgIG9ubnguc2F2ZV90ZW5zb3IocHJvdG8sIG1vZGVsX3BhdGgsIGZvcm1hdD1zZWxmLmZv cm1hdCkKKy0gICAgICAgICAgICBsb2FkZWRfcHJvdG8gPSBvbm54LmxvYWRfdGVuc29yKG1vZGVs X3BhdGgsIGZvcm1hdD1zZWxmLmZvcm1hdCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs KHByb3RvLCBsb2FkZWRfcHJvdG8pCistCistCisgY2xhc3MgVGVzdFNhdmVBbmRMb2FkRmlsZUV4 dGVuc2lvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9zYXZlX21vZGVsX3Bp Y2tzX2NvcnJlY3RfZm9ybWF0X2Zyb21fZXh0ZW5zaW9uKHNlbGYpIC0+IE5vbmU6CisgICAgICAg ICBwcm90byA9IF9zaW1wbGVfbW9kZWwoKQorZGlmZiAtLWdpdCBhL29ubngvdGVzdC9oZWxwZXJf dGVzdC5weSBiL29ubngvdGVzdC9oZWxwZXJfdGVzdC5weQoraW5kZXggMjc3OTNmNTYxLi45MWY3 NzM5YWEgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvaGVscGVyX3Rlc3QucHkKKysrKyBiL29ubngv dGVzdC9oZWxwZXJfdGVzdC5weQorQEAgLTEyLDcgKzEyLDYgQEAgZnJvbSB0eXBpbmcgaW1wb3J0 IEFueQorIGltcG9ydCBtbF9kdHlwZXMKKyBpbXBvcnQgbnVtcHkgYXMgbnAKKyBpbXBvcnQgbnVt cHkudHlwaW5nIGFzIG5wdAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisgaW1wb3J0IHB5dGVzdAor IAorIGZyb20gb25ueCBpbXBvcnQgKAorQEAgLTYzNiw2MyArNjM1LDYgQEAgY2xhc3MgVGVzdEhl bHBlclRlbnNvckZ1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgZXhw ZWN0ZWQudmlldyhucC51aW50OCksCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVk LnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAg ICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90by5JTlQ0KSwKKy0gICAgICAg ICAgICAoKDUsIDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSwgKDIqKjEwLCkpLAorLSAg ICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0X21ha2VfNGJpdF90ZW5zb3Ioc2VsZiwgZHR5 cGUsIGRpbXMpIC0+IE5vbmU6CistICAgICAgICB0eXBlX3JhbmdlID0geworLSAgICAgICAgICAg IFRlbnNvclByb3RvLlVJTlQ0OiAoMCwgMTUpLAorLSAgICAgICAgICAgIFRlbnNvclByb3RvLklO VDQ6ICgtOCwgNyksCistICAgICAgICB9CistICAgICAgICBkYXRhID0gbnAucmFuZG9tLnJhbmRp bnQoCistICAgICAgICAgICAgdHlwZV9yYW5nZVtkdHlwZV1bMF0sIGhpZ2g9dHlwZV9yYW5nZVtk dHlwZV1bMV0gKyAxLCBzaXplPWRpbXMKKy0gICAgICAgICkKKy0gICAgICAgIHkgPSBoZWxwZXIu bWFrZV90ZW5zb3IoInkiLCBkdHlwZSwgZGF0YS5zaGFwZSwgZGF0YSkKKy0KKy0gICAgICAgICMg Q2hlY2sgdGhlIGV4cGVjdGVkIHNpemUgb2YgaW50MzJfZGF0YSBpbiBieXRlcworLSAgICAgICAg ZXhwZWN0ZWRfZGF0YV9zaXplID0gbWF0aC5jZWlsKG5wLnByb2QoZGF0YS5zaGFwZSkgLyAyLjAp CistICAgICAgICBhY3R1YWxfZGF0YV9zaXplID0gbGVuKGJ5dGVzKHkuaW50MzJfZGF0YSkpCist ICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbChhY3R1YWxfZGF0YV9zaXplLCBleHBlY3Rl ZF9kYXRhX3NpemUpCistCistICAgICAgICAjIENoZWNrIHRoZSBleHBlY3RlZCBkYXRhIHZhbHVl cy4KKy0gICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19hcnJheSh5KQorLSAgICAgICAgbnAu dGVzdGluZy5hc3NlcnRfZXF1YWwoeW5wLCBkYXRhKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5w YXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAg ICAgICAgICgoNSwgNCwgNiksICg0LCA2LCA1KSwgKDMsIDMpLCAoMSwpLCAoMioqMTAsKSksCist ICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfNGJpdF90ZW5zb3Jfc2l6ZShzZWxmLCBk aW1zKSAtPiBOb25lOgorLSAgICAgICAgIyBBIGJ1ZyBjYXVzZWQgbmVnYXRpdmUgaW50NCB2YWx1 ZXMgdG8gaW5mbGF0ZSB0ZW5zb3Igc2l6ZS4KKy0gICAgICAgICMgU28sIHRlc3QgbmVnYXRpdmUg dmFsdWVzIGhlcmUuCistICAgICAgICBudW1fZWxlbXMgPSBucC5wcm9kKGRpbXMpCistICAgICAg ICBkYXRhID0gbnAuYXJyYXkoWy00XSAqIG51bV9lbGVtcywgZHR5cGU9bnAuaW50OCkucmVzaGFw ZShkaW1zKQorLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNvcigieSIsIFRlbnNvclByb3Rv LklOVDQsIGRhdGEuc2hhcGUsIGRhdGEpCistCistICAgICAgICAjIENoZWNrIHRoZSBleHBlY3Rl ZCBzaXplIG9mIGludDMyX2RhdGEgaW4gYnl0ZXMKKy0gICAgICAgIGV4cGVjdGVkX2RhdGFfc2l6 ZSA9IG1hdGguY2VpbChudW1fZWxlbXMgLyAyLjApCistICAgICAgICBhY3R1YWxfZGF0YV9zaXpl ID0gbGVuKGJ5dGVzKHkuaW50MzJfZGF0YSkpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9l cXVhbChhY3R1YWxfZGF0YV9zaXplLCBleHBlY3RlZF9kYXRhX3NpemUpCistCistICAgIEBwYXJh bWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1 Y3QoCistICAgICAgICAgICAgKFRlbnNvclByb3RvLlVJTlQ0LCBUZW5zb3JQcm90by5JTlQ0KSwg KCg1LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCkpCistICAgICAgICApCistICAgICkK Ky0gICAgZGVmIHRlc3RfbWFrZV80Yml0X3Jhd190ZW5zb3Ioc2VsZiwgZHR5cGUsIGRpbXMpIC0+ IE5vbmU6CistICAgICAgICBkYXRhID0gbnAucmFuZG9tLnJhbmRpbnQoMCwgaGlnaD0xNiwgc2l6 ZT1kaW1zLCBkdHlwZT1ucC51aW50OCkKKy0gICAgICAgIHBhY2tlZF9kYXRhID0gX3BhY2tfNGJp dChkYXRhKQorLQorLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNvcigKKy0gICAgICAgICAg ICAicGFja2VkX2ludDQiLCBkdHlwZSwgZGltcywgcGFja2VkX2RhdGEudG9ieXRlcygpLCByYXc9 VHJ1ZQorLSAgICAgICAgKQorLSAgICAgICAgeW5wID0gbnVtcHlfaGVscGVyLnRvX2FycmF5KHkp CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9lcXVhbCh5bnAudmlldyhucC51aW50OCksIGRh dGEpCistCisgICAgIGRlZiB0ZXN0X21ha2VfZmxvYXQ0ZTJtMV9yYXdfdGVuc29yKHNlbGYpIC0+ IE5vbmU6CisgICAgICAgICBkYXRhID0gbnAuYXJyYXkoWzAsIDAuNSwgMSwgMjQwLCAxMCwgLTJd LCBkdHlwZT1tbF9kdHlwZXMuZmxvYXQ0X2UybTFmbikKKyAgICAgICAgIGV4cGVjdGVkID0gZGF0 YS52aWV3KG5wLnVpbnQ4KQorQEAgLTcwNyw2MyArNjQ5LDYgQEAgY2xhc3MgVGVzdEhlbHBlclRl bnNvckZ1bmN0aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICB5bnAgPSBudW1weV9o ZWxwZXIudG9fYXJyYXkoeSkKKyAgICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKHlucC52 aWV3KG5wLnVpbnQ4KSwgZXhwZWN0ZWQpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRl cml6ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAgICAg KFRlbnNvclByb3RvLlVJTlQyLCBUZW5zb3JQcm90by5JTlQyKSwKKy0gICAgICAgICAgICAoKDUs IDQsIDYpLCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSwgKDIqKjEwLCkpLAorLSAgICAgICAgKQor LSAgICApCistICAgIGRlZiB0ZXN0X21ha2VfMmJpdF90ZW5zb3Ioc2VsZiwgZHR5cGUsIGRpbXMp IC0+IE5vbmU6CistICAgICAgICB0eXBlX3JhbmdlID0geworLSAgICAgICAgICAgIFRlbnNvclBy b3RvLlVJTlQyOiAoMCwgMyksCistICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UMjogKC0yLCAx KSwKKy0gICAgICAgIH0KKy0gICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGludCgKKy0gICAg ICAgICAgICB0eXBlX3JhbmdlW2R0eXBlXVswXSwgaGlnaD10eXBlX3JhbmdlW2R0eXBlXVsxXSAr IDEsIHNpemU9ZGltcworLSAgICAgICAgKQorLSAgICAgICAgeSA9IGhlbHBlci5tYWtlX3RlbnNv cigieSIsIGR0eXBlLCBkYXRhLnNoYXBlLCBkYXRhKQorLQorLSAgICAgICAgIyBDaGVjayB0aGUg ZXhwZWN0ZWQgc2l6ZSBvZiBpbnQzMl9kYXRhIGluIGJ5dGVzCistICAgICAgICBleHBlY3RlZF9k YXRhX3NpemUgPSBtYXRoLmNlaWwobnAucHJvZChkYXRhLnNoYXBlKSAvIDQuMCkKKy0gICAgICAg IGFjdHVhbF9kYXRhX3NpemUgPSBsZW4oYnl0ZXMoeS5pbnQzMl9kYXRhKSkKKy0gICAgICAgIG5w LnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGFjdHVhbF9kYXRhX3NpemUsIGV4cGVjdGVkX2RhdGFfc2l6 ZSkKKy0KKy0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIGRhdGEgdmFsdWVzLgorLSAgICAg ICAgeW5wID0gbnVtcHlfaGVscGVyLnRvX2FycmF5KHkpCistICAgICAgICBucC50ZXN0aW5nLmFz c2VydF9lcXVhbCh5bnAsIGRhdGEpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6 ZWQuZXhwYW5kKAorLSAgICAgICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAgICAgKCg1 LCA0LCA2KSwgKDQsIDYsIDUpLCAoMywgMyksICgxLCksICgyKioxMCwpKSwKKy0gICAgICAgICkK Ky0gICAgKQorLSAgICBkZWYgdGVzdF8yYml0X3RlbnNvcl9zaXplKHNlbGYsIGRpbXMpIC0+IE5v bmU6CistICAgICAgICAjIEEgYnVnIGNhdXNlZCBuZWdhdGl2ZSBpbnQyIHZhbHVlcyB0byBpbmZs YXRlIHRlbnNvciBzaXplLgorLSAgICAgICAgIyBTbywgdGVzdCBuZWdhdGl2ZSB2YWx1ZXMgaGVy ZS4KKy0gICAgICAgIG51bV9lbGVtcyA9IG5wLnByb2QoZGltcykKKy0gICAgICAgIGRhdGEgPSBu cC5hcnJheShbLTJdICogbnVtX2VsZW1zLCBkdHlwZT1ucC5pbnQ4KS5yZXNoYXBlKGRpbXMpCist ICAgICAgICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKCJ5IiwgVGVuc29yUHJvdG8uSU5UMiwgZGF0 YS5zaGFwZSwgZGF0YSkKKy0KKy0gICAgICAgICMgQ2hlY2sgdGhlIGV4cGVjdGVkIHNpemUgb2Yg aW50MzJfZGF0YSBpbiBieXRlcworLSAgICAgICAgZXhwZWN0ZWRfZGF0YV9zaXplID0gbWF0aC5j ZWlsKG51bV9lbGVtcyAvIDQuMCkKKy0gICAgICAgIGFjdHVhbF9kYXRhX3NpemUgPSBsZW4oYnl0 ZXMoeS5pbnQzMl9kYXRhKSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2VxdWFsKGFjdHVh bF9kYXRhX3NpemUsIGV4cGVjdGVkX2RhdGFfc2l6ZSkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQu cGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0gICAg ICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDIsIFRlbnNvclByb3RvLklOVDIpLCAoKDUsIDQsIDYp LCAoNCwgNiwgNSksICgzLCAzKSwgKDEsKSkKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYg dGVzdF9tYWtlXzJiaXRfcmF3X3RlbnNvcihzZWxmLCBkdHlwZSwgZGltcykgLT4gTm9uZToKKy0g ICAgICAgIGRhdGEgPSBucC5yYW5kb20ucmFuZGludCgwLCBoaWdoPTQsIHNpemU9ZGltcywgZHR5 cGU9bnAudWludDgpCistICAgICAgICBwYWNrZWRfZGF0YSA9IF9wYWNrXzJiaXQoZGF0YSkKKy0K Ky0gICAgICAgIHkgPSBoZWxwZXIubWFrZV90ZW5zb3IoCistICAgICAgICAgICAgInBhY2tlZF9p bnQyIiwgZHR5cGUsIGRpbXMsIHBhY2tlZF9kYXRhLnRvYnl0ZXMoKSwgcmF3PVRydWUKKy0gICAg ICAgICkKKy0gICAgICAgIHlucCA9IG51bXB5X2hlbHBlci50b19hcnJheSh5KQorLSAgICAgICAg bnAudGVzdGluZy5hc3NlcnRfZXF1YWwoeW5wLnZpZXcobnAudWludDgpLCBkYXRhKQorLQorICAg ICBkZWYgdGVzdF9tYWtlX2Zsb2F0NGUybTFfdGVuc29yKHNlbGYpIC0+IE5vbmU6CisgICAgICAg ICB5ID0gaGVscGVyLm1ha2VfdGVuc29yKAorICAgICAgICAgICAgICJ6ZXJvX3BvaW50IiwKK0BA IC0xMTA1LDI4ICs5OTAsNiBAQCBjbGFzcyBUZXN0SGVscGVyTWFwcGluZ0Z1bmN0aW9ucyh1bml0 dGVzdC5UZXN0Q2FzZSk6CisgCisgCisgY2xhc3MgVGVzdEF0dHJUeXBlVG9TdHIodW5pdHRlc3Qu VGVzdENhc2UpOgorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0g ICAgICAgIFsKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5GTE9B VCwgIkZMT0FUIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUu SU5ULCAiSU5UIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUu U1RSSU5HLCAiU1RSSU5HIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0 ZVR5cGUuVEVOU09SLCAiVEVOU09SIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0 dHJpYnV0ZVR5cGUuR1JBUEgsICJHUkFQSCIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90 by5BdHRyaWJ1dGVUeXBlLlNQQVJTRV9URU5TT1IsICJTUEFSU0VfVEVOU09SIiksCistICAgICAg ICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuVFlQRV9QUk9UTywgIlRZUEVfUFJP VE8iKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5GTE9BVFMs ICJGTE9BVFMiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJvdG8uQXR0cmlidXRlVHlwZS5J TlRTLCAiSU5UUyIpLAorLSAgICAgICAgICAgIChBdHRyaWJ1dGVQcm90by5BdHRyaWJ1dGVUeXBl LlNUUklOR1MsICJTVFJJTkdTIiksCistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJp YnV0ZVR5cGUuVEVOU09SUywgIlRFTlNPUlMiKSwKKy0gICAgICAgICAgICAoQXR0cmlidXRlUHJv dG8uQXR0cmlidXRlVHlwZS5HUkFQSFMsICJHUkFQSFMiKSwKKy0gICAgICAgICAgICAoQXR0cmli dXRlUHJvdG8uQXR0cmlidXRlVHlwZS5TUEFSU0VfVEVOU09SUywgIlNQQVJTRV9URU5TT1JTIiks CistICAgICAgICAgICAgKEF0dHJpYnV0ZVByb3RvLkF0dHJpYnV0ZVR5cGUuVFlQRV9QUk9UT1Ms ICJUWVBFX1BST1RPUyIpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2F0dHJf dHlwZV90b19zdHIoc2VsZiwgYXR0cl90eXBlLCBleHBlY3RlZF9zdHIpOgorLSAgICAgICAgcmVz dWx0ID0gaGVscGVyLl9hdHRyX3R5cGVfdG9fc3RyKGF0dHJfdHlwZSkKKy0gICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZF9zdHIpCistCisgICAgIGRlZiB0ZXN0X2F0dHJf dHlwZV90b19zdHJfdW5kZWZpbmVkKHNlbGYpOgorICAgICAgICAgcmVzdWx0ID0gaGVscGVyLl9h dHRyX3R5cGVfdG9fc3RyKDk5OTkpCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwg IlVOREVGSU5FRCIpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L25vZGVfc2hhcGVfaW5mZXJlbmNl X3Rlc3QucHkgYi9vbm54L3Rlc3Qvbm9kZV9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weQoraW5kZXgg ZWNlNzc2ZTQ4Li42MzI1MmI5MjIgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3Qvbm9kZV9zaGFwZV9p bmZlcmVuY2VfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L25vZGVfc2hhcGVfaW5mZXJlbmNlX3Rl c3QucHkKK0BAIC01LDM0ICs1LDkgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9u cworIAorIGltcG9ydCB1bml0dGVzdAorIAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCistCisgaW1w b3J0IG9ubnguaGVscGVyCisgaW1wb3J0IG9ubnguc2hhcGVfaW5mZXJlbmNlCisgCisgCistY2xh c3MgTm9kZUluZmVyZW5jZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorLSAgICBAcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoIkdy ZWF0ZXJPckVxdWFsIiwpLAorLSAgICAgICAgICAgICgiTGVzc09yRXF1YWwiLCksCistICAgICAg ICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfY29tcGFyaXNvbl9vcChzZWxmLCBvcF90eXBlKToK Ky0gICAgICAgIG5vZGUgPSBvbm54LmhlbHBlci5tYWtlX25vZGUob3BfdHlwZSwgWyJ4IiwgInki XSwgWyJ6Il0pCistICAgICAgICBzY2hlbWEgPSBvbm54LmRlZnMuZ2V0X3NjaGVtYShub2RlLm9w X3R5cGUsIDIzLCAiIikKKy0gICAgICAgIHh0eXBlID0gb25ueC5oZWxwZXIubWFrZV90ZW5zb3Jf dHlwZV9wcm90byhvbm54LlRlbnNvclByb3RvLklOVDMyLCBbMSwgMTBdKQorLSAgICAgICAgeXR5 cGUgPSBvbm54LmhlbHBlci5tYWtlX3RlbnNvcl90eXBlX3Byb3RvKG9ubnguVGVuc29yUHJvdG8u SU5UMzIsIFsxMCwgMV0pCistICAgICAgICByZXN1bHQgPSBvbm54LnNoYXBlX2luZmVyZW5jZS5p bmZlcl9ub2RlX291dHB1dHMoCistICAgICAgICAgICAgc2NoZW1hLCBub2RlLCB7IngiOiB4dHlw ZSwgInkiOiB5dHlwZX0KKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlz dChyZXN1bHQua2V5cygpKSwgWyJ6Il0pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3Vs dFsieiJdLnRlbnNvcl90eXBlLmVsZW1fdHlwZSwgb25ueC5UZW5zb3JQcm90by5CT09MKQorLSAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKy0gICAgICAgICAgICBbZGltLmRpbV92YWx1ZSBmb3Ig ZGltIGluIHJlc3VsdFsieiJdLnRlbnNvcl90eXBlLnNoYXBlLmRpbV0sCistICAgICAgICAgICAg WzEwLCAxMF0sCistICAgICAgICApCistCistCisgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoK KyAgICAgdW5pdHRlc3QubWFpbigpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L251bXB5X2hlbHBl cl90ZXN0LnB5IGIvb25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0LnB5CitpbmRleCA1NjgwMDA1 NTAuLjIyNjUwMDhkMiAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9udW1weV9oZWxwZXJfdGVzdC5w eQorKysrIGIvb25ueC90ZXN0L251bXB5X2hlbHBlcl90ZXN0LnB5CitAQCAtNiw3ICs2LDYgQEAg ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucworIGltcG9ydCB1bml0dGVzdAorIAor IGltcG9ydCBudW1weSBhcyBucAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisgCisgaW1wb3J0IG9u bngKKyBpbXBvcnQgb25ueC5yZWZlcmVuY2UKK0BAIC0xNDgsMzggKzE0Nyw2IEBAIGNsYXNzIFRl c3ROdW1weUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBzZWxmLmFzc2VydEVx dWFsKHRwLlNlcmlhbGl6ZVRvU3RyaW5nKCksIGFnYWluLlNlcmlhbGl6ZVRvU3RyaW5nKCkpCisg ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRwLmRhdGFfdHlwZSwgaGVscGVyLm5wX2R0eXBlX3Rv X3RlbnNvcl9kdHlwZShiYWNrLmR0eXBlKSkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1l dGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJGTE9BVCIsIG9ubngu VGVuc29yUHJvdG8uRkxPQVQpLAorLSAgICAgICAgICAgICgiVUlOVDgiLCBvbm54LlRlbnNvclBy b3RvLlVJTlQ4KSwKKy0gICAgICAgICAgICAoIklOVDgiLCBvbm54LlRlbnNvclByb3RvLklOVDgp LAorLSAgICAgICAgICAgICgiVUlOVDE2Iiwgb25ueC5UZW5zb3JQcm90by5VSU5UMTYpLAorLSAg ICAgICAgICAgICgiSU5UMTYiLCBvbm54LlRlbnNvclByb3RvLklOVDE2KSwKKy0gICAgICAgICAg ICAoIklOVDMyIiwgb25ueC5UZW5zb3JQcm90by5JTlQzMiksCistICAgICAgICAgICAgKCJJTlQ2 NCIsIG9ubnguVGVuc29yUHJvdG8uSU5UNjQpLAorLSAgICAgICAgICAgICgiQk9PTCIsIG9ubngu VGVuc29yUHJvdG8uQk9PTCksCistICAgICAgICAgICAgKCJGTE9BVDE2Iiwgb25ueC5UZW5zb3JQ cm90by5GTE9BVDE2KSwKKy0gICAgICAgICAgICAoIkRPVUJMRSIsIG9ubnguVGVuc29yUHJvdG8u RE9VQkxFKSwKKy0gICAgICAgICAgICAoIlVJTlQzMiIsIG9ubnguVGVuc29yUHJvdG8uVUlOVDMy KSwKKy0gICAgICAgICAgICAoIlVJTlQ2NCIsIG9ubnguVGVuc29yUHJvdG8uVUlOVDY0KSwKKy0g ICAgICAgICAgICAoIkNPTVBMRVg2NCIsIG9ubnguVGVuc29yUHJvdG8uQ09NUExFWDY0KSwKKy0g ICAgICAgICAgICAoIkNPTVBMRVgxMjgiLCBvbm54LlRlbnNvclByb3RvLkNPTVBMRVgxMjgpLAor LSAgICAgICAgICAgICgiQkZMT0FUMTYiLCBvbm54LlRlbnNvclByb3RvLkJGTE9BVDE2KSwKKy0g ICAgICAgICAgICAoIkZMT0FUOEU0TTNGTiIsIG9ubnguVGVuc29yUHJvdG8uRkxPQVQ4RTRNM0ZO KSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU0TTNGTlVaIiwgb25ueC5UZW5zb3JQcm90by5GTE9B VDhFNE0zRk5VWiksCistICAgICAgICAgICAgKCJGTE9BVDhFNU0yIiwgb25ueC5UZW5zb3JQcm90 by5GTE9BVDhFNU0yKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU1TTJGTlVaIiwgb25ueC5UZW5z b3JQcm90by5GTE9BVDhFNU0yRk5VWiksCistICAgICAgICAgICAgKCJGTE9BVDhFOE0wIiwgb25u eC5UZW5zb3JQcm90by5GTE9BVDhFOE0wKSwKKy0gICAgICAgICAgICAoIlVJTlQ0Iiwgb25ueC5U ZW5zb3JQcm90by5VSU5UNCksCistICAgICAgICAgICAgKCJJTlQ0Iiwgb25ueC5UZW5zb3JQcm90 by5JTlQ0KSwKKy0gICAgICAgICAgICAoIlVJTlQyIiwgb25ueC5UZW5zb3JQcm90by5VSU5UMiks CistICAgICAgICAgICAgKCJJTlQyIiwgb25ueC5UZW5zb3JQcm90by5JTlQyKSwKKy0gICAgICAg ICAgICAoIkZMT0FUNEUyTTEiLCBvbm54LlRlbnNvclByb3RvLkZMT0FUNEUyTTEpLAorLSAgICAg ICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3RvX2FycmF5X2Zyb21fYXJyYXkoc2VsZiwgXzog c3RyLCBkYXRhX3R5cGU6IG9ubnguVGVuc29yUHJvdG8uRGF0YVR5cGUpOgorLSAgICAgICAgc2Vs Zi5fdG9fYXJyYXlfZnJvbV9hcnJheShkYXRhX3R5cGUpCistCisgICAgIGRlZiB0ZXN0X3RvX2Fy cmF5X2Zyb21fYXJyYXlfc3RyaW5nKHNlbGYpOgorICAgICAgICAgc2VsZi5fdG9fYXJyYXlfZnJv bV9hcnJheShvbm54LlRlbnNvclByb3RvLlNUUklORywgRmFsc2UpCisgCitkaWZmIC0tZ2l0IGEv b25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5IGIvb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5CitpbmRl eCAxOWVlNDA3OTIuLjllMjJmMTlhZSAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9wYXJzZXJfdGVz dC5weQorKysrIGIvb25ueC90ZXN0L3BhcnNlcl90ZXN0LnB5CitAQCAtNSw4ICs1LDYgQEAgZnJv bSBfX2Z1dHVyZV9fIGltcG9ydCBhbm5vdGF0aW9ucworIAorIGltcG9ydCB1bml0dGVzdAorIAor LWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVyaXplZAorLQorIGltcG9ydCBvbm54 CisgZnJvbSBvbm54IGltcG9ydCBHcmFwaFByb3RvLCBPcGVyYXRvclNldElkUHJvdG8sIFRlbnNv clByb3RvLCBjaGVja2VyCisgCitAQCAtMTIwLDk0ICsxMTgsNiBAQCBjbGFzcyBUZXN0QmFzaWNG dW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgbW9kZWwgPSBvbm54LnBhcnNl ci5wYXJzZV9tb2RlbChpbnB1dCkKKyAgICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwobW9kZWwp CisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAg ICAoCistICAgICAgICAgICAgICAgICJhZ3JhcGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtOXSBv dXQpIHsgb3V0ID0gY3VzdG9tX2RvbWFpbi5TZWx1KHgpIH0iLAorLSAgICAgICAgICAgICAgICB7 fSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgImFn cmFwaCAoZmxvYXRbTl0geCkgPT4gKGZsb2F0W05dIG91dCkgeyBvdXQgPSBjdXN0b21fZG9tYWlu LlNlbHU8YWxwaGE9Mi4wPih4KSB9IiwKKy0gICAgICAgICAgICAgICAgeyJhbHBoYSI6IDIuMH0s CistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICJhZ3Jh cGggKGZsb2F0W05dIHgpID0+IChmbG9hdFtOXSBvdXQpIHsgb3V0ID0gY3VzdG9tX2RvbWFpbi5T ZWx1PGdhbW1hPTMuMD4oeCkgfSIsCistICAgICAgICAgICAgICAgIHsiZ2FtbWEiOiAzLjB9LAor LSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAiYWdyYXBo IChmbG9hdFtOXSB4KSA9PiAoZmxvYXRbTl0gb3V0KSB7IG91dCA9IGN1c3RvbV9kb21haW4uU2Vs dTxhbHBoYT0yLjAsIGdhbW1hPTMuMD4oeCkgfSIsCistICAgICAgICAgICAgICAgIHsiYWxwaGEi OiAyLjAsICJnYW1tYSI6IDMuMH0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgIF0KKy0gICAg KQorLSAgICBkZWYgdGVzdF9jb21wb3NpdGVfcGFyc2VfZnVuY3Rpb25fd2l0aF9hdHRyaWJ1dGVz KAorLSAgICAgICAgc2VsZiwgZ3JhcGhfdGV4dDogc3RyLCBleHBlY3RlZF9hdHRyaWJ1dGU6IGRp Y3QKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZGVmYXVsdF9hbHBoYSA9IDEuNjczMjYzMTky MTc2ODE4ODQ3NjU2MjUKKy0gICAgICAgIGRlZmF1bHRfZ2FtbWEgPSAxLjA1MDcwMTAyMjE0ODEz MjMyNDIxODc1CistCistICAgICAgICBkZWYgZXhwZWN0X2N1c3RvbV9ub2RlX2F0dHJpYnV0ZShu b2RlLCBhdHRyaWJ1dGVzKToKKy0gICAgICAgICAgICBmb3Iga2V5IGluIGF0dHJpYnV0ZXM6Cist ICAgICAgICAgICAgICAgIG1hdGNoX2F0dHIgPSBbYXR0ciBmb3IgYXR0ciBpbiBub2RlLmF0dHJp YnV0ZSBpZiBhdHRyLm5hbWUgPT0ga2V5XQorLSAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKG1h dGNoX2F0dHIpID09IDEKKy0gICAgICAgICAgICAgICAgYXNzZXJ0IG1hdGNoX2F0dHJbMF0uZiA9 PSBhdHRyaWJ1dGVzW2tleV0KKy0KKy0gICAgICAgIGRlZiBleHBlY3RfbW9kZWxfZnVuY3Rpb25f YXR0cmlidXRlKG1vZGVsKToKKy0gICAgICAgICAgICBhc3NlcnQgbGVuKG1vZGVsLmZ1bmN0aW9u c1swXS5hdHRyaWJ1dGVfcHJvdG8pID09IDIKKy0gICAgICAgICAgICBhdHRyX3Byb3RvX2FscGhh ID0gWworLSAgICAgICAgICAgICAgICBhdHRyX3Byb3RvCistICAgICAgICAgICAgICAgIGZvciBh dHRyX3Byb3RvIGluIG1vZGVsLmZ1bmN0aW9uc1swXS5hdHRyaWJ1dGVfcHJvdG8KKy0gICAgICAg ICAgICAgICAgaWYgYXR0cl9wcm90by5uYW1lID09ICJhbHBoYSIKKy0gICAgICAgICAgICBdCist ICAgICAgICAgICAgYXNzZXJ0IGxlbihhdHRyX3Byb3RvX2FscGhhKSA9PSAxIGFuZCBhdHRyX3By b3RvX2FscGhhWzBdLmYgPT0gZGVmYXVsdF9hbHBoYQorLSAgICAgICAgICAgIGF0dHJfcHJvdG9f Z2FtbWEgPSBbCistICAgICAgICAgICAgICAgIGF0dHJfcHJvdG8KKy0gICAgICAgICAgICAgICAg Zm9yIGF0dHJfcHJvdG8gaW4gbW9kZWwuZnVuY3Rpb25zWzBdLmF0dHJpYnV0ZV9wcm90bworLSAg ICAgICAgICAgICAgICBpZiBhdHRyX3Byb3RvLm5hbWUgPT0gImdhbW1hIgorLSAgICAgICAgICAg IF0KKy0gICAgICAgICAgICBhc3NlcnQgbGVuKGF0dHJfcHJvdG9fZ2FtbWEpID09IDEgYW5kIGF0 dHJfcHJvdG9fZ2FtbWFbMF0uZiA9PSBkZWZhdWx0X2dhbW1hCistCistICAgICAgICBmdW5jdGlv bl90ZXh0ID0gZiIiIgorLSAgICAgICAgIDwKKy0gICAgICAgICBkb21haW46ICJjdXN0b21fZG9t YWluIiwKKy0gICAgICAgICBvcHNldF9pbXBvcnQ6IFsgIiIgOiAxNV0sCistICAgICAgICAgZG9j X3N0cmluZzogIlRlc3QgZnVuY3Rpb24gcHJvdG8iCistICAgICAgICAgPgorLSAgICAgICAgICAg U2VsdQorLSAgICAgICAgICAgPGFscGhhOiBmbG9hdD17ZGVmYXVsdF9hbHBoYX0sIGdhbW1hOiBm bG9hdD17ZGVmYXVsdF9nYW1tYX0+CistICAgICAgICAgICAoWCkgPT4gKEMpCistICAgICAgICAg ICB7eworLSAgICAgICAgICAgICAgIGNvbnN0YW50X2FscGhhID0gQ29uc3RhbnQ8dmFsdWVfZmxv YXQ6IGZsb2F0PUBhbHBoYT4oKQorLSAgICAgICAgICAgICAgIGNvbnN0YW50X2dhbW1hID0gQ29u c3RhbnQ8dmFsdWVfZmxvYXQ6IGZsb2F0PUBnYW1tYT4oKQorLSAgICAgICAgICAgICAgIGFscGhh X3ggPSBDYXN0TGlrZShjb25zdGFudF9hbHBoYSwgWCkKKy0gICAgICAgICAgICAgICBnYW1tYV94 ID0gQ2FzdExpa2UoY29uc3RhbnRfZ2FtbWEsIFgpCistICAgICAgICAgICAgICAgZXhwX3ggPSBF eHAoWCkKKy0gICAgICAgICAgICAgICBhbHBoYV94X2V4cF94ID0gTXVsKGFscGhhX3gsIGV4cF94 KQorLSAgICAgICAgICAgICAgIGFscGhhX3hfZXhwX3hfID0gU3ViKGFscGhhX3hfZXhwX3gsIGFs cGhhX3gpCistICAgICAgICAgICAgICAgbmVnID0gTXVsKGdhbW1hX3gsIGFscGhhX3hfZXhwX3hf KQorLSAgICAgICAgICAgICAgIHBvcyA9IE11bChnYW1tYV94LCBYKQorLSAgICAgICAgICAgICAg IF96ZXJvID0gQ29uc3RhbnQ8dmFsdWVfZmxvYXQ9MC4wPigpCistICAgICAgICAgICAgICAgemVy byA9IENhc3RMaWtlKF96ZXJvLCBYKQorLSAgICAgICAgICAgICAgIGxlc3NfZXEgPSBMZXNzT3JF cXVhbChYLCB6ZXJvKQorLSAgICAgICAgICAgICAgIEMgPSBXaGVyZShsZXNzX2VxLCBuZWcsIHBv cykKKy0gICAgICAgICAgIH19CistICAgICAgICAiIiIKKy0KKy0gICAgICAgIGZ1bmN0aW9ucyA9 IFtvbm54LnBhcnNlci5wYXJzZV9mdW5jdGlvbihmdW5jdGlvbl90ZXh0KV0KKy0gICAgICAgIGdy YXBoID0gb25ueC5wYXJzZXIucGFyc2VfZ3JhcGgoZ3JhcGhfdGV4dCkKKy0gICAgICAgIG9wc2V0 X2ltcG9ydHMgPSBbCistICAgICAgICAgICAgT3BlcmF0b3JTZXRJZFByb3RvKGRvbWFpbj0iIiwg dmVyc2lvbj0xNSksCistICAgICAgICAgICAgT3BlcmF0b3JTZXRJZFByb3RvKGRvbWFpbj0iY3Vz dG9tX2RvbWFpbiIsIHZlcnNpb249MSksCistICAgICAgICBdCistCistICAgICAgICBtb2RlbCA9 IG9ubnguaGVscGVyLm1ha2VfbW9kZWwoCistICAgICAgICAgICAgZ3JhcGgsIGZ1bmN0aW9ucz1m dW5jdGlvbnMsIG9wc2V0X2ltcG9ydHM9b3BzZXRfaW1wb3J0cworLSAgICAgICAgKQorLSAgICAg ICAgY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCkKKy0KKy0gICAgICAgIGV4cGVjdF9tb2RlbF9m dW5jdGlvbl9hdHRyaWJ1dGUobW9kZWwpCistICAgICAgICBleHBlY3RfY3VzdG9tX25vZGVfYXR0 cmlidXRlKG1vZGVsLmdyYXBoLm5vZGVbMF0sIGV4cGVjdGVkX2F0dHJpYnV0ZSkKKy0KKyAgICAg ZGVmIHRlc3RfcGFyc2Vfbm9kZShzZWxmKToKKyAgICAgICAgIG5vZGUgPSBvbm54LnBhcnNlci5w YXJzZV9ub2RlKAorICAgICAgICAgICAgICJvdXQxLCBvdXQyID0gU29tZURvbWFpbi5Tb21lT3Ag PGF0dHIxID0gMT4gKGluMSwgaW4yKSIKK0BAIC0yNDIsMTAxICsxNTIsNiBAQCBjbGFzcyBUZXN0 QmFzaWNGdW5jdGlvbnModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChsaXN0KG5vZGUuaW5wdXQpLCBbIiIsICJ5Il0pCisgICAgICAgICBzZWxmLmFzc2VydEVx dWFsKGxpc3Qobm9kZS5vdXRwdXQpLCBbIiIsICJ4Il0pCisgCistICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoIm5vdF9hX2dvb2RfZmxvYXQiLCBU cnVlKSwKKy0gICAgICAgICAgICAoImluZjEiLCBUcnVlKSwKKy0gICAgICAgICAgICAoIi1pbmYx IiwgVHJ1ZSksCistICAgICAgICAgICAgKCJuYW4wIiwgVHJ1ZSksCistICAgICAgICAgICAgKCIt bmFuMCIsIFRydWUpLAorLSAgICAgICAgICAgICgibmFuaW5mIiwgVHJ1ZSksCistICAgICAgICAg ICAgKCJpbmYiLCBGYWxzZSksCistICAgICAgICAgICAgKCItaW5mIiwgRmFsc2UpLAorLSAgICAg ICAgICAgICgiaW5maW5pdHkiLCBGYWxzZSksCistICAgICAgICAgICAgKCItaW5maW5pdHkiLCBG YWxzZSksCistICAgICAgICAgICAgKCJuYW4iLCBGYWxzZSksCistICAgICAgICAgICAgKCItTmFO IiwgRmFsc2UpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3BhcnNlX3Zhcmlv dXNfZmxvYXRfdmFsdWVzKHNlbGYsIHRlc3RfbGl0ZXJhbCwgZXhwZWN0X2V4Y2VwdGlvbik6Cist ICAgICAgICBtb2RlbF90ZXh0ID0gZiIiIgorLSAgICAgICAgPAorLSAgICAgICAgaXJfdmVyc2lv bjogOCwKKy0gICAgICAgIG9wc2V0X2ltcG9ydDogWyIiIDogMTgsICJ0aGlzIiA6IDFdLAorLSAg ICAgICAgcHJvZHVjZXJfbmFtZTogIkZ1bmN0aW9uUHJvdG9UZXN0IiwKKy0gICAgICAgIHByb2R1 Y2VyX3ZlcnNpb246ICIxLjAiCistICAgICAgICA+CistICAgICAgICBfZnVuYyAoKSA9PiAoKQor LSAgICAgICAge3sKKy0gICAgICAgIHRtcCA9IENvbnN0YW50IDx2YWx1ZV9mbG9hdCA9IHt0ZXN0 X2xpdGVyYWx9PigpCistICAgICAgICB9fQorLSAgICAgICAgIiIiCistICAgICAgICBpZiBleHBl Y3RfZXhjZXB0aW9uOgorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAg ICAgICAgICBvbm54LnBhcnNlci5QYXJzZUVycm9yLCBsYW1iZGE6IG9ubngucGFyc2VyLnBhcnNl X21vZGVsKG1vZGVsX3RleHQpCistICAgICAgICAgICAgKQorLSAgICAgICAgZWxzZToKKy0gICAg ICAgICAgICBtb2RlbCA9IG9ubngucGFyc2VyLnBhcnNlX21vZGVsKG1vZGVsX3RleHQpCistICAg ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2RlbC5pcl92ZXJzaW9uLCA4KQorLSAgICAgICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kZWwucHJvZHVjZXJfbmFtZSwgIkZ1bmN0aW9uUHJvdG9U ZXN0IikKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZGVsLnByb2R1Y2VyX3ZlcnNp b24sICIxLjAiKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vZGVsLmdyYXBo Lm5vZGUpLCAxKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1vZGVsLmdyYXBo Lm5vZGVbMF0uYXR0cmlidXRlKSwgMSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1v ZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLm5hbWUsICJ2YWx1ZV9mbG9hdCIpCistICAg ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKy0gICAgICAgICAgICAgICAgbW9kZWwuZ3JhcGgu bm9kZVswXS5hdHRyaWJ1dGVbMF0udHlwZSwgb25ueC5BdHRyaWJ1dGVQcm90by5GTE9BVAorLSAg ICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorLSAgICAgICAgICAg ICAgICBzdHIobW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0uZiksIHN0cihmbG9hdCh0 ZXN0X2xpdGVyYWwpKQorLSAgICAgICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhw YW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiYmZsb2F0MTYiLCBUZW5zb3JQcm90by5C RkxPQVQxNiksCistICAgICAgICAgICAgKCJib29sIiwgVGVuc29yUHJvdG8uQk9PTCksCistICAg ICAgICAgICAgKCJjb21wbGV4NjQiLCBUZW5zb3JQcm90by5DT01QTEVYNjQpLAorLSAgICAgICAg ICAgICgiY29tcGxleDEyOCIsIFRlbnNvclByb3RvLkNPTVBMRVgxMjgpLAorLSAgICAgICAgICAg ICgiZG91YmxlIiwgVGVuc29yUHJvdG8uRE9VQkxFKSwKKy0gICAgICAgICAgICAoImZsb2F0MTYi LCBUZW5zb3JQcm90by5GTE9BVDE2KSwKKy0gICAgICAgICAgICAoImZsb2F0IiwgVGVuc29yUHJv dG8uRkxPQVQpLAorLSAgICAgICAgICAgICgiZmxvYXQ4ZTRtM2ZuIiwgVGVuc29yUHJvdG8uRkxP QVQ4RTRNM0ZOKSwKKy0gICAgICAgICAgICAoImZsb2F0OGU0bTNmbnV6IiwgVGVuc29yUHJvdG8u RkxPQVQ4RTRNM0ZOVVopLAorLSAgICAgICAgICAgICgiZmxvYXQ4ZTVtMiIsIFRlbnNvclByb3Rv LkZMT0FUOEU1TTIpLAorLSAgICAgICAgICAgICgiZmxvYXQ4ZTVtMmZudXoiLCBUZW5zb3JQcm90 by5GTE9BVDhFNU0yRk5VWiksCistICAgICAgICAgICAgKCJpbnQyIiwgVGVuc29yUHJvdG8uSU5U MiksCistICAgICAgICAgICAgKCJpbnQ0IiwgVGVuc29yUHJvdG8uSU5UNCksCistICAgICAgICAg ICAgKCJpbnQ4IiwgVGVuc29yUHJvdG8uSU5UOCksCistICAgICAgICAgICAgKCJpbnQxNiIsIFRl bnNvclByb3RvLklOVDE2KSwKKy0gICAgICAgICAgICAoImludDMyIiwgVGVuc29yUHJvdG8uSU5U MzIpLAorLSAgICAgICAgICAgICgiaW50NjQiLCBUZW5zb3JQcm90by5JTlQ2NCksCistICAgICAg ICAgICAgKCJzdHJpbmciLCBUZW5zb3JQcm90by5TVFJJTkcpLAorLSAgICAgICAgICAgICgidWlu dDIiLCBUZW5zb3JQcm90by5VSU5UMiksCistICAgICAgICAgICAgKCJ1aW50NCIsIFRlbnNvclBy b3RvLlVJTlQ0KSwKKy0gICAgICAgICAgICAoInVpbnQ4IiwgVGVuc29yUHJvdG8uVUlOVDgpLAor LSAgICAgICAgICAgICgidWludDE2IiwgVGVuc29yUHJvdG8uVUlOVDE2KSwKKy0gICAgICAgICAg ICAoInVpbnQzMiIsIFRlbnNvclByb3RvLlVJTlQzMiksCistICAgICAgICAgICAgKCJ1aW50NjQi LCBUZW5zb3JQcm90by5VSU5UNjQpLAorLSAgICAgICAgICAgICgiZmxvYXQ0ZTJtMSIsIFRlbnNv clByb3RvLkZMT0FUNEUyTTEpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3Bh cnNlX2dyYXBoX3R5cGVzKHNlbGYsIG5hbWUsIGl0eXBlKSAtPiBOb25lOgorLSAgICAgICAgdyA9 ICd7IjAifScgaWYgaXR5cGUgPT0gVGVuc29yUHJvdG8uU1RSSU5HIGVsc2UgInswfSIKKy0gICAg ICAgIHRleHRfZ3JhcGggPSBmIiIiCistICAgICAgICAgICA8CistICAgICAgICAgICAgIGlyX3Zl cnNpb246IDEwLAorLSAgICAgICAgICAgICBvcHNldF9pbXBvcnQ6IFsgIiIgOiAxOV0KKy0gICAg ICAgICAgID4KKy0gICAgICAgICAgIGFncmFwaCAoZmxvYXRbTl0gWCkgPT4gKHtuYW1lfVtOXSBD KQorLSAgICAgICAgICAgPAorLSAgICAgICAgICAgICB7bmFtZX1bMV0gd2VpZ2h0ID0ge3d9Cist ICAgICAgICAgICA+CistICAgICAgICAgICB7eworLSAgICAgICAgICAgICAgQyA9IENhc3Q8dG89 e2l0eXBlfT4oWCkKKy0gICAgICAgICAgIH19CistICAgICAgICAgICAiIiIKKy0gICAgICAgIGdy YXBoID0gb25ueC5wYXJzZXIucGFyc2VfbW9kZWwodGV4dF9ncmFwaCkKKy0gICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwobGVuKGdyYXBoLmdyYXBoLm5vZGUpLCAxKQorLQorIAorIGlmIF9fbmFtZV9f ID09ICJfX21haW5fXyI6CisgICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCitkaWZmIC0t Z2l0IGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVzdC5weSBiL29ubngvdGVz dC9yZWZlcmVuY2VfZXZhbHVhdG9yX21sX3Rlc3QucHkKK2luZGV4IDdkYWQ5NjcwMy4uMWM0Mjc2 NDgyIDEwMDY0NAorLS0tIGEvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVzdC5w eQorKysrIGIvb25ueC90ZXN0L3JlZmVyZW5jZV9ldmFsdWF0b3JfbWxfdGVzdC5weQorQEAgLTEx LDcgKzExLDYgQEAgaW1wb3J0IHVuaXR0ZXN0CisgCisgaW1wb3J0IG51bXB5IGFzIG5wCisgZnJv bSBudW1weS50ZXN0aW5nIGltcG9ydCBhc3NlcnRfYWxsY2xvc2UKKy1mcm9tIHBhcmFtZXRlcml6 ZWQgaW1wb3J0IHBhcmFtZXRlcml6ZWQKKyAKKyBpbXBvcnQgb25ueAorIGZyb20gb25ueCBpbXBv cnQgT05OWF9NTCwgVGVuc29yUHJvdG8sIFR5cGVQcm90bywgVmFsdWVJbmZvUHJvdG8KK0BAIC04 OTMsMTE4ICs4OTIsNiBAQCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yQWlPbm54TWwodW5p dHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgb25ueC5jaGVja2VyLmNoZWNrX21vZGVsKG1vZGVs KQorICAgICAgICAgcmV0dXJuIG1vZGVsCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgK Ky0gICAgICAgIHR1cGxlKAorLSAgICAgICAgICAgIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJh YmxlKAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAg ICAgICAgICAgICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5TVU0gaWYgb3BzZXQ1IGVsc2Ug IlNVTSIsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFtbMC41NzY5MjNdLCBbMC41NzY5MjNdLCBbMC41NzY5MjNdXSwgZHR5 cGU9bnAuZmxvYXQzMgorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAg ICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAg ICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlvbkZ1bmN0aW9u LkFWRVJBR0UgaWYgb3BzZXQ1IGVsc2UgIkFWRVJBR0UiLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzAuMjg4NDYyXSwg WzAuMjg4NDYyXSwgWzAuMjg4NDYyXV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAgICAgICAg ICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG9wc2V0NSwKKy0gICAgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAg ICAgICAgICAgQWdncmVnYXRpb25GdW5jdGlvbi5NSU4gaWYgb3BzZXQ1IGVsc2UgIk1JTiIsCist ICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFtbMC4wNzY5MjNdLCBbMC4wNzY5MjNdLCBbMC4wNzY5MjNdXSwgZHR5cGU9bnAuZmxv YXQzMgorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICAg ICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAg ICgKKy0gICAgICAgICAgICAgICAgICAgICAgICBBZ2dyZWdhdGlvbkZ1bmN0aW9uLk1BWCBpZiBv cHNldDUgZWxzZSAiTUFYIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzAu NV0sIFswLjVdLCBbMC41XV0sIGR0eXBlPW5wLmZsb2F0MzIpLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIG9wc2V0NSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAg ICkKKy0gICAgICAgICAgICAgICAgZm9yIG9wc2V0NSBpbiBbVHJ1ZSwgRmFsc2VdCistICAgICAg ICAgICAgKQorLSAgICAgICAgKQorLSAgICApCistICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9O TlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKKy0gICAg ZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfYWdncmVnYXRpb25fZnVuY3Rpb25zKAor LSAgICAgICAgc2VsZiwgYWdncmVnYXRlX2Z1bmN0aW9uLCBleHBlY3RlZF9yZXN1bHQsIG9wc2V0 NQorLSAgICApOgorLSAgICAgICAgeCA9IG5wLmFyYW5nZSg5KS5yZXNoYXBlKCgtMSwgMykpLmFz dHlwZShucC5mbG9hdDMyKSAvIDEwIC0gMC41CistICAgICAgICBtb2RlbF9mYWN0b3J5ID0gKAor LSAgICAgICAgICAgIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0ZXN0Cist ICAgICAgICAgICAgaWYgb3BzZXQ1CistICAgICAgICAgICAgZWxzZSBzZWxmLl9nZXRfdGVzdF90 cmVlX2Vuc2VtYmxlX3JlZ3Jlc3NvcgorLSAgICAgICAgKQorLSAgICAgICAgbW9kZWxfcHJvdG8g PSBtb2RlbF9mYWN0b3J5KAorLSAgICAgICAgICAgIGFnZ3JlZ2F0ZV9mdW5jdGlvbiwKKy0gICAg ICAgICkKKy0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWxfcHJvdG8pCist ICAgICAgICAoYWN0dWFsLCkgPSBzZXNzLnJ1bihOb25lLCB7IlgiOiB4fSkKKy0gICAgICAgIGFz c2VydF9hbGxjbG9zZShhY3R1YWwsIGV4cGVjdGVkX3Jlc3VsdCwgYXRvbD0xZS02KQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICB0dXBsZSgKKy0gICAgICAgICAgICBp dGVydG9vbHMuY2hhaW4uZnJvbV9pdGVyYWJsZSgKKy0gICAgICAgICAgICAgICAgKAorLSAgICAg ICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUuTEVRIGlmIG9w c2V0NSBlbHNlICJCUkFOQ0hfTEVRIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJh eSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjU3NjkyM10sIFswLjU3NjkyM10s IFswLjU3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAgICAgICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAgICAg ICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIE1v ZGUuR1QgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9HVCIsCistICAgICAgICAgICAgICAgICAgICAg ICAgbnAuYXJyYXkoW1swLjVdLCBbMC41XSwgWzAuNV1dLCBkdHlwZT1ucC5mbG9hdDMyKSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAgICAgICApLAor LSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUuTFQg aWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9MVCIsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAu YXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMC41NzY5MjNdLCBbMC41NzY5 MjNdLCBbMC41NzY5MjNdXSwgZHR5cGU9bnAuZmxvYXQzMgorLSAgICAgICAgICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgICAgICAgICAgICAgb3BzZXQ1LAorLSAgICAgICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICAg ICBNb2RlLkdURSBpZiBvcHNldDUgZWxzZSAiQlJBTkNIX0dURSIsCistICAgICAgICAgICAgICAg ICAgICAgICAgbnAuYXJyYXkoW1swLjVdLCBbMC41XSwgWzAuNV1dLCBkdHlwZT1ucC5mbG9hdDMy KSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAgICAg ICApLAorLSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIE1v ZGUuRVEgaWYgb3BzZXQ1IGVsc2UgIkJSQU5DSF9FUSIsCistICAgICAgICAgICAgICAgICAgICAg ICAgbnAuYXJyYXkoW1sxLjBdLCBbMS4wXSwgWzEuMF1dLCBkdHlwZT1ucC5mbG9hdDMyKSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAgICAgICAgICApLAor LSAgICAgICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgICAgIE1vZGUuTkVR IGlmIG9wc2V0NSBlbHNlICJCUkFOQ0hfTkVRIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBu cC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1swLjA3NjkyM10sIFswLjA3 NjkyM10sIFswLjA3NjkyM11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAgICAgICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBvcHNldDUsCistICAgICAgICAgICAg ICAgICAgICApLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgICAgIGZvciBvcHNl dDUgaW4gW1RydWUsIEZhbHNlXQorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAgKQor LSAgICBAdW5pdHRlc3Quc2tpcElmKG5vdCBPTk5YX01MLCByZWFzb249Im9ubnggbm90IGNvbXBp bGVkIHdpdGggYWkub25ueC5tbCIpCistICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVz c29yX3J1bGUoc2VsZiwgcnVsZSwgZXhwZWN0ZWQsIG9wc2V0NSk6CistICAgICAgICB4ID0gbnAu YXJhbmdlKDkpLnJlc2hhcGUoKC0xLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpIC8gMTAgLSAwLjUK Ky0gICAgICAgIG1vZGVsX2ZhY3RvcnkgPSAoCistICAgICAgICAgICAgc2VsZi5fZ2V0X3Rlc3Rf dHJlZV9lbnNlbWJsZV9vcHNldF9sYXRlc3QKKy0gICAgICAgICAgICBpZiBvcHNldDUKKy0gICAg ICAgICAgICBlbHNlIHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yCistICAg ICAgICApCistICAgICAgICBhZ2dyZWdhdGVfZnVuY3Rpb24gPSBBZ2dyZWdhdGlvbkZ1bmN0aW9u LlNVTSBpZiBvcHNldDUgZWxzZSAiU1VNIgorLQorLSAgICAgICAgbW9kZWxfcHJvdG8gPSBtb2Rl bF9mYWN0b3J5KGFnZ3JlZ2F0ZV9mdW5jdGlvbiwgcnVsZSkKKy0gICAgICAgIHNlc3MgPSBSZWZl cmVuY2VFdmFsdWF0b3IobW9kZWxfcHJvdG8pCistICAgICAgICAoYWN0dWFsLCkgPSBzZXNzLnJ1 bihOb25lLCB7IlgiOiB4fSkKKy0gICAgICAgIGFzc2VydF9hbGxjbG9zZShhY3R1YWwsIGV4cGVj dGVkLCBhdG9sPTFlLTYpCistCisgICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJl YXNvbj0ib25ueCBub3QgY29tcGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKKyAgICAgZGVmIHRlc3Rf dHJlZV9lbnNlbWJsZV9yZWdyZXNzb3JfMl90YXJnZXRzX29wc2V0MyhzZWxmKToKKyAgICAgICAg IFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25l LCBOb25lXSkKK0BAIC0xMTE4LDIzICsxMDA1LDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1 YXRvckFpT25ueE1sKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGFzc2VydF9hbGxjbG9z ZShnb3RbMF0sIGV4cGVjdGVkLCBhdG9sPTFlLTYpCisgICAgICAgICBzZWxmLmFzc2VydEluKCJv cF90eXBlPVRyZWVFbnNlbWJsZVJlZ3Jlc3NvciIsIHN0cihzZXNzLnJ0X25vZGVzX1swXSkpCisg CistICAgIEB1bml0dGVzdC5za2lwSWYobm90IE9OTlhfTUwsIHJlYXNvbj0ib25ueCBub3QgY29t cGlsZWQgd2l0aCBhaS5vbm54Lm1sIikKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAg ICAgICAgWyhpbnB1dF90eXBlLCkgZm9yIGlucHV0X3R5cGUgaW4gW1RlbnNvclByb3RvLkZMT0FU LCBUZW5zb3JQcm90by5ET1VCTEVdXQorLSAgICApCistICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1i bGVfbWlzc2luZ19vcHNldDUoc2VsZiwgaW5wdXRfdHlwZSk6CistICAgICAgICBtb2RlbCA9IHNl bGYuX2dldF90ZXN0X3RyZWVfZW5zZW1ibGVfb3BzZXRfbGF0ZXN0KAorLSAgICAgICAgICAgIEFn Z3JlZ2F0aW9uRnVuY3Rpb24uU1VNLCBNb2RlLkxFUSwgVHJ1ZSwgaW5wdXRfdHlwZQorLSAgICAg ICAgKQorLSAgICAgICAgbnBfZHR5cGUgPSBvbm54LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBf ZHR5cGUoaW5wdXRfdHlwZSkKKy0gICAgICAgIHggPSBucC5hcmFuZ2UoOSkucmVzaGFwZSgoLTEs IDMpKS5hc3R5cGUobnBfZHR5cGUpIC8gMTAgLSAwLjUKKy0gICAgICAgIHhbMiwgMF0gPSA1Cist ICAgICAgICB4WzEsIDpdID0gbnAubmFuCistICAgICAgICBleHBlY3RlZCA9IG5wLmFycmF5KFtb MTAwMDAxLjBdLCBbMTAwMTAwLjBdLCBbMTAwMTAwLjBdXSwgZHR5cGU9bnBfZHR5cGUpCistICAg ICAgICBzZXNzaW9uID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgKGFjdHVh bCwpID0gc2Vzc2lvbi5ydW4oTm9uZSwgeyJYIjogeH0pCistICAgICAgICBhc3NlcnRfYWxsY2xv c2UoYWN0dWFsLCBleHBlY3RlZCwgYXRvbD0xZS02KQorLQorICAgICBAdW5pdHRlc3Quc2tpcElm KG5vdCBPTk5YX01MLCByZWFzb249Im9ubnggbm90IGNvbXBpbGVkIHdpdGggYWkub25ueC5tbCIp CisgICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfcmVncmVzc29yX21pc3Npbmdfb3BzZXQ1X2Zs b2F0MTYoc2VsZik6CisgICAgICAgICBtb2RlbCA9IHNlbGYuX2dldF90ZXN0X3RyZWVfZW5zZW1i bGVfb3BzZXRfbGF0ZXN0KAorZGlmZiAtLWdpdCBhL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVh dG9yX3Rlc3QucHkgYi9vbm54L3Rlc3QvcmVmZXJlbmNlX2V2YWx1YXRvcl90ZXN0LnB5CitpbmRl eCA4NWNjNGNjMGUuLmQwYTI1NWZjOCAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9yZWZlcmVuY2Vf ZXZhbHVhdG9yX3Rlc3QucHkKKysrKyBiL29ubngvdGVzdC9yZWZlcmVuY2VfZXZhbHVhdG9yX3Rl c3QucHkKK0BAIC0yNSw3ICsyNSw2IEBAIGZyb20gdHlwaW5nIGltcG9ydCBUWVBFX0NIRUNLSU5H CisgCisgaW1wb3J0IG1sX2R0eXBlcworIGltcG9ydCBudW1weSBhcyBucAorLWltcG9ydCBwYXJh bWV0ZXJpemVkCisgaW1wb3J0IHZlcnNpb25fdXRpbHMKKyBmcm9tIG51bXB5LnRlc3RpbmcgaW1w b3J0IGFzc2VydF9hbGxjbG9zZQorIAorQEAgLTI5OTgsMTYzICsyOTk3LDYgQEAgY2xhc3MgVGVz dFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAjIG1vZGVs CisgICAgICAgICByZXR1cm4gbWFrZV9tb2RlbChncmFwaCwgb3BzZXRfaW1wb3J0cz1bbWFrZV9v cHNldGlkKCIiLCBvcHNldCldKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVk LmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZU1pbiIsCistICAg ICAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbbnAubmFuLCBucC5uYW5dLCBbMTQuNDIyNzA2 LCAxOC44MDUyN11dLCBkdHlwZT1ucC5mbG9hdDMyCistICAgICAgICAgICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzIsIDE1XSwgWzEwLCA0XV0s IGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAg ICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJSZWR1Y2VM MSIsCistICAgICAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAu YXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtbMi4yMzY3MDUzLCAyLjM1MTY2 MTJdLCBbNC4wNzYyOTIsIDQuMjk3MDYzNF1dLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkdHlwZT1ucC5mbG9hdDMyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAg ICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoW1sxOCwgNl0sIFsxMywgNl1dLCBkdHlwZT1ucC5p bnQ2NCksCistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICApLAorLSAg ICAgICAgICAgICAgICAoCistICAgICAgICAgICAgICAgICAgICAiUmVkdWNlTDIiLAorLSAgICAg ICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbWzEuODAxNTUsIDEuODE2OTk0OF0sIFsyLjk5Mjgw NzYsIDMuMTIwNTg4M11dLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdHlwZT1ucC5m bG9hdDMyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAg ICAgICAgbnAuYXJyYXkoW1sxMSwgMThdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAg ICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAg ICAgKAorLSAgICAgICAgICAgICAgICAgICAgIlJlZHVjZUxvZ1N1bSIsCistICAgICAgICAgICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFtbMC45NDk3ODQ4LCAxLjE4NzI2NDNdLCBbMS42NzY0MTc1LCAx LjcwNzU5XV0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIs CistICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBu cC5hcnJheShbWzYsIDE4XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0g ICAgICAgICAgICAgICAgICAgICJSZWR1Y2VMb2dTdW1FeHAiLAorLSAgICAgICAgICAgICAgICAg ICAgWworLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBbWzEuNjAwNTk3MywgMS43NDQ1OTM1XSwgWzIuNTYxNjIyOSwgMi42NTM5 Nzk1XV0sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCist ICAgICAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5h cnJheShbWzEzLCA2XSwgWzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAg ICAgICAgICAgICAgICAgICJSZWR1Y2VNYXgiLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICBbWzEuNDIxNzEwOCwgMS41MDY5NTM2XSwgWzIuNDUzODI2LCAyLjUwNDE3ODNdXSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMTMs IDExXSwgWzEzLCAxMV1dLCBkdHlwZT1ucC5pbnQ2NCksCistICAgICAgICAgICAgICAgICAgICBd LAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAoCistICAgICAgICAgICAg ICAgICAgICAiUmVkdWNlTWVhbiIsCistICAgICAgICAgICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgICAgICAgICAgbnAuYXJyYXkoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtb MC4zOTI0NzkwMywgMC43ODQ5NzYzNl0sIFsyLjAzODE0NiwgMi4xNDg1MzE3XV0sCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGR0eXBlPW5wLmZsb2F0MzIsCistICAgICAgICAgICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheShbWzEzLCA2XSwg WzEzLCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAg ICJSZWR1Y2VTdW1TcXVhcmUiLAorLSAgICAgICAgICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICAgICAgICAgIG5wLmFycmF5KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBbWzMu MjQ1NTgyOCwgMy4zMDE0Njk2XSwgWzguOTU2ODk2LCA5LjczODA3MDVdXSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgZHR5cGU9bnAuZmxvYXQzMiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtbMTEsIDE4XSwgWzEz LCA2XV0sIGR0eXBlPW5wLmludDY0KSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgICAgICJS ZWR1Y2VQcm9kIiwKKy0gICAgICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAg ICAgICBucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1tucC5uYW4sIG5w Lm5hbl0sIFsxNC40MjI3MDYsIDE4LjgwNTI3XV0sIGR0eXBlPW5wLmZsb2F0MzIKKy0gICAgICAg ICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLmFycmF5KFtb MiwgMTVdLCBbMTMsIDZdXSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAgICAgICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsx NywgMThdLAorLSAgICAgICAgKQorLSAgICApCistICAgIGRlZiB0ZXN0X29wX3JlZHVjZShzZWxm LCByZWR1Y2Vfb3BfZXhwZWN0ZWQsIG9wc2V0OiBpbnQpOgorLSAgICAgICAgcmVkdWNlX29wLCBl eHBlY3RlZCA9IHJlZHVjZV9vcF9leHBlY3RlZAorLSAgICAgICAgWCA9IG5wLmFyYW5nZSg4KS5y ZXNoYXBlKCgtMSwgNCkpLmFzdHlwZShucC5mbG9hdDMyKQorLQorLSAgICAgICAgcmVzdWx0cyA9 IHt9CistCistICAgICAgICBtb2RlbCA9IHNlbGYuX2NkaXN0X21vZGVsKG9wc2V0LCByZWR1Y2Vf b3ApCistICAgICAgICBzZXNzID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAg Z290ID0gc2Vzcy5ydW4oTm9uZSwgeyJpbnB1dCI6IFh9KQorLSAgICAgICAgcmVzdWx0c1sicmVm Iiwgb3BzZXRdID0gZ290CistCistICAgICAgICBjbCA9IFsKKy0gICAgICAgICAgICBuCistICAg ICAgICAgICAgZm9yIG4gaW4gc2Vzcy5ydF9ub2Rlc19bMF0uYm9keS5ydF9ub2Rlc18KKy0gICAg ICAgICAgICBpZiBuLl9fY2xhc3NfXy5fX25hbWVfXy5zdGFydHN3aXRoKHJlZHVjZV9vcCkKKy0g ICAgICAgIF0KKy0gICAgICAgIHNjaGVtYSA9IGNsWzBdLl9zY2hlbWEKKy0gICAgICAgIG5ld19j bCA9IHR5cGUocmVkdWNlX29wLCAoY2xbMF0uX19jbGFzc19fLCksIHsib3Bfc2NoZW1hIjogc2No ZW1hfSkKKy0gICAgICAgIHNlc3MgPSBSZWZlcmVuY2VFdmFsdWF0b3IobW9kZWwsIG5ld19vcHM9 W25ld19jbF0pCistICAgICAgICBnb3QgPSBzZXNzLnJ1bihOb25lLCB7ImlucHV0IjogWH0pCist ICAgICAgICByZXN1bHRzWyJyZWZfY2wiLCBvcHNldF0gPSBnb3QKKy0KKy0gICAgICAgIGJhc2Vs aW5lID0gImNvbnN0YW50IgorLSAgICAgICAgZm9yIGssIHYgaW4gcmVzdWx0cy5pdGVtcygpOgor LSAgICAgICAgICAgIGZvciBhLCBiIGluIHppcChyZXZlcnNlZChleHBlY3RlZCksIHJldmVyc2Vk KHYpLCBzdHJpY3Q9VHJ1ZSk6CistICAgICAgICAgICAgICAgIGlmIGEuc2hhcGUgIT0gYi5zaGFw ZToKKy0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKAorLSAgICAgICAg ICAgICAgICAgICAgICAgIGYiU2hhcGUgbWlzbWF0Y2ggZm9yIHtyZWR1Y2Vfb3Ahcn0sIHtiYXNl bGluZX06e2Euc2hhcGV9ICE9IHtrfTp7Yi5zaGFwZX0uIgorLSAgICAgICAgICAgICAgICAgICAg KQorLSAgICAgICAgICAgICAgICBkaWZmID0gbnAuYWJzKGEgLSBiKS5tYXgoKQorLSAgICAgICAg ICAgICAgICBpZiBkaWZmID4gMWUtNjoKKy0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFzc2Vy dGlvbkVycm9yKAorLSAgICAgICAgICAgICAgICAgICAgICAgIGYiRGlzY3JlcGFuY2llcyAobWF4 PXtkaWZmfSkgZm9yIHtyZWR1Y2Vfb3Ahcn0sIHtiYXNlbGluZX0gIT0ge2t9XG57YX1cbiE9XG57 Yn0iCistICAgICAgICAgICAgICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFt ZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgxMywpLAorLSAgICAg ICAgICAgICgxNywpLAorLSAgICAgICAgICAgICgxOCwpLAorLSAgICAgICAgXQorLSAgICApCist ICAgIGRlZiB0ZXN0X212bihzZWxmLCBvcHNldDogaW50LCByZWZfb3BzZXQ6IGludCA9IDEzKToK Ky0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxP QVQsIFtOb25lLCBOb25lLCBOb25lLCBOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lLCBOb25l XSkKKy0gICAgICAgIG5vZGVzID0gWworLSAgICAgICAgICAgIG1ha2Vfbm9kZSgiTWVhblZhcmlh bmNlTm9ybWFsaXphdGlvbiIsIFsiWCJdLCBbIlkiXSksCistICAgICAgICBdCistICAgICAgICBn cmFwaCA9IG1ha2VfZ3JhcGgobm9kZXMsICJnIiwgW1hdLCBbWV0pCistICAgICAgICB4ID0gbnAu cmFuZG9tLnJhbmQoMywgMywgMywgMSkuYXN0eXBlKG5wLmZsb2F0MzIpCistCistICAgICAgICBv bm54X21vZGVsID0gbWFrZV9tb2RlbChncmFwaCwgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlk KCIiLCBvcHNldCldKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG9ubnhfbW9k ZWwpCistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IHh9KVswXQorLQorLSAgICAg ICAgcmVmX29ubnhfbW9kZWwgPSBtYWtlX21vZGVsKGdyYXBoLCBvcHNldF9pbXBvcnRzPVttYWtl X29wc2V0aWQoIiIsIHJlZl9vcHNldCldKQorLSAgICAgICAgcmVmX2V4cGVjdGVkID0gUmVmZXJl bmNlRXZhbHVhdG9yKHJlZl9vbm54X21vZGVsKQorLSAgICAgICAgZXhwZWN0ZWQgPSByZWZfZXhw ZWN0ZWQucnVuKE5vbmUsIHsiWCI6IHh9KVswXQorLQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh bChnb3Quc2hhcGUsIGV4cGVjdGVkLnNoYXBlKQorLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGdv dCwgZXhwZWN0ZWQpCistCisgICAgIGRlZiB0ZXN0X2NvbmNhdF9pbl9hX2Z1bmN0aW9uKHNlbGYp OgorICAgICAgICAgZGVmIGNyZWF0ZV9tb2RlbCgpOgorICAgICAgICAgICAgIG5vZGVzID0gW10K K0BAIC0zODI5LDIxMSArMzY3MSw2IEBAIGNsYXNzIFRlc3RSZWZlcmVuY2VFdmFsdWF0b3IodW5p dHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRh fSkKKyAgICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQorIAorLSAgICBA cGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAg ICAgICAoCistICAgICAgICAgICAgICAgIDQgKiBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCks CistICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAorLSAgICAg ICAgICAgICAgICBucC56ZXJvcygoMywgMikpLAorLSAgICAgICAgICAgICAgICAxLAorLSAgICAg ICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBbWzAsIDQsIDQsIDZdLCBbNSwgNywgNiwg N10sIFs2LCA3LCA3LCA3XV0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAg ICAgICAgICAgICAgIDQgKiBucC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCistICAgICAgICAg ICAgICAgIG5wLmFyYW5nZSgxLCA3KS5yZXNoYXBlKDMsIDIpLAorLSAgICAgICAgICAgICAgICBu cC5vbmVzKCgzLCAyKSksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIDIs CistICAgICAgICAgICAgICAgIFtbMSwgNSwgNSwgN10sIFs2LCA4LCA3LCA4XSwgWzcsIDgsIDgs IDhdXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAg bnAuYXJhbmdlKDI0KS5yZXNoYXBlKDMsIDgpLAorLSAgICAgICAgICAgICAgICBbWzAuMjUsIDAu NSwgMV0sIFswLjI1LCAwLjUsIDFdLCBbMC4yNSwgMC41LCAxXV0sCistICAgICAgICAgICAgICAg IG5wLnplcm9zKCgzLCAzKSksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAg IDMsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIFswLCA0LCA4LCA2 LCA4LCAxMCwgNiwgN10sCistICAgICAgICAgICAgICAgICAgICBbMzIsIDM2LCA0MCwgMjIsIDI0 LCAyNiwgMTQsIDE1XSwKKy0gICAgICAgICAgICAgICAgICAgIFs2NCwgNjgsIDcyLCAzOCwgNDAs IDQyLCAyMiwgMjNdLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICksCistICAg ICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoNiksCistICAgICAgICAgICAg ICAgIFswLjI1LCAwLjVdLAorLSAgICAgICAgICAgICAgICBbLTEsIC0yXSwKKy0gICAgICAgICAg ICAgICAgMCwKKy0gICAgICAgICAgICAgICAgMywKKy0gICAgICAgICAgICAgICAgWy0xLCAzLCA3 LCA0LCA2LCA4XSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAg ICAgICAgbnAub25lcygoOSwgMTIpKSwKKy0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCkp LAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgNCkpLAorLSAgICAgICAgICAgICAgICAw LAorLSAgICAgICAgICAgICAgICAzLAorLSAgICAgICAgICAgICAgICBOb25lLCAgIyBCbG9ja2Vk IHF1YW50aXphdGlvbiBpcyBkZWZpbmVkIGZvciAxLUQgYmxvY2tzIG9ubHkKKy0gICAgICAgICAg ICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCwgNSwg NikpLAorLSAgICAgICAgICAgICAgICBucC5vbmVzKCgzLCA0KSksCistICAgICAgICAgICAgICAg IG5wLnplcm9zKCgzLCA0KSksCistICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAg IDIsCistICAgICAgICAgICAgICAgIE5vbmUsICAjIFNjYWxlIGFuZCBaUCBtdXN0IGhhdmUgdGhl IHNhbWUgcmFuayBhcyB0aGUgaW5wdXQKKy0gICAgICAgICAgICApLAorLSAgICAgICAgXQorLSAg ICApCistICAgIGRlZiB0ZXN0X2Jsb2NrZWRfcXVhbnRpemVfbGluZWFyKAorLSAgICAgICAgc2Vs ZiwgeCwgc2NhbGUsIHplcm9fcG9pbnQsIGF4aXMsIGJsb2NrX3NpemUsIGV4cGVjdGVkCistICAg ICk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3Rv LkZMT0FULCBbTm9uZV0pCistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIs IFRlbnNvclByb3RvLklOVDgsIFtOb25lXSkKKy0KKy0gICAgICAgIHNjYWxlX2RhdGEgPSBucC5h cnJheShzY2FsZSwgZHR5cGU9bnAuZmxvYXQzMikKKy0gICAgICAgIHpwX2RhdGEgPSBucC5hcnJh eSh6ZXJvX3BvaW50LCBkdHlwZT1ucC5pbnQ4KQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVs KAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiUXVhbnRp emVMaW5lYXIiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiWCIsICJzY2FsZSIsICJ6ZXJv Il0sCistICAgICAgICAgICAgICAgICAgICAgICAgWyJZIl0sCistICAgICAgICAgICAgICAgICAg ICAgICAgYXhpcz1heGlzLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrX3NpemU9Ymxv Y2tfc2l6ZSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAgICAgICAgW1hdLAorLSAgICAgICAgICAg ICAgICBbWV0sCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJzY2FsZSIsIFRlbnNvclByb3RvLkZM T0FULCBzY2FsZV9kYXRhLnNoYXBlLCBzY2FsZV9kYXRhCistICAgICAgICAgICAgICAgICAgICAp LAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInplcm8iLCBUZW5zb3JQcm90by5J TlQ4LCBzY2FsZV9kYXRhLnNoYXBlLCB6cF9kYXRhKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0g ICAgICAgICAgICApCistICAgICAgICApCistICAgICAgICByZWYgPSBSZWZlcmVuY2VFdmFsdWF0 b3IobW9kZWwpCistCistICAgICAgICBkYXRhID0gbnAuYXJyYXkoeCwgZHR5cGU9bnAuZmxvYXQz MikKKy0KKy0gICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGV4 cGVjdGVkID0gbnAuYXJyYXkoZXhwZWN0ZWQsIGR0eXBlPW5wLmludDgpCistICAgICAgICAgICAg Z290ID0gcmVmLnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0gICAgICAgICAgICBhc3NlcnRfYWxs Y2xvc2UoZ290WzBdLCBleHBlY3RlZCkKKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgd2l0 aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKy0gICAgICAgICAgICAgICAgcmVmLnJ1 bihOb25lLCB7IlgiOiBkYXRhfSkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXpl ZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBu cC5hcmFuZ2UoMTIpLnJlc2hhcGUoMywgNCksCistICAgICAgICAgICAgICAgIG5wLmFyYW5nZSgx LCA3KS5yZXNoYXBlKDMsIDIpLAorLSAgICAgICAgICAgICAgICBucC56ZXJvcygoMywgMikpLAor LSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAg ICBbWzAsIDEsIDQsIDZdLCBbMTIsIDE1LCAyNCwgMjhdLCBbNDAsIDQ1LCA2MCwgNjZdXSwKKy0g ICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgbnAuYXJhbmdl KDEyKS5yZXNoYXBlKDMsIDQpLAorLSAgICAgICAgICAgICAgICBucC5hcmFuZ2UoMSwgNykucmVz aGFwZSgzLCAyKSwKKy0gICAgICAgICAgICAgICAgbnAub25lcygoMywgMikpLAorLSAgICAgICAg ICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBbWy0xLCAw LCAyLCA0XSwgWzksIDEyLCAyMCwgMjRdLCBbMzUsIDQwLCA1NCwgNjBdXSwKKy0gICAgICAgICAg ICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgbnAuZHN0YWNrKFtucC5hcmFu Z2UoNCkucmVzaGFwZSgyLCAyKV0gKiA0KSwKKy0gICAgICAgICAgICAgICAgbnAuZHN0YWNrKFtu cC5hcnJheShbWzEsIDFdLCBbMiwgM11dKSwgbnAuYXJyYXkoW1s0LCA1XSwgWzYsIDddXSldKSwK Ky0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDIsIDIsIDIpKSwKKy0gICAgICAgICAgICAgICAg MiwKKy0gICAgICAgICAgICAgICAgMiwKKy0gICAgICAgICAgICAgICAgW1tbMCwgMCwgMCwgMF0s IFsxLCAxLCA1LCA1XV0sIFtbNCwgNCwgMTIsIDEyXSwgWzksIDksIDIxLCAyMV1dXSwKKy0gICAg ICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgbnAuYXJhbmdlKDI0 KS5yZXNoYXBlKDMsIDgpLAorLSAgICAgICAgICAgICAgICBbWzIsIDEsIDNdLCBbMiwgMSwgM10s IFsyLCAxLCAzXV0sCistICAgICAgICAgICAgICAgIG5wLnplcm9zKCgzLCAzKSksCistICAgICAg ICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIDMsCistICAgICAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgICAgIFswLCAyLCA0LCAzLCA0LCA1LCAxOCwgMjFdLAorLSAgICAgICAg ICAgICAgICAgICAgWzE2LCAxOCwgMjAsIDExLCAxMiwgMTMsIDQyLCA0NV0sCistICAgICAgICAg ICAgICAgICAgICBbMzIsIDM0LCAzNiwgMTksIDIwLCAyMSwgNjYsIDY5XSwKKy0gICAgICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAg ICAgbnAuYXJhbmdlKAorLSAgICAgICAgICAgICAgICAgICAgNiwKKy0gICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgWzIsIDNdLAorLSAgICAgICAgICAgICAgICBbMSwgMl0sCist ICAgICAgICAgICAgICAgIDAsCistICAgICAgICAgICAgICAgIDMsCistICAgICAgICAgICAgICAg IFstMiwgMCwgMiwgMywgNiwgOV0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCist ICAgICAgICAgICAgICAgIG5wLm9uZXMoKDksIDEyKSksCistICAgICAgICAgICAgICAgIG5wLm9u ZXMoKDMsIDQpKSwKKy0gICAgICAgICAgICAgICAgbnAuemVyb3MoKDMsIDQpKSwKKy0gICAgICAg ICAgICAgICAgMCwKKy0gICAgICAgICAgICAgICAgMywKKy0gICAgICAgICAgICAgICAgTm9uZSwg ICMgQmxvY2tlZCBxdWFudGl6YXRpb24gaXMgZGVmaW5lZCBmb3IgMS1EIGJsb2NrcyBvbmx5Cist ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5wLm9uZXMo KDMsIDQsIDUsIDYpKSwKKy0gICAgICAgICAgICAgICAgbnAub25lcygoMywgNCkpLAorLSAgICAg ICAgICAgICAgICBucC56ZXJvcygoMywgNCkpLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAg ICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBOb25lLCAgIyBTY2FsZSBhbmQgWlAgbXVz dCBoYXZlIHRoZSBzYW1lIHJhbmsgYXMgdGhlIGlucHV0CistICAgICAgICAgICAgKSwKKy0gICAg ICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9ibG9ja2VkX2RlcXVhbnRpemVfbGluZWFyKAor LSAgICAgICAgc2VsZiwgeCwgc2NhbGUsIHplcm9fcG9pbnQsIGF4aXMsIGJsb2NrX3NpemUsIGV4 cGVjdGVkCistICAgICk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIs IFRlbnNvclByb3RvLklOVDgsIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0KKy0gICAgICAgIHNjYWxl X2RhdGEgPSBucC5hcnJheShzY2FsZSwgZHR5cGU9bnAuZmxvYXQzMikKKy0gICAgICAgIHpwX2Rh dGEgPSBucC5hcnJheSh6ZXJvX3BvaW50LCBkdHlwZT1ucC5pbnQ4KQorLSAgICAgICAgbW9kZWwg PSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAg ICAgICAiRGVxdWFudGl6ZUxpbmVhciIsCistICAgICAgICAgICAgICAgICAgICAgICAgWyJYIiwg InNjYWxlIiwgInplcm8iXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbIlkiXSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICBheGlzPWF4aXMsCistICAgICAgICAgICAgICAgICAgICAgICAg YmxvY2tfc2l6ZT1ibG9ja19zaXplLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgImciLAorLSAgICAgICAgICAgICAgICBbWF0s CistICAgICAgICAgICAgICAgIFtZXSwKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgInNjYWxlIiwg VGVuc29yUHJvdG8uRkxPQVQsIHNjYWxlX2RhdGEuc2hhcGUsIHNjYWxlX2RhdGEKKy0gICAgICAg ICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigiemVybyIs IFRlbnNvclByb3RvLklOVDgsIHNjYWxlX2RhdGEuc2hhcGUsIHpwX2RhdGEpLAorLSAgICAgICAg ICAgICAgICBdLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJl ZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIGRhdGEgPSBucC5hcnJheSh4LCBkdHlw ZT1ucC5pbnQ4KQorLQorLSAgICAgICAgaWYgZXhwZWN0ZWQgaXMgbm90IE5vbmU6CistICAgICAg ICAgICAgZXhwZWN0ZWQgPSBucC5hcnJheShleHBlY3RlZCwgZHR5cGU9bnAuZmxvYXQzMikKKy0g ICAgICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAgICAgICAg IGFzc2VydF9hbGxjbG9zZShnb3RbMF0sIGV4cGVjdGVkKQorLSAgICAgICAgZWxzZToKKy0gICAg ICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorLSAgICAgICAgICAg ICAgICByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLQorICAgICBkZWYgdGVzdF9scm4oc2Vs Zik6CisgICAgICAgICBkZWYgX2V4cGVjdGVkKHgsIGFscGhhLCBiZXRhLCBiaWFzLCBzaXplKToK KyAgICAgICAgICAgICBzcXVhcmVfc3VtID0gbnAuemVyb3MoKDUsIDUsIDUsIDUpKS5hc3R5cGUo bnAuZmxvYXQzMikKK0BAIC00MjE3LDUyICszODU0LDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2 YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBnb3QgPSBfY29udl9pbXBsZW1l bnRhdGlvbl9pbTJjb2woKipmZWVkcywgKiprd2FyZ3MpCisgICAgICAgICBhc3NlcnRfYWxsY2xv c2UoZ290LCBleHBlY3RlZCkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5l eHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJSZWR1Y2VTdW0iLCksCistICAgICAg ICAgICAgKCJSZWR1Y2VMMSIsKSwKKy0gICAgICAgICAgICAoIlJlZHVjZUwyIiwpLAorLSAgICAg ICAgICAgICgiUmVkdWNlTWluIiwpLAorLSAgICAgICAgICAgICgiUmVkdWNlTWF4IiwpLAorLSAg ICAgICAgICAgICgiUmVkdWNlUHJvZCIsKSwKKy0gICAgICAgICAgICAoIlJlZHVjZVN1bVNxdWFy ZSIsKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9yZWR1Y2Vfb3Bfbm9fYXhp cyhzZWxmLCBvcCk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRl bnNvclByb3RvLkZMT0FULCBOb25lKQorLSAgICAgICAgWSA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKKy0gICAgICAgIGRhdGEgPSBucC5hcmFu Z2UoNikucmVzaGFwZSgoMSwgMywgMikpLmFzdHlwZShucC5mbG9hdDMyKQorLSAgICAgICAgbm9k ZXMgPSBbbWFrZV9ub2RlKG9wLCBbIlgiXSwgWyJZIl0sIGtlZXBkaW1zPTApXQorLSAgICAgICAg bW9kZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgobm9kZXMsICJnIiwgW1hdLCBbWV0pKQorLSAg ICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgZ290ID0gcmVm LnJ1bihOb25lLCB7IlgiOiBkYXRhfSkKKy0gICAgICAgIHIgPSBnb3RbMF0KKy0gICAgICAgIHNl bGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBucC5uZGFycmF5KQorLSAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChyLnNoYXBlLCAoKSkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5l eHBhbmQoWygxLCksICgyLCksICgzLCksICg0LCksICg1LCksICg2LCldKQorLSAgICBkZWYgdGVz dF9wYWQoc2VsZiwgZGltKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJY IiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCistICAgICAgICBQID0gbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygiUCIsIFRlbnNvclByb3RvLklOVDY0LCBOb25lKQorLSAgICAgICAgViA9IG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oIlYiLCBUZW5zb3JQcm90by5GTE9BVCwgTm9uZSkKKy0gICAgICAg IFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUp CistICAgICAgICB2YWx1ZSA9IG5wLmFycmF5KFstNV0sIGR0eXBlPW5wLmZsb2F0MzIpCistCist ICAgICAgICBub2RlID0gbWFrZV9ub2RlKCJQYWQiLCBpbnB1dHM9WyJYIiwgIlAiLCAiViJdLCBv dXRwdXRzPVsiWSJdLCBtb2RlPSJjb25zdGFudCIpCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9k ZWwobWFrZV9ncmFwaChbbm9kZV0sICJnIiwgW1gsIFAsIFZdLCBbWV0pKQorLSAgICAgICAgcmVm ID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgeCA9IG5wLmFycmF5KFsxXSwg ZHR5cGU9bnAuZmxvYXQzMikucmVzaGFwZSgoMSwpICogZGltKQorLQorLSAgICAgICAgcCA9IG5w LmFycmF5KFsxLCAxXSAqIGRpbSwgZHR5cGU9bnAuaW50NjQpCistICAgICAgICBnb3QgPSByZWYu cnVuKE5vbmUsIHsiWCI6IHgsICJQIjogcCwgIlYiOiB2YWx1ZX0pWzBdCistICAgICAgICBzZWxm LmFzc2VydEVxdWFsKGdvdC5zaGFwZSwgKDMsKSAqIGRpbSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0 RXF1YWwoZ290LmR0eXBlLCBucC5mbG9hdDMyKQorLQorLSAgICAgICAgcCA9IG5wLnJlcGVhdChb NywgM10sIGRpbSkuYXN0eXBlKG5wLmludDY0KQorLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25l LCB7IlgiOiB4LCAiUCI6IHAsICJWIjogdmFsdWV9KVswXQorLSAgICAgICAgc2VsZi5hc3NlcnRF cXVhbChnb3Quc2hhcGUsICgxMSwpICogZGltKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChn b3QuZHR5cGUsIG5wLmZsb2F0MzIpCistCisgICAgIGRlZiB0ZXN0X2NvbnN0YW50X29mX3NoYXBl KHNlbGYpOgorICAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQ cm90by5GTE9BVCwgTm9uZSkKKyAgICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZ IiwgVGVuc29yUHJvdG8uRkxPQVQsIE5vbmUpCitAQCAtNTM3MywxMjQgKzQ5NjQsNiBAQCBjbGFz cyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGZv ciBpIGluIHJhbmdlKDIsIC0xLCAtMSk6CisgICAgICAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKGdv dFtpXSwgZXhwZWN0ZWRbaV0pCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQu ZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgIChbImFiYyIsICJkZWYiXSwgWyIuY29t IiwgIi5uZXQiXSwgWyJhYmMuY29tIiwgImRlZi5uZXQiXSwgKDIsKSksCistICAgICAgICAgICAg KFsiY2F0IiwgImRvZyIsICJzbmFrZSJdLCBbInMiXSwgWyJjYXRzIiwgImRvZ3MiLCAic25ha2Vz Il0sICgzLCkpLAorLSAgICAgICAgICAgICgiY2F0IiwgInMiLCAiY2F0cyIsICgpKSwKKy0gICAg ICAgICAgICAoWyJhIiwgIsOfIiwgInkiXSwgWyJhIiwgIsOfIiwgInkiXSwgWyJhYSIsICLDn8Of IiwgInl5Il0sICgzLCkpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3N0cmlu Z19jb25jYXQoc2VsZiwgYSwgYiwgZXhwZWN0ZWQsIGV4cGVjdGVkX3NoYXBlKToKKy0gICAgICAg IEEgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJBIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25l KQorLSAgICAgICAgQiA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIkIiLCBUZW5zb3JQcm90by5T VFJJTkcsIE5vbmUpCistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRl bnNvclByb3RvLlNUUklORywgTm9uZSkKKy0gICAgICAgIG5vZGUgPSBtYWtlX25vZGUoIlN0cmlu Z0NvbmNhdCIsIGlucHV0cz1bIkEiLCAiQiJdLCBvdXRwdXRzPVsiWSJdKQorLSAgICAgICAgbW9k ZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAiZyIsIFtBLCBCXSwgW1ldKSkKKy0g ICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIHJlc3VsdCwg Kl8gPSByZWYucnVuKE5vbmUsIHsiQSI6IG5wLmFycmF5KGEpLCAiQiI6IG5wLmFycmF5KGIpfSkK Ky0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKHJlc3VsdCwgZXhwZWN0ZWQp CistICAgICAgICBzZWxmLmFzc2VydEluKHJlc3VsdC5kdHlwZS5raW5kLCB7Ik8iLCAiVSJ9KQor LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuc2hhcGUsIGV4cGVjdGVkX3NoYXBlKQor LQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsK Ky0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFsiMSwyLDMiLCAiNCw1LDYiXSwKKy0g ICAgICAgICAgICAgICAgIiwiLAorLSAgICAgICAgICAgICAgICBOb25lLAorLSAgICAgICAgICAg ICAgICBbWyIxIiwgIjIiLCAiMyJdLCBbIjQiLCAiNSIsICI2Il1dLAorLSAgICAgICAgICAgICAg ICBbMywgM10sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAg ICAgIFsiMSwiLCAiNCw2IiwgIiJdLAorLSAgICAgICAgICAgICAgICAiLCIsCistICAgICAgICAg ICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIFtbIjEiLCAiIl0sIFsiNCIsICI2Il0sIFsi IiwgIiJdXSwKKy0gICAgICAgICAgICAgICAgWzIsIDIsIDFdLAorLSAgICAgICAgICAgICksCist ICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbIjEiLCAiNCw2IiwgIjQsNSw2Il0sCist ICAgICAgICAgICAgICAgICIsIiwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAg ICAgW1siMSIsICIiXSwgWyI0IiwgIjYiXSwgWyI0IiwgIjUsNiJdXSwKKy0gICAgICAgICAgICAg ICAgWzEsIDIsIDJdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAg ICAgICAgICBbWyIxLCIsICI0LDYiLCAiNCw1LDYiXSwgWyIxLCIsICI0LDYiLCAiNCw1LDYiXV0s CistICAgICAgICAgICAgICAgICIsIiwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAg ICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgW1siMSIsICIiLCAiIl0sIFsiNCIsICI2 IiwgIiJdLCBbIjQiLCAiNSIsICI2Il1dLAorLSAgICAgICAgICAgICAgICAgICAgW1siMSIsICIi LCAiIl0sIFsiNCIsICI2IiwgIiJdLCBbIjQiLCAiNSIsICI2Il1dLAorLSAgICAgICAgICAgICAg ICBdLAorLSAgICAgICAgICAgICAgICBbWzIsIDIsIDNdLCBbMiwgMiwgM11dLAorLSAgICAgICAg ICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbImhlbGxvIHdvcmxkICEi LCAiICBoZWxsbyAgIHdvcmxkICEiLCAiIGhlbGxvIHdvcmxkICAgISAiXSwKKy0gICAgICAgICAg ICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIsICJ3b3JsZCIsICIhIl0sCistICAgICAgICAg ICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwgIiEiXSwKKy0gICAgICAgICAgICAgICAgICAg IFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAg ICAgICAgICBbMywgMywgM10sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAg ICAgICAgICAgICAgIFsiaGVsbG8gd29ybGQgISIsICIgIGhlbGxvICAgd29ybGQgISIsICIgaGVs bG8gd29ybGQgICAhICJdLAorLSAgICAgICAgICAgICAgICAiIiwKKy0gICAgICAgICAgICAgICAg Tm9uZSwKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgWyJoZWxsbyIs ICJ3b3JsZCIsICIhIl0sCistICAgICAgICAgICAgICAgICAgICBbImhlbGxvIiwgIndvcmxkIiwg IiEiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaGVsbG8iLCAid29ybGQiLCAiISJdLAorLSAg ICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbMywgMywgM10sCistICAgICAgICAg ICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFsiby1uLW4tLXgtIiwgIm8t bi0tLS1ueCJdLAorLSAgICAgICAgICAgICAgICAiLSIsCistICAgICAgICAgICAgICAgIE5vbmUs CistICAgICAgICAgICAgICAgIFtbIm8iLCAibiIsICJuIiwgIiIsICJ4IiwgIiJdLCBbIm8iLCAi biIsICIiLCAiIiwgIiIsICJueCJdXSwKKy0gICAgICAgICAgICAgICAgWzYsIDZdLAorLSAgICAg ICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAg ICAgICAgICAgIiAiLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAgICBucC5h cnJheShbXSkucmVzaGFwZSgoMCwgMCkpLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAg ICAgICApLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdCgK Ky0gICAgICAgIHNlbGYsCistICAgICAgICB4LAorLSAgICAgICAgZGVsaW1pdGVyLAorLSAgICAg ICAgbWF4c3BsaXQsCistICAgICAgICBleHBlY3RlZF9zcGxpdCwKKy0gICAgICAgIGV4cGVjdGVk X251bV9zcGxpdHMsCistICAgICk6CistICAgICAgICBYID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygiWCIsIFRlbnNvclByb3RvLlNUUklORywgKE5vbmUpKQorLSAgICAgICAgU3BsaXRzID0gbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygiU3BsaXRzIiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoTm9uZSkp CistICAgICAgICBNYXhTcGxpdHMgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJNYXhTcGxpdHMi LCBUZW5zb3JQcm90by5JTlQzMiwgKE5vbmUpKQorLSAgICAgICAgbm9kZSA9IG1ha2Vfbm9kZSgK Ky0gICAgICAgICAgICAiU3RyaW5nU3BsaXQiLAorLSAgICAgICAgICAgIGlucHV0cz1bIlgiXSwK Ky0gICAgICAgICAgICBvdXRwdXRzPVsiU3BsaXRzIiwgIk1heFNwbGl0cyJdLAorLSAgICAgICAg ICAgIGRlbGltaXRlcj1kZWxpbWl0ZXIsCistICAgICAgICAgICAgbWF4c3BsaXQ9bWF4c3BsaXQs CistICAgICAgICApCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwobWFrZV9ncmFwaChbbm9k ZV0sICJnIiwgW1hdLCBbU3BsaXRzLCBNYXhTcGxpdHNdKSkKKy0gICAgICAgIHJlZiA9IFJlZmVy ZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIHggPSBucC5hcnJheSh4LCBkdHlwZT1vYmpl Y3QpCistICAgICAgICByZXN1bHQsIG51bV9zcGxpdHMsICpfID0gcmVmLnJ1bihOb25lLCB7Ilgi OiB4fSkKKy0gICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FycmF5X2VxdWFsKHJlc3VsdCwgbnAu YXJyYXkoZXhwZWN0ZWRfc3BsaXQsIGR0eXBlPW9iamVjdCkpCistICAgICAgICBucC50ZXN0aW5n LmFzc2VydF9hcnJheV9lcXVhbCgKKy0gICAgICAgICAgICBudW1fc3BsaXRzLCBucC5hcnJheShl eHBlY3RlZF9udW1fc3BsaXRzLCBkdHlwZT1ucC5pbnQ2NCkKKy0gICAgICAgICkKKy0KKyAgICAg ZGVmIHRlc3RfcWxpbmVhcmNvbnZfaW50OChzZWxmKToKKyAgICAgICAgIG5vZGUgPSBtYWtlX25v ZGUoCisgICAgICAgICAgICAgIlFMaW5lYXJNYXRNdWwiLAorQEAgLTU1NjEsNDQgKzUwMzQsNiBA QCBjbGFzcyBUZXN0UmVmZXJlbmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAg ICAgICAgICBucC5hcnJheShbWzQxLCAtMTIsIC05XSwgWzEsIC03NSwgMjBdXSwgZHR5cGU9bnAu aW50OCksIGdvdFswXQorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0 ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAg ICAgIFsid3d3Lmdvb2dsZS5jb20iLCAid3d3LmZhY2Vib29rLmNvbSIsICJ3d3cuYmJjLmNvLnVr Il0sCistICAgICAgICAgICAgICAgIHIid3d3XC5bXHcuLV0rXC5cYmNvbVxiIiwKKy0gICAgICAg ICAgICAgICAgW1RydWUsIFRydWUsIEZhbHNlXSwKKy0gICAgICAgICAgICAgICAgKDMsKSwKKy0g ICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgW1siT25ueCIs ICJ0ZW5zb3JmbG93IiwgIk51bXB5Il0sIFsiUHl0b3JjaCIsICJDeXRob24iLCAibnVtYmEiXV0s CistICAgICAgICAgICAgICAgIHIiXltBLVpdW2Etel0qJCIsCistICAgICAgICAgICAgICAgIFtb VHJ1ZSwgRmFsc2UsIFRydWVdLCBbVHJ1ZSwgVHJ1ZSwgRmFsc2VdXSwKKy0gICAgICAgICAgICAg ICAgKDIsIDMpLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICAgICAiYWNjb3VudEBnbWFpbC5jb20iLAorLSAgICAg ICAgICAgICAgICAgICAgImFjY291bnRAaG90bWFpbC5jb20iLAorLSAgICAgICAgICAgICAgICAg ICAgIm5vdCBlbWFpbCIsCistICAgICAgICAgICAgICAgICAgICAiYWNjb3VudDJAeWFob28uY29t IiwKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgciIoXFd8XilbXHcuXC1d ezAsMjV9QCh5YWhvb3xnbWFpbClcLmNvbShcV3wkKSIsCistICAgICAgICAgICAgICAgIFtUcnVl LCBGYWxzZSwgRmFsc2UsIFRydWVdLAorLSAgICAgICAgICAgICAgICAoNCwpLAorLSAgICAgICAg ICAgICksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfcmVnZXhfZnVsbF9tYXRj aChzZWxmLCB4LCBwYXR0ZXJuLCBleHBlY3RlZCwgZXhwZWN0ZWRfc2hhcGUpOgorLSAgICAgICAg WCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBUZW5zb3JQcm90by5TVFJJTkcsIE5vbmUp CistICAgICAgICBZID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkJP T0wsIE5vbmUpCistICAgICAgICBub2RlID0gbWFrZV9ub2RlKCJSZWdleEZ1bGxNYXRjaCIsIGlu cHV0cz1bIlgiXSwgb3V0cHV0cz1bIlkiXSwgcGF0dGVybj1wYXR0ZXJuKQorLSAgICAgICAgbW9k ZWwgPSBtYWtlX21vZGVsKG1ha2VfZ3JhcGgoW25vZGVdLCAiZyIsIFtYXSwgW1ldKSkKKy0gICAg ICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIHJlc3VsdCwgKl8g PSByZWYucnVuKE5vbmUsIHsiWCI6IG5wLmFycmF5KHgpfSkKKy0gICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2FycmF5X2VxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCistICAgICAgICBzZWxmLmFzc2Vy dEVxdWFsKHJlc3VsdC5kdHlwZS5raW5kLCAiYiIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFs KHJlc3VsdC5zaGFwZSwgZXhwZWN0ZWRfc2hhcGUpCistCisgICAgIGRlZiB0ZXN0X3JlZ2V4X2lu dmFsaWRfcGF0dGVybihzZWxmKToKKyAgICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJYIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBOb25lKQorICAgICAgICAgWSA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5CT09MLCBOb25lKQorQEAgLTU2MDgsMjIwICs1 MDQzLDYgQEAgY2xhc3MgVGVzdFJlZmVyZW5jZUV2YWx1YXRvcih1bml0dGVzdC5UZXN0Q2FzZSk6 CisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAg ICAgIHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXJyYXkoWyJ4Il0pfSkKKyAKKy0gICAgQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAg KAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5UMiwKKy0gICAgICAgICAgICAgICAg Wy0xLCAwLCAxLjUsIDIsIDMuMywgMTAsIDIwLCA0MF0sCistICAgICAgICAgICAgICAgIFswLCAw LCAyLCAyLCA0LCA2LCA2LCA2XSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgIChUZW5z b3JQcm90by5VSU5UMiwgWy0xLCAwLCAxLjUsIDIsIDMuMywgMTAsIDQwXSwgWzAsIDAsIDIsIDIs IDQsIDYsIDZdKSwKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uVUlOVDIsIFswXSwgWzBdKSwK Ky0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDIsCistICAg ICAgICAgICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIsIDMuMywgMTAsIDIwXSwKKy0gICAg ICAgICAgICAgICAgWy00LCAtNCwgMCwgMiwgMiwgMiwgMiwgMl0sCistICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDIsCistICAg ICAgICAgICAgICAgIFstMjAsIC0xNC41LCAwLCAxLjUsIDIsIDMuMywgMTBdLAorLSAgICAgICAg ICAgICAgICBbLTQsIC00LCAwLCAyLCAyLCAyLCAyXSwKKy0gICAgICAgICAgICApLAorLSAgICAg ICAgICAgIChUZW5zb3JQcm90by5JTlQyLCBbMF0sIFswXSksCistICAgICAgICBdCistICAgICkK Ky0gICAgZGVmIHRlc3RfcXVhbnRpemVfbGluZWFyX2ludDIoc2VsZiwgcXR5cGUsIGRhdGEsIGV4 cGVjdGVkKToKKy0gICAgICAgIFggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29y UHJvdG8uRkxPQVQsIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9t b2RlbCgKKy0gICAgICAgICAgICBtYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIkNv bnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBbInNjYWxlIl0sCistICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90 ZW5zb3IoInNjYWxlIiwgVGVuc29yUHJvdG8uRkxPQVQsIFsxXSwgWzIuMF0pLAorLSAgICAgICAg ICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAg ICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFtd LAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiemVybyJdLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJ6ZXJvIiwgcXR5cGUsIFsxXSwgWzBdKSwKKy0gICAg ICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlF1YW50 aXplTGluZWFyIiwgWyJYIiwgInNjYWxlIiwgInplcm8iXSwgWyJUIl0pLAorLSAgICAgICAgICAg ICAgICAgICAgbWFrZV9ub2RlKCJEZXF1YW50aXplTGluZWFyIiwgWyJUIiwgInNjYWxlIl0sIFsi WSJdLCBheGlzPTApLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAiZyIs CistICAgICAgICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ldLAorLSAgICAgICAg ICAgICkKKy0gICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2Rl bCkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgeyJYIjogbnAuYXNhcnJheShkYXRhKX0p CistICAgICAgICBhc3NlcnRfYWxsY2xvc2UoZ290WzBdLCBleHBlY3RlZCkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJv ZHVjdCgKKy0gICAgICAgICAgICAoVGVuc29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FU MTYpLAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwgVGVuc29yUHJvdG8uSU5UMiks CistICAgICAgICApCistICAgICkKKy0gICAgZGVmIHRlc3RfY2FzdF9pbnQyX291dHB1dChzZWxm LCBjYXN0X2Zyb20sIGNhc3RfdG8pOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlgiLCBjYXN0X2Zyb20sIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJZIiwgY2FzdF90bywgW05vbmVdKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVs KAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlkiXSwgdG89Y2FzdF90byks CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAg ICAgICAgW1hdLAorLSAgICAgICAgICAgICAgICBbWV0sCistICAgICAgICAgICAgKQorLSAgICAg ICAgKQorLSAgICAgICAgcmVmID0gUmVmZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAg ZGF0YSA9IG5wLmFycmF5KAorLSAgICAgICAgICAgIFswLCAxLCAyLjQsIDIuNiwgNCwgMTBdLAor LSAgICAgICAgICAgIGR0eXBlPW9ubnguaGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShj YXN0X2Zyb20pLAorLSAgICAgICAgKQorLSAgICAgICAgZXhwZWN0ZWQgPSBkYXRhLmFzdHlwZShv bm54LmhlbHBlci50ZW5zb3JfZHR5cGVfdG9fbnBfZHR5cGUoY2FzdF90bykpCistICAgICAgICBn b3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh bChnb3RbMF0udG9saXN0KCksIGV4cGVjdGVkLnRvbGlzdCgpKQorLQorLSAgICBAcGFyYW1ldGVy aXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAor LSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UMiwgVGVuc29yUHJvdG8uSU5UMiksCistICAg ICAgICAgICAgKFRlbnNvclByb3RvLkZMT0FULCBUZW5zb3JQcm90by5GTE9BVDE2KSwKKy0gICAg ICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9jYXN0X2ludDJfaW5wdXQoCistICAgICAgICBz ZWxmLCBjYXN0X2Zyb206IFRlbnNvclByb3RvLkRhdGFUeXBlLCBjYXN0X3RvOiBUZW5zb3JQcm90 by5EYXRhVHlwZQorLSAgICApOgorLSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlgiLCBjYXN0X2Zyb20sIFtOb25lXSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJZIiwgY2FzdF90bywgW05vbmVdKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAor LSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlkiXSwgdG89VGVuc29yUHJvdG8u RkxPQVQpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAiZyIsCistICAg ICAgICAgICAgICAgIFtYXSwKKy0gICAgICAgICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICkK Ky0gICAgICAgICkKKy0gICAgICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0g ICAgICAgIGRhdGEgPSBucC5hcnJheShyYW5nZSgyKSwgZHR5cGU9bnAuZmxvYXQzMikKKy0gICAg ICAgIGV4cGVjdGVkID0gZGF0YS5hc3R5cGUob25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3RvX25w X2R0eXBlKGNhc3RfZnJvbSkpCistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRh dGF9KQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYXJyYXlfZXF1YWwoZ290WzBdLCBleHBl Y3RlZCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAg ICAgICBbCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5VSU5U NCwKKy0gICAgICAgICAgICAgICAgWy0xLCAwLCAxLjUsIDIsIDMuMywgMTAsIDIwLCA0MF0sCist ICAgICAgICAgICAgICAgIFswLCAwLCAyLCAyLCA0LCAxMCwgMjAsIDMwXSwKKy0gICAgICAgICAg ICApLAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5VSU5UNCwgWy0xLCAwLCAxLjUsIDIsIDMu MywgMTAsIDQwXSwgWzAsIDAsIDIsIDIsIDQsIDEwLCAzMF0pLAorLSAgICAgICAgICAgIChUZW5z b3JQcm90by5VSU5UNCwgWzBdLCBbMF0pLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAg ICAgVGVuc29yUHJvdG8uSU5UNCwKKy0gICAgICAgICAgICAgICAgWy0yMCwgLTE0LjUsIDAsIDEu NSwgMiwgMy4zLCAxMCwgMjBdLAorLSAgICAgICAgICAgICAgICBbLTE2LCAtMTQsIDAsIDIsIDIs IDQsIDEwLCAxNF0sCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAoCistICAgICAgICAg ICAgICAgIFRlbnNvclByb3RvLklOVDQsCistICAgICAgICAgICAgICAgIFstMjAsIC0xNC41LCAw LCAxLjUsIDIsIDMuMywgMTBdLAorLSAgICAgICAgICAgICAgICBbLTE2LCAtMTQsIDAsIDIsIDIs IDQsIDEwXSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgIChUZW5zb3JQcm90by5JTlQ0 LCBbMF0sIFswXSksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfcXVhbnRpemVf bGluZWFyX2ludDQoc2VsZiwgcXR5cGUsIGRhdGEsIGV4cGVjdGVkKToKKy0gICAgICAgIFggPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lXSkKKy0g ICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQs IFtOb25lXSkKKy0gICAgICAgIG1vZGVsID0gbWFrZV9tb2RlbCgKKy0gICAgICAgICAgICBtYWtl X2dyYXBoKAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtlX25v ZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbInNjYWxlIl0sCistICAg ICAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNjYWxlIiwgVGVuc29yUHJv dG8uRkxPQVQsIFsxXSwgWzIuMF0pLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiQ29uc3Rh bnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIFsiemVybyJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29y KCJ6ZXJvIiwgcXR5cGUsIFsxXSwgWzBdKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAg ICAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlF1YW50aXplTGluZWFyIiwgWyJYIiwgInNjYWxl IiwgInplcm8iXSwgWyJUIl0pLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJEZXF1 YW50aXplTGluZWFyIiwgWyJUIiwgInNjYWxlIl0sIFsiWSJdLCBheGlzPTApLAorLSAgICAgICAg ICAgICAgICBdLAorLSAgICAgICAgICAgICAgICAiZyIsCistICAgICAgICAgICAgICAgIFtYXSwK Ky0gICAgICAgICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAg ICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIGdvdCA9IHJlZi5y dW4oTm9uZSwgeyJYIjogbnAuYXNhcnJheShkYXRhKX0pCistICAgICAgICBhc3NlcnRfYWxsY2xv c2UoZ290WzBdLCBleHBlY3RlZCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXpl ZC5leHBhbmQoCistICAgICAgICBpdGVydG9vbHMucHJvZHVjdCgKKy0gICAgICAgICAgICAoVGVu c29yUHJvdG8uRkxPQVQsIFRlbnNvclByb3RvLkZMT0FUMTYpLAorLSAgICAgICAgICAgIChUZW5z b3JQcm90by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCistICAgICAgICApCistICAgICkKKy0g ICAgZGVmIHRlc3RfY2FzdF9pbnQ0X291dHB1dChzZWxmLCBjYXN0X2Zyb20sIGNhc3RfdG8pOgor LSAgICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBjYXN0X2Zyb20sIFtOb25l XSkKKy0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgY2FzdF90bywgW05v bmVdKQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3Jh cGgoCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgi Q2FzdCIsIFsiWCJdLCBbIlkiXSwgdG89Y2FzdF90byksCistICAgICAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgICAgICJnIiwKKy0gICAgICAgICAgICAgICAgW1hdLAorLSAgICAgICAgICAg ICAgICBbWV0sCistICAgICAgICAgICAgKQorLSAgICAgICAgKQorLSAgICAgICAgcmVmID0gUmVm ZXJlbmNlRXZhbHVhdG9yKG1vZGVsKQorLSAgICAgICAgZGF0YSA9IG5wLmFycmF5KAorLSAgICAg ICAgICAgIFswLCAxLCAyLjQsIDIuNiwgNCwgMTBdLAorLSAgICAgICAgICAgIGR0eXBlPW9ubngu aGVscGVyLnRlbnNvcl9kdHlwZV90b19ucF9kdHlwZShjYXN0X2Zyb20pLAorLSAgICAgICAgKQor LSAgICAgICAgZXhwZWN0ZWQgPSBkYXRhLmFzdHlwZShvbm54LmhlbHBlci50ZW5zb3JfZHR5cGVf dG9fbnBfZHR5cGUoY2FzdF90bykpCistICAgICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6 IGRhdGF9KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnb3RbMF0udG9saXN0KCksIGV4cGVj dGVkLnRvbGlzdCgpKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFu ZCgKKy0gICAgICAgIGl0ZXJ0b29scy5wcm9kdWN0KAorLSAgICAgICAgICAgIChUZW5zb3JQcm90 by5VSU5UNCwgVGVuc29yUHJvdG8uSU5UNCksCistICAgICAgICAgICAgKFRlbnNvclByb3RvLkZM T0FULCBUZW5zb3JQcm90by5GTE9BVDE2KSwKKy0gICAgICAgICkKKy0gICAgKQorLSAgICBkZWYg dGVzdF9jYXN0X2ludDRfaW5wdXQoCistICAgICAgICBzZWxmLCBjYXN0X2Zyb206IFRlbnNvclBy b3RvLkRhdGFUeXBlLCBjYXN0X3RvOiBUZW5zb3JQcm90by5EYXRhVHlwZQorLSAgICApOgorLSAg ICAgICAgWCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlgiLCBjYXN0X2Zyb20sIFtOb25lXSkK Ky0gICAgICAgIFkgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgY2FzdF90bywgW05vbmVd KQorLSAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgo CistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2Fz dCIsIFsiWCJdLCBbIlkiXSwgdG89VGVuc29yUHJvdG8uRkxPQVQpLAorLSAgICAgICAgICAgICAg ICBdLAorLSAgICAgICAgICAgICAgICAiZyIsCistICAgICAgICAgICAgICAgIFtYXSwKKy0gICAg ICAgICAgICAgICAgW1ldLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICkKKy0gICAgICAgIHJl ZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCkKKy0gICAgICAgIGRhdGEgPSBucC5hcnJheShy YW5nZSg3KSwgZHR5cGU9bnAuZmxvYXQzMikKKy0gICAgICAgIGV4cGVjdGVkID0gZGF0YS5hc3R5 cGUob25ueC5oZWxwZXIudGVuc29yX2R0eXBlX3RvX25wX2R0eXBlKGNhc3RfZnJvbSkpCistICAg ICAgICBnb3QgPSByZWYucnVuKE5vbmUsIHsiWCI6IGRhdGF9KQorLSAgICAgICAgbnAudGVzdGlu Zy5hc3NlcnRfYXJyYXlfZXF1YWwoZ290WzBdLCBleHBlY3RlZCkKKy0KKyAgICAgZGVmIHRlc3Rf YV9mdW5jdGlvbl9jYWxsaW5nX2FfZnVuY3Rpb25fb25jZShzZWxmKToKKyAgICAgICAgIFggPSBt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFsiTiJdKQorICAg ICAgICAgb3V0cHV0ID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJv dG8uRkxPQVQsIFsiTiJdKQorQEAgLTYwNTQsOTQgKzUyNzUsNiBAQCBjbGFzcyBUZXN0UmVmZXJl bmNlRXZhbHVhdG9yKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGZvciB2IGluIG9pbmYu ZnVuY3Rpb25zXy52YWx1ZXMoKToKKyAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uo diwgTXlSZWZlcmVuY2VFdmFsdWF0b3IpCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRl cml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiRkxPQVQ4RTRNM0ZOIiwg MC4yMyksCistICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk5VWiIsIDAuMjMpLAorLSAgICAgICAg ICAgICgiRkxPQVQ4RTVNMiIsIDAuODUpLAorLSAgICAgICAgICAgICgiRkxPQVQ4RTVNMkZOVVoi LCAwLjg1KSwKKy0gICAgICAgICAgICAoIkRPVUJMRSIsIDApLAorLSAgICAgICAgICAgICgiRkxP QVQiLCAwKSwKKy0gICAgICAgICAgICAoIkZMT0FUMTYiLCAyZS0zKSwKKy0gICAgICAgICAgICAo IkJGTE9BVDE2IiwgMmUtMiksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRlc3RfYWRk X2N1c3RvbV9kdHlwZShzZWxmLCBzdHlwZTogc3RyLCBhdG9sOiBmbG9hdCk6CistICAgICAgICBp dHlwZSA9IGdldGF0dHIoVGVuc29yUHJvdG8sIHN0eXBlKQorLSAgICAgICAgbW9kZWwgPSBtYWtl X21vZGVsKAorLSAgICAgICAgICAgIG1ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsKKy0g ICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWCJdLCBbIlhjIl0sIHRvPWl0 eXBlKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWSJdLCBbIllj Il0sIHRvPWl0eXBlKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQWRkIiwgWyJY YyIsICJZYyJdLCBbIlpjIl0pLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJDYXN0 IiwgWyJaYyJdLCBbIloiXSwgdG89VGVuc29yUHJvdG8uRkxPQVQpLAorLSAgICAgICAgICAgICAg ICBdLAorLSAgICAgICAgICAgICAgICAibmQiLAorLSAgICAgICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxP QVQsIFtOb25lLCBOb25lLCBOb25lXSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSks CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJaIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSldLAorLSAg ICAgICAgICAgICksCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIi LCAxOCldLAorLSAgICAgICAgICAgIGlyX3ZlcnNpb249OSwKKy0gICAgICAgICkKKy0KKy0gICAg ICAgIHJlZiA9IFJlZmVyZW5jZUV2YWx1YXRvcihtb2RlbCwgdmVyYm9zZT0wKQorLQorLSAgICAg ICAgeCA9IChucC5hcmFuZ2UoMTgpIC8gNikucmVzaGFwZSgoMiwgMywgMykpLmFzdHlwZShucC5m bG9hdDMyKQorLSAgICAgICAgeSA9IChucC5hcmFuZ2UoMTgpIC8gOSkucmVzaGFwZSgoMiwgMywg MykpLmFzdHlwZShucC5mbG9hdDMyKQorLSAgICAgICAgZmVlZHMgPSBkaWN0KFg9eCwgWT15KQor LSAgICAgICAgZXhwZWN0ZWQgPSB4ICsgeQorLSAgICAgICAgZ290ID0gcmVmLnJ1bihOb25lLCBm ZWVkcylbMF0KKy0gICAgICAgIGFzc2VydF9hbGxjbG9zZShnb3QsIGV4cGVjdGVkLCBhdG9sPWF0 b2wpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAg ICAgWworLSAgICAgICAgICAgICgiRE9VQkxFIiwpLAorLSAgICAgICAgICAgICgiRkxPQVQiLCks CistICAgICAgICAgICAgKCJGTE9BVDE2IiwpLAorLSAgICAgICAgICAgICgiQkZMT0FUMTYiLCks CistICAgICAgICAgICAgKCJGTE9BVDhFNE0zRk4iLCksCistICAgICAgICAgICAgKCJGTE9BVDhF NE0zRk5VWiIsKSwKKy0gICAgICAgICAgICAoIkZMT0FUOEU1TTIiLCksCistICAgICAgICAgICAg KCJGTE9BVDhFNU0yRk5VWiIsKSwKKy0gICAgICAgICAgICAoIklOVDQiLCksCistICAgICAgICAg ICAgKCJVSU5UNCIsKSwKKy0gICAgICAgICAgICAoIklOVDIiLCksCistICAgICAgICAgICAgKCJV SU5UMiIsKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9jbXBfY3VzdG9tX2R0 eXBlKHNlbGYsIHN0eXBlKToKKy0gICAgICAgIGl0eXBlID0gZ2V0YXR0cihUZW5zb3JQcm90bywg c3R5cGUpCistICAgICAgICBtb2RlbCA9IG1ha2VfbW9kZWwoCistICAgICAgICAgICAgbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgbWFrZV9ub2Rl KCJDYXN0IiwgWyJYIl0sIFsiWGMiXSwgdG89aXR5cGUpLAorLSAgICAgICAgICAgICAgICAgICAg bWFrZV9ub2RlKCJDYXN0IiwgWyJZIl0sIFsiWWMiXSwgdG89aXR5cGUpLAorLSAgICAgICAgICAg ICAgICAgICAgbWFrZV9ub2RlKCJHcmVhdGVyT3JFcXVhbCIsIFsiWGMiLCAiWWMiXSwgWyJaYyJd KSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiQ2FzdCIsIFsiWmMiXSwgWyJaIl0s IHRvPVRlbnNvclByb3RvLkJPT0wpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAg ICAgICAibmQiLAorLSAgICAgICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBO b25lXSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwg VGVuc29yUHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSksCistICAgICAgICAgICAgICAg IF0sCistICAgICAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJaIiwgVGVuc29y UHJvdG8uRkxPQVQsIFtOb25lLCBOb25lLCBOb25lXSldLAorLSAgICAgICAgICAgICksCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1bbWFrZV9vcHNldGlkKCIiLCAxOCldLAorLSAgICAgICAg ICAgIGlyX3ZlcnNpb249OSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIHJlZiA9IFJlZmVyZW5j ZUV2YWx1YXRvcihtb2RlbCkKKy0KKy0gICAgICAgIHggPSAobnAuYXJhbmdlKDE4KSAvIDE4KS5y ZXNoYXBlKCgyLCAzLCAzKSkuYXN0eXBlKG5wLmZsb2F0MzIpCistICAgICAgICB5ID0gKChucC5h cmFuZ2UoMTgpIC0gOSkgLyAxOCkucmVzaGFwZSgoMiwgMywgMykpLmFzdHlwZShucC5mbG9hdDMy KQorLSAgICAgICAgZmVlZHMgPSBkaWN0KFg9eCwgWT15KQorLSAgICAgICAgZXhwZWN0ZWQgPSB4 ID49IHkKKy0gICAgICAgIGdvdCA9IHJlZi5ydW4oTm9uZSwgZmVlZHMpWzBdCistICAgICAgICBu cC50ZXN0aW5nLmFzc2VydF9lcXVhbChnb3QsIGV4cGVjdGVkKQorLQorICAgICBkZWYgdGVzdF9z Y2F0dGVyX2VsZW1lbnRzXzRkKHNlbGYpOgorICAgICAgICAgbW9kZWwgPSBtYWtlX21vZGVsKAor ICAgICAgICAgICAgIG1ha2VfZ3JhcGgoCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3NjaGVtYV90 ZXN0LnB5IGIvb25ueC90ZXN0L3NjaGVtYV90ZXN0LnB5CitpbmRleCBmOGIzZjhhNjUuLjcxMGI2 MDJhMyAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9zY2hlbWFfdGVzdC5weQorKysrIGIvb25ueC90 ZXN0L3NjaGVtYV90ZXN0LnB5CitAQCAtNyw4ICs3LDYgQEAgaW1wb3J0IGNvbnRleHRsaWIKKyBp bXBvcnQgdW5pdHRlc3QKKyBmcm9tIHR5cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORworIAorLWlt cG9ydCBwYXJhbWV0ZXJpemVkCistCisgaW1wb3J0IG9ubngKKyBmcm9tIG9ubnggaW1wb3J0IGRl ZnMKKyAKK0BAIC0yNDcsMzQgKzI0NSw2IEBAIGNsYXNzIFRlc3RGb3JtYWxQYXJhbWV0ZXIodW5p dHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgKQorIAorIAorLWNsYXNzIFRlc3RUeXBlQ29uc3Ry YWludFBhcmFtKHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgQHBhcmFtZXRlcml6ZWQucGFyYW1l dGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJzaW5nbGVfdHlwZSIs ICJUIiwgWyJ0ZW5zb3IoZmxvYXQpIl0sICJUZXN0IGRlc2NyaXB0aW9uIiksCistICAgICAgICAg ICAgKAorLSAgICAgICAgICAgICAgICAiZG91YmxlX3R5cGVzIiwKKy0gICAgICAgICAgICAgICAg IlQiLAorLSAgICAgICAgICAgICAgICBbInRlbnNvcihmbG9hdCkiLCAidGVuc29yKGludDY0KSJd LAorLSAgICAgICAgICAgICAgICAiVGVzdCBkZXNjcmlwdGlvbiIsCistICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAoInR1cGxlIiwgIlQiLCAoInRlbnNvcihmbG9hdCkiLCAidGVuc29yKGlu dDY0KSIpLCAiVGVzdCBkZXNjcmlwdGlvbiIpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRl ZiB0ZXN0X2luaXQoCistICAgICAgICBzZWxmLAorLSAgICAgICAgXzogc3RyLAorLSAgICAgICAg dHlwZV9wYXJhbV9zdHI6IHN0ciwKKy0gICAgICAgIGFsbG93ZWRfdHlwZXM6IFNlcXVlbmNlW3N0 cl0sCistICAgICAgICBkZXNjcmlwdGlvbjogc3RyLAorLSAgICApIC0+IE5vbmU6CistICAgICAg ICB0eXBlX2NvbnN0cmFpbnQgPSBkZWZzLk9wU2NoZW1hLlR5cGVDb25zdHJhaW50UGFyYW0oCist ICAgICAgICAgICAgdHlwZV9wYXJhbV9zdHIsIGFsbG93ZWRfdHlwZXMsIGRlc2NyaXB0aW9uCist ICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGVfY29uc3RyYWludC5kZXNj cmlwdGlvbiwgZGVzY3JpcHRpb24pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGVfY29u c3RyYWludC5hbGxvd2VkX3R5cGVfc3RycywgbGlzdChhbGxvd2VkX3R5cGVzKSkKKy0gICAgICAg IHNlbGYuYXNzZXJ0RXF1YWwodHlwZV9jb25zdHJhaW50LnR5cGVfcGFyYW1fc3RyLCB0eXBlX3Bh cmFtX3N0cikKKy0KKy0KKyBjbGFzcyBUZXN0QXR0cmlidXRlKHVuaXR0ZXN0LlRlc3RDYXNlKToK KyAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgIG5hbWUgPSAidGVzdF9hdHRyIgor QEAgLTI5NywxNjkgKzI2Nyw1IEBAIGNsYXNzIFRlc3RBdHRyaWJ1dGUodW5pdHRlc3QuVGVzdENh c2UpOgorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYXR0cjEgZGVzY3JpcHRpb24iLCBhdHRy aWJ1dGUuZGVzY3JpcHRpb24pCisgCisgCistQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9j bGFzcygKKy0gICAgWworLSAgICAgICAgIyByZWdpc3RlciB0byBleGlzdCBkb21haW4KKy0gICAg ICAgIHsKKy0gICAgICAgICAgICAib3BfdHlwZSI6ICJDdXN0b21PcCIsCistICAgICAgICAgICAg Im9wX3ZlcnNpb24iOiA1LAorLSAgICAgICAgICAgICJvcF9kb21haW4iOiAiIiwKKy0gICAgICAg ICAgICAidHJhcF9vcF92ZXJzaW9uIjogWzEsIDIsIDYsIDddLAorLSAgICAgICAgfSwKKy0gICAg ICAgICMgcmVnaXN0ZXIgdG8gbmV3IGRvbWFpbgorLSAgICAgICAgeworLSAgICAgICAgICAgICJv cF90eXBlIjogIkN1c3RvbU9wIiwKKy0gICAgICAgICAgICAib3BfdmVyc2lvbiI6IDUsCistICAg ICAgICAgICAgIm9wX2RvbWFpbiI6ICJ0ZXN0IiwKKy0gICAgICAgICAgICAidHJhcF9vcF92ZXJz aW9uIjogWzEsIDIsIDYsIDddLAorLSAgICAgICAgfSwKKy0gICAgXQorLSkKKy1jbGFzcyBUZXN0 T3BTY2hlbWFSZWdpc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CistICAgIG9wX3R5cGU6IHN0cgor LSAgICBvcF92ZXJzaW9uOiBpbnQKKy0gICAgb3BfZG9tYWluOiBzdHIKKy0gICAgIyByZWdpc3Rl ciBzb21lIGZha2Ugc2NoZW1hIHRvIGNoZWNrIGJlaGF2aW9yCistICAgIHRyYXBfb3BfdmVyc2lv bjogbGlzdFtpbnRdCistCistICAgIGRlZiBzZXRVcChzZWxmKSAtPiBOb25lOgorLSAgICAgICAg IyBFbnN1cmUgdGhlIHNjaGVtYSBpcyB1bnJlZ2lzdGVyZWQKKy0gICAgICAgIHNlbGYuYXNzZXJ0 RmFsc2Uob25ueC5kZWZzLmhhcyhzZWxmLm9wX3R5cGUsIHNlbGYub3BfZG9tYWluKSkKKy0KKy0g ICAgZGVmIHRlYXJEb3duKHNlbGYpIC0+IE5vbmU6CistICAgICAgICAjIENsZWFuIHVwIHRoZSBy ZWdpc3RlcmVkIHNjaGVtYQorLSAgICAgICAgZm9yIHZlcnNpb24gaW4gWypzZWxmLnRyYXBfb3Bf dmVyc2lvbiwgc2VsZi5vcF92ZXJzaW9uXToKKy0gICAgICAgICAgICB3aXRoIGNvbnRleHRsaWIu c3VwcHJlc3Mob25ueC5kZWZzLlNjaGVtYUVycm9yKToKKy0gICAgICAgICAgICAgICAgb25ueC5k ZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKHNlbGYub3BfdHlwZSwgdmVyc2lvbiwgc2VsZi5vcF9kb21h aW4pCistCistICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX211bHRpX3NjaGVtYShzZWxmKToKKy0gICAg ICAgIGZvciB2ZXJzaW9uIGluIFsqc2VsZi50cmFwX29wX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lv bl06CistICAgICAgICAgICAgb3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAg ICAgICAgc2VsZi5vcF90eXBlLAorLSAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKKy0g ICAgICAgICAgICAgICAgdmVyc2lvbiwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgb25u eC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEpCistICAgICAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKG9ubnguZGVmcy5oYXMoc2VsZi5vcF90eXBlLCB2ZXJzaW9uLCBzZWxmLm9wX2RvbWFp bikpCistICAgICAgICBmb3IgdmVyc2lvbiBpbiBbKnNlbGYudHJhcF9vcF92ZXJzaW9uLCBzZWxm Lm9wX3ZlcnNpb25dOgorLSAgICAgICAgICAgICMgQWxzbyBtYWtlIHN1cmUgdGhlIGBvcF9zY2hl bWFgIGlzIGFjY2Vzc2libGUgYWZ0ZXIgcmVnaXN0ZXIKKy0gICAgICAgICAgICByZWdpc3RlcmVk X29wID0gb25ueC5kZWZzLmdldF9zY2hlbWEoCistICAgICAgICAgICAgICAgIG9wX3NjaGVtYS5u YW1lLCB2ZXJzaW9uLCBvcF9zY2hlbWEuZG9tYWluCistICAgICAgICAgICAgKQorLSAgICAgICAg ICAgIG9wX3NjaGVtYSA9IGRlZnMuT3BTY2hlbWEoCistICAgICAgICAgICAgICAgIHNlbGYub3Bf dHlwZSwKKy0gICAgICAgICAgICAgICAgc2VsZi5vcF9kb21haW4sCistICAgICAgICAgICAgICAg IHZlcnNpb24sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo c3RyKHJlZ2lzdGVyZWRfb3ApLCBzdHIob3Bfc2NoZW1hKSkKKy0KKy0gICAgZGVmIHRlc3RfdXNp bmdfdGhlX3NwZWNpZmllZF92ZXJzaW9uX2luX29ubnhfY2hlY2soc2VsZik6CistICAgICAgICBp bnB1dCA9IGYiIiIKKy0gICAgICAgICAgICA8CistICAgICAgICAgICAgICAgIGlyX3ZlcnNpb246 IDcsCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydDogWworLSAgICAgICAgICAgICAgICAg ICAgIntzZWxmLm9wX2RvbWFpbn0iIDoge3NlbGYub3BfdmVyc2lvbn0KKy0gICAgICAgICAgICAg ICAgXQorLSAgICAgICAgICAgID4KKy0gICAgICAgICAgICBhZ3JhcGggKGZsb2F0W04sIDEyOF0g WCwgaW50MzIgWSkgPT4gKGZsb2F0W05dIFopCistICAgICAgICAgICAge3sKKy0gICAgICAgICAg ICAgICAgWiA9IHtzZWxmLm9wX2RvbWFpbn0ue3NlbGYub3BfdHlwZX08YXR0cjE9WzEsMl0+KFgs IFkpCistICAgICAgICAgICAgfX0KKy0gICAgICAgICAgICIiIgorLSAgICAgICAgbW9kZWwgPSBv bm54LnBhcnNlci5wYXJzZV9tb2RlbChpbnB1dCkKKy0gICAgICAgIG9wX3NjaGVtYSA9IGRlZnMu T3BTY2hlbWEoCistICAgICAgICAgICAgc2VsZi5vcF90eXBlLAorLSAgICAgICAgICAgIHNlbGYu b3BfZG9tYWluLAorLSAgICAgICAgICAgIHNlbGYub3BfdmVyc2lvbiwKKy0gICAgICAgICAgICBp bnB1dHM9WworLSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1hLkZvcm1hbFBhcmFtZXRlcigi aW5wdXQxIiwgIlQiKSwKKy0gICAgICAgICAgICAgICAgZGVmcy5PcFNjaGVtYS5Gb3JtYWxQYXJh bWV0ZXIoImlucHV0MiIsICJpbnQzMiIpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAg b3V0cHV0cz1bCistICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEuRm9ybWFsUGFyYW1ldGVy KCJvdXRwdXQxIiwgIlQiKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIHR5cGVfY29u c3RyYWludHM9WygiVCIsIFsidGVuc29yKGZsb2F0KSJdLCAiIildLAorLSAgICAgICAgICAgIGF0 dHJpYnV0ZXM9WworLSAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1hLkF0dHJpYnV0ZSgKKy0g ICAgICAgICAgICAgICAgICAgICJhdHRyMSIsIGRlZnMuT3BTY2hlbWEuQXR0clR5cGUuSU5UUywg ImF0dHIxIGRlc2NyaXB0aW9uIgorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICkKKy0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5jaGVja2Vy LlZhbGlkYXRpb25FcnJvcik6CistICAgICAgICAgICAgb25ueC5jaGVja2VyLmNoZWNrX21vZGVs KG1vZGVsLCBjaGVja19jdXN0b21fZG9tYWluPVRydWUpCistICAgICAgICBvbm54LmRlZnMucmVn aXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKKy0gICAgICAgICMgVGhlIGZha2Ugc2NoZW1hIHdpbGwg cmFpc2UgY2hlY2sgZXhjZXB0aW9uIGlmIHNlbGVjdGVkIGluIGNoZWNrZXIKKy0gICAgICAgIGZv ciB2ZXJzaW9uIGluIHNlbGYudHJhcF9vcF92ZXJzaW9uOgorLSAgICAgICAgICAgIG9ubnguZGVm cy5yZWdpc3Rlcl9zY2hlbWEoCistICAgICAgICAgICAgICAgIGRlZnMuT3BTY2hlbWEoCistICAg ICAgICAgICAgICAgICAgICBzZWxmLm9wX3R5cGUsCistICAgICAgICAgICAgICAgICAgICBzZWxm Lm9wX2RvbWFpbiwKKy0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24sCistICAgICAgICAgICAg ICAgICAgICBvdXRwdXRzPVsKKy0gICAgICAgICAgICAgICAgICAgICAgICBkZWZzLk9wU2NoZW1h LkZvcm1hbFBhcmFtZXRlcigib3V0cHV0MSIsICJpbnQzMiIpLAorLSAgICAgICAgICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgICkKKy0gICAgICAgIG9ubngu Y2hlY2tlci5jaGVja19tb2RlbChtb2RlbCwgY2hlY2tfY3VzdG9tX2RvbWFpbj1UcnVlKQorLQor LSAgICBkZWYgdGVzdF9yZWdpc3Rlcl9zY2hlbWFfcmFpc2VzX2Vycm9yX3doZW5fcmVnaXN0ZXJp bmdfYV9zY2hlbWFfdHdpY2Uoc2VsZik6CistICAgICAgICBvcF9zY2hlbWEgPSBkZWZzLk9wU2No ZW1hKAorLSAgICAgICAgICAgIHNlbGYub3BfdHlwZSwKKy0gICAgICAgICAgICBzZWxmLm9wX2Rv bWFpbiwKKy0gICAgICAgICAgICBzZWxmLm9wX3ZlcnNpb24sCistICAgICAgICApCistICAgICAg ICBvbm54LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKKy0gICAgICAgIHdpdGggc2Vs Zi5hc3NlcnRSYWlzZXMob25ueC5kZWZzLlNjaGVtYUVycm9yKToKKy0gICAgICAgICAgICBvbm54 LmRlZnMucmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYSkKKy0KKy0gICAgZGVmIHRlc3RfZGVyZWdp c3Rlcl90aGVfc3BlY2lmaWVkX3NjaGVtYShzZWxmKToKKy0gICAgICAgIGZvciB2ZXJzaW9uIGlu IFsqc2VsZi50cmFwX29wX3ZlcnNpb24sIHNlbGYub3BfdmVyc2lvbl06CistICAgICAgICAgICAg b3Bfc2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAgICAgICAgc2VsZi5vcF90eXBl LAorLSAgICAgICAgICAgICAgICBzZWxmLm9wX2RvbWFpbiwKKy0gICAgICAgICAgICAgICAgdmVy c2lvbiwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3Nj aGVtYShvcF9zY2hlbWEpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9ubnguZGVmcy5o YXMob3Bfc2NoZW1hLm5hbWUsIHZlcnNpb24sIG9wX3NjaGVtYS5kb21haW4pKQorLSAgICAgICAg b25ueC5kZWZzLmRlcmVnaXN0ZXJfc2NoZW1hKG9wX3NjaGVtYS5uYW1lLCBzZWxmLm9wX3ZlcnNp b24sIG9wX3NjaGVtYS5kb21haW4pCistICAgICAgICBmb3IgdmVyc2lvbiBpbiBzZWxmLnRyYXBf b3BfdmVyc2lvbjoKKy0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob25ueC5kZWZzLmhhcyhv cF9zY2hlbWEubmFtZSwgdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFpbikpCistICAgICAgICAjIE1h eWJlIGhhcyBsZXNzZXIgb3AgdmVyc2lvbiBpbiB0cmFwIGxpc3QKKy0gICAgICAgIGlmIG9ubngu ZGVmcy5oYXMob3Bfc2NoZW1hLm5hbWUsIHNlbGYub3BfdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFp bik6CistICAgICAgICAgICAgc2NoZW1hID0gb25ueC5kZWZzLmdldF9zY2hlbWEoCistICAgICAg ICAgICAgICAgIG9wX3NjaGVtYS5uYW1lLCBzZWxmLm9wX3ZlcnNpb24sIG9wX3NjaGVtYS5kb21h aW4KKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHNjaGVtYS5z aW5jZV92ZXJzaW9uLCBzZWxmLm9wX3ZlcnNpb24pCistCistICAgIGRlZiB0ZXN0X2RlcmVnaXN0 ZXJfc2NoZW1hX3JhaXNlc19lcnJvcl93aGVuX29wc2NoZW1hX2RvZXNfbm90X2V4aXN0KHNlbGYp OgorLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmRlZnMuU2NoZW1hRXJyb3Ip OgorLSAgICAgICAgICAgIG9ubnguZGVmcy5kZXJlZ2lzdGVyX3NjaGVtYShzZWxmLm9wX3R5cGUs IHNlbGYub3BfdmVyc2lvbiwgc2VsZi5vcF9kb21haW4pCistCistICAgIGRlZiB0ZXN0X2xlZ2Fj eV9zY2hlbWFfYWNjZXNzaWJsZV9hZnRlcl9kZXJlZ2lzdGVyKHNlbGYpOgorLSAgICAgICAgb3Bf c2NoZW1hID0gZGVmcy5PcFNjaGVtYSgKKy0gICAgICAgICAgICBzZWxmLm9wX3R5cGUsCistICAg ICAgICAgICAgc2VsZi5vcF9kb21haW4sCistICAgICAgICAgICAgc2VsZi5vcF92ZXJzaW9uLAor LSAgICAgICAgKQorLSAgICAgICAgb25ueC5kZWZzLnJlZ2lzdGVyX3NjaGVtYShvcF9zY2hlbWEp CistICAgICAgICBzY2hlbWFfYSA9IG9ubnguZGVmcy5nZXRfc2NoZW1hKAorLSAgICAgICAgICAg IG9wX3NjaGVtYS5uYW1lLCBvcF9zY2hlbWEuc2luY2VfdmVyc2lvbiwgb3Bfc2NoZW1hLmRvbWFp bgorLSAgICAgICAgKQorLSAgICAgICAgc2NoZW1hX2IgPSBvbm54LmRlZnMuZ2V0X3NjaGVtYShv cF9zY2hlbWEubmFtZSwgb3Bfc2NoZW1hLmRvbWFpbikKKy0KKy0gICAgICAgIGRlZiBmaWx0ZXJf c2NoZW1hKHNjaGVtYXMpOgorLSAgICAgICAgICAgIHJldHVybiBbb3AgZm9yIG9wIGluIHNjaGVt YXMgaWYgb3AubmFtZSA9PSBvcF9zY2hlbWEubmFtZV0KKy0KKy0gICAgICAgIHNjaGVtYV9jID0g ZmlsdGVyX3NjaGVtYShvbm54LmRlZnMuZ2V0X2FsbF9zY2hlbWFzKCkpCistICAgICAgICBzY2hl bWFfZCA9IGZpbHRlcl9zY2hlbWEob25ueC5kZWZzLmdldF9hbGxfc2NoZW1hc193aXRoX2hpc3Rv cnkoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNjaGVtYV9jKSwgMSkKKy0gICAg ICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNjaGVtYV9kKSwgMSkKKy0gICAgICAgICMgQXZvaWQg bWVtb3J5IHJlc2lkdWUgYW5kIGFjY2VzcyBzdG9yYWdlIGFzIG11Y2ggYXMgcG9zc2libGUKKy0g ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9hKSwgc3RyKG9wX3NjaGVtYSkpCist ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihzY2hlbWFfYiksIHN0cihvcF9zY2hlbWEpKQor LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoc2NoZW1hX2NbMF0pLCBzdHIob3Bfc2NoZW1h KSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNjaGVtYV9kWzBdKSwgc3RyKG9wX3Nj aGVtYSkpCistCistCisgaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICAgdW5pdHRlc3Qu bWFpbigpCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5IGIv b25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5CitpbmRleCBlZTIyYzhmZmIuLjg0OWFl MDQyYSAxMDA2NDQKKy0tLSBhL29ubngvdGVzdC9zaGFwZV9pbmZlcmVuY2VfdGVzdC5weQorKysr IGIvb25ueC90ZXN0L3NoYXBlX2luZmVyZW5jZV90ZXN0LnB5CitAQCAtMTIsNyArMTIsNiBAQCBm cm9tIHR5cGluZyBpbXBvcnQgVFlQRV9DSEVDS0lORywgQW55CisgaW1wb3J0IG51bXB5IGFzIG5w CisgaW1wb3J0IHB5dGVzdAorIGZyb20gZ29vZ2xlLnByb3RvYnVmIGltcG9ydCB0ZXh0X2Zvcm1h dAorLWZyb20gcGFyYW1ldGVyaXplZCBpbXBvcnQgcGFyYW1ldGVyaXplZAorIAorIGltcG9ydCBv bm54LnNoYXBlX2luZmVyZW5jZQorIGZyb20gb25ueCBpbXBvcnQgKAorQEAgLTI0NCw4NiArMjQz LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6 CisgICAgICAgICAgICAgZ3JhcGgsIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29y UHJvdG8uRkxPQVQsICgzMCwgNCwgNSkpXQorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikpCistICAgIGRlZiB0ZXN0 X3RyYW5zcG9zZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwg KDIsIDMsIDQpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0s IFsiWSJdLCBwZXJtPVsxLCAwLCAyXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29yUHJvdG8uRkxPQVQs ICgzLCAyLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQorLSAgICBkZWYg dGVzdF90cmFuc3Bvc2VfcHJlZXhpc3Rpbmcoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0g ICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVu c29yUHJvdG8uRkxPQVQsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRy YW5zcG9zZSIsIFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKKy0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLkZMT0FULCBOb25lKV0sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDMsIDIsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVs cGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQor LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiVHJhbnNwb3NlIikp CistICAgIGRlZiB0ZXN0X3RyYW5zcG9zZV9zY2FsYXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJY IiwgVGVuc29yUHJvdG8uRkxPQVQsICgpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiVHJh bnNwb3NlIiwgWyJYIl0sIFsiWSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCist CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9B VCwgKCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJUcmFuc3Bvc2UiKSkKKy0gICAgZGVmIHRlc3Rf dHJhbnNwb3NlX3BhcnRpYWwoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJYIiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCAzLCA0KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlRyYW5zcG9zZSIs IFsiWCJdLCBbIlkiXSwgcGVybT1bMSwgMCwgMl0pXSwKKy0gICAgICAgICAgICBbbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygiWSIsIFRlbnNvclByb3RvLlVOREVGSU5FRCwgKDMsICJhIiwgImIiKSld LAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVu c29yUHJvdG8uRkxPQVQsICgzLCAyLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlRyYW5zcG9z ZSIpKQorLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfcHJlZXhpc3RpbmdfaW5jb3JyZWN0X3NoYXBl KHNlbGYsICpfKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor LSAgICAgICAgICAgIFsoIlgiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMsIDQpKV0sCistICAg ICAgICAgICAgW21ha2Vfbm9kZSgiVHJhbnNwb3NlIiwgWyJYIl0sIFsiWSJdLCBwZXJtPVsxLCAw LCAyXSldLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJZIiwgVGVuc29y UHJvdG8uRkxPQVQsICg1LCA1LCA1KSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3Nl cnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVy cmVkLCBncmFwaCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlRyYW5zcG9zZSIpKQorLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfcHJlZXhpc3RpbmdfaW5j b3JyZWN0X3R5cGUoc2VsZiwgKl8pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWygiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywg NCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFuc3Bvc2UiLCBbIlgiXSwgWyJZIl0s IHBlcm09WzEsIDAsIDJdKV0sCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o IlkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgzLCAyLCA0KSldLAorLSAgICAgICAgKQorLSAgICAg ICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3Is IHNlbGYuX2luZmVycmVkLCBncmFwaCkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIlRyYW5zcG9zZSIpKQorLSAgICBkZWYgdGVzdF90cmFuc3Bvc2VfaW5j b3JyZWN0X3JlcGVhdGVkX3Blcm0oc2VsZiwgKl8pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygiWCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJUcmFuc3Bvc2UiLCBbIlgi XSwgWyJZIl0sIHBlcm09WzEsIDAsIDFdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAp CistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVu Y2VFcnJvciwgc2VsZi5faW5mZXJyZWQsIGdyYXBoKQorLQorICAgICBkZWYgX21ha2VfbWF0bXVs X3Rlc3RfYWxsX2RpbXNfa25vd24oCisgICAgICAgICBzZWxmLCB2ZXJzaW9uLCBzaGFwZTE6IFNl cXVlbmNlW2ludF0sIHNoYXBlMjogU2VxdWVuY2VbaW50XQorICAgICApIC0+IE5vbmU6CitAQCAt MzQyLDIxICsyNjEsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJl bmNlSGVscGVyKToKKyAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0 ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJNYXRNdWwiKSkKKy0gICAgZGVmIHRlc3Rf bWF0bXVsX2FsbF9kaW1zX2tub3duKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAg ICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgyLCksICgy LCkpCistCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZl cnNpb24sICg0LCAyKSwgKDIsIDQpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9h bGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMiksICgyLCA0KSkKKy0gICAgICAgIHNlbGYuX21h a2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDUsIDIpLCAoMiwgMSkpCist ICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICgx LCAyKSwgKDIsIDMpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxfZGltc19r bm93bih2ZXJzaW9uLCAoMiwpLCAoMiwgMykpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90 ZXN0X2FsbF9kaW1zX2tub3duKHZlcnNpb24sICg0LCAyKSwgKDIsKSkKKy0gICAgICAgIHNlbGYu X21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwgKDEsIDQsIDIpLCAoMywg MiwgMykpCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbF9kaW1zX2tub3duKHZl cnNpb24sICgzLCA0LCAyKSwgKDMsIDIsIDMpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxf dGVzdF9hbGxfZGltc19rbm93bih2ZXJzaW9uLCAoNSwgMSwgNCwgMiksICgxLCAzLCAyLCAzKSkK Ky0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsX2RpbXNfa25vd24odmVyc2lvbiwg KDQsIDIpLCAoMywgMiwgMykpCistCisgICAgIGRlZiBfbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191 bmtub3duKAorICAgICAgICAgc2VsZiwgdmVyc2lvbiwgc2hhcGUxOiBBbnksIHNoYXBlMjogQW55 LCBleHBlY3RlZF9vdXRfc2hhcGU6IEFueQorICAgICApIC0+IE5vbmU6CitAQCAtMzY3LDEzMTgg KzI3MSwzOSBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVs cGVyKToKKyAgICAgICAgICkKKyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKyAgICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIs IFRlbnNvclByb3RvLkZMT0FULCBleHBlY3RlZF9vdXRfc2hhcGUpXSwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s CistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJNYXRNdWwiKSkKKy0gICAgZGVmIHRlc3RfbWF0bXVsX2FsbG93X3Vua25vd24oc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxs b3dfdW5rbm93bih2ZXJzaW9uLCAoTm9uZSwpLCAoTm9uZSwpLCAoKSkKKy0gICAgICAgIHNlbGYu X21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCAoMywpLCAoTm9uZSwpLCAo KSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9u LCAoMiwpLCAoMiwgImEiKSwgKCJhIiwpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVz dF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCAyKSwgKDIsICJhIiksICg0LCAiYSIpKQorLSAg ICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCBO b25lKSwgKDIsICJhIiksICg0LCAiYSIpKQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVz dF9hbGxvd191bmtub3duKHZlcnNpb24sICg0LCBOb25lKSwgKE5vbmUsICJhIiksICg0LCAiYSIp KQorLSAgICAgICAgc2VsZi5fbWFrZV9tYXRtdWxfdGVzdF9hbGxvd191bmtub3duKAorLSAgICAg ICAgICAgIHZlcnNpb24sICgxLCA0LCAyKSwgKCJhIiwgMiwgNSksICgiYSIsIDQsIDUpCistICAg ICAgICApCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vua25vd24oCist ICAgICAgICAgICAgdmVyc2lvbiwgKDEsIDMsIDQsIDIpLCAoImEiLCAyLCA1KSwgKDEsIDMsIDQs IDUpCistICAgICAgICApCistICAgICAgICBzZWxmLl9tYWtlX21hdG11bF90ZXN0X2FsbG93X3Vu a25vd24odmVyc2lvbiwgKDMsKSwgTm9uZSwgTm9uZSkKKy0gICAgICAgIHNlbGYuX21ha2VfbWF0 bXVsX3Rlc3RfYWxsb3dfdW5rbm93bih2ZXJzaW9uLCBOb25lLCBOb25lLCBOb25lKQorLQorLSAg ICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ2FzdCIpKQorLSAgICBk ZWYgdGVzdF9jYXN0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJDYXN0IiwgWyJ4Il0sIFsi eSJdLCB0bz1UZW5zb3JQcm90by5VSU5UOCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAg KQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlO VDgsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtl X29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBh cmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNhc3QiKSkKKy0gICAgQHVuaXR0 ZXN0LnNraXAoCistICAgICAgICAiSXNzdWUgIzU5NjAiCistICAgICkgICMgRklYTUUoIzU5NjAp IHByb3BhZ2F0ZUVsZW1UeXBlRnJvbUF0dHJpYnV0ZVRvT3V0cHV0IGRvZXMgbm90IHZhbGlkYXRl IGFnYWluc3Qgb3V0cHV0IHR5cGUgY29uc3RyYWludHMKKy0gICAgZGVmIHRlc3RfY2FzdF90b19j b21wbGV4KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6ICAjIG5vcWE6IEFSRzAwMgorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDIsIDQsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ2FzdCIs IFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8uQ09NUExFWDEyOCldLAorLSAgICAgICAgICAg IFtdLAorLSAgICAgICAgKQorLQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFw ZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNhc3RMaWtlIikpCist ICAgIGRlZiB0ZXN0X2Nhc3RfbGlrZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDIsIDQsIDMpKSwgKCJ0IiwgVGVuc29yUHJvdG8uRkxPQVQxNiwgKCJOIiwp KV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ2FzdExpa2UiLCBbIngiLCAidCJdLCBbInki XSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQxNiwgKDIsIDQsIDMpKV0sCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiQml0Q2FzdCIpKQorLSAgICBkZWYgdGVzdF9iaXRjYXN0X3NhbWVfc2l6 ZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgIyBUZXN0IGJpdGNhc3QgYmV0 d2VlbiB0eXBlcyBvZiBzYW1lIHNpemUgKGZsb2F0MzIgLT4gaW50MzIpCistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZM T0FULCAoMiwgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJCaXRDYXN0IiwgWyJ4 Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90by5JTlQzMildLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uSU5UMzIsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkJpdENhc3QiKSkKKy0g ICAgZGVmIHRlc3RfYml0Y2FzdF9zY2FsYXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0g ICAgICAgICMgVGVzdCBiaXRjYXN0IHdpdGggc2NhbGFyIGlucHV0IChzYW1lIHNpemUpCistICAg ICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNv clByb3RvLkZMT0FULCAoKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkJpdENhc3QiLCBb IngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLklOVDMyKV0sCistICAgICAgICAgICAgW10sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5JTlQzMiwgKCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFr ZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBw YXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJCaXRDYXN0IikpCistICAgIGRl ZiB0ZXN0X2JpdGNhc3RfMWQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgICMg VGVzdCBiaXRjYXN0IHdpdGggMUQgdGVuc29yIChmbG9hdDMyIC0+IHVpbnQzMiwgc2FtZSBzaXpl KQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDgsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkJp dENhc3QiLCBbIngiXSwgWyJ5Il0sIHRvPVRlbnNvclByb3RvLlVJTlQzMildLAorLSAgICAgICAg ICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAg ICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5 IiwgVGVuc29yUHJvdG8uVUlOVDMyLCAoOCwpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAg KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQml0Q2Fz dCIpKQorLSAgICBkZWYgdGVzdF9iaXRjYXN0X2RvdWJsZV90b19pbnQ2NChzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgorLSAgICAgICAgIyBUZXN0IGJpdGNhc3QgYmV0d2VlbiA2NC1iaXQgdHlw ZXMgKGRvdWJsZSAtPiBpbnQ2NCkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoMywgNSkpXSwKKy0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJCaXRDYXN0IiwgWyJ4Il0sIFsieSJdLCB0bz1UZW5zb3JQcm90 by5JTlQ2NCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCA1KSldLAorLSAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFs bF92ZXJzaW9uc19mb3IoIkJpdENhc3QiKSkKKy0gICAgZGVmIHRlc3RfYml0Y2FzdF9pbnQ4X3Rv X3VpbnQ4KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICAjIFRlc3QgYml0Y2Fz dCBiZXR3ZWVuIDgtYml0IHR5cGVzIChpbnQ4IC0+IHVpbnQ4KQorLSAgICAgICAgZ3JhcGggPSBz ZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQ4LCAo NCwgNikpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJCaXRDYXN0IiwgWyJ4Il0sIFsieSJd LCB0bz1UZW5zb3JQcm90by5VSU5UOCldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQor LSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAg ICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgs ICg0LCA2KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkJpdENhc3QiKSkKKy0gICAgZGVmIHRlc3Rf Yml0Y2FzdF9mbG9hdDE2X3RvX2ludDE2KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAg ICAgICAjIFRlc3QgYml0Y2FzdCBiZXR3ZWVuIDE2LWJpdCB0eXBlcyAoZmxvYXQxNiAtPiBpbnQx NikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4 IiwgVGVuc29yUHJvdG8uRkxPQVQxNiwgKDIsIDMpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9k ZSgiQml0Q2FzdCIsIFsieCJdLCBbInkiXSwgdG89VGVuc29yUHJvdG8uSU5UMTYpXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK Ky0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLklOVDE2LCAoMiwgMykpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJD b2wySW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6 CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICAoImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1LCA1KSksCist ICAgICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkp LAorLSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAo MiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJbSIsIFsiaW5wdXQiLCAib3V0 cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLCBbIm91dHB1dCJdCistICAgICAgICAgICAgICAg ICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRp YWxpemVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1dF9zaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpLCAoNSwgNSkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgxLCA1KSksCist ICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxLCA1LCA1KSldLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIkNvbDJJbSIpKQorLSAgICBkZWYgdGVzdF9jb2wyaW1fc3RyaWRlcyhzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclByb3Rv LkZMT0FULCAoMSwgOSwgNCkpLAorLSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFwZSIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICAgICAgKCJrZXJuZWxfc2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJD b2wySW0iLAorLSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCIsICJvdXRwdXRfc2hhcGUiLCAi a2VybmVsX3NoYXBlIl0sCistICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAorLSAgICAg ICAgICAgICAgICAgICAgc3RyaWRlcz1bMiwgMl0sCistICAgICAgICAgICAgICAgICkKKy0gICAg ICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVsK Ky0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3Rv LklOVDY0LCAoMiwpLCAoNSwgNSkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigia2Vy bmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgzLCAzKSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0 cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAxLCA1LCA1KSldLAorLSAgICAgICAgICAgIG9w c2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwK Ky0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkNvbDJJbSIpKQorLSAgICBkZWYgdGVzdF9jb2wyaW1fcGFkcyhzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwg NSwgMTUpKSwKKy0gICAgICAgICAgICAgICAgKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDIsKSksCistICAgICAgICAgICAgICAgICgia2VybmVsX3NoYXBlIiwgVGVuc29yUHJv dG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29sMkltIiwKKy0g ICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAib3V0cHV0X3NoYXBlIiwgImtlcm5lbF9zaGFw ZSJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJvdXRwdXQiXSwKKy0gICAgICAgICAgICAgICAg ICAgIHBhZHM9WzAsIDEsIDAsIDFdLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yKCJvdXRwdXRfc2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDIsKSwgKDUsIDUpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoImtlcm5lbF9zaGFw ZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoMSwgNSkpLAorLSAgICAgICAgICAgIF0sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRl bnNvclByb3RvLkZMT0FULCAoMSwgMSwgNSwgNSkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAg ICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJDb2wy SW0iKSkKKy0gICAgZGVmIHRlc3RfY29sMmltX2RpbGF0aW9ucyhzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNCwg NSkpLAorLSAgICAgICAgICAgICAgICAoIm91dHB1dF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0 LCAoMiwpKSwKKy0gICAgICAgICAgICAgICAgKCJrZXJuZWxfc2hhcGUiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb2wySW0iLAorLSAgICAg ICAgICAgICAgICAgICAgWyJpbnB1dCIsICJvdXRwdXRfc2hhcGUiLCAia2VybmVsX3NoYXBlIl0s CistICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAg ZGlsYXRpb25zPVsxLCA1XSwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcigib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCks ICg2LCA2KSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJrZXJuZWxfc2hhcGUiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDIsIDIpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAg ICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBo LAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJvdXRwdXQiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDEsIDEsIDYsIDYpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQor LQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29sMkltIikp CistICAgIGRlZiB0ZXN0X2NvbDJpbV81ZChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgMTAsIDEyKSksCistICAg ICAgICAgICAgICAgICgib3V0cHV0X3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpLAor LSAgICAgICAgICAgICAgICAoImtlcm5lbF9zaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywp KSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFr ZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbDJJbSIsIFsiaW5wdXQiLCAib3V0cHV0 X3NoYXBlIiwgImtlcm5lbF9zaGFwZSJdLCBbIm91dHB1dCJdCistICAgICAgICAgICAgICAgICkK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxp emVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm91dHB1dF9zaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoMywpLCAoMywgNCwgNSkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3Rl bnNvcigia2VybmVsX3NoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgxLCAxLCA1KSks CistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZl cnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyLCAzLCA0LCA1KSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIpKQorLSAgICBkZWYgdGVzdF9jb25jYXQoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSksICgieSIs IFRlbnNvclByb3RvLkZMT0FULCAoNywgNCwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2Rl KCJDb25jYXQiLCBbIngiLCAieSJdLCBbInoiXSwgYXhpcz0wKV0sCistICAgICAgICAgICAgW10s CistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInoiLCBUZW5z b3JQcm90by5GTE9BVCwgKDksIDQsIDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQor LQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiQ29uY2F0Iikp CistICAgIGRlZiB0ZXN0X2NvbmNhdF9taXNzaW5nX3NoYXBlKHNlbGYsICpfKSAtPiBOb25lOgor LSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSksCistICAgICAg ICAgICAgICAgICJ5IiwKKy0gICAgICAgICAgICAgICAgKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQs IChOb25lLCBOb25lLCBOb25lKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJDb25jYXQiLCBbIngiLCAieSIsICJ6Il0sIFsib3V0Il0sIGF4aXM9MCldLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMob25u eC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJyb3IsIHNlbGYuX2luZmVycmVkLCBncmFwaCkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIp KQorLSAgICBkZWYgdGVzdF9jb25jYXRfM2RfYXhpc18yKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5v bmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMiwgMikpLCAoInkiLCBUZW5zb3JQcm90by5GTE9B VCwgKDIsIDIsIDIpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4Iiwg InkiXSwgWyJ6Il0sIGF4aXM9MildLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAg ICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICgy LCAyLCA0KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkNvbmNhdCIpKQorLSAgICBkZWYgdGVzdF9j b25jYXRfcGFyYW0oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgiYSIsIDIpKSwgKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiYSIsIDMpKV0sCistICAgICAg ICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4IiwgInkiXSwgWyJ6Il0sIGF4aXM9MSldLAor LSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1 ZV9pbmZvKCJ6IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiYSIsIDUpKV0sCistICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiQ29uY2F0IikpCistICAgIGRlZiB0ZXN0X2NvbmNhdF9wYXJhbV9zaW5nbGVfaW5wdXQo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgiYSIsIDIpKV0s CistICAgICAgICAgICAgW21ha2Vfbm9kZSgiQ29uY2F0IiwgWyJ4Il0sIFsieiJdLCBheGlzPTAp XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCAoImEiLCAyKSldLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNp b24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJz aW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaGFwZV9keW5hbWljX3NoYXBl X2tub3duX3Jhbmsoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tp cElmKHZlcnNpb24gPCAxNCwgIlJhbmsgaW5mZXJlbmNlIGlzIGFkZGVkIGZyb20gVmVyc2lvbiAx NCIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygi eCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8u SU5UNjQsICgyLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4Iiwg InNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgKE5vbmUs IE5vbmUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRp ZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaGFwZSIpKQorLSAgICBkZWYgdGVzdF9y ZXNoYXBlX2R5bmFtaWNfc2hhcGVfc3ltYm9saWMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKCJNIiwpKV0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJz aGFwZSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsIE5vbmUpXSwK Ky0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRlZiB0ZXN0X3Jlc2hhcGVfZHlu YW1pY191bmtub3duX3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3Rv LlVJTlQ4LCAoMiwgNCwgMykpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsIE5vbmUpXSwK Ky0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNoYXBlIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJd KV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5VSU5UOCwgTm9uZSldLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24p XSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9u c19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hhcGUoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSksICgi c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAorLSAgICAgICAgICAgIFttYWtlX25v ZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwK Ky0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJv dG8uSU5UNjQsICgyLCksICgzLCA4KSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgzLCA4KSldLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hh cGVfaW5mZXJyZWQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgs ICgyLCA0LCAzKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAorLSAgICAg ICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0g ICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInNo YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgwLCAzLCAtMSkpXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4 LCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNoYXBlIikpCistICAgIGRlZiB0 ZXN0X3Jlc2hhcGVfc3RhdGljX3NoYXBlX3plcm8oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uVUlOVDgsICgxLCAxLCAxKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDMsKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hh cGUiXSwgWyJ5Il0pXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXpl cj1bbWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgwLCAxLCAx KSldLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg VGVuc29yUHJvdG8uVUlOVDgsICgxLCAxLCAxKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAg ICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hh cGUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hhcGVfYWxsb3d6ZXJvKHNlbGYs IF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTQs ICJhbGxvd3plcm8gaXMgYWRkZWQgZnJvbSBWZXJzaW9uIDE0IikKKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIs IFRlbnNvclByb3RvLlVJTlQ4LCAoMSwgMCwgMCkpLAorLSAgICAgICAgICAgICAgICAoInNoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAg ICAgW21ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBbInkiXSwgYWxsb3d6ZXJv PTEpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90 ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCksICgwLCAxLCAxKSldLAorLSAg ICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJv dG8uVUlOVDgsICgwLCAxLCAxKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBl ci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2hhcGUiKSkKKy0g ICAgZGVmIHRlc3RfcmVzaGFwZV9zdGF0aWNfc2hhcGVfY29uc3RhbnQoc2VsZiwgXywgdmVyc2lv bikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uVUlOVDgsICgyLCA0LCAzKSldLAorLSAgICAgICAgICAg IFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNv bnN0YW50IiwKKy0gICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAg WyJzaGFwZSJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCksICgzLCA4KSksCistICAgICAgICAgICAgICAgICks CistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiUmVzaGFwZSIsIFsieCIsICJzaGFwZSJdLCBb InkiXSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAg ICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBl IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uVUlOVDgsICgzLCA4KSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJVcHNhbXBsZSIpKQorLSAgICBkZWYgdGVzdF91cHNh bXBsZShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgaWYgdmVyc2lvbiA9PSA3 OgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAg ICAgWygieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpXSwKKy0gICAgICAgICAg ICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiXSwgWyJ5Il0sIHNjYWxlcz1bMS4wLCAx LjEsIDEuMywgMS45XSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICApCist ICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAgICBncmFw aCwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAg ICAgICApCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgKCJ4IiwgVGVu c29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICAgICAoInNj YWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgXSwKKy0g ICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiVXBzYW1wbGUiLCBbIngiLCAic2NhbGVzIl0sIFsi eSJdKV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICBpbml0aWFsaXpl cj1bCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJv dG8uRkxPQVQsICg0LCksICgxLjAsIDEuMSwgMS4zLCAxLjkpKQorLSAgICAgICAgICAgICAgICBd LAorLSAgICAgICAgICAgICkKKy0KKy0gICAgICAgICAgICBkZWYgY2FsbF9pbmZlcmVuY2UoKToK Ky0gICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKKy0gICAgICAgICAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICAgICAgICAgKQorLQorLSAgICAgICAgICAgIGlmIHZlcnNpb24g PT0gOToKKy0gICAgICAgICAgICAgICAgY2FsbF9pbmZlcmVuY2UoKQorLSAgICAgICAgICAgIGVs c2U6CistICAgICAgICAgICAgICAgICMgVXBzYW1wbGUgaXMgZGVwcmVjYXRlZCBzaW5jZSBWZXJz aW9uIDEwLgorLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguY2hl Y2tlci5WYWxpZGF0aW9uRXJyb3IpIGFzIGNtOgorLSAgICAgICAgICAgICAgICAgICAgY2FsbF9p bmZlcmVuY2UoKQorLSAgICAgICAgICAgICAgICBleGNlcHRpb24gPSBjbS5leGNlcHRpb24KKy0g ICAgICAgICAgICAgICAgYXNzZXJ0ICJVcHNhbXBsZSBpcyBkZXByZWNhdGVkIiBpbiBzdHIoZXhj ZXB0aW9uKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi VXBzYW1wbGUiKSkKKy0gICAgZGVmIHRlc3RfdXBzYW1wbGVfcmF3X2RhdGEoc2VsZiwgXywgdmVy c2lvbikgLT4gTm9uZToKKy0gICAgICAgIGlmIHZlcnNpb24gPT0gNzoKKy0gICAgICAgICAgICBn cmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDEsIDMsIDQsIDUpKV0sCistICAgICAgICAgICAgICAgIFttYWtlX25vZGUo IlVwc2FtcGxlIiwgWyJ4Il0sIFsieSJdLCBzY2FsZXM9WzIuMCwgMS4xLCAyLjMsIDEuOV0pXSwK Ky0gICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgKQorLSAgICAgICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg ICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCAz LCA5LCA5KSldLAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAgICAgKQorLSAgICAgICAg ZWxzZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAo MiwgNCwgMywgNSkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFtt YWtlX25vZGUoIlVwc2FtcGxlIiwgWyJ4IiwgInNjYWxlcyJdLCBbInkiXSldLAorLSAgICAgICAg ICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgInNjYWxlcyIs CistICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAg ICAgICAgICAgICAgICAgKDQsKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFy cmF5KFsxLjAsIDEuMSwgMS4zLCAxLjldLCBkdHlwZT0iPGY0IikudG9ieXRlcygpLAorLSAgICAg ICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAgICAgICAgICAgICAgKQorLSAg ICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICkgICMgRmVlZCByYXcgYnl0ZXMgKGZvcmNl IGxpdHRsZSBlbmRpYW4gb3JkZXJpbmcgbGlrZSBvbm54IHN0YW5kYXJkKSBmb3IgdGVzdCBwdXJw b3NlCistCistICAgICAgICAgICAgZGVmIGNhbGxfaW5mZXJlbmNlKCk6CistICAgICAgICAgICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAgICAgICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICAgICAgICAgICkKKy0KKy0gICAgICAgICAgICBpZiB2ZXJzaW9uID09IDk6CistICAgICAg ICAgICAgICAgIGNhbGxfaW5mZXJlbmNlKCkKKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAg ICAgICAgICAjIFVwc2FtcGxlIGlzIGRlcHJlY2F0ZWQgc2luY2UgVmVyc2lvbiAxMC4KKy0gICAg ICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlv bkVycm9yKSBhcyBjbToKKy0gICAgICAgICAgICAgICAgICAgIGNhbGxfaW5mZXJlbmNlKCkKKy0g ICAgICAgICAgICAgICAgZXhjZXB0aW9uID0gY20uZXhjZXB0aW9uCistICAgICAgICAgICAgICAg IGFzc2VydCAiVXBzYW1wbGUgaXMgZGVwcmVjYXRlZCIgaW4gc3RyKGV4Y2VwdGlvbikKKy0KKy0g ICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIkV4cGFuZCIpKQorLSAg ICBkZWYgdGVzdF9leHBhbmQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u SU5UMzIsICgzLCAxKSksICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAorLSAg ICAgICAgICAgIFttYWtlX25vZGUoIkV4cGFuZCIsIFsieCIsICJzaGFwZSJdLCBbInkiXSldLAor LSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigi c2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSwgKDIsIDEsIDYpKV0sCistICAgICAgICAp CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQz MiwgKDIsIDMsIDYpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiRXhwYW5kIikpCistICAgIGRlZiB0 ZXN0X2V4cGFuZF9zY2FsYXJfaW5wdXQoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uSU5UMzIsICgpKSwgKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKV0sCist ICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0s CistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29y KCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNCwgOCkpXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMy LCAoNCwgOCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNl dGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0 ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQiKSkKKy0gICAgZGVmIHRlc3Rf ZXhwYW5kX3Jhd19kYXRhKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLklO VDMyLCAoMywgMSkpLCAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKKy0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJFeHBhbmQiLCBbIngiLCAic2hhcGUiXSwgWyJ5Il0pXSwKKy0g ICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bCistICAgICAgICAgICAg ICAgIG1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgInNoYXBlIiwKKy0gICAgICAg ICAgICAgICAgICAgIFRlbnNvclByb3RvLklOVDY0LAorLSAgICAgICAgICAgICAgICAgICAgKDIs KSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHM9bnAuYXJyYXkoWzMsIDRdLCBkdHlwZT0iPGk4 IikudG9ieXRlcygpLAorLSAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUsCistICAgICAgICAg ICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKSAgIyBGZWVkIHJhdyBieXRlcyAo Zm9yY2UgbGl0dGxlIGVuZGlhbiBvcmRlcmluZyBsaWtlIG9ubnggc3RhbmRhcmQpIGZvciB0ZXN0 IHB1cnBvc2UKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBn cmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclBy b3RvLklOVDMyLCAoMywgNCkpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIu bWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAg IEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJFeHBhbmQiKSkKKy0gICAg ZGVmIHRlc3RfZXhwYW5kX2R5bmFtaWNfc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwgMiwgTm9uZSkpLAorLSAg ICAgICAgICAgICAgICAoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiRXhwYW5kIiwgWyJ4IiwgInNoYXBl Il0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9 W10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5JTlQzMiwgKE5vbmUsIDIsIE5vbmUpKV0sCistICAgICAgICAgICAgb3BzZXRf aW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAg ICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zvcigi RXhwYW5kIikpCistICAgIGRlZiB0ZXN0X2V4cGFuZF9zeW1ib2xpY19zaGFwZShzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgx LCAyLCBOb25lKSksCistICAgICAgICAgICAgICAgICgic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKCJ1bmtfXzAiLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9k ZSgiRXhwYW5kIiwgWyJ4IiwgInNoYXBlIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCist ICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W10sCistICAgICAgICApCistICAgICAgICAjIGlmIGdp dmluZyBhIHN5bWJvbGljIHNoYXBlLCBFeHBhbmQgc2hvdWxkIG5vdCBpbmZlciBhbnkgc2hhcGUg b3IgcmFuayBpbmZlcmVuY2UKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLklOVDMyLCBOb25lKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b aGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQor LQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikp CistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6Cist ICAgICAgICBpZiB2ZXJzaW9uID09IDEwOgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICAgICAo InNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAgXSwK Ky0gICAgICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4IiwgInNjYWxlcyJdLCBb InkiXSldLAorLSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgaW5pdGlhbGl6 ZXI9WworLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNjYWxlcyIsIFRlbnNvclBy b3RvLkZMT0FULCAoNCwpLCAoMS4wLCAxLjEsIDEuMywgMS45KSkKKy0gICAgICAgICAgICAgICAg XSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAor LSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0sCistICAgICAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCistICAgICAgICBlbGlmIHZlcnNpb24gPT0gMTE6 CistICAgICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAg ICBbCistICAgICAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQs IDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg4LCkpLAorLSAgICAgICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9B VCwgKDQsKSksCistICAgICAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5U NjQsICg0LCkpLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbbWFrZV9u b2RlKCJSZXNpemUiLCBbIngiLCAicm9pIiwgInNjYWxlcyIsICJzaXplcyJdLCBbInkiXSldLAor LSAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAg ICAgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQs ICg0LCksICgzLCA1LCA2LCA3KSkKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAp CistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgICAgICBn cmFwaCwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5JTlQzMiwgKDMsIDUsIDYsIDcpKV0sCistICAgICAgICAgICAgICAgIG9wc2V0X2lt cG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAg ICAgICAgICApCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAgICAgKCJ4Iiwg VGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICAgICAo InJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwpKSwKKy0gICAgICAgICAgICAgICAgICAgICgi c2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSksCistICAgICAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAiIiwgInNp emVzIl0sIFsieSJdKV0sCistICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICBp bml0aWFsaXplcj1bCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigic2l6ZXMiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDQsKSwgKDMsIDUsIDYsIDcpKQorLSAgICAgICAgICAgICAgICBd LAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMywgNSwgNiwgNykpXSwKKy0gICAgICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIlJNU05vcm1hbGl6YXRpb24iKSkKKy0gICAgZGVmIHRlc3Rfcm1z X25vcm1hbGl6YXRpb24oc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgi WCIsIFRlbnNvclByb3RvLkZMT0FULCAoIk4iLCAiQyIsICJIIiwgIlciKSksCistICAgICAgICAg ICAgICAgICgic2NhbGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJIIiwgIlciKSksCistICAgICAg ICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSTVNOb3JtYWxpemF0aW9uIiwgWyJY IiwgInNjYWxlIl0sIFsieSJdLCBheGlzPTIpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAg ICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwK Ky0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZM T0FULCAoIk4iLCAiQyIsICJIIiwgIlciKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9 W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkK Ky0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIp KQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2l6ZV9heGVzXzJfMyhzZWxmLCBfLCB2ZXJzaW9uKSAt PiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE4LCAiYXhlcyBpcyBmcm9t IFZlcnNpb24gMTgiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0 LCAzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0 LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkp LAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiUmVzaXplIiwgWyJ4 IiwgInJvaSIsICIiLCAic2l6ZXMiXSwgWyJ5Il0sIGF4ZXM9KDIsIDMpKV0sCistICAgICAgICAg ICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRl bnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNykpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNl bGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBb bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgNiwg NykpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9O TlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVk LmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXpl X3NpemVfYXhlc18zXzIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYu c2tpcElmKHZlcnNpb24gPCAxOCwgImF4ZXMgaXMgZnJvbSBWZXJzaW9uIDE4IikKKy0gICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAg ICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgNSkpLAorLSAgICAgICAgICAg ICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAgICAg KCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAg ICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0s IFsieSJdLCBheGVzPSgzLCAyKSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGlu aXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwg KDYsIDcpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDcsIDYpKV0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2Zv cigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zaXplX25vdF9sYXJnZXIoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAgICAgICAgICAg IHZlcnNpb24gPCAxOCwKKy0gICAgICAgICAgICAia2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5IGlz IGZyb20gVmVyc2lvbiAxOCIsCistICAgICAgICApCistICAgICAgICBncmFwaCA9IHNlbGYuX21h a2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQ cm90by5JTlQzMiwgKDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5J TlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJSZXNpemUiLAorLSAgICAg ICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwKKy0gICAgICAgICAgICAg ICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAga2VlcF9hc3BlY3RfcmF0aW9fcG9s aWN5PSJub3RfbGFyZ2VyIiwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJz aXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwpLCAoNiwgNikpXSwKKy0gICAgICAgICkKKy0g ICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAg ICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAo NCwgNikpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVz aXplX3NpemVfYXhlc18yXzNfbm90X2xhcmdlcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgor LSAgICAgICAgc2VsZi5za2lwSWYoCistICAgICAgICAgICAgdmVyc2lvbiA8IDE4LAorLSAgICAg ICAgICAgICJheGVzICYga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5IGFyZSBmcm9tIFZlcnNpb24g MTgiLAorLSAgICAgICAgKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAg ICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgy LCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQs ICg0LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgy LCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBt YWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiUmVzaXplIiwKKy0gICAgICAgICAgICAg ICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sCistICAgICAgICAgICAgICAgICAgICBb InkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGF4ZXM9KDIsIDMpLAorLSAgICAgICAgICAgICAg ICAgICAga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5PSJub3RfbGFyZ2VyIiwKKy0gICAgICAgICAg ICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAg aW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwp LCAoNiwgNikpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK Ky0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgNCwgNikpXSwKKy0gICAgICAgICAgICBv cHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0s CistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNf Zm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NpemVfbm90X3NtYWxsZXIoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAgICAgICAg ICAgIHZlcnNpb24gPCAxOCwKKy0gICAgICAgICAgICAia2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5 IGlzIGZyb20gVmVyc2lvbiAxOCIsCistICAgICAgICApCistICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5z b3JQcm90by5JTlQzMiwgKDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDQsKSksCistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJSZXNpemUiLAorLSAg ICAgICAgICAgICAgICAgICAgWyJ4IiwgInJvaSIsICIiLCAic2l6ZXMiXSwKKy0gICAgICAgICAg ICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAga2VlcF9hc3BlY3RfcmF0aW9f cG9saWN5PSJub3Rfc21hbGxlciIsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNv cigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSwgKDYsIDYpKV0sCistICAgICAgICAp CistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCist ICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQz MiwgKDYsIDEwKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29w c2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVz dF9yZXNpemVfc2l6ZV9heGVzXzJfM19ub3Rfc21hbGxlcihzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCistICAgICAgICAgICAgdmVyc2lvbiA8IDE4LAor LSAgICAgICAgICAgICJheGVzICYga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5IGFyZSBmcm9tIFZl cnNpb24gMTgiLAorLSAgICAgICAgKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBo KAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5U MzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8u RkxPQVQsICg0LCkpLAorLSAgICAgICAgICAgICAgICAoInNpemVzIiwgVGVuc29yUHJvdG8uSU5U NjQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiUmVzaXplIiwKKy0gICAgICAg ICAgICAgICAgICAgIFsieCIsICJyb2kiLCAiIiwgInNpemVzIl0sCistICAgICAgICAgICAgICAg ICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGF4ZXM9KDIsIDMpLAorLSAgICAgICAg ICAgICAgICAgICAga2VlcF9hc3BlY3RfcmF0aW9fcG9saWN5PSJub3Rfc21hbGxlciIsCistICAg ICAgICAgICAgICAgICkKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAg ICAgICAgIGluaXRpYWxpemVyPVttYWtlX3RlbnNvcigic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKDIsKSwgKDYsIDYpKV0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDYsIDEwKSldLAorLSAgICAg ICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZl cnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92 ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBkZWYgdGVzdF9yZXNpemVfc2NhbGUoc2VsZiwg XywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxMSwg InJvaSBpbnB1dCBpcyBmcm9tIFZlcnNpb24gMTEiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29y UHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVu c29yUHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNv clByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtl X25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIl0sIFsieSJdKV0sCistICAgICAg ICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICBt YWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCksICgxLjAsIDEuMSwg MS4zLCAxLjkpKQorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQzMiwgKDIsIDQsIDMsIDkpKV0s CistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RP TUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBh bmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVzaXplIikpCistICAgIGRlZiB0ZXN0X3Jlc2l6ZV9zY2Fs ZV9heGVzXzJfMyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lw SWYodmVyc2lvbiA8IDE4LCAiYXhlcyBpcyBmcm9tIFZlcnNpb24gMTgiKQorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg KCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgyLCA0LCAzLCA1KSksCistICAgICAgICAgICAgICAg ICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAgICAgICAoInNj YWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAg ICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIl0sIFsieSJd LCBheGVzPSgyLCAzKSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgIGluaXRpYWxp emVyPVttYWtlX3RlbnNvcigic2NhbGVzIiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCksICgxLjMs IDEuOSkpXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0g ICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi eSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgNCwgMywgOSkpXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NjYWxlX2F4ZXNfM18yKHNlbGYsIF8s IHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBzZWxmLnNraXBJZih2ZXJzaW9uIDwgMTgsICJh eGVzIGlzIGZyb20gVmVyc2lvbiAxOCIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5zb3JQcm90by5J TlQzMiwgKDIsIDQsIDMsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJyb2kiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDgsKSksCistICAgICAgICAgICAgICAgICgic2NhbGVzIiwgVGVuc29yUHJvdG8u RkxPQVQsICgyLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgi UmVzaXplIiwgWyJ4IiwgInJvaSIsICJzY2FsZXMiXSwgWyJ5Il0sIGF4ZXM9KDMsIDIpKV0sCist ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W21ha2VfdGVuc29yKCJz Y2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsKSwgKDEuOSwgMS4zKSldLAorLSAgICAgICAg KQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAor LSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5U MzIsICgyLCA0LCAzLCA5KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlc2l6ZSIpKQorLSAgICBk ZWYgdGVzdF9yZXNpemVfc2NhbGVfcmF3X2RhdGEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxMSwgInJvaSBpbnB1dCBpcyBmcm9tIFZl cnNpb24gMTEiKQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgxLCAzLCA0 LCA1KSksCistICAgICAgICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkp LAorLSAgICAgICAgICAgICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIs ICJyb2kiLCAic2NhbGVzIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAg ICAgaW5pdGlhbGl6ZXI9WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKKy0gICAgICAg ICAgICAgICAgICAgICJzY2FsZXMiLAorLSAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8u RkxPQVQsCistICAgICAgICAgICAgICAgICAgICAoNCwpLAorLSAgICAgICAgICAgICAgICAgICAg dmFscz1ucC5hcnJheShbMi4wLCAxLjEsIDIuMywgMS45XSwgZHR5cGU9IjxmNCIpLnRvYnl0ZXMo KSwKKy0gICAgICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAgICAgICAgICApCist ICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVf aW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgMywgOSwgOSkpXSwKKy0gICAgICAgICAg ICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9u KV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lv bnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX3NjYWxlX2FuZF9zaXplX2J1 dF9vbmVfaXNfZW1wdHkoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYu c2tpcElmKHZlcnNpb24gPCAxMSwgInJvaSBpbnB1dCBpcyBmcm9tIFZlcnNpb24gMTEiKQorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uSU5UMzIsICgxLCAzLCA0LCA1KSksCistICAgICAg ICAgICAgICAgICgicm9pIiwgVGVuc29yUHJvdG8uRkxPQVQsICg4LCkpLAorLSAgICAgICAgICAg ICAgICAoInNjYWxlcyIsIFRlbnNvclByb3RvLkZMT0FULCAoNCwpKSwKKy0gICAgICAgICAgICAg ICAgKCJzaXplcyIsIFRlbnNvclByb3RvLklOVDY0LCAoMCwpKSwKKy0gICAgICAgICAgICBdLAor LSAgICAgICAgICAgIFttYWtlX25vZGUoIlJlc2l6ZSIsIFsieCIsICJyb2kiLCAic2NhbGVzIiwg InNpemVzIl0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgaW5pdGlh bGl6ZXI9WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAg ICAgICJzY2FsZXMiLAorLSAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCist ICAgICAgICAgICAgICAgICAgICAoNCwpLAorLSAgICAgICAgICAgICAgICAgICAgdmFscz1ucC5h cnJheShbMi4wLCAxLjEsIDIuMywgMS45XSwgZHR5cGU9IjxmNCIpLnRvYnl0ZXMoKSwKKy0gICAg ICAgICAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAg ICAgICAgICBtYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICJzaXplcyIsCistICAg ICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ2NCwKKy0gICAgICAgICAgICAgICAgICAg ICgwLCksCistICAgICAgICAgICAgICAgICAgICB2YWxzPW5wLmFycmF5KFtdLCBkdHlwZT0iPGk4 IikudG9ieXRlcygpLAorLSAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUsCistICAgICAgICAg ICAgICAgICksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fz c2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90 ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwgMywgOSwgOSkpXSwK Ky0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9N QUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFu ZChhbGxfdmVyc2lvbnNfZm9yKCJSZXNpemUiKSkKKy0gICAgZGVmIHRlc3RfcmVzaXplX29wc2V0 MTFfc2NhbGVzX2lzX2VtcHR5KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBz ZWxmLnNraXBJZih2ZXJzaW9uICE9IDExLCAiVGhpcyB0ZXN0IG9ubHkgd29ya3MgZm9yIFZlcnNp b24gMTEiKQorLSAgICAgICAgIyAic2NhbGVzIiBpbnB1dCBpbiBSZXNpemUgaW4gb3BzZXQxMSBp cyBub3Qgb3B0aW9uYWwuIEl0IG11c3QgYmUgYW4gZW1wdHkgdGVuc29yCistICAgICAgICAjIGlm IHNpemVzIGlzIG5lZWRlZC4gU2hhcGUgaW5mZXJlbmNlIGZvciBSZXNpemUgc2hhbGwgaGFuZGxl IHRoaXMgY2FzZS4KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLklOVDMyLCAoMSwgMywg NCwgNSkpLAorLSAgICAgICAgICAgICAgICAoInJvaSIsIFRlbnNvclByb3RvLkZMT0FULCAoOCwp KSwKKy0gICAgICAgICAgICAgICAgKCJzY2FsZXMiLCBUZW5zb3JQcm90by5GTE9BVCwgKDAsKSks CistICAgICAgICAgICAgICAgICgic2l6ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSksCist ICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJSZXNpemUiLCBbIngiLCAi cm9pIiwgInNjYWxlcyIsICJzaXplcyJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoCist ICAgICAgICAgICAgICAgICAgICAic2l6ZXMiLAorLSAgICAgICAgICAgICAgICAgICAgVGVuc29y UHJvdG8uSU5UNjQsCistICAgICAgICAgICAgICAgICAgICAoNCwpLAorLSAgICAgICAgICAgICAg ICAgICAgdmFscz1ucC5hcnJheSgKKy0gICAgICAgICAgICAgICAgICAgICAgICBbMiwgNiwgOCwg MTBdLCBkdHlwZT0iPGk4IgorLSAgICAgICAgICAgICAgICAgICAgKS50b2J5dGVzKCksICAjIGRv dWJsZSBpbiBhbGwgZGltZW5zaW9ucworLSAgICAgICAgICAgICAgICAgICAgcmF3PVRydWUsCist ICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDMyLCAoMiwg NiwgOCwgMTApKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3Bz ZXRpZCgiIiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5l eHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2hhcGUiKSkKKy0gICAgZGVmIHRlc3Rfc2hhcGUoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAor LSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0sIFsieSJdKV0sCistICAgICAg ICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8o InkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDMsKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9y dHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAg ICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlNoYXBl IikpCistICAgIGRlZiB0ZXN0X3NoYXBlX3N0YXJ0XzEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9u ZToKKy0gICAgICAgIHNlbGYuc2tpcElmKHZlcnNpb24gPCAxNSwgInN0YXJ0IGFuZCBlbmQgYXJl IGZyb20gVmVyc2lvbiAxNSIpCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCist ICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwKKy0gICAg ICAgICAgICBbbWFrZV9ub2RlKCJTaGFwZSIsIFsieCJdLCBbInkiXSwgc3RhcnQ9MSldLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCkpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJT aGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFwZV9lbmRfMShzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE1LCAic3RhcnQgYW5kIGVuZCBh cmUgZnJvbSBWZXJzaW9uIDE1IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAzKSldLAorLSAg ICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0sIFsieSJdLCBlbmQ9MSldLAorLSAg ICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVk KAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCkpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJT aGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFwZV9uZWdhdGl2ZV9zdGFydChzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE1LCAic3RhcnQg YW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0LCAz KSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0sIFsieSJdLCBzdGFy dD0tMSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCkpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFwZV9jbGlwMShzZWxmLCBfLCB2 ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE1LCAic3Rh cnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKKy0gICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA0 LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0sIFsieSJdLCBz dGFydD0tNSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgzLCkpXSwKKy0gICAg ICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2 ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxf dmVyc2lvbnNfZm9yKCJTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9zaGFwZV9jbGlwMihzZWxmLCBf LCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDE1LCAi c3RhcnQgYW5kIGVuZCBhcmUgZnJvbSBWZXJzaW9uIDE1IikKKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgy LCA0LCAzKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNoYXBlIiwgWyJ4Il0sIFsieSJd LCBlbmQ9MTApXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYu X2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0LCAoMywpKV0sCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiU2l6ZSIpKQorLSAgICBkZWYgdGVzdF9zaXplKHNlbGYsIF8sIHZlcnNp b24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAg ICAgICAgWygieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgNCwgMykpXSwgW21ha2Vfbm9kZSgi U2l6ZSIsIFsieCJdLCBbInkiXSldLCBbXQorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNz ZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3Rl bnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKV0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNp b25zX2ZvcigiR2F0aGVyIikpCistICAgIGRlZiB0ZXN0X2dhdGhlcihzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDMpKSwgKCJpIiwgVGVuc29yUHJvdG8u SU5UNjQsICgyLCkpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJHYXRoZXIiLCBbIngiLCAi aSJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2Vs Zi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5k KGFsbF92ZXJzaW9uc19mb3IoIkdhdGhlciIpKQorLSAgICBkZWYgdGVzdF9nYXRoZXJfYXhpczEo c2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICg0LCAzLCA1KSks ICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMSwgMikpXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJHYXRoZXIiLCBbIngiLCAiaSJdLCBbInkiXSwgYXhpcz0xKV0sCistICAgICAgICAgICAg W10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAg ICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKDQsIDEsIDIsIDUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1w b3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAg ICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiR2F0 aGVyIikpCistICAgIGRlZiB0ZXN0X2dhdGhlcl9pbnRvX3NjYWxhcihzZWxmLCBfLCB2ZXJzaW9u KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsKSksICgiaSIsIFRlbnNvclByb3RvLklO VDY0LCAoKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkdhdGhlciIsIFsieCIsICJpIl0s IFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKKy0gICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJz aW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVy c2lvbnNfZm9yKCJHYXRoZXJFbGVtZW50cyIpKQorLSAgICBkZWYgdGVzdF9nYXRoZXJfZWxlbWVu dHMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAyKSks ICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMikpXSwKKy0gICAgICAgICAgICBbbWFrZV9u b2RlKCJHYXRoZXJFbGVtZW50cyIsIFsieCIsICJpIl0sIFsieSJdLCBheGlzPTEpXSwKKy0gICAg ICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgK Ky0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5m bygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMikpXSwKKy0gICAgICAgICAgICBvcHNldF9p bXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJH YXRoZXJFbGVtZW50cyIpKQorLSAgICBkZWYgdGVzdF9nYXRoZXJfZWxlbWVudHNfYXhpczAoc2Vs ZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFw aCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgzLCAzKSksICgiaSIs IFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJH YXRoZXJFbGVtZW50cyIsIFsieCIsICJpIl0sIFsieSJdLCBheGlzPTApXSwKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAg ICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIs IFRlbnNvclByb3RvLkZMT0FULCAoMiwgMykpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICAp CistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVy IikpCistICAgIGRlZiB0ZXN0X3NjYXR0ZXIoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0g ICAgICAgIGlmIHZlcnNpb24gPj0gMTE6CistICAgICAgICAgICAgIyBTY2F0dGVyIGlzIGRlcHJl Y2F0ZWQgaW4gZG9tYWluX3ZlcnNpb24gb2YgMTEuCistICAgICAgICAgICAgd2l0aCBzZWxmLmFz c2VydFJhaXNlcyhvbm54LmNoZWNrZXIuVmFsaWRhdGlvbkVycm9yKSBhcyBjbToKKy0gICAgICAg ICAgICAgICAgc2VsZi5fdGVzdF9zY2F0dGVyKHZlcnNpb24pCistICAgICAgICAgICAgZXhjZXB0 aW9uID0gY20uZXhjZXB0aW9uCistICAgICAgICAgICAgYXNzZXJ0ICJTY2F0dGVyIGlzIGRlcHJl Y2F0ZWQiIGluIHN0cihleGNlcHRpb24pCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHNl bGYuX3Rlc3Rfc2NhdHRlcih2ZXJzaW9uKQorLQorLSAgICBkZWYgX3Rlc3Rfc2NhdHRlcihzZWxm LCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor LSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICgzLCAzKSksCistICAgICAgICAgICAgICAgICgiaSIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwg MykpLAorLSAgICAgICAgICAgICAgICAoInUiLCBUZW5zb3JQcm90by5GTE9BVCwgKDIsIDMpKSwK Ky0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXIiLCBbIngi LCAiaSIsICJ1Il0sIFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAg ICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMs IDMpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlciIpKQorLSAgICBkZWYgdGVzdF9zY2F0 dGVyX2F4aXMxKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBpZiB2ZXJzaW9u ID49IDExOgorLSAgICAgICAgICAgICMgU2NhdHRlciBpcyBkZXByZWNhdGVkIGluIGRvbWFpbl92 ZXJzaW9uIG9mIDExLgorLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5j aGVja2VyLlZhbGlkYXRpb25FcnJvcikgYXMgY206CistICAgICAgICAgICAgICAgIHNlbGYuX3Rl c3Rfc2NhdHRlcl9heGlzMSh2ZXJzaW9uKQorLSAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGNtLmV4 Y2VwdGlvbgorLSAgICAgICAgICAgIGFzc2VydCAiU2NhdHRlciBpcyBkZXByZWNhdGVkIiBpbiBz dHIoZXhjZXB0aW9uKQorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBzZWxmLl90ZXN0X3Nj YXR0ZXJfYXhpczEodmVyc2lvbikKKy0KKy0gICAgZGVmIF90ZXN0X3NjYXR0ZXJfYXhpczEoc2Vs ZiwgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgK Ky0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FU LCAoMSwgNSkpLAorLSAgICAgICAgICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDEs IDIpKSwKKy0gICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyKSks CistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyIiwgWyJ4 IiwgImkiLCAidSJdLCBbInkiXSwgYXhpcz0xKV0sCistICAgICAgICAgICAgW10sCistICAgICAg ICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgs CistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5G TE9BVCwgKDEsIDUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vf b3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFy YW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlckVsZW1lbnRzIikpCist ICAgIGRlZiB0ZXN0X3NjYXR0ZXJfZWxlbWVudHMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMykpLAorLSAgICAgICAg ICAgICAgICAoImkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsIDMpKSwKKy0gICAgICAgICAgICAg ICAgKCJ1IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzKSksCistICAgICAgICAgICAgXSwKKy0g ICAgICAgICAgICBbbWFrZV9ub2RlKCJTY2F0dGVyRWxlbWVudHMiLCBbIngiLCAiaSIsICJ1Il0s IFsieSJdKV0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKV0sCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg dmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxs X3ZlcnNpb25zX2ZvcigiU2NhdHRlckVsZW1lbnRzIikpCistICAgIGRlZiB0ZXN0X3NjYXR0ZXJf ZWxlbWVudHNfYXhpczEoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgi eCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpLAorLSAgICAgICAgICAgICAgICAoImkiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKDEsIDIpKSwKKy0gICAgICAgICAgICAgICAgKCJ1IiwgVGVuc29y UHJvdG8uRkxPQVQsICgxLCAyKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJTY2F0dGVyRWxlbWVudHMiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJdLCBheGlzPTEp XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwgNSkpXSwKKysgICAgICAgICAg ICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRlbnNvclByb3RvLkZMT0FULCBleHBlY3Rl ZF9vdXRfc2hhcGUpXSwKKyAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCisgICAgICAgICApCisgCistICAgIEBwYXJh bWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTY2F0dGVyTkQiKSkKKy0gICAgZGVm IHRlc3Rfc2NhdHRlcm5kKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CisrICAgIGRlZiBfdGVz dF9zY2F0dGVyKHNlbGYsIHZlcnNpb24pIC0+IE5vbmU6CisgICAgICAgICBncmFwaCA9IHNlbGYu X21ha2VfZ3JhcGgoCisgICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBUZW5z b3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKSwKKy0gICAgICAgICAgICAgICAgKCJpbmRpY2VzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgzLCAzLCAyKSksCistICAgICAgICAgICAgICAgICgidXBkYXRl cyIsIFRlbnNvclByb3RvLkZMT0FULCAoMywgMywgNikpLAorKyAgICAgICAgICAgICAgICAoIngi LCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDMpKSwKKysgICAgICAgICAgICAgICAgKCJpIiwgVGVu c29yUHJvdG8uSU5UNjQsICgyLCAzKSksCisrICAgICAgICAgICAgICAgICgidSIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgMykpLAorICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vf bm9kZSgiU2NhdHRlck5EIiwgWyJ4IiwgImluZGljZXMiLCAidXBkYXRlcyJdLCBbInkiXSldLAor KyAgICAgICAgICAgIFttYWtlX25vZGUoIlNjYXR0ZXIiLCBbIngiLCAiaSIsICJ1Il0sIFsieSJd KV0sCisgICAgICAgICAgICAgW10sCisgICAgICAgICApCisgICAgICAgICBzZWxmLl9hc3NlcnRf aW5mZXJyZWQoCisgICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29y X3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDQsIDUsIDYpKV0sCisrICAgICAg ICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMs IDMpKV0sCisgICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU2NhdHRlck5EIikpCistICAgIGRlZiB0ZXN0X3Nj YXR0ZXJuZF9ub3NoYXBlKHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICAjIFRo ZSBzaGFwZSBvZiAneF9yZXNoYXBlZCcgY2Fubm90IGJlIGluZmVycmVkLCBzaW5jZSBpdCBpcyB0 aGUgb3V0cHV0IG9mIGEgZHluYW1pYyByZXNoYXBlLgorLSAgICAgICAgIyBUaHVzIHRoZSBzaGFw ZSBvZiAneScgaXMgYWxzbyBOb25lLgorKyAgICBkZWYgX3Rlc3Rfc2NhdHRlcl9heGlzMShzZWxm LCB2ZXJzaW9uKSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAor ICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQs ICg0LCA1LCA2KSksCistICAgICAgICAgICAgICAgICgiaW5kaWNlcyIsIFRlbnNvclByb3RvLklO VDY0LCAoMywgMywgMikpLAorLSAgICAgICAgICAgICAgICAoInVwZGF0ZXMiLCBUZW5zb3JQcm90 by5GTE9BVCwgKDMsIDMsIDYpKSwKKy0gICAgICAgICAgICAgICAgKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoIk0iLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICBtYWtlX25vZGUoIlJlc2hhcGUiLCBbIngiLCAic2hhcGUiXSwgWyJ4X3Jl c2hhcGVkIl0pLAorLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoIlNjYXR0ZXJORCIsIFsieF9y ZXNoYXBlZCIsICJpbmRpY2VzIiwgInVwZGF0ZXMiXSwgWyJ5Il0pLAorKyAgICAgICAgICAgICAg ICAoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEsIDUpKSwKKysgICAgICAgICAgICAgICAgKCJp IiwgVGVuc29yUHJvdG8uSU5UNjQsICgxLCAyKSksCisrICAgICAgICAgICAgICAgICgidSIsIFRl bnNvclByb3RvLkZMT0FULCAoMSwgMikpLAorICAgICAgICAgICAgIF0sCisrICAgICAgICAgICAg W21ha2Vfbm9kZSgiU2NhdHRlciIsIFsieCIsICJpIiwgInUiXSwgWyJ5Il0sIGF4aXM9MSldLAor ICAgICAgICAgICAgIFtdLAorICAgICAgICAgKQorICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAorICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieF9yZXNoYXBlZCIsIFRlbnNvclByb3RvLkZMT0FU LCBOb25lKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRl bnNvclByb3RvLkZMT0FULCBOb25lKSwKKy0gICAgICAgICAgICBdLAorKyAgICAgICAgICAgIFtt YWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCA1KSldLAor ICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKyAgICAgICAgICkKKyAKK0BAIC0xNzA5LDk1ICszMzQsNiBAQCBjbGFz cyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAg ICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyNCld LAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiU3F1ZWV6ZSIpKQorLSAgICBkZWYgdGVzdF9zcXVlZXplKHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6CistICAgICAgICBpZiB2ZXJzaW9uID09IDExOgorLSAgICAgICAgICAgIGdyYXBo ID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3Rv LkZMT0FULCAoMSwgMywgMSwgMSwgMiwgMSkpXSwKKy0gICAgICAgICAgICAgICAgW21ha2Vfbm9k ZSgiU3F1ZWV6ZSIsICJ4IiwgInkiLCBheGVzPVswLCAyLCAzLCA1XSldLAorLSAgICAgICAgICAg ICAgICBbXSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVy cmVkKAorLSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgW21ha2VfdGVu c29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIpKV0sCistICAgICAg ICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4s IHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCistICAgICAgICBlbHNlOgorLSAgICAgICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICAgICAgWworLSAgICAgICAg ICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAzLCAxLCAxLCAyLCAxKSks CistICAgICAgICAgICAgICAgICAgICAoImF4ZXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDQsKSks CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIFttYWtlX25vZGUoIlNxdWVl emUiLCBbIngiLCAiYXhlcyJdLCAieSIpXSwKKy0gICAgICAgICAgICAgICAgW10sCistICAgICAg ICAgICAgICAgIGluaXRpYWxpemVyPVsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y KCJheGVzIiwgVGVuc29yUHJvdG8uSU5UNjQsICg0LCksICgwLCAyLCAzLCA1KSkKKy0gICAgICAg ICAgICAgICAgXSwKKy0gICAgICAgICAgICApCistICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2lu ZmVycmVkKAorLSAgICAgICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICAgICAgW21ha2Vf dGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMsIDIpKV0sCistICAg ICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01B SU4sIHZlcnNpb24pXSwKKy0gICAgICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4 cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdDb25jYXQiKSkKKy0gICAgZGVmIHRlc3Rfc3Ry aW5nY29uY2F0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9IHNl bGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIngiLCBU ZW5zb3JQcm90by5TVFJJTkcsICgyLCAzLCA0KSksCistICAgICAgICAgICAgICAgICgieSIsIFRl bnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIFttYWtlX25vZGUoIlN0cmluZ0NvbmNhdCIsIFsieCIsICJ5Il0sICJ6IildLAorLSAgICAg ICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAor LSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZv KCJ6IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoMiwgMywgNCkpXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9y KCJTdHJpbmdDb25jYXQiKSkKKy0gICAgZGVmIHRlc3Rfc3RyaW5nY29uY2F0X2Jyb2FkY2FzdGlu ZyhzZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtl X2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJ4IiwgVGVuc29yUHJv dG8uU1RSSU5HLCAoMiwgMywgNCkpLAorLSAgICAgICAgICAgICAgICAoInkiLCBUZW5zb3JQcm90 by5TVFJJTkcsICgxLCAzLCAxKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFr ZV9ub2RlKCJTdHJpbmdDb25jYXQiLCBbIngiLCAieSJdLCAieiIpXSwKKy0gICAgICAgICAgICBb XSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAg ICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieiIsIFRl bnNvclByb3RvLlNUUklORywgKDIsIDMsIDQpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0 cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAg KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiUmVnZXhG dWxsTWF0Y2giKSkKKy0gICAgZGVmIHRlc3RfcmVnZXhfZnVsbF9tYXRjaChzZWxmLCBfLCB2ZXJz aW9uKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCA0LCAzLCA5KSldLAorLSAgICAg ICAgICAgIFttYWtlX25vZGUoIlJlZ2V4RnVsbE1hdGNoIiwgWyJ4Il0sIFsieSJdLCBwYXR0ZXJu PXIiXltBLVpdW2Etel0qJCIpXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAg ICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkJPT0wsICgyLCA0 LCAzLCA5KSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlJlZ2V4RnVsbE1hdGNoIikpCistICAgIGRl ZiB0ZXN0X3JlZ2V4X2Z1bGxfbWF0Y2hfZW1wdHlfc2hhcGUoc2VsZiwgXywgdmVyc2lvbikgLT4g Tm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBb KCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoKSldLAorLSAgICAgICAgICAgIFttYWtlX25vZGUo IlJlZ2V4RnVsbE1hdGNoIiwgWyJ4Il0sIFsieSJdLCBwYXR0ZXJuPXIiXltBLVpdW2Etel0qJCIp XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkJPT0wsICgpKV0sCistICAgICAgICAgICAgb3Bz ZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbildLAor LSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9zcXVlZXplX25vX2F4ZXNfb3BzZXQxMShzZWxm KSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorICAgICAgICAg ICAgIFsKK0BAIC01NjMyLDIzICs0MTY4LDYgQEAgY2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRl c3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAgICBzZWxmLl9tYWtlX21hdG11bGludGVn ZXJfdGVzdCgoNSwgMSwgNCwgMiksICgxLCAzLCAyLCAzKSkKKyAgICAgICAgIHNlbGYuX21ha2Vf bWF0bXVsaW50ZWdlcl90ZXN0KCg0LCAyKSwgKDMsIDIsIDMpKQorIAorLSAgICBAcGFyYW1ldGVy aXplZC5leHBhbmQoCistICAgICAgICBbb25ueC5UZW5zb3JQcm90by5GTE9BVCwgb25ueC5UZW5z b3JQcm90by5GTE9BVDE2LCBvbm54LlRlbnNvclByb3RvLkJGTE9BVDE2XQorLSAgICApCistICAg IGRlZiB0ZXN0X3F1YW50aXplbGluZWFyKHNlbGYsIGVsZW1fdHlwZSkgLT4gTm9uZToKKy0gICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgICgieCIsIGVsZW1fdHlwZSwgKDMwLCA0LCA1KSksCistICAgICAgICAgICAgICAgICgi eV9zY2FsZSIsIGVsZW1fdHlwZSwgKCkpLAorLSAgICAgICAgICAgICAgICAoInlfemVyb19wb2lu dCIsIFRlbnNvclByb3RvLlVJTlQ4LCAoKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICBbbWFrZV9ub2RlKCJRdWFudGl6ZUxpbmVhciIsIFsieCIsICJ5X3NjYWxlIiwgInlfemVyb19w b2ludCJdLCBbInkiXSldLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAg c2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLlVJTlQ4LCAoMzAsIDQsIDUpKV0KKy0gICAgICAg ICkKKy0KKyAgICAgZGVmIHRlc3RfcXVhbnRpemVsaW5lYXJfZGVmYXVsdF96cChzZWxmKSAtPiBO b25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorICAgICAgICAgICAgIFso IngiLCBUZW5zb3JQcm90by5GTE9BVCwgKDMwLCA0LCA1KSksICgieV9zY2FsZSIsIFRlbnNvclBy b3RvLkZMT0FULCAoKSldLAorQEAgLTU3NTQsMjMgKzQyNzMsNiBAQCBjbGFzcyBUZXN0U2hhcGVJ bmZlcmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAgICBncmFwaCwK KyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgW29u bnguVGVuc29yUHJvdG8uRkxPQVQsIG9ubnguVGVuc29yUHJvdG8uRkxPQVQxNiwgb25ueC5UZW5z b3JQcm90by5CRkxPQVQxNl0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZXF1YW50aXplbGluZWFy KHNlbGYsIGVsZW1fdHlwZSkgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3Rv LlVJTlQ4LCAoMzAsIDQsIDUpKSwKKy0gICAgICAgICAgICAgICAgKCJ4X3NjYWxlIiwgZWxlbV90 eXBlLCAoKSksCistICAgICAgICAgICAgICAgICgieF96ZXJvX3BvaW50IiwgVGVuc29yUHJvdG8u VUlOVDgsICgpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIkRl cXVhbnRpemVMaW5lYXIiLCBbIngiLCAieF9zY2FsZSIsICJ4X3plcm9fcG9pbnQiXSwgWyJ5Il0p XSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInki LCBlbGVtX3R5cGUsICgzMCwgNCwgNSkpXQorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9k eW5hbWljcXVhbnRpemVsaW5lYXIoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKyAgICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uRkxPQVQsICgz MCwgNCwgNSkpXSwKK0BAIC02MDA1LDMxOSArNDUwNyw2MSBAQCBjbGFzcyBUZXN0U2hhcGVJbmZl cmVuY2UoVGVzdFNoYXBlSW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAgICBbbWFrZV9ub2Rl KCJSb2lBbGlnbiIsIFsieCIsICJyb2lzIiwgImJhdGNoX2luZGljZXMiXSwgWyJ5Il0pXSwKKyAg ICAgICAgICAgICBbXSwKKyAgICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJl ZCgKKy0gICAgICAgICAgICBncmFwaCwgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5z b3JQcm90by5GTE9BVCwgKDE1LCAiQyIsIDEsIDEpKV0KKy0gICAgICAgICkKKy0KKy0gICAgZGVm IHRlc3Rfcm90YXJ5ZW1iZWRkaW5nXzRkKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBncmFwaCA9 IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICAoIlgi LCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgIm51bV9oZWFkcyIsICJzZXFfbGVuIiwgImhlYWRf c2l6ZSIpKSwKKy0gICAgICAgICAgICAgICAgKCJjb3NfY2FjaGUiLCBUZW5zb3JQcm90by5GTE9B VCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCistICAgICAgICAgICAgICAg ICgic2luX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibWF4X3NlcV9sZW4iLCAiaGVhZF9z aXplX2Rpdl8yIikpLAorLSAgICAgICAgICAgICAgICAoInBvc2l0aW9uX2lkcyIsIFRlbnNvclBy b3RvLklOVDY0LCAoIkIiLCAic2VxX2xlbiIpKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAg IlJvdGFyeUVtYmVkZGluZyIsCistICAgICAgICAgICAgICAgICAgICBbIlgiLCAiY29zX2NhY2hl IiwgInNpbl9jYWNoZSIsICJwb3NpdGlvbl9pZHMiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsi WSJdLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBb XSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAg ICAgICBncmFwaCwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oCistICAgICAgICAgICAgICAgICAgICAiWSIsIFRlbnNvclByb3RvLkZMT0FU LCAoIkIiLCAibnVtX2hlYWRzIiwgInNlcV9sZW4iLCAiaGVhZF9zaXplIikKKy0gICAgICAgICAg ICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgIGRlZiB0ZXN0X3Jv dGFyeWVtYmVkZGluZ18zZChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9t YWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgKCJYIiwgVGVuc29y UHJvdG8uRkxPQVQsICgiQiIsICJzZXFfbGVuIiwgImhpZGRlbl9zaXplIikpLAorLSAgICAgICAg ICAgICAgICAoImNvc19jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FULCAoIm1heF9zZXFfbGVuIiwg ImhlYWRfc2l6ZV9kaXZfMiIpKSwKKy0gICAgICAgICAgICAgICAgKCJzaW5fY2FjaGUiLCBUZW5z b3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCistICAg ICAgICAgICAgICAgICgicG9zaXRpb25faWRzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgiQiIsICJz ZXFfbGVuIikpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiUm90YXJ5RW1iZWRkaW5nIiwK Ky0gICAgICAgICAgICAgICAgICAgIFsiWCIsICJjb3NfY2FjaGUiLCAic2luX2NhY2hlIiwgInBv c2l0aW9uX2lkcyJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJZIl0sCistICAgICAgICAgICAg ICAgICAgICBudW1faGVhZHM9NCwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0s CistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAgICAgICAgICAgICAgIlkiLCBU ZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgInNlcV9sZW4iLCAiaGlkZGVuX3NpemUiKQorLSAgICAg ICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgYWxsX3ZlcnNpb25zX2ZvcigiTGFiZWxFbmNvZGVy IikgaWYgT05OWF9NTCBlbHNlIFtdLCBza2lwX29uX2VtcHR5PVRydWUKKy0gICAgKQorLSAgICBk ZWYgdGVzdF9sYWJlbF9lbmNvZGVyX3N0cmluZ19pbnQ2NChzZWxmLCBfLCB2ZXJzaW9uKSAtPiBO b25lOgorLSAgICAgICAgc2VsZi5za2lwSWYoCistICAgICAgICAgICAgdmVyc2lvbiA8IDIsICJr ZXlzXyogYXR0cmlidXRlcyB3ZXJlIGludHJvZHVjZWQgaW4gYWkub25ueC5tbCBvcHNldCAyIgor LSAgICAgICAgKQorLSAgICAgICAgc3RyaW5nX2xpc3QgPSBbIkEiLCAibSIsICJ5Il0KKy0gICAg ICAgIGZsb2F0X2xpc3QgPSBbOTQuMTcsIDM2LjAwLCAtOTkuMF0KKy0gICAgICAgIGludDY0X2xp c3QgPSBbMTIsIDI4LCA4Nl0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoNiwgMSkpXSwKKy0gICAgICAg ICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAg ICJMYWJlbEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAg ICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RP TUFJTiwKKy0gICAgICAgICAgICAgICAgICAgIGtleXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKKy0g ICAgICAgICAgICAgICAgICAgIHZhbHVlc19pbnQ2NHM9aW50NjRfbGlzdCwKKy0gICAgICAgICAg ICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCist ICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAg ICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDYsIDEpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAgICAgICAgICAg IG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCistICAgICAgICAgICAgICAg IG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAg ICApCistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAg WygieCIsIFRlbnNvclByb3RvLklOVDY0LCAoMiwgMykpXSwKKy0gICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29k ZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgICAgICAgICBb InkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAg ICAgICAgICAgICAgICAgIGtleXNfaW50NjRzPWludDY0X2xpc3QsCistICAgICAgICAgICAgICAg ICAgICB2YWx1ZXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKKy0gICAgICAgICAgICAgICAgKQorLSAg ICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxm Ll9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgyLCAzKSldLAor LSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAg ICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5z b3JQcm90by5GTE9BVCwgKDIsKSldLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCistICAgICAg ICAgICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAg ICAgICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgICAgICAg ICAga2V5c19mbG9hdHM9ZmxvYXRfbGlzdCwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19p bnQ2NHM9aW50NjRfbGlzdCwKKy0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVl X2luZm8oInkiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDIsKSldLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4s IHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDEx KSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxm Ll9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5JTlQ2NCwgKDgs KSldLAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAg ICAgICAgICAgICAgICAgIkxhYmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngi XSwKKy0gICAgICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9t YWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgICAgICAgICAga2V5c19pbnQ2NHM9aW50 NjRfbGlzdCwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlc19mbG9hdHM9ZmxvYXRfbGlzdCwK Ky0gICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQ cm90by5GTE9BVCwgKDgsKSldLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAg ICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAg ICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgICAgICBd LAorLSAgICAgICAgKQorLQorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAg ICAgICAgICAgIFsoIngiLCBUZW5zb3JQcm90by5GTE9BVCwgKCkpXSwKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJMYWJl bEVuY29kZXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgICAg ICAgICBbInkiXSwKKy0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwK Ky0gICAgICAgICAgICAgICAgICAgIGtleXNfZmxvYXRzPWZsb2F0X2xpc3QsCistICAgICAgICAg ICAgICAgICAgICB2YWx1ZXNfc3RyaW5ncz1zdHJpbmdfbGlzdCwKKy0gICAgICAgICAgICAgICAg KQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAg ICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAg ICAgW21ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5TVFJJTkcsICgpKV0s CistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1bCistICAgICAgICAgICAgICAgIG1ha2Vfb3Bz ZXRpZChPTk5YX01MX0RPTUFJTiwgdmVyc2lvbiksCistICAgICAgICAgICAgICAgIG1ha2Vfb3Bz ZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCist ICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRl bnNvclByb3RvLlNUUklORywgKDEsIDIpKV0sCistICAgICAgICAgICAgWworLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiTGFiZWxFbmNvZGVyIiwKKy0g ICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAgICAgICAgICAgWyJ5Il0sCist ICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01BSU4sCistICAgICAgICAgICAg ICAgICAgICBrZXlzX3N0cmluZ3M9c3RyaW5nX2xpc3QsCistICAgICAgICAgICAgICAgICAgICB2 YWx1ZXNfZmxvYXRzPWZsb2F0X2xpc3QsCistICAgICAgICAgICAgICAgICkKKy0gICAgICAgICAg ICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxLCAyKSldLAorLSAgICAgICAg ICAgIG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9N TF9ET01BSU4sIHZlcnNpb24pLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9E T01BSU4sIDExKSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1l dGVyaXplZC5leHBhbmQoCistICAgICAgICBhbGxfdmVyc2lvbnNfZm9yKCJMYWJlbEVuY29kZXIi KSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBfb25fZW1wdHk9VHJ1ZQorLSAgICApCistICAgIGRl ZiB0ZXN0X2xhYmVsX2VuY29kZXJfdGVuc29yX2F0dHJpYnV0ZXMoc2VsZiwgXywgdmVyc2lvbikg LT4gTm9uZToKKy0gICAgICAgIHNlbGYuc2tpcElmKAorLSAgICAgICAgICAgIHZlcnNpb24gPCA0 LCAidGVuc29yIGF0dHJpYnV0ZXMgd2VyZSBpbnRyb2R1Y2VkIGluIGFpLm9ubngubWwgb3BzZXQg NCIKKy0gICAgICAgICkKKy0gICAgICAgIGtleV90ZW5zb3IgPSBtYWtlX3RlbnNvcigKKy0gICAg ICAgICAgICAia2V5c190ZW5zb3IiLCBUZW5zb3JQcm90by5TVFJJTkcsIFs0XSwgWyJhIiwgImIi LCAiY2MiLCAiZGRkIl0KKy0gICAgICAgICkKKy0gICAgICAgIHZhbHVlc190ZW5zb3IgPSBtYWtl X3RlbnNvcigKKy0gICAgICAgICAgICAidmFsdWVzX3RlbnNvciIsIFRlbnNvclByb3RvLklOVDY0 LCBbNF0sIFsxLCAyLCAzLCA0XQorKyAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorKyAg ICAgICAgICAgIGdyYXBoLCBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3Rv LkZMT0FULCAoMTUsICJDIiwgMSwgMSkpXQorICAgICAgICAgKQorKworKyAgICBkZWYgdGVzdF9y b3RhcnllbWJlZGRpbmdfNGQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIGdyYXBoID0gc2VsZi5f bWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIk0i LCBOb25lLCAzLCAxMikpXSwKKysgICAgICAgICAgICBbCisrICAgICAgICAgICAgICAgICgiWCIs IFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAibnVtX2hlYWRzIiwgInNlcV9sZW4iLCAiaGVhZF9z aXplIikpLAorKyAgICAgICAgICAgICAgICAoImNvc19jYWNoZSIsIFRlbnNvclByb3RvLkZMT0FU LCAoIm1heF9zZXFfbGVuIiwgImhlYWRfc2l6ZV9kaXZfMiIpKSwKKysgICAgICAgICAgICAgICAg KCJzaW5fY2FjaGUiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3Np emVfZGl2XzIiKSksCisrICAgICAgICAgICAgICAgICgicG9zaXRpb25faWRzIiwgVGVuc29yUHJv dG8uSU5UNjQsICgiQiIsICJzZXFfbGVuIikpLAorKyAgICAgICAgICAgIF0sCisgICAgICAgICAg ICAgWworICAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAi TGFiZWxFbmNvZGVyIiwKKy0gICAgICAgICAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAgICAg ICAgICAgICAgWyJ5Il0sCistICAgICAgICAgICAgICAgICAgICBkb21haW49T05OWF9NTF9ET01B SU4sCistICAgICAgICAgICAgICAgICAgICBrZXlzX3RlbnNvcj1rZXlfdGVuc29yLAorLSAgICAg ICAgICAgICAgICAgICAgdmFsdWVzX3RlbnNvcj12YWx1ZXNfdGVuc29yLAorLSAgICAgICAgICAg ICAgICAgICAgZGVmYXVsdF90ZW5zb3I9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAg ICAgICAgImRlZmF1bHRfdGVuc29yIiwgVGVuc29yUHJvdG8uSU5UNjQsIFsxXSwgWzBdCistICAg ICAgICAgICAgICAgICAgICApLAorKyAgICAgICAgICAgICAgICAgICAgIlJvdGFyeUVtYmVkZGlu ZyIsCisrICAgICAgICAgICAgICAgICAgICBbIlgiLCAiY29zX2NhY2hlIiwgInNpbl9jYWNoZSIs ICJwb3NpdGlvbl9pZHMiXSwKKysgICAgICAgICAgICAgICAgICAgIFsiWSJdLAorICAgICAgICAg ICAgICAgICApCisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkK KyAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKyAgICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLklOVDY0 LCAoIk0iLCBOb25lLCAzLCAxMikpXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0g ICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKKy0g ICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCisrICAgICAgICAg ICAgWworKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorKyAgICAgICAg ICAgICAgICAgICAgIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgKCJCIiwgIm51bV9oZWFkcyIsICJz ZXFfbGVuIiwgImhlYWRfc2l6ZSIpCisrICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICBd LAorICAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBh bGxfdmVyc2lvbnNfZm9yKCJMYWJlbEVuY29kZXIiKSBpZiBPTk5YX01MIGVsc2UgW10sIHNraXBf b25fZW1wdHk9VHJ1ZQorLSAgICApCistICAgIGRlZiB0ZXN0X2xhYmVsX2VuY29kZXJfdGVuc29y X2F0dHJpYnV0ZXNfaW52YWxpZF9jb25maWd1cmF0aW9ucygKKy0gICAgICAgIHNlbGYsIF8sIHZl cnNpb24KKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5za2lwSWYodmVyc2lvbiA8IDQs ICJ0ZW5zb3IgYXR0cmlidXRlcyBpbnRyb2R1Y2VkIGluIGFpLm9ubngubWwgb3BzZXQgNCIpCist ICAgICAgICBrZXlfdGVuc29yID0gbWFrZV90ZW5zb3IoCistICAgICAgICAgICAgImtleXNfdGVu c29yIiwgVGVuc29yUHJvdG8uU1RSSU5HLCBbNF0sIFsiYSIsICJiIiwgImNjIiwgImRkZCJdCist ICAgICAgICApCistICAgICAgICB2YWx1ZXNfdGVuc29yID0gbWFrZV90ZW5zb3IoCistICAgICAg ICAgICAgInZhbHVlc190ZW5zb3IiLCBUZW5zb3JQcm90by5JTlQ2NCwgWzRdLCBbMSwgMiwgMywg NF0KKy0gICAgICAgICkKKy0KKy0gICAgICAgIG9wc2V0X2ltcG9ydHMgPSBbCistICAgICAgICAg ICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCB2ZXJzaW9uKSwKKy0gICAgICAgICAgICBt YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDExKSwKKy0gICAgICAgIF0KKy0KKy0gICAgICAgICMg ZGVmYXVsdF90ZW5zb3Igc2hvdWxkIGJlIElOVDY0LCBzYW1lIHR5cGUgYXMgdmFsdWVzX3RlbnNv cgorKyAgICBkZWYgdGVzdF9yb3RhcnllbWJlZGRpbmdfM2Qoc2VsZikgLT4gTm9uZToKKyAgICAg ICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29y UHJvdG8uU1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKKysgICAgICAgICAgICBbCisrICAg ICAgICAgICAgICAgICgiWCIsIFRlbnNvclByb3RvLkZMT0FULCAoIkIiLCAic2VxX2xlbiIsICJo aWRkZW5fc2l6ZSIpKSwKKysgICAgICAgICAgICAgICAgKCJjb3NfY2FjaGUiLCBUZW5zb3JQcm90 by5GTE9BVCwgKCJtYXhfc2VxX2xlbiIsICJoZWFkX3NpemVfZGl2XzIiKSksCisrICAgICAgICAg ICAgICAgICgic2luX2NhY2hlIiwgVGVuc29yUHJvdG8uRkxPQVQsICgibWF4X3NlcV9sZW4iLCAi aGVhZF9zaXplX2Rpdl8yIikpLAorKyAgICAgICAgICAgICAgICAoInBvc2l0aW9uX2lkcyIsIFRl bnNvclByb3RvLklOVDY0LCAoIkIiLCAic2VxX2xlbiIpKSwKKysgICAgICAgICAgICBdLAorICAg ICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAg ICAgICAgIkxhYmVsRW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbIngiXSwKKy0gICAg ICAgICAgICAgICAgICAgIFsieSJdLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPU9OTlhf TUxfRE9NQUlOLAorLSAgICAgICAgICAgICAgICAgICAga2V5c190ZW5zb3I9a2V5X3RlbnNvciwK Ky0gICAgICAgICAgICAgICAgICAgIHZhbHVlc190ZW5zb3I9dmFsdWVzX3RlbnNvciwKKy0gICAg ICAgICAgICAgICAgICAgIGRlZmF1bHRfdGVuc29yPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAg ICAgICAgICAgICAgICJkZWZhdWx0X3RlbnNvciIsIFRlbnNvclByb3RvLklOVDMyLCBbMV0sIFsw XQorLSAgICAgICAgICAgICAgICAgICAgKSwKKysgICAgICAgICAgICAgICAgICAgICJSb3RhcnlF bWJlZGRpbmciLAorKyAgICAgICAgICAgICAgICAgICAgWyJYIiwgImNvc19jYWNoZSIsICJzaW5f Y2FjaGUiLCAicG9zaXRpb25faWRzIl0sCisrICAgICAgICAgICAgICAgICAgICBbIlkiXSwKKysg ICAgICAgICAgICAgICAgICAgIG51bV9oZWFkcz00LAorICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkKKy0KKy0gICAgICAgIHNl bGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVy ZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAorKyAgICAgICAgc2VsZi5f YXNzZXJ0X2luZmVycmVkKAorICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIG9wc2V0 X2ltcG9ydHM9b3BzZXRfaW1wb3J0cywKKy0gICAgICAgICkKKy0KKy0gICAgICAgICMgZGVmYXVs dF90ZW5zb3Igc2hvdWxkIGJlIGEgc2luZ2xldG9uIG9mIHNoYXBlICgxLCkKKy0gICAgICAgIGdy YXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgVGVuc29yUHJvdG8u U1RSSU5HLCAoIk0iLCBOb25lLCAzLCAxMikpXSwKKyAgICAgICAgICAgICBbCistICAgICAgICAg ICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJMYWJlbEVuY29kZXIiLAor LSAgICAgICAgICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgICAgICAgICBbInkiXSwK Ky0gICAgICAgICAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAgICAg ICAgICAgICAgIGtleXNfdGVuc29yPWtleV90ZW5zb3IsCistICAgICAgICAgICAgICAgICAgICB2 YWx1ZXNfc3RyaW5ncz1bImEiLCAiYiIsICJjYyIsICJkZGQiXSwKKy0gICAgICAgICAgICAgICAg ICAgIGRlZmF1bHRfdGVuc29yPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAg ICJkZWZhdWx0X3RlbnNvciIsIFRlbnNvclByb3RvLlNUUklORywgWzEsIDJdLCBbImEiLCAiYiJd CistICAgICAgICAgICAgICAgICAgICApLAorKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKAorKyAgICAgICAgICAgICAgICAgICAgIlkiLCBUZW5zb3JQcm90by5GTE9BVCwg KCJCIiwgInNlcV9sZW4iLCAiaGlkZGVuX3NpemUiKQorICAgICAgICAgICAgICAgICApCisgICAg ICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIHNl bGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVy ZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAorLSAgICAgICAgICAgIGdy YXBoLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9b3BzZXRfaW1wb3J0cywKKyAgICAgICAg ICkKKyAKKyAgICAgZGVmIG1ha2Vfc3BhcnNlKAorQEAgLTg3NDYsMTA1ICs2OTkwLDYgQEAgY2xh c3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAg ICApCisgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoZ3JhcGgsIFtvdXRwdXRfdGVuc29y X3ZhbF9pbmZvXSkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIlN0cmluZ1NwbGl0IikpCistICAgIGRlZiB0ZXN0X3N0cmluZ19zcGxpdF9iYXNpYyhzZWxm LCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oCistICAgICAgICAgICAgInN1YnN0cmluZ3MiLAorLSAgICAgICAgICAgIFRl bnNvclByb3RvLlNUUklORywKKy0gICAgICAgICAgICAoMiwgTm9uZSksCistICAgICAgICApCist ICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQ cm90by5JTlQ2NCwgKDIsKSkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0g ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywg KDIsKSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbbWFrZV9ub2RlKCJTdHJpbmdT cGxpdCIsIFsieCJdLCBbInN1YnN0cmluZ3MiLCAibGVuZ3RoIl0pXSwKKy0gICAgICAgICAgICBb c3Vic3RyaW5ncywgbGVuZ3RoXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX2Fzc2VydF9p bmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBbc3Vic3RyaW5ncywg bGVuZ3RoXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlk KE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJp emVkLmV4cGFuZChhbGxfdmVyc2lvbnNfZm9yKCJTdHJpbmdTcGxpdCIpKQorLSAgICBkZWYgdGVz dF9zdHJpbmdfc3BsaXRfc3ltYm9saWMoc2VsZiwgXywgdmVyc2lvbikgLT4gTm9uZToKKy0gICAg ICAgIHN1YnN0cmluZ3MgPSBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKAorLSAgICAgICAgICAgICJz dWJzdHJpbmdzIiwKKy0gICAgICAgICAgICBUZW5zb3JQcm90by5TVFJJTkcsCistICAgICAgICAg ICAgKCJBIiwgTm9uZSksCistICAgICAgICApCistICAgICAgICBsZW5ndGggPSBtYWtlX3RlbnNv cl92YWx1ZV9pbmZvKCJsZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCJBIiwpKQorLSAgICAg ICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsKKy0gICAgICAgICAg ICAgICAgKCJ4IiwgVGVuc29yUHJvdG8uU1RSSU5HLCAoIkEiLCkpLAorLSAgICAgICAgICAgIF0s CistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJp bmdzIiwgImxlbmd0aCJdKV0sCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCist ICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAg Z3JhcGgsCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICAgICAg b3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lvbild LAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoYWxsX3ZlcnNpb25z X2ZvcigiU3RyaW5nU3BsaXQiKSkKKy0gICAgZGVmIHRlc3Rfc3RyaW5nX3NwbGl0X25lc3RlZChz ZWxmLCBfLCB2ZXJzaW9uKSAtPiBOb25lOgorLSAgICAgICAgc3Vic3RyaW5ncyA9IG1ha2VfdGVu c29yX3ZhbHVlX2luZm8oCistICAgICAgICAgICAgInN1YnN0cmluZ3MiLCBUZW5zb3JQcm90by5T VFJJTkcsICgyLCA0LCAzLCBOb25lKQorLSAgICAgICAgKQorLSAgICAgICAgbGVuZ3RoID0gbWFr ZV90ZW5zb3JfdmFsdWVfaW5mbygibGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCA0LCAz KSkKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCist ICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKDIsIDQsIDMpKSwKKy0g ICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFttYWtlX25vZGUoIlN0cmluZ1NwbGl0IiwgWyJ4 Il0sIFsic3Vic3RyaW5ncyIsICJsZW5ndGgiXSwgbWF4c3BsaXQ9MildLAorLSAgICAgICAgICAg IFtzdWJzdHJpbmdzLCBsZW5ndGhdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFtzdWJzdHJpbmdz LCBsZW5ndGhdLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRl cml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19mb3IoIlN0cmluZ1NwbGl0IikpCistICAgIGRlZiB0 ZXN0X3N0cmluZ19zcGxpdF96ZXJvX2RpbWVuc2lvbmFsX2lucHV0KHNlbGYsIF8sIHZlcnNpb24p IC0+IE5vbmU6CistICAgICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygi c3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKE5vbmUsKSkKKy0gICAgICAgIGxlbmd0 aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAo KSkKKy0KKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgICgieCIsIFRlbnNvclByb3RvLlNUUklORywgKCkpLAorLSAgICAg ICAgICAgIF0sCistICAgICAgICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwg WyJzdWJzdHJpbmdzIiwgImxlbmd0aCJdLCBtYXhzcGxpdD0yKV0sCistICAgICAgICAgICAgW3N1 YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxl bmd0aF0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChP Tk5YX0RPTUFJTiwgdmVyc2lvbildLAorLSAgICAgICAgKQorLQorLSAgICBAcGFyYW1ldGVyaXpl ZC5leHBhbmQoYWxsX3ZlcnNpb25zX2ZvcigiU3RyaW5nU3BsaXQiKSkKKy0gICAgZGVmIHRlc3Rf c3RyaW5nX3NwbGl0X2VtcHR5X2lucHV0KHNlbGYsIF8sIHZlcnNpb24pIC0+IE5vbmU6CistICAg ICAgICBzdWJzdHJpbmdzID0gbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0gICAgICAgICAgICAi c3Vic3RyaW5ncyIsIFRlbnNvclByb3RvLlNUUklORywgKCJNIiwgMywgMCwgTm9uZSkKKy0gICAg ICAgICkKKy0gICAgICAgIGxlbmd0aCA9IG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImxlbmd0aCIs IFRlbnNvclByb3RvLklOVDY0LCAoIk0iLCAzLCAwKSkKKy0KKy0gICAgICAgIGdyYXBoID0gc2Vs Zi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgICgieCIsIFRl bnNvclByb3RvLlNUUklORywgKCJNIiwgMywgMCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgW21ha2Vfbm9kZSgiU3RyaW5nU3BsaXQiLCBbIngiXSwgWyJzdWJzdHJpbmdzIiwgImxl bmd0aCJdLCBtYXhzcGxpdD0yKV0sCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0s CistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgW3N1YnN0cmluZ3MsIGxlbmd0aF0sCistICAgICAgICAg ICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgdmVyc2lv bildLAorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9vcHRpb25hbF90ZW5zb3JfZ2V0X2Vs ZW1lbnQoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHRlbnNvcl90eXBlX3Byb3RvID0gaGVscGVy Lm1ha2VfdGVuc29yX3R5cGVfcHJvdG8oCisgICAgICAgICAgICAgZWxlbV90eXBlPVRlbnNvclBy b3RvLkRPVUJMRSwgc2hhcGU9WzIsIDEsIDRdCitAQCAtOTQ1Miw0MjYgKzc1OTcsNzYgQEAgY2xh c3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAgICAg ICAgICAgW10sCisgICAgICAgICApCisgICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCist ICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCistICAg ICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9B VCwgKDEwLCkpLAorLSAgICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgICAgICBncmFw aCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgWwor LSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3Rh bnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBbInNo YXBlIl0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBU ZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAg ICAgICAgICAgICAgbWFrZV9ub2RlKCJIYW5uV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVy aW9kaWM9MCksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbXSwKKy0gICAgICAgICkK Ky0gICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICBncmFwaCwKKy0g ICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNo YXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCistICAgICAgICAg ICAgXSwKKy0gICAgICAgICkKKy0KKy0gICAgZGVmIHRlc3RfYmxhY2ttYW53aW5kb3coc2VsZik6 CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgW10sCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAg ICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAg ICAgICAgICAgICBbInNoYXBlIl0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3Rl bnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksICgxMCwpKSwKKy0gICAgICAgICAg ICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJCbGFja21hbldpbmRvdyIsIFsi c2hhcGUiXSwgWyJ5Il0pLAorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAg ICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3Jh cGgsCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCistICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yX3ZhbHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAorLSAg ICAgICAgICAgIF0sCistICAgICAgICApCistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgW10sCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAg ICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAg ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBbInNoYXBlIl0sCistICAgICAg ICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2 NCwgKCksICgxMCwpKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFr ZV9ub2RlKCJCbGFja21hbldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0sIHBlcmlvZGljPTApLAor LSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBz ZWxmLl9hc3NlcnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAg WworLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIsIFRlbnNv clByb3RvLklOVDY0LCAoKSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAorLSAgICAgICAgICAgIF0sCistICAg ICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAg ICAgICAgICAoCistICAgICAgICAgICAgICAgIG5hbWUsCistICAgICAgICAgICAgICAgIHZlcnNp b24sCistICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAorLSAgICAgICAgICAgICAgICBpbnB1 dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgYXhpcywKKy0gICAgICAgICAgICAgICAgb25lc2lk ZWQsCistICAgICAgICAgICAgICAgIGludmVyc2UsCistICAgICAgICAgICAgICAgIGV4cGVjdGVk X3NoYXBlLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBmb3IgKG5hbWUsIHZlcnNpb24p LCAoCistICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAorLSAgICAgICAgICAgICAgICBpbnB1 dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgYXhpcywKKy0gICAgICAgICAgICAgICAgb25lc2lk ZWQsCistICAgICAgICAgICAgICAgIGludmVyc2UsCistICAgICAgICAgICAgICAgIGV4cGVjdGVk X3NoYXBlLAorLSAgICAgICAgICAgICkgaW4gaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAg ICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkRGVCIpLAorLSAgICAgICAgICAgICAgICAoCistICAg ICAgICAgICAgICAgICAgICAoInJlYWxzX2RlZmF1bHRfYXhpcyIsICgyLCA1LCAxKSwgTm9uZSwg Tm9uZSwgTm9uZSwgKDIsIDUsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhp c18wIiwgKDMsIDUsIDEwLCAxKSwgMCwgMCwgMCwgKDMsIDUsIDEwLCAyKSksCistICAgICAgICAg ICAgICAgICAgICAoInJlYWxzX2F4aXNfMSIsICgzLCA1LCAxMCwgMSksIDEsIDAsIDAsICgzLCA1 LCAxMCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzIiLCAoMywgNSwg MTAsIDEpLCAyLCAwLCAwLCAoMywgNSwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgi cmVhbHNfYXhpc19uZWciLCAoMywgNSwgMTAsIDEpLCAtMiwgMCwgMCwgKDMsIDUsIDEwLCAyKSks CistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMF9vbmVzaWRlZCIsICgzLCA1LCAx MCwgMSksIDAsIDEsIDAsICgyLCA1LCAxMCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJy ZWFsc19heGlzXzFfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAxLCAxLCAwLCAoMywgMywgMTAs IDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18yX29uZXNpZGVkIiwgKDMs IDUsIDEwLCAxKSwgMiwgMSwgMCwgKDMsIDUsIDYsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAg ICgicmVhbHNfYXhpc19uZWdfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAtMiwgMSwgMCwgKDMs IDUsIDYsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiY29tcGxleF9kZWZhdWx0X2F4aXMi LCAoMiwgNSwgMiksIE5vbmUsIE5vbmUsIE5vbmUsICgyLCA1LCAyKSksCistICAgICAgICAgICAg ICAgICAgICAoInJlYWxfaW52ZXJzZSIsICgyLCA1LCAxKSwgMSwgTm9uZSwgMSwgKDIsIDUsIDIp KSwKKy0gICAgICAgICAgICAgICAgICAgICgiY29tcGxleF9pbnZlcnNlIiwgKDIsIDUsIDIpLCAx LCBOb25lLCAxLCAoMiwgNSwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJpcmZmdF9heGlz XzAiLCAoMiwgNSwgMTAsIDIpLCAwLCAxLCAxLCAoMiwgNSwgMTAsIDEpKSwKKy0gICAgICAgICAg ICAgICAgICAgICgiaXJmZnRfYXhpc18xIiwgKDMsIDMsIDEwLCAyKSwgMSwgMSwgMSwgKDMsIDQs IDEwLCAxKSksCistICAgICAgICAgICAgICAgICAgICAoImlyZmZ0X2F4aXNfMiIsICgzLCA1LCA2 LCAyKSwgMiwgMSwgMSwgKDMsIDUsIDEwLCAxKSksCistICAgICAgICAgICAgICAgICAgICAoImly ZmZ0X2F4aXNfbmVnIiwgKDMsIDUsIDYsIDIpLCAtMiwgMSwgMSwgKDMsIDUsIDEwLCAxKSksCist ICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgKQorLSAgICAgICAgXQorLSAgICApCist ICAgIGRlZiB0ZXN0X2RmdCgKKy0gICAgICAgIHNlbGYsCistICAgICAgICBfOiBzdHIsCistICAg ICAgICB2ZXJzaW9uOiBpbnQsCistICAgICAgICBfdGVzdF9hc3BlY3Q6IHN0ciwKKy0gICAgICAg IGlucHV0X3NoYXBlOiB0dXBsZVtpbnRdLAorLSAgICAgICAgYXhpczogaW50IHwgTm9uZSwKKy0g ICAgICAgIG9uZXNpZGVkOiBpbnQgfCBOb25lLAorLSAgICAgICAgaW52ZXJzZTogaW50IHwgTm9u ZSwKKy0gICAgICAgIGV4cGVjdGVkX3NoYXBlOiB0dXBsZVtpbnRdLAorLSAgICApIC0+IE5vbmU6 CistICAgICAgICAjIEJ1aWxkIHRoZSBhdHRyaWJ1dGVzIGZvciBkaWZmZXJlbnQgb3BzZXQgdmVy c2lvbnMKKy0gICAgICAgIGF0dHJpYnV0ZXMgPSB7fQorLSAgICAgICAgaWYgb25lc2lkZWQgaXMg bm90IE5vbmU6CistICAgICAgICAgICAgYXR0cmlidXRlc1sib25lc2lkZWQiXSA9IG9uZXNpZGVk CistICAgICAgICBpZiBpbnZlcnNlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJpYnV0 ZXNbImludmVyc2UiXSA9IGludmVyc2UKKy0KKy0gICAgICAgIGlmIHZlcnNpb24gPCAyMDoKKy0g ICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBhdHRyaWJ1 dGVzWyJheGlzIl0gPSBheGlzCistICAgICAgICAgICAgbm9kZXMgPSBbbWFrZV9ub2RlKCJERlQi LCBbImlucHV0IiwgIiJdLCBbIm91dHB1dCJdLCAqKmF0dHJpYnV0ZXMpXQorLSAgICAgICAgICAg IHZhbHVlX2luZm9zID0gW10KKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgYXNzZXJ0IHZl cnNpb24gPj0gMjAKKy0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgorLSAgICAgICAg ICAgICAgICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAg ICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAg IFtdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgp LCAoYXhpcywpKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAg ICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIiwgImF4aXMiXSwgWyJvdXRwdXQiXSwgKiph dHRyaWJ1dGVzKSwKKy0gICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgICAgICB2YWx1ZV9p bmZvcyA9IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQs ICgpKV0KKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBub2RlcyA9IFsKKy0g ICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZUIiwgWyJpbnB1dCIsICIiLCAiIl0sIFsi b3V0cHV0Il0sICoqYXR0cmlidXRlcyksCistICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAg ICAgICAgdmFsdWVfaW5mb3MgPSBbXQorLQorLSAgICAgICAgIyBDb25zdHJ1Y3QgdGhlIGdyYXBo CistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCistICAgICAgICAgICAgW10sCist ICAgICAgICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAg ICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgW10sCistICAgICAgICAg ICAgICAgICAgICBbImlucHV0Il0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3Rl bnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAiaW5wdXQiLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAgICAgICAgICAgICAgICAgICAgICAgIGlu cHV0X3NoYXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgIG5wLm9uZXMoaW5wdXRfc2hhcGUs IGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKKy0gICAgICAgICAgICAgICAgICAgICksCist ICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICpub2RlcywKKy0gICAgICAgICAg ICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAgICAgc2VsZi5fYXNzZXJ0 X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFsKKy0gICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBUZW5zb3JQcm90by5GTE9B VCwgaW5wdXRfc2hhcGUpLAorLSAgICAgICAgICAgICAgICAqdmFsdWVfaW5mb3MsCistICAgICAg ICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZM T0FULCBleHBlY3RlZF9zaGFwZSksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBvcHNl dF9pbXBvcnRzPVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCB2ZXJzaW9uKV0sCist ICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsKKy0g ICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIG5hbWUsCistICAgICAgICAgICAgICAgIHZl cnNpb24sCistICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAorLSAgICAgICAgICAgICAgICBp bnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgYXhpcywKKy0gICAgICAgICAgICAgICAgb25l c2lkZWQsCistICAgICAgICAgICAgICAgIGludmVyc2UsCistICAgICAgICAgICAgICAgIGV4cGVj dGVkX3NoYXBlLAorLSAgICAgICAgICAgICkKKy0gICAgICAgICAgICBmb3IgKG5hbWUsIHZlcnNp b24pLCAoCistICAgICAgICAgICAgICAgIHRlc3RfYXNwZWN0LAorLSAgICAgICAgICAgICAgICBp bnB1dF9zaGFwZSwKKy0gICAgICAgICAgICAgICAgYXhpcywKKy0gICAgICAgICAgICAgICAgb25l c2lkZWQsCistICAgICAgICAgICAgICAgIGludmVyc2UsCistICAgICAgICAgICAgICAgIGV4cGVj dGVkX3NoYXBlLAorLSAgICAgICAgICAgICkgaW4gaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAg ICAgICAgICAgIGFsbF92ZXJzaW9uc19mb3IoIkRGVCIpLAorLSAgICAgICAgICAgICAgICAoCist ICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2RlZmF1bHRfYXhpcyIsICgyLCA1LCAxKSwgTm9u ZSwgTm9uZSwgTm9uZSwgKDIsIDQyLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxz X2F4aXNfMCIsICgzLCA1LCAxMCwgMSksIDAsIDAsIDAsICg0MiwgNSwgMTAsIDIpKSwKKy0gICAg ICAgICAgICAgICAgICAgICgicmVhbHNfYXhpc18xIiwgKDMsIDUsIDEwLCAxKSwgMSwgMCwgMCwg KDMsIDQyLCAxMCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzIiLCAo MywgNSwgMTAsIDEpLCAyLCAwLCAwLCAoMywgNSwgNDIsIDIpKSwKKy0gICAgICAgICAgICAgICAg ICAgICgicmVhbHNfYXhpc19uZWciLCAoMywgNSwgMTAsIDEpLCAtMiwgMCwgMCwgKDMsIDUsIDQy LCAyKSksCistICAgICAgICAgICAgICAgICAgICAoInJlYWxzX2F4aXNfMF9vbmVzaWRlZCIsICgz LCA1LCAxMCwgMSksIDAsIDEsIDAsICgyMiwgNSwgMTAsIDIpKSwKKy0gICAgICAgICAgICAgICAg ICAgICgicmVhbHNfYXhpc18xX29uZXNpZGVkIiwgKDMsIDUsIDEwLCAxKSwgMSwgMSwgMCwgKDMs IDIyLCAxMCwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgKCJyZWFsc19heGlzXzJfb25lc2lk ZWQiLCAoMywgNSwgMTAsIDEpLCAyLCAxLCAwLCAoMywgNSwgMjIsIDIpKSwKKy0gICAgICAgICAg ICAgICAgICAgICgicmVhbHNfYXhpc19uZWdfb25lc2lkZWQiLCAoMywgNSwgMTAsIDEpLCAtMiwg MSwgMCwgKDMsIDUsIDIyLCAyKSksCistICAgICAgICAgICAgICAgICAgICAoImNvbXBsZXhfZGVm YXVsdF9heGlzIiwgKDIsIDUsIDIpLCBOb25lLCBOb25lLCBOb25lLCAoMiwgNDIsIDIpKSwKKy0g ICAgICAgICAgICAgICAgICAgICgicmVhbF9pbnZlcnNlIiwgKDIsIDUsIDEpLCAxLCBOb25lLCAx LCAoMiwgNDIsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAgICgiY29tcGxleF9pbnZlcnNlIiwg KDIsIDUsIDIpLCAxLCBOb25lLCAxLCAoMiwgNDIsIDIpKSwKKy0gICAgICAgICAgICAgICAgICAg ICgiaXJmZnRfYXhpc18wIiwgKDIsIDUsIDEwLCAyKSwgMCwgMSwgMSwgKDQyLCA1LCAxMCwgMSkp LAorLSAgICAgICAgICAgICAgICAgICAgKCJpcmZmdF9heGlzXzEiLCAoMywgMywgMTAsIDIpLCAx LCAxLCAxLCAoMywgNDIsIDEwLCAxKSksCistICAgICAgICAgICAgICAgICAgICAoImlyZmZ0X2F4 aXNfMiIsICgzLCA1LCA2LCAyKSwgMiwgMSwgMSwgKDMsIDUsIDQyLCAxKSksCistICAgICAgICAg ICAgICAgICAgICAoImlyZmZ0X2F4aXNfbmVnIiwgKDMsIDUsIDYsIDIpLCAtMiwgMSwgMSwgKDMs IDUsIDQyLCAxKSksCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgKQorLSAgICAg ICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2RmdF9kZnRfbGVuZ3RoKAorLSAgICAgICAgc2Vs ZiwKKy0gICAgICAgIF86IHN0ciwKKy0gICAgICAgIHZlcnNpb246IGludCwKKy0gICAgICAgIF90 ZXN0X2FzcGVjdDogc3RyLAorLSAgICAgICAgaW5wdXRfc2hhcGU6IHR1cGxlW2ludF0sCistICAg ICAgICBheGlzOiBpbnQgfCBOb25lLAorLSAgICAgICAgb25lc2lkZWQ6IGludCB8IE5vbmUsCist ICAgICAgICBpbnZlcnNlOiBpbnQgfCBOb25lLAorLSAgICAgICAgZXhwZWN0ZWRfc2hhcGU6IHR1 cGxlW2ludF0sCistICAgICkgLT4gTm9uZToKKy0gICAgICAgICMgQnVpbGQgdGhlIGF0dHJpYnV0 ZXMgZm9yIGRpZmZlcmVudCBvcHNldCB2ZXJzaW9ucworLSAgICAgICAgYXR0cmlidXRlcyA9IHt9 CistICAgICAgICBpZiBvbmVzaWRlZCBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICBhdHRyaWJ1 dGVzWyJvbmVzaWRlZCJdID0gb25lc2lkZWQKKy0gICAgICAgIGlmIGludmVyc2UgaXMgbm90IE5v bmU6CistICAgICAgICAgICAgYXR0cmlidXRlc1siaW52ZXJzZSJdID0gaW52ZXJzZQorLQorLSAg ICAgICAgZGZ0X2xlbmd0aCA9IDQyCistCistICAgICAgICBpZiB2ZXJzaW9uIDwgMjA6CistICAg ICAgICAgICAgaWYgYXhpcyBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgYXR0cmlidXRl c1siYXhpcyJdID0gYXhpcworLSAgICAgICAgICAgIG5vZGVzID0gWworLSAgICAgICAgICAgICAg ICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAg ICAgICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBbImRmdF9sZW5ndGgiXSwKKy0g ICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAg ICAgICAgICJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoZGZ0X2xlbmd0aCwp CistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAg ICAgICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiZGZ0X2xlbmd0aCJdLCBbIm91dHB1 dCJdLCAqKmF0dHJpYnV0ZXMpLAorLSAgICAgICAgICAgIF0KKy0gICAgICAgICAgICB2YWx1ZV9p bmZvcyA9IFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8u SU5UNjQsICgpKV0KKy0gICAgICAgIGVsc2U6CistICAgICAgICAgICAgYXNzZXJ0IHZlcnNpb24g Pj0gMjAKKy0gICAgICAgICAgICBpZiBheGlzIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAg ICBub2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAg ICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAor LSAgICAgICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAorLSAgICAgICAgICAgICAgICAgICAg ICAgIHZhbHVlPW1ha2VfdGVuc29yKCJheGlzIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoYXhp cywpKSwKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICBtYWtl X25vZGUoCistICAgICAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbImRmdF9sZW5ndGgi XSwKKy0gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgImRmdF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCks IChkZnRfbGVuZ3RoLCkKKy0gICAgICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAg ICAgICAgICAgICAgICAiREZUIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBbImlucHV0Iiwg ImRmdF9sZW5ndGgiLCAiYXhpcyJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFsib3V0cHV0 Il0sCistICAgICAgICAgICAgICAgICAgICAgICAgKiphdHRyaWJ1dGVzLAorLSAgICAgICAgICAg ICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgXQorLSAgICAgICAgICAgICAgICB2YWx1ZV9p bmZvcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oImRm dF9sZW5ndGgiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorLSAgICAgICAgICAgICAgICAgICAg bWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiYXhpcyIsIFRlbnNvclByb3RvLklOVDY0LCAoKSksCist ICAgICAgICAgICAgICAgIF0KKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBu b2RlcyA9IFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAg ICAgICAgICAgICAiQ29uc3RhbnQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorLSAg ICAgICAgICAgICAgICAgICAgICAgIFsiZGZ0X2xlbmd0aCJdLAorLSAgICAgICAgICAgICAgICAg ICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAi ZGZ0X2xlbmd0aCIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKGRmdF9sZW5ndGgsKQorLSAgICAg ICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgICAgICApLAorLSAgICAgICAg ICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJERlQiLAor LSAgICAgICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiLCAiZGZ0X2xlbmd0aCIsICIiXSwKKy0g ICAgICAgICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICoqYXR0cmlidXRlcywKKy0gICAgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAg ICAgIF0KKy0gICAgICAgICAgICAgICAgdmFsdWVfaW5mb3MgPSBbCistICAgICAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5U NjQsICgpKQorLSAgICAgICAgICAgICAgICBdCisrICAgICAgICAgICAgZ3JhcGgsCisrICAgICAg ICAgICAgWworKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJzaGFwZSIs IFRlbnNvclByb3RvLklOVDY0LCAoKSksCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3Zh bHVlX2luZm8oInkiLCBUZW5zb3JQcm90by5GTE9BVCwgKDEwLCkpLAorKyAgICAgICAgICAgIF0s CisrICAgICAgICApCisgCistICAgICAgICAjIENvbnN0cnVjdCB0aGUgZ3JhcGgKKyAgICAgICAg IGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICAg ICBbCisgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKyAgICAgICAgICAgICAgICAgICAgICJD b25zdGFudCIsCisgICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAg IFsiaW5wdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAg ICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCistICAgICAgICAgICAgICAgICAgICAgICAg VGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRfc2hhcGUs CistICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhpbnB1dF9zaGFwZSwgZHR5cGU9bnAu ZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKysgICAgICAgICAg ICAgICAgICAgIFsic2hhcGUiXSwKKysgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVu c29yKCJzaGFwZSIsIFRlbnNvclByb3RvLklOVDY0LCAoKSwgKDEwLCkpLAorICAgICAgICAgICAg ICAgICApLAorLSAgICAgICAgICAgICAgICAqbm9kZXMsCisrICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgiSGFubldpbmRvdyIsIFsic2hhcGUiXSwgWyJ5Il0sIHBlcmlvZGljPTApLAorICAgICAg ICAgICAgIF0sCisgICAgICAgICAgICAgW10sCisgICAgICAgICApCisgICAgICAgICBzZWxmLl9h c3NlcnRfaW5mZXJyZWQoCisgICAgICAgICAgICAgZ3JhcGgsCisgICAgICAgICAgICAgWworLSAg ICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclByb3Rv LkZMT0FULCBpbnB1dF9zaGFwZSksCistICAgICAgICAgICAgICAgICp2YWx1ZV9pbmZvcywKKy0g ICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJv dG8uRkxPQVQsIGV4cGVjdGVkX3NoYXBlKSwKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3Jf dmFsdWVfaW5mbygic2hhcGUiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorKyAgICAgICAgICAg ICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwp KSwKKyAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5t YWtlX29wc2V0aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKyAgICAgICAgICkKKyAKKy0gICAg QHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgibGFzdCIs IDMpLAorLSAgICAgICAgICAgICgibGFzdF9uZWdhdGl2ZSIsIC0xKSwKKy0gICAgICAgICAgICAo Im91dF9vZl9yYW5nZSIsIDQpLAorLSAgICAgICAgICAgICgib3V0X29mX3JhbmdlX25lZ2F0aXZl IiwgLTUpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X2RmdF9pbnZhbGlkX2F4 aXNfb3BzZXQxNyhzZWxmLCBfOiBzdHIsIGF4aXM6IGludCkgLT4gTm9uZToKKysgICAgZGVmIHRl c3RfYmxhY2ttYW53aW5kb3coc2VsZik6CisgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3Jh cGgoCisgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICBt YWtlX25vZGUoCisgICAgICAgICAgICAgICAgICAgICAiQ29uc3RhbnQiLAorICAgICAgICAgICAg ICAgICAgICAgW10sCistICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCistICAgICAgICAg ICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgICAgICAgICAi aW5wdXQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FULAorLSAg ICAgICAgICAgICAgICAgICAgICAgICgyLCA1LCA1LCAyKSwKKy0gICAgICAgICAgICAgICAgICAg ICAgICBucC5vbmVzKCgyLCA1LCA1LCAyKSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAor LSAgICAgICAgICAgICAgICAgICAgKSwKKysgICAgICAgICAgICAgICAgICAgIFsic2hhcGUiXSwK KysgICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKCJzaGFwZSIsIFRlbnNvclBy b3RvLklOVDY0LCAoKSwgKDEwLCkpLAorICAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAg ICAgICBtYWtlX25vZGUoIkRGVCIsIFsiaW5wdXQiLCAiIl0sIFsib3V0cHV0Il0sIG9uZXNpZGVk PTEsIGF4aXM9YXhpcyksCisrICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiSGFtbWluZ1dpbmRv dyIsIFsic2hhcGUiXSwgWyJ5Il0pLAorICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgW10s CisgICAgICAgICApCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKG9ubnguc2hhcGVf aW5mZXJlbmNlLkluZmVyZW5jZUVycm9yKToKKy0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfaW5m ZXJyZWQoCistICAgICAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgICAgICBbCistICAg ICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclBy b3RvLkZMT0FULCAoMiwgNSwgNSwgMikpLAorLSAgICAgICAgICAgICAgICAgICAgbWFrZV90ZW5z b3JfdmFsdWVfaW5mbygib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCAzLCA1LCAyKSks CistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hl bHBlci5tYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDE3KV0sCistICAgICAgICAgICAgKQorKyAg ICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorKyAgICAgICAgICAgIGdyYXBoLAorKyAgICAg ICAgICAgIFsKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygic2hhcGUi LCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpLAorKyAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJ5IiwgVGVuc29yUHJvdG8uRkxPQVQsICgxMCwpKSwKKysgICAgICAgICAgICBd LAorKyAgICAgICAgKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBb CistICAgICAgICAgICAgKCJsYXN0IiwgMyksCistICAgICAgICAgICAgKCJsYXN0X25lZ2F0aXZl IiwgLTEpLAorLSAgICAgICAgICAgICgib3V0X29mX3JhbmdlIiwgNCksCistICAgICAgICAgICAg KCJvdXRfb2ZfcmFuZ2VfbmVnYXRpdmUiLCAtNSksCistICAgICAgICBdCistICAgICkKKy0gICAg ZGVmIHRlc3RfZGZ0X2ludmFsaWRfYXhpc19vcHNldDIwKHNlbGYsIF86IHN0ciwgYXhpczogaW50 KSAtPiBOb25lOgorICAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorICAgICAgICAg ICAgIFtdLAorICAgICAgICAgICAgIFsKKyAgICAgICAgICAgICAgICAgbWFrZV9ub2RlKAorICAg ICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwKKyAgICAgICAgICAgICAgICAgICAgIFtdLAor LSAgICAgICAgICAgICAgICAgICAgWyJpbnB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgdmFs dWU9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICAgICAgICAgImlucHV0IiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5GTE9BVCwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAoMiwgNSwgNSwgMiksCistICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcygo MiwgNSwgNSwgMiksIGR0eXBlPW5wLmZsb2F0MzIpLmZsYXR0ZW4oKSwKKy0gICAgICAgICAgICAg ICAgICAgICksCistICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9k ZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAg ICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiYXhpcyJdLAorLSAgICAgICAgICAgICAgICAg ICAgdmFsdWU9bWFrZV90ZW5zb3IoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCksIChheGlz LCkpLAorKyAgICAgICAgICAgICAgICAgICAgWyJzaGFwZSJdLAorKyAgICAgICAgICAgICAgICAg ICAgdmFsdWU9bWFrZV90ZW5zb3IoInNoYXBlIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpLCAoMTAs KSksCisgICAgICAgICAgICAgICAgICksCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgiREZU IiwgWyJpbnB1dCIsICIiLCAiYXhpcyJdLCBbIm91dHB1dCJdKSwKKysgICAgICAgICAgICAgICAg bWFrZV9ub2RlKCJIYW1taW5nV2luZG93IiwgWyJzaGFwZSJdLCBbInkiXSwgcGVyaW9kaWM9MCks CisgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICBbXSwKKyAgICAgICAgICkKKy0gICAgICAg IHdpdGggc2VsZi5hc3NlcnRSYWlzZXMob25ueC5zaGFwZV9pbmZlcmVuY2UuSW5mZXJlbmNlRXJy b3IpOgorLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKy0gICAgICAgICAgICAg ICAgZ3JhcGgsCistICAgICAgICAgICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIG1ha2Vf dGVuc29yX3ZhbHVlX2luZm8oImlucHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsICgyLCA1LCA1LCAy KSksCistICAgICAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJheGlzIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAgICAgICAgICAgICAgIG1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIm91dHB1dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMiwgMywgNSwgMikpLAor LSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxw ZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAorLSAgICAgICAgICAgICkKKysgICAg ICAgIHNlbGYuX2Fzc2VydF9pbmZlcnJlZCgKKysgICAgICAgICAgICBncmFwaCwKKysgICAgICAg ICAgICBbCisrICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oInNoYXBlIiwg VGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKysgICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFs dWVfaW5mbygieSIsIFRlbnNvclByb3RvLkZMT0FULCAoMTAsKSksCisrICAgICAgICAgICAgXSwK KysgICAgICAgICkKKyAKKyAgICAgZGVmIHRlc3RfZGZ0X3JmZnRfaW52YWxpZF9jb21wbGV4X2lu cHV0X29wc2V0MTcoc2VsZikgLT4gTm9uZToKKyAgICAgICAgICIiIlRlc3QgdGhhdCBSRkZUIChv bmVzaWRlZD0xLCBpbnZlcnNlPTApIHJlamVjdHMgY29tcGxleCBpbnB1dCIiIgorQEAgLTEwMDEx LDEyOCArNzgwNiw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVu Y2VIZWxwZXIpOgorICAgICAgICAgICAgICAgICBvcHNldF9pbXBvcnRzPVtoZWxwZXIubWFrZV9v cHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAorICAgICAgICAgICAgICkKKyAKKy0gICAgQHBhcmFt ZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgicmVhbCIsICgyLCA1 LCA1LCAxKSksCistICAgICAgICAgICAgKCJjb21wbGV4IiwgKDIsIDUsIDUsIDIpKSwKKy0gICAg ICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9kZnRfZHluYW1pY19heGlzX29wc2V0MjAoc2Vs ZiwgXzogc3RyLCBzaGFwZTogdHVwbGVbaW50LCAuLi5dKSAtPiBOb25lOgorLSAgICAgICAgZ3Jh cGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoImF4aXMiLCBUZW5zb3JQcm90 by5JTlQ2NCwgKCkpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9k ZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAg ICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0gICAgICAgICAgICAgICAg ICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIs CistICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAg ICAgICAgICAgICAgICAgc2hhcGUsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhz aGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAgICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQi LCBbImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0pLAorLSAgICAgICAgICAgIF0sCist ICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3NlcnRfaW5mZXJy ZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAgICAgICAgICAgICAg ICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZMT0FULCBzaGFw ZSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dHB1dCIsIFRl bnNvclByb3RvLkZMT0FULCAoMiwgNSwgNSwgMikpLAorLSAgICAgICAgICAgIF0sCistICAgICAg ICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMjAp XSwKKy0gICAgICAgICkKKy0KKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAgICAg WworLSAgICAgICAgICAgICgicmVhbCIsICgyLCA1LCA1LCAxKSksCistICAgICAgICBdCistICAg ICkKKy0gICAgZGVmIHRlc3RfZGZ0X2R5bmFtaWNfYXhpc19vbmVzaWRlZF9kZnRfbGVuZ3RoX29w c2V0MjAoCistICAgICAgICBzZWxmLCBfOiBzdHIsIHNoYXBlOiB0dXBsZVtpbnQsIC4uLl0KKy0g ICAgKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAg ICAgICAgIFsoImF4aXMiLCBUZW5zb3JQcm90by5JTlQ2NCwgKCkpXSwKKy0gICAgICAgICAgICBb CistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25z dGFudCIsCistICAgICAgICAgICAgICAgICAgICBbXSwKKy0gICAgICAgICAgICAgICAgICAgIFsi aW5wdXQiXSwKKy0gICAgICAgICAgICAgICAgICAgIHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAg ICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCistICAgICAgICAgICAgICAgICAgICAgICAgVGVu c29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAgICAgICAgICAgICAgc2hhcGUsCistICAgICAg ICAgICAgICAgICAgICAgICAgbnAub25lcyhzaGFwZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRl bigpLAorLSAgICAgICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAg ICAgICAgICAgICAgbWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkNvbnN0YW50IiwK Ky0gICAgICAgICAgICAgICAgICAgIFtdLAorLSAgICAgICAgICAgICAgICAgICAgWyJkZnRfbGVu Z3RoIl0sCistICAgICAgICAgICAgICAgICAgICB2YWx1ZT1tYWtlX3RlbnNvcigKKy0gICAgICAg ICAgICAgICAgICAgICAgICAiZGZ0X2xlbmd0aCIsCistICAgICAgICAgICAgICAgICAgICAgICAg VGVuc29yUHJvdG8uSU5UNjQsCistICAgICAgICAgICAgICAgICAgICAgICAgKCksCistICAgICAg ICAgICAgICAgICAgICAgICAgbnAuYXJyYXkoWzQyXSwgZHR5cGU9bnAuaW50NjQpLAorLSAgICAg ICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAg bWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkRGVCIsIFsiaW5wdXQiLCAiZGZ0X2xl bmd0aCIsICJheGlzIl0sIFsib3V0cHV0Il0sIG9uZXNpZGVkPTEKKy0gICAgICAgICAgICAgICAg KSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgICAgIFtdLAorLSAgICAgICAgKQorLSAgICAg ICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAg ICAgIFsKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiaW5wdXQiLCBU ZW5zb3JQcm90by5GTE9BVCwgc2hhcGUpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcl92 YWx1ZV9pbmZvKCJkZnRfbGVuZ3RoIiwgVGVuc29yUHJvdG8uSU5UNjQsICgpKSwKKy0gICAgICAg ICAgICAgICAgbWFrZV90ZW5zb3JfdmFsdWVfaW5mbygKKy0gICAgICAgICAgICAgICAgICAgICJv dXRwdXQiLCBUZW5zb3JQcm90by5GTE9BVCwgKE5vbmUsIE5vbmUsIE5vbmUsIDIpCistICAgICAg ICAgICAgICAgICksCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRz PVtoZWxwZXIubWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAyMCldLAorLSAgICAgICAgKQorLQor LSAgICBAcGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKCJy ZWFsIiwgKDIsIDUsIDUsIDEpKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9k ZnRfZHluYW1pY19heGlzX29uZXNpZGVkX29wc2V0MjAoCistICAgICAgICBzZWxmLCBfOiBzdHIs IHNoYXBlOiB0dXBsZVtpbnQsIC4uLl0KKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGgg PSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAgICAgIFsoImF4aXMiLCBUZW5zb3JQcm90by5J TlQ2NCwgKCkpXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSgK Ky0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudCIsCistICAgICAgICAgICAgICAgICAgICBb XSwKKy0gICAgICAgICAgICAgICAgICAgIFsiaW5wdXQiXSwKKy0gICAgICAgICAgICAgICAgICAg IHZhbHVlPW1ha2VfdGVuc29yKAorLSAgICAgICAgICAgICAgICAgICAgICAgICJpbnB1dCIsCist ICAgICAgICAgICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uRkxPQVQsCistICAgICAgICAgICAg ICAgICAgICAgICAgc2hhcGUsCistICAgICAgICAgICAgICAgICAgICAgICAgbnAub25lcyhzaGFw ZSwgZHR5cGU9bnAuZmxvYXQzMikuZmxhdHRlbigpLAorLSAgICAgICAgICAgICAgICAgICAgKSwK Ky0gICAgICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICAgICAgbWFrZV9ub2RlKCJERlQiLCBb ImlucHV0IiwgIiIsICJheGlzIl0sIFsib3V0cHV0Il0sIG9uZXNpZGVkPTEpLAorLSAgICAgICAg ICAgIF0sCistICAgICAgICAgICAgW10sCistICAgICAgICApCistICAgICAgICBzZWxmLl9hc3Nl cnRfaW5mZXJyZWQoCistICAgICAgICAgICAgZ3JhcGgsCistICAgICAgICAgICAgWworLSAgICAg ICAgICAgICAgICBtYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJpbnB1dCIsIFRlbnNvclByb3RvLkZM T0FULCBzaGFwZSksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yX3ZhbHVlX2luZm8oCist ICAgICAgICAgICAgICAgICAgICAib3V0cHV0IiwgVGVuc29yUHJvdG8uRkxPQVQsIChOb25lLCBO b25lLCBOb25lLCAyKQorLSAgICAgICAgICAgICAgICApLAorLSAgICAgICAgICAgIF0sCistICAg ICAgICAgICAgb3BzZXRfaW1wb3J0cz1baGVscGVyLm1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwg MjApXSwKKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3RfZGZ0X29uZXNpZGVkX2RlZmF1bHRf YXhpc19vcHNldDE3KHNlbGYpIC0+IE5vbmU6CisgICAgICAgICAjIE9wc2V0IDE3IHNldHMgZGVm YXVsdCBheGlzIHRvIGJlIDEuCisgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2VfZ3JhcGgoCitA QCAtMTA1OTEsNDEgKzgyNjQsNiBAQCBjbGFzcyBUZXN0U2hhcGVJbmZlcmVuY2UoVGVzdFNoYXBl SW5mZXJlbmNlSGVscGVyKToKKyAgICAgICAgICAgICBdLAorICAgICAgICAgKQorIAorLSAgICBA cGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAgKFsxLCAyLCAz XSwgWyIxIiwgIjIiXSksCistICAgICAgICAgICAgKFsxLCAyLCAzXSwgTm9uZSksCistICAgICAg ICAgICAgKE5vbmUsIFsiMSIsICIyIiwgIjMiXSksCistICAgICAgICAgICAgKE5vbmUsIE5vbmUp LAorLSAgICAgICAgXQorLSAgICApCistICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUws ICJPTk5YX01MIHJlcXVpcmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQorLSAgICBk ZWYgdGVzdF9jYXRlZ29yeV9tYXBwZXJfZmFpbHNfaWZfaW52YWxpZF9hdHRyaWJ1dGVzKAorLSAg ICAgICAgc2VsZiwgY2F0c19pbnQ2NHMsIGNhdHNfc3RyaW5ncworLSAgICApIC0+IE5vbmU6Cist ICAgICAgICBjYXQgPSBtYWtlX25vZGUoCistICAgICAgICAgICAgIkNhdGVnb3J5TWFwcGVyIiwK Ky0gICAgICAgICAgICBbIngiXSwKKy0gICAgICAgICAgICBbInkiXSwKKy0gICAgICAgICAgICBk b21haW49T05OWF9NTF9ET01BSU4sCistICAgICAgICAgICAgY2F0c19pbnQ2NHM9Y2F0c19pbnQ2 NHMsCistICAgICAgICAgICAgY2F0c19zdHJpbmdzPWNhdHNfc3RyaW5ncywKKy0gICAgICAgICkK Ky0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4Iiwg VGVuc29yUHJvdG8uSU5UNjQsICgzMCwgNCwgNSkpXSwKKy0gICAgICAgICAgICBbY2F0XSwKKy0g ICAgICAgICAgICBbXSwKKy0gICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAor LSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAorLSAgICAg ICAgICAgIHNlbGYuX2luZmVycmVkLAorLSAgICAgICAgICAgIGdyYXBoLAorLSAgICAgICAgICAg IG9wc2V0X2ltcG9ydHM9WworLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9NTF9E T01BSU4sIDEpLAorLSAgICAgICAgICAgICAgICBtYWtlX29wc2V0aWQoT05OWF9ET01BSU4sIDEx KSwKKy0gICAgICAgICAgICBdLAorLSAgICAgICAgKQorLQorICAgICBAdW5pdHRlc3Quc2tpcFVu bGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0 b3JzIikKKyAgICAgZGVmIHRlc3RfdHJlZV9lbnNlbWJsZV9yZWdyZXNzb3Ioc2VsZikgLT4gTm9u ZToKKyAgICAgICAgIHRyZWUgPSBtYWtlX25vZGUoCitAQCAtMTA2NDksMTMxICs4Mjg3LDYgQEAg Y2xhc3MgVGVzdFNoYXBlSW5mZXJlbmNlKFRlc3RTaGFwZUluZmVyZW5jZUhlbHBlcik6CisgICAg ICAgICAgICAgXSwKKyAgICAgICAgICkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKFtU ZW5zb3JQcm90by5GTE9BVCwgVGVuc29yUHJvdG8uRE9VQkxFLCBUZW5zb3JQcm90by5GTE9BVDE2 XSkKKy0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhfTUwgcmVxdWlyZWQg dG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCistICAgIGRlZiB0ZXN0X3RyZWVfZW5zZW1i bGUoc2VsZiwgZHR5cGUpIC0+IE5vbmU6CistICAgICAgICBpbnRlcmlvcl9ub2RlcyA9IDUKKy0g ICAgICAgIGxlYXZlcyA9IDkKKy0gICAgICAgIHRyZWUgPSBtYWtlX25vZGUoCistICAgICAgICAg ICAgIlRyZWVFbnNlbWJsZSIsCistICAgICAgICAgICAgWyJ4Il0sCistICAgICAgICAgICAgWyJ5 Il0sCistICAgICAgICAgICAgZG9tYWluPU9OTlhfTUxfRE9NQUlOLAorLSAgICAgICAgICAgIG5f dGFyZ2V0cz01LAorLSAgICAgICAgICAgIG5vZGVzX2ZlYXR1cmVpZHM9WzBdICogaW50ZXJpb3Jf bm9kZXMsCistICAgICAgICAgICAgbm9kZXNfc3BsaXRzPW1ha2VfdGVuc29yKAorLSAgICAgICAg ICAgICAgICAibm9kZXNfc3BsaXRzIiwKKy0gICAgICAgICAgICAgICAgZHR5cGUsCistICAgICAg ICAgICAgICAgIChpbnRlcmlvcl9ub2RlcywpLAorLSAgICAgICAgICAgICAgICBsaXN0KHJhbmdl KGludGVyaW9yX25vZGVzKSksCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBub2Rlc19t b2Rlcz1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAgICAgIm5vZGVzX21vZGVzIiwKKy0gICAg ICAgICAgICAgICAgVGVuc29yUHJvdG8uVUlOVDgsCistICAgICAgICAgICAgICAgIChpbnRlcmlv cl9ub2RlcywpLAorLSAgICAgICAgICAgICAgICBbMF0gKiBpbnRlcmlvcl9ub2RlcywKKy0gICAg ICAgICAgICApLAorLSAgICAgICAgICAgIG5vZGVzX3RydWVub2RlaWRzPVswXSAqIGludGVyaW9y X25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX2ZhbHNlbm9kZWlkcz1bMF0gKiBpbnRlcmlvcl9u b2RlcywKKy0gICAgICAgICAgICBub2Rlc190cnVlbGVhZnM9WzBdICogaW50ZXJpb3Jfbm9kZXMs CistICAgICAgICAgICAgbm9kZXNfZmFsc2VsZWFmcz1bMF0gKiBpbnRlcmlvcl9ub2RlcywKKy0g ICAgICAgICAgICBtZW1iZXJzaGlwX3ZhbHVlcz1tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAg ICAgIm1lbWJlcnNoaXBfdmFsdWVzIiwKKy0gICAgICAgICAgICAgICAgZHR5cGUsCistICAgICAg ICAgICAgICAgICg3LCksCistICAgICAgICAgICAgICAgIFswLjAsIDAuMSwgMC4yLCBucC5uYW4s IDAuNCwgMC41LCAxLjBdLAorLSAgICAgICAgICAgICksCistICAgICAgICAgICAgbGVhZl90YXJn ZXRpZHM9WzBdICogbGVhdmVzLAorLSAgICAgICAgICAgIGxlYWZfd2VpZ2h0cz1tYWtlX3RlbnNv cigibGVhZl93ZWlnaHRzIiwgZHR5cGUsIChsZWF2ZXMsKSwgWzFdICogbGVhdmVzKSwKKy0gICAg ICAgICAgICB0cmVlX3Jvb3RzPVswXSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIGdyYXBoID0g c2VsZi5fbWFrZV9ncmFwaCgKKy0gICAgICAgICAgICBbKCJ4IiwgZHR5cGUsICgiQmF0Y2ggU2l6 ZSIsICJGZWF0dXJlcyIpKV0sCistICAgICAgICAgICAgW3RyZWVdLAorLSAgICAgICAgICAgIFtd LAorLSAgICAgICAgKQorLQorLSAgICAgICAgc2VsZi5fYXNzZXJ0X2luZmVycmVkKAorLSAgICAg ICAgICAgIGdyYXBoLAorLSAgICAgICAgICAgIFttYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJ5Iiwg ZHR5cGUsICgiQmF0Y2ggU2l6ZSIsIDUpKV0sCistICAgICAgICAgICAgb3BzZXRfaW1wb3J0cz1b CistICAgICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX01MX0RPTUFJTiwgNSksCistICAg ICAgICAgICAgICAgIG1ha2Vfb3BzZXRpZChPTk5YX0RPTUFJTiwgMTEpLAorLSAgICAgICAgICAg IF0sCistICAgICAgICApCistCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAg IFsKKy0gICAgICAgICAgICAoCistICAgICAgICAgICAgICAgIFswXSAqIDYsCistICAgICAgICAg ICAgICAgIG1ha2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICg5 LCksIFsxXSAqIDkpLAorLSAgICAgICAgICAgICAgICBtYWtlX3RlbnNvcigibm9kZXNfc3BsaXRz IiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoNSwpLCBbMV0gKiA1KSwKKy0gICAgICAgICAgICApLAor LSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgWzBdICogNSwKKy0gICAgICAgICAgICAg ICAgbWFrZV90ZW5zb3IoImxlYWZfd2VpZ2h0cyIsIFRlbnNvclByb3RvLkZMT0FULCAoOSwpLCBb MV0gKiA5KSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm5vZGVzX3NwbGl0cyIsIFRl bnNvclByb3RvLkRPVUJMRSwgKDUsKSwgWzFdICogNSksCistICAgICAgICAgICAgKSwKKy0gICAg ICAgICAgICAoCistICAgICAgICAgICAgICAgIFswXSAqIDUsCistICAgICAgICAgICAgICAgIG1h a2VfdGVuc29yKCJsZWFmX3dlaWdodHMiLCBUZW5zb3JQcm90by5ET1VCTEUsICgxOCwpLCBbMV0g KiAxOCksCistICAgICAgICAgICAgICAgIG1ha2VfdGVuc29yKCJub2Rlc19zcGxpdHMiLCBUZW5z b3JQcm90by5ET1VCTEUsICg1LCksIFsxXSAqIDUpLAorLSAgICAgICAgICAgICksCistICAgICAg ICAgICAgKAorLSAgICAgICAgICAgICAgICBbMF0gKiA1LAorLSAgICAgICAgICAgICAgICBtYWtl X3RlbnNvcigibGVhZl93ZWlnaHRzIiwgVGVuc29yUHJvdG8uRE9VQkxFLCAoOSwpLCBbMV0gKiA5 KSwKKy0gICAgICAgICAgICAgICAgbWFrZV90ZW5zb3IoIm5vZGVzX3NwbGl0cyIsIFRlbnNvclBy b3RvLkZMT0FULCAoNSwpLCBbMV0gKiA1KSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgXQor LSAgICApCistICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE9OTlhfTUwsICJPTk5YX01MIHJlcXVp cmVkIHRvIHRlc3QgYWkub25ueC5tbCBvcGVyYXRvcnMiKQorLSAgICBkZWYgdGVzdF90cmVlX2Vu c2VtYmxlX2ZhaWxzX2lmX2ludmFsaWRfYXR0cmlidXRlcygKKy0gICAgICAgIHNlbGYsCistICAg ICAgICBub2Rlc190cnVlbm9kZWlkcywKKy0gICAgICAgIGxlYWZfd2VpZ2h0cywKKy0gICAgICAg IG5vZGVzX3NwbGl0cywKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgaW50ZXJpb3Jfbm9kZXMg PSA1CistICAgICAgICBsZWF2ZXMgPSA5CistICAgICAgICB0cmVlID0gbWFrZV9ub2RlKAorLSAg ICAgICAgICAgICJUcmVlRW5zZW1ibGUiLAorLSAgICAgICAgICAgIFsieCJdLAorLSAgICAgICAg ICAgIFsieSJdLAorLSAgICAgICAgICAgIGRvbWFpbj1PTk5YX01MX0RPTUFJTiwKKy0gICAgICAg ICAgICBuX3RhcmdldHM9NSwKKy0gICAgICAgICAgICBub2Rlc19mZWF0dXJlaWRzPVswXSAqIGlu dGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX3NwbGl0cz1ub2Rlc19zcGxpdHMsCist ICAgICAgICAgICAgbm9kZXNfbW9kZXM9bWFrZV90ZW5zb3IoCistICAgICAgICAgICAgICAgICJu b2Rlc19tb2RlcyIsCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQ4LAorLSAgICAg ICAgICAgICAgICAoaW50ZXJpb3Jfbm9kZXMsKSwKKy0gICAgICAgICAgICAgICAgWzBdICogaW50 ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgKSwKKy0gICAgICAgICAgICBub2Rlc190cnVlbm9k ZWlkcz1ub2Rlc190cnVlbm9kZWlkcywKKy0gICAgICAgICAgICBub2Rlc19mYWxzZW5vZGVpZHM9 WzBdICogaW50ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbm9kZXNfdHJ1ZWxlYWZzPVswXSAq IGludGVyaW9yX25vZGVzLAorLSAgICAgICAgICAgIG5vZGVzX2ZhbHNlbGVhZnM9WzBdICogaW50 ZXJpb3Jfbm9kZXMsCistICAgICAgICAgICAgbGVhZl90YXJnZXRpZHM9WzBdICogbGVhdmVzLAor LSAgICAgICAgICAgIGxlYWZfd2VpZ2h0cz1sZWFmX3dlaWdodHMsCistICAgICAgICAgICAgdHJl ZV9yb290cz1bMF0sCistICAgICAgICApCistCistICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf Z3JhcGgoCistICAgICAgICAgICAgWygieCIsIFRlbnNvclByb3RvLkRPVUJMRSwgKCJCYXRjaCBT aXplIiwgIkZlYXR1cmVzIikpXSwKKy0gICAgICAgICAgICBbdHJlZV0sCistICAgICAgICAgICAg W10sCistICAgICAgICApCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKy0gICAgICAgICAg ICBvbm54LnNoYXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwKKy0gICAgICAgICAgICBzZWxm Ll9pbmZlcnJlZCwKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBvcHNldF9pbXBv cnRzPVsKKy0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCA1KSwK Ky0gICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCistICAgICAg ICAgICAgXSwKKy0gICAgICAgICkKKy0KKyAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9N TCwgIk9OTlhfTUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCisgICAg IGRlZiB0ZXN0X3RyZWVfZW5zZW1ibGVfY2xhc3NpZmllcihzZWxmKSAtPiBOb25lOgorICAgICAg ICAgdHJlZSA9IG1ha2Vfbm9kZSgKK0BAIC0xMDg3OCw0MCArODM5MSw2IEBAIGNsYXNzIFRlc3RT aGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VIZWxwZXIpOgorICAgICAgICAgICAgIF0s CisgICAgICAgICApCisgCistICAgIEBwYXJhbWV0ZXJpemVkLmV4cGFuZCgKKy0gICAgICAgIFsK Ky0gICAgICAgICAgICAoWzEsIDIsIDNdLCBbIjEiLCAiMiIsICIzIl0pLAorLSAgICAgICAgICAg IChOb25lLCBOb25lKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBAdW5pdHRlc3Quc2tpcFVu bGVzcyhPTk5YX01MLCAiT05OWF9NTCByZXF1aXJlZCB0byB0ZXN0IGFpLm9ubngubWwgb3BlcmF0 b3JzIikKKy0gICAgZGVmIHRlc3Rfb25lX2hvdF9lbmNvZGVyX2ZhaWxzX2lmX2ludmFsaWRfYXR0 cmlidXRlcygKKy0gICAgICAgIHNlbGYsIGNhdHNfaW50NjRzLCBjYXRzX3N0cmluZ3MKKy0gICAg KSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFsoImlucHV0IiwgVGVuc29yUHJvdG8uSU5UNjQsICgyLCAiTiIsIDMpKV0sCistICAgICAg ICAgICAgWworLSAgICAgICAgICAgICAgICBtYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAg ICAiT25lSG90RW5jb2RlciIsCistICAgICAgICAgICAgICAgICAgICBbImlucHV0Il0sCistICAg ICAgICAgICAgICAgICAgICBbIm91dHB1dCJdLAorLSAgICAgICAgICAgICAgICAgICAgY2F0c19p bnQ2NHM9Y2F0c19pbnQ2NHMsCistICAgICAgICAgICAgICAgICAgICBjYXRzX3N0cmluZ3M9Y2F0 c19zdHJpbmdzLAorLSAgICAgICAgICAgICAgICAgICAgZG9tYWluPSJhaS5vbm54Lm1sIiwKKy0g ICAgICAgICAgICAgICAgKQorLSAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW10sCistICAg ICAgICApCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKKy0gICAgICAgICAgICBvbm54LnNo YXBlX2luZmVyZW5jZS5JbmZlcmVuY2VFcnJvciwKKy0gICAgICAgICAgICBzZWxmLl9pbmZlcnJl ZCwKKy0gICAgICAgICAgICBncmFwaCwKKy0gICAgICAgICAgICBvcHNldF9pbXBvcnRzPVsKKy0g ICAgICAgICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfTUxfRE9NQUlOLCAxKSwKKy0gICAgICAg ICAgICAgICAgbWFrZV9vcHNldGlkKE9OTlhfRE9NQUlOLCAxMSksCistICAgICAgICAgICAgXSwK Ky0gICAgICAgICkKKy0KKyAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoT05OWF9NTCwgIk9OTlhf TUwgcmVxdWlyZWQgdG8gdGVzdCBhaS5vbm54Lm1sIG9wZXJhdG9ycyIpCisgICAgIGRlZiB0ZXN0 X3ppcF9tYXAoc2VsZikgLT4gTm9uZToKKyAgICAgICAgIHBhcmFtcyA9ICgKK0BAIC0xMTA2Niwy OCArODU0NSw2IEBAIGNsYXNzIFRlc3RTaGFwZUluZmVyZW5jZShUZXN0U2hhcGVJbmZlcmVuY2VI ZWxwZXIpOgorICAgICAgICAgICAgIG9ubnguY2hlY2tlci5jaGVja19tb2RlbChtb2RlbCwgZnVs bF9jaGVjaz1UcnVlKQorICAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNlLmluZmVyX3No YXBlcyhtb2RlbCkKKyAKKy0gICAgQHBhcmFtZXRlcml6ZWQuZXhwYW5kKGFsbF92ZXJzaW9uc19m b3IoIkNvbnN0YW50T2ZTaGFwZSIpKQorLSAgICBkZWYgdGVzdF9pc3N1ZV9jb25zdGFudG9mc2hh cGVfNjEzNShzZWxmLCBfLCB2ZXJzaW9uKToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9n cmFwaCgKKy0gICAgICAgICAgICBbKCJzdGQuY29uc3RhbnQiLCBUZW5zb3JQcm90by5JTlQ2NCwg KDEsKSksICJvdXRwdXQiXSwKKy0gICAgICAgICAgICBbCistICAgICAgICAgICAgICAgIG1ha2Vf bm9kZSgKKy0gICAgICAgICAgICAgICAgICAgICJDb25zdGFudE9mU2hhcGUiLAorLSAgICAgICAg ICAgICAgICAgICAgaW5wdXRzPVsic3RkLmNvbnN0YW50Il0sCistICAgICAgICAgICAgICAgICAg ICBvdXRwdXRzPVsib3V0cHV0Il0sCistICAgICAgICAgICAgICAgICAgICBuYW1lPSJpbnZhbGlk X25vZGUiLAorLSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgXSwKKy0gICAgICAgICAg ICBbXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1bbWFrZV90ZW5zb3IoInN0ZC5jb25zdGFu dCIsIFRlbnNvclByb3RvLkZMT0FULCAoMSwpLCAoLTEwLCkpXSwKKy0gICAgICAgICkKKy0gICAg ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAorLSAgICAgICAgICAgIG9ubnguc2hhcGVfaW5mZXJlbmNl LkluZmVyZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNlbGYuX2luZmVycmVkLAorLSAgICAgICAg ICAgIGdyYXBoLAorLSAgICAgICAgICAgIG9wc2V0X2ltcG9ydHM9W2hlbHBlci5tYWtlX29wc2V0 aWQoT05OWF9ET01BSU4sIHZlcnNpb24pXSwKKy0gICAgICAgICkKKy0KKyAgICAgZGVmIHRlc3Rf cHJvdG9idWZfZGVmYXVsdChzZWxmKSAtPiBOb25lOgorICAgICAgICAgbW9kZWxfdGV4dCA9ICIi IgorICAgICAgICAgICAgIGlyX3ZlcnNpb246IDgKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvdGVz dF9leHRlcm5hbF9kYXRhLnB5IGIvb25ueC90ZXN0L3Rlc3RfZXh0ZXJuYWxfZGF0YS5weQoraW5k ZXggYzA4NDVmOTZhLi5lYjA3ZjA5ZTggMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvdGVzdF9leHRl cm5hbF9kYXRhLnB5CisrKysgYi9vbm54L3Rlc3QvdGVzdF9leHRlcm5hbF9kYXRhLnB5CitAQCAt MTQsNyArMTQsNiBAQCBpbXBvcnQgd2FybmluZ3MKKyBmcm9tIHR5cGluZyBpbXBvcnQgVFlQRV9D SEVDS0lORywgQW55CisgCisgaW1wb3J0IG51bXB5IGFzIG5wCistaW1wb3J0IHBhcmFtZXRlcml6 ZWQKKyAKKyBpbXBvcnQgb25ueAorIGZyb20gb25ueCBpbXBvcnQgKAorQEAgLTEyMyw2MTYgKzEy Miw2IEBAIGNsYXNzIFRlc3RMb2FkRXh0ZXJuYWxEYXRhQmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6 CisgICAgICAgICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUpCisgCisg CistQHBhcmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKKy0gICAgWworLSAgICAgICAg eyJzZXJpYWxpemF0aW9uX2Zvcm1hdCI6ICJwcm90b2J1ZiJ9LAorLSAgICAgICAgeyJzZXJpYWxp emF0aW9uX2Zvcm1hdCI6ICJ0ZXh0cHJvdG8ifSwKKy0gICAgXQorLSkKKy1jbGFzcyBUZXN0TG9h ZEV4dGVybmFsRGF0YShUZXN0TG9hZEV4dGVybmFsRGF0YUJhc2UpOgorLSAgICBkZWYgdGVzdF9s b2FkX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsID0gb25ueC5s b2FkX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQp CistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclsw XQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6 ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0 ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBu cC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2Vs Zi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0ZXN0X2xvYWRfZXh0ZXJuYWxfZGF0YV9m b3JfbW9kZWwoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVs KAorLSAgICAgICAgICAgIHNlbGYubW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9m b3JtYXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAgICAgICAgKQorLSAgICAgICAgbG9h ZF9leHRlcm5hbF9kYXRhX2Zvcl9tb2RlbChtb2RlbCwgc2VsZi50ZW1wX2RpcikKKy0gICAgICAg IGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAg ICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3Ip LCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9 IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAgIG5wLnRlc3Rpbmcu YXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0dHJpYnV0 ZV92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9leHRlcm5hbF9kYXRhKHNlbGYpIC0+IE5v bmU6CistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChzZWxmLm1vZGVsX2ZpbGVuYW1l LCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgdGVtcF9kaXIgPSBvcy5w YXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgInNhdmVfY29weSIpCistICAgICAgICBvcy5ta2Rpcih0 ZW1wX2RpcikKKy0gICAgICAgIG5ld19tb2RlbF9maWxlbmFtZSA9IG9zLnBhdGguam9pbih0ZW1w X2RpciwgIm1vZGVsLm9ubngiKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKG1vZGVsLCBuZXdf bW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBu ZXdfbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobmV3X21vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlh bGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0gbmV3X21vZGVs LmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9z ZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQor LQorLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG5ld19tb2RlbC5ncmFwaC5ub2RlWzBdLmF0 dHJpYnV0ZVswXS50CistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJh eShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistCistQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZF9jbGFzcygKKy0gICAgWworLSAgICAgICAgeyJzZXJpYWxp emF0aW9uX2Zvcm1hdCI6ICJwcm90b2J1ZiJ9LAorLSAgICAgICAgeyJzZXJpYWxpemF0aW9uX2Zv cm1hdCI6ICJ0ZXh0cHJvdG8ifSwKKy0gICAgXQorLSkKKy1jbGFzcyBUZXN0TG9hZEV4dGVybmFs RGF0YVNpbmdsZUZpbGUoVGVzdExvYWRFeHRlcm5hbERhdGFCYXNlKToKKy0gICAgZGVmIGNyZWF0 ZV9leHRlcm5hbF9kYXRhX3RlbnNvcnMoCistICAgICAgICBzZWxmLCB0ZW5zb3JzX2RhdGE6IGxp c3RbdHVwbGVbbGlzdFtBbnldLCBBbnldXQorLSAgICApIC0+IGxpc3RbVGVuc29yUHJvdG9dOgor LSAgICAgICAgdGVuc29yX2ZpbGVuYW1lID0gInRlbnNvcnMuYmluIgorLSAgICAgICAgdGVuc29y cyA9IFtdCistCistICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIs IHRlbnNvcl9maWxlbmFtZSksICJhYiIpIGFzIGRhdGFfZmlsZToKKy0gICAgICAgICAgICBmb3Ig dmFsdWUsIHRlbnNvcl9uYW1lIGluIHRlbnNvcnNfZGF0YToKKy0gICAgICAgICAgICAgICAgdGVu c29yID0gZnJvbV9hcnJheShucC5hcnJheSh2YWx1ZSkpCistICAgICAgICAgICAgICAgIG9mZnNl dCA9IGRhdGFfZmlsZS50ZWxsKCkKKy0gICAgICAgICAgICAgICAgaWYgb2Zmc2V0ICUgNDA5NiAh PSAwOgorLSAgICAgICAgICAgICAgICAgICAgZGF0YV9maWxlLndyaXRlKGIiXDAiICogKDQwOTYg LSBvZmZzZXQgJSA0MDk2KSkKKy0gICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG9mZnNldCAr IDQwOTYgLSBvZmZzZXQgJSA0MDk2CistCistICAgICAgICAgICAgICAgIGRhdGFfZmlsZS53cml0 ZSh0ZW5zb3IucmF3X2RhdGEpCistICAgICAgICAgICAgICAgIHNldF9leHRlcm5hbF9kYXRhKAor LSAgICAgICAgICAgICAgICAgICAgdGVuc29yLAorLSAgICAgICAgICAgICAgICAgICAgbG9jYXRp b249dGVuc29yX2ZpbGVuYW1lLAorLSAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PW9mZnNldCwK Ky0gICAgICAgICAgICAgICAgICAgIGxlbmd0aD1kYXRhX2ZpbGUudGVsbCgpIC0gb2Zmc2V0LAor LSAgICAgICAgICAgICAgICApCistICAgICAgICAgICAgICAgIHRlbnNvci5uYW1lID0gdGVuc29y X25hbWUKKy0gICAgICAgICAgICAgICAgdGVuc29yLkNsZWFyRmllbGQoInJhd19kYXRhIikKKy0g ICAgICAgICAgICAgICAgdGVuc29yLmRhdGFfbG9jYXRpb24gPSBvbm54LlRlbnNvclByb3RvLkVY VEVSTkFMCistICAgICAgICAgICAgICAgIHRlbnNvcnMuYXBwZW5kKHRlbnNvcikKKy0KKy0gICAg ICAgIHJldHVybiB0ZW5zb3JzCistCistICAgIGRlZiB0ZXN0X2xvYWRfZXh0ZXJuYWxfc2luZ2xl X2ZpbGVfZGF0YShzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9k ZWwoc2VsZi5tb2RlbF9maWxlbmFtZSwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0g ICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCist ICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90 ZW5zb3IpLCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAgYXR0cmlidXRlX3Rl bnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAgIG5wLnRl c3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5zb3IpLCBzZWxmLmF0 dHJpYnV0ZV92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9leHRlcm5hbF9zaW5nbGVfZmls ZV9kYXRhKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChz ZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAg ICAgdGVtcF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2RpciwgInNhdmVfY29weSIpCist ICAgICAgICBvcy5ta2Rpcih0ZW1wX2RpcikKKy0gICAgICAgIG5ld19tb2RlbF9maWxlbmFtZSA9 IG9zLnBhdGguam9pbih0ZW1wX2RpciwgIm1vZGVsLm9ubngiKQorLSAgICAgICAgb25ueC5zYXZl X21vZGVsKG1vZGVsLCBuZXdfbW9kZWxfZmlsZW5hbWUsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQpCistCistICAgICAgICBuZXdfbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobmV3X21vZGVsX2Zp bGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJf dGVuc29yID0gbmV3X21vZGVsLmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBucC50ZXN0 aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShpbml0aWFsaXplcl90ZW5zb3IpLCBzZWxmLmlu aXRpYWxpemVyX3ZhbHVlKQorLQorLSAgICAgICAgYXR0cmlidXRlX3RlbnNvciA9IG5ld19tb2Rl bC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBucC50ZXN0aW5nLmFzc2Vy dF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29yKSwgc2VsZi5hdHRyaWJ1dGVfdmFs dWUpCistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKAorLSAgICAg ICAgaXRlcnRvb2xzLnByb2R1Y3QoCistICAgICAgICAgICAgKFRydWUsIEZhbHNlKSwKKy0gICAg ICAgICkKKy0gICAgKQorLSAgICBkZWYgdGVzdF9zYXZlX2V4dGVybmFsX2ludmFsaWRfc2luZ2xl X2ZpbGVfZGF0YV9hbmRfY2hlY2soCistICAgICAgICBzZWxmLCB1c2VfYWJzb2x1dGVfcGF0aDog Ym9vbAorLSAgICApIC0+IE5vbmU6CistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChz ZWxmLm1vZGVsX2ZpbGVuYW1lLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAg ICAgbW9kZWxfZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJzYXZlX2NvcHkiKQor LSAgICAgICAgb3MubWtkaXIobW9kZWxfZGlyKQorLQorLSAgICAgICAgdHJhdmVyc2FsX2V4dGVy bmFsX2RhdGFfZGlyID0gb3MucGF0aC5qb2luKAorLSAgICAgICAgICAgIHNlbGYudGVtcF9kaXIs ICJpbnZhbGlkX2V4dGVybmFsX2RhdGEiCistICAgICAgICApCistICAgICAgICBvcy5ta2Rpcih0 cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9kaXIpCistCistICAgICAgICBpZiB1c2VfYWJzb2x1dGVf cGF0aDoKKy0gICAgICAgICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9sb2NhdGlvbiA9IG9z LnBhdGguam9pbigKKy0gICAgICAgICAgICAgICAgdHJhdmVyc2FsX2V4dGVybmFsX2RhdGFfZGly LCAidGVuc29ycy5iaW4iCistICAgICAgICAgICAgKQorLSAgICAgICAgZWxzZToKKy0gICAgICAg ICAgICB0cmF2ZXJzYWxfZXh0ZXJuYWxfZGF0YV9sb2NhdGlvbiA9ICIuLi9pbnZhbGlkX2V4dGVy bmFsX2RhdGEvdGVuc29ycy5iaW4iCistCistICAgICAgICBleHRlcm5hbF9kYXRhX2RpciA9IG9z LnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiZXh0ZXJuYWxfZGF0YSIpCistICAgICAgICBvcy5t a2RpcihleHRlcm5hbF9kYXRhX2RpcikKKy0gICAgICAgIG5ld19tb2RlbF9maWxlcGF0aCA9IG9z LnBhdGguam9pbihtb2RlbF9kaXIsICJtb2RlbC5vbm54IikKKy0KKy0gICAgICAgIGRlZiBjb252 ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfbm9fY2hlY2sobW9kZWw6IE1vZGVsUHJvdG8sIGxv Y2F0aW9uOiBzdHIpOgorLSAgICAgICAgICAgIGZvciB0ZW5zb3IgaW4gbW9kZWwuZ3JhcGguaW5p dGlhbGl6ZXI6CistICAgICAgICAgICAgICAgIGlmIHRlbnNvci5IYXNGaWVsZCgicmF3X2RhdGEi KToKKy0gICAgICAgICAgICAgICAgICAgIHNldF9leHRlcm5hbF9kYXRhKHRlbnNvciwgbG9jYXRp b24pCistCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfbm9fY2hlY2so CistICAgICAgICAgICAgbW9kZWwsCistICAgICAgICAgICAgbG9jYXRpb249dHJhdmVyc2FsX2V4 dGVybmFsX2RhdGFfbG9jYXRpb24sCistICAgICAgICApCistCistICAgICAgICB3aXRoIHNlbGYu YXNzZXJ0UmFpc2VzKG9ubnguY2hlY2tlci5WYWxpZGF0aW9uRXJyb3IpOgorLSAgICAgICAgICAg IG9ubnguc2F2ZV9tb2RlbChtb2RlbCwgbmV3X21vZGVsX2ZpbGVwYXRoLCBzZWxmLnNlcmlhbGl6 YXRpb25fZm9ybWF0KQorLQorLQorLUBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWRfY2xhc3Mo CistICAgIFsKKy0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAicHJvdG9idWYifSwK Ky0gICAgICAgIHsic2VyaWFsaXphdGlvbl9mb3JtYXQiOiAidGV4dHByb3RvIn0sCistICAgIF0K Ky0pCistY2xhc3MgVGVzdFNhdmVBbGxUZW5zb3JzQXNFeHRlcm5hbERhdGEodW5pdHRlc3QuVGVz dENhc2UpOgorLSAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdDogc3RyID0gInByb3RvYnVmIgorLQor LSAgICBkZWYgc2V0VXAoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIHNlbGYuX3RlbXBfZGlyX29i aiA9IHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpCistICAgICAgICBzZWxmLnRlbXBfZGly OiBzdHIgPSBzZWxmLl90ZW1wX2Rpcl9vYmoubmFtZQorLSAgICAgICAgc2VsZi5pbml0aWFsaXpl cl92YWx1ZSA9IG5wLmFyYW5nZSg2KS5yZXNoYXBlKDMsIDIpLmFzdHlwZShucC5mbG9hdDMyKSAr IDUxMgorLSAgICAgICAgc2VsZi5hdHRyaWJ1dGVfdmFsdWUgPSBucC5hcmFuZ2UoNikucmVzaGFw ZSgyLCAzKS5hc3R5cGUobnAuZmxvYXQzMikgKyAyNTYKKy0gICAgICAgIHNlbGYubW9kZWwgPSBz ZWxmLmNyZWF0ZV90ZXN0X21vZGVsX3Byb3RvKCkKKy0KKy0gICAgZGVmIGdldF90ZW1wX21vZGVs X2ZpbGVuYW1lKHNlbGYpOgorLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLnRlbXBf ZGlyLCBzdHIodXVpZC51dWlkNCgpKSArICIub25ueCIpCistCistICAgIGRlZiBjcmVhdGVfZGF0 YV90ZW5zb3JzKAorLSAgICAgICAgc2VsZiwgdGVuc29yc19kYXRhOiBsaXN0W3R1cGxlW2xpc3Rb QW55XSwgQW55XV0KKy0gICAgKSAtPiBsaXN0W1RlbnNvclByb3RvXToKKy0gICAgICAgIHRlbnNv cnMgPSBbXQorLSAgICAgICAgZm9yIHZhbHVlLCB0ZW5zb3JfbmFtZSBpbiB0ZW5zb3JzX2RhdGE6 CistICAgICAgICAgICAgdGVuc29yID0gZnJvbV9hcnJheShucC5hcnJheSh2YWx1ZSkpCistICAg ICAgICAgICAgdGVuc29yLm5hbWUgPSB0ZW5zb3JfbmFtZQorLSAgICAgICAgICAgIHRlbnNvcnMu YXBwZW5kKHRlbnNvcikKKy0KKy0gICAgICAgIHJldHVybiB0ZW5zb3JzCistCistICAgIGRlZiBj cmVhdGVfdGVzdF9tb2RlbF9wcm90byhzZWxmKSAtPiBNb2RlbFByb3RvOgorLSAgICAgICAgdGVu c29ycyA9IHNlbGYuY3JlYXRlX2RhdGFfdGVuc29ycygKKy0gICAgICAgICAgICBbCistICAgICAg ICAgICAgICAgIChzZWxmLmF0dHJpYnV0ZV92YWx1ZSwgImF0dHJpYnV0ZV92YWx1ZSIpLAorLSAg ICAgICAgICAgICAgICAoc2VsZi5pbml0aWFsaXplcl92YWx1ZSwgImlucHV0X3ZhbHVlIiksCist ICAgICAgICAgICAgXQorLSAgICAgICAgKQorLQorLSAgICAgICAgY29uc3RhbnRfbm9kZSA9IG9u bnguaGVscGVyLm1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAiQ29uc3RhbnQiLCBpbnB1dHM9W10s IG91dHB1dHM9WyJ2YWx1ZXMiXSwgdmFsdWU9dGVuc29yc1swXQorLSAgICAgICAgKQorLQorLSAg ICAgICAgaW5wdXRzID0gWworLSAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9p bmZvKAorLSAgICAgICAgICAgICAgICAiaW5wdXRfdmFsdWUiLCBvbm54LlRlbnNvclByb3RvLkZM T0FULCBzZWxmLmluaXRpYWxpemVyX3ZhbHVlLnNoYXBlCistICAgICAgICAgICAgKQorLSAgICAg ICAgXQorLQorLSAgICAgICAgZ3JhcGggPSBoZWxwZXIubWFrZV9ncmFwaCgKKy0gICAgICAgICAg ICBbY29uc3RhbnRfbm9kZV0sCistICAgICAgICAgICAgInRlc3RfZ3JhcGgiLAorLSAgICAgICAg ICAgIGlucHV0cz1pbnB1dHMsCistICAgICAgICAgICAgb3V0cHV0cz1bXSwKKy0gICAgICAgICAg ICBpbml0aWFsaXplcj1bdGVuc29yc1sxXV0sCistICAgICAgICApCistICAgICAgICByZXR1cm4g aGVscGVyLm1ha2VfbW9kZWwoZ3JhcGgpCistCistICAgIEB1bml0dGVzdC5za2lwSWYoCistICAg ICAgICBzZXJpYWxpemF0aW9uX2Zvcm1hdCAhPSAicHJvdG9idWYiLAorLSAgICAgICAgImNoZWNr X21vZGVsIHN1cHBvcnRzIHByb3RvYnVmIG9ubHkgd2hlbiBwcm92aWRlZCBhcyBhIHBhdGgiLAor LSAgICApCistICAgIGRlZiB0ZXN0X2NoZWNrX21vZGVsKHNlbGYpIC0+IE5vbmU6CistICAgICAg ICBjaGVja2VyLmNoZWNrX21vZGVsKHNlbGYubW9kZWwpCistCistICAgIGRlZiB0ZXN0X2NvbnZl cnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV93aXRoX3NpemVfdGhyZXNob2xkKHNlbGYpIC0+IE5v bmU6CistICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVu YW1lKCkKKy0KKy0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YShzZWxmLm1v ZGVsLCBzaXplX3RocmVzaG9sZD0xMDI0KQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYu bW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0g ICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5zZXJp YWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVsLmdy YXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluaXRpYWxpemVy X3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICBkZWYgdGVzdF9jb252 ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfd2l0aG91dF9zaXplX3RocmVzaG9sZChzZWxmKSAt PiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9m aWxlbmFtZSgpCistICAgICAgICBjb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGEoc2VsZi5t b2RlbCwgc2l6ZV90aHJlc2hvbGQ9MCkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1v ZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAg ICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFs aXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFw aC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluaXRpYWxpemVyX3Rl bnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3Nl cnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29yKSwgc2VsZi5pbml0aWFsaXpl cl92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRh X2Zyb21fb25lX2ZpbGVfd2l0aF9sb2NhdGlvbihzZWxmKSAtPiBOb25lOgorLSAgICAgICAgbW9k ZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAgICBl eHRlcm5hbF9kYXRhX2ZpbGUgPSBzdHIodXVpZC51dWlkNCgpKQorLQorLSAgICAgICAgY29udmVy dF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAg ICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19v bmVfZmlsZT1UcnVlLAorLSAgICAgICAgICAgIGxvY2F0aW9uPWV4dGVybmFsX2RhdGFfZmlsZSwK Ky0gICAgICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9m aWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBzZWxmLmFz c2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsIGV4dGVy bmFsX2RhdGFfZmlsZSkpKQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9k ZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgIyB0 ZXN0IGNvbnZlcnQgbW9kZWwgZnJvbSBleHRlcm5hbCBkYXRhCistICAgICAgICBjb252ZXJ0X21v ZGVsX2Zyb21fZXh0ZXJuYWxfZGF0YShtb2RlbCkKKy0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9 IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVs KG1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistICAg ICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFs aXphdGlvbl9mb3JtYXQpCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFw aC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsZW4oaW5pdGlhbGl6 ZXJfdGVuc29yLmV4dGVybmFsX2RhdGEpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbml0 aWFsaXplcl90ZW5zb3IuZGF0YV9sb2NhdGlvbiwgVGVuc29yUHJvdG8uREVGQVVMVCkKKy0gICAg ICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNv ciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAgICBhdHRyaWJ1dGVfdGVuc29y ID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgc2VsZi5hc3Nl cnRGYWxzZShsZW4oYXR0cmlidXRlX3RlbnNvci5leHRlcm5hbF9kYXRhKSkKKy0gICAgICAgIHNl bGYuYXNzZXJ0RXF1YWwoYXR0cmlidXRlX3RlbnNvci5kYXRhX2xvY2F0aW9uLCBUZW5zb3JQcm90 by5ERUZBVUxUKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXko YXR0cmlidXRlX3RlbnNvciksIHNlbGYuYXR0cmlidXRlX3ZhbHVlKQorLQorLSAgICBkZWYgdGVz dF9jb252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfZnJvbV9vbmVfZmlsZV93aXRob3V0X2xv Y2F0aW9uX3VzZXNfbW9kZWxfbmFtZSgKKy0gICAgICAgIHNlbGYsCistICAgICkgLT4gTm9uZToK Ky0gICAgICAgIG1vZGVsX2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUo KQorLQorLSAgICAgICAgY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAgICAg ICAgIHNlbGYubW9kZWwsIHNpemVfdGhyZXNob2xkPTAsIGFsbF90ZW5zb3JzX3RvX29uZV9maWxl PVRydWUKKy0gICAgICAgICkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBt b2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBz ZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKKy0gICAgICAg IHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc2VsZi50ZW1wX2Rp ciwgbW9kZWxfZmlsZV9wYXRoKSkpCistCistICAgIGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9f ZXh0ZXJuYWxfZGF0YV9vbmVfZmlsZV9wZXJfdGVuc29yX3dpdGhvdXRfYXR0cmlidXRlKAorLSAg ICAgICAgc2VsZiwKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxfZmlsZV9wYXRoID0g c2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistCistICAgICAgICBjb252ZXJ0X21vZGVs X3RvX2V4dGVybmFsX2RhdGEoCistICAgICAgICAgICAgc2VsZi5tb2RlbCwKKy0gICAgICAgICAg ICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxl PUZhbHNlLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAorLSAgICAgICAg KQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVsX2ZpbGVfcGF0aCwg c2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShv cy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl KG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiaW5wdXRfdmFsdWUi KSkpCistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9p bihzZWxmLnRlbXBfZGlyLCAiYXR0cmlidXRlX3ZhbHVlIikpKQorLQorLSAgICBkZWYgdGVzdF9j b252ZXJ0X21vZGVsX3RvX2V4dGVybmFsX2RhdGFfb25lX2ZpbGVfcGVyX3RlbnNvcl93aXRoX2F0 dHJpYnV0ZSgKKy0gICAgICAgIHNlbGYsCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIG1vZGVs X2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLQorLSAgICAgICAg Y29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWws CistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAgICBhbGxfdGVuc29y c190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVl LAorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKHNlbGYubW9kZWwsIG1vZGVs X2ZpbGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0KKy0gICAgICAgIHNlbGYu YXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShtb2RlbF9maWxlX3BhdGgpKQorLSAgICAgICAgc2Vs Zi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAi aW5wdXRfdmFsdWUiKSkpCistICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUo b3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJhdHRyaWJ1dGVfdmFsdWUiKSkpCistCistICAg IGRlZiB0ZXN0X2NvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YV9kb2VzX25vdF9jb252ZXJ0 X2F0dHJpYnV0ZV92YWx1ZXMoCistICAgICAgICBzZWxmLAorLSAgICApIC0+IE5vbmU6CistICAg ICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxmLmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0K Ky0gICAgICAgIGNvbnZlcnRfbW9kZWxfdG9fZXh0ZXJuYWxfZGF0YSgKKy0gICAgICAgICAgICBz ZWxmLm1vZGVsLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAgICAg Y29udmVydF9hdHRyaWJ1dGU9RmFsc2UsCistICAgICAgICAgICAgYWxsX3RlbnNvcnNfdG9fb25l X2ZpbGU9RmFsc2UsCistICAgICAgICApCistICAgICAgICBvbm54LnNhdmVfbW9kZWwoc2VsZi5t b2RlbCwgbW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAg ICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRl bXBfZGlyLCAiaW5wdXRfdmFsdWUiKSkpCistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBh dGguaXNmaWxlKG9zLnBhdGguam9pbihzZWxmLnRlbXBfZGlyLCAiYXR0cmlidXRlX3ZhbHVlIikp KQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9wYXRoLCBz ZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yID0g bW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0 aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAgICAgIGF0 dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAg ICAgICBzZWxmLmFzc2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9j YXRpb24iKSkKKy0KKy0gICAgZGVmIHRlc3RfY29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRh X2NvbnZlcnRzX2F0dHJpYnV0ZV92YWx1ZXMoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVs X2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLQorLSAgICAgICAg Y29udmVydF9tb2RlbF90b19leHRlcm5hbF9kYXRhKAorLSAgICAgICAgICAgIHNlbGYubW9kZWws IHNpemVfdGhyZXNob2xkPTAsIGNvbnZlcnRfYXR0cmlidXRlPVRydWUKKy0gICAgICAgICkKKy0g ICAgICAgIG9ubnguc2F2ZV9tb2RlbChzZWxmLm1vZGVsLCBtb2RlbF9maWxlX3BhdGgsIHNlbGYu c2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2Rl bChtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAg ICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAg ICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVuc29y KSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbml0 aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0KKy0gICAgICAgIGF0 dHJpYnV0ZV90ZW5zb3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAg ICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29y KSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydFRydWUoYXR0cmli dXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICBkZWYgdGVzdF9z YXZlX21vZGVsX2RvZXNfbm90X2NvbnZlcnRfdG9fZXh0ZXJuYWxfZGF0YV9hbmRfc2F2ZXNfdGhl X21vZGVsKAorLSAgICAgICAgc2VsZiwKKy0gICAgKSAtPiBOb25lOgorLSAgICAgICAgbW9kZWxf ZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCistICAgICAgICBvbm54 LnNhdmVfbW9kZWwoCistICAgICAgICAgICAgc2VsZi5tb2RlbCwKKy0gICAgICAgICAgICBtb2Rl bF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0g ICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9RmFsc2UsCistICAgICAgICApCistICAg ICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKKy0K Ky0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKG1vZGVsX2ZpbGVfcGF0aCwgc2VsZi5z ZXJpYWxpemF0aW9uX2Zvcm1hdCkKKy0gICAgICAgIGluaXRpYWxpemVyX3RlbnNvciA9IG1vZGVs LmdyYXBoLmluaXRpYWxpemVyWzBdCistICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGluaXRpYWxp emVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLQorLSAgICAgICAgYXR0cmli dXRlX3RlbnNvciA9IG1vZGVsLmdyYXBoLm5vZGVbMF0uYXR0cmlidXRlWzBdLnQKKy0gICAgICAg IHNlbGYuYXNzZXJ0RmFsc2UoYXR0cmlidXRlX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlv biIpKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX2RvZXNfY29udmVydF9hbmRfc2F2ZXNf dGhlX21vZGVsKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBtb2RlbF9maWxlX3BhdGggPSBzZWxm LmdldF90ZW1wX21vZGVsX2ZpbGVuYW1lKCkKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0g ICAgICAgICAgICBzZWxmLm1vZGVsLAorLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwKKy0g ICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAorLSAgICAgICAgICAgIHNhdmVf YXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9m aWxlPVRydWUsCistICAgICAgICAgICAgbG9jYXRpb249Tm9uZSwKKy0gICAgICAgICAgICBzaXpl X3RocmVzaG9sZD0wLAorLSAgICAgICAgICAgIGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAorLSAg ICAgICAgKQorLQorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWRfbW9kZWwobW9kZWxfZmlsZV9w YXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0KQorLQorLSAgICAgICAgaW5pdGlhbGl6ZXJf dGVuc29yID0gbW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0 VHJ1ZShpbml0aWFsaXplcl90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0gICAg ICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGluaXRpYWxpemVyX3RlbnNv ciksIHNlbGYuaW5pdGlhbGl6ZXJfdmFsdWUpCistCistICAgICAgICBhdHRyaWJ1dGVfdGVuc29y ID0gbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0udAorLSAgICAgICAgc2VsZi5hc3Nl cnRGYWxzZShhdHRyaWJ1dGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistICAg ICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19hcnJheShhdHRyaWJ1dGVfdGVuc29y KSwgc2VsZi5hdHRyaWJ1dGVfdmFsdWUpCistCistICAgIGRlZiB0ZXN0X3NhdmVfbW9kZWxfd2l0 aG91dF9sb2FkaW5nX2V4dGVybmFsX2RhdGEoc2VsZikgLT4gTm9uZToKKy0gICAgICAgIG1vZGVs X2ZpbGVfcGF0aCA9IHNlbGYuZ2V0X3RlbXBfbW9kZWxfZmlsZW5hbWUoKQorLSAgICAgICAgb25u eC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgbW9k ZWxfZmlsZV9wYXRoLAorLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsCist ICAgICAgICAgICAgc2F2ZV9hc19leHRlcm5hbF9kYXRhPVRydWUsCistICAgICAgICAgICAgbG9j YXRpb249Tm9uZSwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAgICAg IGNvbnZlcnRfYXR0cmlidXRlPUZhbHNlLAorLSAgICAgICAgKQorLSAgICAgICAgIyBTYXZlIHdp dGhvdXQgbG9hZF9leHRlcm5hbF9kYXRhCistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2Rl bCgKKy0gICAgICAgICAgICBtb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3Jt YXQsIGxvYWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAgICAgICAgKQorLSAgICAgICAgb25ueC5z YXZlX21vZGVsKAorLSAgICAgICAgICAgIG1vZGVsLAorLSAgICAgICAgICAgIG1vZGVsX2ZpbGVf cGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LAorLSAgICAgICAg ICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVlLAorLSAgICAgICAgICAgIGxvY2F0aW9uPU5v bmUsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MCwKKy0gICAgICAgICAgICBjb252ZXJ0 X2F0dHJpYnV0ZT1GYWxzZSwKKy0gICAgICAgICkKKy0gICAgICAgICMgTG9hZCB0aGUgc2F2ZWQg bW9kZWwgYWdhaW47IE9ubHkgd29ya3MgaWYgdGhlIHNhdmVkIHBhdGggaXMgdW5kZXIgdGhlIHNh bWUgZGlyZWN0b3J5CistICAgICAgICBtb2RlbCA9IG9ubngubG9hZF9tb2RlbChtb2RlbF9maWxl X3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQpCistCistICAgICAgICBpbml0aWFsaXpl cl90ZW5zb3IgPSBtb2RlbC5ncmFwaC5pbml0aWFsaXplclswXQorLSAgICAgICAgc2VsZi5hc3Nl cnRUcnVlKGluaXRpYWxpemVyX3RlbnNvci5IYXNGaWVsZCgiZGF0YV9sb2NhdGlvbiIpKQorLSAg ICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UodG9fYXJyYXkoaW5pdGlhbGl6ZXJfdGVu c29yKSwgc2VsZi5pbml0aWFsaXplcl92YWx1ZSkKKy0KKy0gICAgICAgIGF0dHJpYnV0ZV90ZW5z b3IgPSBtb2RlbC5ncmFwaC5ub2RlWzBdLmF0dHJpYnV0ZVswXS50CistICAgICAgICBzZWxmLmFz c2VydEZhbHNlKGF0dHJpYnV0ZV90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0g ICAgICAgIG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKHRvX2FycmF5KGF0dHJpYnV0ZV90ZW5z b3IpLCBzZWxmLmF0dHJpYnV0ZV92YWx1ZSkKKy0KKy0gICAgZGVmIHRlc3Rfc2F2ZV9tb2RlbF93 aXRoX2V4aXN0aW5nX3Jhd19kYXRhX3Nob3VsZF9vdmVycmlkZShzZWxmKSAtPiBOb25lOgorLSAg ICAgICAgbW9kZWxfZmlsZV9wYXRoID0gc2VsZi5nZXRfdGVtcF9tb2RlbF9maWxlbmFtZSgpCist ICAgICAgICBvcmlnaW5hbF9yYXdfZGF0YSA9IHNlbGYubW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJb MF0ucmF3X2RhdGEKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBzZWxm Lm1vZGVsLAorLSAgICAgICAgICAgIG1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxm LnNlcmlhbGl6YXRpb25fZm9ybWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0 YT1UcnVlLAorLSAgICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICApCistICAg ICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUobW9kZWxfZmlsZV9wYXRoKSkKKy0K Ky0gICAgICAgIG1vZGVsID0gb25ueC5sb2FkX21vZGVsKAorLSAgICAgICAgICAgIG1vZGVsX2Zp bGVfcGF0aCwgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZh bHNlCistICAgICAgICApCistICAgICAgICBpbml0aWFsaXplcl90ZW5zb3IgPSBtb2RlbC5ncmFw aC5pbml0aWFsaXplclswXQorLSAgICAgICAgaW5pdGlhbGl6ZXJfdGVuc29yLnJhd19kYXRhID0g YiJkdW1tcHlfcmF3X2RhdGEiCistICAgICAgICAjIElmIHJhd19kYXRhIGFuZCBleHRlcm5hbCB0 ZW5zb3IgZXhpc3QgYXQgdGhlIHNhbWUgdGltZSwgb3ZlcnJpZGUgZXhpc3RpbmcgcmF3X2RhdGEK Ky0gICAgICAgIGxvYWRfZXh0ZXJuYWxfZGF0YV9mb3JfdGVuc29yKGluaXRpYWxpemVyX3RlbnNv ciwgc2VsZi50ZW1wX2RpcikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5pdGlhbGl6ZXJf dGVuc29yLnJhd19kYXRhLCBvcmlnaW5hbF9yYXdfZGF0YSkKKy0KKy0KKy1AcGFyYW1ldGVyaXpl ZC5wYXJhbWV0ZXJpemVkX2NsYXNzKAorLSAgICBbCistICAgICAgICB7InNlcmlhbGl6YXRpb25f Zm9ybWF0IjogInByb3RvYnVmIn0sCistICAgICAgICB7InNlcmlhbGl6YXRpb25fZm9ybWF0Ijog InRleHRwcm90byJ9LAorLSAgICBdCistKQorLWNsYXNzIFRlc3RFeHRlcm5hbERhdGFUb0FycmF5 KHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgc2VyaWFsaXphdGlvbl9mb3JtYXQ6IHN0ciA9ICJw cm90b2J1ZiIKKy0KKy0gICAgZGVmIHNldFVwKHNlbGYpIC0+IE5vbmU6CistICAgICAgICBzZWxm Ll90ZW1wX2Rpcl9vYmogPSB0ZW1wZmlsZS5UZW1wb3JhcnlEaXJlY3RvcnkoKQorLSAgICAgICAg c2VsZi50ZW1wX2Rpcjogc3RyID0gc2VsZi5fdGVtcF9kaXJfb2JqLm5hbWUKKy0gICAgICAgIHNl bGYuX21vZGVsX2ZpbGVfcGF0aDogc3RyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcF9kaXIsICJt b2RlbC5vbm54IikKKy0gICAgICAgIHNlbGYubGFyZ2VfZGF0YSA9IG5wLnJhbmRvbS5yYW5kKDEw LCA2MCwgMTAwKS5hc3R5cGUobnAuZmxvYXQzMikKKy0gICAgICAgIHNlbGYuc21hbGxfZGF0YSA9 ICgyMDAsIDMwMCkKKy0gICAgICAgIHNlbGYubW9kZWwgPSBzZWxmLmNyZWF0ZV90ZXN0X21vZGVs KCkKKy0KKy0gICAgQHByb3BlcnR5CistICAgIGRlZiBtb2RlbF9maWxlX3BhdGgoc2VsZik6Cist ICAgICAgICByZXR1cm4gc2VsZi5fbW9kZWxfZmlsZV9wYXRoCistCistICAgIGRlZiB0ZWFyRG93 bihzZWxmKSAtPiBOb25lOgorLSAgICAgICAgc2VsZi5fdGVtcF9kaXJfb2JqLmNsZWFudXAoKQor LQorLSAgICBkZWYgY3JlYXRlX3Rlc3RfbW9kZWwoc2VsZikgLT4gTW9kZWxQcm90bzoKKy0gICAg ICAgIFggPSBoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWCIsIFRlbnNvclByb3RvLkZM T0FULCBzZWxmLmxhcmdlX2RhdGEuc2hhcGUpCistICAgICAgICBpbnB1dF9pbml0ID0gaGVscGVy Lm1ha2VfdGVuc29yKAorLSAgICAgICAgICAgIG5hbWU9IlgiLAorLSAgICAgICAgICAgIGRhdGFf dHlwZT1UZW5zb3JQcm90by5GTE9BVCwKKy0gICAgICAgICAgICBkaW1zPXNlbGYubGFyZ2VfZGF0 YS5zaGFwZSwKKy0gICAgICAgICAgICB2YWxzPW9ubngubnVtcHlfaGVscGVyLnRvYnl0ZXNfbGl0 dGxlX2VuZGlhbihzZWxmLmxhcmdlX2RhdGEpLAorLSAgICAgICAgICAgIHJhdz1UcnVlLAorLSAg ICAgICAgKQorLQorLSAgICAgICAgc2hhcGVfZGF0YSA9IG5wLmFycmF5KHNlbGYuc21hbGxfZGF0 YSwgbnAuaW50NjQpCistICAgICAgICBzaGFwZV9pbml0ID0gaGVscGVyLm1ha2VfdGVuc29yKAor LSAgICAgICAgICAgIG5hbWU9IlNoYXBlIiwKKy0gICAgICAgICAgICBkYXRhX3R5cGU9VGVuc29y UHJvdG8uSU5UNjQsCistICAgICAgICAgICAgZGltcz1zaGFwZV9kYXRhLnNoYXBlLAorLSAgICAg ICAgICAgIHZhbHM9b25ueC5udW1weV9oZWxwZXIudG9ieXRlc19saXR0bGVfZW5kaWFuKHNoYXBl X2RhdGEpLAorLSAgICAgICAgICAgIHJhdz1UcnVlLAorLSAgICAgICAgKQorLSAgICAgICAgQyA9 IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJDIiwgVGVuc29yUHJvdG8uSU5UNjQsIHNl bGYuc21hbGxfZGF0YSkKKy0KKy0gICAgICAgIHJlc2hhcGUgPSBvbm54LmhlbHBlci5tYWtlX25v ZGUoCistICAgICAgICAgICAgIlJlc2hhcGUiLAorLSAgICAgICAgICAgIGlucHV0cz1bIlgiLCAi U2hhcGUiXSwKKy0gICAgICAgICAgICBvdXRwdXRzPVsiWSJdLAorLSAgICAgICAgKQorLSAgICAg ICAgY2FzdCA9IG9ubnguaGVscGVyLm1ha2Vfbm9kZSgKKy0gICAgICAgICAgICAiQ2FzdCIsIGlu cHV0cz1bIlkiXSwgb3V0cHV0cz1bIkMiXSwgdG89VGVuc29yUHJvdG8uSU5UNjQKKy0gICAgICAg ICkKKy0KKy0gICAgICAgIGdyYXBoX2RlZiA9IGhlbHBlci5tYWtlX2dyYXBoKAorLSAgICAgICAg ICAgIFtyZXNoYXBlLCBjYXN0XSwKKy0gICAgICAgICAgICAidGVzdC1tb2RlbCIsCistICAgICAg ICAgICAgW1hdLAorLSAgICAgICAgICAgIFtDXSwKKy0gICAgICAgICAgICBpbml0aWFsaXplcj1b aW5wdXRfaW5pdCwgc2hhcGVfaW5pdF0sCistICAgICAgICApCistICAgICAgICByZXR1cm4gaGVs cGVyLm1ha2VfbW9kZWwoZ3JhcGhfZGVmLCBwcm9kdWNlcl9uYW1lPSJvbm54LWV4YW1wbGUiKQor LQorLSAgICBAdW5pdHRlc3Quc2tpcElmKAorLSAgICAgICAgc2VyaWFsaXphdGlvbl9mb3JtYXQg IT0gInByb3RvYnVmIiwKKy0gICAgICAgICJjaGVja19tb2RlbCBzdXBwb3J0cyBwcm90b2J1ZiBv bmx5IHdoZW4gcHJvdmlkZWQgYXMgYSBwYXRoIiwKKy0gICAgKQorLSAgICBkZWYgdGVzdF9jaGVj a19tb2RlbChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgY2hlY2tlci5jaGVja19tb2RlbChzZWxm Lm1vZGVsKQorLQorLSAgICBkZWYgdGVzdF9yZXNoYXBlX2luZmVyZW5jZV93aXRoX2V4dGVybmFs X2RhdGFfZmFpbChzZWxmKSAtPiBOb25lOgorLSAgICAgICAgb25ueC5zYXZlX21vZGVsKAorLSAg ICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgs CistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0gICAgICAgICAgICBz YXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKKy0gICAgICAgICAgICBhbGxfdGVuc29yc190b19v bmVfZmlsZT1GYWxzZSwKKy0gICAgICAgICAgICBzaXplX3RocmVzaG9sZD0wLAorLSAgICAgICAg KQorLSAgICAgICAgbW9kZWxfd2l0aG91dF9leHRlcm5hbF9kYXRhID0gb25ueC5sb2FkKAorLSAg ICAgICAgICAgIHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0 LCBsb2FkX2V4dGVybmFsX2RhdGE9RmFsc2UKKy0gICAgICAgICkKKy0gICAgICAgICMgU2hhcGUg aW5mZXJlbmNlIG9mIFJlc2hhcGUgdXNlcyBQYXJzZURhdGEKKy0gICAgICAgICMgUGFyc2VEYXRh IGNhbm5vdCBoYW5kbGUgZXh0ZXJuYWwgZGF0YSBhbmQgc2hvdWxkIHRocm93IHRoZSBlcnJvciBh cyBmb2xsb3dzOgorLSAgICAgICAgIyBDYW5ub3QgcGFyc2UgZGF0YSBmcm9tIGV4dGVybmFsIHRl bnNvcnMuIFBsZWFzZSBsb2FkIGV4dGVybmFsIGRhdGEgaW50byByYXcgZGF0YSBmb3IgdGVuc29y OiBTaGFwZQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCistICAgICAgICAgICAgc2hhcGVf aW5mZXJlbmNlLkluZmVyZW5jZUVycm9yLAorLSAgICAgICAgICAgIHNoYXBlX2luZmVyZW5jZS5p bmZlcl9zaGFwZXMsCistICAgICAgICAgICAgbW9kZWxfd2l0aG91dF9leHRlcm5hbF9kYXRhLAor LSAgICAgICAgICAgIHN0cmljdF9tb2RlPVRydWUsCistICAgICAgICApCistCistICAgIGRlZiB0 ZXN0X3RvX2FycmF5X3dpdGhfZXh0ZXJuYWxfZGF0YShzZWxmKSAtPiBOb25lOgorLSAgICAgICAg b25ueC5zYXZlX21vZGVsKAorLSAgICAgICAgICAgIHNlbGYubW9kZWwsCistICAgICAgICAgICAg c2VsZi5tb2RlbF9maWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zv cm1hdCwKKy0gICAgICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKKy0gICAgICAg ICAgICBhbGxfdGVuc29yc190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAgICAgICAgICBzaXplX3Ro cmVzaG9sZD0wLAorLSAgICAgICAgKQorLSAgICAgICAgIyByYXdfZGF0YSBvZiBleHRlcm5hbCB0 ZW5zb3IgaXMgbm90IGxvYWRlZAorLSAgICAgICAgbW9kZWwgPSBvbm54LmxvYWQoCistICAgICAg ICAgICAgc2VsZi5tb2RlbF9maWxlX3BhdGgsIHNlbGYuc2VyaWFsaXphdGlvbl9mb3JtYXQsIGxv YWRfZXh0ZXJuYWxfZGF0YT1GYWxzZQorLSAgICAgICAgKQorLSAgICAgICAgIyBTcGVjaWZ5IHNl bGYudGVtcF9kaXIgdG8gbG9hZCBleHRlcm5hbCB0ZW5zb3IKKy0gICAgICAgIGxvYWRlZF9sYXJn ZV9kYXRhID0gdG9fYXJyYXkobW9kZWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0sIHNlbGYudGVtcF9k aXIpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZShsb2FkZWRfbGFyZ2VfZGF0 YSwgc2VsZi5sYXJnZV9kYXRhKQorLQorLSAgICBkZWYgdGVzdF9zYXZlX21vZGVsX3dpdGhfZXh0 ZXJuYWxfZGF0YV9tdWx0aXBsZV90aW1lcyhzZWxmKSAtPiBOb25lOgorLSAgICAgICAgIyBUZXN0 IG9ubnguc2F2ZSBzaG91bGQgcmVzcGVjdGl2ZWx5IGhhbmRsZSB0eXBpY2FsIHRlbnNvciBhbmQg ZXh0ZXJuYWwgdGVuc29yIHByb3Blcmx5CistICAgICAgICAjIDFzdCBzYXZlOiBzYXZlIHR3byB0 ZW5zb3JzIHdoaWNoIGhhdmUgcmF3X2RhdGEKKy0gICAgICAgICMgT25seSB3X2xhcmdlIHdpbGwg YmUgc3RvcmVkIGFzIGV4dGVybmFsIHRlbnNvcnMgc2luY2UgaXQncyBsYXJnZXIgdGhhbiAxMDI0 CistICAgICAgICBvbm54LnNhdmVfbW9kZWwoCistICAgICAgICAgICAgc2VsZi5tb2RlbCwKKy0g ICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwKKy0gICAgICAgICAgICBzZWxmLnNlcmlh bGl6YXRpb25fZm9ybWF0LAorLSAgICAgICAgICAgIHNhdmVfYXNfZXh0ZXJuYWxfZGF0YT1UcnVl LAorLSAgICAgICAgICAgIGFsbF90ZW5zb3JzX3RvX29uZV9maWxlPUZhbHNlLAorLSAgICAgICAg ICAgIGxvY2F0aW9uPU5vbmUsCistICAgICAgICAgICAgc2l6ZV90aHJlc2hvbGQ9MTAyNCwKKy0g ICAgICAgICAgICBjb252ZXJ0X2F0dHJpYnV0ZT1UcnVlLAorLSAgICAgICAgKQorLSAgICAgICAg bW9kZWxfd2l0aG91dF9sb2FkaW5nX2V4dGVybmFsID0gb25ueC5sb2FkKAorLSAgICAgICAgICAg IHNlbGYubW9kZWxfZmlsZV9wYXRoLCBzZWxmLnNlcmlhbGl6YXRpb25fZm9ybWF0LCBsb2FkX2V4 dGVybmFsX2RhdGE9RmFsc2UKKy0gICAgICAgICkKKy0gICAgICAgIGxhcmdlX2lucHV0X3RlbnNv ciA9IG1vZGVsX3dpdGhvdXRfbG9hZGluZ19leHRlcm5hbC5ncmFwaC5pbml0aWFsaXplclswXQor LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxhcmdlX2lucHV0X3RlbnNvci5IYXNGaWVsZCgiZGF0 YV9sb2NhdGlvbiIpKQorLSAgICAgICAgbnAudGVzdGluZy5hc3NlcnRfYWxsY2xvc2UoCistICAg ICAgICAgICAgdG9fYXJyYXkobGFyZ2VfaW5wdXRfdGVuc29yLCBzZWxmLnRlbXBfZGlyKSwgc2Vs Zi5sYXJnZV9kYXRhCistICAgICAgICApCistCistICAgICAgICBzbWFsbF9zaGFwZV90ZW5zb3Ig PSBtb2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJbMV0KKy0g ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgc21hbGxfc2hhcGVfdGVuc29yLkhhc0ZpZWxkKCJk YXRhX2xvY2F0aW9uIikpCistICAgICAgICBucC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSh0b19h cnJheShzbWFsbF9zaGFwZV90ZW5zb3IpLCBzZWxmLnNtYWxsX2RhdGEpCistCistICAgICAgICAj IDJuZCBzYXZlOiBvbmUgdGVuc29yIGhhcyByYXdfZGF0YSAoc21hbGwpOyBvbmUgZXh0ZXJuYWwg dGVuc29yIChsYXJnZSkKKy0gICAgICAgICMgU2F2ZSB0aGVtIGJvdGggYXMgZXh0ZXJuYWwgdGVu c29ycyB0aGlzIHRpbWUKKy0gICAgICAgIG9ubnguc2F2ZV9tb2RlbCgKKy0gICAgICAgICAgICBt b2RlbF93aXRob3V0X2xvYWRpbmdfZXh0ZXJuYWwsCistICAgICAgICAgICAgc2VsZi5tb2RlbF9m aWxlX3BhdGgsCistICAgICAgICAgICAgc2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwKKy0gICAg ICAgICAgICBzYXZlX2FzX2V4dGVybmFsX2RhdGE9VHJ1ZSwKKy0gICAgICAgICAgICBhbGxfdGVu c29yc190b19vbmVfZmlsZT1GYWxzZSwKKy0gICAgICAgICAgICBsb2NhdGlvbj1Ob25lLAorLSAg ICAgICAgICAgIHNpemVfdGhyZXNob2xkPTAsCistICAgICAgICAgICAgY29udmVydF9hdHRyaWJ1 dGU9VHJ1ZSwKKy0gICAgICAgICkKKy0KKy0gICAgICAgIG1vZGVsX3dpdGhvdXRfbG9hZGluZ19l eHRlcm5hbCA9IG9ubngubG9hZCgKKy0gICAgICAgICAgICBzZWxmLm1vZGVsX2ZpbGVfcGF0aCwg c2VsZi5zZXJpYWxpemF0aW9uX2Zvcm1hdCwgbG9hZF9leHRlcm5hbF9kYXRhPUZhbHNlCistICAg ICAgICApCistICAgICAgICBsYXJnZV9pbnB1dF90ZW5zb3IgPSBtb2RlbF93aXRob3V0X2xvYWRp bmdfZXh0ZXJuYWwuZ3JhcGguaW5pdGlhbGl6ZXJbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1 ZShsYXJnZV9pbnB1dF90ZW5zb3IuSGFzRmllbGQoImRhdGFfbG9jYXRpb24iKSkKKy0gICAgICAg IG5wLnRlc3RpbmcuYXNzZXJ0X2FsbGNsb3NlKAorLSAgICAgICAgICAgIHRvX2FycmF5KGxhcmdl X2lucHV0X3RlbnNvciwgc2VsZi50ZW1wX2RpciksIHNlbGYubGFyZ2VfZGF0YQorLSAgICAgICAg KQorLQorLSAgICAgICAgc21hbGxfc2hhcGVfdGVuc29yID0gbW9kZWxfd2l0aG91dF9sb2FkaW5n X2V4dGVybmFsLmdyYXBoLmluaXRpYWxpemVyWzFdCistICAgICAgICBzZWxmLmFzc2VydFRydWUo c21hbGxfc2hhcGVfdGVuc29yLkhhc0ZpZWxkKCJkYXRhX2xvY2F0aW9uIikpCistICAgICAgICBu cC50ZXN0aW5nLmFzc2VydF9hbGxjbG9zZSgKKy0gICAgICAgICAgICB0b19hcnJheShzbWFsbF9z aGFwZV90ZW5zb3IsIHNlbGYudGVtcF9kaXIpLCBzZWxmLnNtYWxsX2RhdGEKKy0gICAgICAgICkK Ky0KKy0KKyBjbGFzcyBUZXN0Tm90QWxsb3dUb0xvYWRFeHRlcm5hbERhdGFPdXRzaWRlTW9kZWxE aXJlY3RvcnkoVGVzdExvYWRFeHRlcm5hbERhdGFCYXNlKToKKyAgICAgIiIiRXNzZW50aWFsIHRl c3QgdG8gY2hlY2sgdGhhdCBvbm54ICh2YWxpZGF0ZSkgQysrIGNvZGUgd2lsbCBub3QgYWxsb3cg dG8gbG9hZCBleHRlcm5hbF9kYXRhIG91dHNpZGUgdGhlIG1vZGVsCisgICAgIGRpcmVjdG9yeS4K K0BAIC03OTcsMTcgKzE4Niw2IEBAIGNsYXNzIFRlc3ROb3RBbGxvd1RvTG9hZEV4dGVybmFsRGF0 YU91dHNpZGVNb2RlbERpcmVjdG9yeU9uV2luZG93cygKKyAgICAgICAgICAgICBjaGVja2VyLmNo ZWNrX21vZGVsKHNlbGYubW9kZWxfZmlsZW5hbWUpCisgCisgCistY2xhc3MgVGVzdFNhdmVBbGxU ZW5zb3JzQXNFeHRlcm5hbERhdGFXaXRoUGF0aChUZXN0U2F2ZUFsbFRlbnNvcnNBc0V4dGVybmFs RGF0YSk6CistICAgIGRlZiBnZXRfdGVtcF9tb2RlbF9maWxlbmFtZShzZWxmKSAtPiBwYXRobGli LlBhdGg6CistICAgICAgICByZXR1cm4gcGF0aGxpYi5QYXRoKHN1cGVyKCkuZ2V0X3RlbXBfbW9k ZWxfZmlsZW5hbWUoKSkKKy0KKy0KKy1jbGFzcyBUZXN0RXh0ZXJuYWxEYXRhVG9BcnJheVdpdGhQ YXRoKFRlc3RFeHRlcm5hbERhdGFUb0FycmF5KToKKy0gICAgQHByb3BlcnR5CistICAgIGRlZiBt b2RlbF9maWxlX3BhdGgoc2VsZikgLT4gcGF0aGxpYi5QYXRoOgorLSAgICAgICAgcmV0dXJuIHBh dGhsaWIuUGF0aChzZWxmLl9tb2RlbF9maWxlX3BhdGgpCistCistCisgY2xhc3MgVGVzdEZ1bmN0 aW9uc0FuZFN1YkdyYXBocyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiBzZXRVcChzZWxm KSAtPiBOb25lOgorICAgICAgICAgc2VsZi5fdGVtcF9kaXJfb2JqID0gdGVtcGZpbGUuVGVtcG9y YXJ5RGlyZWN0b3J5KCkKK2RpZmYgLS1naXQgYS9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXIv YXV0b21hdGljX2Rvd25ncmFkZV90ZXN0LnB5IGIvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVy L2F1dG9tYXRpY19kb3duZ3JhZGVfdGVzdC5weQoraW5kZXggYTk0YWVhMWE5Li5mNjM5ZDQ0Zjgg MTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXIvYXV0b21hdGljX2Rvd25n cmFkZV90ZXN0LnB5CisrKysgYi9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXIvYXV0b21hdGlj X2Rvd25ncmFkZV90ZXN0LnB5CitAQCAtNyw3ICs3LDYgQEAgaW1wb3J0IHVuaXR0ZXN0CisgCisg aW1wb3J0IGF1dG9tYXRpY19jb252ZXJzaW9uX3Rlc3RfYmFzZQorIGltcG9ydCBudW1weSBhcyBu cAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisgCisgaW1wb3J0IG9ubngKKyBmcm9tIG9ubnggaW1w b3J0IGhlbHBlcgorQEAgLTIyLDM1ICsyMSw2IEBAIGNsYXNzIFRlc3RBdXRvbWF0aWNEb3duZ3Jh ZGUoYXV0b21hdGljX2NvbnZlcnNpb25fdGVzdF9iYXNlLlRlc3RBdXRvbWF0aWNDb252ZXJzCisg ICAgIGRlZiBfdGVzdF9vcF9kb3duZ3JhZGUoc2VsZiwgb3A6IHN0ciwgKmFyZ3MsICoqa3dhcmdz KToKKyAgICAgICAgIHNlbGYuX3Rlc3Rfb3BfY29udmVyc2lvbihvcCwgKmFyZ3MsICoqa3dhcmdz LCBpc191cGdyYWRlPUZhbHNlKQorIAorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVk LmV4cGFuZCgKKy0gICAgICAgIFsKKy0gICAgICAgICAgICAiUmVkdWNlTDEiLAorLSAgICAgICAg ICAgICJSZWR1Y2VMMiIsCistICAgICAgICAgICAgIlJlZHVjZUxvZ1N1bSIsCistICAgICAgICAg ICAgIlJlZHVjZUxvZ1N1bUV4cCIsCistICAgICAgICAgICAgIlJlZHVjZU1lYW4iLAorLSAgICAg ICAgICAgICJSZWR1Y2VNYXgiLAorLSAgICAgICAgICAgICJSZWR1Y2VNaW4iLAorLSAgICAgICAg ICAgICJSZWR1Y2VQcm9kIiwKKy0gICAgICAgICAgICAiUmVkdWNlU3VtIiwKKy0gICAgICAgICAg ICAiUmVkdWNlU3VtU3F1YXJlIiwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYgdGVzdF9y ZWR1Y2Vfb3BzKHNlbGYsIG9wKSAtPiBOb25lOgorLSAgICAgICAgIyBUT0RPOiBuZWVkIHRvIGFk ZCB0ZXN0IGNhc2VzIGZvciBtaXNzaW5nIGF4ZXMgaW5wdXQgd2hpY2ggZGVwZW5kcyBvbiB0aGlz IHByOgorLSAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vb25ueC9vbm54L3B1bGwvNTYxMwor LSAgICAgICAgYXhlcyA9IGhlbHBlci5tYWtlX3RlbnNvcigKKy0gICAgICAgICAgICAiYiIsIG9u bnguVGVuc29yUHJvdG8uSU5UNjQsIGRpbXM9WzNdLCB2YWxzPW5wLmFycmF5KFswLCAxLCAyXSkK Ky0gICAgICAgICkKKy0gICAgICAgIHNlbGYuX3Rlc3Rfb3BfZG93bmdyYWRlKAorLSAgICAgICAg ICAgIG9wLAorLSAgICAgICAgICAgIGZyb21fb3BzZXQ9MTMsCistICAgICAgICAgICAgaW5wdXRf c2hhcGVzPVtbMywgNCwgNV0sIFszXV0sCistICAgICAgICAgICAgb3V0cHV0X3NoYXBlcz1bWzEs IDEsIDFdXSwKKy0gICAgICAgICAgICBpbnB1dF90eXBlcz1bb25ueC5UZW5zb3JQcm90by5GTE9B VCwgb25ueC5UZW5zb3JQcm90by5JTlQ2NF0sCistICAgICAgICAgICAgaW5pdGlhbGl6ZXI9W2F4 ZXNdLAorLSAgICAgICAgKQorLQorICAgICBkZWYgdGVzdF9kZnQyMF9ub19heGlzKHNlbGYpIC0+ IE5vbmU6CisgICAgICAgICBzZWxmLl90ZXN0X21vZGVsX2NvbnZlcnNpb24oCisgICAgICAgICAg ICAgdG9fb3BzZXQ9MTksCitkaWZmIC0tZ2l0IGEvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVy X3Rlc3QucHkgYi9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0ZXJfdGVzdC5weQoraW5kZXggYTc1 ZWRjZGU3Li5mZDA1NzUxOGYgMTAwNjQ0CistLS0gYS9vbm54L3Rlc3QvdmVyc2lvbl9jb252ZXJ0 ZXJfdGVzdC5weQorKysrIGIvb25ueC90ZXN0L3ZlcnNpb25fY29udmVydGVyX3Rlc3QucHkKK0BA IC0xMCw3ICsxMCw2IEBAIGltcG9ydCB0ZW1wZmlsZQorIGltcG9ydCB1bml0dGVzdAorIAorIGlt cG9ydCBudW1weSBhcyBucAorLWltcG9ydCBwYXJhbWV0ZXJpemVkCisgCisgaW1wb3J0IG9ubngu dmVyc2lvbl9jb252ZXJ0ZXIKKyBmcm9tIG9ubnggaW1wb3J0ICgKK0BAIC0yMTE1LDE2OSArMjEx NCw2IEBAIGNsYXNzIFRlc3RWZXJzaW9uQ29udmVydGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAg ICAgICAgIGFzc2VydCBjb252ZXJ0ZWRfbW9kZWwuZ3JhcGgubm9kZVswXS5hdHRyaWJ1dGVbMF0u aSA9PSAyCisgICAgICAgICBhc3NlcnQgY29udmVydGVkX21vZGVsLm9wc2V0X2ltcG9ydFswXS52 ZXJzaW9uID09IDEyCisgCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5k KAorLSAgICAgICAgWworLSAgICAgICAgICAgICgicGVyX3RlbnNvciIsICgxNiwgMyksICgxLCks IE5vbmUsIE5vbmUsIE5vbmUsIFRlbnNvclByb3RvLklOVDgsIFRydWUpLAorLSAgICAgICAgICAg ICgKKy0gICAgICAgICAgICAgICAgInBlcl9heGlzX25vbmVfYmxvY2tfc2hhcGUiLAorLSAgICAg ICAgICAgICAgICAoMTYsIDMpLAorLSAgICAgICAgICAgICAgICAoMTYsKSwKKy0gICAgICAgICAg ICAgICAgMSwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgTm9uZSwK Ky0gICAgICAgICAgICAgICAgVGVuc29yUHJvdG8uSU5UOCwKKy0gICAgICAgICAgICAgICAgVHJ1 ZSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAgICAgICAgInBl cl9heGlzX3plcm9fYmxvY2tfc2hhcGUiLAorLSAgICAgICAgICAgICAgICAoMTYsIDMpLAorLSAg ICAgICAgICAgICAgICAoMTYsKSwKKy0gICAgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICAg ICAgMCwKKy0gICAgICAgICAgICAgICAgTm9uZSwKKy0gICAgICAgICAgICAgICAgVGVuc29yUHJv dG8uSU5UOCwKKy0gICAgICAgICAgICAgICAgVHJ1ZSwKKy0gICAgICAgICAgICApLAorLSAgICAg ICAgICAgICgKKy0gICAgICAgICAgICAgICAgInBlcl90ZW5zb3JfcG9zaXRpdmVfYmxvY2tfc2hh cGUiLAorLSAgICAgICAgICAgICAgICAoMTYsIDMpLAorLSAgICAgICAgICAgICAgICAoMSwpLAor LSAgICAgICAgICAgICAgICAxLAorLSAgICAgICAgICAgICAgICAyLAorLSAgICAgICAgICAgICAg ICBOb25lLAorLSAgICAgICAgICAgICAgICBUZW5zb3JQcm90by5JTlQ4LAorLSAgICAgICAgICAg ICAgICBGYWxzZSwKKy0gICAgICAgICAgICApLAorLSAgICAgICAgICAgICgKKy0gICAgICAgICAg ICAgICAgInBlcl9heGlzX3Bvc2l0aXZlX2Jsb2NrX3NoYXBlIiwKKy0gICAgICAgICAgICAgICAg KDE2LCAzKSwKKy0gICAgICAgICAgICAgICAgKDE2LCksCistICAgICAgICAgICAgICAgIDEsCist ICAgICAgICAgICAgICAgIDIsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAg ICAgIFRlbnNvclByb3RvLklOVDgsCistICAgICAgICAgICAgICAgIEZhbHNlLAorLSAgICAgICAg ICAgICksCistICAgICAgICAgICAgKCJibG9ja2VkXzJkIiwgKDE2LCAzKSwgKDQsIDMpLCAwLCA0 LCBOb25lLCBUZW5zb3JQcm90by5JTlQ4LCBGYWxzZSksCistICAgICAgICAgICAgKCJibG9ja2Vk XzNkIiwgKDQsIDMsIDMyKSwgKDQsIDMsIDgpLCAyLCA0LCBOb25lLCBUZW5zb3JQcm90by5JTlQ4 LCBGYWxzZSksCistICAgICAgICAgICAgKAorLSAgICAgICAgICAgICAgICAicGVyX2F4aXNfb3V0 cHV0X2R0eXBlIiwKKy0gICAgICAgICAgICAgICAgKDE2LCAzKSwKKy0gICAgICAgICAgICAgICAg KDE2LCksCistICAgICAgICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAg ICAgICAgICAgICAgIFRlbnNvclByb3RvLkZMT0FUOEU0TTNGTiwKKy0gICAgICAgICAgICAgICAg Tm9uZSwKKy0gICAgICAgICAgICAgICAgRmFsc2UsCistICAgICAgICAgICAgKSwKKy0gICAgICAg ICAgICAoCistICAgICAgICAgICAgICAgICJwZXJfYXhpc191bnN1cHBvcnRlZF90eXBlIiwKKy0g ICAgICAgICAgICAgICAgKDE2LCAzKSwKKy0gICAgICAgICAgICAgICAgKDE2LCksCistICAgICAg ICAgICAgICAgIDEsCistICAgICAgICAgICAgICAgIE5vbmUsCistICAgICAgICAgICAgICAgIE5v bmUsCistICAgICAgICAgICAgICAgIFRlbnNvclByb3RvLlVJTlQxNiwKKy0gICAgICAgICAgICAg ICAgRmFsc2UsCistICAgICAgICAgICAgKSwKKy0gICAgICAgIF0KKy0gICAgKQorLSAgICBkZWYg dGVzdF9xdWFudGl6ZV8yMV8yMCgKKy0gICAgICAgIHNlbGYsCistICAgICAgICBfOiBzdHIsCist ICAgICAgICB4X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCistICAgICAgICBzY2FsZV9zaGFwZTog dHVwbGVbaW50LCAuLi5dLAorLSAgICAgICAgYXhpczogaW50LAorLSAgICAgICAgYmxvY2tfc2l6 ZTogaW50LAorLSAgICAgICAgb3V0cHV0X2R0eXBlOiBpbnQgfCBOb25lLAorLSAgICAgICAgemVy b19wb2ludF9kdHlwZTogaW50IHwgTm9uZSwKKy0gICAgICAgIGNvbXBhdGlibGU6IGJvb2wsCist ICAgICkgLT4gTm9uZToKKy0gICAgICAgIGRlZiB0ZXN0KAorLSAgICAgICAgICAgIGlucHV0X3No YXBlLCBzY2FsZV9zaGFwZSwgYXhpcywgYmxvY2tfc2l6ZSwgb3V0cHV0X2R0eXBlLCB6ZXJvX3Bv aW50X2R0eXBlCistICAgICAgICApIC0+IE5vbmU6CistICAgICAgICAgICAgbm9kZXMgPSBbCist ICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX25vZGUoCistICAgICAgICAgICAgICAgICAgICAi UXVhbnRpemVMaW5lYXIiLAorLSAgICAgICAgICAgICAgICAgICAgWyJYIiwgIlMiXSwKKy0gICAg ICAgICAgICAgICAgICAgIFsiWSJdLAorLSAgICAgICAgICAgICAgICAgICAgYXhpcz1heGlzLAor LSAgICAgICAgICAgICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19zaXplLAorLSAgICAgICAgICAg ICAgICAgICAgb3V0cHV0X2R0eXBlPW91dHB1dF9kdHlwZSwKKy0gICAgICAgICAgICAgICAgKQor LSAgICAgICAgICAgIF0KKy0gICAgICAgICAgICBpbnB1dHMgPSBbCistICAgICAgICAgICAgICAg IGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9pbmZvKCJYIiwgVGVuc29yUHJvdG8uRkxPQVQsIGlu cHV0X3NoYXBlKSwKKy0gICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2lu Zm8oIlMiLCBUZW5zb3JQcm90by5GTE9BVCwgc2NhbGVfc2hhcGUpLAorLSAgICAgICAgICAgIF0K Ky0gICAgICAgICAgICBpZiB6ZXJvX3BvaW50X2R0eXBlOgorLSAgICAgICAgICAgICAgICBpbnB1 dHMuYXBwZW5kKAorLSAgICAgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlpQIiwgemVyb19wb2ludF9kdHlwZSwgc2NhbGVfc2hhcGUpCistICAgICAgICAgICAg ICAgICkKKy0gICAgICAgICAgICAgICAgbm9kZXNbMF0uaW5wdXQuYXBwZW5kKCJaUCIpCistICAg ICAgICAgICAgb3V0cHV0X3R5cGVfID0gb3V0cHV0X2R0eXBlIG9yIHplcm9fcG9pbnRfZHR5cGUK Ky0gICAgICAgICAgICBncmFwaCA9IGhlbHBlci5tYWtlX2dyYXBoKAorLSAgICAgICAgICAgICAg ICBub2RlcywKKy0gICAgICAgICAgICAgICAgInRlc3QiLAorLSAgICAgICAgICAgICAgICBpbnB1 dHMsCistICAgICAgICAgICAgICAgIFtoZWxwZXIubWFrZV90ZW5zb3JfdmFsdWVfaW5mbygiWSIs IG91dHB1dF90eXBlXywgaW5wdXRfc2hhcGUpXSwKKy0gICAgICAgICAgICApCistICAgICAgICAg ICAgXyA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRpZCgi IiwgMjEpLCAyMCkKKy0KKy0gICAgICAgIGNvbnRleHRfbWFuYWdlciA9ICgKKy0gICAgICAgICAg ICBjb250ZXh0bGliLm51bGxjb250ZXh0KCkgaWYgY29tcGF0aWJsZSBlbHNlIHNlbGYuYXNzZXJ0 UmFpc2VzKFJ1bnRpbWVFcnJvcikKKy0gICAgICAgICkKKy0gICAgICAgIHdpdGggY29udGV4dF9t YW5hZ2VyOgorLSAgICAgICAgICAgIHRlc3QoeF9zaGFwZSwgc2NhbGVfc2hhcGUsIGF4aXMsIGJs b2NrX3NpemUsIG91dHB1dF9kdHlwZSwgemVyb19wb2ludF9kdHlwZSkKKy0KKy0gICAgQHBhcmFt ZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAgICAg KCJwZXJfdGVuc29yIiwgKDE2LCAzKSwgKDEsKSwgTm9uZSwgTm9uZSwgVHJ1ZSksCistICAgICAg ICAgICAgKCJwZXJfYXhpc19ub25lX2Jsb2NrX3NoYXBlIiwgKDE2LCAzKSwgKDE2LCksIDEsIE5v bmUsIFRydWUpLAorLSAgICAgICAgICAgICgicGVyX2F4aXNfemVyb19ibG9ja19zaGFwZSIsICgx NiwgMyksICgxNiwpLCAxLCAwLCBUcnVlKSwKKy0gICAgICAgICAgICAoInBlcl90ZW5zb3JfcG9z aXRpdmVfYmxvY2tfc2hhcGUiLCAoMTYsIDMpLCAoMSwpLCAxLCAyLCBGYWxzZSksCistICAgICAg ICAgICAgKCJwZXJfYXhpc19wb3NpdGl2ZV9ibG9ja19zaGFwZSIsICgxNiwgMyksICgxNiwpLCAx LCAyLCBGYWxzZSksCistICAgICAgICAgICAgKCJibG9ja2VkXzJkIiwgKDE2LCAzKSwgKDQsIDMp LCAwLCA0LCBGYWxzZSksCistICAgICAgICAgICAgKCJibG9ja2VkXzNkIiwgKDQsIDMsIDMyKSwg KDQsIDMsIDgpLCAyLCA0LCBGYWxzZSksCistICAgICAgICBdCistICAgICkKKy0gICAgZGVmIHRl c3RfZGVxdWFudGl6ZV8yMV8yMCgKKy0gICAgICAgIHNlbGYsCistICAgICAgICBfOiBzdHIsCist ICAgICAgICB5X3NoYXBlOiB0dXBsZVtpbnQsIC4uLl0sCistICAgICAgICBzY2FsZV9zaGFwZTog dHVwbGVbaW50LCAuLi5dLAorLSAgICAgICAgYXhpczogaW50LAorLSAgICAgICAgYmxvY2tfc2l6 ZTogaW50LAorLSAgICAgICAgY29tcGF0aWJsZTogYm9vbCwKKy0gICAgKSAtPiBOb25lOgorLSAg ICAgICAgZGVmIHRlc3QoaW5wdXRfc2hhcGUsIHNjYWxlX3NoYXBlLCBheGlzLCBibG9ja19zaXpl KSAtPiBOb25lOgorLSAgICAgICAgICAgIG5vZGVzID0gWworLSAgICAgICAgICAgICAgICBoZWxw ZXIubWFrZV9ub2RlKAorLSAgICAgICAgICAgICAgICAgICAgIkRlcXVhbnRpemVMaW5lYXIiLAor LSAgICAgICAgICAgICAgICAgICAgWyJYIiwgIlMiLCAiWlAiXSwKKy0gICAgICAgICAgICAgICAg ICAgIFsiWSJdLAorLSAgICAgICAgICAgICAgICAgICAgYXhpcz1heGlzLAorLSAgICAgICAgICAg ICAgICAgICAgYmxvY2tfc2l6ZT1ibG9ja19zaXplLAorLSAgICAgICAgICAgICAgICApCistICAg ICAgICAgICAgXQorLSAgICAgICAgICAgIGdyYXBoID0gaGVscGVyLm1ha2VfZ3JhcGgoCistICAg ICAgICAgICAgICAgIG5vZGVzLAorLSAgICAgICAgICAgICAgICAidGVzdCIsCistICAgICAgICAg ICAgICAgIFsKKy0gICAgICAgICAgICAgICAgICAgIGhlbHBlci5tYWtlX3RlbnNvcl92YWx1ZV9p bmZvKCJYIiwgVGVuc29yUHJvdG8uSU5UOCwgaW5wdXRfc2hhcGUpLAorLSAgICAgICAgICAgICAg ICAgICAgaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIlMiLCBUZW5zb3JQcm90by5GTE9B VCwgc2NhbGVfc2hhcGUpLAorLSAgICAgICAgICAgICAgICAgICAgaGVscGVyLm1ha2VfdGVuc29y X3ZhbHVlX2luZm8oIlpQIiwgVGVuc29yUHJvdG8uSU5UOCwgc2NhbGVfc2hhcGUpLAorLSAgICAg ICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgICBbaGVscGVyLm1ha2VfdGVuc29yX3ZhbHVl X2luZm8oIlkiLCBUZW5zb3JQcm90by5GTE9BVCwgaW5wdXRfc2hhcGUpXSwKKy0gICAgICAgICAg ICApCistICAgICAgICAgICAgXyA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vf b3BlcmF0b3JzZXRpZCgiIiwgMjEpLCAyMCkKKy0KKy0gICAgICAgIGNvbnRleHRfbWFuYWdlciA9 ICgKKy0gICAgICAgICAgICBjb250ZXh0bGliLm51bGxjb250ZXh0KCkgaWYgY29tcGF0aWJsZSBl bHNlIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcikKKy0gICAgICAgICkKKy0gICAgICAg IHdpdGggY29udGV4dF9tYW5hZ2VyOgorLSAgICAgICAgICAgIHRlc3QoeV9zaGFwZSwgc2NhbGVf c2hhcGUsIGF4aXMsIGJsb2NrX3NpemUpCistCisgICAgIGRlZiB0ZXN0X2V4dGVybmFsX2RhdGFf dmVyc2lvbl9jb252ZXJzaW9uKHNlbGYpIC0+IE5vbmU6CisgICAgICAgICB3aXRoIHRlbXBmaWxl LlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRlbXBfZGlyOgorICAgICAgICAgICAgICMgQ3JlYXRl IGEgbW9kZWwgd2l0aCBleHRlcm5hbCBkYXRhCitAQCAtMjQxMyw3NiArMjI0OSw2IEBAIGNsYXNz IFRlc3RWZXJzaW9uQ29udmVydGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBb aGVscGVyLm1ha2VfdGVuc29yX3ZhbHVlX2luZm8oIm91dCIsIGR0eXBlLCBkYXRhX3MpXSwKKyAg ICAgICAgICkKKyAKKy0gICAgIyBTY2F0dGVyIDE2IC0+IDE1OiBUeXBlUmVzdHJpY3Rpb24gKGJm bG9hdDE2KSArIFJlbW92ZUF0dHJpYnV0ZSAocmVkdWN0aW9uKQorLSAgICBAcGFyYW1ldGVyaXpl ZC5wYXJhbWV0ZXJpemVkLmV4cGFuZChbKCJTY2F0dGVyRWxlbWVudHMiLCksICgiU2NhdHRlck5E IiwpXSkKKy0gICAgZGVmIHRlc3Rfc2NhdHRlcl8xNl8xNV9zdWNjZXNzKHNlbGYsIG9wX25hbWU6 IHN0cikgLT4gTm9uZToKKy0gICAgICAgIGdyYXBoID0gc2VsZi5fbWFrZV9zY2F0dGVyX2dyYXBo KG9wX25hbWUsIFRlbnNvclByb3RvLkZMT0FULCAibm9uZSIpCistICAgICAgICBjb252ZXJ0ZWQg PSBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0aWQoIiIsIDE2 KSwgMTUpCistICAgICAgICBhc3NlcnQgY29udmVydGVkLm9wc2V0X2ltcG9ydFswXS52ZXJzaW9u ID09IDE1CistCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6ZWQuZXhwYW5kKFsoIlNj YXR0ZXJFbGVtZW50cyIsKSwgKCJTY2F0dGVyTkQiLCldKQorLSAgICBkZWYgdGVzdF9zY2F0dGVy XzE2XzE1X2JmbG9hdDE2X2ZhaWxzKHNlbGYsIG9wX25hbWU6IHN0cikgLT4gTm9uZToKKy0gICAg ICAgIGRlZiB0ZXN0KCkgLT4gTm9uZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vf c2NhdHRlcl9ncmFwaChvcF9uYW1lLCBUZW5zb3JQcm90by5CRkxPQVQxNikKKy0gICAgICAgICAg ICBzZWxmLl9jb252ZXJ0ZWQoZ3JhcGgsIGhlbHBlci5tYWtlX29wZXJhdG9yc2V0aWQoIiIsIDE2 KSwgMTUpCistCistICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHRlc3Qp CistCistICAgICMgT3BzZXQgMTYgYWRkZWQgcmVkdWN0aW9uICdhZGQnIGFuZCAnbXVsJzsgMTYg LT4gMTUgb25seSBhbGxvd3MgJ25vbmUnCistICAgIEBwYXJhbWV0ZXJpemVkLnBhcmFtZXRlcml6 ZWQuZXhwYW5kKAorLSAgICAgICAgWworLSAgICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwg ImFkZCIpLAorLSAgICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwgIm11bCIpLAorLSAgICAg ICAgICAgICgiU2NhdHRlck5EIiwgImFkZCIpLAorLSAgICAgICAgICAgICgiU2NhdHRlck5EIiwg Im11bCIpLAorLSAgICAgICAgXQorLSAgICApCistICAgIGRlZiB0ZXN0X3NjYXR0ZXJfMTZfMTVf cmVkdWN0aW9uX2FkZF9tdWxfZmFpbHMoCistICAgICAgICBzZWxmLCBvcF9uYW1lOiBzdHIsIHJl ZHVjdGlvbjogc3RyCistICAgICkgLT4gTm9uZToKKy0gICAgICAgIGRlZiB0ZXN0KCkgLT4gTm9u ZToKKy0gICAgICAgICAgICBncmFwaCA9IHNlbGYuX21ha2Vfc2NhdHRlcl9ncmFwaChvcF9uYW1l LCBUZW5zb3JQcm90by5GTE9BVCwgcmVkdWN0aW9uKQorLSAgICAgICAgICAgIHNlbGYuX2NvbnZl cnRlZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRpZCgiIiwgMTYpLCAxNSkKKy0KKy0g ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgdGVzdCkKKy0KKy0gICAgIyBT Y2F0dGVyIDE4IC0+IDE3OiByZWplY3QgcmVkdWN0aW9uICJtYXgiIC8gIm1pbiIKKy0gICAgQHBh cmFtZXRlcml6ZWQucGFyYW1ldGVyaXplZC5leHBhbmQoCistICAgICAgICBbCistICAgICAgICAg ICAgKCJTY2F0dGVyRWxlbWVudHMiLCAibWF4IiksCistICAgICAgICAgICAgKCJTY2F0dGVyRWxl bWVudHMiLCAibWluIiksCistICAgICAgICAgICAgKCJTY2F0dGVyTkQiLCAibWF4IiksCistICAg ICAgICAgICAgKCJTY2F0dGVyTkQiLCAibWluIiksCistICAgICAgICBdCistICAgICkKKy0gICAg ZGVmIHRlc3Rfc2NhdHRlcl8xOF8xN19yZWR1Y3Rpb25fbWF4X21pbl9mYWlscygKKy0gICAgICAg IHNlbGYsIG9wX25hbWU6IHN0ciwgcmVkdWN0aW9uOiBzdHIKKy0gICAgKSAtPiBOb25lOgorLSAg ICAgICAgZGVmIHRlc3QoKSAtPiBOb25lOgorLSAgICAgICAgICAgIGdyYXBoID0gc2VsZi5fbWFr ZV9zY2F0dGVyX2dyYXBoKG9wX25hbWUsIFRlbnNvclByb3RvLkZMT0FULCByZWR1Y3Rpb24pCist ICAgICAgICAgICAgc2VsZi5fY29udmVydGVkKGdyYXBoLCBoZWxwZXIubWFrZV9vcGVyYXRvcnNl dGlkKCIiLCAxOCksIDE3KQorLQorLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVy cm9yLCB0ZXN0KQorLQorLSAgICBAcGFyYW1ldGVyaXplZC5wYXJhbWV0ZXJpemVkLmV4cGFuZCgK Ky0gICAgICAgIFsKKy0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIsIE5vbmUpLAorLSAg ICAgICAgICAgICgiU2NhdHRlckVsZW1lbnRzIiwgIm5vbmUiKSwKKy0gICAgICAgICAgICAoIlNj YXR0ZXJFbGVtZW50cyIsICJhZGQiKSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJFbGVtZW50cyIs ICJtdWwiKSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsIE5vbmUpLAorLSAgICAgICAgICAg ICgiU2NhdHRlck5EIiwgIm5vbmUiKSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsICJhZGQi KSwKKy0gICAgICAgICAgICAoIlNjYXR0ZXJORCIsICJtdWwiKSwKKy0gICAgICAgIF0KKy0gICAg KQorLSAgICBkZWYgdGVzdF9zY2F0dGVyXzE4XzE3X2FsbG93ZWRfcmVkdWN0aW9uc19zdWNjZXNz KAorLSAgICAgICAgc2VsZiwgb3BfbmFtZTogc3RyLCByZWR1Y3Rpb246IHN0ciB8IE5vbmUKKy0g ICAgKSAtPiBOb25lOgorLSAgICAgICAgZ3JhcGggPSBzZWxmLl9tYWtlX3NjYXR0ZXJfZ3JhcGgo b3BfbmFtZSwgVGVuc29yUHJvdG8uRkxPQVQsIHJlZHVjdGlvbikKKy0gICAgICAgIGNvbnZlcnRl ZCA9IHNlbGYuX2NvbnZlcnRlZChncmFwaCwgaGVscGVyLm1ha2Vfb3BlcmF0b3JzZXRpZCgiIiwg MTgpLCAxNykKKy0gICAgICAgIGNoZWNrZXIuY2hlY2tfbW9kZWwoY29udmVydGVkKQorLQorIAor IGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgIHVuaXR0ZXN0Lm1haW4oKQorZGlmZiAt LWdpdCBhL3JlcXVpcmVtZW50cy1kZXYudHh0IGIvcmVxdWlyZW1lbnRzLWRldi50eHQKK2luZGV4 IGUzNmVjZDZkOS4uN2U0YTBjY2Q0IDEwMDY0NAorLS0tIGEvcmVxdWlyZW1lbnRzLWRldi50eHQK KysrKyBiL3JlcXVpcmVtZW50cy1kZXYudHh0CitAQCAtMSw2ICsxLDUgQEAKKyBidWlsZAorIG51 bXB5CistcGFyYW1ldGVyaXplZAorIHByb3RvYnVmCisgcHl0ZXN0CisgcHl0ZXN0LWNvdgorLS0g CisyLjU0LjAKKwoKZGlmZiAtLWdpdCBhLzAwMDctQWRkLWZpeGVzLWZvci11c2Utd2l0aC1vbm54 cnVudGltZS5wYXRjaCBiLzAwMDctQWRkLWZpeGVzLWZvci11c2Utd2l0aC1vbm54cnVudGltZS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mzg4Yjk5Ci0tLSAvZGV2 L251bGwKKysrIGIvMDAwNy1BZGQtZml4ZXMtZm9yLXVzZS13aXRoLW9ubnhydW50aW1lLnBhdGNo CkBAIC0wLDAgKzEsNzIgQEAKK0Zyb20gODk3MmRiOTBjMzQ4MzY3Mjg5Y2U3NjQwMDA2MDdmYTdh ODIzMzZiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERpZWdvIEhlcnJlcmEgPGRo ZXJyZXJhQHJlZGhhdC5jb20+CitEYXRlOiBXZWQsIDEgSnVsIDIwMjYgMDA6MjA6MTcgLTA0MDAK K1N1YmplY3Q6IFtQQVRDSCA3LzddIEFkZCBmaXhlcyBmb3IgdXNlIHdpdGggb25ueHJ1bnRpbWUK KworCitkaWZmIC0tZ2l0IGEvb25ueC9kZWZzL3NjaGVtYS5jYyBiL29ubngvZGVmcy9zY2hlbWEu Y2MKK2luZGV4IDFlZWMzNGViMi4uMjk3Mzk1MWMzIDEwMDY0NAorLS0tIGEvb25ueC9kZWZzL3Nj aGVtYS5jYworKysrIGIvb25ueC9kZWZzL3NjaGVtYS5jYworQEAgLTI3LDggKzI3LDE5IEBACisg I2luY2x1ZGUgIm9ubngvY29tbW9uL2Fzc2VydGlvbnMuaCIKKyAjZW5kaWYKKyAjaW5jbHVkZSAi b25ueC9kZWZzL3BhcnNlci5oIgorKyNpbmNsdWRlICJvbm54L29ubnhydW50aW1lX2ZpeC5oIgor IAorIG5hbWVzcGFjZSBPTk5YX05BTUVTUEFDRSB7CisrCisrYm9vbCBPTk5YUnVudGltZUZpeDo6 X3N0YXRpY19yZWdpc3RyYXRpb25fZGlzYWJsZWQgPSBmYWxzZTsKKytib29sIE9OTlhSdW50aW1l Rml4Ojppc1N0YXRpY1JlZ2lzdHJhdGlvbkRpc2FibGVkKCkgeworKyAgICByZXR1cm4gX3N0YXRp Y19yZWdpc3RyYXRpb25fZGlzYWJsZWQ7CisrfQorKworK3ZvaWQgT05OWFJ1bnRpbWVGaXg6OmRp c2FibGVTdGF0aWNSZWdpc3RyYXRpb24oKSB7CisrICAgIF9zdGF0aWNfcmVnaXN0cmF0aW9uX2Rp c2FibGVkID0gdHJ1ZTsKKyt9CisrCisgLy8gLTEgbWVhbnMgT05OWCBzY2hlbWEgaGFzbid0IGJl ZW4gbG9hZGVkIHlldAorIC8vIDAgbWVhbnMgYWxsIHZlcnNpb25zIG9mIE9OTlggc2NoZW1hIGhh dmUgYmVlbiBsb2FkZWQKKyAvLyBPdGhlciBwb3NpdGl2ZSBpbnRlZ2VyIG1lYW5zIHRoZSBPTk5Y IHNjaGVtYXMgZm9yIHRoZSBzcGVjaWZpZWQgdmVyc2lvbiBoYXZlIGJlZW4gbG9hZGVkCitAQCAt MTc3Nyw2ICsxNzg4LDkgQEAgT3BOYW1lX0RvbWFpbl9WZXJzaW9uX1NjaGVtYV9NYXAmIE9wU2No ZW1hUmVnaXN0cnk6Om1hcCgpIHsKKyAgIGNsYXNzIFNjaGVtYXNSZWdpc3RlcmVyIHsKKyAgICBw dWJsaWM6CisgICAgIFNjaGVtYXNSZWdpc3RlcmVyKCkgeworKyAgICAgIC8vIENoZWNrIGlmIHN0 YXRpYyByZWdpc3RyYXRpb24gaXMgYWN0dWFsbHkgZGlzYWJsZWQKKysgICAgICBpZihPTk5YUnVu dGltZUZpeDo6aXNTdGF0aWNSZWdpc3RyYXRpb25EaXNhYmxlZCgpKSByZXR1cm47CisrCisgICAg ICAgLy8gSW4gZGVidWcgYnVpbGRzLCB0aGUgbnVtYmVyIG9mIHNjaGVtYSByZWdpc3RlcmVkIGlu IHRoaXMgY29uc3RydWN0b3IKKyAgICAgICAvLyBpcyBjb21wYXJlZCBhZ2FpbnN0IHRoZSBudW1i ZXIgb2YgY2FsbHMgdG8gc2NoZW1hIHJlZ2lzdHJhdGlvbiBtYWNyb3MuCisgI2lmbmRlZiBOREVC VUcKK0BAIC0xODQ1LDcgKzE4NTksNyBAQCBib29sIElzT25ueFN0YXRpY1JlZ2lzdHJhdGlvbkRp c2FibGVkKCkgeworICNpZmRlZiBfX09OTlhfRElTQUJMRV9TVEFUSUNfUkVHSVNUUkFUSU9OCisg ICByZXR1cm4gdHJ1ZTsKKyAjZWxzZQorLSAgcmV0dXJuIGZhbHNlOworKyAgcmV0dXJuIE9OTlhS dW50aW1lRml4Ojppc1N0YXRpY1JlZ2lzdHJhdGlvbkRpc2FibGVkKCk7CisgI2VuZGlmCisgfQor IAorZGlmZiAtLWdpdCBhL29ubngvb25ueHJ1bnRpbWVfZml4LmggYi9vbm54L29ubnhydW50aW1l X2ZpeC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi4yNDk1YjkzMTAK Ky0tLSAvZGV2L251bGwKKysrKyBiL29ubngvb25ueHJ1bnRpbWVfZml4LmgKK0BAIC0wLDAgKzEs MTQgQEAKKysjcHJhZ21hIG9uY2UKKysKKytuYW1lc3BhY2UgT05OWF9OQU1FU1BBQ0UgeworKwor K2NsYXNzIE9OTlhSdW50aW1lRml4IHsKKytwdWJsaWM6CisrICBzdGF0aWMgYm9vbCBpc1N0YXRp Y1JlZ2lzdHJhdGlvbkRpc2FibGVkKCk7CisrICBzdGF0aWMgdm9pZCBkaXNhYmxlU3RhdGljUmVn aXN0cmF0aW9uKCk7CisrCisrcHJpdmF0ZToKKysgIHN0YXRpYyBib29sIF9zdGF0aWNfcmVnaXN0 cmF0aW9uX2Rpc2FibGVkOworK307CisrCisrfSAvLyBuYW1lc3BhY2UgT05OWF9OQU1FU1BBQ0UK Ky0tIAorMi41NC4wCisKCmRpZmYgLS1naXQgYS9vbm54LnNwZWMgYi9vbm54LnNwZWMKaW5kZXgg MDhiNzNlYS4uNGQxMWNlMyAxMDA2NDQKLS0tIGEvb25ueC5zcGVjCisrKyBiL29ubnguc3BlYwpA QCAtOSw5ICs5LDE4IEBAIExpY2Vuc2U6ICAgIEFwYWNoZS0yLjAKIFVSTDogICAgICAgIGh0dHBz Oi8vZ2l0aHViLmNvbS9vbm54L29ubngKIFNvdXJjZTA6ICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9v bm54L29ubngvYXJjaGl2ZS92JXt2ZXJzaW9ufS8le25hbWV9LSV7dmVyc2lvbn0udGFyLmd6CiAj IEJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgYW5kIGZpeCBpbnN0YWxsIGxvY2F0aW9uIAotUGF0Y2g6 ICAgICAwMDAwLUJ1aWxkLXNoYXJlZC1saWJyYXJpZXMtYW5kLWZpeC1pbnN0YWxsLWxvY2F0aW9u LnBhdGNoCitQYXRjaDogICAgIDAwMDEtQnVpbGQtc2hhcmVkLWxpYnJhcmllcy5wYXRjaAorUGF0 Y2g6ICAgICAwMDAyLUZpeC1pbnN0YWxsLWxvY2F0aW9uLnBhdGNoCisjIExhdGVzdCBuYW5vYmlu ZCB1c2VzIGRpZmZlcmVudCBhcmd1bWVudCBmb3JtYXQKK1BhdGNoOiAgICAgMDAwMy1GaXgtbmFu b2JpbmQtYXJndW1lbnRzLnBhdGNoCisjIExldCBweXByb2plY3Rfd2hlZWwgdXNlIGJpbmFyaWVz IGZyb20gY21ha2VfYnVpbGQKK1BhdGNoOiAgICAgMDAwNC1MZXQtcHlwcm9qZWN0X3doZWVsLXVz ZS1iaW5hcmllcy1mcm9tLWNtYWtlX2J1aWxkLnBhdGNoCisjIEZpeGVzIHByb3RvYnVmIGNvbmZs aWN0cyB3aGVuIHVzaW5nIGJvdGggcHl0aG9uLW9ubnggYW5kIHB5dGhvbi1vbm54cnVudGltZQor UGF0Y2g6ICAgICAwMDA1LVB5dGhvbi1iaW5hcnktc2hvdWxkLWxpbmstdG8tc3lzdGVtLW9ubngu cGF0Y2gKICMgUmVtb3ZlIG9ic29sZXRlZCB0ZXN0aW5nIGRlcGVuZGVuY3kKLVBhdGNoOiAgICAg MDAwMi1SZW1vdmUtcHl0aG9uLXBhcmFtZXRlcml6ZWQtZGVwZW5kZW5jeS5wYXRjaAorUGF0Y2g6 ICAgICAwMDA2LVJlbW92ZS1weXRob24tcGFyYW1ldGVyaXplZC1kZXBlbmRlbmN5LnBhdGNoCisj IEFkZCBmaXhlcyBmb3IgdXNlIHdpdGggb25ueHJ1bnRpbWUKK1BhdGNoOiAgICAgMDAwNy1BZGQt Zml4ZXMtZm9yLXVzZS13aXRoLW9ubnhydW50aW1lLnBhdGNoCiAKICVpZiAle3VuZGVmaW5lZCBm YzQwfSAmJiAle3VuZGVmaW5lZCBmYzQxfQogIyBodHRwczovL2ZlZG9yYXByb2plY3Qub3JnL3dp a2kvQ2hhbmdlcy9FbmNvdXJhZ2VJNjg2TGVhZlJlbW92YWwKQEAgLTczLDcgKzgyLDcgQEAgZXhw b3J0IFZQQVRIX0JVSUxERElSPSV7X3ZwYXRoX2J1aWxkZGlyfQogICAgIC1EUFlfRVhUX1NVRkZJ WD0le3B5dGhvbjNfZXh0X3N1ZmZpeH0gXAogICAgIC1EUFlfU0lURUFSQ0g9JXtweXRob24zX3Np dGVhcmNofSBcCiAgICAgLURDTUFLRV9TS0lQX1JQQVRIOkJPT0w9T04gXAotICAgIC1ET05OWF9E SVNBQkxFX1NUQVRJQ19SRUdJU1RSQVRJT049T04KKyAgICAtRE9OTlhfRElTQUJMRV9TVEFUSUNf UkVHSVNUUkFUSU9OPU9GRgogCiAjIEJ1aWxkIAogJWNtYWtlX2J1aWxkCg==