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: Christian Dersch To: git-commits@fedoraproject.org Subject: [rpms/python-photutils] epel10.2: new version Date: Sat, 04 Jul 2026 03:10:47 GMT Message-ID: <178313464767.1.3991755320315306802.rpms-python-photutils-95133437e29a@fedoraproject.org> List-ID: X-Git-Repo: rpms/python-photutils X-Git-Branch: epel10.2 X-Git-Rev: 95133437e29a27ed0a1145a1178bfa62b9ba664e QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcHl0aG9uLXBob3R1 dGlscwpCcmFuY2ggOiBlcGVsMTAuMgpDb21taXQgOiA5NTEzMzQzN2UyOWEyN2VkMGExMTQ1YTEx NzhiZmE2MmI5YmE2NjRlCkF1dGhvciA6IENocmlzdGlhbiBEZXJzY2ggPGx1cGluaXhAbWFpbGJv eC5vcmc+CkRhdGUgICA6IDIwMTktMDQtMjhUMTY6MzU6MTYrMDI6MDAKU3RhdHMgIDogKzgvLTE3 MjcgaW4gNSBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3Jw bXMvcHl0aG9uLXBob3R1dGlscy9jLzk1MTMzNDM3ZTI5YTI3ZWQwYTExNDVhMTE3OGJmYTYyYjli YTY2NGU/YnJhbmNoPWVwZWwxMC4yCgpMb2c6Cm5ldyB2ZXJzaW9uCgotLS0KZGlmZiAtLWdpdCBh Ly5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGRlMzIzMTUuLmY3NTQyMDUgMTAwNjQ0Ci0t LSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtNSwzICs1LDQgQEAKIC9waG90dXRp bHMtMC4zLjIudGFyLmd6CiAvcGhvdHV0aWxzLTAuNC50YXIuZ3oKIC9waG90dXRpbHMtMC41LnRh ci5negorL3Bob3R1dGlscy0wLjYudGFyLmd6CgpkaWZmIC0tZ2l0IGEvcHl0aG9uLXBob3R1dGls cy1Vc2UtYXN0cm9weV9oZWxwZXJzLXByb3ZpZGVkLWJ5LXRoZS1zeXN0ZW0ucGF0Y2ggYi9weXRo b24tcGhvdHV0aWxzLVVzZS1hc3Ryb3B5X2hlbHBlcnMtcHJvdmlkZWQtYnktdGhlLXN5c3RlbS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDA1YWRiNi4uMDAwMDAwMAotLS0g YS9weXRob24tcGhvdHV0aWxzLVVzZS1hc3Ryb3B5X2hlbHBlcnMtcHJvdmlkZWQtYnktdGhlLXN5 c3RlbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLUZyb206IE9sZSBTdHJl aWNoZXIgPG9sZWJvbGVAZGViaWFuLm9yZz4KLURhdGU6IFRodSwgNyBKdWwgMjAxNiAxMDoyNjo0 MyArMDIwMAotU3ViamVjdDogVXNlIGFzdHJvcHlfaGVscGVycyBwcm92aWRlZCBieSB0aGUgc3lz dGVtCi0KLS0tLQotIHNldHVwLmNmZyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NldHVwLmNmZyBiL3NldHVwLmNm ZwotaW5kZXggZTc4ODFkMC4uMmQyM2JmZCAxMDA2NDQKLS0tLSBhL3NldHVwLmNmZwotKysrIGIv c2V0dXAuY2ZnCi1AQCAtMTQsNyArMTQsNyBAQCAKLSBhZGRvcHRzID0gLS1weWFyZ3MgLXAgbm86 d2FybmluZ3MKLSAKLSBbYWhfYm9vdHN0cmFwXQotLWF1dG9fdXNlID0gVHJ1ZQotK2F1dG9fdXNl ID0gRmFsc2UKLSAKLSBbbWV0YWRhdGFdCi0gcGFja2FnZV9uYW1lID0gcGhvdHV0aWxzCgpkaWZm IC0tZ2l0IGEvcHl0aG9uLXBob3R1dGlscy1maXhlcy1mb3ItbnVtcHktMS4xNC5wYXRjaCBiL3B5 dGhvbi1waG90dXRpbHMtZml4ZXMtZm9yLW51bXB5LTEuMTQucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGFmZTJhYmQuLjAwMDAwMDAKLS0tIGEvcHl0aG9uLXBob3R1dGlscy1m aXhlcy1mb3ItbnVtcHktMS4xNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3MDEgKzAsMCBA QAotZGlmZiAtTmF1ciBwaG90dXRpbHMtMC40L2RvY3MvYXBlcnR1cmUucnN0IHBob3R1dGlscy0w LjQuZml4ZWQvZG9jcy9hcGVydHVyZS5yc3QKLS0tLSBwaG90dXRpbHMtMC40L2RvY3MvYXBlcnR1 cmUucnN0CTIwMTctMTAtMzAgMTU6Mzg6MTguMDAwMDAwMDAwICswMTAwCi0rKysgcGhvdHV0aWxz LTAuNC5maXhlZC9kb2NzL2FwZXJ0dXJlLnJzdAkyMDE4LTAyLTE0IDAzOjU2OjA3LjA2NDUyMjYz NCArMDEwMAotQEAgLTEyMiwxMiArMTIyLDEzIEBACi0gICAgID4+PiBmcm9tIHBob3R1dGlscyBp bXBvcnQgYXBlcnR1cmVfcGhvdG9tZXRyeQotICAgICA+Pj4gZGF0YSA9IG5wLm9uZXMoKDEwMCwg MTAwKSkKLSAgICAgPj4+IHBob3RfdGFibGUgPSBhcGVydHVyZV9waG90b21ldHJ5KGRhdGEsIGFw ZXJ0dXJlcykKLS0gICAgPj4+IHByaW50KHBob3RfdGFibGUpICAgICMgZG9jdGVzdDogK1NLSVAK LS0gICAgIGlkIHhjZW50ZXIgeWNlbnRlciAgYXBlcnR1cmVfc3VtCi0rICAgID4+PiBwaG90X3Rh YmxlWydhcGVydHVyZV9zdW0nXS5pbmZvLmZvcm1hdCA9ICclLjhnJyAgIyBmb3IgY29uc2lzdGVu dCB0YWJsZSBvdXRwdXQKLSsgICAgPj4+IHByaW50KHBob3RfdGFibGUpCi0rICAgICBpZCB4Y2Vu dGVyIHljZW50ZXIgYXBlcnR1cmVfc3VtCi0gICAgICAgICAgIHBpeCAgICAgcGl4Ci0tICAgIC0t LSAtLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0tLQotLSAgICAgIDEgICAgMzAuMCAgICAzMC4w IDI4LjI3NDMzMzg4MjMKLS0gICAgICAyICAgIDQwLjAgICAgNDAuMCAyOC4yNzQzMzM4ODIzCi0r ICAgIC0tLSAtLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0tLS0tCi0rICAgICAgMSAgICAzMC4wICAg IDMwLjAgICAgMjguMjc0MzM0Ci0rICAgICAgMiAgICA0MC4wICAgIDQwLjAgICAgMjguMjc0MzM0 Ci0gCi0gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSByZXN1bHRzIG9mIHRoZSBwaG90b21ldHJ5 IGluIGFuIEFzdHJvcHkKLSBgfmFzdHJvcHkudGFibGUuUVRhYmxlYC4gIEluIHRoaXMgZXhhbXBs ZSwgdGhlIHRhYmxlIGhhcyBmb3VyIGNvbHVtbnMsCi1AQCAtMTU5LDcgKzE2MCw3IEBACi0gCi0g ICAgID4+PiBwaG90X3RhYmxlID0gYXBlcnR1cmVfcGhvdG9tZXRyeShkYXRhLCBhcGVydHVyZXMs IG1ldGhvZD0nc3VicGl4ZWwnLAotICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3VicGl4ZWxzPTUpCi0tICAgID4+PiBwcmludChwaG90X3RhYmxlKSAgICAjIGRvY3Rl c3Q6ICtTS0lQCi0rICAgID4+PiBwcmludChwaG90X3RhYmxlKQotICAgICAgaWQgeGNlbnRlciB5 Y2VudGVyIGFwZXJ0dXJlX3N1bQotICAgICAgICAgICBwaXggICAgIHBpeAotICAgICAtLS0gLS0t LS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tLQotQEAgLTE5MiwxMiArMTkzLDE0IEBACi0gICAgID4+ PiByYWRpaSA9IFszLiwgNC4sIDUuXQotICAgICA+Pj4gYXBlcnR1cmVzID0gW0NpcmN1bGFyQXBl cnR1cmUocG9zaXRpb25zLCByPXIpIGZvciByIGluIHJhZGlpXQotICAgICA+Pj4gcGhvdF90YWJs ZSA9IGFwZXJ0dXJlX3Bob3RvbWV0cnkoZGF0YSwgYXBlcnR1cmVzKQotLSAgICA+Pj4gcHJpbnQo cGhvdF90YWJsZSkgICAgIyBkb2N0ZXN0OiArU0tJUAotKyAgICA+Pj4gZm9yIGNvbCBpbiBwaG90 X3RhYmxlLmNvbG5hbWVzOgotKyAgICAuLi4gICAgIHBob3RfdGFibGVbY29sXS5pbmZvLmZvcm1h dCA9ICclLjhnJyAgIyBmb3IgY29uc2lzdGVudCB0YWJsZSBvdXRwdXQKLSsgICAgPj4+IHByaW50 KHBob3RfdGFibGUpCi0gICAgICBpZCB4Y2VudGVyIHljZW50ZXIgYXBlcnR1cmVfc3VtXzAgYXBl cnR1cmVfc3VtXzEgYXBlcnR1cmVfc3VtXzIKLSAgICAgICAgICAgcGl4ICAgICBwaXgKLSAgICAg LS0tIC0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLSAtLS0tLS0t LS0tLS0tLQotLSAgICAgIDEgICAgMzAuMCAgICAzMC4wICAyOC4yNzQzMzM4ODIzICA1MC4yNjU0 ODI0NTc0ICA3OC41Mzk4MTYzMzk3Ci0tICAgICAgMiAgICA0MC4wICAgIDQwLjAgIDI4LjI3NDMz Mzg4MjMgIDUwLjI2NTQ4MjQ1NzQgIDc4LjUzOTgxNjMzOTcKLSsgICAgICAxICAgICAgMzAgICAg ICAzMCAgICAgIDI4LjI3NDMzNCAgICAgIDUwLjI2NTQ4MiAgICAgIDc4LjUzOTgxNgotKyAgICAg IDIgICAgICA0MCAgICAgIDQwICAgICAgMjguMjc0MzM0ICAgICAgNTAuMjY1NDgyICAgICAgNzgu NTM5ODE2Ci0gCi0gRm9yIG11bHRpcGxlIGFwZXJ0dXJlcywgdGhlIG91dHB1dCB0YWJsZSBjb2x1 bW4gbmFtZXMgYXJlIGFwcGVuZGVkCi0gd2l0aCB0aGUgYGBwb3NpdGlvbnNgYCBpbmRleC4KLUBA IC0yMTIsMTIgKzIxNSwxNCBAQAotICAgICA+Pj4gdGhldGEgPSBucC5waSAvIDQuCi0gICAgID4+ PiBhcGVydHVyZXMgPSBFbGxpcHRpY2FsQXBlcnR1cmUocG9zaXRpb25zLCBhLCBiLCB0aGV0YSkK LSAgICAgPj4+IHBob3RfdGFibGUgPSBhcGVydHVyZV9waG90b21ldHJ5KGRhdGEsIGFwZXJ0dXJl cykKLS0gICAgPj4+IHByaW50KHBob3RfdGFibGUpICAgICMgZG9jdGVzdDogK1NLSVAKLS0gICAg IGlkIHhjZW50ZXIgeWNlbnRlciAgYXBlcnR1cmVfc3VtCi0rICAgID4+PiBmb3IgY29sIGluIHBo b3RfdGFibGUuY29sbmFtZXM6Ci0rICAgIC4uLiAgICAgcGhvdF90YWJsZVtjb2xdLmluZm8uZm9y bWF0ID0gJyUuOGcnICAjIGZvciBjb25zaXN0ZW50IHRhYmxlIG91dHB1dAotKyAgICA+Pj4gcHJp bnQocGhvdF90YWJsZSkKLSsgICAgIGlkIHhjZW50ZXIgeWNlbnRlciBhcGVydHVyZV9zdW0KLSAg ICAgICAgICAgcGl4ICAgICBwaXgKLS0gICAgLS0tIC0tLS0tLS0gLS0tLS0tLSAtLS0tLS0tLS0t LS0tCi0tICAgICAgMSAgICAzMC4wICAgIDMwLjAgNDcuMTIzODg5ODAzOAotLSAgICAgIDIgICAg NDAuMCAgICA0MC4wIDQ3LjEyMzg4OTgwMzgKLSsgICAgLS0tIC0tLS0tLS0gLS0tLS0tLSAtLS0t LS0tLS0tLS0KLSsgICAgICAxICAgICAgMzAgICAgICAzMCAgICAgNDcuMTIzODkKLSsgICAgICAy ICAgICAgNDAgICAgICA0MCAgICAgNDcuMTIzODkKLSAKLSBBZ2FpbiwgZm9yIG11bHRpcGxlIGFw ZXJ0dXJlcyBvbmUgc2hvdWxkIGlucHV0IGEgbGlzdCBvZiBhcGVydHVyZQotIG9iamVjdHMsIGVh Y2ggd2l0aCBpZGVudGljYWwgcG9zaXRpb25zOjoKLUBAIC0yMjgsMTIgKzIzMywxNCBAQAotICAg ICA+Pj4gYXBlcnR1cmVzID0gW0VsbGlwdGljYWxBcGVydHVyZShwb3NpdGlvbnMsIGE9YWksIGI9 YmksIHRoZXRhPXRoZXRhKQotICAgICAuLi4gICAgICAgICAgICAgIGZvciAoYWksIGJpKSBpbiB6 aXAoYSwgYildCi0gICAgID4+PiBwaG90X3RhYmxlID0gYXBlcnR1cmVfcGhvdG9tZXRyeShkYXRh LCBhcGVydHVyZXMpCi0tICAgID4+PiBwcmludChwaG90X3RhYmxlKSAgICAjIGRvY3Rlc3Q6ICtT S0lQCi0rICAgID4+PiBmb3IgY29sIGluIHBob3RfdGFibGUuY29sbmFtZXM6Ci0rICAgIC4uLiAg ICAgcGhvdF90YWJsZVtjb2xdLmluZm8uZm9ybWF0ID0gJyUuOGcnICAjIGZvciBjb25zaXN0ZW50 IHRhYmxlIG91dHB1dAotKyAgICA+Pj4gcHJpbnQocGhvdF90YWJsZSkKLSAgICAgIGlkIHhjZW50 ZXIgeWNlbnRlciBhcGVydHVyZV9zdW1fMCBhcGVydHVyZV9zdW1fMSBhcGVydHVyZV9zdW1fMgot ICAgICAgICAgICBwaXggICAgIHBpeAotICAgICAtLS0gLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0t LS0tLS0tIC0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tCi0tICAgICAgMSAgICAzMC4wICAg IDMwLjAgIDQ3LjEyMzg4OTgwMzggIDc1LjM5ODIyMzY4NjIgIDEwOS45NTU3NDI4NzYKLS0gICAg ICAyICAgIDQwLjAgICAgNDAuMCAgNDcuMTIzODg5ODAzOCAgNzUuMzk4MjIzNjg2MiAgMTA5Ljk1 NTc0Mjg3NgotKyAgICAgIDEgICAgICAzMCAgICAgIDMwICAgICAgIDQ3LjEyMzg5ICAgICAgNzUu Mzk4MjI0ICAgICAgMTA5Ljk1NTc0Ci0rICAgICAgMiAgICAgIDQwICAgICAgNDAgICAgICAgNDcu MTIzODkgICAgICA3NS4zOTgyMjQgICAgICAxMDkuOTU1NzQKLSAKLSAKLSBCYWNrZ3JvdW5kIFN1 YnRyYWN0aW9uCi1AQCAtMjY3LDEyICsyNzQsMTQgQEAKLSAKLSAgICAgPj4+IGFwZXJzID0gW2Fw ZXJ0dXJlcywgYW5udWx1c19hcGVydHVyZXNdCi0gICAgID4+PiBwaG90X3RhYmxlID0gYXBlcnR1 cmVfcGhvdG9tZXRyeShkYXRhLCBhcGVycykKLS0gICAgPj4+IHByaW50KHBob3RfdGFibGUpICAg ICMgZG9jdGVzdDogK1NLSVAKLSsgICAgPj4+IGZvciBjb2wgaW4gcGhvdF90YWJsZS5jb2xuYW1l czoKLSsgICAgLi4uICAgICBwaG90X3RhYmxlW2NvbF0uaW5mby5mb3JtYXQgPSAnJS44ZycgICMg Zm9yIGNvbnNpc3RlbnQgdGFibGUgb3V0cHV0Ci0rICAgID4+PiBwcmludChwaG90X3RhYmxlKQot ICAgICAgaWQgeGNlbnRlciB5Y2VudGVyIGFwZXJ0dXJlX3N1bV8wIGFwZXJ0dXJlX3N1bV8xCi0g ICAgICAgICAgIHBpeCAgICAgcGl4Ci0gICAgIC0tLSAtLS0tLS0tIC0tLS0tLS0gLS0tLS0tLS0t LS0tLS0gLS0tLS0tLS0tLS0tLS0KLS0gICAgICAxICAgIDMwLjAgICAgMzAuMCAgMjguMjc0MzMz ODgyMyAgODcuOTY0NTk0MzAwNQotLSAgICAgIDIgICAgNDAuMCAgICA0MC4wICAyOC4yNzQzMzM4 ODIzICA4Ny45NjQ1OTQzMDA1Ci0rICAgICAgMSAgICAgIDMwICAgICAgMzAgICAgICAyOC4yNzQz MzQgICAgICA4Ny45NjQ1OTQKLSsgICAgICAyICAgICAgNDAgICAgICA0MCAgICAgIDI4LjI3NDMz NCAgICAgIDg3Ljk2NDU5NAotIAotIE5vdGUgdGhhdCB3ZSBjYW5ub3Qgc2ltcGx5IHN1YnRyYWN0 IHRoZSBhcGVydHVyZSBzdW1zIGJlY2F1c2UgdGhlCi0gYXBlcnR1cmVzIGhhdmUgZGlmZmVyZW50 IGFyZWFzLgotQEAgLTI4OSwxMSArMjk4LDEyIEBACi0gICAgID4+PiBia2dfc3VtID0gYmtnX21l YW4gKiBhcGVydHVyZXMuYXJlYSgpCi0gICAgID4+PiBmaW5hbF9zdW0gPSBwaG90X3RhYmxlWydh cGVydHVyZV9zdW1fMCddIC0gYmtnX3N1bQotICAgICA+Pj4gcGhvdF90YWJsZVsncmVzaWR1YWxf YXBlcnR1cmVfc3VtJ10gPSBmaW5hbF9zdW0KLS0gICAgPj4+IHByaW50KHBob3RfdGFibGVbJ3Jl c2lkdWFsX2FwZXJ0dXJlX3N1bSddKSAgICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLSsgICAgPj4+ IHBob3RfdGFibGVbJ3Jlc2lkdWFsX2FwZXJ0dXJlX3N1bSddLmluZm8uZm9ybWF0ID0gJyUuOGcn ICAjIGZvciBjb25zaXN0ZW50IHRhYmxlIG91dHB1dAotKyAgICA+Pj4gcHJpbnQocGhvdF90YWJs ZVsncmVzaWR1YWxfYXBlcnR1cmVfc3VtJ10pCi0gICAgIHJlc2lkdWFsX2FwZXJ0dXJlX3N1bQot ICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS0gICAgICAgIC03LjEwNTQyNzM1NzZlLTE1Ci0t ICAgICAgICAtNy4xMDU0MjczNTc2ZS0xNQotKyAgICAgICAgICAgLTcuMTA1NDI3NGUtMTUKLSsg ICAgICAgICAgIC03LjEwNTQyNzRlLTE1Ci0gCi0gVGhlIHJlc3VsdCBoZXJlIHNob3VsZCBiZSB6 ZXJvIGJlY2F1c2UgYWxsIG9mIHRoZSBkYXRhIHZhbHVlcyBhcmUgMS4wCi0gKHRoZSB0aW55IGRp ZmZlcmVuY2UgZnJvbSAwLjAgaXMgZHVlIHRvIG51bWVyaWNhbCBwcmVjaXNpb24pLgotQEAgLTMx NiwxMiArMzI2LDE0IEBACi0gCi0gICAgID4+PiBlcnJvciA9IDAuMSAqIGRhdGEKLSAgICAgPj4+ IHBob3RfdGFibGUgPSBhcGVydHVyZV9waG90b21ldHJ5KGRhdGEsIGFwZXJ0dXJlcywgZXJyb3I9 ZXJyb3IpCi0tICAgID4+PiBwcmludChwaG90X3RhYmxlKSAgICAjIGRvY3Rlc3Q6ICtTS0lQCi0t ICAgICBpZCB4Y2VudGVyIHljZW50ZXIgIGFwZXJ0dXJlX3N1bSBhcGVydHVyZV9zdW1fZXJyCi0r ICAgID4+PiBmb3IgY29sIGluIHBob3RfdGFibGUuY29sbmFtZXM6Ci0rICAgIC4uLiAgICAgcGhv dF90YWJsZVtjb2xdLmluZm8uZm9ybWF0ID0gJyUuOGcnICAjIGZvciBjb25zaXN0ZW50IHRhYmxl IG91dHB1dAotKyAgICA+Pj4gcHJpbnQocGhvdF90YWJsZSkKLSsgICAgIGlkIHhjZW50ZXIgeWNl bnRlciBhcGVydHVyZV9zdW0gYXBlcnR1cmVfc3VtX2VycgotICAgICAgICAgICBwaXggICAgIHBp eAotLSAgICAtLS0gLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0t LQotLSAgICAgIDEgICAgMzAuMCAgICAzMC4wIDI4LjI3NDMzMzg4MjMgICAwLjUzMTczNjE1NTI3 MgotLSAgICAgIDIgICAgNDAuMCAgICA0MC4wIDI4LjI3NDMzMzg4MjMgICAwLjUzMTczNjE1NTI3 MgotKyAgICAtLS0gLS0tLS0tLSAtLS0tLS0tIC0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0t Ci0rICAgICAgMSAgICAgIDMwICAgICAgMzAgICAgMjguMjc0MzM0ICAgICAgIDAuNTMxNzM2MTYK LSsgICAgICAyICAgICAgNDAgICAgICA0MCAgICAyOC4yNzQzMzQgICAgICAgMC41MzE3MzYxNgot IAotIGBgJ2FwZXJ0dXJlX3N1bV9lcnInYGAgdmFsdWVzIGFyZSBnaXZlbiBieToKLSAKLUBAIC0z NjMsMTggKzM3NSwyMCBAQAotICAgICA+Pj4gZGF0YVsyLCAyXSA9IDEwMC4gICAjIGJhZCBwaXhl bAotICAgICA+Pj4gbWFza1syLCAyXSA9IFRydWUKLSAgICAgPj4+IHQxID0gYXBlcnR1cmVfcGhv dG9tZXRyeShkYXRhLCBhcGVydHVyZSwgbWFzaz1tYXNrKQotLSAgICA+Pj4gcHJpbnQodDFbJ2Fw ZXJ0dXJlX3N1bSddKSAgICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLS0gICAgIGFwZXJ0dXJlX3N1 bQotLSAgICAgLS0tLS0tLS0tLS0tLQotLSAgICAgMTEuNTY2MzcwNjE0NAotKyAgICA+Pj4gdDFb J2FwZXJ0dXJlX3N1bSddLmluZm8uZm9ybWF0ID0gJyUuOGcnICAjIGZvciBjb25zaXN0ZW50IHRh YmxlIG91dHB1dAotKyAgICA+Pj4gcHJpbnQodDFbJ2FwZXJ0dXJlX3N1bSddKQotKyAgICBhcGVy dHVyZV9zdW0KLSsgICAgLS0tLS0tLS0tLS0tCi0rICAgICAgIDExLjU2NjM3MQotIAotIFRoZSBy ZXN1bHQgaXMgdmVyeSBkaWZmZXJlbnQgaWYgYSBgYG1hc2tgYCBpbWFnZSBpcyBub3QgcHJvdmlk ZWQ6OgotIAotICAgICA+Pj4gdDIgPSBhcGVydHVyZV9waG90b21ldHJ5KGRhdGEsIGFwZXJ0dXJl KQotLSAgICA+Pj4gcHJpbnQodDJbJ2FwZXJ0dXJlX3N1bSddKSAgICAjIGRvY3Rlc3Q6ICtGTE9B VF9DTVAKLSsgICAgPj4+IHQyWydhcGVydHVyZV9zdW0nXS5pbmZvLmZvcm1hdCA9ICclLjhnJyAg IyBmb3IgY29uc2lzdGVudCB0YWJsZSBvdXRwdXQKLSsgICAgPj4+IHByaW50KHQyWydhcGVydHVy ZV9zdW0nXSkKLSAgICAgYXBlcnR1cmVfc3VtCi0tICAgIC0tLS0tLS0tLS0tLS0KLS0gICAgMTEx LjU2NjM3MDYxNAotKyAgICAtLS0tLS0tLS0tLS0KLSsgICAgICAgMTExLjU2NjM3Ci0gCi0gCi0g QXBlcnR1cmUgUGhvdG9tZXRyeSBVc2luZyBTa3kgQ29vcmRpbmF0ZXMKLWRpZmYgLU5hdXIgcGhv dHV0aWxzLTAuNC9kb2NzL2JhY2tncm91bmQucnN0IHBob3R1dGlscy0wLjQuZml4ZWQvZG9jcy9i YWNrZ3JvdW5kLnJzdAotLS0tIHBob3R1dGlscy0wLjQvZG9jcy9iYWNrZ3JvdW5kLnJzdAkyMDE3 LTEwLTMwIDE1OjM4OjE4LjAwMDAwMDAwMCArMDEwMAotKysrIHBob3R1dGlscy0wLjQuZml4ZWQv ZG9jcy9iYWNrZ3JvdW5kLnJzdAkyMDE4LTAyLTE0IDAzOjU2OjA3LjA2NDUyMjYzNCArMDEwMAot QEAgLTc2LDE4ICs3NiwxOCBAQAotIAotICAgICA+Pj4gaW1wb3J0IG51bXB5IGFzIG5wCi0gICAg ID4+PiBmcm9tIGFzdHJvcHkuc3RhdHMgaW1wb3J0IGJpd2VpZ2h0X2xvY2F0aW9uCi0tICAgID4+ PiBwcmludChucC5tZWRpYW4oZGF0YSkpCi0tICAgIDUuMjI1NTI5NTE4NAotLSAgICA+Pj4gcHJp bnQoYml3ZWlnaHRfbG9jYXRpb24oZGF0YSkpCi0tICAgIDUuMTg2NzU5NzU1NQotKyAgICA+Pj4g cHJpbnQobnAubWVkaWFuKGRhdGEpKSAgIyBkb2N0ZXN0OiArRkxPQVRfQ01QCi0rICAgIDUuMjI1 NTI5NTE4Mzk5MDQ4Ci0rICAgID4+PiBwcmludChiaXdlaWdodF9sb2NhdGlvbihkYXRhKSkgICMg ZG9jdGVzdDogK0ZMT0FUX0NNUAotKyAgICA1LjE4Njc1OTc1NTQ5NTcyNwotIAotIFNpbWlsYXJs eSwgdXNpbmcgdGhlIG1lZGlhbiBhYnNvbHV0ZSBkZXZpYXRpb24gdG8gZXN0aW1hdGUgdGhlCi0g YmFja2dyb3VuZCBub2lzZSBsZXZlbCBnaXZlcyBhIHZhbHVlIHRoYXQgaXMgbGFyZ2VyIHRoYW4g dGhlIHRydWUKLSB2YWx1ZSBvZiAyOjoKLSAKLSAgICAgPj4+IGZyb20gYXN0cm9weS5zdGF0cyBp bXBvcnQgbWFkX3N0ZAotLSAgICA+Pj4gcHJpbnQobWFkX3N0ZChkYXRhKSkgICAgIyBkb2N0ZXN0 OiArRkxPQVRfQ01QCi0tICAgIDIuMTQ0MzcyODAwOQotKyAgICA+Pj4gcHJpbnQobWFkX3N0ZChk YXRhKSkgICMgZG9jdGVzdDogK0ZMT0FUX0NNUAotKyAgICAyLjE0NDM3NjAwOTY1OTg5MTQKLSAK LSAKLSBTaWdtYSBDbGlwcGluZyBTb3VyY2VzCi1AQCAtMTAzLDggKzEwMyw4IEBACi0gCi0gICAg ID4+PiBmcm9tIGFzdHJvcHkuc3RhdHMgaW1wb3J0IHNpZ21hX2NsaXBwZWRfc3RhdHMKLSAgICAg Pj4+IG1lYW4sIG1lZGlhbiwgc3RkID0gc2lnbWFfY2xpcHBlZF9zdGF0cyhkYXRhLCBzaWdtYT0z LjAsIGl0ZXJzPTUpCi0tICAgID4+PiBwcmludCgobWVhbiwgbWVkaWFuLCBzdGQpKSAgICAjIGRv Y3Rlc3Q6ICtGTE9BVF9DTVAKLS0gICAgKDUuMTk5MTM4NjUxNjIxNzkwOCwgNS4xNTU1ODc0MzMz NTgyOTEyLCAyLjA5NDI3NTIxMjEzMjk2OTEpCi0rICAgID4+PiBwcmludCgobWVhbiwgbWVkaWFu LCBzdGQpKSAgIyBkb2N0ZXN0OiArRkxPQVRfQ01QCi0rICAgICg1LjE5OTEzODY1MTYyMTc5Mywg NS4xNTU1ODc0MzMzNTgyOTEsIDIuMDk0Mjc1MjEyMTMyOTY5KQotIAotIAotIE1hc2tpbmcgU291 cmNlcwotQEAgLTEzMiw4ICsxMzIsOCBAQAotICAgICA+Pj4gZnJvbSBwaG90dXRpbHMgaW1wb3J0 IG1ha2Vfc291cmNlX21hc2sKLSAgICAgPj4+IG1hc2sgPSBtYWtlX3NvdXJjZV9tYXNrKGRhdGEs IHNucj0yLCBucGl4ZWxzPTUsIGRpbGF0ZV9zaXplPTExKQotICAgICA+Pj4gbWVhbiwgbWVkaWFu LCBzdGQgPSBzaWdtYV9jbGlwcGVkX3N0YXRzKGRhdGEsIHNpZ21hPTMuMCwgbWFzaz1tYXNrKQot LSAgICA+Pj4gcHJpbnQoKG1lYW4sIG1lZGlhbiwgc3RkKSkgICAgIyBkb2N0ZXN0OiArRkxPQVRf Q01QCi0tICAgICg1LjAwMTAxMzQ3NTQ3NTU2OTUsIDUuMDAwNTg0OTA1NjA0Mzc2MywgMS45NzA4 ODcxMDA2MjY1NzIpCi0rICAgID4+PiBwcmludCgobWVhbiwgbWVkaWFuLCBzdGQpKSAgIyBkb2N0 ZXN0OiArRkxPQVRfQ01QCi0rICAgICg1LjAwMTAxMzQ3NTQ3NTU2OSwgNS4wMDA1ODQ5MDU2MDQz NzYsIDEuOTcwODg3MTAwNjI2NTcyKQotIAotIE9mIGNvdXJzZSwgdGhlIHNvdXJjZSBkZXRlY3Rp b24gYW5kIG1hc2tpbmcgcHJvY2VkdXJlIGNhbiBiZSBpdGVyYXRlZAotIGZ1cnRoZXIuICBFdmVu IHdpdGggb25lIGl0ZXJhdGlvbiB3ZSBhcmUgd2l0aGluIDAuMDIlIG9mIHRoZSB0cnVlCi1AQCAt MjI5LDcgKzIyOSw3IEBACi0gICAgID4+PiB5LCB4ID0gbnAubWdyaWRbOm55LCA6bnhdCi0gICAg ID4+PiBncmFkaWVudCA9ICB4ICogeSAvIDUwMDAuCi0gICAgID4+PiBkYXRhMiA9IGRhdGEgKyBn cmFkaWVudAotLSAgICA+Pj4gcGx0Lmltc2hvdyhkYXRhMiwgbm9ybT1ub3JtLCBvcmlnaW49J2xv d2VyJywgY21hcD0nR3JleXNfcicpICAgICMgZG9jdGVzdDogK1NLSVAKLSsgICAgPj4+IHBsdC5p bXNob3coZGF0YTIsIG5vcm09bm9ybSwgb3JpZ2luPSdsb3dlcicsIGNtYXA9J0dyZXlzX3InKSAg IyBkb2N0ZXN0OiArU0tJUAotIAotIC4uIHBsb3Q6OgotIAotQEAgLTI3MSwxMCArMjcxLDEwIEBA Ci0gCi0gLi4gZG9jdGVzdC1yZXF1aXJlczo6IHNjaXB5Ci0gCi0tICAgID4+PiBwcmludChia2cu YmFja2dyb3VuZF9tZWRpYW4pCi0tICAgIDEwLjgyMTk5Nzg2MjYKLS0gICAgPj4+IHByaW50KGJr Zy5iYWNrZ3JvdW5kX3Jtc19tZWRpYW4pCi0tICAgIDIuMjk4ODIwNTM5NjgKLSsgICAgPj4+IHBy aW50KGJrZy5iYWNrZ3JvdW5kX21lZGlhbikgICMgZG9jdGVzdDogK0ZMT0FUX0NNUAotKyAgICAx MC44MjE5OTc4NjI1NjE3OTIKLSsgICAgPj4+IHByaW50KGJrZy5iYWNrZ3JvdW5kX3Jtc19tZWRp YW4pICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLSsgICAgMi4yOTg4MjA1Mzk2ODM3NjIKLSAKLSBM ZXQncyBwbG90IHRoZSBiYWNrZ3JvdW5kIGltYWdlOgotIAotQEAgLTM0OCw4ICszNDgsOCBAQAot IAotICAgICA+Pj4gZnJvbSBzY2lweS5uZGltYWdlIGltcG9ydCByb3RhdGUKLSAgICAgPj4+IGRh dGEzID0gcm90YXRlKGRhdGEyLCAtNDUuKQotLSAgICA+Pj4gbm9ybSA9IEltYWdlTm9ybWFsaXpl KHN0cmV0Y2g9U3FydFN0cmV0Y2goKSkgICAgIyBkb2N0ZXN0OiArU0tJUAotLSAgICA+Pj4gcGx0 Lmltc2hvdyhkYXRhMywgb3JpZ2luPSdsb3dlcicsIGNtYXA9J0dyZXlzX3InLCBub3JtPW5vcm0p ICAgICMgZG9jdGVzdDogK1NLSVAKLSsgICAgPj4+IG5vcm0gPSBJbWFnZU5vcm1hbGl6ZShzdHJl dGNoPVNxcnRTdHJldGNoKCkpICAjIGRvY3Rlc3Q6ICtTS0lQCi0rICAgID4+PiBwbHQuaW1zaG93 KGRhdGEzLCBvcmlnaW49J2xvd2VyJywgY21hcD0nR3JleXNfcicsIG5vcm09bm9ybSkgICMgZG9j dGVzdDogK1NLSVAKLSAKLSAuLiBwbG90OjoKLSAKLUBAIC0zODYsOCArMzg2LDggQEAKLSAuLiBk b2N0ZXN0LXJlcXVpcmVzOjogc2NpcHkKLSAKLSAgICAgPj4+IGJhY2szID0gYmtnMy5iYWNrZ3Jv dW5kICogfm1hc2sKLS0gICAgPj4+IG5vcm0gPSBJbWFnZU5vcm1hbGl6ZShzdHJldGNoPVNxcnRT dHJldGNoKCkpICAgICMgZG9jdGVzdDogK1NLSVAKLS0gICAgPj4+IHBsdC5pbXNob3coYmFjazMs IG9yaWdpbj0nbG93ZXInLCBjbWFwPSdHcmV5c19yJywgbm9ybT1ub3JtKSAgICAjIGRvY3Rlc3Q6 ICtTS0lQCi0rICAgID4+PiBub3JtID0gSW1hZ2VOb3JtYWxpemUoc3RyZXRjaD1TcXJ0U3RyZXRj aCgpKSAgIyBkb2N0ZXN0OiArU0tJUAotKyAgICA+Pj4gcGx0Lmltc2hvdyhiYWNrMywgb3JpZ2lu PSdsb3dlcicsIGNtYXA9J0dyZXlzX3InLCBub3JtPW5vcm0pICAjIGRvY3Rlc3Q6ICtTS0lQCi0g Ci0gLi4gcGxvdDo6Ci0gCi1kaWZmIC1OYXVyIHBob3R1dGlscy0wLjQvZG9jcy9kZXRlY3Rpb24u cnN0IHBob3R1dGlscy0wLjQuZml4ZWQvZG9jcy9kZXRlY3Rpb24ucnN0Ci0tLS0gcGhvdHV0aWxz LTAuNC9kb2NzL2RldGVjdGlvbi5yc3QJMjAxNy0xMC0zMCAxNTozODoxOC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBwaG90dXRpbHMtMC40LmZpeGVkL2RvY3MvZGV0ZWN0aW9uLnJzdAkyMDE4LTAyLTE0 IDAzOjU2OjA3LjA2NTUyMjY1MCArMDEwMAotQEAgLTYyLDIwICs2MiwyMyBAQAotICAgICA+Pj4g ZnJvbSBwaG90dXRpbHMgaW1wb3J0IERBT1N0YXJGaW5kZXIKLSAgICAgPj4+IGRhb2ZpbmQgPSBE QU9TdGFyRmluZGVyKGZ3aG09My4wLCB0aHJlc2hvbGQ9NS4qc3RkKSAgICAjIGRvY3Rlc3Q6ICtS RU1PVEVfREFUQQotICAgICA+Pj4gc291cmNlcyA9IGRhb2ZpbmQoZGF0YSAtIG1lZGlhbikgICAg IyBkb2N0ZXN0OiArUkVNT1RFX0RBVEEKLSsgICAgPj4+IGZvciBjb2wgaW4gc291cmNlcy5jb2xu YW1lczogICAgIyBkb2N0ZXN0OiArUkVNT1RFX0RBVEEKLSsgICAgLi4uICAgICBzb3VyY2VzW2Nv bF0uaW5mby5mb3JtYXQgPSAnJS44ZycgICMgZm9yIGNvbnNpc3RlbnQgdGFibGUgb3V0cHV0Ci0g ICAgID4+PiBwcmludChzb3VyY2VzKSAgICAjIGRvY3Rlc3Q6ICtSRU1PVEVfREFUQQotLSAgICAg aWQgICB4Y2VudHJvaWQgICAgIHljZW50cm9pZCAgIC4uLiAgcGVhayAgICAgICBmbHV4ICAgICAg ICAgICBtYWcKLS0gICAgLS0tIC0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSAuLi4gLS0tLS0t IC0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tCi0tICAgICAgMSAxNDQuMjQ3NTY3MTY0IDYu Mzc5NzkwNDI3MDQgLi4uIDY5MDMuMCA1LjcwMTQzMDMzMDM4ICAtMS44ODk5NTk1NTQzOAotLSAg ICAgIDIgMjA4LjY2OTA2ODYyOCA2LjgyMDU4MDUzNzc3IC4uLiA3ODk2LjAgNi43MjMwNjczMDQ1 NSAgLTIuMDY4OTE4NjQ3NDgKLS0gICAgICAzIDIxNi45MjYxMzY2NTUgIDYuNTc3NTkzMzE5OCAu Li4gMjE5NS4wIDEuNjY3Mzc0Njc1OTEgLTAuNTU1MDgzMDAyODY0Ci0tICAgICAgNCAzNTEuNjI1 MTkwMzgzICA4LjU0NTkwMTMyMzMgLi4uIDY5NzcuMCA1LjkwMDkyNTQ4MTQ3ICAtMS45MjczMDAz MjU3MQotLSAgICAgIDUgMzc3LjUxOTkwOTk1OCAxMi4wNjU1MDA5OTg3IC4uLiAxMjYwLjAgMS4x MTg1NjIwMzc4MSAtMC4xMjE2NTAxODk5NjkKLS0gICAgLi4uICAgICAgICAgICAuLi4gICAgICAg ICAgIC4uLiAuLi4gICAgLi4uICAgICAgICAgICAuLi4gICAgICAgICAgICAgLi4uCi0tICAgIDI4 MSAyNjguMDQ5MjM2OTc5IDM5Ny45MjUzNzE0NDYgLi4uIDkyOTkuMCA2LjIyMDIyNTg3NTQxICAt MS45ODQ1MTUzODg4NAotLSAgICAyODIgMjY4LjQ3NTA2ODM5MiAzOTguMDIwOTk4MjcyIC4uLiA4 NzU0LjAgNi4wNTA3OTE2MDU5MyAgLTEuOTU0NTMwNDg5MzYKLS0gICAgMjgzICAyOTkuODA5NDM4 MjIgMzk4LjAyNzkxMTgxMyAuLi4gODg5MC4wIDYuMTE4NTM0MTY2NjMgIC0xLjk2NjYxODQ3Mzgz Ci0tICAgIDI4NCAzMTUuNjg5NDQ4MzQzICAzOTguNzAyNTE4OTEgLi4uIDY0ODUuMCA1LjU1NDcx MTA3NzkzICAtMS44NjE2NTM2ODYzMQotLSAgICAyODUgMzYwLjQzNzI0MzAzNyAzOTguNjk4NTM5 NTU1IC4uLiA4MDc5LjAgNS4yNjU0OTMyMTM3OSAgLTEuODAzNTk3NjQzNDUKLSsgICAgIGlkIHhj ZW50cm9pZCB5Y2VudHJvaWQgc2hhcnBuZXNzICAuLi4gc2t5IHBlYWsgICAgZmx1eCAgICAgICBt YWcKLSsgICAgLS0tIC0tLS0tLS0tLSAtLS0tLS0tLS0gLS0tLS0tLS0tLSAuLi4gLS0tIC0tLS0g LS0tLS0tLS0tIC0tLS0tLS0tLS0tLQotKyAgICAgIDEgMTQ0LjI0NzU3IDYuMzc5NzkwNCAwLjU4 MTU2MjU3IC4uLiAgIDAgNjkwMyA1LjcwMTQzMDMgICAtMS44ODk5NTk2Ci0rICAgICAgMiAyMDgu NjY5MDcgNi44MjA1ODA1IDAuNDgzNDg5NjYgLi4uICAgMCA3ODk2IDYuNzIzMDY3MyAgIC0yLjA2 ODkxODYKLSsgICAgICAzIDIxNi45MjYxNCA2LjU3NzU5MzMgMC42OTM1OTUyNSAuLi4gICAwIDIx OTUgMS42NjczNzQ3ICAgIC0wLjU1NTA4MwotKyAgICAgIDQgMzUxLjYyNTE5IDguNTQ1OTAxMyAw LjQ4NTc3ODM0IC4uLiAgIDAgNjk3NyA1LjkwMDkyNTUgICAtMS45MjczMDAzCi0rICAgICAgNSAz NzcuNTE5OTEgMTIuMDY1NTAxIDAuNTIwMzg0ODggLi4uICAgMCAxMjYwICAxLjExODU2MiAgLTAu MTIxNjUwMTkKLSsgICAgLi4uICAgICAgIC4uLiAgICAgICAuLi4gICAgICAgIC4uLiAuLi4gLi4u ICAuLi4gICAgICAgLi4uICAgICAgICAgIC4uLgotKyAgICAyODAgMzQ1LjU5MzA2IDM5NS4zODIy MiAgIDAuMzg0MDc4IC4uLiAgIDAgOTM1MCA1LjA1NTkwODQgICAgLTEuNzU5NDk4Ci0rICAgIDI4 MSAyNjguMDQ5MjQgMzk3LjkyNTM3IDAuMjk2NTA3MTUgLi4uICAgMCA5Mjk5IDYuMjIwMjI1OSAg IC0xLjk4NDUxNTQKLSsgICAgMjgyIDI2OC40NzUwNyAgIDM5OC4wMjEgMC4yODMyNTc0MSAuLi4g ICAwIDg3NTQgNi4wNTA3OTE2ICAgLTEuOTU0NTMwNQotKyAgICAyODMgMjk5LjgwOTQ0IDM5OC4w Mjc5MSAwLjMyMDExMzM5IC4uLiAgIDAgODg5MCA2LjExODUzNDIgICAtMS45NjY2MTg1Ci0rICAg IDI4NCAzMTUuNjg5NDUgMzk4LjcwMjUyIDAuMjk1MDIxMzggLi4uICAgMCA2NDg1IDUuNTU0NzEx MSAgIC0xLjg2MTY1MzcKLSsgICAgMjg1IDM2MC40MzcyNCAzOTguNjk4NTQgMC44MTE0NzE0NCAu Li4gICAwIDgwNzkgNS4yNjU0OTMyICAgLTEuODAzNTk3NgotICAgICBMZW5ndGggPSAyODUgcm93 cwotIAotIExldCdzIHBsb3QgdGhlIGltYWdlIGFuZCBtYXJrIHRoZSBsb2NhdGlvbiBvZiBkZXRl Y3RlZCBzb3VyY2VzOgotQEAgLTE0MywxOSArMTQ2LDIwIEBACi0gICAgID4+PiBtZWFuLCBtZWRp YW4sIHN0ZCA9IHNpZ21hX2NsaXBwZWRfc3RhdHMoZGF0YSwgc2lnbWE9My4wKQotICAgICA+Pj4g dGhyZXNob2xkID0gbWVkaWFuICsgKDEwLjAgKiBzdGQpCi0gICAgID4+PiB0YmwgPSBmaW5kX3Bl YWtzKGRhdGEsIHRocmVzaG9sZCwgYm94X3NpemU9NSkKLSsgICAgPj4+IHRibFsncGVha192YWx1 ZSddLmluZm8uZm9ybWF0ID0gJyUuOGcnICAjIGZvciBjb25zaXN0ZW50IHRhYmxlIG91dHB1dAot ICAgICA+Pj4gcHJpbnQodGJsWzoxMF0pICAgICMgcHJpbnQgb25seSB0aGUgZmlyc3QgMTAgcGVh a3MKLS0gICAgeF9wZWFrIHlfcGVhayAgIHBlYWtfdmFsdWUKLS0gICAgLS0tLS0tIC0tLS0tLSAt LS0tLS0tLS0tLS0tCi0tICAgICAgIDIzMyAgICAgIDAgMjcuNDc3ODUyMTk3MgotLSAgICAgICAy MzYgICAgICAxICAyNy4zMzk1MTk2MjQKLS0gICAgICAgMjg5ICAgICAyMiAzNS44NTMyNzU5OTY1 Ci0tICAgICAgIDQ0MiAgICAgMzEgMzAuMjM5OTk0MTM3MwotLSAgICAgICAgIDEgICAgIDQwIDM1 LjU0ODI4NjMwMDIKLS0gICAgICAgIDg5ICAgICA1OSA0MS4yMTkwNDY5Mjc5Ci0tICAgICAgICAg NyAgICAgNzAgMzMuMjg4MDY0NzA0OAotLSAgICAgICAyNTggICAgIDc1IDI2LjU2MjQ4MDg1MTgK LS0gICAgICAgNDYzICAgICA4MCAyOC43NTg4MjA2NjkyCi0tICAgICAgIDE4MiAgICAgOTMgMzgu MDg4NTY4NzIwMgotKyAgICB4X3BlYWsgeV9wZWFrIHBlYWtfdmFsdWUKLSsgICAgLS0tLS0tIC0t LS0tLSAtLS0tLS0tLS0tCi0rICAgICAgIDIzMyAgICAgIDAgIDI3LjQ3Nzg1MgotKyAgICAgICAy MzYgICAgICAxICAgMjcuMzM5NTIKLSsgICAgICAgMjg5ICAgICAyMiAgMzUuODUzMjc2Ci0rICAg ICAgIDQ0MiAgICAgMzEgIDMwLjIzOTk5NAotKyAgICAgICAgIDEgICAgIDQwICAzNS41NDgyODYK LSsgICAgICAgIDg5ICAgICA1OSAgNDEuMjE5MDQ3Ci0rICAgICAgICAgNyAgICAgNzAgIDMzLjI4 ODA2NQotKyAgICAgICAyNTggICAgIDc1ICAyNi41NjI0ODEKLSsgICAgICAgNDYzICAgICA4MCAg MjguNzU4ODIxCi0rICAgICAgIDE4MiAgICAgOTMgIDM4LjA4ODU2OQotIAotIEFuZCBsZXQncyBw bG90IHRoZSBsb2NhdGlvbiBvZiB0aGUgZGV0ZWN0ZWQgcGVha3MgaW4gdGhlIGltYWdlOgotIAot ZGlmZiAtTmF1ciBwaG90dXRpbHMtMC40L2RvY3MvZ2V0dGluZ19zdGFydGVkLnJzdCBwaG90dXRp bHMtMC40LmZpeGVkL2RvY3MvZ2V0dGluZ19zdGFydGVkLnJzdAotLS0tIHBob3R1dGlscy0wLjQv ZG9jcy9nZXR0aW5nX3N0YXJ0ZWQucnN0CTIwMTctMTAtMzAgMTU6Mzg6MTguMDAwMDAwMDAwICsw MTAwCi0rKysgcGhvdHV0aWxzLTAuNC5maXhlZC9kb2NzL2dldHRpbmdfc3RhcnRlZC5yc3QJMjAx OC0wMi0xNCAwMzo1NjowNy4wNjU1MjI2NTAgKzAxMDAKLUBAIC0zMSwyMCArMzEsMjMgQEAKLSAg ICAgPj4+IGJrZ19zaWdtYSA9IG1hZF9zdGQoaW1hZ2UpICAgICMgZG9jdGVzdDogK1JFTU9URV9E QVRBCi0gICAgID4+PiBkYW9maW5kID0gREFPU3RhckZpbmRlcihmd2htPTQuLCB0aHJlc2hvbGQ9 My4qYmtnX3NpZ21hKSAgICAjIGRvY3Rlc3Q6ICtSRU1PVEVfREFUQQotICAgICA+Pj4gc291cmNl cyA9IGRhb2ZpbmQoaW1hZ2UpICAgICMgZG9jdGVzdDogK1JFTU9URV9EQVRBCi0rICAgID4+PiBm b3IgY29sIGluIHNvdXJjZXMuY29sbmFtZXM6ICAjIGRvY3Rlc3Q6ICtSRU1PVEVfREFUQQotKyAg ICAuLi4gICAgIHNvdXJjZXNbY29sXS5pbmZvLmZvcm1hdCA9ICclLjhnJyAgIyBmb3IgY29uc2lz dGVudCB0YWJsZSBvdXRwdXQKLSAgICAgPj4+IHByaW50KHNvdXJjZXMpICAgICMgZG9jdGVzdDog K1JFTU9URV9EQVRBCi0tICAgICBpZCAgIHhjZW50cm9pZCAgICAgeWNlbnRyb2lkICAgIC4uLiAg cGVhayAgICAgICBmbHV4ICAgICAgICAgICBtYWcKLS0gICAgLS0tIC0tLS0tLS0tLS0tLS0gLS0t LS0tLS0tLS0tLS0gLi4uIC0tLS0tLSAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLQotLSAg ICAgIDEgMTgyLjgzODY1ODkzOCAwLjE2NzY3MDE5MDUzNyAuLi4gMzgyNC4wIDIuODAyODM0NTk0 NjkgIC0xLjExODk5MzY3MzExCi0tICAgICAgMiAxODkuMjA0MzA4MTM0IDAuMjYwODEzNTI1MzM4 IC4uLiA0OTEzLjAgMy44NzI5MTg1MDMxMSAgLTEuNDcwMDk1ODk1ODIKLS0gICAgICAzIDUuNzk0 NjQ5MTE0MzMgIDIuNjEyNTQyNDA4MDcgLi4uIDc3NTIuMCAgNC4xMDI5MTA3Mjk0ICAtMS41MzI3 MzAxNjkzNwotLSAgICAgIDQgMzYuODQ3MDYyNzgwNCAgMS4zMjIwMjI3OTU4MiAuLi4gODczOS4w IDcuNDMxNTgxNzg3OTMgIC0yLjE3NzcwMzE1NDQxCi0tICAgICAgNSAgMy4yNTY1NjAyNDUyICA1 LjQxODk1MjAxNzQ4IC4uLiA2OTM1LjAgMy44MTI2Mjk4NDA3NCAgLTEuNDUzMDYxNjA2NzMKLS0g ICAgLi4uICAgICAgICAgICAuLi4gICAgICAgICAgICAuLi4gLi4uICAgIC4uLiAgICAgICAgICAg Li4uICAgICAgICAgICAgIC4uLgotLSAgICAxNDggMTI0LjMxMzI3MjU3OSAgMTg4LjMwNTIyOTE1 OSAuLi4gNjcwMi4wIDYuNjM1ODU0MjkzMDMgIC0yLjA1NDc0MjEwMzU2Ci0tICAgIDE0OSAyNC4y NTcyMDc0OTYyICAxOTQuNzE0OTQyODE0IC4uLiA4MzQyLjAgIDMuMjY3MTAzNjk5NiAgLTEuMjg1 NDA3Mjk4NTgKLS0gICAgMTUwIDExNi40NDk5OTg0MjIgIDE5NS4wNTkyMzMzMjUgLi4uIDMyOTku MCAyLjg3NzUyMjA1NzY2ICAgLTEuMTQ3NTQ2NjUzNQotLSAgICAxNTEgMTguOTU4MDg2MDY0NSAg MTk2LjM0MjA2NTEzMiAuLi4gMzg1NC4wIDIuMzgzNTI5NjEyMjQgLTAuOTQzMDUxMzc5NTk1Ci0t ICAgIDE1MiAxMTEuNTI1NzUxMTk2ICAxOTUuNzMxOTE3OTk1IC4uLiA4MTA5LjAgIDcuOTI3ODYw NzQwMSAgLTIuMjQ3ODkwMDMxOTQKLSsgICAgIGlkIHhjZW50cm9pZCB5Y2VudHJvaWQgIHNoYXJw bmVzcyAgLi4uIHNreSBwZWFrICAgIGZsdXggICAgICAgbWFnCi0rICAgIC0tLSAtLS0tLS0tLS0g LS0tLS0tLS0tLSAtLS0tLS0tLS0tIC4uLiAtLS0gLS0tLSAtLS0tLS0tLS0gLS0tLS0tLS0tLS0K LSsgICAgICAxIDE4Mi44Mzg2NiAwLjE2NzY3MDE5IDAuODUwOTk4NzMgLi4uICAgMCAzODI0IDIu ODAyODM0NiAgLTEuMTE4OTkzNwotKyAgICAgIDIgMTg5LjIwNDMxIDAuMjYwODEzNTMgIDAuNzQw MDQ3NyAuLi4gICAwIDQ5MTMgMy44NzI5MTg1ICAtMS40NzAwOTU5Ci0rICAgICAgMyA1Ljc5NDY0 OTEgIDIuNjEyNTQyNCAwLjM5NTg5NzMxIC4uLiAgIDAgNzc1MiA0LjEwMjkxMDcgIC0xLjUzMjcz MDIKLSsgICAgICA0IDM2Ljg0NzA2MyAgMS4zMjIwMjI4IDAuMjk1OTQ1MjggLi4uICAgMCA4NzM5 IDcuNDMxNTgxOCAgLTIuMTc3NzAzMgotKyAgICAgIDUgMy4yNTY1NjAyICAgNS40MTg5NTIgMC4z NTk4NTQ5NSAuLi4gICAwIDY5MzUgMy44MTI2Mjk4ICAtMS40NTMwNjE2Ci0rICAgIC4uLiAgICAg ICAuLi4gICAgICAgIC4uLiAgICAgICAgLi4uIC4uLiAuLi4gIC4uLiAgICAgICAuLi4gICAgICAg ICAuLi4KLSsgICAgMTQ3IDE5Ny4yNDg2NCAgMTg2LjE2NjQ3IDAuMzEyMTE1MzIgLi4uICAgMCA4 MzAyIDcuNTgxNDYyOSAgLTIuMTk5MzgyNQotKyAgICAxNDggMTI0LjMxMzI3ICAxODguMzA1MjMg IDAuNTM2Mjc0MiAuLi4gICAwIDY3MDIgNi42MzU4NTQzICAtMi4wNTQ3NDIxCi0rICAgIDE0OSAy NC4yNTcyMDcgIDE5NC43MTQ5NCAwLjQ0MTY5NTQ2IC4uLiAgIDAgODM0MiAzLjI2NzEwMzcgIC0x LjI4NTQwNzMKLSsgICAgMTUwICAgIDExNi40NSAgMTk1LjA1OTIzIDAuNjcwODA1NDcgLi4uICAg MCAzMjk5IDIuODc3NTIyMSAgLTEuMTQ3NTQ2NwotKyAgICAxNTEgMTguOTU4MDg2ICAxOTYuMzQy MDcgMC41NjUwMjEzOSAuLi4gICAwIDM4NTQgMi4zODM1Mjk2IC0wLjk0MzA1MTM4Ci0rICAgIDE1 MiAxMTEuNTI1NzUgIDE5NS43MzE5MiAwLjQ1ODI3ODUyIC4uLiAgIDAgODEwOSA3LjkyNzg2MDcg ICAgLTIuMjQ3ODkKLSAgICAgTGVuZ3RoID0gMTUyIHJvd3MKLSAKLSBVc2luZyB0aGUgbGlzdCBv ZiBzb3VyY2UgbG9jYXRpb25zIChgYHhjZW50cm9pZGBgIGFuZCBgYHljZW50cm9pZGBgKSwKLUBA IC01OSwyMSArNjIsMjMgQEAKLSAgICAgPj4+IHBvc2l0aW9ucyA9IChzb3VyY2VzWyd4Y2VudHJv aWQnXSwgc291cmNlc1sneWNlbnRyb2lkJ10pICAgICMgZG9jdGVzdDogK1JFTU9URV9EQVRBCi0g ICAgID4+PiBhcGVydHVyZXMgPSBDaXJjdWxhckFwZXJ0dXJlKHBvc2l0aW9ucywgcj00LikgICAg IyBkb2N0ZXN0OiArUkVNT1RFX0RBVEEKLSAgICAgPj4+IHBob3RfdGFibGUgPSBhcGVydHVyZV9w aG90b21ldHJ5KGltYWdlLCBhcGVydHVyZXMpICAgICMgZG9jdGVzdDogK1JFTU9URV9EQVRBCi0t ICAgID4+PiBwcmludChwaG90X3RhYmxlKSAgICMgZG9jdGVzdDogK1NLSVAKLS0gICAgIGlkICAg ICAgeGNlbnRlciAgICAgICAgICAgICB5Y2VudGVyICAgICAgICBhcGVydHVyZV9zdW0KLS0gICAg ICAgICAgICAgICBwaXggICAgICAgICAgICAgICAgIHBpeAotLSAgICAtLS0gLS0tLS0tLS0tLS0t LS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLQotLSAgICAgIDEgIDE4Mi44 Mzg2NTg5MzgxMzA4IDAuMTY3NjcwMTkwNTM2OTM3NTIgMTgxMjEuNzU5NDgzNwotLSAgICAgIDIg MTg5LjIwNDMwODEzNDAzMzg4IDAuMjYwODEzNTI1MzM3NjY1MTYgMjk4MzYuNTE1MjE1OAotLSAg ICAgIDMgIDUuNzk0NjQ5MTE0MzI5MjQ2ICAgMi42MTI1NDI0MDgwNzM1NDcgMzMxOTc5LjgxOTAz NwotLSAgICAgIDQgIDM2Ljg0NzA2Mjc4MDQzNTgyICAxLjMyMjAyMjc5NTgxNTMyNTcgMTgzNzA1 LjA5MzI4NAotLSAgICAgIDUgMy4yNTY1NjAyNDUyMDA3MzI1ICAgNS40MTg5NTIwMTc0NzY1MDgg MzQ5NDY4Ljk3ODYyNwotLSAgICAuLi4gICAgICAgICAgICAgICAgLi4uICAgICAgICAgICAgICAg ICAuLi4gICAgICAgICAgIC4uLgotLSAgICAxNDggIDEyNC4zMTMyNzI1NzkzOTM5ICAxODguMzA1 MjI5MTU4NTg2NjggNDUwODQuODczNzg2NwotLSAgICAxNDkgMjQuMjU3MjA3NDk2MjA5MDI3ICAx OTQuNzE0OTQyODE0MTkyNjUgMzU1Nzc4LjAwNzI5OAotLSAgICAxNTAgMTE2LjQ0OTk5ODQyMTc3 ODI2ICAxOTUuMDU5MjMzMzI0ODMxMTUgMzEyMzIuOTExNzgxOAotLSAgICAxNTEgMTguOTU4MDg2 MDY0NDg1MDEzICAgMTk2LjM0MjA2NTEzMTY0MDEgMTYyMDc2LjI2Mjc1MgotLSAgICAxNTIgMTEx LjUyNTc1MTE5NjA1OTMzICAxOTUuNzMxOTE3OTk0NjkzNzMgODI3OTUuNzE0NTY2MQotKyAgICA+ Pj4gZm9yIGNvbCBpbiBwaG90X3RhYmxlLmNvbG5hbWVzOiAgIyBkb2N0ZXN0OiArUkVNT1RFX0RB VEEKLSsgICAgLi4uICAgICBwaG90X3RhYmxlW2NvbF0uaW5mby5mb3JtYXQgPSAnJS44ZycgICMg Zm9yIGNvbnNpc3RlbnQgdGFibGUgb3V0cHV0Ci0rICAgID4+PiBwcmludChwaG90X3RhYmxlKSAg IyBkb2N0ZXN0OiArUkVNT1RFX0RBVEEKLSsgICAgIGlkICB4Y2VudGVyICAgeWNlbnRlciAgIGFw ZXJ0dXJlX3N1bQotKyAgICAgICAgICAgcGl4ICAgICAgIHBpeAotKyAgICAtLS0gLS0tLS0tLS0t IC0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tCi0rICAgICAgMSAxODIuODM4NjYgMC4xNjc2NzAxOSAg ICAxODEyMS43NTkKLSsgICAgICAyIDE4OS4yMDQzMSAwLjI2MDgxMzUzICAgIDI5ODM2LjUxNQot KyAgICAgIDMgNS43OTQ2NDkxICAyLjYxMjU0MjQgICAgMzMxOTc5LjgyCi0rICAgICAgNCAzNi44 NDcwNjMgIDEuMzIyMDIyOCAgICAxODM3MDUuMDkKLSsgICAgICA1IDMuMjU2NTYwMiAgIDUuNDE4 OTUyICAgIDM0OTQ2OC45OAotKyAgICAuLi4gICAgICAgLi4uICAgICAgICAuLi4gICAgICAgICAg Li4uCi0rICAgIDE0OCAxMjQuMzEzMjcgIDE4OC4zMDUyMyAgICA0NTA4NC44NzQKLSsgICAgMTQ5 IDI0LjI1NzIwNyAgMTk0LjcxNDk0ICAgIDM1NTc3OC4wMQotKyAgICAxNTAgICAgMTE2LjQ1ICAx OTUuMDU5MjMgICAgMzEyMzIuOTEyCi0rICAgIDE1MSAxOC45NTgwODYgIDE5Ni4zNDIwNyAgICAx NjIwNzYuMjYKLSsgICAgMTUyIDExMS41MjU3NSAgMTk1LjczMTkyICAgIDgyNzk1LjcxNQotICAg ICBMZW5ndGggPSAxNTIgcm93cwotIAotIFRoZSBzdW0gb2YgdGhlIHBpeGVsIHZhbHVlcyB3aXRo aW4gdGhlIGFwZXJ0dXJlcyBhcmUgZ2l2ZW4gaW4gdGhlCi1kaWZmIC1OYXVyIHBob3R1dGlscy0w LjQvcGhvdHV0aWxzL2FwZXJ0dXJlL3Rlc3RzL3Rlc3RfYXBlcnR1cmVfcGhvdG9tZXRyeS5weSBw aG90dXRpbHMtMC40LmZpeGVkL3Bob3R1dGlscy9hcGVydHVyZS90ZXN0cy90ZXN0X2FwZXJ0dXJl X3Bob3RvbWV0cnkucHkKLS0tLSBwaG90dXRpbHMtMC40L3Bob3R1dGlscy9hcGVydHVyZS90ZXN0 cy90ZXN0X2FwZXJ0dXJlX3Bob3RvbWV0cnkucHkJMjAxNy0xMC0zMCAxNTozODoxOC4wMDAwMDAw MDAgKzAxMDAKLSsrKyBwaG90dXRpbHMtMC40LmZpeGVkL3Bob3R1dGlscy9hcGVydHVyZS90ZXN0 cy90ZXN0X2FwZXJ0dXJlX3Bob3RvbWV0cnkucHkJMjAxOC0wMi0xNCAwMzo1NjowNy4wNjM1MjI2 MTkgKzAxMDAKLUBAIC0xOSw4ICsxOSwxMCBAQAotIGZyb20gYXN0cm9weS50YWJsZSBpbXBvcnQg VGFibGUKLSBmcm9tIGFzdHJvcHkudGVzdHMuaGVscGVyIGltcG9ydCByZW1vdGVfZGF0YQotIGlt cG9ydCBhc3Ryb3B5LnVuaXRzIGFzIHUKLStmcm9tIGFzdHJvcHkudXRpbHMuY29tcGF0IGltcG9y dCBOVU1QWV9MVF8xXzE0Ci0gZnJvbSBhc3Ryb3B5Lndjcy51dGlscyBpbXBvcnQgcGl4ZWxfdG9f c2t5Y29vcmQKLSAKLSsKLSBmcm9tIC4uY29yZSBpbXBvcnQgYXBlcnR1cmVfcGhvdG9tZXRyeQot IGZyb20gLi5jaXJjbGUgaW1wb3J0IChDaXJjdWxhckFwZXJ0dXJlLCBDaXJjdWxhckFubnVsdXMs IFNreUNpcmN1bGFyQXBlcnR1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgIFNreUNpcmN1bGFy QW5udWx1cykKLUBAIC02NjQsNjQgKzY2NiwxMTkgQEAKLSAgICAgcyA9IFNreUNvb3JkKFsxLCAy XSwgWzMsIDRdLCB1bml0PSdkZWcnKQotIAotICAgICBhcGVyID0gU2t5Q2lyY3VsYXJBcGVydHVy ZShzLCByPTMqdS5waXgpCi0tICAgIGFfcmVwciA9ICgnPFNreUNpcmN1bGFyQXBlcnR1cmUoPFNr eUNvb3JkIChJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuJwotLSAgICAgICAgICAgICAgJyAgICBb KCAxLiwgIDMuKSwgKCAyLiwgIDQuKV0+LCByPTMuMCBwaXgpPicpCi0tICAgIGFfc3RyID0gKCdB cGVydHVyZTogU2t5Q2lyY3VsYXJBcGVydHVyZVxucG9zaXRpb25zOiA8U2t5Q29vcmQgJwotLSAg ICAgICAgICAgICAnKElDUlMpOiAocmEsIGRlYykgaW4gZGVnXG4gICAgWyggMS4sICAzLiksICgg Mi4sICA0LildPlxuJwotLSAgICAgICAgICAgICAncjogMy4wIHBpeCcpCi0rICAgIGlmIE5VTVBZ X0xUXzFfMTQ6Ci0rICAgICAgICBhX3JlcHIgPSAoJzxTa3lDaXJjdWxhckFwZXJ0dXJlKDxTa3lD b29yZCAoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWdcbicKLSsgICAgICAgICAgICAgICAgICAnICAg IFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT4sIHI9My4wIHBpeCk+JykKLSsgICAgICAgIGFfc3Ry ID0gKCdBcGVydHVyZTogU2t5Q2lyY3VsYXJBcGVydHVyZVxucG9zaXRpb25zOiA8U2t5Q29vcmQg JwotKyAgICAgICAgICAgICAgICAgJyhJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoIDEu LCAgMy4pLCAoIDIuLCAgNC4pXT5cbicKLSsgICAgICAgICAgICAgICAgICdyOiAzLjAgcGl4JykK LSsgICAgZWxzZToKLSsgICAgICAgIGFfcmVwciA9ICgnPFNreUNpcmN1bGFyQXBlcnR1cmUoPFNr eUNvb3JkIChJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuJwotKyAgICAgICAgICAgICAgICAgICcg ICAgWygxLiwgMy4pLCAoMi4sIDQuKV0+LCByPTMuMCBwaXgpPicpCi0rICAgICAgICBhX3N0ciA9 ICgnQXBlcnR1cmU6IFNreUNpcmN1bGFyQXBlcnR1cmVcbnBvc2l0aW9uczogPFNreUNvb3JkICcK LSsgICAgICAgICAgICAgICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWdcbiAgICBbKDEuLCAz LiksICgyLiwgNC4pXT5cbicKLSsgICAgICAgICAgICAgICAgICdyOiAzLjAgcGl4JykKLSsKLSAg ICAgYXNzZXJ0IHJlcHIoYXBlcikgPT0gYV9yZXByCi0gICAgIGFzc2VydCBzdHIoYXBlcikgPT0g YV9zdHIKLSAKLSAgICAgYXBlciA9IFNreUNpcmN1bGFyQW5udWx1cyhzLCByX2luPTMuKnUucGl4 LCByX291dD01KnUucGl4KQotLSAgICBhX3JlcHIgPSAoJzxTa3lDaXJjdWxhckFubnVsdXMoPFNr eUNvb3JkIChJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuJwotLSAgICAgICAgICAgICAgJyAgICBb KCAxLiwgIDMuKSwgKCAyLiwgIDQuKV0+LCByX2luPTMuMCBwaXgsIHJfb3V0PTUuMCBwaXgpPicp Ci0tICAgIGFfc3RyID0gKCdBcGVydHVyZTogU2t5Q2lyY3VsYXJBbm51bHVzXG5wb3NpdGlvbnM6 IDxTa3lDb29yZCAnCi0tICAgICAgICAgICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWdcbiAg ICBbKCAxLiwgIDMuKSwgKCAyLiwgIDQuKV0+XG4nCi0tICAgICAgICAgICAgICdyX2luOiAzLjAg cGl4XG5yX291dDogNS4wIHBpeCcpCi0rICAgIGlmIE5VTVBZX0xUXzFfMTQ6Ci0rICAgICAgICBh X3JlcHIgPSAoJzxTa3lDaXJjdWxhckFubnVsdXMoPFNreUNvb3JkIChJQ1JTKTogKHJhLCBkZWMp IGluIGRlZ1xuJwotKyAgICAgICAgICAgICAgICAgICcgICAgWyggMS4sICAzLiksICggMi4sICA0 LildPiwgcl9pbj0zLjAgcGl4LCAnCi0rICAgICAgICAgICAgICAgICAgJ3Jfb3V0PTUuMCBwaXgp PicpCi0rICAgICAgICBhX3N0ciA9ICgnQXBlcnR1cmU6IFNreUNpcmN1bGFyQW5udWx1c1xucG9z aXRpb25zOiA8U2t5Q29vcmQgJwotKyAgICAgICAgICAgICAgICAgJyhJQ1JTKTogKHJhLCBkZWMp IGluIGRlZ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT5cbicKLSsgICAgICAgICAgICAg ICAgICdyX2luOiAzLjAgcGl4XG5yX291dDogNS4wIHBpeCcpCi0rICAgIGVsc2U6Ci0rICAgICAg ICBhX3JlcHIgPSAoJzxTa3lDaXJjdWxhckFubnVsdXMoPFNreUNvb3JkIChJQ1JTKTogKHJhLCBk ZWMpIGluIGRlZ1xuJwotKyAgICAgICAgICAgICAgICAgICcgICAgWygxLiwgMy4pLCAoMi4sIDQu KV0+LCByX2luPTMuMCBwaXgsIHJfb3V0PTUuMCBwaXgpPicpCi0rICAgICAgICBhX3N0ciA9ICgn QXBlcnR1cmU6IFNreUNpcmN1bGFyQW5udWx1c1xucG9zaXRpb25zOiA8U2t5Q29vcmQgJwotKyAg ICAgICAgICAgICAgICAgJyhJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoMS4sIDMuKSwg KDIuLCA0LildPlxuJwotKyAgICAgICAgICAgICAgICAgJ3JfaW46IDMuMCBwaXhcbnJfb3V0OiA1 LjAgcGl4JykKLSsKLSAgICAgYXNzZXJ0IHJlcHIoYXBlcikgPT0gYV9yZXByCi0gICAgIGFzc2Vy dCBzdHIoYXBlcikgPT0gYV9zdHIKLSAKLSAgICAgYXBlciA9IFNreUVsbGlwdGljYWxBcGVydHVy ZShzLCBhPTMqdS5waXgsIGI9NSp1LnBpeCwgdGhldGE9MTUqdS5kZWcpCi0tICAgIGFfcmVwciA9 ICgnPFNreUVsbGlwdGljYWxBcGVydHVyZSg8U2t5Q29vcmQgKElDUlMpOiAocmEsIGRlYykgaW4g JwotLSAgICAgICAgICAgICAgJ2RlZ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT4sIGE9 My4wIHBpeCwgYj01LjAgcGl4LCcKLS0gICAgICAgICAgICAgICcgdGhldGE9MTUuMCBkZWcpPicp Ci0tICAgIGFfc3RyID0gKCdBcGVydHVyZTogU2t5RWxsaXB0aWNhbEFwZXJ0dXJlXG5wb3NpdGlv bnM6IDxTa3lDb29yZCAnCi0tICAgICAgICAgICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWdc biAgICBbKCAxLiwgIDMuKSwgKCAyLiwgIDQuKV0+XG4nCi0tICAgICAgICAgICAgICdhOiAzLjAg cGl4XG5iOiA1LjAgcGl4XG50aGV0YTogMTUuMCBkZWcnKQotKyAgICBpZiBOVU1QWV9MVF8xXzE0 OgotKyAgICAgICAgYV9yZXByID0gKCc8U2t5RWxsaXB0aWNhbEFwZXJ0dXJlKDxTa3lDb29yZCAo SUNSUyk6IChyYSwgZGVjKSBpbiAnCi0rICAgICAgICAgICAgICAgICAgJ2RlZ1xuICAgIFsoIDEu LCAgMy4pLCAoIDIuLCAgNC4pXT4sIGE9My4wIHBpeCwgYj01LjAgcGl4LCcKLSsgICAgICAgICAg ICAgICAgICAnIHRoZXRhPTE1LjAgZGVnKT4nKQotKyAgICAgICAgYV9zdHIgPSAoJ0FwZXJ0dXJl OiBTa3lFbGxpcHRpY2FsQXBlcnR1cmVcbnBvc2l0aW9uczogPFNreUNvb3JkICcKLSsgICAgICAg ICAgICAgICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWdcbiAgICBbKCAxLiwgIDMuKSwgKCAy LiwgIDQuKV0+XG4nCi0rICAgICAgICAgICAgICAgICAnYTogMy4wIHBpeFxuYjogNS4wIHBpeFxu dGhldGE6IDE1LjAgZGVnJykKLSsgICAgZWxzZToKLSsgICAgICAgIGFfcmVwciA9ICgnPFNreUVs bGlwdGljYWxBcGVydHVyZSg8U2t5Q29vcmQgKElDUlMpOiAocmEsIGRlYykgaW4gJwotKyAgICAg ICAgICAgICAgICAgICdkZWdcbiAgICBbKDEuLCAzLiksICgyLiwgNC4pXT4sIGE9My4wIHBpeCwg Yj01LjAgcGl4LCcKLSsgICAgICAgICAgICAgICAgICAnIHRoZXRhPTE1LjAgZGVnKT4nKQotKyAg ICAgICAgYV9zdHIgPSAoJ0FwZXJ0dXJlOiBTa3lFbGxpcHRpY2FsQXBlcnR1cmVcbnBvc2l0aW9u czogPFNreUNvb3JkICcKLSsgICAgICAgICAgICAgICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBk ZWdcbiAgICBbKDEuLCAzLiksICgyLiwgNC4pXT5cbicKLSsgICAgICAgICAgICAgICAgICdhOiAz LjAgcGl4XG5iOiA1LjAgcGl4XG50aGV0YTogMTUuMCBkZWcnKQotKwotICAgICBhc3NlcnQgcmVw cihhcGVyKSA9PSBhX3JlcHIKLSAgICAgYXNzZXJ0IHN0cihhcGVyKSA9PSBhX3N0cgotIAotICAg ICBhcGVyID0gU2t5RWxsaXB0aWNhbEFubnVsdXMocywgYV9pbj0zKnUucGl4LCBhX291dD01KnUu cGl4LCBiX291dD0zKnUucGl4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhl dGE9MTUqdS5kZWcpCi0tICAgIGFfcmVwciA9ICgnPFNreUVsbGlwdGljYWxBbm51bHVzKDxTa3lD b29yZCAoSUNSUyk6IChyYSwgZGVjKSBpbiAnCi0tICAgICAgICAgICAgICAnZGVnXG4gICAgWygg MS4sICAzLiksICggMi4sICA0LildPiwgYV9pbj0zLjAgcGl4LCAnCi0tICAgICAgICAgICAgICAn YV9vdXQ9NS4wIHBpeCwgYl9vdXQ9My4wIHBpeCwgdGhldGE9MTUuMCBkZWcpPicpCi0tICAgIGFf c3RyID0gKCdBcGVydHVyZTogU2t5RWxsaXB0aWNhbEFubnVsdXNcbnBvc2l0aW9uczogPFNreUNv b3JkICcKLS0gICAgICAgICAgICAgJyhJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoIDEu LCAgMy4pLCAoIDIuLCAgNC4pXT5cbicKLS0gICAgICAgICAgICAgJ2FfaW46IDMuMCBwaXhcbmFf b3V0OiA1LjAgcGl4XG5iX291dDogMy4wIHBpeFxuJwotLSAgICAgICAgICAgICAndGhldGE6IDE1 LjAgZGVnJykKLSsgICAgaWYgTlVNUFlfTFRfMV8xNDoKLSsgICAgICAgIGFfcmVwciA9ICgnPFNr eUVsbGlwdGljYWxBbm51bHVzKDxTa3lDb29yZCAoSUNSUyk6IChyYSwgZGVjKSBpbiAnCi0rICAg ICAgICAgICAgICAgICAgJ2RlZ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT4sIGFfaW49 My4wIHBpeCwgJwotKyAgICAgICAgICAgICAgICAgICdhX291dD01LjAgcGl4LCBiX291dD0zLjAg cGl4LCB0aGV0YT0xNS4wIGRlZyk+JykKLSsgICAgICAgIGFfc3RyID0gKCdBcGVydHVyZTogU2t5 RWxsaXB0aWNhbEFubnVsdXNcbnBvc2l0aW9uczogPFNreUNvb3JkICcKLSsgICAgICAgICAgICAg ICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWdcbiAgICBbKCAxLiwgIDMuKSwgKCAyLiwgIDQu KV0+XG4nCi0rICAgICAgICAgICAgICAgICAnYV9pbjogMy4wIHBpeFxuYV9vdXQ6IDUuMCBwaXhc bmJfb3V0OiAzLjAgcGl4XG4nCi0rICAgICAgICAgICAgICAgICAndGhldGE6IDE1LjAgZGVnJykK LSsgICAgZWxzZToKLSsgICAgICAgIGFfcmVwciA9ICgnPFNreUVsbGlwdGljYWxBbm51bHVzKDxT a3lDb29yZCAoSUNSUyk6IChyYSwgZGVjKSBpbiAnCi0rICAgICAgICAgICAgICAgICAgJ2RlZ1xu ICAgIFsoMS4sIDMuKSwgKDIuLCA0LildPiwgYV9pbj0zLjAgcGl4LCAnCi0rICAgICAgICAgICAg ICAgICAgJ2Ffb3V0PTUuMCBwaXgsIGJfb3V0PTMuMCBwaXgsIHRoZXRhPTE1LjAgZGVnKT4nKQot KyAgICAgICAgYV9zdHIgPSAoJ0FwZXJ0dXJlOiBTa3lFbGxpcHRpY2FsQW5udWx1c1xucG9zaXRp b25zOiA8U2t5Q29vcmQgJwotKyAgICAgICAgICAgICAgICAgJyhJQ1JTKTogKHJhLCBkZWMpIGlu IGRlZ1xuICAgIFsoMS4sIDMuKSwgKDIuLCA0LildPlxuJwotKyAgICAgICAgICAgICAgICAgJ2Ff aW46IDMuMCBwaXhcbmFfb3V0OiA1LjAgcGl4XG5iX291dDogMy4wIHBpeFxuJwotKyAgICAgICAg ICAgICAgICAgJ3RoZXRhOiAxNS4wIGRlZycpCi0rCi0gICAgIGFzc2VydCByZXByKGFwZXIpID09 IGFfcmVwcgotICAgICBhc3NlcnQgc3RyKGFwZXIpID09IGFfc3RyCi0gCi0gICAgIGFwZXIgPSBT a3lSZWN0YW5ndWxhckFwZXJ0dXJlKHMsIHc9Myp1LnBpeCwgaD01KnUucGl4LCB0aGV0YT0xNSp1 LmRlZykKLS0gICAgYV9yZXByID0gKCc8U2t5UmVjdGFuZ3VsYXJBcGVydHVyZSg8U2t5Q29vcmQg KElDUlMpOiAocmEsIGRlYykgaW4gJwotLSAgICAgICAgICAgICAgJ2RlZ1xuICAgIFsoIDEuLCAg My4pLCAoIDIuLCAgNC4pXT4sIHc9My4wIHBpeCwgaD01LjAgcGl4JwotLSAgICAgICAgICAgICAg JywgdGhldGE9MTUuMCBkZWcpPicpCi0tICAgIGFfc3RyID0gKCdBcGVydHVyZTogU2t5UmVjdGFu Z3VsYXJBcGVydHVyZVxucG9zaXRpb25zOiA8U2t5Q29vcmQgJwotLSAgICAgICAgICAgICAnKElD UlMpOiAocmEsIGRlYykgaW4gZGVnXG4gICAgWyggMS4sICAzLiksICggMi4sICA0LildPlxuJwot LSAgICAgICAgICAgICAndzogMy4wIHBpeFxuaDogNS4wIHBpeFxudGhldGE6IDE1LjAgZGVnJykK LSsgICAgaWYgTlVNUFlfTFRfMV8xNDoKLSsgICAgICAgIGFfcmVwciA9ICgnPFNreVJlY3Rhbmd1 bGFyQXBlcnR1cmUoPFNreUNvb3JkIChJQ1JTKTogKHJhLCBkZWMpIGluICcKLSsgICAgICAgICAg ICAgICAgICAnZGVnXG4gICAgWyggMS4sICAzLiksICggMi4sICA0LildPiwgdz0zLjAgcGl4LCBo PTUuMCBwaXgnCi0rICAgICAgICAgICAgICAgICAgJywgdGhldGE9MTUuMCBkZWcpPicpCi0rICAg ICAgICBhX3N0ciA9ICgnQXBlcnR1cmU6IFNreVJlY3Rhbmd1bGFyQXBlcnR1cmVcbnBvc2l0aW9u czogPFNreUNvb3JkICcKLSsgICAgICAgICAgICAgICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBk ZWdcbiAgICBbKCAxLiwgIDMuKSwgKCAyLiwgIDQuKV0+XG4nCi0rICAgICAgICAgICAgICAgICAn dzogMy4wIHBpeFxuaDogNS4wIHBpeFxudGhldGE6IDE1LjAgZGVnJykKLSsgICAgZWxzZToKLSsg ICAgICAgIGFfcmVwciA9ICgnPFNreVJlY3Rhbmd1bGFyQXBlcnR1cmUoPFNreUNvb3JkIChJQ1JT KTogKHJhLCBkZWMpIGluICcKLSsgICAgICAgICAgICAgICAgICAnZGVnXG4gICAgWygxLiwgMy4p LCAoMi4sIDQuKV0+LCB3PTMuMCBwaXgsIGg9NS4wIHBpeCcKLSsgICAgICAgICAgICAgICAgICAn LCB0aGV0YT0xNS4wIGRlZyk+JykKLSsgICAgICAgIGFfc3RyID0gKCdBcGVydHVyZTogU2t5UmVj dGFuZ3VsYXJBcGVydHVyZVxucG9zaXRpb25zOiA8U2t5Q29vcmQgJwotKyAgICAgICAgICAgICAg ICAgJyhJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoMS4sIDMuKSwgKDIuLCA0LildPlxu JwotKyAgICAgICAgICAgICAgICAgJ3c6IDMuMCBwaXhcbmg6IDUuMCBwaXhcbnRoZXRhOiAxNS4w IGRlZycpCi0rCi0gICAgIGFzc2VydCByZXByKGFwZXIpID09IGFfcmVwcgotICAgICBhc3NlcnQg c3RyKGFwZXIpID09IGFfc3RyCi0gCi0gICAgIGFwZXIgPSBTa3lSZWN0YW5ndWxhckFubnVsdXMo cywgd19pbj0zKnUucGl4LCB3X291dD0zLjQqdS5waXgsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaF9vdXQ9NSp1LnBpeCwgdGhldGE9MTUqdS5kZWcpCi0tICAgIGFfcmVwciA9 ICgnPFNreVJlY3Rhbmd1bGFyQW5udWx1cyg8U2t5Q29vcmQgKElDUlMpOiAocmEsIGRlYykgaW4g ZGVnJwotLSAgICAgICAgICAgICAgJ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT4sIHdf aW49My4wIHBpeCwgJwotLSAgICAgICAgICAgICAgJ3dfb3V0PTMuNCBwaXgsIGhfb3V0PTUuMCBw aXgsIHRoZXRhPTE1LjAgZGVnKT4nKQotLSAgICBhX3N0ciA9ICgnQXBlcnR1cmU6IFNreVJlY3Rh bmd1bGFyQW5udWx1c1xucG9zaXRpb25zOiA8U2t5Q29vcmQgJwotLSAgICAgICAgICAgICAnKElD UlMpOiAocmEsIGRlYykgaW4gZGVnXG4gICAgWyggMS4sICAzLiksICggMi4sICA0LildPlxuJwot LSAgICAgICAgICAgICAnd19pbjogMy4wIHBpeFxud19vdXQ6IDMuNCBwaXhcbmhfb3V0OiA1LjAg cGl4XG4nCi0tICAgICAgICAgICAgICd0aGV0YTogMTUuMCBkZWcnKQotKyAgICBpZiBOVU1QWV9M VF8xXzE0OgotKyAgICAgICAgYV9yZXByID0gKCc8U2t5UmVjdGFuZ3VsYXJBbm51bHVzKDxTa3lD b29yZCAoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWcnCi0rICAgICAgICAgICAgICAgICAgJ1xuICAg IFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT4sIHdfaW49My4wIHBpeCwgJwotKyAgICAgICAgICAg ICAgICAgICd3X291dD0zLjQgcGl4LCBoX291dD01LjAgcGl4LCB0aGV0YT0xNS4wIGRlZyk+JykK LSsgICAgICAgIGFfc3RyID0gKCdBcGVydHVyZTogU2t5UmVjdGFuZ3VsYXJBbm51bHVzXG5wb3Np dGlvbnM6IDxTa3lDb29yZCAnCi0rICAgICAgICAgICAgICAgICAnKElDUlMpOiAocmEsIGRlYykg aW4gZGVnXG4gICAgWyggMS4sICAzLiksICggMi4sICA0LildPlxuJwotKyAgICAgICAgICAgICAg ICAgJ3dfaW46IDMuMCBwaXhcbndfb3V0OiAzLjQgcGl4XG5oX291dDogNS4wIHBpeFxuJwotKyAg ICAgICAgICAgICAgICAgJ3RoZXRhOiAxNS4wIGRlZycpCi0rICAgIGVsc2U6Ci0rICAgICAgICBh X3JlcHIgPSAoJzxTa3lSZWN0YW5ndWxhckFubnVsdXMoPFNreUNvb3JkIChJQ1JTKTogKHJhLCBk ZWMpIGluIGRlZycKLSsgICAgICAgICAgICAgICAgICAnXG4gICAgWygxLiwgMy4pLCAoMi4sIDQu KV0+LCB3X2luPTMuMCBwaXgsICcKLSsgICAgICAgICAgICAgICAgICAnd19vdXQ9My40IHBpeCwg aF9vdXQ9NS4wIHBpeCwgdGhldGE9MTUuMCBkZWcpPicpCi0rICAgICAgICBhX3N0ciA9ICgnQXBl cnR1cmU6IFNreVJlY3Rhbmd1bGFyQW5udWx1c1xucG9zaXRpb25zOiA8U2t5Q29vcmQgJwotKyAg ICAgICAgICAgICAgICAgJyhJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoMS4sIDMuKSwg KDIuLCA0LildPlxuJwotKyAgICAgICAgICAgICAgICAgJ3dfaW46IDMuMCBwaXhcbndfb3V0OiAz LjQgcGl4XG5oX291dDogNS4wIHBpeFxuJwotKyAgICAgICAgICAgICAgICAgJ3RoZXRhOiAxNS4w IGRlZycpCi0rCi0gICAgIGFzc2VydCByZXByKGFwZXIpID09IGFfcmVwcgotICAgICBhc3NlcnQg c3RyKGFwZXIpID09IGFfc3RyCi0gCi1kaWZmIC1OYXVyIHBob3R1dGlscy0wLjQvcGhvdHV0aWxz L2FwZXJ0dXJlL3Rlc3RzL3Rlc3RfYXBlcnR1cmVfcGhvdG9tZXRyeS5weS5vcmlnIHBob3R1dGls cy0wLjQuZml4ZWQvcGhvdHV0aWxzL2FwZXJ0dXJlL3Rlc3RzL3Rlc3RfYXBlcnR1cmVfcGhvdG9t ZXRyeS5weS5vcmlnCi0tLS0gcGhvdHV0aWxzLTAuNC9waG90dXRpbHMvYXBlcnR1cmUvdGVzdHMv dGVzdF9hcGVydHVyZV9waG90b21ldHJ5LnB5Lm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAw MDAwMDAgKzAxMDAKLSsrKyBwaG90dXRpbHMtMC40LmZpeGVkL3Bob3R1dGlscy9hcGVydHVyZS90 ZXN0cy90ZXN0X2FwZXJ0dXJlX3Bob3RvbWV0cnkucHkub3JpZwkyMDE3LTEwLTMwIDE1OjM4OjE4 LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw4MzAgQEAKLSsjIExpY2Vuc2VkIHVuZGVyIGEg My1jbGF1c2UgQlNEIHN0eWxlIGxpY2Vuc2UgLSBzZWUgTElDRU5TRS5yc3QKLSsiIiIKLStUaGUg dGVzdHMgaW4gdGhpcyBmaWxlIHRlc3QgdGhlIGFjY3VyYWN5IG9mIHRoZSBwaG90b21ldHJpYyBy ZXN1bHRzLgotK0hlcmUgd2UgdGVzdCBkaXJlY3RseSB3aXRoIGFwZXJ0dXJlIG9iamVjdHMgc2lu Y2Ugd2UgYXJlIGNoZWNraW5nIHRoZQotK2FsZ29yaXRobXMgaW4gYXBlcnR1cmVfcGhvdG9tZXRy eSwgbm90IGluIHRoZSB3cmFwcGVycy4KLSsiIiIKLSsKLStmcm9tIF9fZnV0dXJlX18gaW1wb3J0 IChhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICB1bmljb2RlX2xpdGVyYWxzKQotKwotK2ltcG9ydCBweXRlc3QKLStpbXBv cnQgbnVtcHkgYXMgbnAKLStmcm9tIG51bXB5LnRlc3RpbmcgaW1wb3J0IChhc3NlcnRfYWxsY2xv c2UsIGFzc2VydF9hcnJheV9lcXVhbCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3Nl cnRfYXJyYXlfbGVzcykKLSsKLStmcm9tIGFzdHJvcHkuY29vcmRpbmF0ZXMgaW1wb3J0IFNreUNv b3JkCi0rZnJvbSBhc3Ryb3B5LmlvIGltcG9ydCBmaXRzCi0rZnJvbSBhc3Ryb3B5Lm5kZGF0YSBp bXBvcnQgTkREYXRhCi0rZnJvbSBhc3Ryb3B5LnRhYmxlIGltcG9ydCBUYWJsZQotK2Zyb20gYXN0 cm9weS50ZXN0cy5oZWxwZXIgaW1wb3J0IHJlbW90ZV9kYXRhCi0raW1wb3J0IGFzdHJvcHkudW5p dHMgYXMgdQotK2Zyb20gYXN0cm9weS53Y3MudXRpbHMgaW1wb3J0IHBpeGVsX3RvX3NreWNvb3Jk Ci0rCi0rZnJvbSAuLmNvcmUgaW1wb3J0IGFwZXJ0dXJlX3Bob3RvbWV0cnkKLStmcm9tIC4uY2ly Y2xlIGltcG9ydCAoQ2lyY3VsYXJBcGVydHVyZSwgQ2lyY3VsYXJBbm51bHVzLCBTa3lDaXJjdWxh ckFwZXJ0dXJlLAotKyAgICAgICAgICAgICAgICAgICAgICBTa3lDaXJjdWxhckFubnVsdXMpCi0r ZnJvbSAuLmVsbGlwc2UgaW1wb3J0IChFbGxpcHRpY2FsQXBlcnR1cmUsIEVsbGlwdGljYWxBbm51 bHVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgU2t5RWxsaXB0aWNhbEFwZXJ0dXJlLCBTa3lF bGxpcHRpY2FsQW5udWx1cykKLStmcm9tIC4ucmVjdGFuZ2xlIGltcG9ydCAoUmVjdGFuZ3VsYXJB cGVydHVyZSwgUmVjdGFuZ3VsYXJBbm51bHVzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBT a3lSZWN0YW5ndWxhckFwZXJ0dXJlLCBTa3lSZWN0YW5ndWxhckFubnVsdXMpCi0rZnJvbSAuLi5k YXRhc2V0cyBpbXBvcnQgKGdldF9wYXRoLCBtYWtlXzRnYXVzc2lhbnNfaW1hZ2UsIG1ha2Vfd2Nz LAotKyAgICAgICAgICAgICAgICAgICAgICAgICBtYWtlX2ltYWdlaGR1KQotKwotK3RyeToKLSsg ICAgaW1wb3J0IG1hdHBsb3RsaWIgICAgIyBub3FhCi0rICAgIEhBU19NQVRQTE9UTElCID0gVHJ1 ZQotK2V4Y2VwdCBJbXBvcnRFcnJvcjoKLSsgICAgSEFTX01BVFBMT1RMSUIgPSBGYWxzZQotKwot KwotK0FQRVJUVVJFX0NMID0gW0NpcmN1bGFyQXBlcnR1cmUsCi0rICAgICAgICAgICAgICAgQ2ly Y3VsYXJBbm51bHVzLAotKyAgICAgICAgICAgICAgIEVsbGlwdGljYWxBcGVydHVyZSwKLSsgICAg ICAgICAgICAgICBFbGxpcHRpY2FsQW5udWx1cywKLSsgICAgICAgICAgICAgICBSZWN0YW5ndWxh ckFwZXJ0dXJlLAotKyAgICAgICAgICAgICAgIFJlY3Rhbmd1bGFyQW5udWx1c10KLSsKLSsKLStU RVNUX0FQRVJUVVJFUyA9IGxpc3QoemlwKEFQRVJUVVJFX0NMLCAoKDMuLCksICgzLiwgNS4pLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMy4sIDUuLCAxLiksICgz LiwgNS4sIDQuLCAxLiksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICg1LCA4LCBucC5waSAvIDQpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoOCwgMTIsIDgsIG5wLnBpIC8gOCkpKSkKLSsKLSsKLStAcHl0ZXN0Lm1hcmsucGFyYW1l dHJpemUoKCdhcGVydHVyZV9jbGFzcycsICdwYXJhbXMnKSwgVEVTVF9BUEVSVFVSRVMpCi0rZGVm IHRlc3Rfb3V0c2lkZV9hcnJheShhcGVydHVyZV9jbGFzcywgcGFyYW1zKToKLSsgICAgZGF0YSA9 IG5wLm9uZXMoKDEwLCAxMCksIGR0eXBlPW5wLmZsb2F0KQotKyAgICBhcGVydHVyZSA9IGFwZXJ0 dXJlX2NsYXNzKCgtNjAsIDYwKSwgKnBhcmFtcykKLSsgICAgZmx1eHRhYmxlID0gYXBlcnR1cmVf cGhvdG9tZXRyeShkYXRhLCBhcGVydHVyZSkKLSsgICAgIyBhcGVydHVyZSBpcyBmdWxseSBvdXRz aWRlIGFycmF5OgotKyAgICBhc3NlcnQgbnAuaXNuYW4oZmx1eHRhYmxlWydhcGVydHVyZV9zdW0n XSkKLSsKLSsKLStAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoKCdhcGVydHVyZV9jbGFzcycsICdw YXJhbXMnKSwgVEVTVF9BUEVSVFVSRVMpCi0rZGVmIHRlc3RfaW5zaWRlX2FycmF5X3NpbXBsZShh cGVydHVyZV9jbGFzcywgcGFyYW1zKToKLSsgICAgZGF0YSA9IG5wLm9uZXMoKDQwLCA0MCksIGR0 eXBlPW5wLmZsb2F0KQotKyAgICBhcGVydHVyZSA9IGFwZXJ0dXJlX2NsYXNzKCgyMC4sIDIwLiks ICpwYXJhbXMpCi0rICAgIHRhYmxlMSA9IGFwZXJ0dXJlX3Bob3RvbWV0cnkoZGF0YSwgYXBlcnR1 cmUsIG1ldGhvZD0nY2VudGVyJywgc3VicGl4ZWxzPTEwKQotKyAgICB0YWJsZTIgPSBhcGVydHVy ZV9waG90b21ldHJ5KGRhdGEsIGFwZXJ0dXJlLCBtZXRob2Q9J3N1YnBpeGVsJywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwaXhlbHM9MTApCi0rICAgIHRhYmxlMyA9IGFw ZXJ0dXJlX3Bob3RvbWV0cnkoZGF0YSwgYXBlcnR1cmUsIG1ldGhvZD0nZXhhY3QnLCBzdWJwaXhl bHM9MTApCi0rICAgIHRydWVfZmx1eCA9IGFwZXJ0dXJlLmFyZWEoKQotKwotKyAgICBpZiBub3Qg aXNpbnN0YW5jZShhcGVydHVyZSwgKFJlY3Rhbmd1bGFyQXBlcnR1cmUsIFJlY3Rhbmd1bGFyQW5u dWx1cykpOgotKyAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKHRhYmxlM1snYXBlcnR1cmVfc3VtJ10s IHRydWVfZmx1eCkKLSsgICAgICAgIGFzc2VydF9hbGxjbG9zZSh0YWJsZTJbJ2FwZXJ0dXJlX3N1 bSddLCB0YWJsZTNbJ2FwZXJ0dXJlX3N1bSddLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGF0 b2w9MC4xKQotKyAgICBhc3NlcnQgdGFibGUxWydhcGVydHVyZV9zdW0nXSA8IHRhYmxlM1snYXBl cnR1cmVfc3VtJ10KLSsKLSsKLStAcHl0ZXN0Lm1hcmsuc2tpcGlmKCdub3QgSEFTX01BVFBMT1RM SUInKQotK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgoJ2FwZXJ0dXJlX2NsYXNzJywgJ3BhcmFt cycpLCBURVNUX0FQRVJUVVJFUykKLStkZWYgdGVzdF9hcGVydHVyZV9wbG90cyhhcGVydHVyZV9j bGFzcywgcGFyYW1zKToKLSsgICAgIyBUaGlzIHRlc3Qgc2hvdWxkIHJ1biB3aXRob3V0IGFueSBl cnJvcnMsIGFuZCB0aGVyZSBpcyBubyByZXR1cm4KLSsgICAgIyB2YWx1ZS4KLSsgICAgIyBUT0RP OiBjaGVjayB0aGUgY29udGVudCBvZiB0aGUgcGxvdAotKyAgICBhcGVydHVyZSA9IGFwZXJ0dXJl X2NsYXNzKCgyMC4sIDIwLiksICpwYXJhbXMpCi0rICAgIGFwZXJ0dXJlLnBsb3QoKQotKwotKwot K2RlZiB0ZXN0X2FwZXJ0dXJlX3BpeGVsX3Bvc2l0aW9ucygpOgotKyAgICBwb3MxID0gKDEwLCAy MCkKLSsgICAgcG9zMiA9IHUuUXVhbnRpdHkoKDEwLCAyMCksIHVuaXQ9dS5waXhlbCkKLSsgICAg cG9zMyA9ICgoMTAsIDIwLCAzMCksICgxMCwgMjAsIDMwKSkKLSsgICAgcG9zM19wYWlycyA9ICgo MTAsIDEwKSwgKDIwLCAyMCksICgzMCwgMzApKQotKwotKyAgICByID0gMwotKyAgICBhcDEgPSBD aXJjdWxhckFwZXJ0dXJlKHBvczEsIHIpCi0rICAgIGFwMiA9IENpcmN1bGFyQXBlcnR1cmUocG9z MiwgcikKLSsgICAgYXAzID0gQ2lyY3VsYXJBcGVydHVyZShwb3MzLCByKQotKwotKyAgICBhc3Nl cnRfYWxsY2xvc2UobnAuYXRsZWFzdF8yZChwb3MxKSwgYXAxLnBvc2l0aW9ucykKLSsgICAgYXNz ZXJ0X2FsbGNsb3NlKG5wLmF0bGVhc3RfMmQocG9zMi52YWx1ZSksIGFwMi5wb3NpdGlvbnMpCi0r ICAgIGFzc2VydF9hbGxjbG9zZShwb3MzX3BhaXJzLCBhcDMucG9zaXRpb25zKQotKwotKwotK2Ns YXNzIEJhc2VUZXN0QXBlcnR1cmVQaG90b21ldHJ5KG9iamVjdCk6Ci0rCi0rICAgIGRlZiB0ZXN0 X3NjYWxhcl9lcnJvcihzZWxmKToKLSsgICAgICAgICMgU2NhbGFyIGVycm9yCi0rICAgICAgICBl cnJvciA9IDEuCi0rICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnbWFzaycpOgotKyAgICAg ICAgICAgIG1hc2sgPSBOb25lCi0rICAgICAgICAgICAgdHJ1ZV9lcnJvciA9IG5wLnNxcnQoc2Vs Zi5hcmVhKQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBtYXNrID0gc2VsZi5tYXNrCi0r ICAgICAgICAgICAgIyAxIG1hc2tlZCBwaXhlbAotKyAgICAgICAgICAgIHRydWVfZXJyb3IgPSBu cC5zcXJ0KHNlbGYuYXJlYSAtIDEpCi0rCi0rICAgICAgICB0YWJsZTEgPSBhcGVydHVyZV9waG90 b21ldHJ5KHNlbGYuZGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5hcGVydHVyZSwgbWV0aG9kPSdjZW50ZXInLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtYXNrPW1hc2ssIGVycm9yPWVycm9yKQotKyAgICAgICAgdGFibGUyID0g YXBlcnR1cmVfcGhvdG9tZXRyeShzZWxmLmRhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuYXBlcnR1cmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1ldGhvZD0nc3VicGl4ZWwnLCBzdWJwaXhlbHM9MTIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9bWFzaywgZXJyb3I9ZXJyb3IpCi0rICAgICAg ICB0YWJsZTMgPSBhcGVydHVyZV9waG90b21ldHJ5KHNlbGYuZGF0YSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcGVydHVyZSwgbWV0aG9kPSdleGFjdCcsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9bWFzaywgZXJyb3I9ZXJy b3IpCi0rCi0rICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLmFwZXJ0dXJlLCAoUmVjdGFu Z3VsYXJBcGVydHVyZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZWN0YW5ndWxhckFubnVsdXMpKToKLSsgICAgICAgICAgICBhc3NlcnRfYWxsY2xvc2UodGFi bGUzWydhcGVydHVyZV9zdW0nXSwgc2VsZi50cnVlX2ZsdXgpCi0rICAgICAgICAgICAgYXNzZXJ0 X2FsbGNsb3NlKHRhYmxlMlsnYXBlcnR1cmVfc3VtJ10sIHRhYmxlM1snYXBlcnR1cmVfc3VtJ10s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0b2w9MC4xKQotKyAgICAgICAgYXNzZXJ0 IG5wLmFsbCh0YWJsZTFbJ2FwZXJ0dXJlX3N1bSddIDwgdGFibGUzWydhcGVydHVyZV9zdW0nXSkK LSsKLSsgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlbGYuYXBlcnR1cmUsIChSZWN0YW5ndWxh ckFwZXJ0dXJlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl Y3Rhbmd1bGFyQW5udWx1cykpOgotKyAgICAgICAgICAgIGFzc2VydF9hbGxjbG9zZSh0YWJsZTNb J2FwZXJ0dXJlX3N1bV9lcnInXSwgdHJ1ZV9lcnJvcikKLSsgICAgICAgICAgICBhc3NlcnRfYWxs Y2xvc2UodGFibGUyWydhcGVydHVyZV9zdW0nXSwgdGFibGUzWydhcGVydHVyZV9zdW0nXSwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvbD0wLjEpCi0rICAgICAgICBhc3NlcnQgbnAu YWxsKHRhYmxlMVsnYXBlcnR1cmVfc3VtX2VyciddIDwgdGFibGUzWydhcGVydHVyZV9zdW1fZXJy J10pCi0rCi0rICAgIGRlZiB0ZXN0X2FycmF5X2Vycm9yKHNlbGYpOgotKyAgICAgICAgIyBBcnJh eSBlcnJvcgotKyAgICAgICAgZXJyb3IgPSBucC5vbmVzKHNlbGYuZGF0YS5zaGFwZSwgZHR5cGU9 bnAuZmxvYXQpCi0rICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnbWFzaycpOgotKyAgICAg ICAgICAgIG1hc2sgPSBOb25lCi0rICAgICAgICAgICAgdHJ1ZV9lcnJvciA9IG5wLnNxcnQoc2Vs Zi5hcmVhKQotKyAgICAgICAgZWxzZToKLSsgICAgICAgICAgICBtYXNrID0gc2VsZi5tYXNrCi0r ICAgICAgICAgICAgIyAxIG1hc2tlZCBwaXhlbAotKyAgICAgICAgICAgIHRydWVfZXJyb3IgPSBu cC5zcXJ0KHNlbGYuYXJlYSAtIDEpCi0rCi0rICAgICAgICB0YWJsZTEgPSBhcGVydHVyZV9waG90 b21ldHJ5KHNlbGYuZGF0YSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2VsZi5hcGVydHVyZSwgbWV0aG9kPSdjZW50ZXInLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtYXNrPW1hc2ssIGVycm9yPWVycm9yKQotKyAgICAgICAgdGFibGUyID0g YXBlcnR1cmVfcGhvdG9tZXRyeShzZWxmLmRhdGEsCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNlbGYuYXBlcnR1cmUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG1ldGhvZD0nc3VicGl4ZWwnLCBzdWJwaXhlbHM9MTIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9bWFzaywgZXJyb3I9ZXJyb3IpCi0rICAgICAg ICB0YWJsZTMgPSBhcGVydHVyZV9waG90b21ldHJ5KHNlbGYuZGF0YSwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hcGVydHVyZSwgbWV0aG9kPSdleGFjdCcsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9bWFzaywgZXJyb3I9ZXJy b3IpCi0rCi0rICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzZWxmLmFwZXJ0dXJlLCAoUmVjdGFu Z3VsYXJBcGVydHVyZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBSZWN0YW5ndWxhckFubnVsdXMpKToKLSsgICAgICAgICAgICBhc3NlcnRfYWxsY2xvc2UodGFi bGUzWydhcGVydHVyZV9zdW0nXSwgc2VsZi50cnVlX2ZsdXgpCi0rICAgICAgICAgICAgYXNzZXJ0 X2FsbGNsb3NlKHRhYmxlMlsnYXBlcnR1cmVfc3VtJ10sIHRhYmxlM1snYXBlcnR1cmVfc3VtJ10s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0b2w9MC4xKQotKyAgICAgICAgYXNzZXJ0 IG5wLmFsbCh0YWJsZTFbJ2FwZXJ0dXJlX3N1bSddIDwgdGFibGUzWydhcGVydHVyZV9zdW0nXSkK LSsKLSsgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNlbGYuYXBlcnR1cmUsIChSZWN0YW5ndWxh ckFwZXJ0dXJlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJl Y3Rhbmd1bGFyQW5udWx1cykpOgotKyAgICAgICAgICAgIGFzc2VydF9hbGxjbG9zZSh0YWJsZTNb J2FwZXJ0dXJlX3N1bV9lcnInXSwgdHJ1ZV9lcnJvcikKLSsgICAgICAgICAgICBhc3NlcnRfYWxs Y2xvc2UodGFibGUyWydhcGVydHVyZV9zdW1fZXJyJ10sCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRhYmxlM1snYXBlcnR1cmVfc3VtX2VyciddLCBhdG9sPTAuMSkKLSsgICAgICAgIGFz c2VydCBucC5hbGwodGFibGUxWydhcGVydHVyZV9zdW1fZXJyJ10gPCB0YWJsZTNbJ2FwZXJ0dXJl X3N1bV9lcnInXSkKLSsKLSsKLStjbGFzcyBUZXN0Q2lyY3VsYXIoQmFzZVRlc3RBcGVydHVyZVBo b3RvbWV0cnkpOgotKwotKyAgICBkZWYgc2V0dXBfY2xhc3Moc2VsZik6Ci0rICAgICAgICBzZWxm LmRhdGEgPSBucC5vbmVzKCg0MCwgNDApLCBkdHlwZT1ucC5mbG9hdCkKLSsgICAgICAgIHBvc2l0 aW9uID0gKDIwLiwgMjAuKQotKyAgICAgICAgciA9IDEwLgotKyAgICAgICAgc2VsZi5hcGVydHVy ZSA9IENpcmN1bGFyQXBlcnR1cmUocG9zaXRpb24sIHIpCi0rICAgICAgICBzZWxmLmFyZWEgPSBu cC5waSAqIHIgKiByCi0rICAgICAgICBzZWxmLnRydWVfZmx1eCA9IHNlbGYuYXJlYQotKwotKwot K2NsYXNzIFRlc3RDaXJjdWxhckFycmF5KEJhc2VUZXN0QXBlcnR1cmVQaG90b21ldHJ5KToKLSsK LSsgICAgZGVmIHNldHVwX2NsYXNzKHNlbGYpOgotKyAgICAgICAgc2VsZi5kYXRhID0gbnAub25l cygoNDAsIDQwKSwgZHR5cGU9bnAuZmxvYXQpCi0rICAgICAgICBwb3NpdGlvbiA9ICgoMjAuLCAy MC4pLCAoMjUuLCAyNS4pKQotKyAgICAgICAgciA9IDEwLgotKyAgICAgICAgc2VsZi5hcGVydHVy ZSA9IENpcmN1bGFyQXBlcnR1cmUocG9zaXRpb24sIHIpCi0rICAgICAgICBzZWxmLmFyZWEgPSBu cC5waSAqIHIgKiByCi0rICAgICAgICBzZWxmLmFyZWEgPSBucC5hcnJheSgoc2VsZi5hcmVhLCAp ICogMikKLSsgICAgICAgIHNlbGYudHJ1ZV9mbHV4ID0gc2VsZi5hcmVhCi0rCi0rCi0rY2xhc3Mg VGVzdENpcmN1bGFyQW5udWx1cyhCYXNlVGVzdEFwZXJ0dXJlUGhvdG9tZXRyeSk6Ci0rCi0rICAg IGRlZiBzZXR1cF9jbGFzcyhzZWxmKToKLSsgICAgICAgIHNlbGYuZGF0YSA9IG5wLm9uZXMoKDQw LCA0MCksIGR0eXBlPW5wLmZsb2F0KQotKyAgICAgICAgcG9zaXRpb24gPSAoMjAuLCAyMC4pCi0r ICAgICAgICByX2luID0gOC4KLSsgICAgICAgIHJfb3V0ID0gMTAuCi0rICAgICAgICBzZWxmLmFw ZXJ0dXJlID0gQ2lyY3VsYXJBbm51bHVzKHBvc2l0aW9uLCByX2luLCByX291dCkKLSsgICAgICAg IHNlbGYuYXJlYSA9IG5wLnBpICogKHJfb3V0ICogcl9vdXQgLSByX2luICogcl9pbikKLSsgICAg ICAgIHNlbGYudHJ1ZV9mbHV4ID0gc2VsZi5hcmVhCi0rCi0rCi0rY2xhc3MgVGVzdENpcmN1bGFy QW5udWx1c0FycmF5KEJhc2VUZXN0QXBlcnR1cmVQaG90b21ldHJ5KToKLSsKLSsgICAgZGVmIHNl dHVwX2NsYXNzKHNlbGYpOgotKyAgICAgICAgc2VsZi5kYXRhID0gbnAub25lcygoNDAsIDQwKSwg ZHR5cGU9bnAuZmxvYXQpCi0rICAgICAgICBwb3NpdGlvbiA9ICgoMjAuLCAyMC4pLCAoMjUuLCAy NS4pKQotKyAgICAgICAgcl9pbiA9IDguCi0rICAgICAgICByX291dCA9IDEwLgotKyAgICAgICAg c2VsZi5hcGVydHVyZSA9IENpcmN1bGFyQW5udWx1cyhwb3NpdGlvbiwgcl9pbiwgcl9vdXQpCi0r ICAgICAgICBzZWxmLmFyZWEgPSBucC5waSAqIChyX291dCAqIHJfb3V0IC0gcl9pbiAqIHJfaW4p Ci0rICAgICAgICBzZWxmLmFyZWEgPSBucC5hcnJheSgoc2VsZi5hcmVhLCApICogMikKLSsgICAg ICAgIHNlbGYudHJ1ZV9mbHV4ID0gc2VsZi5hcmVhCi0rCi0rCi0rY2xhc3MgVGVzdEVsbGlwdGlj YWwoQmFzZVRlc3RBcGVydHVyZVBob3RvbWV0cnkpOgotKwotKyAgICBkZWYgc2V0dXBfY2xhc3Mo c2VsZik6Ci0rICAgICAgICBzZWxmLmRhdGEgPSBucC5vbmVzKCg0MCwgNDApLCBkdHlwZT1ucC5m bG9hdCkKLSsgICAgICAgIHBvc2l0aW9uID0gKDIwLiwgMjAuKQotKyAgICAgICAgYSA9IDEwLgot KyAgICAgICAgYiA9IDUuCi0rICAgICAgICB0aGV0YSA9IC1ucC5waSAvIDQuCi0rICAgICAgICBz ZWxmLmFwZXJ0dXJlID0gRWxsaXB0aWNhbEFwZXJ0dXJlKHBvc2l0aW9uLCBhLCBiLCB0aGV0YSkK LSsgICAgICAgIHNlbGYuYXJlYSA9IG5wLnBpICogYSAqIGIKLSsgICAgICAgIHNlbGYudHJ1ZV9m bHV4ID0gc2VsZi5hcmVhCi0rCi0rCi0rY2xhc3MgVGVzdEVsbGlwdGljYWxBbm51bHVzKEJhc2VU ZXN0QXBlcnR1cmVQaG90b21ldHJ5KToKLSsKLSsgICAgZGVmIHNldHVwX2NsYXNzKHNlbGYpOgot KyAgICAgICAgc2VsZi5kYXRhID0gbnAub25lcygoNDAsIDQwKSwgZHR5cGU9bnAuZmxvYXQpCi0r ICAgICAgICBwb3NpdGlvbiA9ICgyMC4sIDIwLikKLSsgICAgICAgIGFfaW4gPSA1LgotKyAgICAg ICAgYV9vdXQgPSA4LgotKyAgICAgICAgYl9vdXQgPSA1LgotKyAgICAgICAgdGhldGEgPSAtbnAu cGkgLyA0LgotKyAgICAgICAgc2VsZi5hcGVydHVyZSA9IEVsbGlwdGljYWxBbm51bHVzKHBvc2l0 aW9uLCBhX2luLCBhX291dCwgYl9vdXQsIHRoZXRhKQotKyAgICAgICAgc2VsZi5hcmVhID0gKG5w LnBpICogKGFfb3V0ICogYl9vdXQpIC0KLSsgICAgICAgICAgICAgICAgICAgICBucC5waSAqIChh X2luICogYl9vdXQgKiBhX2luIC8gYV9vdXQpKQotKyAgICAgICAgc2VsZi50cnVlX2ZsdXggPSBz ZWxmLmFyZWEKLSsKLSsKLStjbGFzcyBUZXN0UmVjdGFuZ3VsYXJBcGVydHVyZShCYXNlVGVzdEFw ZXJ0dXJlUGhvdG9tZXRyeSk6Ci0rCi0rICAgIGRlZiBzZXR1cF9jbGFzcyhzZWxmKToKLSsgICAg ICAgIHNlbGYuZGF0YSA9IG5wLm9uZXMoKDQwLCA0MCksIGR0eXBlPW5wLmZsb2F0KQotKyAgICAg ICAgcG9zaXRpb24gPSAoMjAuLCAyMC4pCi0rICAgICAgICBoID0gNS4KLSsgICAgICAgIHcgPSA4 LgotKyAgICAgICAgdGhldGEgPSBucC5waSAvIDQuCi0rICAgICAgICBzZWxmLmFwZXJ0dXJlID0g UmVjdGFuZ3VsYXJBcGVydHVyZShwb3NpdGlvbiwgdywgaCwgdGhldGEpCi0rICAgICAgICBzZWxm LmFyZWEgPSBoICogdwotKyAgICAgICAgc2VsZi50cnVlX2ZsdXggPSBzZWxmLmFyZWEKLSsKLSsK LStjbGFzcyBUZXN0UmVjdGFuZ3VsYXJBbm51bHVzKEJhc2VUZXN0QXBlcnR1cmVQaG90b21ldHJ5 KToKLSsKLSsgICAgZGVmIHNldHVwX2NsYXNzKHNlbGYpOgotKyAgICAgICAgc2VsZi5kYXRhID0g bnAub25lcygoNDAsIDQwKSwgZHR5cGU9bnAuZmxvYXQpCi0rICAgICAgICBwb3NpdGlvbiA9ICgy MC4sIDIwLikKLSsgICAgICAgIGhfb3V0ID0gOC4KLSsgICAgICAgIHdfaW4gPSA4LgotKyAgICAg ICAgd19vdXQgPSAxMi4KLSsgICAgICAgIGhfaW4gPSB3X2luICogaF9vdXQgLyB3X291dAotKyAg ICAgICAgdGhldGEgPSBucC5waSAvIDguCi0rICAgICAgICBzZWxmLmFwZXJ0dXJlID0gUmVjdGFu Z3VsYXJBbm51bHVzKHBvc2l0aW9uLCB3X2luLCB3X291dCwgaF9vdXQsIHRoZXRhKQotKyAgICAg ICAgc2VsZi5hcmVhID0gaF9vdXQgKiB3X291dCAtIGhfaW4gKiB3X2luCi0rICAgICAgICBzZWxm LnRydWVfZmx1eCA9IHNlbGYuYXJlYQotKwotKwotK2NsYXNzIFRlc3RNYXNrZWRTa2lwQ2lyY3Vs YXIoQmFzZVRlc3RBcGVydHVyZVBob3RvbWV0cnkpOgotKwotKyAgICBkZWYgc2V0dXBfY2xhc3Mo c2VsZik6Ci0rICAgICAgICBzZWxmLmRhdGEgPSBucC5vbmVzKCg0MCwgNDApLCBkdHlwZT1ucC5m bG9hdCkKLSsgICAgICAgIHNlbGYubWFzayA9IG5wLnplcm9zKCg0MCwgNDApLCBkdHlwZT1ib29s KQotKyAgICAgICAgc2VsZi5tYXNrWzIwLCAyMF0gPSBUcnVlCi0rICAgICAgICBwb3NpdGlvbiA9 ICgyMC4sIDIwLikKLSsgICAgICAgIHIgPSAxMC4KLSsgICAgICAgIHNlbGYuYXBlcnR1cmUgPSBD aXJjdWxhckFwZXJ0dXJlKHBvc2l0aW9uLCByKQotKyAgICAgICAgc2VsZi5hcmVhID0gbnAucGkg KiByICogcgotKyAgICAgICAgc2VsZi50cnVlX2ZsdXggPSBzZWxmLmFyZWEgLSAxCi0rCi0rCi0r Y2xhc3MgQmFzZVRlc3REaWZmZXJlbnREYXRhKG9iamVjdCk6Ci0rCi0rICAgIGRlZiB0ZXN0X2Jh c2ljX2NpcmN1bGFyX2FwZXJ0dXJlX3Bob3RvbWV0cnkoc2VsZik6Ci0rICAgICAgICBhcGVydHVy ZSA9IENpcmN1bGFyQXBlcnR1cmUoc2VsZi5wb3NpdGlvbiwgc2VsZi5yYWRpdXMpCi0rICAgICAg ICB0YWJsZSA9IGFwZXJ0dXJlX3Bob3RvbWV0cnkoc2VsZi5kYXRhLCBhcGVydHVyZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9J2V4YWN0JywgdW5pdD0nYWR1 JykKLSsKLSsgICAgICAgIGFzc2VydF9hbGxjbG9zZSh0YWJsZVsnYXBlcnR1cmVfc3VtJ10udmFs dWUsIHNlbGYudHJ1ZV9mbHV4KQotKyAgICAgICAgYXNzZXJ0IHRhYmxlWydhcGVydHVyZV9zdW0n XS51bml0LCBzZWxmLmZsdXh1bml0Ci0rCi0rICAgICAgICBhc3NlcnQgbnAuYWxsKHRhYmxlWyd4 Y2VudGVyJ10udmFsdWUgPT0KLSsgICAgICAgICAgICAgICAgICAgICAgbnAudHJhbnNwb3NlKHNl bGYucG9zaXRpb24pWzBdKQotKyAgICAgICAgYXNzZXJ0IG5wLmFsbCh0YWJsZVsneWNlbnRlcidd LnZhbHVlID09Ci0rICAgICAgICAgICAgICAgICAgICAgIG5wLnRyYW5zcG9zZShzZWxmLnBvc2l0 aW9uKVsxXSkKLSsKLSsKLStjbGFzcyBUZXN0SW5wdXRQcmltYXJ5SERVKEJhc2VUZXN0RGlmZmVy ZW50RGF0YSk6Ci0rCi0rICAgIGRlZiBzZXR1cF9jbGFzcyhzZWxmKToKLSsgICAgICAgIGRhdGEg PSBucC5vbmVzKCg0MCwgNDApLCBkdHlwZT1ucC5mbG9hdCkKLSsgICAgICAgIHNlbGYuZGF0YSA9 IGZpdHMuSW1hZ2VIRFUoZGF0YT1kYXRhKQotKyAgICAgICAgc2VsZi5kYXRhLmhlYWRlclsnQlVO SVQnXSA9ICdhZHUnCi0rICAgICAgICBzZWxmLnJhZGl1cyA9IDMKLSsgICAgICAgIHNlbGYucG9z aXRpb24gPSAoMjAsIDIwKQotKyAgICAgICAgc2VsZi50cnVlX2ZsdXggPSBucC5waSAqIHNlbGYu cmFkaXVzICogc2VsZi5yYWRpdXMKLSsgICAgICAgIHNlbGYuZmx1eHVuaXQgPSB1LmFkdQotKwot KwotK2NsYXNzIFRlc3RJbnB1dEhEVUxpc3QoQmFzZVRlc3REaWZmZXJlbnREYXRhKToKLSsKLSsg ICAgZGVmIHNldHVwX2NsYXNzKHNlbGYpOgotKyAgICAgICAgZGF0YTAgPSBucC5vbmVzKCg0MCwg NDApLCBkdHlwZT1ucC5mbG9hdCkKLSsgICAgICAgIGRhdGExID0gbnAuZW1wdHkoKDQwLCA0MCks IGR0eXBlPW5wLmZsb2F0KQotKyAgICAgICAgZGF0YTEuZmlsbCgyKQotKyAgICAgICAgc2VsZi5k YXRhID0gZml0cy5IRFVMaXN0KFtmaXRzLkltYWdlSERVKGRhdGE9ZGF0YTApLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBmaXRzLkltYWdlSERVKGRhdGE9ZGF0YTEpXSkKLSsg ICAgICAgIHNlbGYucmFkaXVzID0gMwotKyAgICAgICAgc2VsZi5wb3NpdGlvbiA9ICgyMCwgMjAp Ci0rICAgICAgICAjIEl0IHNob3VsZCBzdG9wIGF0IHRoZSBmaXJzdCBleHRlbnNpb24KLSsgICAg ICAgIHNlbGYudHJ1ZV9mbHV4ID0gbnAucGkgKiBzZWxmLnJhZGl1cyAqIHNlbGYucmFkaXVzCi0r Ci0rCi0rY2xhc3MgVGVzdElucHV0SERVRGlmZmVyZW50QlVOSVQoQmFzZVRlc3REaWZmZXJlbnRE YXRhKToKLSsKLSsgICAgZGVmIHNldHVwX2NsYXNzKHNlbGYpOgotKyAgICAgICAgZGF0YSA9IG5w Lm9uZXMoKDQwLCA0MCksIGR0eXBlPW5wLmZsb2F0KQotKyAgICAgICAgc2VsZi5kYXRhID0gZml0 cy5JbWFnZUhEVShkYXRhPWRhdGEpCi0rICAgICAgICBzZWxmLmRhdGEuaGVhZGVyWydCVU5JVCdd ID0gJ0p5JwotKyAgICAgICAgc2VsZi5yYWRpdXMgPSAzCi0rICAgICAgICBzZWxmLnBvc2l0aW9u ID0gKDIwLCAyMCkKLSsgICAgICAgIHNlbGYudHJ1ZV9mbHV4ID0gbnAucGkgKiBzZWxmLnJhZGl1 cyAqIHNlbGYucmFkaXVzCi0rICAgICAgICBzZWxmLmZsdXh1bml0ID0gdS5hZHUKLSsKLSsKLStj bGFzcyBUZXN0SW5wdXRORERhdGEoQmFzZVRlc3REaWZmZXJlbnREYXRhKToKLSsKLSsgICAgZGVm IHNldHVwX2NsYXNzKHNlbGYpOgotKyAgICAgICAgZGF0YSA9IG5wLm9uZXMoKDQwLCA0MCksIGR0 eXBlPW5wLmZsb2F0KQotKyAgICAgICAgc2VsZi5kYXRhID0gTkREYXRhKGRhdGEsIHVuaXQ9dS5h ZHUpCi0rICAgICAgICBzZWxmLnJhZGl1cyA9IDMKLSsgICAgICAgIHNlbGYucG9zaXRpb24gPSBb KDIwLCAyMCksICgzMCwgMzApXQotKyAgICAgICAgc2VsZi50cnVlX2ZsdXggPSBucC5waSAqIHNl bGYucmFkaXVzICogc2VsZi5yYWRpdXMKLSsgICAgICAgIHNlbGYuZmx1eHVuaXQgPSB1LmFkdQot KwotKwotK0ByZW1vdGVfZGF0YQotK2RlZiB0ZXN0X3djc19iYXNlZF9waG90b21ldHJ5X3RvX2Nh dGFsb2d1ZSgpOgotKyAgICBwYXRoY2F0ID0gZ2V0X3BhdGgoJ3NwaXR6ZXJfZXhhbXBsZV9jYXRh bG9nLnhtbCcsIGxvY2F0aW9uPSdyZW1vdGUnKQotKyAgICBwYXRoaGR1ID0gZ2V0X3BhdGgoJ3Nw aXR6ZXJfZXhhbXBsZV9pbWFnZS5maXRzJywgbG9jYXRpb249J3JlbW90ZScpCi0rICAgIGhkdSA9 IGZpdHMub3BlbihwYXRoaGR1KQotKyAgICBzY2FsZSA9IGhkdVswXS5oZWFkZXJbJ1BJWFNDQUwx J10KLSsKLSsgICAgY2F0YWxvZyA9IFRhYmxlLnJlYWQocGF0aGNhdCkKLSsKLSsgICAgcG9zX3Nr eWNvb3JkID0gU2t5Q29vcmQoY2F0YWxvZ1snbCddLCBjYXRhbG9nWydiJ10sIGZyYW1lPSdnYWxh Y3RpYycpCi0rCi0rICAgIHBob3RvbWV0cnlfc2t5Y29vcmQgPSBhcGVydHVyZV9waG90b21ldHJ5 KAotKyAgICAgICAgaGR1LCBTa3lDaXJjdWxhckFwZXJ0dXJlKHBvc19za3ljb29yZCwgNCAqIHUu YXJjc2VjKSkKLSsKLSsgICAgcGhvdG9tZXRyeV9za3ljb29yZF9waXggPSBhcGVydHVyZV9waG90 b21ldHJ5KAotKyAgICAgICAgaGR1LCBTa3lDaXJjdWxhckFwZXJ0dXJlKHBvc19za3ljb29yZCwg NC4gLyBzY2FsZSAqIHUucGl4ZWwpKQotKwotKyAgICBhc3NlcnRfYWxsY2xvc2UocGhvdG9tZXRy eV9za3ljb29yZFsnYXBlcnR1cmVfc3VtJ10sCi0rICAgICAgICAgICAgICAgICAgICBwaG90b21l dHJ5X3NreWNvb3JkX3BpeFsnYXBlcnR1cmVfc3VtJ10pCi0rCi0rICAgICMgUGhvdG9tZXRyaWMg dW5pdCBjb252ZXJzaW9uIGlzIG5lZWRlZCB0byBtYXRjaCB0aGUgY2F0YWxvZ3VlCi0rICAgIGZh Y3RvciA9ICgxLjIgKiB1LmFyY3NlYykgKiogMiAvIHUucGl4ZWwKLSsgICAgY29udmVydGVkX2Fw ZXJ0dXJlX3N1bSA9IChwaG90b21ldHJ5X3NreWNvb3JkWydhcGVydHVyZV9zdW0nXSAqCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yKS50byh1Lm1KeSAvIHUucGl4ZWwpCi0r Ci0rICAgIGZsdXhlc19jYXRhbG9nID0gY2F0YWxvZ1snZjRfNSddLmZpbGxlZCgpCi0rCi0rICAg ICMgVGhlcmUgc2hvdWxkbid0IGJlIGxhcmdlIG91dGxpZXJzLCBidXQgc29tZSBkaWZmZXJlbmNl cyBpcyBPSywgYXMKLSsgICAgIyBmbHV4ZXNfY2F0YWxvZyBpcyBiYXNlZCBvbiBQU0YgcGhvdG9t ZXRyeSwgZXRjLgotKyAgICBhc3NlcnRfYWxsY2xvc2UoZmx1eGVzX2NhdGFsb2csIGNvbnZlcnRl ZF9hcGVydHVyZV9zdW0udmFsdWUsIHJ0b2w9MWUwKQotKwotKyAgICBhc3NlcnQobnAubWVhbihu cC5mYWJzKCgoZmx1eGVzX2NhdGFsb2cgLSBjb252ZXJ0ZWRfYXBlcnR1cmVfc3VtLnZhbHVlKSAv Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXhlc19jYXRhbG9nKSkpIDwgMC4xKQot KwotKwotK2RlZiB0ZXN0X3djc19iYXNlZF9waG90b21ldHJ5KCk6Ci0rICAgIGRhdGEgPSBtYWtl XzRnYXVzc2lhbnNfaW1hZ2UoKQotKyAgICB3Y3MgPSBtYWtlX3djcyhkYXRhLnNoYXBlKQotKyAg ICBoZHUgPSBtYWtlX2ltYWdlaGR1KGRhdGEsIHdjcz13Y3MpCi0rCi0rICAgICMgaGFyZCB3aXJl ZCBwb3NpdGlvbnMgaW4gbWFrZV80Z2F1c3NpYW5faW1hZ2UKLSsgICAgcG9zX29yaWdfcGl4ZWwg PSB1LlF1YW50aXR5KChbMTYwLiwgMjUuLCAxNTAuLCA5MC5dLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFs3MC4sIDQwLiwgMjUuLCA2MC5dKSwgdW5pdD11LnBpeGVsKQotKwot KyAgICBwb3Nfc2t5Y29vcmQgPSBwaXhlbF90b19za3ljb29yZChwb3Nfb3JpZ19waXhlbFswXSwg cG9zX29yaWdfcGl4ZWxbMV0sIHdjcykKLSsKLSsgICAgcG9zX3NreWNvb3JkX3MgPSBwb3Nfc2t5 Y29vcmRbMl0KLSsKLSsgICAgcGhvdG9tZXRyeV9za3ljb29yZF9jaXJjID0gYXBlcnR1cmVfcGhv dG9tZXRyeSgKLSsgICAgICAgIGhkdSwgU2t5Q2lyY3VsYXJBcGVydHVyZShwb3Nfc2t5Y29vcmQs IDMgKiB1LmFyY3NlYykpCi0rICAgIHBob3RvbWV0cnlfc2t5Y29vcmRfY2lyY18yID0gYXBlcnR1 cmVfcGhvdG9tZXRyeSgKLSsgICAgICAgIGhkdSwgU2t5Q2lyY3VsYXJBcGVydHVyZShwb3Nfc2t5 Y29vcmQsIDIgKiB1LmFyY3NlYykpCi0rICAgIHBob3RvbWV0cnlfc2t5Y29vcmRfY2lyY19zID0g YXBlcnR1cmVfcGhvdG9tZXRyeSgKLSsgICAgICAgIGhkdSwgU2t5Q2lyY3VsYXJBcGVydHVyZShw b3Nfc2t5Y29vcmRfcywgMyAqIHUuYXJjc2VjKSkKLSsKLSsgICAgYXNzZXJ0X2FsbGNsb3NlKHBo b3RvbWV0cnlfc2t5Y29vcmRfY2lyY1snYXBlcnR1cmVfc3VtJ11bMl0sCi0rICAgICAgICAgICAg ICAgICAgICBwaG90b21ldHJ5X3NreWNvb3JkX2NpcmNfc1snYXBlcnR1cmVfc3VtJ10pCi0rCi0r ICAgIHBob3RvbWV0cnlfc2t5Y29vcmRfY2lyY19hbm4gPSBhcGVydHVyZV9waG90b21ldHJ5KAot KyAgICAgICAgaGR1LCBTa3lDaXJjdWxhckFubnVsdXMocG9zX3NreWNvb3JkLCAyICogdS5hcmNz ZWMsIDMgKiB1LmFyY3NlYykpCi0rICAgIHBob3RvbWV0cnlfc2t5Y29vcmRfY2lyY19hbm5fcyA9 IGFwZXJ0dXJlX3Bob3RvbWV0cnkoCi0rICAgICAgICBoZHUsIFNreUNpcmN1bGFyQW5udWx1cyhw b3Nfc2t5Y29vcmRfcywgMiAqIHUuYXJjc2VjLCAzICogdS5hcmNzZWMpKQotKwotKyAgICBhc3Nl cnRfYWxsY2xvc2UocGhvdG9tZXRyeV9za3ljb29yZF9jaXJjX2FublsnYXBlcnR1cmVfc3VtJ11b Ml0sCi0rICAgICAgICAgICAgICAgICAgICBwaG90b21ldHJ5X3NreWNvb3JkX2NpcmNfYW5uX3Nb J2FwZXJ0dXJlX3N1bSddKQotKwotKyAgICBhc3NlcnRfYWxsY2xvc2UocGhvdG9tZXRyeV9za3lj b29yZF9jaXJjX2FublsnYXBlcnR1cmVfc3VtJ10sCi0rICAgICAgICAgICAgICAgICAgICBwaG90 b21ldHJ5X3NreWNvb3JkX2NpcmNbJ2FwZXJ0dXJlX3N1bSddIC0KLSsgICAgICAgICAgICAgICAg ICAgIHBob3RvbWV0cnlfc2t5Y29vcmRfY2lyY18yWydhcGVydHVyZV9zdW0nXSkKLSsKLSsgICAg cGhvdG9tZXRyeV9za3ljb29yZF9lbGwgPSBhcGVydHVyZV9waG90b21ldHJ5KAotKyAgICAgICAg aGR1LCBTa3lFbGxpcHRpY2FsQXBlcnR1cmUocG9zX3NreWNvb3JkLCAzICogdS5hcmNzZWMsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzLjAwMDEgKiB1LmFyY3NlYywgNDUg KiB1LmFyY3NlYykpCi0rICAgIHBob3RvbWV0cnlfc2t5Y29vcmRfZWxsXzIgPSBhcGVydHVyZV9w aG90b21ldHJ5KAotKyAgICAgICAgaGR1LCBTa3lFbGxpcHRpY2FsQXBlcnR1cmUocG9zX3NreWNv b3JkLCAyICogdS5hcmNzZWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAy LjAwMDEgKiB1LmFyY3NlYywgNDUgKiB1LmFyY3NlYykpCi0rICAgIHBob3RvbWV0cnlfc2t5Y29v cmRfZWxsX3MgPSBhcGVydHVyZV9waG90b21ldHJ5KAotKyAgICAgICAgaGR1LCBTa3lFbGxpcHRp Y2FsQXBlcnR1cmUocG9zX3NreWNvb3JkX3MsIDMgKiB1LmFyY3NlYywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDMuMDAwMSAqIHUuYXJjc2VjLCA0NSAqIHUuYXJjc2VjKSkK LSsgICAgcGhvdG9tZXRyeV9za3ljb29yZF9lbGxfYW5uID0gYXBlcnR1cmVfcGhvdG9tZXRyeSgK LSsgICAgICAgIGhkdSwgU2t5RWxsaXB0aWNhbEFubnVsdXMocG9zX3NreWNvb3JkLCAyICogdS5h cmNzZWMsIDMgKiB1LmFyY3NlYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg My4wMDAxICogdS5hcmNzZWMsIDQ1ICogdS5hcmNzZWMpKQotKyAgICBwaG90b21ldHJ5X3NreWNv b3JkX2VsbF9hbm5fcyA9IGFwZXJ0dXJlX3Bob3RvbWV0cnkoCi0rICAgICAgICBoZHUsIFNreUVs bGlwdGljYWxBbm51bHVzKHBvc19za3ljb29yZF9zLCAyICogdS5hcmNzZWMsIDMgKiB1LmFyY3Nl YywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMy4wMDAxICogdS5hcmNzZWMs IDQ1ICogdS5hcmNzZWMpKQotKwotKyAgICBhc3NlcnRfYWxsY2xvc2UocGhvdG9tZXRyeV9za3lj b29yZF9lbGxbJ2FwZXJ0dXJlX3N1bSddWzJdLAotKyAgICAgICAgICAgICAgICAgICAgcGhvdG9t ZXRyeV9za3ljb29yZF9lbGxfc1snYXBlcnR1cmVfc3VtJ10pCi0rCi0rICAgIGFzc2VydF9hbGxj bG9zZShwaG90b21ldHJ5X3NreWNvb3JkX2VsbF9hbm5bJ2FwZXJ0dXJlX3N1bSddWzJdLAotKyAg ICAgICAgICAgICAgICAgICAgcGhvdG9tZXRyeV9za3ljb29yZF9lbGxfYW5uX3NbJ2FwZXJ0dXJl X3N1bSddKQotKwotKyAgICBhc3NlcnRfYWxsY2xvc2UocGhvdG9tZXRyeV9za3ljb29yZF9lbGxb J2FwZXJ0dXJlX3N1bSddLAotKyAgICAgICAgICAgICAgICAgICAgcGhvdG9tZXRyeV9za3ljb29y ZF9jaXJjWydhcGVydHVyZV9zdW0nXSwgcnRvbD01ZS0zKQotKwotKyAgICBhc3NlcnRfYWxsY2xv c2UocGhvdG9tZXRyeV9za3ljb29yZF9lbGxfYW5uWydhcGVydHVyZV9zdW0nXSwKLSsgICAgICAg ICAgICAgICAgICAgIHBob3RvbWV0cnlfc2t5Y29vcmRfZWxsWydhcGVydHVyZV9zdW0nXSAtCi0r ICAgICAgICAgICAgICAgICAgICBwaG90b21ldHJ5X3NreWNvb3JkX2VsbF8yWydhcGVydHVyZV9z dW0nXSwgcnRvbD0xZS00KQotKwotKyAgICBwaG90b21ldHJ5X3NreWNvb3JkX3JlYyA9IGFwZXJ0 dXJlX3Bob3RvbWV0cnkoCi0rICAgICAgICBoZHUsIFNreVJlY3Rhbmd1bGFyQXBlcnR1cmUocG9z X3NreWNvb3JkLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgKiB1LmFy Y3NlYywgNiAqIHUuYXJjc2VjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDAgKiB1LmFyY3NlYyksCi0rICAgICAgICBtZXRob2Q9J3N1YnBpeGVsJywgc3VicGl4ZWxzPTIw KQotKyAgICBwaG90b21ldHJ5X3NreWNvb3JkX3JlY180ID0gYXBlcnR1cmVfcGhvdG9tZXRyeSgK LSsgICAgICAgIGhkdSwgU2t5UmVjdGFuZ3VsYXJBcGVydHVyZShwb3Nfc2t5Y29vcmQsCi0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNCAqIHUuYXJjc2VjLCA0ICogdS5hcmNz ZWMsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCAqIHUuYXJjc2VjKSwK LSsgICAgICAgIG1ldGhvZD0nc3VicGl4ZWwnLCBzdWJwaXhlbHM9MjApCi0rICAgIHBob3RvbWV0 cnlfc2t5Y29vcmRfcmVjX3MgPSBhcGVydHVyZV9waG90b21ldHJ5KAotKyAgICAgICAgaGR1LCBT a3lSZWN0YW5ndWxhckFwZXJ0dXJlKHBvc19za3ljb29yZF9zLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDYgKiB1LmFyY3NlYywgNiAqIHUuYXJjc2VjLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAgKiB1LmFyY3NlYyksCi0rICAgICAgICBtZXRo b2Q9J3N1YnBpeGVsJywgc3VicGl4ZWxzPTIwKQotKyAgICBwaG90b21ldHJ5X3NreWNvb3JkX3Jl Y19hbm4gPSBhcGVydHVyZV9waG90b21ldHJ5KAotKyAgICAgICAgaGR1LCBTa3lSZWN0YW5ndWxh ckFubnVsdXMocG9zX3NreWNvb3JkLCA0ICogdS5hcmNzZWMsIDYgKiB1LmFyY3NlYywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgKiB1LmFyY3NlYywgMCAqIHUuYXJjc2Vj KSwKLSsgICAgICAgIG1ldGhvZD0nc3VicGl4ZWwnLCBzdWJwaXhlbHM9MjApCi0rICAgIHBob3Rv bWV0cnlfc2t5Y29vcmRfcmVjX2Fubl9zID0gYXBlcnR1cmVfcGhvdG9tZXRyeSgKLSsgICAgICAg IGhkdSwgU2t5UmVjdGFuZ3VsYXJBbm51bHVzKHBvc19za3ljb29yZF9zLCA0ICogdS5hcmNzZWMs IDYgKiB1LmFyY3NlYywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYgKiB1 LmFyY3NlYywgMCAqIHUuYXJjc2VjKSwKLSsgICAgICAgIG1ldGhvZD0nc3VicGl4ZWwnLCBzdWJw aXhlbHM9MjApCi0rCi0rICAgIGFzc2VydF9hbGxjbG9zZShwaG90b21ldHJ5X3NreWNvb3JkX3Jl Y1snYXBlcnR1cmVfc3VtJ11bMl0sCi0rICAgICAgICAgICAgICAgICAgICBwaG90b21ldHJ5X3Nr eWNvb3JkX3JlY19zWydhcGVydHVyZV9zdW0nXSkKLSsKLSsgICAgYXNzZXJ0IG5wLmFsbChwaG90 b21ldHJ5X3NreWNvb3JkX3JlY1snYXBlcnR1cmVfc3VtJ10gPgotKyAgICAgICAgICAgICAgICAg IHBob3RvbWV0cnlfc2t5Y29vcmRfY2lyY1snYXBlcnR1cmVfc3VtJ10pCi0rCi0rICAgIGFzc2Vy dF9hbGxjbG9zZShwaG90b21ldHJ5X3NreWNvb3JkX3JlY19hbm5bJ2FwZXJ0dXJlX3N1bSddWzJd LAotKyAgICAgICAgICAgICAgICAgICAgcGhvdG9tZXRyeV9za3ljb29yZF9yZWNfYW5uX3NbJ2Fw ZXJ0dXJlX3N1bSddKQotKwotKyAgICBhc3NlcnRfYWxsY2xvc2UocGhvdG9tZXRyeV9za3ljb29y ZF9yZWNfYW5uWydhcGVydHVyZV9zdW0nXSwKLSsgICAgICAgICAgICAgICAgICAgIHBob3RvbWV0 cnlfc2t5Y29vcmRfcmVjWydhcGVydHVyZV9zdW0nXSAtCi0rICAgICAgICAgICAgICAgICAgICBw aG90b21ldHJ5X3NreWNvb3JkX3JlY180WydhcGVydHVyZV9zdW0nXSwgcnRvbD0xZS00KQotKwot KwotK2RlZiB0ZXN0X2Jhc2ljX2NpcmN1bGFyX2FwZXJ0dXJlX3Bob3RvbWV0cnlfdW5pdCgpOgot KyAgICBkYXRhMSA9IG5wLm9uZXMoKDQwLCA0MCksIGR0eXBlPW5wLmZsb2F0KQotKyAgICBkYXRh MiA9IHUuUXVhbnRpdHkoZGF0YTEsIHVuaXQ9dS5hZHUpCi0rCi0rICAgIHJhZGl1cyA9IDMKLSsg ICAgcG9zaXRpb24gPSAoMjAsIDIwKQotKyAgICB0cnVlX2ZsdXggPSBucC5waSAqIHJhZGl1cyAq IHJhZGl1cwotKyAgICB1bml0ID0gdS5hZHUKLSsKLSsgICAgdGFibGUxID0gYXBlcnR1cmVfcGhv dG9tZXRyeShkYXRhMSwgQ2lyY3VsYXJBcGVydHVyZShwb3NpdGlvbiwgcmFkaXVzKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0PXVuaXQpCi0rICAgIHRhYmxlMiA9IGFw ZXJ0dXJlX3Bob3RvbWV0cnkoZGF0YTIsIENpcmN1bGFyQXBlcnR1cmUocG9zaXRpb24sIHJhZGl1 cyksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdD11bml0KQotKwotKyAg ICBhc3NlcnRfYWxsY2xvc2UodGFibGUxWydhcGVydHVyZV9zdW0nXS52YWx1ZSwgdHJ1ZV9mbHV4 KQotKyAgICBhc3NlcnRfYWxsY2xvc2UodGFibGUyWydhcGVydHVyZV9zdW0nXS52YWx1ZSwgdHJ1 ZV9mbHV4KQotKyAgICBhc3NlcnQgdGFibGUxWydhcGVydHVyZV9zdW0nXS51bml0ID09IHVuaXQK LSsgICAgYXNzZXJ0IHRhYmxlMlsnYXBlcnR1cmVfc3VtJ10udW5pdCA9PSBkYXRhMi51bml0ID09 IHVuaXQKLSsKLSsKLStkZWYgdGVzdF9hcGVydHVyZV9waG90b21ldHJ5X3dpdGhfZXJyb3JfdW5p dHMoKToKLSsgICAgIiIiVGVzdCBhcGVydHVyZV9waG90b21ldHJ5IHdoZW4gZXJyb3IgaGFzIHVu aXRzIChzZWUgIzE3NikuIiIiCi0rCi0rICAgIGRhdGExID0gbnAub25lcygoNDAsIDQwKSwgZHR5 cGU9bnAuZmxvYXQpCi0rICAgIGRhdGEyID0gdS5RdWFudGl0eShkYXRhMSwgdW5pdD11LmFkdSkK LSsgICAgZXJyb3IgPSB1LlF1YW50aXR5KGRhdGExLCB1bml0PXUuYWR1KQotKyAgICByYWRpdXMg PSAzCi0rICAgIHRydWVfZmx1eCA9IG5wLnBpICogcmFkaXVzICogcmFkaXVzCi0rICAgIHVuaXQg PSB1LmFkdQotKyAgICBwb3NpdGlvbiA9ICgyMCwgMjApCi0rICAgIHRhYmxlMSA9IGFwZXJ0dXJl X3Bob3RvbWV0cnkoZGF0YTIsIENpcmN1bGFyQXBlcnR1cmUocG9zaXRpb24sIHJhZGl1cyksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I9ZXJyb3IpCi0rICAgIGFzc2Vy dF9hbGxjbG9zZSh0YWJsZTFbJ2FwZXJ0dXJlX3N1bSddLnZhbHVlLCB0cnVlX2ZsdXgpCi0rICAg IGFzc2VydF9hbGxjbG9zZSh0YWJsZTFbJ2FwZXJ0dXJlX3N1bV9lcnInXS52YWx1ZSwgbnAuc3Fy dCh0cnVlX2ZsdXgpKQotKyAgICBhc3NlcnQgdGFibGUxWydhcGVydHVyZV9zdW0nXS51bml0ID09 IHVuaXQKLSsgICAgYXNzZXJ0IHRhYmxlMVsnYXBlcnR1cmVfc3VtX2VyciddLnVuaXQgPT0gdW5p dAotKwotKwotK2RlZiB0ZXN0X2FwZXJ0dXJlX3Bob3RvbWV0cnlfaW5wdXRzX3dpdGhfbWFzaygp OgotKyAgICAiIiIKLSsgICAgVGVzdCB0aGF0IGFwZXJ0dXJlX3Bob3RvbWV0cnkgZG9lcyBub3Qg bW9kaWZ5IHRoZSBpbnB1dAotKyAgICBkYXRhIG9yIGVycm9yIGFycmF5IHdoZW4gYSBtYXNrIGlz IGlucHV0LgotKyAgICAiIiIKLSsKLSsgICAgZGF0YSA9IG5wLm9uZXMoKDUsIDUpKQotKyAgICBh cGVydHVyZSA9IENpcmN1bGFyQXBlcnR1cmUoKDIsIDIpLCAyLikKLSsgICAgbWFzayA9IG5wLnpl cm9zX2xpa2UoZGF0YSwgZHR5cGU9Ym9vbCkKLSsgICAgZGF0YVsyLCAyXSA9IDEwMC4gICAjIGJh ZCBwaXhlbAotKyAgICBtYXNrWzIsIDJdID0gVHJ1ZQotKyAgICBlcnJvciA9IG5wLnNxcnQoZGF0 YSkKLSsgICAgZGF0YV9pbiA9IGRhdGEuY29weSgpCi0rICAgIGVycm9yX2luID0gZXJyb3IuY29w eSgpCi0rICAgIHQxID0gYXBlcnR1cmVfcGhvdG9tZXRyeShkYXRhLCBhcGVydHVyZSwgZXJyb3I9 ZXJyb3IsIG1hc2s9bWFzaykKLSsgICAgYXNzZXJ0X2FycmF5X2VxdWFsKGRhdGEsIGRhdGFfaW4p Ci0rICAgIGFzc2VydF9hcnJheV9lcXVhbChlcnJvciwgZXJyb3JfaW4pCi0rICAgIGFzc2VydF9h bGxjbG9zZSh0MVsnYXBlcnR1cmVfc3VtJ11bMF0sIDExLjU2NjM3MDYxNDQpCi0rICAgIHQyID0g YXBlcnR1cmVfcGhvdG9tZXRyeShkYXRhLCBhcGVydHVyZSkKLSsgICAgYXNzZXJ0X2FsbGNsb3Nl KHQyWydhcGVydHVyZV9zdW0nXVswXSwgMTExLjU2NjM3MDYxNCkKLSsKLSsKLStURVNUX0VMTElQ U0VfRVhBQ1RfQVBFUlRVUkVTID0gWygzLjQ2OTkwNiwgMy45MjM4NjEzOTQsIDMuKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLjM4MzQ0MTUxODgyNTc3NzgsIDAuMzgzNDQx NTE4ODI1Nzc3OCwgMC4zKV0KLSsKLSsKLStAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoJ3gseSxy JywgVEVTVF9FTExJUFNFX0VYQUNUX0FQRVJUVVJFUykKLStkZWYgdGVzdF9lbGxpcHNlX2V4YWN0 X2dyaWQoeCwgeSwgcik6Ci0rICAgICIiIgotKyAgICBUZXN0IGVsbGlwdGljYWwgZXhhY3QgYXBl cnR1cmUgcGhvdG9tZXRyeSBvbiBhIGdyaWQgb2YgcGl4ZWwgcG9zaXRpb25zLgotKwotKyAgICBU aGlzIGlzIGEgcmVncmVzc2lvbiB0ZXN0IGZvciB0aGUgYnVnIGRpc2NvdmVyZWQgaW4gdGhpcyBp c3N1ZToKLSsgICAgaHR0cHM6Ly9naXRodWIuY29tL2FzdHJvcHkvcGhvdHV0aWxzL2lzc3Vlcy8x OTgKLSsgICAgIiIiCi0rCi0rICAgIGRhdGEgPSBucC5vbmVzKCgxMCwgMTApKQotKwotKyAgICBh cGVydHVyZSA9IEVsbGlwdGljYWxBcGVydHVyZSgoeCwgeSksIHIsIHIsIDAuKQotKyAgICB0ID0g YXBlcnR1cmVfcGhvdG9tZXRyeShkYXRhLCBhcGVydHVyZSwgbWV0aG9kPSdleGFjdCcpCi0rICAg IGFjdHVhbCA9IHRbJ2FwZXJ0dXJlX3N1bSddWzBdIC8gKG5wLnBpICogciAqKiAyKQotKyAgICBh c3NlcnRfYWxsY2xvc2UoYWN0dWFsLCAxKQotKwotKwotK0BweXRlc3QubWFyay5wYXJhbWV0cml6 ZSgndmFsdWUnLCBbbnAubmFuLCBucC5pbmZdKQotK2RlZiB0ZXN0X25hbl9pbmZfbWFzayh2YWx1 ZSk6Ci0rICAgICIiIlRlc3QgdGhhdCBuYW5zIGFuZCBpbmZzIGFyZSBwcm9wZXJseSBtYXNrZWQg WzI2N10uIiIiCi0rCi0rICAgIGRhdGEgPSBucC5vbmVzKCg5LCA5KSkKLSsgICAgbWFzayA9IG5w Lnplcm9zX2xpa2UoZGF0YSwgZHR5cGU9Ym9vbCkKLSsgICAgZGF0YVs0LCA0XSA9IHZhbHVlCi0r ICAgIG1hc2tbNCwgNF0gPSBUcnVlCi0rICAgIHJhZGl1cyA9IDIuCi0rICAgIGFwZXIgPSBDaXJj dWxhckFwZXJ0dXJlKCg0LCA0KSwgcmFkaXVzKQotKyAgICB0YmwgPSBhcGVydHVyZV9waG90b21l dHJ5KGRhdGEsIGFwZXIsIG1hc2s9bWFzaykKLSsgICAgZGVzaXJlZCA9IChucC5waSAqIHJhZGl1 cyoqMikgLSAxCi0rICAgIGFzc2VydF9hbGxjbG9zZSh0YmxbJ2FwZXJ0dXJlX3N1bSddLCBkZXNp cmVkKQotKwotKwotK2RlZiB0ZXN0X2FwZXJ0dXJlX3BhcnRpYWxfb3ZlcmxhcCgpOgotKyAgICBk YXRhID0gbnAub25lcygoMjAsIDIwKSkKLSsgICAgZXJyb3IgPSBucC5vbmVzKCgyMCwgMjApKQot KyAgICB4eXBvcyA9IFsoMTAsIDEwKSwgKDAsIDApLCAoMCwgMTkpLCAoMTksIDApLCAoMTksIDE5 KV0KLSsgICAgciA9IDUuCi0rICAgIGFwZXIgPSBDaXJjdWxhckFwZXJ0dXJlKHh5cG9zLCByPXIp Ci0rICAgIHRibCA9IGFwZXJ0dXJlX3Bob3RvbWV0cnkoZGF0YSwgYXBlciwgZXJyb3I9ZXJyb3Ip Ci0rICAgIGFzc2VydF9hbGxjbG9zZSh0YmxbJ2FwZXJ0dXJlX3N1bSddWzBdLCBucC5waSAqIHIg KiogMikKLSsgICAgYXNzZXJ0X2FycmF5X2xlc3ModGJsWydhcGVydHVyZV9zdW0nXVsxOl0sIG5w LnBpICogciAqKiAyKQotKwotKyAgICB1bml0ID0gdS5NSnkgLyB1LnNyCi0rICAgIHRibCA9IGFw ZXJ0dXJlX3Bob3RvbWV0cnkoZGF0YSAqIHVuaXQsIGFwZXIsIGVycm9yPWVycm9yICogdW5pdCkK LSsgICAgYXNzZXJ0X2FsbGNsb3NlKHRibFsnYXBlcnR1cmVfc3VtJ11bMF0udmFsdWUsIG5wLnBp ICogciAqKiAyKQotKyAgICBhc3NlcnRfYXJyYXlfbGVzcyh0YmxbJ2FwZXJ0dXJlX3N1bSddWzE6 XS52YWx1ZSwgbnAucGkgKiByICoqIDIpCi0rICAgIGFzc2VydF9hcnJheV9sZXNzKHRibFsnYXBl cnR1cmVfc3VtX2VyciddWzE6XS52YWx1ZSwgbnAucGkgKiByICoqIDIpCi0rICAgIGFzc2VydCB0 YmxbJ2FwZXJ0dXJlX3N1bSddLnVuaXQgPT0gdW5pdAotKyAgICBhc3NlcnQgdGJsWydhcGVydHVy ZV9zdW1fZXJyJ10udW5pdCA9PSB1bml0Ci0rCi0rCi0rZGVmIHRlc3RfcGl4ZWxfYXBlcnR1cmVf cmVwcigpOgotKyAgICBhcGVyID0gQ2lyY3VsYXJBcGVydHVyZSgoMTAsIDIwKSwgcj0zLjApCi0r ICAgIGFfcmVwciA9ICc8Q2lyY3VsYXJBcGVydHVyZShbWzEwLCAyMF1dLCByPTMuMCk+JwotKyAg ICBhX3N0ciA9ICdBcGVydHVyZTogQ2lyY3VsYXJBcGVydHVyZVxucG9zaXRpb25zOiBbWzEwLCAy MF1dXG5yOiAzLjAnCi0rICAgIGFzc2VydCByZXByKGFwZXIpID09IGFfcmVwcgotKyAgICBhc3Nl cnQgc3RyKGFwZXIpID09IGFfc3RyCi0rCi0rICAgIGFwZXIgPSBDaXJjdWxhckFubnVsdXMoKDEw LCAyMCksIHJfaW49My4wLCByX291dD01LjApCi0rICAgIGFfcmVwciA9ICc8Q2lyY3VsYXJBbm51 bHVzKFtbMTAsIDIwXV0sIHJfaW49My4wLCByX291dD01LjApPicKLSsgICAgYV9zdHIgPSAoJ0Fw ZXJ0dXJlOiBDaXJjdWxhckFubnVsdXNcbnBvc2l0aW9uczogW1sxMCwgMjBdXVxucl9pbjogMy4w XG4nCi0rICAgICAgICAgICAgICdyX291dDogNS4wJykKLSsgICAgYXNzZXJ0IHJlcHIoYXBlcikg PT0gYV9yZXByCi0rICAgIGFzc2VydCBzdHIoYXBlcikgPT0gYV9zdHIKLSsKLSsgICAgYXBlciA9 IEVsbGlwdGljYWxBcGVydHVyZSgoMTAsIDIwKSwgYT01LjAsIGI9My4wLCB0aGV0YT0xNS4wKQot KyAgICBhX3JlcHIgPSAnPEVsbGlwdGljYWxBcGVydHVyZShbWzEwLCAyMF1dLCBhPTUuMCwgYj0z LjAsIHRoZXRhPTE1LjApPicKLSsgICAgYV9zdHIgPSAoJ0FwZXJ0dXJlOiBFbGxpcHRpY2FsQXBl cnR1cmVcbnBvc2l0aW9uczogW1sxMCwgMjBdXVxuJwotKyAgICAgICAgICAgICAnYTogNS4wXG5i OiAzLjBcbnRoZXRhOiAxNS4wJykKLSsgICAgYXNzZXJ0IHJlcHIoYXBlcikgPT0gYV9yZXByCi0r ICAgIGFzc2VydCBzdHIoYXBlcikgPT0gYV9zdHIKLSsKLSsgICAgYXBlciA9IEVsbGlwdGljYWxB bm51bHVzKCgxMCwgMjApLCBhX2luPTQuMCwgYV9vdXQ9OC4wLCBiX291dD00LjAsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB0aGV0YT0xNS4wKQotKyAgICBhX3JlcHIgPSAoJzxFbGxp cHRpY2FsQW5udWx1cyhbWzEwLCAyMF1dLCBhX2luPTQuMCwgYV9vdXQ9OC4wLCBiX291dD0nCi0r ICAgICAgICAgICAgICAnNC4wLCB0aGV0YT0xNS4wKT4nKQotKyAgICBhX3N0ciA9ICgnQXBlcnR1 cmU6IEVsbGlwdGljYWxBbm51bHVzXG5wb3NpdGlvbnM6IFtbMTAsIDIwXV1cbmFfaW46ICcKLSsg ICAgICAgICAgICAgJzQuMFxuYV9vdXQ6IDguMFxuYl9vdXQ6IDQuMFxudGhldGE6IDE1LjAnKQot KyAgICBhc3NlcnQgcmVwcihhcGVyKSA9PSBhX3JlcHIKLSsgICAgYXNzZXJ0IHN0cihhcGVyKSA9 PSBhX3N0cgotKwotKyAgICBhcGVyID0gUmVjdGFuZ3VsYXJBcGVydHVyZSgoMTAsIDIwKSwgdz01 LjAsIGg9My4wLCB0aGV0YT0xNS4wKQotKyAgICBhX3JlcHIgPSAnPFJlY3Rhbmd1bGFyQXBlcnR1 cmUoW1sxMCwgMjBdXSwgdz01LjAsIGg9My4wLCB0aGV0YT0xNS4wKT4nCi0rICAgIGFfc3RyID0g KCdBcGVydHVyZTogUmVjdGFuZ3VsYXJBcGVydHVyZVxucG9zaXRpb25zOiBbWzEwLCAyMF1dXG4n Ci0rICAgICAgICAgICAgICd3OiA1LjBcbmg6IDMuMFxudGhldGE6IDE1LjAnKQotKyAgICBhc3Nl cnQgcmVwcihhcGVyKSA9PSBhX3JlcHIKLSsgICAgYXNzZXJ0IHN0cihhcGVyKSA9PSBhX3N0cgot KwotKyAgICBhcGVyID0gUmVjdGFuZ3VsYXJBbm51bHVzKCgxMCwgMjApLCB3X2luPTQuMCwgd19v dXQ9OC4wLCBoX291dD00LjAsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhldGE9 MTUuMCkKLSsgICAgYV9yZXByID0gKCc8UmVjdGFuZ3VsYXJBbm51bHVzKFtbMTAsIDIwXV0sIHdf aW49NC4wLCB3X291dD04LjAsICcKLSsgICAgICAgICAgICAgICdoX291dD00LjAsIHRoZXRhPTE1 LjApPicpCi0rICAgIGFfc3RyID0gKCdBcGVydHVyZTogUmVjdGFuZ3VsYXJBbm51bHVzXG5wb3Np dGlvbnM6IFtbMTAsIDIwXV1cbicKLSsgICAgICAgICAgICAgJ3dfaW46IDQuMFxud19vdXQ6IDgu MFxuaF9vdXQ6IDQuMFxudGhldGE6IDE1LjAnKQotKyAgICBhc3NlcnQgcmVwcihhcGVyKSA9PSBh X3JlcHIKLSsgICAgYXNzZXJ0IHN0cihhcGVyKSA9PSBhX3N0cgotKwotKwotK2RlZiB0ZXN0X3Nr eV9hcGVydHVyZV9yZXByKCk6Ci0rICAgIHMgPSBTa3lDb29yZChbMSwgMl0sIFszLCA0XSwgdW5p dD0nZGVnJykKLSsKLSsgICAgYXBlciA9IFNreUNpcmN1bGFyQXBlcnR1cmUocywgcj0zKnUucGl4 KQotKyAgICBhX3JlcHIgPSAoJzxTa3lDaXJjdWxhckFwZXJ0dXJlKDxTa3lDb29yZCAoSUNSUyk6 IChyYSwgZGVjKSBpbiBkZWdcbicKLSsgICAgICAgICAgICAgICcgICAgWyggMS4sICAzLiksICgg Mi4sICA0LildPiwgcj0zLjAgcGl4KT4nKQotKyAgICBhX3N0ciA9ICgnQXBlcnR1cmU6IFNreUNp cmN1bGFyQXBlcnR1cmVcbnBvc2l0aW9uczogPFNreUNvb3JkICcKLSsgICAgICAgICAgICAgJyhJ Q1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT5cbicK LSsgICAgICAgICAgICAgJ3I6IDMuMCBwaXgnKQotKyAgICBhc3NlcnQgcmVwcihhcGVyKSA9PSBh X3JlcHIKLSsgICAgYXNzZXJ0IHN0cihhcGVyKSA9PSBhX3N0cgotKwotKyAgICBhcGVyID0gU2t5 Q2lyY3VsYXJBbm51bHVzKHMsIHJfaW49My4qdS5waXgsIHJfb3V0PTUqdS5waXgpCi0rICAgIGFf cmVwciA9ICgnPFNreUNpcmN1bGFyQW5udWx1cyg8U2t5Q29vcmQgKElDUlMpOiAocmEsIGRlYykg aW4gZGVnXG4nCi0rICAgICAgICAgICAgICAnICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT4s IHJfaW49My4wIHBpeCwgcl9vdXQ9NS4wIHBpeCk+JykKLSsgICAgYV9zdHIgPSAoJ0FwZXJ0dXJl OiBTa3lDaXJjdWxhckFubnVsdXNcbnBvc2l0aW9uczogPFNreUNvb3JkICcKLSsgICAgICAgICAg ICAgJyhJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4p XT5cbicKLSsgICAgICAgICAgICAgJ3JfaW46IDMuMCBwaXhcbnJfb3V0OiA1LjAgcGl4JykKLSsg ICAgYXNzZXJ0IHJlcHIoYXBlcikgPT0gYV9yZXByCi0rICAgIGFzc2VydCBzdHIoYXBlcikgPT0g YV9zdHIKLSsKLSsgICAgYXBlciA9IFNreUVsbGlwdGljYWxBcGVydHVyZShzLCBhPTMqdS5waXgs IGI9NSp1LnBpeCwgdGhldGE9MTUqdS5kZWcpCi0rICAgIGFfcmVwciA9ICgnPFNreUVsbGlwdGlj YWxBcGVydHVyZSg8U2t5Q29vcmQgKElDUlMpOiAocmEsIGRlYykgaW4gJwotKyAgICAgICAgICAg ICAgJ2RlZ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT4sIGE9My4wIHBpeCwgYj01LjAg cGl4LCcKLSsgICAgICAgICAgICAgICcgdGhldGE9MTUuMCBkZWcpPicpCi0rICAgIGFfc3RyID0g KCdBcGVydHVyZTogU2t5RWxsaXB0aWNhbEFwZXJ0dXJlXG5wb3NpdGlvbnM6IDxTa3lDb29yZCAn Ci0rICAgICAgICAgICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWdcbiAgICBbKCAxLiwgIDMu KSwgKCAyLiwgIDQuKV0+XG4nCi0rICAgICAgICAgICAgICdhOiAzLjAgcGl4XG5iOiA1LjAgcGl4 XG50aGV0YTogMTUuMCBkZWcnKQotKyAgICBhc3NlcnQgcmVwcihhcGVyKSA9PSBhX3JlcHIKLSsg ICAgYXNzZXJ0IHN0cihhcGVyKSA9PSBhX3N0cgotKwotKyAgICBhcGVyID0gU2t5RWxsaXB0aWNh bEFubnVsdXMocywgYV9pbj0zKnUucGl4LCBhX291dD01KnUucGl4LCBiX291dD0zKnUucGl4LAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhldGE9MTUqdS5kZWcpCi0rICAgIGFf cmVwciA9ICgnPFNreUVsbGlwdGljYWxBbm51bHVzKDxTa3lDb29yZCAoSUNSUyk6IChyYSwgZGVj KSBpbiAnCi0rICAgICAgICAgICAgICAnZGVnXG4gICAgWyggMS4sICAzLiksICggMi4sICA0Lild PiwgYV9pbj0zLjAgcGl4LCAnCi0rICAgICAgICAgICAgICAnYV9vdXQ9NS4wIHBpeCwgYl9vdXQ9 My4wIHBpeCwgdGhldGE9MTUuMCBkZWcpPicpCi0rICAgIGFfc3RyID0gKCdBcGVydHVyZTogU2t5 RWxsaXB0aWNhbEFubnVsdXNcbnBvc2l0aW9uczogPFNreUNvb3JkICcKLSsgICAgICAgICAgICAg JyhJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT5c bicKLSsgICAgICAgICAgICAgJ2FfaW46IDMuMCBwaXhcbmFfb3V0OiA1LjAgcGl4XG5iX291dDog My4wIHBpeFxuJwotKyAgICAgICAgICAgICAndGhldGE6IDE1LjAgZGVnJykKLSsgICAgYXNzZXJ0 IHJlcHIoYXBlcikgPT0gYV9yZXByCi0rICAgIGFzc2VydCBzdHIoYXBlcikgPT0gYV9zdHIKLSsK LSsgICAgYXBlciA9IFNreVJlY3Rhbmd1bGFyQXBlcnR1cmUocywgdz0zKnUucGl4LCBoPTUqdS5w aXgsIHRoZXRhPTE1KnUuZGVnKQotKyAgICBhX3JlcHIgPSAoJzxTa3lSZWN0YW5ndWxhckFwZXJ0 dXJlKDxTa3lDb29yZCAoSUNSUyk6IChyYSwgZGVjKSBpbiAnCi0rICAgICAgICAgICAgICAnZGVn XG4gICAgWyggMS4sICAzLiksICggMi4sICA0LildPiwgdz0zLjAgcGl4LCBoPTUuMCBwaXgnCi0r ICAgICAgICAgICAgICAnLCB0aGV0YT0xNS4wIGRlZyk+JykKLSsgICAgYV9zdHIgPSAoJ0FwZXJ0 dXJlOiBTa3lSZWN0YW5ndWxhckFwZXJ0dXJlXG5wb3NpdGlvbnM6IDxTa3lDb29yZCAnCi0rICAg ICAgICAgICAgICcoSUNSUyk6IChyYSwgZGVjKSBpbiBkZWdcbiAgICBbKCAxLiwgIDMuKSwgKCAy LiwgIDQuKV0+XG4nCi0rICAgICAgICAgICAgICd3OiAzLjAgcGl4XG5oOiA1LjAgcGl4XG50aGV0 YTogMTUuMCBkZWcnKQotKyAgICBhc3NlcnQgcmVwcihhcGVyKSA9PSBhX3JlcHIKLSsgICAgYXNz ZXJ0IHN0cihhcGVyKSA9PSBhX3N0cgotKwotKyAgICBhcGVyID0gU2t5UmVjdGFuZ3VsYXJBbm51 bHVzKHMsIHdfaW49Myp1LnBpeCwgd19vdXQ9My40KnUucGl4LAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhfb3V0PTUqdS5waXgsIHRoZXRhPTE1KnUuZGVnKQotKyAgICBhX3Jl cHIgPSAoJzxTa3lSZWN0YW5ndWxhckFubnVsdXMoPFNreUNvb3JkIChJQ1JTKTogKHJhLCBkZWMp IGluIGRlZycKLSsgICAgICAgICAgICAgICdcbiAgICBbKCAxLiwgIDMuKSwgKCAyLiwgIDQuKV0+ LCB3X2luPTMuMCBwaXgsICcKLSsgICAgICAgICAgICAgICd3X291dD0zLjQgcGl4LCBoX291dD01 LjAgcGl4LCB0aGV0YT0xNS4wIGRlZyk+JykKLSsgICAgYV9zdHIgPSAoJ0FwZXJ0dXJlOiBTa3lS ZWN0YW5ndWxhckFubnVsdXNcbnBvc2l0aW9uczogPFNreUNvb3JkICcKLSsgICAgICAgICAgICAg JyhJQ1JTKTogKHJhLCBkZWMpIGluIGRlZ1xuICAgIFsoIDEuLCAgMy4pLCAoIDIuLCAgNC4pXT5c bicKLSsgICAgICAgICAgICAgJ3dfaW46IDMuMCBwaXhcbndfb3V0OiAzLjQgcGl4XG5oX291dDog NS4wIHBpeFxuJwotKyAgICAgICAgICAgICAndGhldGE6IDE1LjAgZGVnJykKLSsgICAgYXNzZXJ0 IHJlcHIoYXBlcikgPT0gYV9yZXByCi0rICAgIGFzc2VydCBzdHIoYXBlcikgPT0gYV9zdHIKLSsK LSsKLStkZWYgdGVzdF9yZWN0YW5ndWxhcl9iYm94KCk6Ci0rICAgICMgb2RkIHNpemVzCi0rICAg IHdpZHRoID0gNwotKyAgICBoZWlnaHQgPSAzCi0rICAgIGEgPSBSZWN0YW5ndWxhckFwZXJ0dXJl KCg1MCwgNTApLCB3PXdpZHRoLCBoPWhlaWdodCwgdGhldGE9MCkKLSsgICAgYXNzZXJ0IGEuYm91 bmRpbmdfYm94ZXNbMF0uc2hhcGUgPT0gKGhlaWdodCwgd2lkdGgpCi0rCi0rICAgIGEgPSBSZWN0 YW5ndWxhckFwZXJ0dXJlKCg1MC41LCA1MC41KSwgdz13aWR0aCwgaD1oZWlnaHQsIHRoZXRhPTAp Ci0rICAgIGFzc2VydCBhLmJvdW5kaW5nX2JveGVzWzBdLnNoYXBlID09IChoZWlnaHQgKyAxLCB3 aWR0aCArIDEpCi0rCi0rICAgIGEgPSBSZWN0YW5ndWxhckFwZXJ0dXJlKCg1MCwgNTApLCB3PXdp ZHRoLCBoPWhlaWdodCwgdGhldGE9OTAuKm5wLnBpLzE4MC4pCi0rICAgIGFzc2VydCBhLmJvdW5k aW5nX2JveGVzWzBdLnNoYXBlID09ICh3aWR0aCwgaGVpZ2h0KQotKwotKyAgICAjIGV2ZW4gc2l6 ZXMKLSsgICAgd2lkdGggPSA4Ci0rICAgIGhlaWdodCA9IDQKLSsgICAgYSA9IFJlY3Rhbmd1bGFy QXBlcnR1cmUoKDUwLCA1MCksIHc9d2lkdGgsIGg9aGVpZ2h0LCB0aGV0YT0wKQotKyAgICBhc3Nl cnQgYS5ib3VuZGluZ19ib3hlc1swXS5zaGFwZSA9PSAoaGVpZ2h0ICsgMSwgd2lkdGggKyAxKQot KwotKyAgICBhID0gUmVjdGFuZ3VsYXJBcGVydHVyZSgoNTAuNSwgNTAuNSksIHc9d2lkdGgsIGg9 aGVpZ2h0LCB0aGV0YT0wKQotKyAgICBhc3NlcnQgYS5ib3VuZGluZ19ib3hlc1swXS5zaGFwZSA9 PSAoaGVpZ2h0LCB3aWR0aCkKLSsKLSsgICAgYSA9IFJlY3Rhbmd1bGFyQXBlcnR1cmUoKDUwLjUs IDUwLjUpLCB3PXdpZHRoLCBoPWhlaWdodCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhldGE9OTAuKm5wLnBpLzE4MC4pCi0rICAgIGFzc2VydCBhLmJvdW5kaW5nX2JveGVzWzBdLnNo YXBlID09ICh3aWR0aCwgaGVpZ2h0KQotKwotKwotK2RlZiB0ZXN0X2VsbGlwdGljYWxfYmJveCgp OgotKyAgICAjIGludGVnZXIgYXhlcwotKyAgICBhID0gNwotKyAgICBiID0gMwotKyAgICBhcCA9 IEVsbGlwdGljYWxBcGVydHVyZSgoNTAsIDUwKSwgYT1hLCBiPWIsIHRoZXRhPTApCi0rICAgIGFz c2VydCBhcC5ib3VuZGluZ19ib3hlc1swXS5zaGFwZSA9PSAoMipiICsgMSwgMiphICsgMSkKLSsK LSsgICAgYXAgPSBFbGxpcHRpY2FsQXBlcnR1cmUoKDUwLjUsIDUwLjUpLCBhPWEsIGI9YiwgdGhl dGE9MCkKLSsgICAgYXNzZXJ0IGFwLmJvdW5kaW5nX2JveGVzWzBdLnNoYXBlID09ICgyKmIsIDIq YSkKLSsKLSsgICAgYXAgPSBFbGxpcHRpY2FsQXBlcnR1cmUoKDUwLCA1MCksIGE9YSwgYj1iLCB0 aGV0YT05MC4qbnAucGkvMTgwLikKLSsgICAgYXNzZXJ0IGFwLmJvdW5kaW5nX2JveGVzWzBdLnNo YXBlID09ICgyKmEgKyAxLCAyKmIgKyAxKQotKwotKyAgICAjIGZyYWN0aW9uYWwgYXhlcwotKyAg ICBhID0gNy41Ci0rICAgIGIgPSA0LjUKLSsgICAgYXAgPSBFbGxpcHRpY2FsQXBlcnR1cmUoKDUw LCA1MCksIGE9YSwgYj1iLCB0aGV0YT0wKQotKyAgICBhc3NlcnQgYXAuYm91bmRpbmdfYm94ZXNb MF0uc2hhcGUgPT0gKDIqYiwgMiphKQotKwotKyAgICBhcCA9IEVsbGlwdGljYWxBcGVydHVyZSgo NTAuNSwgNTAuNSksIGE9YSwgYj1iLCB0aGV0YT0wKQotKyAgICBhc3NlcnQgYXAuYm91bmRpbmdf Ym94ZXNbMF0uc2hhcGUgPT0gKDIqYiArIDEsIDIqYSArIDEpCi0rCi0rICAgIGFwID0gRWxsaXB0 aWNhbEFwZXJ0dXJlKCg1MCwgNTApLCBhPWEsIGI9YiwgdGhldGE9OTAuKm5wLnBpLzE4MC4pCi0r ICAgIGFzc2VydCBhcC5ib3VuZGluZ19ib3hlc1swXS5zaGFwZSA9PSAoMiphLCAyKmIpCi0rCi0r Ci0rZGVmIHRlc3RfdG9fc2t5X3BpeGVsKCk6Ci0rICAgIGRhdGEgPSBtYWtlXzRnYXVzc2lhbnNf aW1hZ2UoKQotKyAgICB3Y3MgPSBtYWtlX3djcyhkYXRhLnNoYXBlKQotKwotKyAgICBhcCA9IENp cmN1bGFyQXBlcnR1cmUoKCgxMi4zLCAxNS43KSwgKDQ4LjE5LCA5OC4xNCkpLCByPTMuMTQpCi0r ICAgIGFwMiA9IGFwLnRvX3NreSh3Y3MpLnRvX3BpeGVsKHdjcykKLSsgICAgYXNzZXJ0X2FsbGNs b3NlKGFwLnBvc2l0aW9ucywgYXAyLnBvc2l0aW9ucykKLSsgICAgYXNzZXJ0X2FsbGNsb3NlKGFw LnIsIGFwMi5yKQotKwotKyAgICBhcCA9IENpcmN1bGFyQW5udWx1cygoKDEyLjMsIDE1LjcpLCAo NDguMTksIDk4LjE0KSksIHJfaW49My4xNCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgcl9v dXQ9NS4zMikKLSsgICAgYXAyID0gYXAudG9fc2t5KHdjcykudG9fcGl4ZWwod2NzKQotKyAgICBh c3NlcnRfYWxsY2xvc2UoYXAucG9zaXRpb25zLCBhcDIucG9zaXRpb25zKQotKyAgICBhc3NlcnRf YWxsY2xvc2UoYXAucl9pbiwgYXAyLnJfaW4pCi0rICAgIGFzc2VydF9hbGxjbG9zZShhcC5yX291 dCwgYXAyLnJfb3V0KQotKwotKyAgICBhcCA9IEVsbGlwdGljYWxBcGVydHVyZSgoKDEyLjMsIDE1 LjcpLCAoNDguMTksIDk4LjE0KSksIGE9My4xNCwgYj01LjMyLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICB0aGV0YT0xMDMuKm5wLnBpLzE4MC4pCi0rICAgIGFwMiA9IGFwLnRvX3NreSh3 Y3MpLnRvX3BpeGVsKHdjcykKLSsgICAgYXNzZXJ0X2FsbGNsb3NlKGFwLnBvc2l0aW9ucywgYXAy LnBvc2l0aW9ucykKLSsgICAgYXNzZXJ0X2FsbGNsb3NlKGFwLmEsIGFwMi5hKQotKyAgICBhc3Nl cnRfYWxsY2xvc2UoYXAuYiwgYXAyLmIpCi0rICAgIGFzc2VydF9hbGxjbG9zZShhcC50aGV0YSwg YXAyLnRoZXRhKQotKwotKyAgICBhcCA9IEVsbGlwdGljYWxBbm51bHVzKCgoMTIuMywgMTUuNyks ICg0OC4xOSwgOTguMTQpKSwgYV9pbj0zLjE0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGFfb3V0PTE1LjMyLCBiX291dD00Ljg5LCB0aGV0YT0xMDMuKm5wLnBpLzE4MC4pCi0rICAgIGFw MiA9IGFwLnRvX3NreSh3Y3MpLnRvX3BpeGVsKHdjcykKLSsgICAgYXNzZXJ0X2FsbGNsb3NlKGFw LnBvc2l0aW9ucywgYXAyLnBvc2l0aW9ucykKLSsgICAgYXNzZXJ0X2FsbGNsb3NlKGFwLmFfaW4s IGFwMi5hX2luKQotKyAgICBhc3NlcnRfYWxsY2xvc2UoYXAuYV9vdXQsIGFwMi5hX291dCkKLSsg ICAgYXNzZXJ0X2FsbGNsb3NlKGFwLmJfb3V0LCBhcDIuYl9vdXQpCi0rICAgIGFzc2VydF9hbGxj bG9zZShhcC50aGV0YSwgYXAyLnRoZXRhKQotKwotKyAgICBhcCA9IFJlY3Rhbmd1bGFyQXBlcnR1 cmUoKCgxMi4zLCAxNS43KSwgKDQ4LjE5LCA5OC4xNCkpLCB3PTMuMTQsIGg9NS4zMiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXRhPTEwMy4qbnAucGkvMTgwLikKLSsgICAgYXAy ID0gYXAudG9fc2t5KHdjcykudG9fcGl4ZWwod2NzKQotKyAgICBhc3NlcnRfYWxsY2xvc2UoYXAu cG9zaXRpb25zLCBhcDIucG9zaXRpb25zKQotKyAgICBhc3NlcnRfYWxsY2xvc2UoYXAudywgYXAy LncpCi0rICAgIGFzc2VydF9hbGxjbG9zZShhcC5oLCBhcDIuaCkKLSsgICAgYXNzZXJ0X2FsbGNs b3NlKGFwLnRoZXRhLCBhcDIudGhldGEpCi0rCi0rICAgIGFwID0gUmVjdGFuZ3VsYXJBbm51bHVz KCgoMTIuMywgMTUuNyksICg0OC4xOSwgOTguMTQpKSwgd19pbj0zLjE0LAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3X291dD0xNS4zMiwgaF9vdXQ9NC44OSwgdGhldGE9MTAzLipucC5w aS8xODAuKQotKyAgICBhcDIgPSBhcC50b19za3kod2NzKS50b19waXhlbCh3Y3MpCi0rICAgIGFz c2VydF9hbGxjbG9zZShhcC5wb3NpdGlvbnMsIGFwMi5wb3NpdGlvbnMpCi0rICAgIGFzc2VydF9h bGxjbG9zZShhcC53X2luLCBhcDIud19pbikKLSsgICAgYXNzZXJ0X2FsbGNsb3NlKGFwLndfb3V0 LCBhcDIud19vdXQpCi0rICAgIGFzc2VydF9hbGxjbG9zZShhcC5oX291dCwgYXAyLmhfb3V0KQot KyAgICBhc3NlcnRfYWxsY2xvc2UoYXAudGhldGEsIGFwMi50aGV0YSkKLWRpZmYgLU5hdXIgcGhv dHV0aWxzLTAuNC9waG90dXRpbHMvYmFja2dyb3VuZC9jb3JlLnB5IHBob3R1dGlscy0wLjQuZml4 ZWQvcGhvdHV0aWxzL2JhY2tncm91bmQvY29yZS5weQotLS0tIHBob3R1dGlscy0wLjQvcGhvdHV0 aWxzL2JhY2tncm91bmQvY29yZS5weQkyMDE3LTEwLTMwIDE1OjM4OjE4LjAwMDAwMDAwMCArMDEw MAotKysrIHBob3R1dGlscy0wLjQuZml4ZWQvcGhvdHV0aWxzL2JhY2tncm91bmQvY29yZS5weQky MDE4LTAyLTE0IDAzOjU2OjA3LjA2MzUyMjYxOSArMDEwMAotQEAgLTQ3NywxNCArNDc3LDE0IEBA Ci0gCi0gICAgID4+PiBia2dybXNfdmFsdWUgPSBia2dybXMuY2FsY19iYWNrZ3JvdW5kX3Jtcyhk YXRhKQotICAgICA+Pj4gcHJpbnQoYmtncm1zX3ZhbHVlKSAgICAjIGRvY3Rlc3Q6ICtGTE9BVF9D TVAKLS0gICAgMjguODY2MDcwMDQ3NzIyMTE4Ci0rICAgIDI4Ljg2NjA3MDA0NzcyMjEyCi0gCi0g ICAgIEFsdGVybmF0aXZlbHksIHRoZSBiYWNrZ3JvdW5kIFJNUyB2YWx1ZSBjYW4gYmUgY2FsY3Vs YXRlZCBieSBjYWxsaW5nCi0gICAgIHRoZSBjbGFzcyBpbnN0YW5jZSBhcyBhIGZ1bmN0aW9uLCBl LmcuOgotIAotICAgICA+Pj4gYmtncm1zX3ZhbHVlID0gYmtncm1zKGRhdGEpCi0gICAgID4+PiBw cmludChia2dybXNfdmFsdWUpICAgICMgZG9jdGVzdDogK0ZMT0FUX0NNUAotLSAgICAyOC44NjYw NzAwNDc3MjIxMTgKLSsgICAgMjguODY2MDcwMDQ3NzIyMTIKLSAgICAgIiIiCi0gCi0gICAgIGRl ZiBjYWxjX2JhY2tncm91bmRfcm1zKHNlbGYsIGRhdGEsIGF4aXM9Tm9uZSk6Ci1AQCAtNTMxLDE0 ICs1MzEsMTQgQEAKLSAKLSAgICAgPj4+IGJrZ3Jtc192YWx1ZSA9IGJrZ3Jtcy5jYWxjX2JhY2tn cm91bmRfcm1zKGRhdGEpCi0gICAgID4+PiBwcmludChia2dybXNfdmFsdWUpICAgICMgZG9jdGVz dDogK0ZMT0FUX0NNUAotLSAgICAzNy4wNjUwNTU0NjI2NDAwNTMKLSsgICAgMzcuMDY1MDU1NDYy NjQwMDUKLSAKLSAgICAgQWx0ZXJuYXRpdmVseSwgdGhlIGJhY2tncm91bmQgUk1TIHZhbHVlIGNh biBiZSBjYWxjdWxhdGVkIGJ5IGNhbGxpbmcKLSAgICAgdGhlIGNsYXNzIGluc3RhbmNlIGFzIGEg ZnVuY3Rpb24sIGUuZy46Ci0gCi0gICAgID4+PiBia2dybXNfdmFsdWUgPSBia2dybXMoZGF0YSkK LSAgICAgPj4+IHByaW50KGJrZ3Jtc192YWx1ZSkgICAgIyBkb2N0ZXN0OiArRkxPQVRfQ01QCi0t ICAgIDM3LjA2NTA1NTQ2MjY0MDA1MwotKyAgICAzNy4wNjUwNTU0NjI2NDAwNQotICAgICAiIiIK LSAKLSAgICAgZGVmIGNhbGNfYmFja2dyb3VuZF9ybXMoc2VsZiwgZGF0YSwgYXhpcz1Ob25lKToK LUBAIC01ODAsMTQgKzU4MCwxNCBAQAotIAotICAgICA+Pj4gYmtncm1zX3ZhbHVlID0gYmtncm1z LmNhbGNfYmFja2dyb3VuZF9ybXMoZGF0YSkKLSAgICAgPj4+IHByaW50KGJrZ3Jtc192YWx1ZSkg ICAgIyBkb2N0ZXN0OiArRkxPQVRfQ01QCi0tICAgIDMwLjA5NDMzODQ4NTg5MzM5MgotKyAgICAz MC4wOTQzMzg0ODU4OTMzOQotIAotICAgICBBbHRlcm5hdGl2ZWx5LCB0aGUgYmFja2dyb3VuZCBS TVMgdmFsdWUgY2FuIGJlIGNhbGN1bGF0ZWQgYnkgY2FsbGluZwotICAgICB0aGUgY2xhc3MgaW5z dGFuY2UgYXMgYSBmdW5jdGlvbiwgZS5nLjoKLSAKLSAgICAgPj4+IGJrZ3Jtc192YWx1ZSA9IGJr Z3JtcyhkYXRhKQotICAgICA+Pj4gcHJpbnQoYmtncm1zX3ZhbHVlKSAgICAjIGRvY3Rlc3Q6ICtG TE9BVF9DTVAKLS0gICAgMzAuMDk0MzM4NDg1ODkzMzkyCi0rICAgIDMwLjA5NDMzODQ4NTg5MzM5 Ci0gICAgICIiIgotIAotICAgICBkZWYgX19pbml0X18oc2VsZiwgYz05LjAsIE09Tm9uZSwgKipr d2FyZ3MpOgotZGlmZiAtTmF1ciBwaG90dXRpbHMtMC40L3Bob3R1dGlscy9kYXRhc2V0cy9tYWtl LnB5IHBob3R1dGlscy0wLjQuZml4ZWQvcGhvdHV0aWxzL2RhdGFzZXRzL21ha2UucHkKLS0tLSBw aG90dXRpbHMtMC40L3Bob3R1dGlscy9kYXRhc2V0cy9tYWtlLnB5CTIwMTctMTAtMzAgMTU6Mzg6 MTguMDAwMDAwMDAwICswMTAwCi0rKysgcGhvdHV0aWxzLTAuNC5maXhlZC9waG90dXRpbHMvZGF0 YXNldHMvbWFrZS5weQkyMDE4LTAyLTE0IDAzOjU2OjA3LjA2MzUyMjYxOSArMDEwMAotQEAgLTIx NCwxNCArMjE0LDE2IEBACi0gICAgID4+PiBwYXJhbV9yYW5nZXMgPSBPcmRlcmVkRGljdChwYXJh bV9yYW5nZXMpCi0gICAgID4+PiBzb3VyY2VzID0gbWFrZV9yYW5kb21fbW9kZWxzX3RhYmxlKG5f c291cmNlcywgcGFyYW1fcmFuZ2VzLAotICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByYW5kb21fc3RhdGU9MTIzNDUpCi0rICAgID4+PiBmb3IgY29sIGluIHNvdXJj ZXMuY29sbmFtZXM6Ci0rICAgIC4uLiAgICAgc291cmNlc1tjb2xdLmluZm8uZm9ybWF0ID0gJyUu OGcnICAjIGZvciBjb25zaXN0ZW50IHRhYmxlIG91dHB1dAotICAgICA+Pj4gcHJpbnQoc291cmNl cykKLS0gICAgICBhbXBsaXR1ZGUgICAgICAgeF9tZWFuICAgICAgICB5X21lYW4gICAgLi4uICAg IHlfc3RkZGV2ICAgICAgIHRoZXRhCi0tICAgIC0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLSAt LS0tLS0tLS0tLS0tIC4uLiAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tCi0tICAgIDk2NC44 MDgwNDY0MDkgIDI5Ny43NzIzNTE0OSAyMjQuMzE0NDQyNzgxIC4uLiAzLjU2OTkwMTMxMTU4ICAy LjI5MjM4NTg2MTc2Ci0tICAgIDY1OC4xODc3NzcyOTEgNDgyLjI1NzI1OTg2OCAyODguMzkyMDIw ODIyIC4uLiAzLjg2OTgxNDQ4MzI1ICAzLjEyMjc4ODkyMDYyCi0tICAgIDU5MS45NTk0MDU4Mzkg MzI2LjU4ODU0ODQzNiAyLjUxNjQ4OTM4MjQ3IC4uLiAyLjg3MDM5NjAyODg4ICAyLjEyNjQ2MTQ4 MDMyCi0tICAgIDYwMi4yODAxMzkyNzcgMzc0LjQ1MzMxODc2NyAzMS45MzMzMTMwMDkzIC4uLiAy LjMwMjMzODcxMDE2ICAyLjQ4NDQ0MjIxMjM2Ci0tICAgIDc4My44NjI1MTQ1NDEgMzI2Ljc4NDkz NTQyNiA4OS42MTExMTQxMzA4IC4uLiAyLjc1ODU3ODQyMzU0IDAuNTM2OTQyOTc2Njc0Ci0rICAg IGFtcGxpdHVkZSAgIHhfbWVhbiAgICB5X21lYW4gICB4X3N0ZGRldiAgeV9zdGRkZXYgICB0aGV0 YQotKyAgICAtLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLSAtLS0tLS0tLS0gLS0tLS0tLS0t IC0tLS0tLS0tLS0KLSsgICAgOTY0LjgwODA1IDI5Ny43NzIzNSAyMjQuMzE0NDQgMy42MjU2NDQ3 IDMuNTY5OTAxMyAgMi4yOTIzODU5Ci0rICAgIDY1OC4xODc3OCA0ODIuMjU3MjYgMjg4LjM5MjAy IDQuMjM5MjUwMiAzLjg2OTgxNDUgIDMuMTIyNzg4OQotKyAgICA1OTEuOTU5NDEgMzI2LjU4ODU1 IDIuNTE2NDg5NCA0LjQ4ODcwMzcgIDIuODcwMzk2ICAyLjEyNjQ2MTUKLSsgICAgNjAyLjI4MDE0 IDM3NC40NTMzMiAzMS45MzMzMTMgNC44NTg1OTA0IDIuMzAyMzM4NyAgMi40ODQ0NDIyCi0rICAg IDc4My44NjI1MSAzMjYuNzg0OTQgODkuNjExMTE0IDMuODk0NzQxNCAyLjc1ODU3ODQgMC41MzY5 NDI5OAotICAgICAiIiIKLSAKLSAgICAgcHJuZyA9IGNoZWNrX3JhbmRvbV9zdGF0ZShyYW5kb21f c3RhdGUpCi1AQCAtMzAyLDE0ICszMDQsMTYgQEAKLSAgICAgPj4+IHBhcmFtX3JhbmdlcyA9IE9y ZGVyZWREaWN0KHBhcmFtX3JhbmdlcykKLSAgICAgPj4+IHNvdXJjZXMgPSBtYWtlX3JhbmRvbV9n YXVzc2lhbnNfdGFibGUobl9zb3VyY2VzLCBwYXJhbV9yYW5nZXMsCi0gICAgIC4uLiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbV9zdGF0ZT0xMjM0NSkKLSsgICAg Pj4+IGZvciBjb2wgaW4gc291cmNlcy5jb2xuYW1lczoKLSsgICAgLi4uICAgICBzb3VyY2VzW2Nv bF0uaW5mby5mb3JtYXQgPSAnJS44ZycgICMgZm9yIGNvbnNpc3RlbnQgdGFibGUgb3V0cHV0Ci0g ICAgID4+PiBwcmludChzb3VyY2VzKQotLSAgICAgIGFtcGxpdHVkZSAgICAgICB4X21lYW4gICAg ICAgIHlfbWVhbiAgICAuLi4gICAgeV9zdGRkZXYgICAgICAgdGhldGEKLS0gICAgLS0tLS0tLS0t LS0tLSAtLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0gLi4uIC0tLS0tLS0tLS0tLS0gLS0tLS0t LS0tLS0tLS0KLS0gICAgOTY0LjgwODA0NjQwOSAgMjk3Ljc3MjM1MTQ5IDIyNC4zMTQ0NDI3ODEg Li4uIDMuNTY5OTAxMzExNTggIDIuMjkyMzg1ODYxNzYKLS0gICAgNjU4LjE4Nzc3NzI5MSA0ODIu MjU3MjU5ODY4IDI4OC4zOTIwMjA4MjIgLi4uIDMuODY5ODE0NDgzMjUgIDMuMTIyNzg4OTIwNjIK LS0gICAgNTkxLjk1OTQwNTgzOSAzMjYuNTg4NTQ4NDM2IDIuNTE2NDg5MzgyNDcgLi4uIDIuODcw Mzk2MDI4ODggIDIuMTI2NDYxNDgwMzIKLS0gICAgNjAyLjI4MDEzOTI3NyAzNzQuNDUzMzE4NzY3 IDMxLjkzMzMxMzAwOTMgLi4uIDIuMzAyMzM4NzEwMTYgIDIuNDg0NDQyMjEyMzYKLS0gICAgNzgz Ljg2MjUxNDU0MSAzMjYuNzg0OTM1NDI2IDg5LjYxMTExNDEzMDggLi4uIDIuNzU4NTc4NDIzNTQg MC41MzY5NDI5NzY2NzQKLSsgICAgYW1wbGl0dWRlICAgeF9tZWFuICAgIHlfbWVhbiAgIHhfc3Rk ZGV2ICB5X3N0ZGRldiAgIHRoZXRhCi0rICAgIC0tLS0tLS0tLSAtLS0tLS0tLS0gLS0tLS0tLS0t IC0tLS0tLS0tLSAtLS0tLS0tLS0gLS0tLS0tLS0tLQotKyAgICA5NjQuODA4MDUgMjk3Ljc3MjM1 IDIyNC4zMTQ0NCAzLjYyNTY0NDcgMy41Njk5MDEzICAyLjI5MjM4NTkKLSsgICAgNjU4LjE4Nzc4 IDQ4Mi4yNTcyNiAyODguMzkyMDIgNC4yMzkyNTAyIDMuODY5ODE0NSAgMy4xMjI3ODg5Ci0rICAg IDU5MS45NTk0MSAzMjYuNTg4NTUgMi41MTY0ODk0IDQuNDg4NzAzNyAgMi44NzAzOTYgIDIuMTI2 NDYxNQotKyAgICA2MDIuMjgwMTQgMzc0LjQ1MzMyIDMxLjkzMzMxMyA0Ljg1ODU5MDQgMi4zMDIz Mzg3ICAyLjQ4NDQ0MjIKLSsgICAgNzgzLjg2MjUxIDMyNi43ODQ5NCA4OS42MTExMTQgMy44OTQ3 NDE0IDIuNzU4NTc4NCAwLjUzNjk0Mjk4Ci0gCi0gICAgIFRvIHNwZWNpZnlpbmcgdGhlIGZsdXgg cmFuZ2UgaW5zdGVhZCBvZiB0aGUgYW1wbGl0dWRlIHJhbmdlOgotIAotQEAgLTMyMiwxNCArMzI2 LDE2IEBACi0gICAgID4+PiBwYXJhbV9yYW5nZXMgPSBPcmRlcmVkRGljdChwYXJhbV9yYW5nZXMp Ci0gICAgID4+PiBzb3VyY2VzID0gbWFrZV9yYW5kb21fZ2F1c3NpYW5zX3RhYmxlKG5fc291cmNl cywgcGFyYW1fcmFuZ2VzLAotICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICByYW5kb21fc3RhdGU9MTIzNDUpCi0rICAgID4+PiBmb3IgY29sIGluIHNvdXJjZXMu Y29sbmFtZXM6Ci0rICAgIC4uLiAgICAgc291cmNlc1tjb2xdLmluZm8uZm9ybWF0ID0gJyUuOGcn ICAjIGZvciBjb25zaXN0ZW50IHRhYmxlIG91dHB1dAotICAgICA+Pj4gcHJpbnQoc291cmNlcykK LS0gICAgICAgIGZsdXggICAgICAgICB4X21lYW4gICAgICAgIHlfbWVhbiAgICAuLi4gICAgIHRo ZXRhICAgICAgICBhbXBsaXR1ZGUKLS0gICAgLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tIC0t LS0tLS0tLS0tLS0gLi4uIC0tLS0tLS0tLS0tLS0tIC0tLS0tLS0tLS0tLS0KLS0gICAgOTY0Ljgw ODA0NjQwOSAgMjk3Ljc3MjM1MTQ5IDIyNC4zMTQ0NDI3ODEgLi4uICAyLjI5MjM4NTg2MTc2IDEx Ljg2MzY4NDU4MDYKLS0gICAgNjU4LjE4Nzc3NzI5MSA0ODIuMjU3MjU5ODY4IDI4OC4zOTIwMjA4 MjIgLi4uICAzLjEyMjc4ODkyMDYyIDYuMzg1NDM4ODI2ODQKLS0gICAgNTkxLjk1OTQwNTgzOSAz MjYuNTg4NTQ4NDM2IDIuNTE2NDg5MzgyNDcgLi4uICAyLjEyNjQ2MTQ4MDMyIDcuMzEyMjIwODk1 NjcKLS0gICAgNjAyLjI4MDEzOTI3NyAzNzQuNDUzMzE4NzY3IDMxLjkzMzMxMzAwOTMgLi4uICAy LjQ4NDQ0MjIxMjM2IDguNTY5MTc4MTQ1MDYKLS0gICAgNzgzLjg2MjUxNDU0MSAzMjYuNzg0OTM1 NDI2IDg5LjYxMTExNDEzMDggLi4uIDAuNTM2OTQyOTc2Njc0IDExLjYxMTcwNjk2MzgKLSsgICAg ICAgZmx1eCAgICAgeF9tZWFuICAgIHlfbWVhbiAgIHhfc3RkZGV2ICB5X3N0ZGRldiAgIHRoZXRh ICAgIGFtcGxpdHVkZQotKyAgICAtLS0tLS0tLS0gLS0tLS0tLS0tIC0tLS0tLS0tLSAtLS0tLS0t LS0gLS0tLS0tLS0tIC0tLS0tLS0tLS0gLS0tLS0tLS0tCi0rICAgIDk2NC44MDgwNSAyOTcuNzcy MzUgMjI0LjMxNDQ0IDMuNjI1NjQ0NyAzLjU2OTkwMTMgIDIuMjkyMzg1OSAxMS44NjM2ODUKLSsg ICAgNjU4LjE4Nzc4IDQ4Mi4yNTcyNiAyODguMzkyMDIgNC4yMzkyNTAyIDMuODY5ODE0NSAgMy4x MjI3ODg5IDYuMzg1NDM4OAotKyAgICA1OTEuOTU5NDEgMzI2LjU4ODU1IDIuNTE2NDg5NCA0LjQ4 ODcwMzcgIDIuODcwMzk2ICAyLjEyNjQ2MTUgNy4zMTIyMjA5Ci0rICAgIDYwMi4yODAxNCAzNzQu NDUzMzIgMzEuOTMzMzEzIDQuODU4NTkwNCAyLjMwMjMzODcgIDIuNDg0NDQyMiA4LjU2OTE3ODEK LSsgICAgNzgzLjg2MjUxIDMyNi43ODQ5NCA4OS42MTExMTQgMy44OTQ3NDE0IDIuNzU4NTc4NCAw LjUzNjk0Mjk4IDExLjYxMTcwNwotIAotICAgICBOb3RlIHRoYXQgaW4gdGhpcyBjYXNlIHRoZSBv dXRwdXQgdGFibGUgY29udGFpbnMgYm90aCBhIGZsdXggYW5kCi0gICAgIGFtcGxpdHVkZSBjb2x1 bW4uICBUaGUgZmx1eCBjb2x1bW4gd2lsbCBiZSBpZ25vcmVkIHdoZW4gZ2VuZXJhdGluZwotQEAg LTY5NCwxMCArNzAwLDEwIEBACi0gICAgID4+PiBmcm9tIHBob3R1dGlscy5kYXRhc2V0cyBpbXBv cnQgbWFrZV93Y3MKLSAgICAgPj4+IHNoYXBlID0gKDEwMCwgMTAwKQotICAgICA+Pj4gd2NzID0g bWFrZV93Y3Moc2hhcGUpCi0tICAgID4+PiBwcmludCh3Y3Mud2NzLmNycGl4KQotLSAgICBbIDUw LiAgNTAuXQotLSAgICA+Pj4gcHJpbnQod2NzLndjcy5jcnZhbCkKLS0gICAgWyAxOTcuODkyNSAg ICAgICAtMS4zNjU1NTU1Nl0KLSsgICAgPj4+IHByaW50KHdjcy53Y3MuY3JwaXgpICAjIGRvY3Rl c3Q6ICtGTE9BVF9DTVAKLSsgICAgWzUwLiA1MC5dCi0rICAgID4+PiBwcmludCh3Y3Mud2NzLmNy dmFsKSAgIyBkb2N0ZXN0OiArRkxPQVRfQ01QCi0rICAgIFsxOTcuODkyNSAgICAgIC0xLjM2NTU1 NTU2XQotICAgICAiIiIKLSAKLSAgICAgd2NzID0gV0NTKG5heGlzPTIpCi1kaWZmIC1OYXVyIHBo b3R1dGlscy0wLjQvcGhvdHV0aWxzL2RldGVjdGlvbi90ZXN0cy90ZXN0X2ZpbmRzdGFycy5weSBw aG90dXRpbHMtMC40LmZpeGVkL3Bob3R1dGlscy9kZXRlY3Rpb24vdGVzdHMvdGVzdF9maW5kc3Rh cnMucHkKLS0tLSBwaG90dXRpbHMtMC40L3Bob3R1dGlscy9kZXRlY3Rpb24vdGVzdHMvdGVzdF9m aW5kc3RhcnMucHkJMjAxNy0xMC0zMCAxNTozODoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBwaG90 dXRpbHMtMC40LmZpeGVkL3Bob3R1dGlscy9kZXRlY3Rpb24vdGVzdHMvdGVzdF9maW5kc3RhcnMu cHkJMjAxOC0wMi0xNCAwMzo1NjowNy4wNjE1MjI1ODggKzAxMDAKLUBAIC00Niw4ICs0NiwxMCBA QAotICAgICAgICAgICAgICAgICAgICcudHh0Jy5mb3JtYXQodGhyZXNob2xkLCBmd2htKSkKLSAg ICAgICAgIGRhdGFmbiA9IG9wLmpvaW4ob3AuZGlybmFtZShvcC5hYnNwYXRoKF9fZmlsZV9fKSks ICdkYXRhJywgZGF0YWZuKQotICAgICAgICAgdF9yZWYgPSBUYWJsZS5yZWFkKGRhdGFmbiwgZm9y bWF0PSdhc2NpaScpCi0tICAgICAgICBhc3NlcnRfYWxsY2xvc2UobnAuYXJyYXkodCkuYXN0eXBl KG5wLmZsb2F0KSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBucC5hcnJheSh0X3JlZikuYXN0 eXBlKG5wLmZsb2F0KSkKLSsKLSsgICAgICAgIGFzc2VydCB0LmNvbG5hbWVzID09IHRfcmVmLmNv bG5hbWVzCi0rICAgICAgICBmb3IgY29sIGluIHQuY29sbmFtZXM6Ci0rICAgICAgICAgICAgYXNz ZXJ0X2FsbGNsb3NlKHRbY29sXSwgdF9yZWZbY29sXSkKLSAKLSAgICAgZGVmIHRlc3RfZGFvZmlu ZF9pbmNsdWRlX2JvcmRlcihzZWxmKToKLSAgICAgICAgIHN0YXJmaW5kZXIgPSBEQU9TdGFyRmlu ZGVyKHRocmVzaG9sZD0xMCwgZndobT0yLCBzaWdtYV9yYWRpdXM9MS41LAotQEAgLTEwMCw4ICsx MDIsMTAgQEAKLSAgICAgICAgICAgICAgICAgICAnLnR4dCcuZm9ybWF0KHRocmVzaG9sZCwgZndo bSkpCi0gICAgICAgICBkYXRhZm4gPSBvcC5qb2luKG9wLmRpcm5hbWUob3AuYWJzcGF0aChfX2Zp bGVfXykpLCAnZGF0YScsIGRhdGFmbikKLSAgICAgICAgIHRfcmVmID0gVGFibGUucmVhZChkYXRh Zm4sIGZvcm1hdD0nYXNjaWknKQotLSAgICAgICAgYXNzZXJ0X2FsbGNsb3NlKG5wLmFycmF5KHQp LmFzdHlwZShucC5mbG9hdCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgbnAuYXJyYXkodF9y ZWYpLmFzdHlwZShucC5mbG9hdCkpCi0rCi0rICAgICAgICBhc3NlcnQgdC5jb2xuYW1lcyA9PSB0 X3JlZi5jb2xuYW1lcwotKyAgICAgICAgZm9yIGNvbCBpbiB0LmNvbG5hbWVzOgotKyAgICAgICAg ICAgIGFzc2VydF9hbGxjbG9zZSh0W2NvbF0sIHRfcmVmW2NvbF0pCi0gCi0gICAgIGRlZiB0ZXN0 X2lyYWZzdGFyZmluZF9ub3NvdXJjZXMoc2VsZik6Ci0gICAgICAgICBkYXRhID0gbnAub25lcygo MywgMykpCi1kaWZmIC1OYXVyIHBob3R1dGlscy0wLjQvcGhvdHV0aWxzL3NlZ21lbnRhdGlvbi9w cm9wZXJ0aWVzLnB5IHBob3R1dGlscy0wLjQuZml4ZWQvcGhvdHV0aWxzL3NlZ21lbnRhdGlvbi9w cm9wZXJ0aWVzLnB5Ci0tLS0gcGhvdHV0aWxzLTAuNC9waG90dXRpbHMvc2VnbWVudGF0aW9uL3By b3BlcnRpZXMucHkJMjAxNy0xMC0zMCAxNTozODoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBwaG90 dXRpbHMtMC40LmZpeGVkL3Bob3R1dGlscy9zZWdtZW50YXRpb24vcHJvcGVydGllcy5weQkyMDE4 LTAyLTE0IDAzOjU2OjA3LjA2MjUyMjYwMyArMDEwMAotQEAgLTExNjIsMTEgKzExNjIsMTEgQEAK LSAgICAgPj4+IGltcG9ydCBudW1weSBhcyBucAotICAgICA+Pj4gZnJvbSBwaG90dXRpbHMgaW1w b3J0IFNlZ21lbnRhdGlvbkltYWdlLCBzb3VyY2VfcHJvcGVydGllcwotICAgICA+Pj4gaW1hZ2Ug PSBucC5hcmFuZ2UoMTYuKS5yZXNoYXBlKDQsIDQpCi0tICAgID4+PiBwcmludChpbWFnZSkKLS0g ICAgW1sgIDAuICAgMS4gICAyLiAgIDMuXQotLSAgICAgWyAgNC4gICA1LiAgIDYuICAgNy5dCi0t ICAgICBbICA4LiAgIDkuICAxMC4gIDExLl0KLS0gICAgIFsgMTIuICAxMy4gIDE0LiAgMTUuXV0K LSsgICAgPj4+IHByaW50KGltYWdlKSAgIyBkb2N0ZXN0OiArU0tJUAotKyAgICBbWyAwLiAgMS4g IDIuICAzLl0KLSsgICAgIFsgNC4gIDUuICA2LiAgNy5dCi0rICAgICBbIDguICA5LiAxMC4gMTEu XQotKyAgICAgWzEyLiAxMy4gMTQuIDE1Ll1dCi0gICAgID4+PiBzZWdtID0gU2VnbWVudGF0aW9u SW1hZ2UoW1sxLCAxLCAwLCAwXSwKLSAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAg WzEsIDAsIDAsIDJdLAotICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgMCwg MiwgMl0sCi1AQCAtMTE3OSwxMSArMTE3OSwxMSBAQAotICAgICA+Pj4gcHJvcHNbMF0uaWQgICAg IyBpZCBjb3JyZXNwb25kcyB0byBzZWdtZW50IGxhYmVsIG51bWJlcgotICAgICAxCi0gICAgID4+ PiBwcm9wc1swXS5jZW50cm9pZCAgICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLS0gICAgPFF1YW50 aXR5IFsgMC44LCAwLjJdIHBpeD4KLSsgICAgPFF1YW50aXR5IFswLjgsIDAuMl0gcGl4PgotICAg ICA+Pj4gcHJvcHNbMF0uc291cmNlX3N1bSAgICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLSAgICAg NS4wCi0gICAgID4+PiBwcm9wc1swXS5hcmVhICAgICMgZG9jdGVzdDogK0ZMT0FUX0NNUAotLSAg ICA8UXVhbnRpdHkgMy4wIHBpeDI+Ci0rICAgIDxRdWFudGl0eSAzLiBwaXgyPgotICAgICA+Pj4g cHJvcHNbMF0ubWF4X3ZhbHVlICAgICMgZG9jdGVzdDogK0ZMT0FUX0NNUAotICAgICA0LjAKLSAK LUBAIC0xMTkzLDExICsxMTkzLDExIEBACi0gICAgID4+PiBwcm9wc1sxXS5pZCAgICAjIGlkIGNv cnJlc3BvbmRzIHRvIHNlZ21lbnQgbGFiZWwgbnVtYmVyCi0gICAgIDIKLSAgICAgPj4+IHByb3Bz WzFdLmNlbnRyb2lkICAgICMgZG9jdGVzdDogK0ZMT0FUX0NNUAotLSAgICA8UXVhbnRpdHkgWyAy LjM2MzYzNjM2LCAyLjA5MDkwOTA5XSBwaXg+Ci0rICAgIDxRdWFudGl0eSBbMi4zNjM2MzYzNiwg Mi4wOTA5MDkwOV0gcGl4PgotICAgICA+Pj4gcHJvcHNbMV0ucGVyaW1ldGVyICAgICMgZG9jdGVz dDogK0ZMT0FUX0NNUAotLSAgICA8UXVhbnRpdHkgNS40MTQyMTM1NjIzNzMwOTUgcGl4PgotKyAg ICA8UXVhbnRpdHkgNS40MTQyMTM1NiBwaXg+Ci0gICAgID4+PiBwcm9wc1sxXS5vcmllbnRhdGlv biAgICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLS0gICAgPFF1YW50aXR5IC0wLjc0MTc1OTMwNjky MjcxNzYgcmFkPgotKyAgICA8UXVhbnRpdHkgLTAuNzQxNzU5MzEgcmFkPgotICAgICAiIiIKLSAK LSAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc2VnbWVudF9pbWcsIFNlZ21lbnRhdGlvbkltYWdlKToK LUBAIC0xNDEyLDExICsxNDEyLDExIEBACi0gICAgICAgICA+Pj4gaW1wb3J0IG51bXB5IGFzIG5w Ci0gICAgICAgICA+Pj4gZnJvbSBwaG90dXRpbHMgaW1wb3J0IHNvdXJjZV9wcm9wZXJ0aWVzCi0g ICAgICAgICA+Pj4gaW1hZ2UgPSBucC5hcmFuZ2UoMTYuKS5yZXNoYXBlKDQsIDQpCi0tICAgICAg ICA+Pj4gcHJpbnQoaW1hZ2UpCi0tICAgICAgICBbWyAgMC4gICAxLiAgIDIuICAgMy5dCi0tICAg ICAgICBbICA0LiAgIDUuICAgNi4gICA3Ll0KLS0gICAgICAgIFsgIDguICAgOS4gIDEwLiAgMTEu XQotLSAgICAgICAgWyAxMi4gIDEzLiAgMTQuICAxNS5dXQotKyAgICAgICAgPj4+IHByaW50KGlt YWdlKSAgIyBkb2N0ZXN0OiArU0tJUAotKyAgICAgICAgW1sgMC4gIDEuICAyLiAgMy5dCi0rICAg ICAgICAgWyA0LiAgNS4gIDYuICA3Ll0KLSsgICAgICAgICBbIDguICA5LiAxMC4gMTEuXQotKyAg ICAgICAgIFsxMi4gMTMuIDE0LiAxNS5dXQotICAgICAgICAgPj4+IHNlZ20gPSBTZWdtZW50YXRp b25JbWFnZShbWzEsIDEsIDAsIDBdLAotICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAg ICAgICAgWzEsIDAsIDAsIDJdLAotICAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAg ICAgWzAsIDAsIDIsIDJdLAotZGlmZiAtTmF1ciBwaG90dXRpbHMtMC40L3Bob3R1dGlscy91dGls cy9pbnRlcnBvbGF0aW9uLnB5IHBob3R1dGlscy0wLjQuZml4ZWQvcGhvdHV0aWxzL3V0aWxzL2lu dGVycG9sYXRpb24ucHkKLS0tLSBwaG90dXRpbHMtMC40L3Bob3R1dGlscy91dGlscy9pbnRlcnBv bGF0aW9uLnB5CTIwMTctMTAtMzAgMTc6MTQ6MjguMDAwMDAwMDAwICswMTAwCi0rKysgcGhvdHV0 aWxzLTAuNC5maXhlZC9waG90dXRpbHMvdXRpbHMvaW50ZXJwb2xhdGlvbi5weQkyMDE4LTAyLTE0 IDAzOjU2OjA3LjA2MjUyMjYwMyArMDEwMAotQEAgLTk1LDE1ICs5NSwxNSBAQAotICAgICAgICAg Pj4+IGYoMC40KSAgICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLSAgICAgICAgIDAuMzg4NjI0MjQw NDMyMjg4NTUKLSAgICAgICAgID4+PiBucC5zaW4oMC40KSAgICMgZG9jdGVzdDogK0ZMT0FUX0NN UAotLSAgICAgICAgMC4zODk0MTgzNDIzMDg2NTA1MgotKyAgICAgICAgMC4zODk0MTgzNDIzMDg2 NTA1Ci0gCi0gICAgICAgICA+Pj4geGkgPSBucC5yYW5kb20ucmFuZG9tKDQpCi0tICAgICAgICA+ Pj4geGkKLS0gICAgICAgIGFycmF5KFsgMC41MTMxMjgxNSwgIDAuNjY2NjI0NTUsICAwLjEwNTkw ODQ5LCAgMC4xMzA4OTQ5NV0pCi0tICAgICAgICA+Pj4gZih4aSkgICAgIyBkb2N0ZXN0OiArRkxP QVRfQ01QCi0tICAgICAgICBhcnJheShbIDAuNDkwODY0MjMsICAwLjYyNjQ3ODYyLCAgMC4xMDU2 ODU0ICwgIDAuMTMwNDgzMzVdKQotLSAgICAgICAgPj4+IG5wLnNpbih4aSkKLS0gICAgICAgIGFy cmF5KFsgMC40OTA5MDQ5MywgIDAuNjE4MzM2NyAsICAwLjEwNTcxMDYxLCAgMC4xMzA1MjE0OV0p Ci0rICAgICAgICA+Pj4geGkgICMgZG9jdGVzdDogK0ZMT0FUX0NNUAotKyAgICAgICAgYXJyYXko WzAuNTEzMTI4MTUsIDAuNjY2NjI0NTUsIDAuMTA1OTA4NDksIDAuMTMwODk0OTVdKQotKyAgICAg ICAgPj4+IGYoeGkpICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLSsgICAgICAgIGFycmF5KFswLjQ5 MDg2NDIzLCAwLjYyNjQ3ODYyLCAwLjEwNTY4NTQgLCAwLjEzMDQ4MzM1XSkKLSsgICAgICAgID4+ PiBucC5zaW4oeGkpICAjIGRvY3Rlc3Q6ICtGTE9BVF9DTVAKLSsgICAgICAgIGFycmF5KFswLjQ5 MDkwNDkzLCAwLjYxODMzNjcgLCAwLjEwNTcxMDYxLCAwLjEzMDUyMTQ5XSkKLSAKLSAgICAgTk9U RTogSW4gdGhlIGxhc3QgZXhhbXBsZSwgYGB4aWBgIG1heSBiZSBhIGBgTngxYGAgYXJyYXkgaW5z dGVhZCBvZgotICAgICBhIDFEIHZlY3Rvci4KLUBAIC0xMTMsMTAgKzExMywxMCBAQAotICAgICAg ICAgPj4+IHBvcyA9IG5wLnJhbmRvbS5yYW5kKDEwMDAsIDIpCi0gICAgICAgICA+Pj4gdmFsID0g bnAuc2luKHBvc1s6LCAwXSArIHBvc1s6LCAxXSkKLSAgICAgICAgID4+PiBmID0gaWR3KHBvcywg dmFsKQotLSAgICAgICAgPj4+IGYoWzAuNSwgMC42XSkgICAgICMgZG9jdGVzdDogK0ZMT0FUX0NN UAotLSAgICAgICAgMC44OTMxMjY0OTU4NzQwNTY1NwotLSAgICAgICAgPj4+IG5wLnNpbigwLjUg KyAwLjYpCi0tICAgICAgICAwLjg5MTIwNzM2MDA2MTQzNTQyCi0rICAgICAgICA+Pj4gZihbMC41 LCAwLjZdKSAgIyBkb2N0ZXN0OiArRkxPQVRfQ01QCi0rICAgICAgICAwLjg5MzEyNjQ5NTg3NDA1 NjcKLSsgICAgICAgID4+PiBucC5zaW4oMC41ICsgMC42KSAgIyBkb2N0ZXN0OiArRkxPQVRfQ01Q Ci0rICAgICAgICAwLjg5MTIwNzM2MDA2MTQzNTQKLSAgICAgIiIiCi0gCi0gICAgIGRlZiBfX2lu aXRfXyhzZWxmLCBjb29yZGluYXRlcywgdmFsdWVzLCB3ZWlnaHRzPU5vbmUsIGxlYWZzaXplPTEw KToKCmRpZmYgLS1naXQgYS9weXRob24tcGhvdHV0aWxzLnNwZWMgYi9weXRob24tcGhvdHV0aWxz LnNwZWMKaW5kZXggMjUyNmE4Ny4uOWUxZTY1YyAxMDA2NDQKLS0tIGEvcHl0aG9uLXBob3R1dGls cy5zcGVjCisrKyBiL3B5dGhvbi1waG90dXRpbHMuc3BlYwpAQCAtMSw4ICsxLDggQEAKICVnbG9i YWwgc3JjbmFtZSBwaG90dXRpbHMKIAogTmFtZTogcHl0aG9uLSV7c3JjbmFtZX0KLVZlcnNpb246 IDAuNQotUmVsZWFzZTogMiV7P2Rpc3R9CitWZXJzaW9uOiAwLjYKK1JlbGVhc2U6IDElez9kaXN0 fQogU3VtbWFyeTogQXN0cm9weSBhZmZpbGlhdGVkIHBhY2thZ2UgZm9yIGltYWdlIHBob3RvbWV0 cnkgdGFza3MKIExpY2Vuc2U6IEJTRAogCkBAIC03NCw4ICs3NCw3IEBAIGV4cG9ydCBYREdfQ09O RklHX0hPTUU9YHB3ZGAKIGV4cG9ydCBQWVRIT05ET05UV1JJVEVCWVRFQ09ERT0xCiAKIHB1c2hk ICV7YnVpbGRyb290fS8le3B5dGhvbjNfc2l0ZWFyY2h9Ci0jIFRlc3QgdGVzdF9vdXRsaW5lX3Nl Z21lbnRzIGFuZCBUZXN0RGVibGVuZFNvdXJjZXMgZmFpbCBhcyB3ZSBkb24ndCBoYXZlIGRhc2sg aW4gRmVkb3JhCi1weS50ZXN0LSV7cHl0aG9uM192ZXJzaW9ufSAtayAibm90ICh0ZXN0X291dGxp bmVfc2VnbWVudHMgb3IgVGVzdERlYmxlbmRTb3VyY2VzKSIgJXtzcmNuYW1lfQorcHkudGVzdC0l e3B5dGhvbjNfdmVyc2lvbn0gcGhvdHV0aWxzCiBybSAtcmYgLnB5dGVzdF9jYWNoZQogcG9wZAog CkBAIC04Nyw2ICs4Niw5IEBAIHBvcGQKICV7cHl0aG9uM19zaXRlYXJjaH0vJXtzcmNuYW1lfQog CiAlY2hhbmdlbG9nCisqIFN1biBBcHIgMjggMjAxOSBDaHJpc3RpYW4gRGVyc2NoIDxsdXBpbml4 QG1haWxib3gub3JnPiAtIDAuNi0xCistIG5ldyB2ZXJzaW9uCisKICogU2F0IEZlYiAwMiAyMDE5 IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWxlbmdAZmVkb3JhcHJvamVjdC5vcmc+IC0g MC41LTIKIC0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlZG9y YV8zMF9NYXNzX1JlYnVpbGQKIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4 IGE1ZWE4MGYuLjFmYTk1MmMgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAt MSArMSBAQAotU0hBNTEyIChwaG90dXRpbHMtMC41LnRhci5neikgPSAyZTlmMjMzYzYyMzcyNWFi ZDdhOGUzZDk5MWMyYzA2NWY3YmUwOWZkYTU0NGM0NGM2OTE0OWM2ZWIwNGRmNGFjMWVlZjRjZjBj ODM3YjFjMTU5NDQ1ZjE3MmRhMmZkMjllYWZhMTI3YWJlN2JiMjI5ZDZiMDg1MWE0ZGNmNWI2NAor U0hBNTEyIChwaG90dXRpbHMtMC42LnRhci5neikgPSBmYjI1ODgxNGNkNmVkMTMzN2U2ZjNmNDA1 NDgyOGI5OGZjNDUwZTFmODJkMDQ1ZmNkYzdiYjJjNTNkMTRkZWIzMWFlY2YyMjliZGY1NjU2MGY5 ZGM1ZDk4MDQyYTg3YzE0YmJlZGQ2ZWMxYTVjYjIyYzFkMThmMjBiODgwODJlYwo=