ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2NtZGxpbmUudHh0IGIvcnVudGltZS9kb2MvY21kbGluZS50eHQKaW5kZXggNGQ0YTg4Yy4uNmY0NjAzMyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvY21kbGluZS50eHQKKysrIGIvcnVudGltZS9kb2MvY21kbGluZS50eHQKQEAgLTEsNCArMSw0IEBACi0qY21kbGluZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDAxCisqY21kbGluZS50eHQqICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDE0CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNjQsNiArMTY0LDggQEAKIAkJCQkncGF0aCcgYXMgaW4gfGdmfAogCQkJQ1RSTC1XCXRoZSBXb3JkIHVuZGVyIHRoZSBjdXJzb3IKIAkJCUNUUkwtQQl0aGUgV09SRCB1bmRlciB0aGUgY3Vyc29yOyBzZWUgfFdPUkR8CisJCVdoZW4gJ2luY3NlYXJjaCcgaXMgc2V0IHRoZSBjdXJzb3IgcG9zaXRpb24gb2YgdGhlIGN1cnJlbnRseQorCQlkaXNwbGF5ZWQgbWF0Y2ggaXMgdXNlZC4KIAkJe25vdCBpbiBWaX0KIAkJQ1RSTC1GIGFuZCBDVFJMLVA6IHtvbmx5IHdoZW4gK2ZpbGVfaW5fcGF0aCBmZWF0dXJlIGlzCiAJCWluY2x1ZGVkfQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAppbmRleCAxYTI4YmYxLi5iZTgzYWUxIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDA1Cisqb3B0aW9ucy50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1bCAxNQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMTA0LDYgKzExMDQsOSBAQAogCSAgbm9maWxlCWJ1ZmZlciB3aGljaCBpcyBub3QgcmVsYXRlZCB0byBhIGZpbGUgYW5kIHdpbGwgbm90IGJlCiAJCQl3cml0dGVuCiAJICBub3dyaXRlCWJ1ZmZlciB3aGljaCB3aWxsIG5vdCBiZSB3cml0dGVuCisJICBhY3dyaXRlCWJ1ZmZlciB3aGljaCB3aWxsIGFsd2F5cyBiZSB3cml0dGVuIHdpdGggQnVmV3JpdGVDbWQKKwkgIAkJYXV0b2NvbW1hbmRzLiB7bm90IGF2YWlsYWJsZSB3aGVuIGNvbXBpbGVkIHdpdGhvdXQgdGhlCisJCQl8K2F1dG9jbWR8IGZlYXR1cmV9CiAJICBxdWlja2ZpeAlxdWlja2ZpeCBidWZmZXIsIGNvbnRhaW5zIGxpc3Qgb2YgZXJyb3JzIHw6Y3dpbmRvd3wKIAkgIGhlbHAJCWhlbHAgYnVmZmVyICh5b3UgYXJlIG5vdCBzdXBwb3NlZCB0byBzZXQgdGhpcwogCQkJbWFudWFsbHkpCkBAIC0xMTI4LDYgKzExMzEsMTIgQEAKIAlub2ZpbGUgb25seToJVGhlIGJ1ZmZlciBuYW1lIGlzIGZpeGVkLCBpdCBpcyBub3QgaGFuZGxlZCBsaWtlIGEKIAkJCWZpbGUgbmFtZS4gIEl0IGlzIG5vdCBtb2RpZmllZCBpbiByZXNwb25zZSB0byBhIHw6Y2R8CiAJCQljb21tYW5kLgorCQkJCQkJCSpFNjc2KgorCSJhY3dyaXRlIiBpbXBsaWVzIHRoYXQgdGhlIGJ1ZmZlciBuYW1lIGlzIG5vdCByZWxhdGVkIHRvIGEgZmlsZSwgbGlrZQorCSJub2ZpbGUiLCBidXQgaXQgd2lsbCBiZSB3cml0dGVuLiAgVGh1cywgaW4gY29udHJhc3QgdG8gIm5vZmlsZSIgYW5kCisJIm5vd3JpdGUiLCAiOnciIGRvZXMgd29yayBhbmQgYSBtb2RpZmllZCBidWZmZXIgY2FuJ3QgYmUgYWJhbmRvbmVkCisJd2l0aG91dCBzYXZpbmcuICBGb3Igd3JpdGluZyB0aGVyZSBtdXN0IGJlIG1hdGNoaW5nIHxCdWZXcml0ZUNtZHwsCisJfEZpbGVXcml0ZUNtZHwgb3IgfEZpbGVBcHBlbmRDbWR8IGF1dG9jb21tYW5kcy4KIAogCQkJCQkJKidjYXNlbWFwJyogKidjbXAnKgogJ2Nhc2VtYXAnICdjbXAnCQlzdHJpbmcJKGRlZmF1bHQ6ICJpbnRlcm5hbCxrZWVwYXNjaWkiKQpAQCAtMzQyMiwxNCArMzQzMSwxNiBAQAogCQkJe25vdCBpbiBWaX0KIAkJCXtub3QgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aG91dCB0aGUKIAkJCXwrZXh0cmFfc2VhcmNofCBmZWF0dXJlfQotCVdoaWxlIHR5cGluZyBhIHNlYXJjaCBjb21tYW5kLCBzaG93IGltbWVkaWF0ZWx5IHdoZXJlIHRoZSBzbyBmYXIKLQl0eXBlZCBwYXR0ZXJuIG1hdGNoZXMuICBUaGUgbWF0Y2hlZCBzdHJpbmcgaXMgaGlnaGxpZ2h0ZWQuICBJZiB0aGUKLQlwYXR0ZXJuIGlzIGludmFsaWQgb3Igbm90IGZvdW5kLCBub3RoaW5nIGlzIHNob3duLiAgVGhlIHNjcmVlbiB3aWxsCi0JYmUgdXBkYXRlZCBvZnRlbiwgdGhpcyBpcyBvbmx5IHVzZWZ1bCBvbiBmYXN0IHRlcm1pbmFscy4gIE5vdGUgdGhhdAotCXRoZSBtYXRjaCB3aWxsIGJlIHNob3duLCBidXQgdGhlIGN1cnNvciBpcyBub3QgYWN0dWFsbHkgcG9zaXRpb25lZAotCXRoZXJlLiAgWW91IHN0aWxsIG5lZWQgdG8gZmluaXNoIHRoZSBzZWFyY2ggY29tbWFuZCB3aXRoIDxDUj4gdG8gbW92ZQotCXRoZSBjdXJzb3IuICBUaGUgaGlnaGxpZ2h0aW5nIGNhbiBiZSBzZXQgd2l0aCB0aGUgJ2knIGZsYWcgaW4KLQknaGlnaGxpZ2h0Jy4gIFNlZSBhbHNvOiAnaGxzZWFyY2gnLgorCVdoaWxlIHR5cGluZyBhIHNlYXJjaCBjb21tYW5kLCBzaG93IHdoZXJlIHRoZSBwYXR0ZXJuLCBhcyBpdCB3YXMgdHlwZWQKKwlzbyBmYXIsIG1hdGNoZXMuICBUaGUgbWF0Y2hlZCBzdHJpbmcgaXMgaGlnaGxpZ2h0ZWQuICBJZiB0aGUgcGF0dGVybgorCWlzIGludmFsaWQgb3Igbm90IGZvdW5kLCBub3RoaW5nIGlzIHNob3duLiAgVGhlIHNjcmVlbiB3aWxsIGJlIHVwZGF0ZWQKKwlvZnRlbiwgdGhpcyBpcyBvbmx5IHVzZWZ1bCBvbiBmYXN0IHRlcm1pbmFscy4KKwlOb3RlIHRoYXQgdGhlIG1hdGNoIHdpbGwgYmUgc2hvd24sIGJ1dCB0aGUgY3Vyc29yIHdpbGwgcmV0dXJuIHRvIGl0cworCW9yaWdpbmFsIHBvc2l0aW9uIHdoZW4gbm8gbWF0Y2ggaXMgZm91bmQgYW5kIHdoZW4gcHJlc3NpbmcgPEVzYz4uICBZb3UKKwlzdGlsbCBuZWVkIHRvIGZpbmlzaCB0aGUgc2VhcmNoIGNvbW1hbmQgd2l0aCA8RW50ZXI+IHRvIG1vdmUgdGhlCisJY3Vyc29yIHRvIHRoZSBtYXRjaC4KKwlUaGUgaGlnaGxpZ2h0aW5nIGNhbiBiZSBzZXQgd2l0aCB0aGUgJ2knIGZsYWcgaW4gJ2hpZ2hsaWdodCcuCisJU2VlIGFsc286ICdobHNlYXJjaCcuCiAJTk9URTogVGhpcyBvcHRpb24gaXMgcmVzZXQgd2hlbiAnY29tcGF0aWJsZScgaXMgc2V0LgogCiAJCQkJCQkqJ2luZGVudGV4cHInKiAqJ2luZGUnKgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvc3RhcnRpbmcudHh0IGIvcnVudGltZS9kb2Mvc3RhcnRpbmcudHh0CmluZGV4IGM3M2QxN2UuLjVmM2Y5ZTkgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3N0YXJ0aW5nLnR4dAorKysgYi9ydW50aW1lL2RvYy9zdGFydGluZy50eHQKQEAgLTEsNCArMSw0IEBACi0qc3RhcnRpbmcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVuIDE4Cisqc3RhcnRpbmcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDEzCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC03NDYsNyArNzQ2LDcgQEAKIAkJICAgICJob21lOi52aW1yYyIJKGZvciBBbWlnYSkgKCopCiAJCSAgICAiJFZJTS8udmltcmMiCShmb3IgT1MvMiBhbmQgQW1pZ2EpICgqKQogCQkgICAgIiRIT01FL192aW1yYyIJKGZvciBNUy1ET1MgYW5kIFdpbjMyKSAoKikKLQkJICAgICIkVklNXF92aW1yYyIJKGZvciBNUy1ET1MgYW5kIFdpbjMyKSAoKikKKwkJICAgICIkVklNL192aW1yYyIJKGZvciBNUy1ET1MgYW5kIFdpbjMyKSAoKikKIAkJTm90ZTogRm9yIFVuaXgsIE9TLzIgYW5kIEFtaWdhLCB3aGVuICIudmltcmMiIGRvZXMgbm90IGV4aXN0LAogCQkiX3ZpbXJjIiBpcyBhbHNvIHRyaWVkLCBpbiBjYXNlIGFuIE1TLURPUyBjb21wYXRpYmxlIGZpbGUKIAkJc3lzdGVtIGlzIHVzZWQuICBGb3IgTVMtRE9TIGFuZCBXaW4zMiAiLnZpbXJjIiBpcyBjaGVja2VkCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9zeW50YXgudHh0IGIvcnVudGltZS9kb2Mvc3ludGF4LnR4dAppbmRleCBjMWU3ZGU3Li5kMzExMjJiIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9zeW50YXgudHh0CisrKyBiL3J1bnRpbWUvZG9jL3N5bnRheC50eHQKQEAgLTEsNCArMSw0IEBACi0qc3ludGF4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDA2Cisqc3ludGF4LnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDQgSnVsIDE1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMCSAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTIwODksNiArMjA4OSwxNCBAQAogIiRnbG9iYWxfdmFyIiwgIkBpbnN0YW5jZV92YXIiLCAifCBpdGVyYXRvciB8IiwgYW5kICI6c3ltYm9sIi4KIAogCitTQ0hFTUUJCQkJCQkqc2NoZW1lLnZpbSogKnNjaGVtZS1zeW50YXgqCisKK0J5IGRlZmF1bHQgb25seSBSNVJTIGtleXdvcmRzIGFyZSBoaWdobGlnaHRlZCBhbmQgcHJvcGVybHkgaW5kZW50ZWQuCisKK016U2NoZW1lLXNwZWNpZmljIHN0dWZmIHdpbGwgYmUgdXNlZCBpZiBiOmlzX216c2NoZW1lIG9yIGc6aXNfbXpzY2hlbWUKK3ZhcmlhYmxlcyBhcmUgZGVmaW5lZC4KKworCiBTREwJCQkJCQkqc2RsLnZpbSogKnNkbC1zeW50YXgqCiAKIFRoZSBTREwgaGlnaGxpZ2h0aW5nIHByb2JhYmx5IG1pc3NlcyBhIGZldyBrZXl3b3JkcywgYnV0IFNETCBoYXMgc28gbWFueQpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFncyBiL3J1bnRpbWUvZG9jL3RhZ3MKaW5kZXggNTk3ZTMwNy4uZmU3OWQ4NCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdGFncworKysgYi9ydW50aW1lL2RvYy90YWdzCkBAIC0xODEzLDYgKzE4MTMsOCBAQAogOmRpCWNoYW5nZS50eHQJLyo6ZGkqCiA6ZGlmZmcJZGlmZi50eHQJLyo6ZGlmZmcqCiA6ZGlmZmdldAlkaWZmLnR4dAkvKjpkaWZmZ2V0KgorOmRpZmZvCWRpZmYudHh0CS8qOmRpZmZvKgorOmRpZmZvZmYJZGlmZi50eHQJLyo6ZGlmZm9mZioKIDpkaWZmcAlkaWZmLnR4dAkvKjpkaWZmcCoKIDpkaWZmcGF0Y2gJZGlmZi50eHQJLyo6ZGlmZnBhdGNoKgogOmRpZmZwdQlkaWZmLnR4dAkvKjpkaWZmcHUqCkBAIC0zNTI3LDYgKzM1MjksNyBAQAogRTY3MwlwcmludC50eHQJLypFNjczKgogRTY3NAlwcmludC50eHQJLypFNjc0KgogRTY3NQlwcmludC50eHQJLypFNjc1KgorRTY3NglvcHRpb25zLnR4dAkvKkU2NzYqCiBFNjgJcGF0dGVybi50eHQJLypFNjgqCiBFNjkJcGF0dGVybi50eHQJLypFNjkqCiBFNzAJcGF0dGVybi50eHQJLypFNzAqCkBAIC01NDI0LDggKzU0MjcsMTIgQEAKIG5ldHJ3CXBpX25ldHJ3LnR4dAkvKm5ldHJ3KgogbmV0cnctLQlwaV9uZXRydy50eHQJLypuZXRydy0tKgogbmV0cnctRAlwaV9uZXRydy50eHQJLypuZXRydy1EKgorbmV0cnctSAlwaV9uZXRydy50eHQJLypuZXRydy1IKgorbmV0cnctTQlwaV9uZXRydy50eHQJLypuZXRydy1NKgorbmV0cnctUglwaV9uZXRydy50eHQJLypuZXRydy1SKgogbmV0cnctYWN0aXZhdGUJcGlfbmV0cncudHh0CS8qbmV0cnctYWN0aXZhdGUqCiBuZXRydy1icm93c2UJcGlfbmV0cncudHh0CS8qbmV0cnctYnJvd3NlKgorbmV0cnctYnJvd3NlLWNtZHMJcGlfbmV0cncudHh0CS8qbmV0cnctYnJvd3NlLWNtZHMqCiBuZXRydy1icm93c2UtdmFyCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWJyb3dzZS12YXIqCiBuZXRydy1jLWwJcGlfbmV0cncudHh0CS8qbmV0cnctYy1sKgogbmV0cnctY2FkYXZlcglwaV9uZXRydy50eHQJLypuZXRydy1jYWRhdmVyKgpAQCAtNTQzOSw5ICs1NDQ2LDkgQEAKIG5ldHJ3LWZpbGUJcGlfbmV0cncudHh0CS8qbmV0cnctZmlsZSoKIG5ldHJ3LWZpeHVwCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWZpeHVwKgogbmV0cnctZnRwCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LWZ0cCoKLW5ldHJ3LWgJcGlfbmV0cncudHh0CS8qbmV0cnctaCoKIG5ldHJ3LWhlbHAJcGlfbmV0cncudHh0CS8qbmV0cnctaGVscCoKIG5ldHJ3LWhpc3RvcnkJcGlfbmV0cncudHh0CS8qbmV0cnctaGlzdG9yeSoKK25ldHJ3LWkJcGlfbmV0cncudHh0CS8qbmV0cnctaSoKIG5ldHJ3LWxpc3QJcGlfbmV0cncudHh0CS8qbmV0cnctbGlzdCoKIG5ldHJ3LWxpc3QtaGFjawlwaV9uZXRydy50eHQJLypuZXRydy1saXN0LWhhY2sqCiBuZXRydy1tb3ZlCXBpX25ldHJ3LnR4dAkvKm5ldHJ3LW1vdmUqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IGUxOWY4NmMuLmZhMWRkZmYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1bCAxMgorKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA0IEp1bCAxNgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zMCwxMyArMzAsMTUgQEAKIAkJCQkJCQkqa25vd24tYnVncyoKIC0tLS0tLS0tLS0tLS0tLS0tLS0tIEtub3duIGJ1Z3MgYW5kIGN1cnJlbnQgd29yayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1NYWtlIGFhcCBidWlsZCBzY3JpcHQgd29yayBhZ2Fpbi4gQWxzbyB3aXRoIG16c2NoZW1lCitXaGVuIHN3aXRjaGluZyBiZXR3ZWVuIEFhcCBzY3JpcHQgYW5kIG1ha2UgVmltIHdvbid0IGFsd2F5cyBydW4uCiAKIE1hYzogQ29tcGlsaW5nIC0tZW5hYmxlLWd1aT1hdGhlbmEgZG9lc24ndCB3b3JrLiAgVHJ5IHRvIGZpeCB3aXRob3V0IGRpc2FibGluZwotQ2FyYm9uLiAgT3RoZXJ3aXNlIGFkanVzdCBjb25maWd1cmUgdG8gZGlzYWJsZSBkYXJ3aW4uIChyYWYpCitDYXJib24uICBPdGhlcndpc2UgYWRqdXN0IGNvbmZpZ3VyZSB0byBkaXNhYmxlIERhcndpbi4gKHJhZikKIAotTWFjOiAibWFrZSBpbnN0YWxsIiBkb2Vzbid0IGluc3RhbGwuCitNYWM6ICJtYWtlIGluc3RhbGwiIGRvZXNuJ3QgaW5zdGFsbC4gIFBhdGNoIGZyb20gUkFGLgogCitVVEYtOCBpbiAnY29tbWVudHMnIGNhdXNlcyB3cm9uZyBpbmRlbnQuICBDb3VudGluZyBieXRlcyBpbnN0ZWFkIG9mIGNoYXIKK3dpZHRoPyAoTmlrb2xhaSBXZWlidWxsKQogCiBGb3IgdmVyc2lvbiA3LjA6CiAtICAgSW5jbHVkZSBtYW55IFBBVENIRVM6CkBAIC0yODIsNiArMjg0LDkgQEAKICAgICBsaW5lLgogNyAgIE1ha2UgIjpzdGFydGluc2VydCIgY29tbWFuZCB3b3JrIGRpcmVjdGx5IGZvciBmdW5jdGlvbnMgYW5kIHNjcmlwdHM/CiAgICAgQWxzbyBtYWtlIGl0IHBvc3NpYmxlIHRvIGFwcGVuZCAoaXQncyBkaWZmaWN1bHQgYXQgZW5kIG9mIGxpbmUpLgorLSAgIFdoZW4gdXNpbmcgJ2luY3NlYXJjaCIgQ1RSTC1SIENUUkwtVyBnZXRzIHRoZSB3b3JkIHVuZGVyIHRoZSBjdXJzb3IsIGJ1dAorICAgIHRoZSBwYXJ0IHRoYXQgYWxyZWFkeSBtYXRjaGVkIGlzIGRvdWJsZWQgdGhlbi4gIFJlbW92ZSB0aGUgcGFydCBvZiB0aGUKKyAgICB3b3JkIHRoYXQgd291bGQgYmUgZG91YmxlZC4gIE1ha2UgaXQgd29yayBsaW5lIENUUkwtTiBpbiBJbnNlcnQgbW9kZS4KIAogVmkgaW5jb21wYXRpYmlsaXR5OgogOCAgIFdpdGggdW5kby9yZWRvIG9ubHkgbWFya3MgaW4gdGhlIGNoYW5nZWQgbGluZXMgc2hvdWxkIGJlIGNoYW5nZWQuICBPdGhlcgpAQCAtMTk5NSw2ICsyMDAwLDggQEAKICAgICBDbWRFbnRlcgkgICAgLSBFbnRlcmluZyBDbWRsaW5lIG1vZGUKICAgICBWaXN1YWxFbnRlcgkgICAgLSBFbnRlcmluZyBWaXN1YWwgbW9kZQogICAgICpMZWF2ZQkgICAgLSBMZWF2aW5nIGEgbW9kZSAoaW4gcGFpciB3aXRoIHRoZSBhYm92ZSAqRW50ZXIpCisgICAgVmltTGVhdmVDaGVjayAgICAtIEJlZm9yZSBWaW0gZGVjaWRlcyB0byBleGl0LCBzbyB0aGF0IGl0IGNhbiBiZSBjYW5jZWxsZWQKKwkJICAgICAgd2hlbiBleGl0aW5nIGlzbid0IGEgZ29vZCBpZGVhLgogICAgIENtZFVuZGVmaW5lZCAgICAtIExpa2UgRnVuY1VuZGVmaW5lZCBidXQgZm9yIHVzZXIgY29tbWFuZHMuCiAgICAgU2VhcmNoUG9zdAkgICAgLSBBZnRlciBkb2luZyBhIHNlYXJjaCBjb21tYW5kIChlLmcuIHRvIGRvICJNIikKICAgICBQcmVEaXJDaGFuZ2VkL1Bvc3REaXJDaGFuZ2VkCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKaW5kZXggZmQ5MzM1Zi4uYTFjOTAyYyAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdWwgMTEKKyp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNCBKdWwgMTYKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE3MCw2ICsxNzAsMTAgQEAKIAogQWRkZWQgIm5ic3AiIGluICdsaXN0Y2hhcnMnLiAoRGF2aWQgQmxhbmNoZXQpCiAKK0FkZGVkIHRoZSAiYWN3cml0ZSIgdmFsdWUgZm9yIHRoZSAnYnVmdHlwZScgb3B0aW9uLiAgVGhpcyBpcyBmb3IgYSBidWZmZXIgdGhhdAorZG9lc24gbm90IGhhdmUgYSBuYW1lIHRoYXQgcmVmZXJzIHRvIGEgZmlsZSBhbmQgaXMgd3JpdHRlbiB3aXRoIEJ1ZldyaXRlQ21kCithdXRvY29tbWFuZHMuCisKIEZvciBsaXNwIGluZGVudGluZyBhbmQgbWF0Y2hpbmcgcGFyZW50aGVzaXM6IChTZXJnZXkgS2hvcmV2KQogLSBzcXVhcmUgYnJhY2tldHMgYXJlIHJlY29nbml6ZWQgcHJvcGVybHkKIC0gI1woLCAjXCksICNcWyBhbmQgI1xdIGFyZSByZWNvZ25pemVkIGFzIGNoYXJhY3RlciBsaXRlcmFscwpAQCAtMjQxLDQgKzI0NSwxNCBAQAogVXNpbmcgIkA6IiB0byByZXBlYXQgYSBjb21tYW5kIGxpbmUgZGlkbid0IHdvcmsgd2hlbiBpdCBjb250YWlucyBjb250cm9sCiBjaGFyYWN0ZXJzLgogCitXaGVuIHVzaW5nIGZpbGUgY29tcGxldGlvbiBmb3IgYSB1c2VyIGNvbW1hbmQsIGl0IHdvdWxkIG5vdCBleHBhbmQgZW52aXJvbm1lbnQKK3ZhcmlhYmxlcyBsaWtlIGZvciBhIHJlZ3VsYXIgY29tbWFuZCB3aXRoIGEgZmlsZSBhcmd1bWVudC4KKworJ2NpbmRlbnQnOiBXaGVuIHRoZSBhcmd1bWVudCBvZiBhICNkZWZpbmUgbG9va3MgbGlrZSBhIEMrKyBjbGFzcyB0aGUgbmV4dCBsaW5lCitpcyBpbmRlbnRlZCB0b28gbXVjaC4KKworV2hlbiAnY29tbWVudHMnIGluY2x1ZGVzIG11bHRpLWJ5dGUgY2hhcmFjdGVycyBpbnNlcnRpbmcgdGhlIG1pZGRsZSBwYXJ0IGFuZAorYWxpZ25tZW50IG1heSBnbyB3cm9uZy4gICdjaW5kZW50JyBhbHNvIHN1ZmZlcnMgZnJvbSB0aGlzIGZvciByaWdodC1hbGlnbmVkCitpdGVtcy4KKwogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2QudmltIGIvcnVudGltZS9zeW50YXgvZC52aW0KaW5kZXggNTFlY2M0My4uYmZiNmEwMyAxMDA2NDQKLS0tIGEvcnVudGltZS9zeW50YXgvZC52aW0KKysrIGIvcnVudGltZS9zeW50YXgvZC52aW0KQEAgLTEsMTAgKzEsOSBAQAotIiBWaW0gc3ludGF4IGZpbGUgZm9yIHRoZSBEIHByb2dyYW1taW5nIGxhbmd1YWdlICh2ZXJzaW9uIDAuOTApLgorIiBWaW0gc3ludGF4IGZpbGUgZm9yIHRoZSBEIHByb2dyYW1taW5nIGxhbmd1YWdlICh2ZXJzaW9uIDAuOTUpLgogIgotIiBMYW5ndWFnZTogICAgIEQKLSIgTWFpbnRhaW5lcjogICBKYXNvbiBNaWxsczxqbWlsbHNAY3MubXVuLmNhPgotIiBVUkw6Ci0iIExhc3QgQ2hhbmdlOiAgMjAwNCBNYXkgMjEKLSIgVmVyc2lvbjogICAgICAwLjgKKyIgTGFuZ3VhZ2U6CUQKKyIgTWFpbnRhaW5lcjoJSmFzb24gTWlsbHM8am1pbGxzQGNzLm11bi5jYT4KKyIgTGFzdCBDaGFuZ2U6CTIwMDQgSnVsIDE1CisiIFZlcnNpb246CTAuMTAKICIKICIgT3B0aW9uczoKICIgICBkX2NvbW1lbnRfc3RyaW5ncyAtIHNldCB0byBoaWdobGlnaHQgc3RyaW5ncyBhbmQgbnVtYmVycyBpbiBjb21tZW50cwpAQCAtMzAsMzkgKzI5LDQwIEBACiAKICIgS2V5d29yZCBkZWZpbml0aW9ucwogIgotc3luIGtleXdvcmQgZEV4dGVybmFsCSAgICAgaW1wb3J0IG1vZHVsZSBleHRlcm4KLXN5biBrZXl3b3JkIGRDb25kaXRpb25hbCAgICAgaWYgZWxzZSBzd2l0Y2gKLXN5biBrZXl3b3JkIGRCcmFuY2gJICAgICBnb3RvIGJyZWFrIGNvbnRpbnVlCi1zeW4ga2V5d29yZCBkUmVwZWF0CSAgICAgd2hpbGUgZm9yIGRvIGZvcmVhY2gKLXN5biBrZXl3b3JkIGRCb29sZWFuCSAgICAgdHJ1ZSBmYWxzZQotc3luIGtleXdvcmQgZENvbnN0YW50CSAgICAgbnVsbAotc3luIGtleXdvcmQgZFR5cGVkZWYJICAgICBhbGlhcyB0eXBlZGVmCi1zeW4ga2V5d29yZCBkU3RydWN0dXJlCSAgICAgdGVtcGxhdGUgaW50ZXJmYWNlIGNsYXNzIGVudW0gc3RydWN0IHVuaW9uCi1zeW4ga2V5d29yZCBkT3BlcmF0b3IJICAgICBuZXcgZGVsZXRlIHR5cGVvZiBjYXN0IGFsaWduIGlzCi1zeW4ga2V5d29yZCBkT3BlcmF0b3IJICAgICB0aGlzIHN1cGVyCitzeW4ga2V5d29yZCBkRXh0ZXJuYWwJCWltcG9ydCBwYWNrYWdlIG1vZHVsZSBleHRlcm4KK3N5biBrZXl3b3JkIGRDb25kaXRpb25hbAlpZiBlbHNlIHN3aXRjaAorc3luIGtleXdvcmQgZEJyYW5jaAkJZ290byBicmVhayBjb250aW51ZQorc3luIGtleXdvcmQgZFJlcGVhdAkJd2hpbGUgZm9yIGRvIGZvcmVhY2gKK3N5biBrZXl3b3JkIGRCb29sZWFuCQl0cnVlIGZhbHNlCitzeW4ga2V5d29yZCBkQ29uc3RhbnQJCW51bGwKK3N5biBrZXl3b3JkIGRUeXBlZGVmCQlhbGlhcyB0eXBlZGVmCitzeW4ga2V5d29yZCBkU3RydWN0dXJlCQl0ZW1wbGF0ZSBpbnRlcmZhY2UgY2xhc3MgZW51bSBzdHJ1Y3QgdW5pb24KK3N5biBrZXl3b3JkIGRPcGVyYXRvcgkJbmV3IGRlbGV0ZSB0eXBlb2YgdHlwZWlkIGNhc3QgYWxpZ24gaXMKK3N5biBrZXl3b3JkIGRPcGVyYXRvcgkJdGhpcyBzdXBlcgogaWYgZXhpc3RzKCJkX2hsX29wZXJhdG9yX292ZXJsb2FkIikKLSAgc3luIGtleXdvcmQgZE9wT3ZlcmxvYWQgIG9wTmVnIG9wQ29tIG9wUG9zdEluYyBvcFBvc3REZWMgb3BBZGQgb3BTdWIgb3BTdWJfcgotICBzeW4ga2V5d29yZCBkT3BPdmVybG9hZCAgb3BNdWwgb3BEaXYgb3BEaXZfciBvcE1vZCBvcE1vZF9yIG9wQW5kIG9wT3Igb3BYb3IKLSAgc3luIGtleXdvcmQgZE9wT3ZlcmxvYWQgIG9wU2hsIG9wU2hsX3Igb3BTaHIgb3BTaHJfciBvcFVTaHIgb3BVU2hyX3Igb3BDYXQKLSAgc3luIGtleXdvcmQgZE9wT3ZlcmxvYWQgIG9wQ2F0X3Igb3BFcXVhbHMgb3BFcXVhbHMgb3BDbXAgb3BDbXAgb3BDbXAgb3BDbXAKLSAgc3luIGtleXdvcmQgZE9wT3ZlcmxvYWQgIG9wQWRkQXNzaWduIG9wU3ViQXNzaWduIG9wTXVsQXNzaWduIG9wRGl2QXNzaWduCi0gIHN5biBrZXl3b3JkIGRPcE92ZXJsb2FkICBvcE1vZEFzc2lnbiBvcEFuZEFzc2lnbiBvcE9yQXNzaWduIG9wWG9yQXNzaWduCi0gIHN5biBrZXl3b3JkIGRPcE92ZXJsb2FkICBvcFNobEFzc2lnbiBvcFNockFzc2lnbiBvcFVTaHJBc3NpZ24gb3BDYXRBc3NpZ24KLSAgc3luIGtleXdvcmQgZE9wT3ZlcmxvYWQgIG9wSW5kZXggb3BDYWxsIG9wU2xpY2UKKyAgc3luIGtleXdvcmQgZE9wT3ZlcmxvYWQJb3BOZWcgb3BDb20gb3BQb3N0SW5jIG9wUG9zdERlYyBvcEFkZCBvcFN1YiBvcFN1Yl9yCisgIHN5biBrZXl3b3JkIGRPcE92ZXJsb2FkCW9wTXVsIG9wRGl2IG9wRGl2X3Igb3BNb2Qgb3BNb2RfciBvcEFuZCBvcE9yIG9wWG9yCisgIHN5biBrZXl3b3JkIGRPcE92ZXJsb2FkCW9wU2hsIG9wU2hsX3Igb3BTaHIgb3BTaHJfciBvcFVTaHIgb3BVU2hyX3Igb3BDYXQKKyAgc3luIGtleXdvcmQgZE9wT3ZlcmxvYWQJb3BDYXRfciBvcEVxdWFscyBvcEVxdWFscyBvcENtcCBvcENtcCBvcENtcCBvcENtcAorICBzeW4ga2V5d29yZCBkT3BPdmVybG9hZAlvcEFkZEFzc2lnbiBvcFN1YkFzc2lnbiBvcE11bEFzc2lnbiBvcERpdkFzc2lnbgorICBzeW4ga2V5d29yZCBkT3BPdmVybG9hZAlvcE1vZEFzc2lnbiBvcEFuZEFzc2lnbiBvcE9yQXNzaWduIG9wWG9yQXNzaWduCisgIHN5biBrZXl3b3JkIGRPcE92ZXJsb2FkCW9wU2hsQXNzaWduIG9wU2hyQXNzaWduIG9wVVNockFzc2lnbiBvcENhdEFzc2lnbgorICBzeW4ga2V5d29yZCBkT3BPdmVybG9hZAlvcEluZGV4IG9wSW5kZXhBc3NpZ24gb3BDYWxsIG9wU2xpY2UKKyAgc3luIGtleXdvcmQgZE9wT3ZlcmxvYWQJb3BBZGRfciBvcE11bF9yIG9wQW5kX3Igb3BPcl9yIG9wWG9yX3IgCiBlbmRpZgotc3luIGtleXdvcmQgZFR5cGUJICAgICB1c2hvcnQgaW50IHVpbnQgbG9uZyB1bG9uZyBmbG9hdAotc3luIGtleXdvcmQgZFR5cGUJICAgICB2b2lkIGJ5dGUgdWJ5dGUgZG91YmxlIGJpdCBjaGFyIHdjaGFyIHVjZW50IGNlbnQKLXN5biBrZXl3b3JkIGRUeXBlCSAgICAgc2hvcnQgYm9vbCBkY2hhcgotc3luIGtleXdvcmQgZFR5cGUJICAgICByZWFsIGlyZWFsIGlmbG9hdCBpZG91YmxlIGNyZWFsIGNmbG9hdCBjZG91YmxlCi1zeW4ga2V5d29yZCBkRGVidWcJICAgICBkZXByZWNhdGVkIHVuaXR0ZXN0Ci1zeW4ga2V5d29yZCBkRXhjZXB0aW9ucyAgICAgIHRocm93IHRyeSBjYXRjaCBmaW5hbGx5Ci1zeW4ga2V5d29yZCBkU2NvcGVEZWNsICAgICAgIHB1YmxpYyBwcm90ZWN0ZWQgcHJpdmF0ZSBleHBvcnQKLXN5biBrZXl3b3JkIGRTdGF0ZW1lbnQgICAgICAgdmVyc2lvbiBkZWJ1ZyByZXR1cm4gd2l0aCBpbnZhcmlhbnQgYm9keQotc3luIGtleXdvcmQgZFN0YXRlbWVudCAgICAgICBpbiBvdXQgaW5vdXQgYXNtIG1peGluCi1zeW4ga2V5d29yZCBkU3RhdGVtZW50ICAgICAgIGZ1bmN0aW9uIGRlbGVnYXRlCi1zeW4ga2V5d29yZCBkU3RvcmFnZUNsYXNzICAgIGF1dG8gc3RhdGljIG92ZXJyaWRlIGZpbmFsIGNvbnN0IGFic3RyYWN0IHZvbGF0aWxlCi1zeW4ga2V5d29yZCBkU3RvcmFnZUNsYXNzICAgIHN5bmNocm9uaXplZAotc3luIGtleXdvcmQgZFByYWdtYQkgICAgIHByYWdtYQorc3luIGtleXdvcmQgZFR5cGUJCXVzaG9ydCBpbnQgdWludCBsb25nIHVsb25nIGZsb2F0CitzeW4ga2V5d29yZCBkVHlwZQkJdm9pZCBieXRlIHVieXRlIGRvdWJsZSBiaXQgY2hhciB3Y2hhciB1Y2VudCBjZW50CitzeW4ga2V5d29yZCBkVHlwZQkJc2hvcnQgYm9vbCBkY2hhcgorc3luIGtleXdvcmQgZFR5cGUJCXJlYWwgaXJlYWwgaWZsb2F0IGlkb3VibGUgY3JlYWwgY2Zsb2F0IGNkb3VibGUKK3N5biBrZXl3b3JkIGREZWJ1ZwkJZGVwcmVjYXRlZCB1bml0dGVzdAorc3luIGtleXdvcmQgZEV4Y2VwdGlvbnMJCXRocm93IHRyeSBjYXRjaCBmaW5hbGx5CitzeW4ga2V5d29yZCBkU2NvcGVEZWNsCQlwdWJsaWMgcHJvdGVjdGVkIHByaXZhdGUgZXhwb3J0CitzeW4ga2V5d29yZCBkU3RhdGVtZW50CQl2ZXJzaW9uIGRlYnVnIHJldHVybiB3aXRoIGludmFyaWFudCBib2R5CitzeW4ga2V5d29yZCBkU3RhdGVtZW50CQlpbiBvdXQgaW5vdXQgYXNtIG1peGluCitzeW4ga2V5d29yZCBkU3RhdGVtZW50CQlmdW5jdGlvbiBkZWxlZ2F0ZQorc3luIGtleXdvcmQgZFN0b3JhZ2VDbGFzcwlhdXRvIHN0YXRpYyBvdmVycmlkZSBmaW5hbCBjb25zdCBhYnN0cmFjdCB2b2xhdGlsZQorc3luIGtleXdvcmQgZFN0b3JhZ2VDbGFzcwlzeW5jaHJvbml6ZWQKK3N5biBrZXl3b3JkIGRQcmFnbWEJCXByYWdtYQogCiAKICIgQXNzZXJ0IGlzIGEgc3RhdGVtZW50IGFuZCBhIG1vZHVsZSBuYW1lLgpAQCAtODEsMzQgKzgxLDM0IEBACiAiIExhYmVscwogIgogIiBXZSBjb250YWluIGRTY29wZURlY2wgc28gcHVibGljOiBwcml2YXRlOiBldGMuIGFyZSBub3QgaGlnaGxpZ2h0ZWQgbGlrZSBsYWJlbHMKLXN5biBtYXRjaCAgIGRVc2VyTGFiZWwgICAgICAgIl5ccypbXyRhLXpBLVpdW18kYS16QS1aMC05X10qXHMqOiJoZT1lLTEgY29udGFpbnM9ZExhYmVsLGRTY29wZURlY2wKLXN5biBrZXl3b3JkIGRMYWJlbAkgICAgIGNhc2UgZGVmYXVsdAorc3luIG1hdGNoIGRVc2VyTGFiZWwJIl5ccypbXyRhLXpBLVpdW18kYS16QS1aMC05X10qXHMqOiJoZT1lLTEgY29udGFpbnM9ZExhYmVsLGRTY29wZURlY2wKK3N5biBrZXl3b3JkIGRMYWJlbAljYXNlIGRlZmF1bHQKIAogIiBDb21tZW50cwogIgotc3luIGtleXdvcmQgZFRvZG8JICAgICAgY29udGFpbmVkIFRPRE8gRklYTUUgVEVNUCBYWFgKLXN5biBtYXRjaCAgIGRDb21tZW50U3RhciAgICAgIGNvbnRhaW5lZCAiXlxzKlwqW14vXSJtZT1lLTEKLXN5biBtYXRjaCAgIGRDb21tZW50U3RhciAgICAgIGNvbnRhaW5lZCAiXlxzKlwqJCIKLXN5biBtYXRjaCAgIGRDb21tZW50UGx1cyAgICAgIGNvbnRhaW5lZCAiXlxzKitbXi9dIm1lPWUtMQotc3luIG1hdGNoICAgZENvbW1lbnRQbHVzICAgICAgY29udGFpbmVkICJeXHMqKyQiCitzeW4ga2V5d29yZCBkVG9kbwljb250YWluZWQgVE9ETyBGSVhNRSBURU1QIFhYWAorc3luIG1hdGNoIGRDb21tZW50U3Rhcgljb250YWluZWQgIl5ccypcKlteL10ibWU9ZS0xCitzeW4gbWF0Y2ggZENvbW1lbnRTdGFyCWNvbnRhaW5lZCAiXlxzKlwqJCIKK3N5biBtYXRjaCBkQ29tbWVudFBsdXMJY29udGFpbmVkICJeXHMqK1teL10ibWU9ZS0xCitzeW4gbWF0Y2ggZENvbW1lbnRQbHVzCWNvbnRhaW5lZCAiXlxzKiskIgogaWYgZXhpc3RzKCJkX2NvbW1lbnRfc3RyaW5ncyIpCi0gIHN5biByZWdpb24gIGRCbG9ja0NvbW1lbnRTdHJpbmcgICBjb250YWluZWQgIHN0YXJ0PSsiKyBlbmQ9KyIrIGVuZD0rXCovK21lPXMtMSxoZT1zLTEgY29udGFpbnM9ZENvbW1lbnRTdGFyLGRVbmljb2RlLGRFc2NTZXF1ZW5jZSxAU3BlbGwKLSAgc3luIHJlZ2lvbiAgZE5lc3RlZENvbW1lbnRTdHJpbmcgIGNvbnRhaW5lZCAgc3RhcnQ9KyIrIGVuZD0rIisgZW5kPSIrIm1lPXMtMSxoZT1zLTEgY29udGFpbnM9ZENvbW1lbnRQbHVzLGRVbmljb2RlLGRFc2NTZXF1ZW5jZSxAU3BlbGwKLSAgc3luIHJlZ2lvbiAgZExpbmVDb21tZW50U3RyaW5nICAgIGNvbnRhaW5lZCBzdGFydD0rIisgIGVuZD0rJFx8IisgY29udGFpbnM9ZFVuaWNvZGUsZEVzY1NlcXVlbmNlLEBTcGVsbAotICBzeW4gcmVnaW9uICBkQmxvY2tDb21tZW50ICAgICBzdGFydD0iL1wqIiAgZW5kPSJcKi8iIGNvbnRhaW5zPWRCbG9ja0NvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCi0gIHN5biByZWdpb24gIGROZXN0ZWRDb21tZW50ICAgIHN0YXJ0PSIvKyIgIGVuZD0iKy8iIGNvbnRhaW5zPWROZXN0ZWRDb21tZW50LGROZXN0ZWRDb21tZW50U3RyaW5nLGRUb2RvLEBTcGVsbAotICBzeW4gbWF0Y2ggICBkTGluZUNvbW1lbnQgICAgICAiLy8uKiIgY29udGFpbnM9ZExpbmVDb21tZW50U3RyaW5nLGRUb2RvLEBTcGVsbAorICBzeW4gcmVnaW9uIGRCbG9ja0NvbW1lbnRTdHJpbmcJY29udGFpbmVkIHN0YXJ0PSsiKyBlbmQ9KyIrIGVuZD0rXCovK21lPXMtMSxoZT1zLTEgY29udGFpbnM9ZENvbW1lbnRTdGFyLGRVbmljb2RlLGRFc2NTZXF1ZW5jZSxAU3BlbGwKKyAgc3luIHJlZ2lvbiBkTmVzdGVkQ29tbWVudFN0cmluZwljb250YWluZWQgc3RhcnQ9KyIrIGVuZD0rIisgZW5kPSIrIm1lPXMtMSxoZT1zLTEgY29udGFpbnM9ZENvbW1lbnRQbHVzLGRVbmljb2RlLGRFc2NTZXF1ZW5jZSxAU3BlbGwKKyAgc3luIHJlZ2lvbiBkTGluZUNvbW1lbnRTdHJpbmcJCWNvbnRhaW5lZCBzdGFydD0rIisgZW5kPSskXHwiKyBjb250YWlucz1kVW5pY29kZSxkRXNjU2VxdWVuY2UsQFNwZWxsCisgIHN5biByZWdpb24gZEJsb2NrQ29tbWVudAlzdGFydD0iL1wqIiAgZW5kPSJcKi8iIGNvbnRhaW5zPWRCbG9ja0NvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCisgIHN5biByZWdpb24gZE5lc3RlZENvbW1lbnQJc3RhcnQ9Ii8rIiAgZW5kPSIrLyIgY29udGFpbnM9ZE5lc3RlZENvbW1lbnQsZE5lc3RlZENvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCisgIHN5biBtYXRjaCAgZExpbmVDb21tZW50CSIvLy4qIiBjb250YWlucz1kTGluZUNvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCiBlbHNlCi0gIHN5biByZWdpb24gIGRCbG9ja0NvbW1lbnQgICAgIHN0YXJ0PSIvXCoiICBlbmQ9IlwqLyIgY29udGFpbnM9ZEJsb2NrQ29tbWVudFN0cmluZyxkVG9kbyxAU3BlbGwKLSAgc3luIHJlZ2lvbiAgZE5lc3RlZENvbW1lbnQgICAgc3RhcnQ9Ii8rIiAgZW5kPSIrLyIgY29udGFpbnM9ZE5lc3RlZENvbW1lbnQsZE5lc3RlZENvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCi0gIHN5biBtYXRjaCAgIGRMaW5lQ29tbWVudCAgICAgICIvLy4qIiBjb250YWlucz1kTGluZUNvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCisgIHN5biByZWdpb24gZEJsb2NrQ29tbWVudAlzdGFydD0iL1wqIiAgZW5kPSJcKi8iIGNvbnRhaW5zPWRCbG9ja0NvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCisgIHN5biByZWdpb24gZE5lc3RlZENvbW1lbnQJc3RhcnQ9Ii8rIiAgZW5kPSIrLyIgY29udGFpbnM9ZE5lc3RlZENvbW1lbnQsZE5lc3RlZENvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCisgIHN5biBtYXRjaCAgZExpbmVDb21tZW50CSIvLy4qIiBjb250YWlucz1kTGluZUNvbW1lbnRTdHJpbmcsZFRvZG8sQFNwZWxsCiBlbmRpZgogCi1oaSBsaW5rIGRMaW5lQ29tbWVudFN0cmluZyBkQmxvY2tDb21tZW50U3RyaW5nCi1oaSBsaW5rIGRCbG9ja0NvbW1lbnRTdHJpbmcgZFN0cmluZwotaGkgbGluayBkTmVzdGVkQ29tbWVudFN0cmluZyBkU3RyaW5nCi1oaSBsaW5rIGRDb21tZW50U3RhciAgZEJsb2NrQ29tbWVudAotaGkgbGluayBkQ29tbWVudFBsdXMgIGROZXN0ZWRDb21tZW50CitoaSBsaW5rIGRMaW5lQ29tbWVudFN0cmluZwlkQmxvY2tDb21tZW50U3RyaW5nCitoaSBsaW5rIGRCbG9ja0NvbW1lbnRTdHJpbmcJZFN0cmluZworaGkgbGluayBkTmVzdGVkQ29tbWVudFN0cmluZwlkU3RyaW5nCitoaSBsaW5rIGRDb21tZW50U3RhcgkJZEJsb2NrQ29tbWVudAoraGkgbGluayBkQ29tbWVudFBsdXMJCWROZXN0ZWRDb21tZW50CiAKIHN5biBzeW5jIG1pbmxpbmVzPTI1CiAKQEAgLTExOCw1NCArMTE4LDU0IEBACiAKICIgRXNjYXBlIHNlcXVlbmNlcyAob2N0LHNwZWNhbCBjaGFyLGhleCx3Y2hhcikuIFRoZXNlIGFyZSBub3QgY29udGFpbmVkCiAiIGJlY2F1c2UgdGhleSBhcmUgY29uc2lkZXJlZCBzdHJpbmcgbGl0dGVyYWxzCi1zeW4gbWF0Y2ggZEVzY1NlcXVlbmNlICJcXFwoXG9cezEsM31cfFtcIlxcJ1xcP250YnJmdmFdXHx1XHhcezR9XHxVXHhcezh9XHx4XHhceFwpIgotc3luIG1hdGNoIGRDaGFyYWN0ZXIgICInW14nXSonIiBjb250YWlucz1kRXNjU2VxdWVuY2UsZFNwZWNpYWxDaGFyRXJyb3IKLXN5biBtYXRjaCBkQ2hhcmFjdGVyICAiJ1xcJyciIGNvbnRhaW5zPWRFc2NTZXF1ZW5jZQotc3luIG1hdGNoIGRDaGFyYWN0ZXIgICInW15cXF0nIgorc3luIG1hdGNoIGRFc2NTZXF1ZW5jZQkiXFxcKFxvXHsxLDN9XHxbXCJcXCdcXD9udGJyZnZhXVx8dVx4XHs0fVx8VVx4XHs4fVx8eFx4XHhcKSIKK3N5biBtYXRjaCBkQ2hhcmFjdGVyCSInW14nXSonIiBjb250YWlucz1kRXNjU2VxdWVuY2UsZFNwZWNpYWxDaGFyRXJyb3IKK3N5biBtYXRjaCBkQ2hhcmFjdGVyCSInXFwnJyIgY29udGFpbnM9ZEVzY1NlcXVlbmNlCitzeW4gbWF0Y2ggZENoYXJhY3RlcgkiJ1teXFxdJyIKIAogIiBVbmljb2RlIGNoYXJhY3RlcnMKICIKLXN5biBtYXRjaCAgIGRVbmljb2RlICJcXHVcZFx7NFx9Igorc3luIG1hdGNoIGRVbmljb2RlICJcXHVcZFx7NFx9IgogCiAiIFN0cmluZy4KICIKLXN5biByZWdpb24gIGRTdHJpbmcgc3RhcnQ9KyIrIGVuZD0rIisgY29udGFpbnM9ZEVzY1NlcXVlbmNlLEBTcGVsbAotc3luIHJlZ2lvbiAgZFJhd1N0cmluZyBzdGFydD0rYCsgc2tpcD0rXFxgKyBlbmQ9K2ArIGNvbnRhaW5zPUBTcGVsbAotc3luIHJlZ2lvbiAgZFJhd1N0cmluZyBzdGFydD0rciIrIHNraXA9K1xcIisgZW5kPSsiKyBjb250YWlucz1AU3BlbGwKLXN5biByZWdpb24gIGRIZXhTdHJpbmcgc3RhcnQ9K3giKyBza2lwPStcXCIrIGVuZD0rIisKK3N5biByZWdpb24gZFN0cmluZwlzdGFydD0rIisgZW5kPSsiKyBjb250YWlucz1kRXNjU2VxdWVuY2UsQFNwZWxsCitzeW4gcmVnaW9uIGRSYXdTdHJpbmcJc3RhcnQ9K2ArIHNraXA9K1xcYCsgZW5kPStgKyBjb250YWlucz1AU3BlbGwKK3N5biByZWdpb24gZFJhd1N0cmluZwlzdGFydD0rciIrIHNraXA9K1xcIisgZW5kPSsiKyBjb250YWlucz1AU3BlbGwKK3N5biByZWdpb24gZEhleFN0cmluZwlzdGFydD0reCIrIHNraXA9K1xcIisgZW5kPSsiKwogCiAiIE51bWJlcnMKICIKIHN5biBjYXNlIGlnbm9yZQotc3luIG1hdGNoIGRJbnQgICAgICAgIGRpc3BsYXkgIlw8XGRbMC05X10qXCh1XD1sXD1cfGxcPXVcPVwpXD4iCitzeW4gbWF0Y2ggZEludAkJZGlzcGxheSAiXDxcZFswLTlfXSpcKHVcPWxcPVx8bFw9dVw9XClcPiIKICIgSGV4IG51bWJlcgotc3luIG1hdGNoIGRIZXggICAgICAgIGRpc3BsYXkgIlw8MHhbMC05YS1mX11cK1wodVw9bFw9XHxsXD11XD1cKVw+Igotc3luIG1hdGNoIGRIZXggICAgICAgIGRpc3BsYXkgIlw8XHhbMC05YS1mX10qaFwodVw9bFw9XHxsXD11XD1cKVw+Igorc3luIG1hdGNoIGRIZXgJCWRpc3BsYXkgIlw8MHhbMC05YS1mX11cK1wodVw9bFw9XHxsXD11XD1cKVw+Igorc3luIG1hdGNoIGRIZXgJCWRpc3BsYXkgIlw8XHhbMC05YS1mX10qaFwodVw9bFw9XHxsXD11XD1cKVw+IgogIiBGbGFnIHRoZSBmaXJzdCB6ZXJvIG9mIGFuIG9jdGFsIG51bWJlciBhcyBzb21ldGhpbmcgc3BlY2lhbAotc3luIG1hdGNoIGRPY3RhbCAgICAgIGRpc3BsYXkgIlw8MFswLTdfXVwrXCh1XD1sXD1cfGxcPXVcPVwpXD4iIGNvbnRhaW5zPWNPY3RhbFplcm8KLXN5biBtYXRjaCBkT2N0YWxaZXJvICBkaXNwbGF5IGNvbnRhaW5lZCAiXDwwIgorc3luIG1hdGNoIGRPY3RhbAlkaXNwbGF5ICJcPDBbMC03X11cK1wodVw9bFw9XHxsXD11XD1cKVw+IiBjb250YWlucz1jT2N0YWxaZXJvCitzeW4gbWF0Y2ggZE9jdGFsWmVybwlkaXNwbGF5IGNvbnRhaW5lZCAiXDwwIgogCiAiZmxvYXRpbmcgcG9pbnQgd2l0aG91dCB0aGUgZG90Ci1zeW4gbWF0Y2ggZEZsb2F0ICAgICAgZGlzcGxheSAiXDxcZFswLTlfXSpcKGZpXD1cfGxcPWlcKVw+Igorc3luIG1hdGNoIGRGbG9hdAlkaXNwbGF5ICJcPFxkWzAtOV9dKlwoZmlcPVx8bFw9aVwpXD4iCiAiZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB3aXRoIGRvdCwgb3B0aW9uYWwgZXhwb25lbnQKLXN5biBtYXRjaCBkRmxvYXQgICAgICBkaXNwbGF5ICJcPFxkWzAtOV9dKlwuWzAtOV9dKlwoZVstK11cPVswLTlfXVwrXClcPVtmbF1cPWlcPSIKK3N5biBtYXRjaCBkRmxvYXQJZGlzcGxheSAiXDxcZFswLTlfXSpcLlswLTlfXSpcKGVbLStdXD1bMC05X11cK1wpXD1bZmxdXD1pXD0iCiAiZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBzdGFydGluZyB3aXRoIGEgZG90LCBvcHRpb25hbCBleHBvbmVudAotc3luIG1hdGNoIGRGbG9hdCAgICAgIGRpc3BsYXkgIlwoXC5bMC05X11cK1wpXChlWy0rXVw9WzAtOV9dXCtcKVw9W2ZsXVw9aVw9XD4iCitzeW4gbWF0Y2ggZEZsb2F0CWRpc3BsYXkgIlwoXC5bMC05X11cK1wpXChlWy0rXVw9WzAtOV9dXCtcKVw9W2ZsXVw9aVw9XD4iCiAiZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB3aXRob3V0IGRvdCwgd2l0aCBleHBvbmVudAotInN5biBtYXRjaCBkRmxvYXQgICAgICBkaXNwbGF5ICJcPFxkXCtlWy0rXVw9XGRcK1tmbF1cPVw+Igotc3luIG1hdGNoIGRGbG9hdCAgICAgIGRpc3BsYXkgIlw8XGRbMC05X10qZVstK11cPVswLTlfXVwrW2ZsXVw9XD4iCisic3luIG1hdGNoIGRGbG9hdAlkaXNwbGF5ICJcPFxkXCtlWy0rXVw9XGRcK1tmbF1cPVw+Igorc3luIG1hdGNoIGRGbG9hdAlkaXNwbGF5ICJcPFxkWzAtOV9dKmVbLStdXD1bMC05X11cK1tmbF1cPVw+IgogCiAiZmxvYXRpbmcgcG9pbnQgd2l0aG91dCB0aGUgZG90Ci1zeW4gbWF0Y2ggZEhleEZsb2F0ICAgICAgZGlzcGxheSAiXDwweFx4XCtcKGZpXD1cfGxcPWlcKVw+Igorc3luIG1hdGNoIGRIZXhGbG9hdAlkaXNwbGF5ICJcPDB4XHhcK1woZmlcPVx8bFw9aVwpXD4iCiAiZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB3aXRoIGRvdCwgb3B0aW9uYWwgZXhwb25lbnQKLXN5biBtYXRjaCBkSGV4RmxvYXQgICAgICBkaXNwbGF5ICJcPDB4XHhcK1wuXHgqXChwWy0rXVw9XHhcK1wpXD1bZmxdXD1pXD0iCitzeW4gbWF0Y2ggZEhleEZsb2F0CWRpc3BsYXkgIlw8MHhceFwrXC5ceCpcKHBbLStdXD1ceFwrXClcPVtmbF1cPWlcPSIKICJmbG9hdGluZyBwb2ludCBudW1iZXIsIHdpdGhvdXQgZG90LCB3aXRoIGV4cG9uZW50Ci1zeW4gbWF0Y2ggZEhleEZsb2F0ICAgICAgZGlzcGxheSAiXDwweFx4XCtwWy0rXVw9XHhcK1tmbF1cPVw+Igorc3luIG1hdGNoIGRIZXhGbG9hdAlkaXNwbGF5ICJcPDB4XHhcK3BbLStdXD1ceFwrW2ZsXVw9XD4iCiAKICIgYmluYXJ5IG51bWJlcnMKLXN5biBtYXRjaCBkQmluYXJ5ICAgICBkaXNwbGF5ICJcPDBiWzAxX11cK1w+Igorc3luIG1hdGNoIGRCaW5hcnkJZGlzcGxheSAiXDwwYlswMV9dXCtcPiIKICIgZmxhZyBhbiBvY3RhbCBudW1iZXIgd2l0aCB3cm9uZyBkaWdpdHMKLXN5biBtYXRjaCBkT2N0YWxFcnJvciBkaXNwbGF5ICIwXG8qWzg5XVxkKiIKK3N5biBtYXRjaCBkT2N0YWxFcnJvcglkaXNwbGF5ICIwXG8qWzg5XVxkKiIKIHN5biBjYXNlIG1hdGNoCiAKICIgUHJhZ21hIChwcmVwcm9jZXNzb3IpIHN1cHBvcnQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2lzcy52aW0gYi9ydW50aW1lL3N5bnRheC9pc3MudmltCmluZGV4IDU1N2NkMGEuLmY5NGM3Y2QgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvc3ludGF4L2lzcy52aW0KKysrIGIvcnVudGltZS9zeW50YXgvaXNzLnZpbQpAQCAtMSw3ICsxLDggQEAKICIgVmltIHN5bnRheCBmaWxlCi0iIExhbmd1YWdlOglJbm5vIFNldHVwIEZpbGUgKGlzcyBmaWxlKSBhbmQgTXkgSW5ub1NldHVwIGV4dGVuc2lvbgotIiBNYWludGFpbmVyOglEb21pbmlxdWUgU3TpcGhhbiAoZG9taW5pcXVlQG1nZ2VuLmNvbSkKLSIgTGFzdCBjaGFuZ2U6CTIwMDQgSnVseSA1CisiIExhbmd1YWdlOiAgICAgICAgICAgICBJbm5vIFNldHVwIEZpbGUgKGlzcyBmaWxlKSBhbmQgTXkgSW5ub1NldHVwIGV4dGVuc2lvbgorIiBNYWludGFpbmVyOiAgICAgICAgICAgSmFzb24gTWlsbHMgKGptaWxsc0Bjcy5tdW4uY2EpCisiIFByZXZpb3VzIE1haW50YWluZXI6ICBEb21pbmlxdWUgU3TpcGhhbiAoZG9taW5pcXVlQG1nZ2VuLmNvbSkKKyIgTGFzdCBDaGFuZ2U6ICAgICAgICAgIDIwMDQgSnVsIDEzCiAKICIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCiAiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCkBAIC0xNCwzNyArMTUsNDAgQEAKICIgc2h1dCBjYXNlIG9mZgogc3luIGNhc2UgaWdub3JlCiAKKyIgUHJlcHJvY2Vzc29yCitzeW4gcmVnaW9uIGlzc1ByZVByb2Mgc3RhcnQ9Il5ccyojIiBlbmQ9IiQiCisKICIgU2VjdGlvbgotc3luIHJlZ2lvbiBpc3NIZWFkZXIJCXN0YXJ0PSJcWyIgZW5kPSJcXSIKK3N5biByZWdpb24gaXNzSGVhZGVyICAgICAgICAgICAgc3RhcnQ9IlxbIiBlbmQ9IlxdIgogCiAiIExhYmVsIGluIHRoZSBbU2V0dXBdIFNlY3Rpb24KLXN5biBtYXRjaCAgaXNzTGFiZWwJCSJeW149XVwrPSIKK3N5biBtYXRjaCAgaXNzTGFiZWwgICAgICAgICAgICAgIl5bXj1dXCs9IgogCiAiIFVSTAotc3luIG1hdGNoICBpc3NVUkwJCSJodHRwW3NdXD06XC9cLy4qJCIKK3N5biBtYXRjaCAgaXNzVVJMICAgICAgICJodHRwW3NdXD06XC9cLy4qJCIKIAotIiBzeW4gbWF0Y2ggIGlzc05hbWUJCSJbXjogXVwrOiIKLXN5biBtYXRjaCAgaXNzTmFtZQkJIk5hbWU6Igotc3luIG1hdGNoICBpc3NOYW1lCQkiTWluVmVyc2lvbjpcfE9ubHlCZWxvd1ZlcnNpb246XHxMYW5ndWFnZXM6Igotc3luIG1hdGNoICBpc3NOYW1lCQkiU291cmNlOlx8RGVzdERpcjpcfERlc3ROYW1lOlx8Q29weU1vZGU6Igotc3luIG1hdGNoICBpc3NOYW1lCQkiQXR0cmliczpcfFBlcm1pc3Npb25zOlx8Rm9udEluc3RhbGw6XHxGbGFnczoiCi1zeW4gbWF0Y2ggIGlzc05hbWUJCSJGaWxlTmFtZTpcfFBhcmFtZXRlcnM6XHxXb3JraW5nRGlyOlx8SG90S2V5Olx8Q29tbWVudDoiCi1zeW4gbWF0Y2ggIGlzc05hbWUJCSJJY29uRmlsZW5hbWU6XHxJY29uSW5kZXg6Igotc3luIG1hdGNoICBpc3NOYW1lCQkiU2VjdGlvbjpcfEtleTpcfFN0cmluZzoiCi1zeW4gbWF0Y2ggIGlzc05hbWUJCSJSb290Olx8U3ViS2V5Olx8VmFsdWVUeXBlOlx8VmFsdWVOYW1lOlx8VmFsdWVEYXRhOiIKLXN5biBtYXRjaCAgaXNzTmFtZQkJIlJ1bk9uY2VJZDoiCi1zeW4gbWF0Y2ggIGlzc05hbWUJCSJUeXBlOiIKLXN5biBtYXRjaCAgaXNzTmFtZQkJIkNvbXBvbmVudHM6XHxEZXNjcmlwdGlvbjpcfEdyb3VwRGVzY3JpcHRpb246XHxUeXBlczpcfEV4dHJhRGlza1NwYWNlUmVxdWlyZWQ6Igotc3luIG1hdGNoICBpc3NOYW1lICAgICAgICAgICAgICAiU3RhdHVzTXNnOlx8UnVuT25jZUlkOlx8VGFza3M6Igotc3luIG1hdGNoICBpc3NOYW1lICAgICAgICAgICAgICAiTWVzc2FnZXNGaWxlOlx8TGljZW5zZUZpbGU6XHxJbmZvQmVmb3JlRmlsZTpcfEluZm9BZnRlckZpbGU6IgorIiBzeW4gbWF0Y2ggIGlzc05hbWUgICAgIlteOiBdXCs6Igorc3luIG1hdGNoICBpc3NOYW1lICAgICAgIk5hbWU6Igorc3luIG1hdGNoICBpc3NOYW1lICAgICAgIk1pblZlcnNpb246XHxPbmx5QmVsb3dWZXJzaW9uOlx8TGFuZ3VhZ2VzOiIKK3N5biBtYXRjaCAgaXNzTmFtZSAgICAgICJTb3VyY2U6XHxEZXN0RGlyOlx8RGVzdE5hbWU6XHxDb3B5TW9kZToiCitzeW4gbWF0Y2ggIGlzc05hbWUgICAgICAiQXR0cmliczpcfFBlcm1pc3Npb25zOlx8Rm9udEluc3RhbGw6XHxGbGFnczoiCitzeW4gbWF0Y2ggIGlzc05hbWUgICAgICAiRmlsZU5hbWU6XHxQYXJhbWV0ZXJzOlx8V29ya2luZ0RpcjpcfEhvdEtleTpcfENvbW1lbnQ6Igorc3luIG1hdGNoICBpc3NOYW1lICAgICAgIkljb25GaWxlbmFtZTpcfEljb25JbmRleDoiCitzeW4gbWF0Y2ggIGlzc05hbWUgICAgICAiU2VjdGlvbjpcfEtleTpcfFN0cmluZzoiCitzeW4gbWF0Y2ggIGlzc05hbWUgICAgICAiUm9vdDpcfFN1YktleTpcfFZhbHVlVHlwZTpcfFZhbHVlTmFtZTpcfFZhbHVlRGF0YToiCitzeW4gbWF0Y2ggIGlzc05hbWUgICAgICAiUnVuT25jZUlkOiIKK3N5biBtYXRjaCAgaXNzTmFtZSAgICAgICJUeXBlOiIKK3N5biBtYXRjaCAgaXNzTmFtZSAgICAgICJDb21wb25lbnRzOlx8RGVzY3JpcHRpb246XHxHcm91cERlc2NyaXB0aW9uOlx8VHlwZXM6XHxFeHRyYURpc2tTcGFjZVJlcXVpcmVkOiIKK3N5biBtYXRjaCAgaXNzTmFtZSAgICAgICJTdGF0dXNNc2c6XHxSdW5PbmNlSWQ6XHxUYXNrczoiCitzeW4gbWF0Y2ggIGlzc05hbWUgICAgICAiTWVzc2FnZXNGaWxlOlx8TGljZW5zZUZpbGU6XHxJbmZvQmVmb3JlRmlsZTpcfEluZm9BZnRlckZpbGU6IgogCi1zeW4gbWF0Y2ggIGlzc0NvbW1lbnQJCSJeOy4qJCIKK3N5biBtYXRjaCAgaXNzQ29tbWVudCAgICJeOy4qJCIKIAogIiBmb2xkZXIgY29uc3RhbnQKLXN5biBtYXRjaCAgaXNzRm9sZGVyCQkie1tee10qfSIKK3N5biBtYXRjaCAgaXNzRm9sZGVyICAgICJ7W157XSp9IgogCiAiIHN0cmluZwotc3luIHJlZ2lvbiBpc3NTdHJpbmcJc3RhcnQ9KyIrICBlbmQ9KyIrIGNvbnRhaW5zPWlzc0ZvbGRlcgorc3luIHJlZ2lvbiBpc3NTdHJpbmcgICAgc3RhcnQ9KyIrICBlbmQ9KyIrIGNvbnRhaW5zPWlzc0ZvbGRlcgogCiAiIFtEaXJzXQogc3luIGtleXdvcmQgaXNzRGlyc0ZsYWdzIGRlbGV0ZWFmdGVyaW5zdGFsbCB1bmluc2Fsd2F5c3VuaW5zdGFsbCB1bmluc25ldmVydW5pbnN0YWxsCkBAIC0xMDQsMzEgKzEwOCwzMCBAQAogICBlbmRpZgogCiAgICAiIFRoZSBkZWZhdWx0IG1ldGhvZHMgZm9yIGhpZ2hsaWdodGluZy4gIENhbiBiZSBvdmVycmlkZGVuIGxhdGVyCi0gICBIaUxpbmsgaXNzSGVhZGVyCVNwZWNpYWwKLSAgIEhpTGluayBpc3NDb21tZW50CUNvbW1lbnQKLSAgIEhpTGluayBpc3NMYWJlbAlUeXBlCi0gICBIaUxpbmsgaXNzTmFtZQlUeXBlCi0gICBIaUxpbmsgaXNzRm9sZGVyCVNwZWNpYWwKLSAgIEhpTGluayBpc3NTdHJpbmcJU3RyaW5nCi0gICBIaUxpbmsgaXNzVmFsdWUJU3RyaW5nCi0gICBIaUxpbmsgaXNzVVJMCUluY2x1ZGUKKyAgIEhpTGluayBpc3NIZWFkZXIgICAgIFNwZWNpYWwKKyAgIEhpTGluayBpc3NDb21tZW50ICAgIENvbW1lbnQKKyAgIEhpTGluayBpc3NMYWJlbCAgICAgIFR5cGUKKyAgIEhpTGluayBpc3NOYW1lICAgICAgIFR5cGUKKyAgIEhpTGluayBpc3NGb2xkZXIgICAgIFNwZWNpYWwKKyAgIEhpTGluayBpc3NTdHJpbmcgICAgIFN0cmluZworICAgSGlMaW5rIGlzc1ZhbHVlICAgICAgU3RyaW5nCisgICBIaUxpbmsgaXNzVVJMICAgICAgICBJbmNsdWRlCisgICBIaUxpbmsgaXNzUHJlUHJvYyAgICBQcmVQcm9jIAogCi0gICBIaUxpbmsgaXNzRGlyc0ZsYWdzCQlLZXl3b3JkCi0gICBIaUxpbmsgaXNzRmlsZXNDb3B5TW9kZQlLZXl3b3JkCi0gICBIaUxpbmsgaXNzRmlsZXNBdHRyaWJzCUtleXdvcmQKLSAgIEhpTGluayBpc3NGaWxlc1Blcm1pc3Npb25zCUtleXdvcmQKLSAgIEhpTGluayBpc3NGaWxlc0ZsYWdzCQlLZXl3b3JkCi0gICBIaUxpbmsgaXNzSWNvbnNGbGFncwkJS2V5d29yZAotICAgSGlMaW5rIGlzc0lOSUZsYWdzCQlLZXl3b3JkCi0gICBIaUxpbmsgaXNzUmVnUm9vdEtleQkJS2V5d29yZAotICAgSGlMaW5rIGlzc1JlZ1ZhbHVlVHlwZQlLZXl3b3JkCi0gICBIaUxpbmsgaXNzUmVnRmxhZ3MJCUtleXdvcmQKLSAgIEhpTGluayBpc3NSdW5GbGFncwkJS2V5d29yZAotICAgSGlMaW5rIGlzc1R5cGVzRmxhZ3MJCUtleXdvcmQKLSAgIEhpTGluayBpc3NDb21wb25lbnRzRmxhZ3MJS2V5d29yZAotICAgSGlMaW5rIGlzc0luc3RhbGxEZWxldGVUeXBlCUtleXdvcmQKLSAgIEhpTGluayBpc3NUYXNrc0ZsYWdzIAlLZXl3b3JkCi0KKyAgIEhpTGluayBpc3NEaXJzRmxhZ3MgICAgICAgICAgS2V5d29yZAorICAgSGlMaW5rIGlzc0ZpbGVzQ29weU1vZGUgICAgICBLZXl3b3JkCisgICBIaUxpbmsgaXNzRmlsZXNBdHRyaWJzICAgICAgIEtleXdvcmQKKyAgIEhpTGluayBpc3NGaWxlc0ZsYWdzICAgICAgICAgS2V5d29yZAorICAgSGlMaW5rIGlzc0ljb25zRmxhZ3MgICAgICAgICBLZXl3b3JkCisgICBIaUxpbmsgaXNzSU5JRmxhZ3MgICAgICAgICAgIEtleXdvcmQKKyAgIEhpTGluayBpc3NSZWdSb290S2V5ICAgICAgICAgS2V5d29yZAorICAgSGlMaW5rIGlzc1JlZ1ZhbHVlVHlwZSAgICAgICBLZXl3b3JkCisgICBIaUxpbmsgaXNzUmVnRmxhZ3MgICAgICAgICAgIEtleXdvcmQKKyAgIEhpTGluayBpc3NSdW5GbGFncyAgICAgICAgICAgS2V5d29yZAorICAgSGlMaW5rIGlzc1R5cGVzRmxhZ3MgICAgICAgICBLZXl3b3JkCisgICBIaUxpbmsgaXNzQ29tcG9uZW50c0ZsYWdzICAgIEtleXdvcmQKKyAgIEhpTGluayBpc3NJbnN0YWxsRGVsZXRlVHlwZSAgS2V5d29yZAorICAgSGlMaW5rIGlzc1Rhc2tzRmxhZ3MgICAgICAgICBLZXl3b3JkCiAKICAgZGVsY29tbWFuZCBIaUxpbmsKIGVuZGlmCmRpZmYgLS1naXQgYS9ydW50aW1lL3N5bnRheC9zY2hlbWUudmltIGIvcnVudGltZS9zeW50YXgvc2NoZW1lLnZpbQppbmRleCBkM2RlMzViLi4xZDRmNTVkIDEwMDY0NAotLS0gYS9ydW50aW1lL3N5bnRheC9zY2hlbWUudmltCisrKyBiL3J1bnRpbWUvc3ludGF4L3NjaGVtZS52aW0KQEAgLTEsMTEgKzEsMTQgQEAKICIgVmltIHN5bnRheCBmaWxlCiAiIExhbmd1YWdlOglTY2hlbWUgKFI1UlMpCi0iIE1haW50YWluZXI6CURpcmsgdmFuIERldW4gPGRpcmtAaWd3ZS52dWIuYWMuYmU+Ci0iIExhc3QgQ2hhbmdlOglBcHJpbCAzMCwgMTk5OAorIiBMYXN0IENoYW5nZToJSnVseSAxNCwgMjAwNAorIiBNYWludGFpbmVyOglTZXJnZXkgS2hvcmV2IDxpYW1waGV0QG5tLnJ1PgorIiBPcmlnaW5hbCBhdXRob3I6CURpcmsgdmFuIERldW4gPGRpcmtAaWd3ZS52dWIuYWMuYmU+CiAKICIgVGhpcyBzY3JpcHQgaW5jb3JyZWN0bHkgcmVjb2duaXplcyBzb21lIGp1bmsgaW5wdXQgYXMgbnVtZXJhbHM6CiAiIHBhcnNpbmcgdGhlIGNvbXBsZXRlIHN5c3RlbSBvZiBTY2hlbWUgbnVtZXJhbHMgdXNpbmcgdGhlIHBhdHRlcm4KICIgbGFuZ3VhZ2UgaXMgcHJhY3RpY2FsbHkgaW1wb3NzaWJsZTogSSBkaWQgYSBsYXggYXBwcm94aW1hdGlvbi4KKyAKKyIgTXpTY2hlbWUgZXh0ZW5zaW9ucyBjYW4gYmUgYWN0aXZhdGVkIHdpdGggc2V0dGluZyBpc19tenNjaGVtZSB2YXJpYWJsZQogCiAiIFN1Z2dlc3Rpb25zIGFuZCBidWcgcmVwb3J0cyBhcmUgc29saWNpdGVkIGJ5IHRoZSBhdXRob3IuCiAKQEAgLTIzLDEyICsyNiwxMiBAQAogCiAiIEZhc2Npc3QgaGlnaGxpZ2h0aW5nOiBldmVyeXRoaW5nIHRoYXQgZG9lc24ndCBmaXQgdGhlIHJ1bGVzIGlzIGFuIGVycm9yLi4uCiAKLXN5biBtYXRjaAlzY2hlbWVFcnJvcglvbmVsaW5lICAgICFbXiBcdCgpIjtdKiEKK3N5biBtYXRjaAlzY2hlbWVFcnJvcglvbmVsaW5lICAgICFbXiBcdCgpXFtcXSI7XSohCiBzeW4gbWF0Y2gJc2NoZW1lRXJyb3IJb25lbGluZSAgICAiKSIKIAogIiBRdW90ZWQgYW5kIGJhY2txdW90ZWQgc3R1ZmYKIAotc3luIHJlZ2lvbiBzY2hlbWVRdW90ZWQgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IlsnYF0iIGVuZD0hWyBcdCgpIjtdIW1lPWUtMSBjb250YWlucz1BTExCVVQsc2NoZW1lU3RydWMsc2NoZW1lU3ludGF4LHNjaGVtZUZ1bmMKK3N5biByZWdpb24gc2NoZW1lUXVvdGVkIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSJbJ2BdIiBlbmQ9IVsgXHQoKVxbXF0iO10hbWU9ZS0xIGNvbnRhaW5zPUFMTEJVVCxzY2hlbWVTdHJ1YyxzY2hlbWVTeW50YXgsc2NoZW1lRnVuYwogCiBzeW4gcmVnaW9uIHNjaGVtZVF1b3RlZCBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iWydgXSgiIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIGVuZD0iKSIgY29udGFpbnM9QUxMQlVULHNjaGVtZVN0cnVjLHNjaGVtZVN5bnRheCxzY2hlbWVGdW5jCiBzeW4gcmVnaW9uIHNjaGVtZVF1b3RlZCBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iWydgXSMoIiBtYXRjaGdyb3VwPURlbGltaXRlciBlbmQ9IikiIGNvbnRhaW5zPUFMTEJVVCxzY2hlbWVTdHJ1YyxzY2hlbWVTeW50YXgsc2NoZW1lRnVuYwpAQCAtMzYsMTUgKzM5LDI2IEBACiBzeW4gcmVnaW9uIHNjaGVtZVN0cnVjUmVzdHJpY3RlZCBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iKCIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgZW5kPSIpIiBjb250YWlucz1BTExCVVQsc2NoZW1lU3RydWMsc2NoZW1lU3ludGF4LHNjaGVtZUZ1bmMKIHN5biByZWdpb24gc2NoZW1lU3RydWNSZXN0cmljdGVkIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIjKCIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgZW5kPSIpIiBjb250YWlucz1BTExCVVQsc2NoZW1lU3RydWMsc2NoZW1lU3ludGF4LHNjaGVtZUZ1bmMKIAotc3luIHJlZ2lvbiBzY2hlbWVVbnF1b3RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIsIiBlbmQ9IVsgXHQoKSI7XSFtZT1lLTEgY29udGFpbnM9QUxMQlVULHNjaGVtZVN0cnVjLHNjaGVtZVN5bnRheCxzY2hlbWVGdW5jCi1zeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IixAIiBlbmQ9IVsgXHQoKSI7XSFtZT1lLTEgY29udGFpbnM9QUxMQlVULHNjaGVtZVN0cnVjLHNjaGVtZVN5bnRheCxzY2hlbWVGdW5jCisiIFBvcHVsYXIgU2NoZW1lIGV4dGVuc2lvbjoKKyIgdXNpbmcgW10gYXMgd2VsbCBhcyAoKQorc3luIHJlZ2lvbiBzY2hlbWVTdHJ1Y1Jlc3RyaWN0ZWQgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IlxbIiBtYXRjaGdyb3VwPURlbGltaXRlciBlbmQ9IlxdIiBjb250YWlucz1BTExCVVQsc2NoZW1lU3RydWMsc2NoZW1lU3ludGF4LHNjaGVtZUZ1bmMKK3N5biByZWdpb24gc2NoZW1lU3RydWNSZXN0cmljdGVkIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIjXFsiIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIGVuZD0iXF0iIGNvbnRhaW5zPUFMTEJVVCxzY2hlbWVTdHJ1YyxzY2hlbWVTeW50YXgsc2NoZW1lRnVuYwogCi1zeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiwoIiBlbmQ9IikiIGNvbnRhaW5zPUFMTEJVVCxzY2hlbWVTdHJ1YyxzY2hlbWVTeW50YXgsc2NoZW1lRnVuYwotc3luIHJlZ2lvbiBzY2hlbWVVbnF1b3RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIsQCgiIGVuZD0iKSIgY29udGFpbnM9QUxMQlVULHNjaGVtZVN0cnVjLHNjaGVtZVN5bnRheCxzY2hlbWVGdW5jCitzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiwiIGVuZD0hWyBcdFxbXF0oKSI7XSFtZT1lLTEgY29udGFpbnM9QUxMQlVULHNjaGVtZVN0cnVjLHNjaGVtZVN5bnRheCxzY2hlbWVGdW5jCitzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IixAIiBlbmQ9IVsgXHRcW1xdKCkiO10hbWU9ZS0xIGNvbnRhaW5zPUFMTEJVVCxzY2hlbWVTdHJ1YyxzY2hlbWVTeW50YXgsc2NoZW1lRnVuYworCitzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiwoIiBlbmQ9IikiIGNvbnRhaW5zPUFMTAorc3luIHJlZ2lvbiBzY2hlbWVVbnF1b3RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIsQCgiIGVuZD0iKSIgY29udGFpbnM9QUxMCiAKIHN5biByZWdpb24gc2NoZW1lVW5xdW90ZSBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iLCMoIiBlbmQ9IikiIGNvbnRhaW5zPUFMTEJVVCxzY2hlbWVTdHJ1YyxzY2hlbWVTeW50YXgsc2NoZW1lRnVuYwogc3luIHJlZ2lvbiBzY2hlbWVVbnF1b3RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIsQCMoIiBlbmQ9IikiIGNvbnRhaW5zPUFMTEJVVCxzY2hlbWVTdHJ1YyxzY2hlbWVTeW50YXgsc2NoZW1lRnVuYwogCitzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IixcWyIgZW5kPSJcXSIgY29udGFpbnM9QUxMCitzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IixAXFsiIGVuZD0iXF0iIGNvbnRhaW5zPUFMTAorCitzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiwjXFsiIGVuZD0iXF0iIGNvbnRhaW5zPUFMTEJVVCxzY2hlbWVTdHJ1YyxzY2hlbWVTeW50YXgsc2NoZW1lRnVuYworc3luIHJlZ2lvbiBzY2hlbWVVbnF1b3RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIsQCNcWyIgZW5kPSJcXSIgY29udGFpbnM9QUxMQlVULHNjaGVtZVN0cnVjLHNjaGVtZVN5bnRheCxzY2hlbWVGdW5jCisKICIgUjVSUyBTY2hlbWUgRnVuY3Rpb25zIGFuZCBTeW50YXg6CiAKIGlmIHZlcnNpb24gPCA2MDAKQEAgLTk2LDYzICsxMTAsMTI2IEBACiBzeW4ga2V5d29yZCBzY2hlbWVGdW5jIHNjaGVtZS1yZXBvcnQtZW52aXJvbm1lbnQgbnVsbC1lbnZpcm9ubWVudAogc3luIGtleXdvcmQgc2NoZW1lRnVuYyBpbnRlcmFjdGlvbi1lbnZpcm9ubWVudAogCi0iIFdyaXRpbmcgb3V0IHRoZSBjb21wbGV0ZSBkZXNjcmlwdGlvbiBvZiBTY2hlbWUgbnVtZXJhbHMgd2l0aG91dAotIiB1c2luZyB2YXJpYWJsZXMgaXMgYSBkYXkncyB3b3JrIGZvciBhIHRyYWluZWQgc2VjcmV0YXJ5Li4uCi0iIFRoaXMgaXMgYSB1c2VmdWwgbGF4IGFwcHJveGltYXRpb246Ci0KLXN5biBtYXRjaAlzY2hlbWVOdW1iZXIJb25lbGluZSAgICAiWy0jKzAtOS5dWy0jKy8wLTlhLWZAaS5ib3hlc2ZkbF0qIgotc3luIG1hdGNoCXNjaGVtZUVycm9yCW9uZWxpbmUgICAgIVstIyswLTkuXVstIysvMC05YS1mQGkuYm94ZXNmZGxdKlteLSMrLzAtOWEtZkBpLmJveGVzZmRsIFx0KCkiO11bXiBcdCgpIjtdKiEKLQotc3luIG1hdGNoCXNjaGVtZU90aGVyCW9uZWxpbmUgICAgIVsrLV1bIFx0KCkiO10hbWU9ZS0xCi1zeW4gbWF0Y2gJc2NoZW1lT3RoZXIJb25lbGluZSAgICAhWystXSQhCiAiIC4uLiBzbyB0aGF0IGEgc2luZ2xlICsgb3IgLSwgaW5zaWRlIGEgcXVvdGVkIGNvbnRleHQsIHdvdWxkIG5vdCBiZQogIiBpbnRlcnByZXRlZCBhcyBhIG51bWJlciAob3V0c2lkZSBzdWNoIGNvbnRleHRzLCBpdCdzIGEgc2NoZW1lRnVuYykKIAotc3luIG1hdGNoCXNjaGVtZURlbGltaXRlcglvbmVsaW5lICAgICFcLlsgXHQoKSI7XSFtZT1lLTEKK3N5biBtYXRjaAlzY2hlbWVEZWxpbWl0ZXIJb25lbGluZSAgICAhXC5bIFx0XFtcXSgpIjtdIW1lPWUtMQogc3luIG1hdGNoCXNjaGVtZURlbGltaXRlcglvbmVsaW5lICAgICFcLiQhCiAiIC4uLiBhbmQgYSBzaW5nbGUgZG90IGlzIG5vdCBhIG51bWJlciBidXQgYSBkZWxpbWl0ZXIKIAotIiBTaW1wbGUgbGl0ZXJhbHM6Ci0KLXN5biBtYXRjaAlzY2hlbWVCb29sZWFuCW9uZWxpbmUgICAgIiNbdGZdIgotc3luIG1hdGNoCXNjaGVtZUVycm9yCW9uZWxpbmUgICAgISNbdGZdW14gXHQoKSI7XVwrIQotCi1zeW4gbWF0Y2gJc2NoZW1lQ2hhcglvbmVsaW5lICAgICIjXFwiCi1zeW4gbWF0Y2gJc2NoZW1lQ2hhcglvbmVsaW5lICAgICIjXFwuIgotc3luIG1hdGNoICAgICAgIHNjaGVtZUVycm9yCW9uZWxpbmUgICAgISNcXC5bXiBcdCgpIjtdXCshCi1zeW4gbWF0Y2gJc2NoZW1lQ2hhcglvbmVsaW5lICAgICIjXFxzcGFjZSIKLXN5biBtYXRjaAlzY2hlbWVFcnJvcglvbmVsaW5lICAgICEjXFxzcGFjZVteIFx0KCkiO11cKyEKLXN5biBtYXRjaAlzY2hlbWVDaGFyCW9uZWxpbmUgICAgIiNcXG5ld2xpbmUiCi1zeW4gbWF0Y2gJc2NoZW1lRXJyb3IJb25lbGluZSAgICAhI1xcbmV3bGluZVteIFx0KCkiO11cKyEKLQogIiBUaGlzIGtlZXBzIGFsbCBvdGhlciBzdHVmZiB1bmhpZ2hsaWdodGVkLCBleGNlcHQgKnN0dWZmKiBhbmQgPHN0dWZmPjoKIAotc3luIG1hdGNoCXNjaGVtZU90aGVyCW9uZWxpbmUgICAgLFthLXohJCUmKi86PD0+P15ffl1bLWEteiEkJSYqLzo8PT4/Xl9+MC05Ky5AXSosCi1zeW4gbWF0Y2gJc2NoZW1lRXJyb3IJb25lbGluZSAgICAsW2EteiEkJSYqLzo8PT4/Xl9+XVstYS16ISQlJiovOjw9Pj9eX34wLTkrLkBdKlteLWEteiEkJSYqLzo8PT4/Xl9+MC05Ky5AIFx0KCkiO11cK1teIFx0KCkiO10qLAorc3luIG1hdGNoCXNjaGVtZU90aGVyCW9uZWxpbmUgICAgLFthLXohJCUmKi86PD0+P15ffitAIyUtXVstYS16ISQlJiovOjw9Pj9eX34wLTkrLkAjJV0qLAorc3luIG1hdGNoCXNjaGVtZUVycm9yCW9uZWxpbmUgICAgLFthLXohJCUmKi86PD0+P15ffitAIyUtXVstYS16ISQlJiovOjw9Pj9eX34wLTkrLkAjJV0qW14tYS16ISQlJiovOjw9Pj9eX34wLTkrLkAgXHRcW1xdKCkiO11cK1teIFx0XFtcXSgpIjtdKiwKIAogc3luIG1hdGNoCXNjaGVtZU90aGVyCW9uZWxpbmUgICAgIlwuXC5cLiIKLXN5biBtYXRjaAlzY2hlbWVFcnJvcglvbmVsaW5lICAgICFcLlwuXC5bXiBcdCgpIjtdXCshCitzeW4gbWF0Y2gJc2NoZW1lRXJyb3IJb25lbGluZSAgICAhXC5cLlwuW14gXHRcW1xdKCkiO11cKyEKICIgLi4uIGEgc3BlY2lhbCBpZGVudGlmaWVyCiAKLXN5biBtYXRjaAlzY2hlbWVDb25zdGFudAlvbmVsaW5lICAgICxcKlstYS16ISQlJiovOjw9Pj9eX34wLTkrLkBdKlwqWyBcdCgpIjtdLG1lPWUtMQorc3luIG1hdGNoCXNjaGVtZUNvbnN0YW50CW9uZWxpbmUgICAgLFwqWy1hLXohJCUmKi86PD0+P15ffjAtOSsuQF0qXCpbIFx0XFtcXSgpIjtdLG1lPWUtMQogc3luIG1hdGNoCXNjaGVtZUNvbnN0YW50CW9uZWxpbmUgICAgLFwqWy1hLXohJCUmKi86PD0+P15ffjAtOSsuQF0qXCokLAotc3luIG1hdGNoCXNjaGVtZUVycm9yCW9uZWxpbmUgICAgLFwqWy1hLXohJCUmKi86PD0+P15ffjAtOSsuQF0qXCpbXi1hLXohJCUmKi86PD0+P15ffjAtOSsuQCBcdCgpIjtdXCtbXiBcdCgpIjtdKiwKK3N5biBtYXRjaAlzY2hlbWVFcnJvcglvbmVsaW5lICAgICxcKlstYS16ISQlJiovOjw9Pj9eX34wLTkrLkBdKlwqW14tYS16ISQlJiovOjw9Pj9eX34wLTkrLkAgXHRcW1xdKCkiO11cK1teIFx0XFtcXSgpIjtdKiwKIAotc3luIG1hdGNoCXNjaGVtZUNvbnN0YW50CW9uZWxpbmUgICAgLDxbLWEteiEkJSYqLzo8PT4/Xl9+MC05Ky5AXSo+WyBcdCgpIjtdLG1lPWUtMQorc3luIG1hdGNoCXNjaGVtZUNvbnN0YW50CW9uZWxpbmUgICAgLDxbLWEteiEkJSYqLzo8PT4/Xl9+MC05Ky5AXSo+WyBcdFxbXF0oKSI7XSxtZT1lLTEKIHN5biBtYXRjaAlzY2hlbWVDb25zdGFudAlvbmVsaW5lICAgICw8Wy1hLXohJCUmKi86PD0+P15ffjAtOSsuQF0qPiQsCi1zeW4gbWF0Y2gJc2NoZW1lRXJyb3IJb25lbGluZSAgICAsPFstYS16ISQlJiovOjw9Pj9eX34wLTkrLkBdKj5bXi1hLXohJCUmKi86PD0+P15ffjAtOSsuQCBcdCgpIjtdXCtbXiBcdCgpIjtdKiwKK3N5biBtYXRjaAlzY2hlbWVFcnJvcglvbmVsaW5lICAgICw8Wy1hLXohJCUmKi86PD0+P15ffjAtOSsuQF0qPlteLWEteiEkJSYqLzo8PT4/Xl9+MC05Ky5AIFx0XFtcXSgpIjtdXCtbXiBcdFxbXF0oKSI7XSosCiAKICIgTm9uLXF1b3RlZCBsaXN0cywgYW5kIHN0cmluZ3M6CiAKIHN5biByZWdpb24gc2NoZW1lU3RydWMgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IigiIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIGVuZD0iKSIgY29udGFpbnM9QUxMCiBzeW4gcmVnaW9uIHNjaGVtZVN0cnVjIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIjKCIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgZW5kPSIpIiBjb250YWlucz1BTEwKIAorc3luIHJlZ2lvbiBzY2hlbWVTdHJ1YyBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iXFsiIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIGVuZD0iXF0iIGNvbnRhaW5zPUFMTAorc3luIHJlZ2lvbiBzY2hlbWVTdHJ1YyBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iI1xbIiBtYXRjaGdyb3VwPURlbGltaXRlciBlbmQ9IlxdIiBjb250YWlucz1BTEwKKworIiBTaW1wbGUgbGl0ZXJhbHM6CiBzeW4gcmVnaW9uCXNjaGVtZVN0cmluZwlzdGFydD0rIisgIHNraXA9K1xcW1xcIl0rIGVuZD0rIisKIAogIiBDb21tZW50czoKIAogc3luIG1hdGNoCXNjaGVtZUNvbW1lbnQJIjsuKiQiCiAKKworIiBXcml0aW5nIG91dCB0aGUgY29tcGxldGUgZGVzY3JpcHRpb24gb2YgU2NoZW1lIG51bWVyYWxzIHdpdGhvdXQKKyIgdXNpbmcgdmFyaWFibGVzIGlzIGEgZGF5J3Mgd29yayBmb3IgYSB0cmFpbmVkIHNlY3JldGFyeS4uLgorCitzeW4gbWF0Y2gJc2NoZW1lT3RoZXIJb25lbGluZSAgICAhWystXVsgXHRcW1xdKCkiO10hbWU9ZS0xCitzeW4gbWF0Y2gJc2NoZW1lT3RoZXIJb25lbGluZSAgICAhWystXSQhCisiCisiIFRoaXMgaXMgYSB1c2VmdWwgbGF4IGFwcHJveGltYXRpb246CitzeW4gbWF0Y2gJc2NoZW1lTnVtYmVyCW9uZWxpbmUgICAgIlstIyswLTkuXVstIysvMC05YS1mQGkuYm94ZXNmZGxdKiIKK3N5biBtYXRjaAlzY2hlbWVFcnJvcglvbmVsaW5lICAgICFbLSMrMC05Ll1bLSMrLzAtOWEtZkBpLmJveGVzZmRsXSpbXi0jKy8wLTlhLWZAaS5ib3hlc2ZkbCBcdFxbXF0oKSI7XVteIFx0XFtcXSgpIjtdKiEKKworc3luIG1hdGNoCXNjaGVtZUJvb2xlYW4Jb25lbGluZSAgICAiI1t0Zl0iCitzeW4gbWF0Y2gJc2NoZW1lRXJyb3IJb25lbGluZSAgICAhI1t0Zl1bXiBcdFxbXF0oKSI7XVwrIQorCitzeW4gbWF0Y2gJc2NoZW1lQ2hhcglvbmVsaW5lICAgICIjXFwiCitzeW4gbWF0Y2gJc2NoZW1lQ2hhcglvbmVsaW5lICAgICIjXFwuIgorc3luIG1hdGNoICAgICAgIHNjaGVtZUVycm9yCW9uZWxpbmUgICAgISNcXC5bXiBcdFxbXF0oKSI7XVwrIQorc3luIG1hdGNoCXNjaGVtZUNoYXIJb25lbGluZSAgICAiI1xcc3BhY2UiCitzeW4gbWF0Y2gJc2NoZW1lRXJyb3IJb25lbGluZSAgICAhI1xcc3BhY2VbXiBcdFxbXF0oKSI7XVwrIQorc3luIG1hdGNoCXNjaGVtZUNoYXIJb25lbGluZSAgICAiI1xcbmV3bGluZSIKK3N5biBtYXRjaAlzY2hlbWVFcnJvcglvbmVsaW5lICAgICEjXFxuZXdsaW5lW14gXHRcW1xdKCkiO11cKyEKKworaWYgZXhpc3RzKCJiOmlzX216c2NoZW1lIikgfHwgZXhpc3RzKCJpc19tenNjaGVtZSIpCisgICAgIiBNelNjaGVtZSBleHRlbnNpb25zIGFkZGVkIGJ5IFNlcmdleSBLaG9yZXYKKyAgICAiIG11bHRpbGluZSBjb21tZW50CisgICAgc3ludGF4IHJlZ2lvbiBzY2hlbWVNdWx0aWxpbmVDb21tZW50IHN0YXJ0PS8jfC8gZW5kPS98Iy8KKyAgICAiICMleHh4IGFyZSB0aGUgc3BlY2lhbCBNelNjaGVtZSBpZGVudGlmaWVycworICAgIHN5biBtYXRjaCBzY2hlbWVPdGhlciBvbmVsaW5lICAgICIjJVstYS16ISQlJiovOjw9Pj9eX34wLTkrLkAjJV1cKyIKKyAgICAiIGFueXRoaW5nIGxpbWl0ZWQgYnkgfCdzIGlzIGlkZW50aWZpZXIKKyAgICBzeW4gbWF0Y2ggc2NoZW1lT3RoZXIgb25lbGluZSAgICAifFtefF1cK3wiCisKKyAgICBzeW4gbWF0Y2gJc2NoZW1lQ2hhcglvbmVsaW5lICAgICIjXFxyZXR1cm4iCisKKyAgICAiIE1vZHVsZXMgcmVxdWlyZSBzdG10CisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0U3ludGF4IG1vZHVsZSByZXF1aXJlIGR5bmFtaWMtcmVxdWlyZSBsaWIgcHJlZml4IGFsbC1leGNlcHQgcHJlZml4LWFsbC1leGNlcHQgcmVuYW1lCisgICAgIiBtb2R1bGVzIHByb3ZpZGUgc3RtdAorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dFN5bnRheCBwcm92aWRlIHN0cnVjdCBhbGwtZnJvbSBhbGwtZnJvbS1leGNlcHQgYWxsLWRlZmluZWQgYWxsLWRlZmluZWQtZXhjZXB0CisgICAgIiBPdGhlciBmcm9tIE16U2NoZW1lCisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0U3ludGF4IHdpdGgtaGFuZGxlcnMgd2hlbiB1bmxlc3MgaW5zdGFudGlhdGUgZGVmaW5lLXN0cnVjdCBjYXNlLWxhbWJkYSBzeW50YXgtY2FzZQorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dFN5bnRheCBmcmVlLWlkZW50aWZpZXI9PyBib3VuZC1pZGVudGlmaWVyPT8gbW9kdWxlLWlkZW50aWZpZXI9PyBzeW50YXgtb2JqZWN0LT5kYXR1bQorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dFN5bnRheCBkYXR1bS0+c3ludGF4LW9iamVjdAorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dFN5bnRheCBsZXQtdmFsdWVzIGxldCotdmFsdWVzIGxldHJlYy12YWx1ZXMgc2V0IS12YWx1ZXMgZmx1aWQtbGV0IHBhcmFtZXRlcml6ZSBiZWdpbjAKKyAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRTeW50YXggZXJyb3IgcmFpc2Ugb3B0LWxhbWJkYSBkZWZpbmUtdmFsdWVzIHVuaXQgdW5pdC9zaWcgZGVmaW5lLXNpZ25hdHVyZSAKKyAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRTeW50YXggaW52b2tlLXVuaXQvc2lnIGRlZmluZS12YWx1ZXMvaW52b2tlLXVuaXQvc2lnIGNvbXBvdW5kLXVuaXQvc2lnIGltcG9ydCBleHBvcnQKKyAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRTeW50YXggbGluayBzeW50YXggcXVhc2lzeW50YXggdW5zeW50YXggd2l0aC1zeW50YXgKKyAgICBoaSBkZWYgbGluayBzY2hlbWVFeHRTeW50YXggVHlwZQorCisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0RnVuYyBmb3JtYXQgc3lzdGVtLXR5cGUgY3VycmVudC1leHRlbnNpb24tY29tcGlsZXIgY3VycmVudC1leHRlbnNpb24tbGlua2VyCisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0RnVuYyB1c2Utc3RhbmRhcmQtbGlua2VyIHVzZS1zdGFuZGFyZC1jb21waWxlcgorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgZmluZC1leGVjdXRhYmxlLXBhdGggYXBwZW5kLW9iamVjdC1zdWZmaXggYXBwZW5kLWV4dGVuc2lvbi1zdWZmaXgKKyAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRGdW5jIGN1cnJlbnQtbGlicmFyeS1jb2xsZWN0aW9uLXBhdGhzIGN1cnJlbnQtZXh0ZW5zaW9uLWNvbXBpbGVyLWZsYWdzIG1ha2UtcGFyYW1ldGVyCisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0RnVuYyBjdXJyZW50LWRpcmVjdG9yeSBidWlsZC1wYXRoIG5vcm1hbGl6ZS1wYXRoIGN1cnJlbnQtZXh0ZW5zaW9uLWxpbmtlci1mbGFncworICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgZmlsZS1leGlzdHM/IGRpcmVjdG9yeS1leGlzdHM/IGRlbGV0ZS1kaXJlY3RvcnkvZmlsZXMgZGVsZXRlLWRpcmVjdG9yeSBkZWxldGUtZmlsZQorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgc3lzdGVtIGNvbXBpbGUtZmlsZSBzeXN0ZW0tbGlicmFyeS1zdWJwYXRoIGdldGVudiBwdXRlbnYgY3VycmVudC1zdGFuZGFyZC1saW5rLWxpYnJhcmllcworICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgcmVtb3ZlKiBmaWxlLXNpemUgZmluZC1maWxlcyBmb2xkLWZpbGVzIGRpcmVjdG9yeS1saXN0IHNoZWxsLWV4ZWN1dGUgc3BsaXQtcGF0aAorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgY3VycmVudC1lcnJvci1wb3J0IHByb2Nlc3MvcG9ydHMgcHJvY2VzcyBwcmludGYgZnByaW50ZiBvcGVuLWlucHV0LXN0cmluZyBvcGVuLW91dHB1dC1zdHJpbmcKKyAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRGdW5jIGdldC1vdXRwdXQtc3RyaW5nCisgICAgIiBleGNlcHRpb25zCisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0RnVuYyBleG4gZXhuOmFwcGxpY2F0aW9uOmFyaXR5IGV4bjphcHBsaWNhdGlvbjpjb250aW51YXRpb24gZXhuOmFwcGxpY2F0aW9uOmZwcmludGY6bWlzbWF0Y2gKKyAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRGdW5jIGV4bjphcHBsaWNhdGlvbjptaXNtYXRjaCBleG46YXBwbGljYXRpb246dHlwZSBleG46YXBwbGljYXRpb246bWlzbWF0Y2ggZXhuOmJyZWFrIGV4bjppL286ZmlsZXN5c3RlbSBleG46aS9vOnBvcnQKKyAgICBzeW4ga2V5d29yZCBzY2hlbWVFeHRGdW5jIGV4bjppL286cG9ydDpjbG9zZWQgZXhuOmkvbzp0Y3AgZXhuOmkvbzp1ZHAgZXhuOm1pc2MgZXhuOm1pc2M6YXBwbGljYXRpb24gZXhuOm1pc2M6dW5zdXBwb3J0ZWQgZXhuOm1vZHVsZSBleG46cmVhZAorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgZXhuOnJlYWQ6bm9uLWNoYXIgZXhuOnNwZWNpYWwtY29tbWVudCBleG46c3ludGF4IGV4bjp0aHJlYWQgZXhuOnVzZXIgZXhuOnZhcmlhYmxlIGV4bjphcHBsaWNhdGlvbjptaXNtYXRjaAorICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgZXhuPyBleG46YXBwbGljYXRpb246YXJpdHk/IGV4bjphcHBsaWNhdGlvbjpjb250aW51YXRpb24/IGV4bjphcHBsaWNhdGlvbjpmcHJpbnRmOm1pc21hdGNoPyBleG46YXBwbGljYXRpb246bWlzbWF0Y2g/CisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0RnVuYyBleG46YXBwbGljYXRpb246dHlwZT8gZXhuOmFwcGxpY2F0aW9uOm1pc21hdGNoPyBleG46YnJlYWs/IGV4bjppL286ZmlsZXN5c3RlbT8gZXhuOmkvbzpwb3J0PyBleG46aS9vOnBvcnQ6Y2xvc2VkPworICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgZXhuOmkvbzp0Y3A/IGV4bjppL286dWRwPyBleG46bWlzYz8gZXhuOm1pc2M6YXBwbGljYXRpb24/IGV4bjptaXNjOnVuc3VwcG9ydGVkPyBleG46bW9kdWxlPyBleG46cmVhZD8gZXhuOnJlYWQ6bm9uLWNoYXI/CisgICAgc3luIGtleXdvcmQgc2NoZW1lRXh0RnVuYyBleG46c3BlY2lhbC1jb21tZW50PyBleG46c3ludGF4PyBleG46dGhyZWFkPyBleG46dXNlcj8gZXhuOnZhcmlhYmxlPyBleG46YXBwbGljYXRpb246bWlzbWF0Y2g/CisgICAgIiBDb21tYW5kLWxpbmUgcGFyc2luZworICAgIHN5biBrZXl3b3JkIHNjaGVtZUV4dEZ1bmMgY29tbWFuZC1saW5lIGN1cnJlbnQtY29tbWFuZC1saW5lLWFyZ3VtZW50cyBvbmNlLWFueSBoZWxwLWxhYmVscyBtdWx0aSBvbmNlLWVhY2ggCisgICAgaGkgZGVmIGxpbmsgc2NoZW1lRXh0RnVuYyBQcmVQcm9jCisKKyAgICAiIHN5bnRheCBxdW90aW5nLCB1bnF1b3RpbmcgYW5kIHF1YXNpcXVvdGF0aW9uCisgICAgc3luIHJlZ2lvbiBzY2hlbWVVbnF1b3RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIjLCIgZW5kPSFbIFx0XFtcXSgpIjtdIW1lPWUtMSBjb250YWlucz1BTEwKKyAgICBzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiMsQCIgZW5kPSFbIFx0XFtcXSgpIjtdIW1lPWUtMSBjb250YWlucz1BTEwKKyAgICBzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiMsKCIgZW5kPSIpIiBjb250YWlucz1BTEwKKyAgICBzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiMsQCgiIGVuZD0iKSIgY29udGFpbnM9QUxMCisgICAgc3luIHJlZ2lvbiBzY2hlbWVVbnF1b3RlIG1hdGNoZ3JvdXA9RGVsaW1pdGVyIHN0YXJ0PSIjLFxbIiBlbmQ9IlxdIiBjb250YWlucz1BTEwKKyAgICBzeW4gcmVnaW9uIHNjaGVtZVVucXVvdGUgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiMsQFxbIiBlbmQ9IlxdIiBjb250YWlucz1BTEwKKyAgICBzeW4gcmVnaW9uIHNjaGVtZVF1b3RlZCBtYXRjaGdyb3VwPURlbGltaXRlciBzdGFydD0iI1snYF0iIGVuZD0hWyBcdCgpXFtcXSI7XSFtZT1lLTEgY29udGFpbnM9QUxMCisgICAgc3luIHJlZ2lvbiBzY2hlbWVRdW90ZWQgbWF0Y2hncm91cD1EZWxpbWl0ZXIgc3RhcnQ9IiNbJ2BdKCIgbWF0Y2hncm91cD1EZWxpbWl0ZXIgZW5kPSIpIiBjb250YWlucz1BTEwKK2VuZGlmCisKICIgU3luY2hyb25pemF0aW9uIGFuZCB0aGUgd3JhcHBpbmcgdXAuLi4KIAogc3luIHN5bmMgbWF0Y2ggbWF0Y2hQbGFjZSBncm91cGhlcmUgTk9ORSAiXlteIFx0XSIKQEAgLTE4MSw2ICsyNTgsNyBAQAogICBIaUxpbmsgc2NoZW1lQ29uc3RhbnQJQ29uc3RhbnQKIAogICBIaUxpbmsgc2NoZW1lQ29tbWVudAkJQ29tbWVudAorICBIaUxpbmsgc2NoZW1lTXVsdGlsaW5lQ29tbWVudAlDb21tZW50CiAgIEhpTGluayBzY2hlbWVFcnJvcgkJRXJyb3IKIAogICBkZWxjb21tYW5kIEhpTGluawpkaWZmIC0tZ2l0IGEvc3JjL2F1dG8vY29uZmlndXJlIGIvc3JjL2F1dG8vY29uZmlndXJlCmluZGV4IGY4M2E3MDMuLjIyMGE5ODEgMTAwNzU1Ci0tLSBhL3NyYy9hdXRvL2NvbmZpZ3VyZQorKysgYi9zcmMvYXV0by9jb25maWd1cmUKQEAgLTE2NjEsNiArMTY2MSw5IEBACiAgICAgICBNWlNDSEVNRV9MSUJTPSItTCR7dmlfY3ZfcGF0aF9tenNjaGVtZV9wZnh9L2xpYiAtbG16Z2MgLWxtenNjaGVtZSIKICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCiAJCSAgICAgICAgTVpTQ0hFTUVfTElCUz0iJE1aU0NIRU1FX0xJQlMgLVdsLC1ycGF0aCAtV2wsJHt2aV9jdl9wYXRoX216c2NoZW1lX3BmeH0vbGliIgorICAgICAgZWxpZiB0ZXN0ICJgKHVuYW1lKSAyPi9kZXYvbnVsbGAiID0gU3VuT1MgJiYKKwkJCSAgICAgICB1bmFtZSAtciB8IGdyZXAgJ141JyA+L2Rldi9udWxsOyB0aGVuCisJTVpTQ0hFTUVfTElCUz0iJE1aU0NIRU1FX0xJQlMgLVIgJHt2aV9jdl9wYXRoX216c2NoZW1lX3BmeH0vbGliIgogICAgICAgZmkKICAgICBmaQogICAgIE1aU0NIRU1FX0NGTEFHUz0iLUkke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4fS9pbmNsdWRlICAgXApAQCAtMTY4Miw3ICsxNjg1LDcgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyAtLWVuYWJsZS1wZXJsaW50ZXJwIGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxNjg2OiBjaGVja2luZyAtLWVuYWJsZS1wZXJsaW50ZXJwIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNjg5OiBjaGVja2luZyAtLWVuYWJsZS1wZXJsaW50ZXJwIGFyZ3VtZW50IiA+JjUKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wZXJsaW50ZXJwIG9yIC0tZGlzYWJsZS1wZXJsaW50ZXJwIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX3BlcmxpbnRlcnArc2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX3BlcmxpbnRlcnAiCkBAIC0xNjk3LDcgKzE3MDAsNyBAQAogICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBlcmwiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHBlcmw7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTcwMTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNzA0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfdmlfY3ZfcGF0aF9wZXJsJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE3MzEsNyArMTczNCw3IEBACiAKICAgaWYgdGVzdCAiWCR2aV9jdl9wYXRoX3BlcmwiICE9ICJYIjsgdGhlbgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIFBlcmwgdmVyc2lvbiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTczNTogY2hlY2tpbmcgUGVybCB2ZXJzaW9uIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxNzM4OiBjaGVja2luZyBQZXJsIHZlcnNpb24iID4mNQogICAgIGlmICR2aV9jdl9wYXRoX3BlcmwgLWUgJ3JlcXVpcmUgNS4wMDNfMDEnID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4KICAgICAgZXZhbCBgJHZpX2N2X3BhdGhfcGVybCAtVjp1c2V0aHJlYWRzYAogICAgICBpZiB0ZXN0ICJYJHVzZXRocmVhZHMiID0gIlhVTktOT1dOIiAtbyAiWCR1c2V0aHJlYWRzIiA9ICJYdW5kZWYiOyB0aGVuCkBAIC0xNzY3LDcgKzE3NzAsNyBAQAogCQktZSAnY2NkbGZsYWdzJyB8IHNlZCAtZSAncy8tYkU6cGVybC5leHAvLydgCiAKICAgICAgICAgICAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGlmIGNvbXBpbGUgYW5kIGxpbmsgZmxhZ3MgZm9yIFBlcmwgYXJlIHNhbmUiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE3NzE6IGNoZWNraW5nIGlmIGNvbXBpbGUgYW5kIGxpbmsgZmxhZ3MgZm9yIFBlcmwgYXJlIHNhbmUiID4mNQorZWNobyAiY29uZmlndXJlOjE3NzQ6IGNoZWNraW5nIGlmIGNvbXBpbGUgYW5kIGxpbmsgZmxhZ3MgZm9yIFBlcmwgYXJlIHNhbmUiID4mNQogICAgICAgY2ZsYWdzX3NhdmU9JENGTEFHUwogICAgICAgbGlic19zYXZlPSRMSUJTCiAgICAgICBsZGZsYWdzX3NhdmU9JExERkxBR1MKQEAgLTE3NzUsMTQgKzE3NzgsMTQgQEAKICAgICAgIExJQlM9IiRMSUJTICRwZXJsbGlicyIKICAgICAgIExERkxBR1M9IiRwZXJsbGRmbGFncyAkTERGTEFHUyIKICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDE3NzkgImNvbmZpZ3VyZSIKKyNsaW5lIDE3ODIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKICAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToxNzg2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MTc4OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgcGVybF9vaz15ZXMKIGVsc2UKQEAgLTE4NDUsNyArMTg0OCw3IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgLS1lbmFibGUtcHl0aG9uaW50ZXJwIGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxODQ5OiBjaGVja2luZyAtLWVuYWJsZS1weXRob25pbnRlcnAgYXJndW1lbnQiID4mNQorZWNobyAiY29uZmlndXJlOjE4NTI6IGNoZWNraW5nIC0tZW5hYmxlLXB5dGhvbmludGVycCBhcmd1bWVudCIgPiY1CiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcHl0aG9uaW50ZXJwIG9yIC0tZGlzYWJsZS1weXRob25pbnRlcnAgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfcHl0aG9uaW50ZXJwK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9weXRob25pbnRlcnAiCkBAIC0xODU5LDcgKzE4NjIsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicHl0aG9uIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBweXRob247IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MTg2MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxODY2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfdmlfY3ZfcGF0aF9weXRob24nK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMTg5NCw3ICsxODk3LDcgQEAKICAgaWYgdGVzdCAiWCR2aV9jdl9wYXRoX3B5dGhvbiIgIT0gIlgiOyB0aGVuCiAKICAgICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgUHl0aG9uIHZlcnNpb24iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE4OTg6IGNoZWNraW5nIFB5dGhvbiB2ZXJzaW9uIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxOTAxOiBjaGVja2luZyBQeXRob24gdmVyc2lvbiIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sndmlfY3ZfdmFyX3B5dGhvbl92ZXJzaW9uJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE5MDYsMTQgKzE5MDksMTQgQEAKIGVjaG8gIiRhY190IiIkdmlfY3ZfdmFyX3B5dGhvbl92ZXJzaW9uIiAxPiY2CiAKICAgICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgUHl0aG9uIGlzIDEuNCBvciBiZXR0ZXIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE5MTA6IGNoZWNraW5nIFB5dGhvbiBpcyAxLjQgb3IgYmV0dGVyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxOTEzOiBjaGVja2luZyBQeXRob24gaXMgMS40IG9yIGJldHRlciIgPiY1CiAgICAgaWYgJHt2aV9jdl9wYXRoX3B5dGhvbn0gLWMgXAogCSJpbXBvcnQgc3lzOyBzeXMuZXhpdCgke3ZpX2N2X3Zhcl9weXRob25fdmVyc2lvbn0gPCAxLjQpIgogICAgIHRoZW4KICAgICAgIGVjaG8gIiRhY190IiJ5ZXAiIDE+JjYKIAogICAgICAgICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgUHl0aG9uJ3MgaW5zdGFsbCBwcmVmaXgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE5MTc6IGNoZWNraW5nIFB5dGhvbidzIGluc3RhbGwgcHJlZml4IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxOTIwOiBjaGVja2luZyBQeXRob24ncyBpbnN0YWxsIHByZWZpeCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sndmlfY3ZfcGF0aF9weXRob25fcGZ4JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE5MjUsNyArMTkyOCw3IEBACiBlY2hvICIkYWNfdCIiJHZpX2N2X3BhdGhfcHl0aG9uX3BmeCIgMT4mNgogCiAgICAgICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBQeXRob24ncyBleGVjdXRpb24gcHJlZml4IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToxOTI5OiBjaGVja2luZyBQeXRob24ncyBleGVjdXRpb24gcHJlZml4IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxOTMyOiBjaGVja2luZyBQeXRob24ncyBleGVjdXRpb24gcHJlZml4IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneyd2aV9jdl9wYXRoX3B5dGhvbl9lcGZ4JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTE5NTYsNyArMTk1OSw3IEBACiAKIAogICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgUHl0aG9uJ3MgY29uZmlndXJhdGlvbiBkaXJlY3RvcnkiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjE5NjA6IGNoZWNraW5nIFB5dGhvbidzIGNvbmZpZ3VyYXRpb24gZGlyZWN0b3J5IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToxOTYzOiBjaGVja2luZyBQeXRob24ncyBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3sndmlfY3ZfcGF0aF9weXRob25fY29uZicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yMDI5LDcgKzIwMzIsNyBAQAogCVBZVEhPTl9HRVRQQVRIX0NGTEFHUz0iLURQWVRIT05QQVRIPSdcIiR7dmlfY3ZfcGF0aF9weXRob25wYXRofVwiJyAtRFBSRUZJWD0nXCIke3ZpX2N2X3BhdGhfcHl0aG9uX3BmeH1cIicgLURFWEVDX1BSRUZJWD0nXCIke3ZpX2N2X3BhdGhfcHl0aG9uX2VwZnh9XCInIgogCiAJCQkJCQkJCWVjaG8gJGFjX24gImNoZWNraW5nIGlmIC1wdGhyZWFkIHNob3VsZCBiZSB1c2VkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMDMzOiBjaGVja2luZyBpZiAtcHRocmVhZCBzaG91bGQgYmUgdXNlZCIgPiY1CitlY2hvICJjb25maWd1cmU6MjAzNjogY2hlY2tpbmcgaWYgLXB0aHJlYWQgc2hvdWxkIGJlIHVzZWQiID4mNQogCXRocmVhZHNhZmVfZmxhZz0KIAl0aHJlYWRfbGliPQogCWlmIHRlc3QgIngkTUFDT1NYIiAhPSAieHllcyI7IHRoZW4KQEAgLTIwNDUsMTQgKzIwNDgsMTQgQEAKIAkgIENGTEFHUz0iJENGTEFHUyAkdGhyZWFkc2FmZV9mbGFnIgogCSAgTElCUz0iJExJQlMgJHRocmVhZF9saWIiCiAJICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyMDQ5ICJjb25maWd1cmUiCisjbGluZSAyMDUyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiAgCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjA1NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIwNTk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjY7IFBZVEhPTl9DRkxBR1M9IiRQWVRIT05fQ0ZMQUdTICR0aHJlYWRzYWZlX2ZsYWciCiBlbHNlCkBAIC0yMDY5LDIwICsyMDcyLDIwIEBACiAJZmkKIAogCQkJZWNobyAkYWNfbiAiY2hlY2tpbmcgaWYgY29tcGlsZSBhbmQgbGluayBmbGFncyBmb3IgUHl0aG9uIGFyZSBzYW5lIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMDczOiBjaGVja2luZyBpZiBjb21waWxlIGFuZCBsaW5rIGZsYWdzIGZvciBQeXRob24gYXJlIHNhbmUiID4mNQorZWNobyAiY29uZmlndXJlOjIwNzY6IGNoZWNraW5nIGlmIGNvbXBpbGUgYW5kIGxpbmsgZmxhZ3MgZm9yIFB5dGhvbiBhcmUgc2FuZSIgPiY1CiAJY2ZsYWdzX3NhdmU9JENGTEFHUwogCWxpYnNfc2F2ZT0kTElCUwogCUNGTEFHUz0iJENGTEFHUyAkUFlUSE9OX0NGTEFHUyIKIAlMSUJTPSIkTElCUyAkUFlUSE9OX0xJQlMiCiAJY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjA3OSAiY29uZmlndXJlIgorI2xpbmUgMjA4MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjIwODY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyMDg5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OyBweXRob25fb2s9eWVzCiBlbHNlCkBAIC0yMTIxLDcgKzIxMjQsNyBAQAogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIC0tZW5hYmxlLXRjbGludGVycCBhcmd1bWVudCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjEyNTogY2hlY2tpbmcgLS1lbmFibGUtdGNsaW50ZXJwIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyMTI4OiBjaGVja2luZyAtLWVuYWJsZS10Y2xpbnRlcnAgYXJndW1lbnQiID4mNQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXRjbGludGVycCBvciAtLWRpc2FibGUtdGNsaW50ZXJwIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX3RjbGludGVycCtzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfdGNsaW50ZXJwIgpAQCAtMjEzNSw3ICsyMTM4LDcgQEAKIGlmIHRlc3QgIiRlbmFibGVfdGNsaW50ZXJwIiA9ICJ5ZXMiOyB0aGVuCiAKICAgICBlY2hvICRhY19uICJjaGVja2luZyAtLXdpdGgtdGNsc2ggYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIxMzk6IGNoZWNraW5nIC0td2l0aC10Y2xzaCBhcmd1bWVudCIgPiY1CitlY2hvICJjb25maWd1cmU6MjE0MjogY2hlY2tpbmcgLS13aXRoLXRjbHNoIGFyZ3VtZW50IiA+JjUKICAgIyBDaGVjayB3aGV0aGVyIC0td2l0aC10Y2xzaCBvciAtLXdpdGhvdXQtdGNsc2ggd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX3RjbHNoK3NldH0iID0gc2V0OyB0aGVuCiAgIHdpdGh2YWw9IiR3aXRoX3RjbHNoIgpAQCAtMjE0Nyw3ICsyMTUwLDcgQEAKICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkdGNsc2hfbmFtZSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgJHRjbHNoX25hbWU7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjE1MTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyMTU0OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfdmlfY3ZfcGF0aF90Y2wnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjE4Niw3ICsyMTg5LDcgQEAKICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR0Y2xzaF9uYW1lIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSAkdGNsc2hfbmFtZTsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMTkwOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjIxOTM6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF92aV9jdl9wYXRoX3RjbCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yMjI0LDcgKzIyMjcsNyBAQAogICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHRjbHNoX25hbWUiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15ICR0Y2xzaF9uYW1lOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIyMjg6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6MjIzMTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX3ZpX2N2X3BhdGhfdGNsJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTIyNTksMTQgKzIyNjIsMTQgQEAKICAgZmkKICAgaWYgdGVzdCAiWCR2aV9jdl9wYXRoX3RjbCIgIT0gIlgiOyB0aGVuCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgVGNsIHZlcnNpb24iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIyNjM6IGNoZWNraW5nIFRjbCB2ZXJzaW9uIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyMjY2OiBjaGVja2luZyBUY2wgdmVyc2lvbiIgPiY1CiAgICAgaWYgZWNobyAnZXhpdCBbZXhwciBbaW5mbyB0Y2x2ZXJzaW9uXSA8IDguMF0nIHwgJHZpX2N2X3BhdGhfdGNsIC0gOyB0aGVuCiAgICAgICB0Y2x2ZXI9YGVjaG8gJ3B1dHMgW2luZm8gdGNsdmVyc2lvbl0nIHwgJHZpX2N2X3BhdGhfdGNsIC1gCiAgICAgICBlY2hvICIkYWNfdCIiJHRjbHZlciAtIE9LIiAxPiY2OwogICAgICAgdGNsbG9jPWBlY2hvICdzZXQgbCBbaW5mbyBsaWJyYXJ5XTtzZXQgaSBbc3RyaW5nIGxhc3QgbGliICRsXTtpbmNyIGkgLTI7cHV0cyBbc3RyaW5nIHJhbmdlICRsIDAgJGldJyB8ICR2aV9jdl9wYXRoX3RjbCAtYAogCiAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgbG9jYXRpb24gb2YgVGNsIGluY2x1ZGUiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIyNzA6IGNoZWNraW5nIGZvciBsb2NhdGlvbiBvZiBUY2wgaW5jbHVkZSIgPiY1CitlY2hvICJjb25maWd1cmU6MjI3MzogY2hlY2tpbmcgZm9yIGxvY2F0aW9uIG9mIFRjbCBpbmNsdWRlIiA+JjUKICAgICAgIGlmIHRlc3QgIngkTUFDT1NYIiAhPSAieHllcyI7IHRoZW4KIAl0Y2xpbmM9IiR0Y2xsb2MvaW5jbHVkZSAkdGNsbG9jL2luY2x1ZGUvdGNsICR0Y2xsb2MvaW5jbHVkZS90Y2wkdGNsdmVyIC91c3IvbG9jYWwvaW5jbHVkZSIKICAgICAgIGVsc2UKQEAgLTIyODUsNyArMjI4OCw3IEBACiAgICAgICBmaQogICAgICAgaWYgdGVzdCAteiAiJFNLSVBfVENMIjsgdGhlbgogCWVjaG8gJGFjX24gImNoZWNraW5nIGZvciBsb2NhdGlvbiBvZiB0Y2xDb25maWcuc2ggc2NyaXB0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMjg5OiBjaGVja2luZyBmb3IgbG9jYXRpb24gb2YgdGNsQ29uZmlnLnNoIHNjcmlwdCIgPiY1CitlY2hvICJjb25maWd1cmU6MjI5MjogY2hlY2tpbmcgZm9yIGxvY2F0aW9uIG9mIHRjbENvbmZpZy5zaCBzY3JpcHQiID4mNQogCWlmIHRlc3QgIngkTUFDT1NYIiAhPSAieHllcyI7IHRoZW4KIAkgIHRjbGNuZj1gZWNobyAkdGNsaW5jIHwgc2VkIHMvaW5jbHVkZS9saWIvZ2AKIAllbHNlCkBAIC0yMzAzLDcgKzIzMDYsNyBAQAogCWlmIHRlc3QgLXogIiRUQ0xfTElCUyI7IHRoZW4KIAkgIGVjaG8gIiRhY190IiI8bm90IGZvdW5kPiIgMT4mNgogCSAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFRjbCBsaWJyYXJ5IGJ5IG15c2VsZiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjMwNzogY2hlY2tpbmcgZm9yIFRjbCBsaWJyYXJ5IGJ5IG15c2VsZiIgPiY1CitlY2hvICJjb25maWd1cmU6MjMxMDogY2hlY2tpbmcgZm9yIFRjbCBsaWJyYXJ5IGJ5IG15c2VsZiIgPiY1CiAJICB0Y2xsaWI9YGVjaG8gJHRjbGluYyB8IHNlZCBzL2luY2x1ZGUvbGliL2dgCiAJICBmb3IgZXh0IGluIC5zbyAuYSA7IGRvCiAJICAgIGZvciB2ZXIgaW4gIiIgJHRjbHZlciA7IGRvCkBAIC0yMzQ5LDcgKzIzNTIsNyBAQAogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIC0tZW5hYmxlLXJ1YnlpbnRlcnAgYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjIzNTM6IGNoZWNraW5nIC0tZW5hYmxlLXJ1YnlpbnRlcnAgYXJndW1lbnQiID4mNQorZWNobyAiY29uZmlndXJlOjIzNTY6IGNoZWNraW5nIC0tZW5hYmxlLXJ1YnlpbnRlcnAgYXJndW1lbnQiID4mNQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJ1YnlpbnRlcnAgb3IgLS1kaXNhYmxlLXJ1YnlpbnRlcnAgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfcnVieWludGVycCtzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfcnVieWludGVycCIKQEAgLTIzNjQsNyArMjM2Nyw3IEBACiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicnVieSIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCiBzZXQgZHVtbXkgcnVieTsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyMzY4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjIzNzE6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF92aV9jdl9wYXRoX3J1YnknK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtMjM5OCwxMSArMjQwMSwxMSBAQAogCiAgIGlmIHRlc3QgIlgkdmlfY3ZfcGF0aF9ydWJ5IiAhPSAiWCI7IHRoZW4KICAgICBlY2hvICRhY19uICJjaGVja2luZyBSdWJ5IHZlcnNpb24iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0MDI6IGNoZWNraW5nIFJ1YnkgdmVyc2lvbiIgPiY1CitlY2hvICJjb25maWd1cmU6MjQwNTogY2hlY2tpbmcgUnVieSB2ZXJzaW9uIiA+JjUKICAgICBpZiAkdmlfY3ZfcGF0aF9ydWJ5IC1lICdWRVJTSU9OID49ICIxLjYuMCIgb3IgZXhpdCAxJyA+L2Rldi9udWxsIDI+L2Rldi9udWxsOyB0aGVuCiAgICAgICBlY2hvICIkYWNfdCIiT0siIDE+JjYKICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIFJ1YnkgaGVhZGVyIGZpbGVzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNDA2OiBjaGVja2luZyBSdWJ5IGhlYWRlciBmaWxlcyIgPiY1CitlY2hvICJjb25maWd1cmU6MjQwOTogY2hlY2tpbmcgUnVieSBoZWFkZXIgZmlsZXMiID4mNQogICAgICAgcnVieWhkcmRpcj1gJHZpX2N2X3BhdGhfcnVieSAtciBta21mIC1lICdwcmludCBDb25maWc6OkNPTkZJR1siYXJjaGRpciJdIHx8ICRoZHJkaXInIDI+L2Rldi9udWxsYAogICAgICAgaWYgdGVzdCAiWCRydWJ5aGRyZGlyIiAhPSAiWCI7IHRoZW4KIAllY2hvICIkYWNfdCIiJHJ1YnloZHJkaXIiIDE+JjYKQEAgLTI0NTQsNyArMjQ1Nyw3IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgLS1lbmFibGUtY3Njb3BlIGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNDU4OiBjaGVja2luZyAtLWVuYWJsZS1jc2NvcGUgYXJndW1lbnQiID4mNQorZWNobyAiY29uZmlndXJlOjI0NjE6IGNoZWNraW5nIC0tZW5hYmxlLWNzY29wZSBhcmd1bWVudCIgPiY1CiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtY3Njb3BlIG9yIC0tZGlzYWJsZS1jc2NvcGUgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfY3Njb3BlK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9jc2NvcGUiCkBAIC0yNDcyLDcgKzI0NzUsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgLS1lbmFibGUtd29ya3Nob3AgYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI0NzY6IGNoZWNraW5nIC0tZW5hYmxlLXdvcmtzaG9wIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNDc5OiBjaGVja2luZyAtLWVuYWJsZS13b3Jrc2hvcCBhcmd1bWVudCIgPiY1CiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtd29ya3Nob3Agb3IgLS1kaXNhYmxlLXdvcmtzaG9wIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX3dvcmtzaG9wK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV93b3Jrc2hvcCIKQEAgLTI0OTcsNyArMjUwMCw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyAtLWRpc2FibGUtbmV0YmVhbnMgYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI1MDE6IGNoZWNraW5nIC0tZGlzYWJsZS1uZXRiZWFucyBhcmd1bWVudCIgPiY1CitlY2hvICJjb25maWd1cmU6MjUwNDogY2hlY2tpbmcgLS1kaXNhYmxlLW5ldGJlYW5zIGFyZ3VtZW50IiA+JjUKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1uZXRiZWFucyBvciAtLWRpc2FibGUtbmV0YmVhbnMgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfbmV0YmVhbnMrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX25ldGJlYW5zIgpAQCAtMjUwOSw3ICsyNTEyLDcgQEAKIGlmIHRlc3QgIiRlbmFibGVfbmV0YmVhbnMiID0gInllcyI7IHRoZW4KICAgZWNobyAiJGFjX3QiIm5vIiAxPiY2CiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHNvY2tldCBpbiAtbHNvY2tldCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjUxMzogY2hlY2tpbmcgZm9yIHNvY2tldCBpbiAtbHNvY2tldCIgPiY1CitlY2hvICJjb25maWd1cmU6MjUxNjogY2hlY2tpbmcgZm9yIHNvY2tldCBpbiAtbHNvY2tldCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIHNvY2tldCdfJ3NvY2tldCB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMjUxNyw3ICsyNTIwLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sc29ja2V0ICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDI1MjEgImNvbmZpZ3VyZSIKKyNsaW5lIDI1MjQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTI1MjgsNyArMjUzMSw3IEBACiBzb2NrZXQoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI1MzI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyNTM1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMjU1Niw3ICsyNTU5LDcgQEAKIGZpCiAKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUgaW4gLWxuc2wiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI1NjA6IGNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lIGluIC1sbnNsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNTYzOiBjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZSBpbiAtbG5zbCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIG5zbCdfJ2dldGhvc3RieW5hbWUgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTI1NjQsNyArMjU2Nyw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbG5zbCAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyNTY4ICJjb25maWd1cmUiCisjbGluZSAyNTcxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0yNTc1LDcgKzI1NzgsNyBAQAogZ2V0aG9zdGJ5bmFtZSgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjU3OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI1ODI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0yNjAzLDkgKzI2MDYsOSBAQAogZmkKIAogICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIGNvbXBpbGluZyBuZXRiZWFucyBpbnRlZ3JhdGlvbiBpcyBwb3NzaWJsZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjYwNzogY2hlY2tpbmcgd2hldGhlciBjb21waWxpbmcgbmV0YmVhbnMgaW50ZWdyYXRpb24gaXMgcG9zc2libGUiID4mNQorZWNobyAiY29uZmlndXJlOjI2MTA6IGNoZWNraW5nIHdoZXRoZXIgY29tcGlsaW5nIG5ldGJlYW5zIGludGVncmF0aW9uIGlzIHBvc3NpYmxlIiA+JjUKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMjYwOSAiY29uZmlndXJlIgorI2xpbmUgMjYxMiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMjYzNSw3ICsyNjM4LDcgQEAKIAkgICAgCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjYzOTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjI2NDI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKIGVsc2UKQEAgLTI2NjAsNyArMjY2Myw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyAtLWVuYWJsZS1zbmlmZiBhcmd1bWVudCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjY2NDogY2hlY2tpbmcgLS1lbmFibGUtc25pZmYgYXJndW1lbnQiID4mNQorZWNobyAiY29uZmlndXJlOjI2Njc6IGNoZWNraW5nIC0tZW5hYmxlLXNuaWZmIGFyZ3VtZW50IiA+JjUKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1zbmlmZiBvciAtLWRpc2FibGUtc25pZmYgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfc25pZmYrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX3NuaWZmIgpAQCAtMjY4Miw3ICsyNjg1LDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIC0tZW5hYmxlLW11bHRpYnl0ZSBhcmd1bWVudCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MjY4NjogY2hlY2tpbmcgLS1lbmFibGUtbXVsdGlieXRlIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNjg5OiBjaGVja2luZyAtLWVuYWJsZS1tdWx0aWJ5dGUgYXJndW1lbnQiID4mNQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW11bHRpYnl0ZSBvciAtLWRpc2FibGUtbXVsdGlieXRlIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX211bHRpYnl0ZStzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfbXVsdGlieXRlIgpAQCAtMjcwMCw3ICsyNzAzLDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIC0tZW5hYmxlLWhhbmd1bGlucHV0IGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNzA0OiBjaGVja2luZyAtLWVuYWJsZS1oYW5ndWxpbnB1dCBhcmd1bWVudCIgPiY1CitlY2hvICJjb25maWd1cmU6MjcwNzogY2hlY2tpbmcgLS1lbmFibGUtaGFuZ3VsaW5wdXQgYXJndW1lbnQiID4mNQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWhhbmd1bGlucHV0IG9yIC0tZGlzYWJsZS1oYW5ndWxpbnB1dCB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9oYW5ndWxpbnB1dCtzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfaGFuZ3VsaW5wdXQiCkBAIC0yNzEyLDcgKzI3MTUsNyBAQAogZWNobyAiJGFjX3QiIiRlbmFibGVfaGFuZ3VsaW5wdXQiIDE+JjYKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgLS1lbmFibGUteGltIGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZToyNzE2OiBjaGVja2luZyAtLWVuYWJsZS14aW0gYXJndW1lbnQiID4mNQorZWNobyAiY29uZmlndXJlOjI3MTk6IGNoZWNraW5nIC0tZW5hYmxlLXhpbSBhcmd1bWVudCIgPiY1CiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUteGltIG9yIC0tZGlzYWJsZS14aW0gd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfeGltK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV94aW0iCkBAIC0yNzIzLDcgKzI3MjYsNyBAQAogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIC0tZW5hYmxlLWZvbnRzZXQgYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI3Mjc6IGNoZWNraW5nIC0tZW5hYmxlLWZvbnRzZXQgYXJndW1lbnQiID4mNQorZWNobyAiY29uZmlndXJlOjI3MzA6IGNoZWNraW5nIC0tZW5hYmxlLWZvbnRzZXQgYXJndW1lbnQiID4mNQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWZvbnRzZXQgb3IgLS1kaXNhYmxlLWZvbnRzZXQgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfZm9udHNldCtzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfZm9udHNldCIKQEAgLTI3NDMsNyArMjc0Niw3IEBACiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAieG1rbWYiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHhta21mOyBhY193b3JkPSQyCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI3NDc6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CitlY2hvICJjb25maWd1cmU6Mjc1MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9wYXRoX3hta21mcGF0aCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC0yNzgxLDcgKzI3ODQsNyBAQAogIyBVc2VzIGFjXyB2YXJzIGFzIHRlbXBzIHRvIGFsbG93IGNvbW1hbmQgbGluZSB0byBvdmVycmlkZSBjYWNoZSBhbmQgY2hlY2tzLgogIyAtLXdpdGhvdXQteCBvdmVycmlkZXMgZXZlcnl0aGluZyBlbHNlLCBidXQgZG9lcyBub3QgdG91Y2ggdGhlIGNhY2hlLgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjI3ODU6IGNoZWNraW5nIGZvciBYIiA+JjUKK2VjaG8gImNvbmZpZ3VyZToyNzg4OiBjaGVja2luZyBmb3IgWCIgPiY1CiAKICMgQ2hlY2sgd2hldGhlciAtLXdpdGgteCBvciAtLXdpdGhvdXQteCB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfeCtzZXR9IiA9IHNldDsgdGhlbgpAQCAtMjg0MywxMiArMjg0NiwxMiBAQAogCiAgICMgRmlyc3QsIHRyeSB1c2luZyB0aGF0IGZpbGUgd2l0aCBubyBzcGVjaWFsIGRpcmVjdG9yeSBzcGVjaWZpZWQuCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyODQ3ICJjb25maWd1cmUiCisjbGluZSAyODUwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkeF9kaXJlY3RfdGVzdF9pbmNsdWRlPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyODUyOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyODU1OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtMjkxNywxNCArMjkyMCwxNCBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogICBMSUJTPSItbCR4X2RpcmVjdF90ZXN0X2xpYnJhcnkgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAyOTIxICJjb25maWd1cmUiCisjbGluZSAyOTI0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiAke3hfZGlyZWN0X3Rlc3RfZnVuY3Rpb259KCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZToyOTI4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MjkzMTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgTElCUz0iJGFjX3NhdmVfTElCUyIKICMgV2UgY2FuIGxpbmsgWCBwcm9ncmFtcyB3aXRoIG5vIHNwZWNpYWwgbGlicmFyeSBwYXRoLgpAQCAtMzAzMCwxNyArMzAzMywxNyBAQAogICAgIGNhc2UgImAodW5hbWUgLXNyKSAyPi9kZXYvbnVsbGAiIGluCiAgICAgIlN1bk9TIDUiKikKICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgLVIgbXVzdCBiZSBmb2xsb3dlZCBieSBhIHNwYWNlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMDM0OiBjaGVja2luZyB3aGV0aGVyIC1SIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBzcGFjZSIgPiY1CitlY2hvICJjb25maWd1cmU6MzAzNzogY2hlY2tpbmcgd2hldGhlciAtUiBtdXN0IGJlIGZvbGxvd2VkIGJ5IGEgc3BhY2UiID4mNQogICAgICAgYWNfeHNhdmVfTElCUz0iJExJQlMiOyBMSUJTPSIkTElCUyAtUiR4X2xpYnJhcmllcyIKICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMwMzcgImNvbmZpZ3VyZSIKKyNsaW5lIDMwNDAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMwNDQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMDQ3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19SX25vc3BhY2U9eWVzCiBlbHNlCkBAIC0zMDU2LDE0ICszMDU5LDE0IEBACiAgICAgICBlbHNlCiAJTElCUz0iJGFjX3hzYXZlX0xJQlMgLVIgJHhfbGlicmFyaWVzIgogCWNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMwNjAgImNvbmZpZ3VyZSIKKyNsaW5lIDMwNjMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMwNjc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMDcwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19SX3NwYWNlPXllcwogZWxzZQpAQCAtMzA5NSw3ICszMDk4LDcgQEAKICAgICAjIGxpYnJhcmllcyB3ZXJlIGJ1aWx0IHdpdGggREVDbmV0IHN1cHBvcnQuICBBbmQga2FybEBjcy51bWIuZWR1IHNheXMKICAgICAjIHRoZSBBbHBoYSBuZWVkcyBkbmV0X3N0dWIgKGRuZXQgZG9lcyBub3QgZXhpc3QpLgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBkbmV0X250b2EgaW4gLWxkbmV0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMDk5OiBjaGVja2luZyBmb3IgZG5ldF9udG9hIGluIC1sZG5ldCIgPiY1CitlY2hvICJjb25maWd1cmU6MzEwMjogY2hlY2tpbmcgZm9yIGRuZXRfbnRvYSBpbiAtbGRuZXQiID4mNQogYWNfbGliX3Zhcj1gZWNobyBkbmV0J18nZG5ldF9udG9hIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zMTAzLDcgKzMxMDYsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxkbmV0ICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMxMDcgImNvbmZpZ3VyZSIKKyNsaW5lIDMxMTAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTMxMTQsNyArMzExNyw3IEBACiBkbmV0X250b2EoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMxMTg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMTIxOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzEzNiw3ICszMTM5LDcgQEAKIAogICAgIGlmIHRlc3QgJGFjX2N2X2xpYl9kbmV0X2RuZXRfbnRvYSA9IG5vOyB0aGVuCiAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZG5ldF9udG9hIGluIC1sZG5ldF9zdHViIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozMTQwOiBjaGVja2luZyBmb3IgZG5ldF9udG9hIGluIC1sZG5ldF9zdHViIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozMTQzOiBjaGVja2luZyBmb3IgZG5ldF9udG9hIGluIC1sZG5ldF9zdHViIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gZG5ldF9zdHViJ18nZG5ldF9udG9hIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zMTQ0LDcgKzMxNDcsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxkbmV0X3N0dWIgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzE0OCAiY29uZmlndXJlIgorI2xpbmUgMzE1MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMzE1NSw3ICszMTU4LDcgQEAKIGRuZXRfbnRvYSgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzE1OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMxNjI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0zMTg0LDEyICszMTg3LDEyIEBACiAgICAgIyBUaGUgbnNsIGxpYnJhcnkgcHJldmVudHMgcHJvZ3JhbXMgZnJvbSBvcGVuaW5nIHRoZSBYIGRpc3BsYXkKICAgICAjIG9uIElyaXggNS4yLCBhY2NvcmRpbmcgdG8gZGlja2V5QGNsYXJrLm5ldC4KICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzE4ODogY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUiID4mNQorZWNobyAiY29uZmlndXJlOjMxOTE6IGNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX2dldGhvc3RieW5hbWUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMTkzICJjb25maWd1cmUiCisjbGluZSAzMTk2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGdldGhvc3RieW5hbWUoKTsgYmVsb3cuICAqLwpAQCAtMzIxMiw3ICszMjE1LDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMyMTY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMjE5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jX2dldGhvc3RieW5hbWU9eWVzIgogZWxzZQpAQCAtMzIzMyw3ICszMjM2LDcgQEAKIAogICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfZ2V0aG9zdGJ5bmFtZSA9IG5vOyB0aGVuCiAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZ2V0aG9zdGJ5bmFtZSBpbiAtbG5zbCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzIzNzogY2hlY2tpbmcgZm9yIGdldGhvc3RieW5hbWUgaW4gLWxuc2wiID4mNQorZWNobyAiY29uZmlndXJlOjMyNDA6IGNoZWNraW5nIGZvciBnZXRob3N0YnluYW1lIGluIC1sbnNsIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gbnNsJ18nZ2V0aG9zdGJ5bmFtZSB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMzI0MSw3ICszMjQ0LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sbnNsICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDMyNDUgImNvbmZpZ3VyZSIKKyNsaW5lIDMyNDggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTMyNTIsNyArMzI1NSw3IEBACiBnZXRob3N0YnluYW1lKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMjU2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzI1OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTMyODIsMTIgKzMyODUsMTIgQEAKICAgICAjIC1sc29ja2V0IG11c3QgYmUgZ2l2ZW4gYmVmb3JlIC1sbnNsIGlmIGJvdGggYXJlIG5lZWRlZC4KICAgICAjIFdlIGFzc3VtZSB0aGF0IGlmIGNvbm5lY3QgbmVlZHMgLWxuc2wsIHNvIGRvZXMgZ2V0aG9zdGJ5bmFtZS4KICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgY29ubmVjdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzI4NjogY2hlY2tpbmcgZm9yIGNvbm5lY3QiID4mNQorZWNobyAiY29uZmlndXJlOjMyODk6IGNoZWNraW5nIGZvciBjb25uZWN0IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX2Nvbm5lY3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMjkxICJjb25maWd1cmUiCisjbGluZSAzMjk0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIGNvbm5lY3QoKTsgYmVsb3cuICAqLwpAQCAtMzMxMCw3ICszMzEzLDcgQEAKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMzMTQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozMzE3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9mdW5jX2Nvbm5lY3Q9eWVzIgogZWxzZQpAQCAtMzMzMSw3ICszMzM0LDcgQEAKIAogICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfY29ubmVjdCA9IG5vOyB0aGVuCiAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgY29ubmVjdCBpbiAtbHNvY2tldCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzMzNTogY2hlY2tpbmcgZm9yIGNvbm5lY3QgaW4gLWxzb2NrZXQiID4mNQorZWNobyAiY29uZmlndXJlOjMzMzg6IGNoZWNraW5nIGZvciBjb25uZWN0IGluIC1sc29ja2V0IiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gc29ja2V0J18nY29ubmVjdCB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtMzMzOSw3ICszMzQyLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sc29ja2V0ICRYX0VYVFJBX0xJQlMgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMzQzICJjb25maWd1cmUiCisjbGluZSAzMzQ2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0zMzUwLDcgKzMzNTMsNyBAQAogY29ubmVjdCgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzM1NDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjMzNTc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0zMzc0LDEyICszMzc3LDEyIEBACiAKICAgICAjIGdvbWV6QG1pLnVuaS1lcmxhbmdlbi5kZSBzYXlzIC1scG9zaXggaXMgbmVjZXNzYXJ5IG9uIEEvVVguCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHJlbW92ZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzM3ODogY2hlY2tpbmcgZm9yIHJlbW92ZSIgPiY1CitlY2hvICJjb25maWd1cmU6MzM4MTogY2hlY2tpbmcgZm9yIHJlbW92ZSIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfZnVuY19yZW1vdmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzMzgzICJjb25maWd1cmUiCisjbGluZSAzMzg2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyIHJlbW92ZSgpOyBiZWxvdy4gICovCkBAIC0zNDAyLDcgKzM0MDUsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzQwNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM0MDk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfcmVtb3ZlPXllcyIKIGVsc2UKQEAgLTM0MjMsNyArMzQyNiw3IEBACiAKICAgICBpZiB0ZXN0ICRhY19jdl9mdW5jX3JlbW92ZSA9IG5vOyB0aGVuCiAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcmVtb3ZlIGluIC1scG9zaXgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM0Mjc6IGNoZWNraW5nIGZvciByZW1vdmUgaW4gLWxwb3NpeCIgPiY1CitlY2hvICJjb25maWd1cmU6MzQzMDogY2hlY2tpbmcgZm9yIHJlbW92ZSBpbiAtbHBvc2l4IiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gcG9zaXgnXydyZW1vdmUgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTM0MzEsNyArMzQzNCw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbHBvc2l4ICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM0MzUgImNvbmZpZ3VyZSIKKyNsaW5lIDM0MzggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTM0NDIsNyArMzQ0NSw3IEBACiByZW1vdmUoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM0NDY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNDQ5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzQ2NiwxMiArMzQ2OSwxMiBAQAogCiAgICAgIyBCU0RJIEJTRC9PUyAyLjEgbmVlZHMgLWxpcGMgZm9yIFhPcGVuRGlzcGxheS4KICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc2htYXQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM0NzA6IGNoZWNraW5nIGZvciBzaG1hdCIgPiY1CitlY2hvICJjb25maWd1cmU6MzQ3MzogY2hlY2tpbmcgZm9yIHNobWF0IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jX3NobWF0JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzQ3NSAiY29uZmlndXJlIgorI2xpbmUgMzQ3OCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciBzaG1hdCgpOyBiZWxvdy4gICovCkBAIC0zNDk0LDcgKzM0OTcsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzQ5ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1MDE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfc2htYXQ9eWVzIgogZWxzZQpAQCAtMzUxNSw3ICszNTE4LDcgQEAKIAogICAgIGlmIHRlc3QgJGFjX2N2X2Z1bmNfc2htYXQgPSBubzsgdGhlbgogICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHNobWF0IGluIC1saXBjIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNTE5OiBjaGVja2luZyBmb3Igc2htYXQgaW4gLWxpcGMiID4mNQorZWNobyAiY29uZmlndXJlOjM1MjI6IGNoZWNraW5nIGZvciBzaG1hdCBpbiAtbGlwYyIgPiY1CiBhY19saWJfdmFyPWBlY2hvIGlwYydfJ3NobWF0IHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zNTIzLDcgKzM1MjYsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxpcGMgICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzUyNyAiY29uZmlndXJlIgorI2xpbmUgMzUzMCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMzUzNCw3ICszNTM3LDcgQEAKIHNobWF0KCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNTM4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzU0MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTM1NjcsNyArMzU3MCw3IEBACiAgICMgbGlicmFyaWVzIHdlIGNoZWNrIGZvciBiZWxvdywgc28gdXNlIGEgZGlmZmVyZW50IHZhcmlhYmxlLgogICAjICAtLWludGVycmFuQHVsdXJ1LlN0YW5mb3JkLkVEVSwga2JAY3MudW1iLmVkdS4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEljZUNvbm5lY3Rpb25OdW1iZXIgaW4gLWxJQ0UiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM1NzE6IGNoZWNraW5nIGZvciBJY2VDb25uZWN0aW9uTnVtYmVyIGluIC1sSUNFIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozNTc0OiBjaGVja2luZyBmb3IgSWNlQ29ubmVjdGlvbk51bWJlciBpbiAtbElDRSIgPiY1CiBhY19saWJfdmFyPWBlY2hvIElDRSdfJ0ljZUNvbm5lY3Rpb25OdW1iZXIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTM1NzUsNyArMzU3OCw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbElDRSAkWF9FWFRSQV9MSUJTICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzU3OSAiY29uZmlndXJlIgorI2xpbmUgMzU4MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtMzU4Niw3ICszNTg5LDcgQEAKIEljZUNvbm5lY3Rpb25OdW1iZXIoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM1OTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNTkzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzY0MCwxOCArMzY0MywxOCBAQAogCiAKICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGlmIFgxMSBoZWFkZXIgZmlsZXMgY2FuIGJlIGZvdW5kIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNjQ0OiBjaGVja2luZyBpZiBYMTEgaGVhZGVyIGZpbGVzIGNhbiBiZSBmb3VuZCIgPiY1CitlY2hvICJjb25maWd1cmU6MzY0NzogY2hlY2tpbmcgaWYgWDExIGhlYWRlciBmaWxlcyBjYW4gYmUgZm91bmQiID4mNQogICBjZmxhZ3Nfc2F2ZT0kQ0ZMQUdTCiAgIENGTEFHUz0iJENGTEFHUyAkWF9DRkxBR1MiCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM2NDggImNvbmZpZ3VyZSIKKyNsaW5lIDM2NTEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPFgxMS9YbGliLmg+CiBpbnQgbWFpbigpIHsKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM2NTU6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzY1ODogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKIGVsc2UKQEAgLTM2NzcsNyArMzY4MCw3IEBACiAgICAgTERGTEFHUz0iLUwkeF9saWJyYXJpZXMgJExERkxBR1MiCiAKICAgICAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBfWGRtY3BBdXRoRG9JdCBpbiAtbFhkbWNwIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNjgxOiBjaGVja2luZyBmb3IgX1hkbWNwQXV0aERvSXQgaW4gLWxYZG1jcCIgPiY1CitlY2hvICJjb25maWd1cmU6MzY4NDogY2hlY2tpbmcgZm9yIF9YZG1jcEF1dGhEb0l0IGluIC1sWGRtY3AiID4mNQogYWNfbGliX3Zhcj1gZWNobyBYZG1jcCdfJ19YZG1jcEF1dGhEb0l0IHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zNjg1LDcgKzM2ODgsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxYZG1jcCAtbFh0ICRYX1BSRV9MSUJTIC1sWDExICRYX0VYVFJBX0xJQlMgLWxYZG1jcCAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM2ODkgImNvbmZpZ3VyZSIKKyNsaW5lIDM2OTIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTM2OTYsNyArMzY5OSw3IEBACiBfWGRtY3BBdXRoRG9JdCgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzcwMDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM3MDM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0zNzE4LDcgKzM3MjEsNyBAQAogCiAKICAgICAgICAgICAgICAgICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEljZU9wZW5Db25uZWN0aW9uIGluIC1sSUNFIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozNzIyOiBjaGVja2luZyBmb3IgSWNlT3BlbkNvbm5lY3Rpb24gaW4gLWxJQ0UiID4mNQorZWNobyAiY29uZmlndXJlOjM3MjU6IGNoZWNraW5nIGZvciBJY2VPcGVuQ29ubmVjdGlvbiBpbiAtbElDRSIgPiY1CiBhY19saWJfdmFyPWBlY2hvIElDRSdfJ0ljZU9wZW5Db25uZWN0aW9uIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC0zNzI2LDcgKzM3MjksNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxJQ0UgJFhfRVhUUkFfTElCUyAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDM3MzAgImNvbmZpZ3VyZSIKKyNsaW5lIDM3MzMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTM3MzcsNyArMzc0MCw3IEBACiBJY2VPcGVuQ29ubmVjdGlvbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Mzc0MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM3NDQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC0zNzYwLDcgKzM3NjMsNyBAQAogCiAgICAgICAgIExERkxBR1M9IiRYX0xJQlMgJGFjX3NhdmVfTERGTEFHUyIKICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgWHBtQ3JlYXRlUGl4bWFwRnJvbURhdGEgaW4gLWxYcG0iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM3NjQ6IGNoZWNraW5nIGZvciBYcG1DcmVhdGVQaXhtYXBGcm9tRGF0YSBpbiAtbFhwbSIgPiY1CitlY2hvICJjb25maWd1cmU6Mzc2NzogY2hlY2tpbmcgZm9yIFhwbUNyZWF0ZVBpeG1hcEZyb21EYXRhIGluIC1sWHBtIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gWHBtJ18nWHBtQ3JlYXRlUGl4bWFwRnJvbURhdGEgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfbGliXyRhY19saWJfdmFyJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKQEAgLTM3NjgsNyArMzc3MSw3IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbFhwbSAtbFh0ICRYX1BSRV9MSUJTIC1sWHBtIC1sWDExICRYX0VYVFJBX0xJQlMgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzNzcyICJjb25maWd1cmUiCisjbGluZSAzNzc1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC0zNzc5LDcgKzM3ODIsNyBAQAogWHBtQ3JlYXRlUGl4bWFwRnJvbURhdGEoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM3ODM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozNzg2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtMzgwMSwxOCArMzgwNCwxOCBAQAogCiAKICAgICAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgaWYgWDExIGhlYWRlciBmaWxlcyBpbXBsaWNpdGx5IGRlY2xhcmUgcmV0dXJuIHZhbHVlcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6MzgwNTogY2hlY2tpbmcgaWYgWDExIGhlYWRlciBmaWxlcyBpbXBsaWNpdGx5IGRlY2xhcmUgcmV0dXJuIHZhbHVlcyIgPiY1CitlY2hvICJjb25maWd1cmU6MzgwODogY2hlY2tpbmcgaWYgWDExIGhlYWRlciBmaWxlcyBpbXBsaWNpdGx5IGRlY2xhcmUgcmV0dXJuIHZhbHVlcyIgPiY1CiAgICAgY2ZsYWdzX3NhdmU9JENGTEFHUwogICAgIENGTEFHUz0iJENGTEFHUyAkWF9DRkxBR1MgLVdlcnJvciIKICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSAzODA5ICJjb25maWd1cmUiCisjbGluZSAzODEyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxYMTEvWGxpYi5oPgogaW50IG1haW4oKSB7CiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODE2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjM4MTk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGVsc2UKQEAgLTM4MjEsMTQgKzM4MjQsMTQgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBDRkxBR1M9IiRDRkxBR1MgLVduby1pbXBsaWNpdC1pbnQiCiAJY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgMzgyNSAiY29uZmlndXJlIgorI2xpbmUgMzgyOCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8WDExL1hsaWIuaD4KIGludCBtYWluKCkgewogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6MzgzMjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTozODM1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2ZsYWdzX3NhdmU9IiRjZmxhZ3Nfc2F2ZSAtV25vLWltcGxpY2l0LWludCIKIGVsc2UKQEAgLTM4NTIsNyArMzg1NSw3IEBACiB0ZXN0ICJ4JHdpdGhfeCIgPSB4bm8gLWEgIngkQkVPUyIgIT0gInh5ZXMiIC1hICJ4JE1BQ09TWCIgIT0gInh5ZXMiIC1hICJ4JFFOWCIgIT0gInh5ZXMiICYmIGVuYWJsZV9ndWk9bm8KIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgLS1lbmFibGUtZ3VpIGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTozODU2OiBjaGVja2luZyAtLWVuYWJsZS1ndWkgYXJndW1lbnQiID4mNQorZWNobyAiY29uZmlndXJlOjM4NTk6IGNoZWNraW5nIC0tZW5hYmxlLWd1aSBhcmd1bWVudCIgPiY1CiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ3VpIG9yIC0tZGlzYWJsZS1ndWkgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfZ3VpK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9ndWkiCkBAIC0zOTUyLDcgKzM5NTUsNyBAQAogCiBpZiB0ZXN0ICJ4JFNLSVBfS0RFIiAhPSAieFlFUyIgLWEgIiRlbmFibGVfZ3VpX2Nhbm9uIiAhPSAia2RlIjsgdGhlbgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIEtERSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mzk1NjogY2hlY2tpbmcgd2hldGhlciBvciBub3QgdG8gbG9vayBmb3IgS0RFIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozOTU5OiBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBLREUiID4mNQogICAgICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1rZGUtY2hlY2sgb3IgLS1kaXNhYmxlLWtkZS1jaGVjayB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9rZGVfY2hlY2src2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX2tkZV9jaGVjayIKQEAgLTM5NjksNyArMzk3Miw3IEBACiAKIGlmIHRlc3QgIngkU0tJUF9HVEsiICE9ICJ4WUVTIiAtYSAiJGVuYWJsZV9ndWlfY2Fub24iICE9ICJndGsiIC1hICIkZW5hYmxlX2d1aV9jYW5vbiIgIT0gImd0azIiOyB0aGVuCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIEdUSyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Mzk3MzogY2hlY2tpbmcgd2hldGhlciBvciBub3QgdG8gbG9vayBmb3IgR1RLIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTozOTc2OiBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBHVEsiID4mNQogICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ3RrLWNoZWNrIG9yIC0tZGlzYWJsZS1ndGstY2hlY2sgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfZ3RrX2NoZWNrK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9ndGtfY2hlY2siCkBAIC0zOTg4LDcgKzM5OTEsNyBAQAogaWYgdGVzdCAieCRTS0lQX0dUSzIiICE9ICJ4WUVTIiAtYSAiJGVuYWJsZV9ndWlfY2Fub24iICE9ICJndGsyIiBcCiAJCQkJLWEgIiRlbmFibGVfZ3VpX2Nhbm9uIiAhPSAiZ25vbWUyIjsgdGhlbgogICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBHVEsrIDIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjM5OTI6IGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIEdUSysgMiIgPiY1CitlY2hvICJjb25maWd1cmU6Mzk5NTogY2hlY2tpbmcgd2hldGhlciBvciBub3QgdG8gbG9vayBmb3IgR1RLKyAyIiA+JjUKICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWd0azItY2hlY2sgb3IgLS1kaXNhYmxlLWd0azItY2hlY2sgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfZ3RrMl9jaGVjaytzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfZ3RrMl9jaGVjayIKQEAgLTQwMDYsNyArNDAwOSw3IEBACiBpZiB0ZXN0ICJ4JFNLSVBfR05PTUUiICE9ICJ4WUVTIiAtYSAiJGVuYWJsZV9ndWlfY2Fub24iICE9ICJnbm9tZSIgXAogCQkJCSAtYSAiJGVuYWJsZV9ndWlfY2Fub24iICE9ICJnbm9tZTIiOyB0aGVuCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIEdOT01FIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MDEwOiBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBHTk9NRSIgPiY1CitlY2hvICJjb25maWd1cmU6NDAxMzogY2hlY2tpbmcgd2hldGhlciBvciBub3QgdG8gbG9vayBmb3IgR05PTUUiID4mNQogICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ25vbWUtY2hlY2sgb3IgLS1kaXNhYmxlLWdub21lLWNoZWNrIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX2dub21lX2NoZWNrK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9nbm9tZV9jaGVjayIKQEAgLTQwMjMsNyArNDAyNiw3IEBACiAKIGlmIHRlc3QgIngkU0tJUF9NT1RJRiIgIT0gInhZRVMiIC1hICIkZW5hYmxlX2d1aV9jYW5vbiIgIT0gIm1vdGlmIjsgdGhlbgogICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBNb3RpZiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDAyNzogY2hlY2tpbmcgd2hldGhlciBvciBub3QgdG8gbG9vayBmb3IgTW90aWYiID4mNQorZWNobyAiY29uZmlndXJlOjQwMzA6IGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIE1vdGlmIiA+JjUKICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1vdGlmLWNoZWNrIG9yIC0tZGlzYWJsZS1tb3RpZi1jaGVjayB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9tb3RpZl9jaGVjaytzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfbW90aWZfY2hlY2siCkBAIC00MDQwLDcgKzQwNDMsNyBAQAogCiBpZiB0ZXN0ICJ4JFNLSVBfQVRIRU5BIiAhPSAieFlFUyIgLWEgIiRlbmFibGVfZ3VpX2Nhbm9uIiAhPSAiYXRoZW5hIjsgdGhlbgogICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBBdGhlbmEiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQwNDQ6IGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIEF0aGVuYSIgPiY1CitlY2hvICJjb25maWd1cmU6NDA0NzogY2hlY2tpbmcgd2hldGhlciBvciBub3QgdG8gbG9vayBmb3IgQXRoZW5hIiA+JjUKICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWF0aGVuYS1jaGVjayBvciAtLWRpc2FibGUtYXRoZW5hLWNoZWNrIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX2F0aGVuYV9jaGVjaytzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfYXRoZW5hX2NoZWNrIgpAQCAtNDA1Nyw3ICs0MDYwLDcgQEAKIAogaWYgdGVzdCAieCRTS0lQX05FWFRBVyIgIT0gInhZRVMiIC1hICIkZW5hYmxlX2d1aV9jYW5vbiIgIT0gIm5leHRhdyI7IHRoZW4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBvciBub3QgdG8gbG9vayBmb3IgbmVYdGF3IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MDYxOiBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBuZVh0YXciID4mNQorZWNobyAiY29uZmlndXJlOjQwNjQ6IGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIG5lWHRhdyIgPiY1CiAgICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1uZXh0YXctY2hlY2sgb3IgLS1kaXNhYmxlLW5leHRhdy1jaGVjayB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9uZXh0YXdfY2hlY2src2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX25leHRhd19jaGVjayIKQEAgLTQwNzQsNyArNDA3Nyw3IEBACiAKIGlmIHRlc3QgIngkU0tJUF9DQVJCT04iICE9ICJ4WUVTIiAtYSAiJGVuYWJsZV9ndWlfY2Fub24iICE9ICJjYXJib24iOyB0aGVuCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIGxvb2sgZm9yIENhcmJvbiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDA3ODogY2hlY2tpbmcgd2hldGhlciBvciBub3QgdG8gbG9vayBmb3IgQ2FyYm9uIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MDgxOiBjaGVja2luZyB3aGV0aGVyIG9yIG5vdCB0byBsb29rIGZvciBDYXJib24iID4mNQogICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtY2FyYm9uLWNoZWNrIG9yIC0tZGlzYWJsZS1jYXJib24tY2hlY2sgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfY2FyYm9uX2NoZWNrK3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9jYXJib25fY2hlY2siCkBAIC00MTA4LDcgKzQxMTEsNyBAQAogICAgICAgICAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtb2MiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IG1vYzsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MTEyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjQxMTU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9NT0MnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtNDE3OCw3ICs0MTgxLDcgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBhIEtERSBUb29sYmFyIGluIEtWaW0iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQxODI6IGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBhIEtERSBUb29sYmFyIGluIEtWaW0iID4mNQorZWNobyAiY29uZmlndXJlOjQxODU6IGNoZWNraW5nIHdoZXRoZXIgb3Igbm90IHRvIHVzZSBhIEtERSBUb29sYmFyIGluIEtWaW0iID4mNQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWtkZS10b29sYmFyIG9yIC0tZGlzYWJsZS1rZGUtdG9vbGJhciB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9rZGVfdG9vbGJhcitzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfa2RlX3Rvb2xiYXIiCkBAIC00MjAzLDcgKzQyMDYsNyBAQAogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIC0tZGlzYWJsZS1ycGF0aCBhcmd1bWVudCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDIwNzogY2hlY2tpbmcgLS1kaXNhYmxlLXJwYXRoIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MjEwOiBjaGVja2luZyAtLWRpc2FibGUtcnBhdGggYXJndW1lbnQiID4mNQogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXJwYXRoIG9yIC0tZGlzYWJsZS1ycGF0aCB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9ycGF0aCtzZXR9IiA9IHNldDsgdGhlbgogICBlbmFibGV2YWw9IiRlbmFibGVfcnBhdGgiCkBAIC00MjE5LDcgKzQyMjIsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgLS13aXRoLWtkZS1wcmVmaXggYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQyMjM6IGNoZWNraW5nIC0td2l0aC1rZGUtcHJlZml4IGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MjI2OiBjaGVja2luZyAtLXdpdGgta2RlLXByZWZpeCBhcmd1bWVudCIgPiY1CiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWtkZS1wcmVmaXggb3IgLS13aXRob3V0LWtkZS1wcmVmaXggd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX2tkZV9wcmVmaXgrc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfa2RlX3ByZWZpeCIKQEAgLTQyNDcsNyArNDI1MCw3IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgLS1kaXNhYmxlLWtkZXRlc3QgYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQyNTE6IGNoZWNraW5nIC0tZGlzYWJsZS1rZGV0ZXN0IGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0MjU0OiBjaGVja2luZyAtLWRpc2FibGUta2RldGVzdCBhcmd1bWVudCIgPiY1CiAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUta2RldGVzdCBvciAtLWRpc2FibGUta2RldGVzdCB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9rZGV0ZXN0K3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9rZGV0ZXN0IgpAQCAtNDI2OSw3ICs0MjcyLDcgQEAKIAkjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImtkZS1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGtkZS1jb25maWc7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDI3MzogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0Mjc2OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfS0RFX0NPTkZJRycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00MzExLDcgKzQzMTQsNyBAQAogCWlmIHRlc3QgIlgkS0RFX0NPTkZJRyIgIT0gIlgiOyB0aGVuCiAJICBtaW5fa2RlX3ZlcnNpb249Mi4wLjAKIAkgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBLREUgdmVyc2lvbiA+PSAkbWluX2tkZV92ZXJzaW9uIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0MzE1OiBjaGVja2luZyBmb3IgS0RFIHZlcnNpb24gPj0gJG1pbl9rZGVfdmVyc2lvbiIgPiY1CitlY2hvICJjb25maWd1cmU6NDMxODogY2hlY2tpbmcgZm9yIEtERSB2ZXJzaW9uID49ICRtaW5fa2RlX3ZlcnNpb24iID4mNQogCSAgbm9fa2RlPSIiCiAJICBpZiB0ZXN0ICIkS0RFX0NPTkZJRyIgPSAibm8iIDsgdGhlbgogCQlub19rZGU9eWVzCkBAIC00MzQ0LDcgKzQzNDcsNyBAQAogICBlY2hvICRhY19uICJjcm9zcyBjb21waWxpbmcgS0RFID8gPyBob3cgY2FuIGkgcmVtb3ZlIHRoYXQgPyA6KSIKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDM0OCAiY29uZmlndXJlIgorI2xpbmUgNDM1MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNDM1Myw3ICs0MzU2LDcgQEAKIHsgcmV0dXJuIDA7IH0KIAkJCQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQzNTc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDM2MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICA6CiBlbHNlCkBAIC00MzkwLDcgKzQzOTMsNyBAQAogCiAJaWYgdGVzdCAieCRLREVfUFJFRklYIiAhPSAieCI7IHRoZW4KIAkJZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFFUIHZlcnNpb24gJHF0X21ham9yX3ZlcnNpb24ueCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDM5NDogY2hlY2tpbmcgZm9yIFFUIHZlcnNpb24gJHF0X21ham9yX3ZlcnNpb24ueCIgPiY1CitlY2hvICJjb25maWd1cmU6NDM5NzogY2hlY2tpbmcgZm9yIFFUIHZlcnNpb24gJHF0X21ham9yX3ZlcnNpb24ueCIgPiY1CiAJCWlmIHRlc3QgIngkUk9PVFFUIiAhPSAieCIgOyB0aGVuCiAJCQlHVUlfSU5DX0xPQz0iLUkkUVRfSU5DTFVERVMgJEdVSV9JTkNfTE9DIgogCQkJaWYgdGVzdCAkcXRfbWFqb3JfdmVyc2lvbiAtbHQgMjsgdGhlbgpAQCAtNDQyOSw3ICs0NDMyLDcgQEAKICAgICBkbwogICAgICAgZm9yIGogaW4gcXN0eWxlLmg7CiAgICAgICBkbwotICAgICAgIGVjaG8gImNvbmZpZ3VyZTogNDQzMzogJGkvJGoiID4mNQorICAgICAgIGVjaG8gImNvbmZpZ3VyZTogNDQzNjogJGkvJGoiID4mNQogICAgICAgIGlmIHRlc3QgLXIgIiRpLyRqIjsgdGhlbgogICAgICAgICAgZWNobyAidGFraW5nIHRoYXQiID4mNQogICAgICAgICAgcXRfaW5jZGlyPSRpCkBAIC00NDQ3LDcgKzQ0NTAsNyBAQAogICAgIGRvCiAgICAgICBmb3IgaiBpbiBrYXBwbGljYXRpb24uaDsKICAgICAgIGRvCi0gICAgICAgZWNobyAiY29uZmlndXJlOiA0NDUxOiAkaS8kaiIgPiY1CisgICAgICAgZWNobyAiY29uZmlndXJlOiA0NDU0OiAkaS8kaiIgPiY1CiAgICAgICAgaWYgdGVzdCAtciAiJGkvJGoiOyB0aGVuCiAgICAgICAgICBlY2hvICJ0YWtpbmcgdGhhdCIgPiY1CiAgICAgICAgICBrZGVfaW5jZGlyPSRpCkBAIC00NDczLDkgKzQ0NzYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICBhY19zYXZlX0NYWEZMQUdTPSIkQ1hYRkxBR1MiCiAgICAgICAgICAgICAgICAgICAgICAgIENYWEZMQUdTPSIkQ1hYRkxBR1MgJEdVSV9JTkNfTE9DIgogICAgICAgICAgICAgICAgICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIFF0IGxpYnJhcmllcyBhcmUgdXNhYmxlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0NDc3OiBjaGVja2luZyB3aGV0aGVyIFF0IGxpYnJhcmllcyBhcmUgdXNhYmxlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NDgwOiBjaGVja2luZyB3aGV0aGVyIFF0IGxpYnJhcmllcyBhcmUgdXNhYmxlIiA+JjUKICAgICAgICAgICAgICAgICAgICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNDQ3OSAiY29uZmlndXJlIgorI2xpbmUgNDQ4MiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8cWFwcGxpY2F0aW9uLmg+CiBpbnQgbWFpbigpIHsKQEAgLTQ0ODYsNyArNDQ4OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NDkwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDQ5MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgogZWxzZQpAQCAtNDQ5OCw5ICs0NTAxLDkgQEAKIHJtIC1mIGNvbmZ0ZXN0KgogCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgS0RFIGxpYnJhcmllcyBhcmUgdXNhYmxlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0NTAyOiBjaGVja2luZyB3aGV0aGVyIEtERSBsaWJyYXJpZXMgYXJlIHVzYWJsZSIgPiY1CitlY2hvICJjb25maWd1cmU6NDUwNTogY2hlY2tpbmcgd2hldGhlciBLREUgbGlicmFyaWVzIGFyZSB1c2FibGUiID4mNQogICAgICAgICAgICAgICAgICAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0NTA0ICJjb25maWd1cmUiCisjbGluZSA0NTA3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxrYXBwbGljYXRpb24uaD4KIGludCBtYWluKCkgewpAQCAtNDUxMSw3ICs0NTE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ1MTU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0NTE4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiBlbHNlCkBAIC00NTU3LDcgKzQ1NjAsNyBAQAogCiBpZiB0ZXN0ICJ4JE1BQ09TWCIgPSAieHllcyIgLWEgLXogIiRTS0lQX0NBUkJPTiIgLWEgIngkQ0FSQk9OIiA9ICJ4eWVzIjsgdGhlbgogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgQ2FyYm9uIEdVSSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDU2MTogY2hlY2tpbmcgZm9yIENhcmJvbiBHVUkiID4mNQorZWNobyAiY29uZmlndXJlOjQ1NjQ6IGNoZWNraW5nIGZvciBDYXJib24gR1VJIiA+JjUKICAgICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OwogICBHVUlUWVBFPUNBUkJPTkdVSQogICAgIFNLSVBfR1RLPVlFUzsKQEAgLTQ1ODIsNyArNDU4NSw3IEBACiBpZiB0ZXN0IC16ICIkU0tJUF9HVEsiOyB0aGVuCiAKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgLS13aXRoLWd0ay1wcmVmaXggYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ1ODY6IGNoZWNraW5nIC0td2l0aC1ndGstcHJlZml4IGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NTg5OiBjaGVja2luZyAtLXdpdGgtZ3RrLXByZWZpeCBhcmd1bWVudCIgPiY1CiAgICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZ3RrLXByZWZpeCBvciAtLXdpdGhvdXQtZ3RrLXByZWZpeCB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfZ3RrX3ByZWZpeCtzZXR9IiA9IHNldDsgdGhlbgogICB3aXRodmFsPSIkd2l0aF9ndGtfcHJlZml4IgpAQCAtNDU5Myw3ICs0NTk2LDcgQEAKIAogCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIC0td2l0aC1ndGstZXhlYy1wcmVmaXggYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ1OTc6IGNoZWNraW5nIC0td2l0aC1ndGstZXhlYy1wcmVmaXggYXJndW1lbnQiID4mNQorZWNobyAiY29uZmlndXJlOjQ2MDA6IGNoZWNraW5nIC0td2l0aC1ndGstZXhlYy1wcmVmaXggYXJndW1lbnQiID4mNQogICAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWd0ay1leGVjLXByZWZpeCBvciAtLXdpdGhvdXQtZ3RrLWV4ZWMtcHJlZml4IHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7d2l0aF9ndGtfZXhlY19wcmVmaXgrc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfZ3RrX2V4ZWNfcHJlZml4IgpAQCAtNDYwNCw3ICs0NjA3LDcgQEAKIAogCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIC0tZGlzYWJsZS1ndGt0ZXN0IGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0NjA4OiBjaGVja2luZyAtLWRpc2FibGUtZ3RrdGVzdCBhcmd1bWVudCIgPiY1CitlY2hvICJjb25maWd1cmU6NDYxMTogY2hlY2tpbmcgLS1kaXNhYmxlLWd0a3Rlc3QgYXJndW1lbnQiID4mNQogICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ3RrdGVzdCBvciAtLWRpc2FibGUtZ3RrdGVzdCB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9ndGt0ZXN0K3NldH0iID0gc2V0OyB0aGVuCiAgIGVuYWJsZXZhbD0iJGVuYWJsZV9ndGt0ZXN0IgpAQCAtNDYzMSw3ICs0NjM0LDcgQEAKICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImd0ay1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGd0ay1jb25maWc7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDYzNTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NjM4OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfR1RLX0NPTkZJRycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00NjY4LDcgKzQ2NzEsNyBAQAogICAgICAgICAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJndGsxMi1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGd0azEyLWNvbmZpZzsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo0NjcyOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjQ2NzU6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9HVEsxMl9DT05GSUcnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtNDcxMCw3ICs0NzEzLDcgQEAKICAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgInBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IHBrZy1jb25maWc7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDcxNDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo0NzE3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3BhdGhfUEtHX0NPTkZJRycrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCkBAIC00NzUyLDcgKzQ3NTUsNyBAQAogICB7CiAgICAgbWluX2d0a192ZXJzaW9uPTIuMi4wCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEdUSyAtIHZlcnNpb24gPj0gJG1pbl9ndGtfdmVyc2lvbiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NDc1NjogY2hlY2tpbmcgZm9yIEdUSyAtIHZlcnNpb24gPj0gJG1pbl9ndGtfdmVyc2lvbiIgPiY1CitlY2hvICJjb25maWd1cmU6NDc1OTogY2hlY2tpbmcgZm9yIEdUSyAtIHZlcnNpb24gPj0gJG1pbl9ndGtfdmVyc2lvbiIgPiY1CiAgICAgbm9fZ3RrPSIiCiAgICAgaWYgKHRlc3QgIlgkU0tJUF9HVEsyIiAhPSAiWFlFUyIgLWEgIlgkUEtHX0NPTkZJRyIgIT0gIlhubyIpIFwKIAkgICYmICRQS0dfQ09ORklHIC0tZXhpc3RzIGd0aystMi4wOyB0aGVuCkBAIC00NzkzLDcgKzQ3OTYsNyBAQAogICBlY2hvICRhY19uICJjcm9zcyBjb21waWxpbmc7IGFzc3VtZWQgT0suLi4gJGFjX2MiCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDQ3OTcgImNvbmZpZ3VyZSIKKyNsaW5lIDQ4MDAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgpAQCAtNDgyNSw3ICs0ODI4LDcgQEAKIH0KIAogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ4Mjk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NDgzMjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICA6CiBlbHNlCkBAIC00ODgzLDcgKzQ4ODYsNyBAQAogICB7CiAgICAgbWluX2d0a192ZXJzaW9uPTEuMS4xNgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBHVEsgLSB2ZXJzaW9uID49ICRtaW5fZ3RrX3ZlcnNpb24iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjQ4ODc6IGNoZWNraW5nIGZvciBHVEsgLSB2ZXJzaW9uID49ICRtaW5fZ3RrX3ZlcnNpb24iID4mNQorZWNobyAiY29uZmlndXJlOjQ4OTA6IGNoZWNraW5nIGZvciBHVEsgLSB2ZXJzaW9uID49ICRtaW5fZ3RrX3ZlcnNpb24iID4mNQogICAgIG5vX2d0az0iIgogICAgIGlmICh0ZXN0ICJYJFNLSVBfR1RLMiIgIT0gIlhZRVMiIC1hICJYJFBLR19DT05GSUciICE9ICJYbm8iKSBcCiAJICAmJiAkUEtHX0NPTkZJRyAtLWV4aXN0cyBndGsrLTIuMDsgdGhlbgpAQCAtNDkyNCw3ICs0OTI3LDcgQEAKICAgZWNobyAkYWNfbiAiY3Jvc3MgY29tcGlsaW5nOyBhc3N1bWVkIE9LLi4uICRhY19jIgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA0OTI4ICJjb25maWd1cmUiCisjbGluZSA0OTMxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KQEAgLTQ5NTYsNyArNDk1OSw3IEBACiB9CiAKIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo0OTYwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjQ5NjM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgOgogZWxzZQpAQCAtNTA3NCw3ICs1MDc3LDcgQEAKICAgaWYgdGVzdCAieCR3YW50X2dub21lIiA9IHh5ZXMgLWEgIjAkZ3RrX21ham9yX3ZlcnNpb24iIC1nZSAyOyB0aGVuCiAgIHsKICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgbGliZ25vbWV1aS0yLjAiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUwNzg6IGNoZWNraW5nIGZvciBsaWJnbm9tZXVpLTIuMCIgPiY1CitlY2hvICJjb25maWd1cmU6NTA4MTogY2hlY2tpbmcgZm9yIGxpYmdub21ldWktMi4wIiA+JjUKICAgICBpZiAkUEtHX0NPTkZJRyAtLWV4aXN0cyBsaWJnbm9tZXVpLTIuMDsgdGhlbgogICAgICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgogICAgICAgR05PTUVfTElCUz1gJFBLR19DT05GSUcgLS1saWJzLW9ubHktbCBsaWJnbm9tZXVpLTIuMGAKQEAgLTUwOTMsNyArNTA5Niw3IEBACiAgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJnbm9tZS1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgogc2V0IGR1bW15IGdub21lLWNvbmZpZzsgYWNfd29yZD0kMgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY193b3JkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1MDk3OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorZWNobyAiY29uZmlndXJlOjUxMDA6IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcGF0aF9HTk9NRV9DT05GSUcnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtNTEzMCw3ICs1MTMzLDcgQEAKICAgICAgIG5vX2dub21lX2NvbmZpZz0ieWVzIgogICAgIGVsc2UKICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGlmICRHTk9NRV9DT05GSUcgd29ya3MiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUxMzQ6IGNoZWNraW5nIGlmICRHTk9NRV9DT05GSUcgd29ya3MiID4mNQorZWNobyAiY29uZmlndXJlOjUxMzc6IGNoZWNraW5nIGlmICRHTk9NRV9DT05GSUcgd29ya3MiID4mNQogICAgICAgaWYgJEdOT01FX0NPTkZJRyAtLWxpYnMtb25seS1sIGdub21lID4vZGV2L251bGwgMj4mMTsgdGhlbgogCWVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKIAlHTk9NRV9MSUJTPSJgJEdOT01FX0NPTkZJRyAtLWxpYnMtb25seS1sIGdub21lIGdub21ldWlgIgpAQCAtNTE1NSw3ICs1MTU4LDcgQEAKIAogICAgIGlmIHRlc3QgIiRub19nbm9tZV9jb25maWciID0gInllcyI7IHRoZW4KICAgICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBnbm9tZUNvbmYuc2ggZmlsZSBpbiAkZ25vbWVfcHJlZml4IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1MTU5OiBjaGVja2luZyBmb3IgZ25vbWVDb25mLnNoIGZpbGUgaW4gJGdub21lX3ByZWZpeCIgPiY1CitlY2hvICJjb25maWd1cmU6NTE2MjogY2hlY2tpbmcgZm9yIGdub21lQ29uZi5zaCBmaWxlIGluICRnbm9tZV9wcmVmaXgiID4mNQogICAgICAgaWYgdGVzdCAtZiAkZ25vbWVfcHJlZml4L2dub21lQ29uZi5zaDsgdGhlbgogCWVjaG8gIiRhY190IiJmb3VuZCIgMT4mNgogCWVjaG8gImxvYWRpbmcgZ25vbWUgY29uZmlndXJhdGlvbiBmcm9tIiBcCkBAIC01MTkzLDcgKzUxOTYsNyBAQAogICAgIEdVSV9JTkNfTE9DPSJgZWNobyAkR1VJX0lOQ19MT0N8c2VkICdzJS1JJSVnJ2AiCiAKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGxvY2F0aW9uIG9mIE1vdGlmIEdVSSBpbmNsdWRlcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTE5NzogY2hlY2tpbmcgZm9yIGxvY2F0aW9uIG9mIE1vdGlmIEdVSSBpbmNsdWRlcyIgPiY1CitlY2hvICJjb25maWd1cmU6NTIwMDogY2hlY2tpbmcgZm9yIGxvY2F0aW9uIG9mIE1vdGlmIEdVSSBpbmNsdWRlcyIgPiY1CiAgIGd1aV9pbmNsdWRlcz0iYGVjaG8gJHhfaW5jbHVkZXN8c2VkICdzJS9eL14vKiQlJSdgIGBlY2hvICIkZ3VpX1hYWCIgfCBzZWQgcy9YWFgvaW5jbHVkZS9nYCAkR1VJX0lOQ19MT0MiCiAgIEdVSV9JTkNfTE9DPQogICBmb3IgdHJ5IGluICRndWlfaW5jbHVkZXM7IGRvCkBAIC01MjE3LDcgKzUyMjAsNyBAQAogCiBpZiB0ZXN0IC16ICIkU0tJUF9NT1RJRiI7IHRoZW4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgLS13aXRoLW1vdGlmLWxpYiBhcmd1bWVudCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTIyMTogY2hlY2tpbmcgLS13aXRoLW1vdGlmLWxpYiBhcmd1bWVudCIgPiY1CitlY2hvICJjb25maWd1cmU6NTIyNDogY2hlY2tpbmcgLS13aXRoLW1vdGlmLWxpYiBhcmd1bWVudCIgPiY1CiAgICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbW90aWYtbGliIG9yIC0td2l0aG91dC1tb3RpZi1saWIgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX21vdGlmX2xpYitzZXR9IiA9IHNldDsgdGhlbgogICB3aXRodmFsPSIkd2l0aF9tb3RpZl9saWIiCkBAIC01MjM0LDcgKzUyMzcsNyBAQAogICAgICAgICBHVUlfTElCX0xPQz0iYGVjaG8gJEdVSV9MSUJfTE9DfHNlZCAncyUtTCUlZydgIgogCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGxvY2F0aW9uIG9mIE1vdGlmIEdVSSBsaWJzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1MjM4OiBjaGVja2luZyBmb3IgbG9jYXRpb24gb2YgTW90aWYgR1VJIGxpYnMiID4mNQorZWNobyAiY29uZmlndXJlOjUyNDE6IGNoZWNraW5nIGZvciBsb2NhdGlvbiBvZiBNb3RpZiBHVUkgbGlicyIgPiY1CiAgICAgZ3VpX2xpYnM9ImBlY2hvICR4X2xpYnJhcmllc3xzZWQgJ3MlL14vXi8qJCUlJ2AgYGVjaG8gIiRndWlfWFhYIiB8IHNlZCBzL1hYWC9saWIvZ2AgYGVjaG8gIiRHVUlfSU5DX0xPQyIgfCBzZWQgcy9pbmNsdWRlL2xpYi9gICRHVUlfTElCX0xPQyIKICAgICBHVUlfTElCX0xPQz0KICAgICBmb3IgdHJ5IGluICRndWlfbGliczsgZG8KQEAgLTUyNzcsMTEgKzUyODAsMTEgQEAKIAogaWYgdGVzdCAteiAiJFNLSVBfQVRIRU5BIjsgdGhlbgogICBlY2hvICRhY19uICJjaGVja2luZyBpZiBBdGhlbmEgaGVhZGVyIGZpbGVzIGNhbiBiZSBmb3VuZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTI4MTogY2hlY2tpbmcgaWYgQXRoZW5hIGhlYWRlciBmaWxlcyBjYW4gYmUgZm91bmQiID4mNQorZWNobyAiY29uZmlndXJlOjUyODQ6IGNoZWNraW5nIGlmIEF0aGVuYSBoZWFkZXIgZmlsZXMgY2FuIGJlIGZvdW5kIiA+JjUKICAgY2ZsYWdzX3NhdmU9JENGTEFHUwogICBDRkxBR1M9IiRDRkxBR1MgJFhfQ0ZMQUdTIgogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1Mjg1ICJjb25maWd1cmUiCisjbGluZSA1Mjg4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPFgxMS9JbnRyaW5zaWMuaD4KQEAgLTUyOTAsNyArNTI5Myw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1Mjk0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUyOTc6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiBlbHNlCkBAIC01MzA5LDExICs1MzEyLDExIEBACiAKIGlmIHRlc3QgLXogIiRTS0lQX05FWFRBVyI7IHRoZW4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgaWYgbmVYdGF3IGhlYWRlciBmaWxlcyBjYW4gYmUgZm91bmQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjUzMTM6IGNoZWNraW5nIGlmIG5lWHRhdyBoZWFkZXIgZmlsZXMgY2FuIGJlIGZvdW5kIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1MzE2OiBjaGVja2luZyBpZiBuZVh0YXcgaGVhZGVyIGZpbGVzIGNhbiBiZSBmb3VuZCIgPiY1CiAgIGNmbGFnc19zYXZlPSRDRkxBR1MKICAgQ0ZMQUdTPSIkQ0ZMQUdTICRYX0NGTEFHUyIKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTMxNyAiY29uZmlndXJlIgorI2xpbmUgNTMyMCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxYMTEvSW50cmluc2ljLmg+CkBAIC01MzIyLDcgKzUzMjUsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTMyNjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1MzI5OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgogZWxzZQpAQCAtNTM1MCw3ICs1MzUzLDcgQEAKICAgICBsZGZsYWdzX3NhdmU9JExERkxBR1MKICAgTERGTEFHUz0iJFhfTElCUyAkTERGTEFHUyIKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFhTaGFwZVF1ZXJ5RXh0ZW5zaW9uIGluIC1sWGV4dCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTM1NDogY2hlY2tpbmcgZm9yIFhTaGFwZVF1ZXJ5RXh0ZW5zaW9uIGluIC1sWGV4dCIgPiY1CitlY2hvICJjb25maWd1cmU6NTM1NzogY2hlY2tpbmcgZm9yIFhTaGFwZVF1ZXJ5RXh0ZW5zaW9uIGluIC1sWGV4dCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIFhleHQnXydYU2hhcGVRdWVyeUV4dGVuc2lvbiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNTM1OCw3ICs1MzYxLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sWGV4dCAtbFh0ICRYX1BSRV9MSUJTIC1sWDExICRYX0VYVFJBX0xJQlMgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1MzYyICJjb25maWd1cmUiCisjbGluZSA1MzY1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC01MzY5LDcgKzUzNzIsNyBAQAogWFNoYXBlUXVlcnlFeHRlbnNpb24oKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjUzNzM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1Mzc2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtNTM5MCw3ICs1MzkzLDcgQEAKIGZpCiAKICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3Igd3NsZW4gaW4gLWx3IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1Mzk0OiBjaGVja2luZyBmb3Igd3NsZW4gaW4gLWx3IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1Mzk3OiBjaGVja2luZyBmb3Igd3NsZW4gaW4gLWx3IiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gdydfJ3dzbGVuIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC01Mzk4LDcgKzU0MDEsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWx3ICRHVUlfWF9MSUJTIC1sWHQgJFhfUFJFX0xJQlMgLWxYMTEgJFhfRVhUUkFfTElCUyAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU0MDIgImNvbmZpZ3VyZSIKKyNsaW5lIDU0MDUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTU0MDksNyArNTQxMiw3IEBACiB3c2xlbigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTQxMzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU0MTY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC01NDMwLDcgKzU0MzMsNyBAQAogZmkKIAogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxzeW0gaW4gLWxkbCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTQzNDogY2hlY2tpbmcgZm9yIGRsc3ltIGluIC1sZGwiID4mNQorZWNobyAiY29uZmlndXJlOjU0Mzc6IGNoZWNraW5nIGZvciBkbHN5bSBpbiAtbGRsIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gZGwnXydkbHN5bSB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNTQzOCw3ICs1NDQxLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sZGwgJEdVSV9YX0xJQlMgLWxYdCAkWF9QUkVfTElCUyAtbFgxMSAkWF9FWFRSQV9MSUJTICRMSUJTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTQ0MiAiY29uZmlndXJlIgorI2xpbmUgNTQ0NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBPdmVycmlkZSBhbnkgZ2NjMiBpbnRlcm5hbCBwcm90b3R5cGUgdG8gYXZvaWQgYW4gZXJyb3IuICAqLwogLyogV2UgdXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgZ2NjMgpAQCAtNTQ0OSw3ICs1NDUyLDcgQEAKIGRsc3ltKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1NDUzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTQ1NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTU0NzAsNyArNTQ3Myw3IEBACiBmaQogCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBYbXVDcmVhdGVTdGlwcGxlZFBpeG1hcCBpbiAtbFhtdSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTQ3NDogY2hlY2tpbmcgZm9yIFhtdUNyZWF0ZVN0aXBwbGVkUGl4bWFwIGluIC1sWG11IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NDc3OiBjaGVja2luZyBmb3IgWG11Q3JlYXRlU3RpcHBsZWRQaXhtYXAgaW4gLWxYbXUiID4mNQogYWNfbGliX3Zhcj1gZWNobyBYbXUnXydYbXVDcmVhdGVTdGlwcGxlZFBpeG1hcCB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNTQ3OCw3ICs1NDgxLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sWG11ICRHVUlfWF9MSUJTIC1sWHQgJFhfUFJFX0xJQlMgLWxYMTEgJFhfRVhUUkFfTElCUyAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU0ODIgImNvbmZpZ3VyZSIKKyNsaW5lIDU0ODUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTU0ODksNyArNTQ5Miw3IEBACiBYbXVDcmVhdGVTdGlwcGxlZFBpeG1hcCgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTQ5MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU0OTY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC01NTExLDcgKzU1MTQsNyBAQAogCiAgIGlmIHRlc3QgLXogIiRTS0lQX01PVElGIjsgdGhlbgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBYcEVuZEpvYiBpbiAtbFhwIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1NTE1OiBjaGVja2luZyBmb3IgWHBFbmRKb2IgaW4gLWxYcCIgPiY1CitlY2hvICJjb25maWd1cmU6NTUxODogY2hlY2tpbmcgZm9yIFhwRW5kSm9iIGluIC1sWHAiID4mNQogYWNfbGliX3Zhcj1gZWNobyBYcCdfJ1hwRW5kSm9iIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC01NTE5LDcgKzU1MjIsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWxYcCAkR1VJX1hfTElCUyAtbFhtIC1sWHQgJFhfUFJFX0xJQlMgLWxYMTEgJFhfRVhUUkFfTElCUyAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU1MjMgImNvbmZpZ3VyZSIKKyNsaW5lIDU1MjYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTU1MzAsNyArNTUzMyw3IEBACiBYcEVuZEpvYigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTUzNDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU1Mzc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC01NTU0LDcgKzU1NTcsNyBAQAogICBMREZMQUdTPSRsZGZsYWdzX3NhdmUKIAogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBleHRyYSBYMTEgZGVmaW5lcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTU1ODogY2hlY2tpbmcgZm9yIGV4dHJhIFgxMSBkZWZpbmVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NTYxOiBjaGVja2luZyBmb3IgZXh0cmEgWDExIGRlZmluZXMiID4mNQogICBOQVJST1dfUFJPVE89CiAgIHJtIC1mciBjb25mdGVzdGRpcgogICBpZiBta2RpciBjb25mdGVzdGRpcjsgdGhlbgpAQCAtNTU4NCwxNyArNTU4NywxNyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjU1ODg6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NTkxOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTU5MyAiY29uZmlndXJlIgorI2xpbmUgNTU5NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NTU5ODogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NTYwMTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTU2MzEsMTcgKzU2MzQsMTcgQEAKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1NjM1OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6NTYzODogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU2NDAgImNvbmZpZ3VyZSIKKyNsaW5lIDU2NDMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjU2NDU6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjU2NDg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC01NjcwLDkgKzU2NzMsOSBAQAogCiAgICAgaWYgdGVzdCAhICIkZW5hYmxlX3hpbSIgPSAibm8iOyB0aGVuCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFhJTVRleHQgaW4gWDExL1hsaWIuaCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NTY3NDogY2hlY2tpbmcgZm9yIFhJTVRleHQgaW4gWDExL1hsaWIuaCIgPiY1CitlY2hvICJjb25maWd1cmU6NTY3NzogY2hlY2tpbmcgZm9yIFhJTVRleHQgaW4gWDExL1hsaWIuaCIgPiY1CiAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTY3NiAiY29uZmlndXJlIgorI2xpbmUgNTY3OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8WDExL1hsaWIuaD4KIEVPRgpAQCAtNTcwMywxNyArNTcwNiwxNyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjU3MDc6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1NzEwOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTcxMiAiY29uZmlndXJlIgorI2xpbmUgNTcxNSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NTcxNzogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NTcyMDogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTU3NDksMTcgKzU3NTIsMTcgQEAKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1NzUzOiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6NTc1NjogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU3NTggImNvbmZpZ3VyZSIKKyNsaW5lIDU3NjEgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjU3NjM6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjU3NjY6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC01ODUyLDE3ICs1ODU1LDE3IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgcXVhbGl0eSBvZiB0b3VwcGVyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1ODU2OiBjaGVja2luZyBxdWFsaXR5IG9mIHRvdXBwZXIiID4mNQorZWNobyAiY29uZmlndXJlOjU4NTk6IGNoZWNraW5nIHF1YWxpdHkgb2YgdG91cHBlciIgPiY1CiBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGZhaWxlZCB0byBjb21waWxlIHRlc3QgcHJvZ3JhbSIgMT4mMjsgZXhpdCAxOyB9CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU4NjEgImNvbmZpZ3VyZSIKKyNsaW5lIDU4NjQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiBtYWluKCkgeyBleGl0KHRvdXBwZXIoJ0EnKSA9PSAnQScgJiYgdG9sb3dlcigneicpID09ICd6Jyk7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1ODY2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjU4Njk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEJST0tFTl9UT1VQUEVSIDEKQEAgLTU4NzksMTYgKzU4ODIsMTYgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIF9fREFURV9fIGFuZCBfX1RJTUVfXyB3b3JrIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1ODgzOiBjaGVja2luZyB3aGV0aGVyIF9fREFURV9fIGFuZCBfX1RJTUVfXyB3b3JrIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo1ODg2OiBjaGVja2luZyB3aGV0aGVyIF9fREFURV9fIGFuZCBfX1RJTUVfXyB3b3JrIiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDU4ODUgImNvbmZpZ3VyZSIKKyNsaW5lIDU4ODggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKIHByaW50ZigiKCIgX19EQVRFX18gIiAiIF9fVElNRV9fICIpIik7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTg5MjogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1ODk1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfREFURV9USU1FIDEKQEAgLTU5MDQsMTcgKzU5MDcsMTcgQEAKIAogYWNfc2FmZT1gZWNobyAiZWxmLmgiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGVsZi5oIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1OTA4OiBjaGVja2luZyBmb3IgZWxmLmgiID4mNQorZWNobyAiY29uZmlndXJlOjU5MTE6IGNoZWNraW5nIGZvciBlbGYuaCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNTkxMyAiY29uZmlndXJlIgorI2xpbmUgNTkxNiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8ZWxmLmg+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjU5MTg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjU5MjE6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC01OTM3LDcgKzU5NDAsNyBAQAogCiBpZiB0ZXN0ICIkSEFTX0VMRiIgPSAxOyB0aGVuCiAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtYWluIGluIC1sZWxmIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo1OTQxOiBjaGVja2luZyBmb3IgbWFpbiBpbiAtbGVsZiIgPiY1CitlY2hvICJjb25maWd1cmU6NTk0NDogY2hlY2tpbmcgZm9yIG1haW4gaW4gLWxlbGYiID4mNQogYWNfbGliX3Zhcj1gZWNobyBlbGYnXydtYWluIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC01OTQ1LDE0ICs1OTQ4LDE0IEBACiAgIGFjX3NhdmVfTElCUz0iJExJQlMiCiBMSUJTPSItbGVsZiAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1OTQ5ICJjb25maWd1cmUiCisjbGluZSA1OTUyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CiBtYWluKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo1OTU2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NTk1OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTU5ODYsMTIgKzU5ODksMTIgQEAKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIHRoYXQgZGVmaW5lcyBESVIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjU5OTA6IGNoZWNraW5nIGZvciAkYWNfaGRyIHRoYXQgZGVmaW5lcyBESVIiID4mNQorZWNobyAiY29uZmlndXJlOjU5OTM6IGNoZWNraW5nIGZvciAkYWNfaGRyIHRoYXQgZGVmaW5lcyBESVIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl9kaXJlbnRfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA1OTk1ICJjb25maWd1cmUiCisjbGluZSA1OTk4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDwkYWNfaGRyPgpAQCAtNTk5OSw3ICs2MDAyLDcgQEAKIERJUiAqZGlycCA9IDA7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjAwMzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MDA2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfaGVhZGVyX2RpcmVudF8kYWNfc2FmZT15ZXMiCiBlbHNlCkBAIC02MDI0LDcgKzYwMjcsNyBAQAogIyBUd28gdmVyc2lvbnMgb2Ygb3BlbmRpciBldCBhbC4gYXJlIGluIC1sZGlyIGFuZCAtbHggb24gU0NPIFhlbml4LgogaWYgdGVzdCAkYWNfaGVhZGVyX2RpcmVudCA9IGRpcmVudC5oOyB0aGVuCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbGRpciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjAyODogY2hlY2tpbmcgZm9yIG9wZW5kaXIgaW4gLWxkaXIiID4mNQorZWNobyAiY29uZmlndXJlOjYwMzE6IGNoZWNraW5nIGZvciBvcGVuZGlyIGluIC1sZGlyIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gZGlyJ18nb3BlbmRpciB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNjAzMiw3ICs2MDM1LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sZGlyICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDYwMzYgImNvbmZpZ3VyZSIKKyNsaW5lIDYwMzkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTYwNDMsNyArNjA0Niw3IEBACiBvcGVuZGlyKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MDQ3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjA1MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTYwNjUsNyArNjA2OCw3IEBACiAKIGVsc2UKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBvcGVuZGlyIGluIC1seCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjA2OTogY2hlY2tpbmcgZm9yIG9wZW5kaXIgaW4gLWx4IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2MDcyOiBjaGVja2luZyBmb3Igb3BlbmRpciBpbiAtbHgiID4mNQogYWNfbGliX3Zhcj1gZWNobyB4J18nb3BlbmRpciB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNjA3Myw3ICs2MDc2LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1seCAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2MDc3ICJjb25maWd1cmUiCisjbGluZSA2MDgwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC02MDg0LDcgKzYwODcsNyBAQAogb3BlbmRpcigpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjA4ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjYwOTE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC02MTA4LDEyICs2MTExLDEyIEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEFOU0kgQyBoZWFkZXIgZmlsZXMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYxMTI6IGNoZWNraW5nIGZvciBBTlNJIEMgaGVhZGVyIGZpbGVzIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2MTE1OiBjaGVja2luZyBmb3IgQU5TSSBDIGhlYWRlciBmaWxlcyIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyX3N0ZGMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2MTE3ICJjb25maWd1cmUiCisjbGluZSA2MTIwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpbmNsdWRlIDxzdGRhcmcuaD4KQEAgLTYxMjEsNyArNjEyNCw3IEBACiAjaW5jbHVkZSA8ZmxvYXQuaD4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NjEyNTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NjEyODogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTYxMzgsNyArNjE0MSw3IEBACiBpZiB0ZXN0ICRhY19jdl9oZWFkZXJfc3RkYyA9IHllczsgdGhlbgogICAjIFN1bk9TIDQueCBzdHJpbmcuaCBkb2VzIG5vdCBkZWNsYXJlIG1lbSosIGNvbnRyYXJ5IHRvIEFOU0kuCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2MTQyICJjb25maWd1cmUiCisjbGluZSA2MTQ1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdHJpbmcuaD4KIEVPRgpAQCAtNjE1Niw3ICs2MTU5LDcgQEAKIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zdGRjID0geWVzOyB0aGVuCiAgICMgSVNDIDIuMC4yIHN0ZGxpYi5oIGRvZXMgbm90IGRlY2xhcmUgZnJlZSwgY29udHJhcnkgdG8gQU5TSS4KIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDYxNjAgImNvbmZpZ3VyZSIKKyNsaW5lIDYxNjMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogRU9GCkBAIC02MTc3LDcgKzYxODAsNyBAQAogICA6CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDYxODEgImNvbmZpZ3VyZSIKKyNsaW5lIDYxODQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGN0eXBlLmg+CiAjZGVmaW5lIElTTE9XRVIoYykgKCdhJyA8PSAoYykgJiYgKGMpIDw9ICd6JykKQEAgLTYxODgsNyArNjE5MSw3IEBACiBleGl0ICgwKTsgfQogCiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjE5MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MTk1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIDoKIGVsc2UKQEAgLTYyMTIsMTIgKzYyMTUsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzeXMvd2FpdC5oIHRoYXQgaXMgUE9TSVguMSBjb21wYXRpYmxlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2MjE2OiBjaGVja2luZyBmb3Igc3lzL3dhaXQuaCB0aGF0IGlzIFBPU0lYLjEgY29tcGF0aWJsZSIgPiY1CitlY2hvICJjb25maWd1cmU6NjIxOTogY2hlY2tpbmcgZm9yIHN5cy93YWl0LmggdGhhdCBpcyBQT1NJWC4xIGNvbXBhdGlibGUiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl9zeXNfd2FpdF9oJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjIyMSAiY29uZmlndXJlIgorI2xpbmUgNjIyNCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KQEAgLTYyMzMsNyArNjIzNiw3IEBACiBzID0gV0lGRVhJVEVEIChzKSA/IFdFWElUU1RBVFVTIChzKSA6IDE7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjIzNzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MjQwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfaGVhZGVyX3N5c193YWl0X2g9eWVzCiBlbHNlCkBAIC02MjU2LDE2ICs2MjU5LDE2IEBACiAKIGlmIHRlc3QgJGFjX2N2X2hlYWRlcl9zeXNfd2FpdF9oID0gbm87IHRoZW4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHN5cy93YWl0LmggdGhhdCBkZWZpbmVzIHVuaW9uIHdhaXQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYyNjA6IGNoZWNraW5nIGZvciBzeXMvd2FpdC5oIHRoYXQgZGVmaW5lcyB1bmlvbiB3YWl0IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2MjYzOiBjaGVja2luZyBmb3Igc3lzL3dhaXQuaCB0aGF0IGRlZmluZXMgdW5pb24gd2FpdCIgPiY1CiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDYyNjIgImNvbmZpZ3VyZSIKKyNsaW5lIDYyNjUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiBpbnQgbWFpbigpIHsKIHVuaW9uIHdhaXQgeHgsIHl5OyB4eCA9IHl5CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjI2OTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MjcyOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgogCQkJY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCkBAIC02Mjk2LDE3ICs2Mjk5LDE3IEBACiBkbwogYWNfc2FmZT1gZWNobyAiJGFjX2hkciIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2hkciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjMwMDogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQorZWNobyAiY29uZmlndXJlOjYzMDM6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2MzA1ICJjb25maWd1cmUiCisjbGluZSA2MzA4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDwkYWNfaGRyPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MzEwOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2MzEzOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtNjMzOCwxNyArNjM0MSwxNyBAQAogZG8KIGFjX3NhZmU9YGVjaG8gIiRhY19oZHIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yICRhY19oZHIiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYzNDI6IGNoZWNraW5nIGZvciAkYWNfaGRyIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2MzQ1OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjM0NyAiY29uZmlndXJlIgorI2xpbmUgNjM1MCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8JGFjX2hkcj4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6NjM1MjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6NjM1NTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTYzNzcsMTEgKzYzODAsMTEgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGlmIHN0cmluZ3MuaCBjYW4gYmUgaW5jbHVkZWQgYWZ0ZXIgc3RyaW5nLmgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjYzODE6IGNoZWNraW5nIGlmIHN0cmluZ3MuaCBjYW4gYmUgaW5jbHVkZWQgYWZ0ZXIgc3RyaW5nLmgiID4mNQorZWNobyAiY29uZmlndXJlOjYzODQ6IGNoZWNraW5nIGlmIHN0cmluZ3MuaCBjYW4gYmUgaW5jbHVkZWQgYWZ0ZXIgc3RyaW5nLmgiID4mNQogY3BwZmxhZ3Nfc2F2ZT0kQ1BQRkxBR1MKIENQUEZMQUdTPSIkQ1BQRkxBR1MgJFhfQ0ZMQUdTIgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjM4NSAiY29uZmlndXJlIgorI2xpbmUgNjM4OCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZiBkZWZpbmVkKF9BSVgpICYmICFkZWZpbmVkKF9BSVg1MSkgJiYgIWRlZmluZWQoX05PX1BST1RPKQpAQCAtNjQwMiw3ICs2NDA1LDcgQEAKIGludCBpOyBpID0gMDsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NDA2OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjY0MDk6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiBlbHNlCkBAIC02NDIwLDEzICs2NDIzLDEzIEBACiAKIGlmIHRlc3QgJGFjX2N2X3Byb2dfZ2NjID0geWVzOyB0aGVuCiAgICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciAke0NDLWNjfSBuZWVkcyAtdHJhZGl0aW9uYWwiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjY0MjQ6IGNoZWNraW5nIHdoZXRoZXIgJHtDQy1jY30gbmVlZHMgLXRyYWRpdGlvbmFsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NDI3OiBjaGVja2luZyB3aGV0aGVyICR7Q0MtY2N9IG5lZWRzIC10cmFkaXRpb25hbCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfcHJvZ19nY2NfdHJhZGl0aW9uYWwnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICAgIGFjX3BhdHRlcm49IkF1dG9jb25mLioneCciCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDY0MzAgImNvbmZpZ3VyZSIKKyNsaW5lIDY0MzMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHNndHR5Lmg+CiBBdXRvY29uZiBUSU9DR0VUUApAQCAtNjQ0NCw3ICs2NDQ3LDcgQEAKIAogICBpZiB0ZXN0ICRhY19jdl9wcm9nX2djY190cmFkaXRpb25hbCA9IG5vOyB0aGVuCiAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjQ0OCAiY29uZmlndXJlIgorI2xpbmUgNjQ1MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8dGVybWlvLmg+CiBBdXRvY29uZiBUQ0dFVEEKQEAgLTY0NjYsMTIgKzY0NjksMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB3b3JraW5nIGNvbnN0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2NDcwOiBjaGVja2luZyBmb3Igd29ya2luZyBjb25zdCIgPiY1CitlY2hvICJjb25maWd1cmU6NjQ3MzogY2hlY2tpbmcgZm9yIHdvcmtpbmcgY29uc3QiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2NfY29uc3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2NDc1ICJjb25maWd1cmUiCisjbGluZSA2NDc4ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogaW50IG1haW4oKSB7CkBAIC02NTIwLDcgKzY1MjMsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjUyNDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NTI3OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgYWNfY3ZfY19jb25zdD15ZXMKIGVsc2UKQEAgLTY1NDEsMTIgKzY1NDQsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBtb2RlX3QiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjY1NDU6IGNoZWNraW5nIGZvciBtb2RlX3QiID4mNQorZWNobyAiY29uZmlndXJlOjY1NDg6IGNoZWNraW5nIGZvciBtb2RlX3QiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3R5cGVfbW9kZV90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjU1MCAiY29uZmlndXJlIgorI2xpbmUgNjU1MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgU1REQ19IRUFERVJTCkBAIC02NTc0LDEyICs2NTc3LDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igb2ZmX3QiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjY1Nzg6IGNoZWNraW5nIGZvciBvZmZfdCIgPiY1CitlY2hvICJjb25maWd1cmU6NjU4MTogY2hlY2tpbmcgZm9yIG9mZl90IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX29mZl90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjU4MyAiY29uZmlndXJlIgorI2xpbmUgNjU4NiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgU1REQ19IRUFERVJTCkBAIC02NjA3LDEyICs2NjEwLDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcGlkX3QiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjY2MTE6IGNoZWNraW5nIGZvciBwaWRfdCIgPiY1CitlY2hvICJjb25maWd1cmU6NjYxNDogY2hlY2tpbmcgZm9yIHBpZF90IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX3BpZF90JytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjYxNiAiY29uZmlndXJlIgorI2xpbmUgNjYxOSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaWYgU1REQ19IRUFERVJTCkBAIC02NjQwLDEyICs2NjQzLDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc2l6ZV90IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2NjQ0OiBjaGVja2luZyBmb3Igc2l6ZV90IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NjQ3OiBjaGVja2luZyBmb3Igc2l6ZV90IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX3NpemVfdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDY2NDkgImNvbmZpZ3VyZSIKKyNsaW5lIDY2NTIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2lmIFNURENfSEVBREVSUwpAQCAtNjY3MywxMiArNjY3NiwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHVpZF90IGluIHN5cy90eXBlcy5oIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2Njc3OiBjaGVja2luZyBmb3IgdWlkX3QgaW4gc3lzL3R5cGVzLmgiID4mNQorZWNobyAiY29uZmlndXJlOjY2ODA6IGNoZWNraW5nIGZvciB1aWRfdCBpbiBzeXMvdHlwZXMuaCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfdHlwZV91aWRfdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDY2ODIgImNvbmZpZ3VyZSIKKyNsaW5lIDY2ODUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogRU9GCkBAIC02NzA3LDEyICs2NzEwLDEyIEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRpbWUuaCBhbmQgc3lzL3RpbWUuaCBtYXkgYm90aCBiZSBpbmNsdWRlZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjcxMTogY2hlY2tpbmcgd2hldGhlciB0aW1lLmggYW5kIHN5cy90aW1lLmggbWF5IGJvdGggYmUgaW5jbHVkZWQiID4mNQorZWNobyAiY29uZmlndXJlOjY3MTQ6IGNoZWNraW5nIHdoZXRoZXIgdGltZS5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfdGltZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDY3MTYgImNvbmZpZ3VyZSIKKyNsaW5lIDY3MTkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CkBAIC02NzIxLDcgKzY3MjQsNyBAQAogc3RydWN0IHRtICp0cDsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2NzI1OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjY3Mjg6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBhY19jdl9oZWFkZXJfdGltZT15ZXMKIGVsc2UKQEAgLTY3NDIsMTIgKzY3NDUsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBpbm9fdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Njc0NjogY2hlY2tpbmcgZm9yIGlub190IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NzQ5OiBjaGVja2luZyBmb3IgaW5vX3QiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3R5cGVfaW5vX3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2NzUxICJjb25maWd1cmUiCisjbGluZSA2NzU0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBTVERDX0hFQURFUlMKQEAgLTY3NzUsMTIgKzY3NzgsMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBkZXZfdCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Njc3OTogY2hlY2tpbmcgZm9yIGRldl90IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2NzgyOiBjaGVja2luZyBmb3IgZGV2X3QiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3R5cGVfZGV2X3QnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2Nzg0ICJjb25maWd1cmUiCisjbGluZSA2Nzg3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpZiBTVERDX0hFQURFUlMKQEAgLTY4MDksMTIgKzY4MTIsMTIgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcmxpbV90IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2ODEzOiBjaGVja2luZyBmb3IgcmxpbV90IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2ODE2OiBjaGVja2luZyBmb3IgcmxpbV90IiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX3JsaW1fdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gIiRhY190IiIoY2FjaGVkKSAkYWNfY3ZfdHlwZV9ybGltX3QiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNjgxOCAiY29uZmlndXJlIgorI2xpbmUgNjgyMSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTY4NDYsMTIgKzY4NDksMTIgQEAKIGZpCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzdGFja190IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2ODUwOiBjaGVja2luZyBmb3Igc3RhY2tfdCIgPiY1CitlY2hvICJjb25maWd1cmU6Njg1MzogY2hlY2tpbmcgZm9yIHN0YWNrX3QiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3R5cGVfc3RhY2tfdCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gIiRhY190IiIoY2FjaGVkKSAkYWNfY3ZfdHlwZV9zdGFja190IiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDY4NTUgImNvbmZpZ3VyZSIKKyNsaW5lIDY4NTggImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CkBAIC02ODgxLDkgKzY4ODQsOSBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBzdGFja190IGhhcyBhbiBzc19iYXNlIGZpZWxkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo2ODg1OiBjaGVja2luZyB3aGV0aGVyIHN0YWNrX3QgaGFzIGFuIHNzX2Jhc2UgZmllbGQiID4mNQorZWNobyAiY29uZmlndXJlOjY4ODg6IGNoZWNraW5nIHdoZXRoZXIgc3RhY2tfdCBoYXMgYW4gc3NfYmFzZSBmaWVsZCIgPiY1CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2ODg3ICJjb25maWd1cmUiCisjbGluZSA2ODkwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtNjg5OCw3ICs2OTAxLDcgQEAKIHN0YWNrX3Qgc2lnc3RrOyBzaWdzdGsuc3NfYmFzZSA9IDA7IAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjY5MDI6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NjkwNTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjY7IGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX1NTX0JBU0UgMQpAQCAtNjkxNCw3ICs2OTE3LDcgQEAKIAogb2xpYnM9IiRMSUJTIgogZWNobyAkYWNfbiAiY2hlY2tpbmcgLS13aXRoLXRsaWIgYXJndW1lbnQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjY5MTg6IGNoZWNraW5nIC0td2l0aC10bGliIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2OTIxOiBjaGVja2luZyAtLXdpdGgtdGxpYiBhcmd1bWVudCIgPiY1CiAjIENoZWNrIHdoZXRoZXIgLS13aXRoLXRsaWIgb3IgLS13aXRob3V0LXRsaWIgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX3RsaWIrc2V0fSIgPSBzZXQ7IHRoZW4KICAgd2l0aHZhbD0iJHdpdGhfdGxpYiIKQEAgLTY5MzIsNyArNjkzNSw3IEBACiAgIGVzYWMKICAgZm9yIGxpYm5hbWUgaW4gJHRsaWJzOyBkbwogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciB0Z2V0ZW50IGluIC1sJHtsaWJuYW1lfSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NjkzNjogY2hlY2tpbmcgZm9yIHRnZXRlbnQgaW4gLWwke2xpYm5hbWV9IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo2OTM5OiBjaGVja2luZyBmb3IgdGdldGVudCBpbiAtbCR7bGlibmFtZX0iID4mNQogYWNfbGliX3Zhcj1gZWNobyAke2xpYm5hbWV9J18ndGdldGVudCB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNjk0MCw3ICs2OTQzLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sJHtsaWJuYW1lfSAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA2OTQ0ICJjb25maWd1cmUiCisjbGluZSA2OTQ3ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC02OTUxLDcgKzY5NTQsNyBAQAogdGdldGVudCgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njk1NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjY5NTg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2xpYl8kYWNfbGliX3Zhcj15ZXMiCiBlbHNlCkBAIC02OTgzLDcgKzY5ODYsNyBAQAogICByZXM9IkZBSUwiCiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDY5ODcgImNvbmZpZ3VyZSIKKyNsaW5lIDY5OTAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZkZWYgSEFWRV9URVJNQ0FQX0gKQEAgLTY5OTEsNyArNjk5NCw3IEBACiAjZW5kaWYKIG1haW4oKSB7Y2hhciAqczsgcz0oY2hhciAqKXRnb3RvKCIlcDElZCIsIDAsIDEpOyBleGl0KDApOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Njk5NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo2OTk4OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIHJlcz0iT0siCiBlbHNlCkBAIC03MDEzLDEyICs3MDE2LDEyIEBACiBmaQogaWYgdGVzdCAieCRvbGlicyIgIT0gIngkTElCUyI7IHRoZW4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB3ZSB0YWxrIHRlcm1pbmZvIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MDE3OiBjaGVja2luZyB3aGV0aGVyIHdlIHRhbGsgdGVybWluZm8iID4mNQorZWNobyAiY29uZmlndXJlOjcwMjA6IGNoZWNraW5nIHdoZXRoZXIgd2UgdGFsayB0ZXJtaW5mbyIgPiY1CiAgIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogZmFpbGVkIHRvIGNvbXBpbGUgdGVzdCBwcm9ncmFtLiIgMT4mMjsgZXhpdCAxOyB9CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDcwMjIgImNvbmZpZ3VyZSIKKyNsaW5lIDcwMjUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZkZWYgSEFWRV9URVJNQ0FQX0gKQEAgLTcwMjcsNyArNzAzMCw3IEBACiBtYWluKCkKIHtjaGFyICpzOyBzPShjaGFyICopdGdvdG8oIiVwMSVkIiwgMCwgMSk7IGV4aXQoIXN0cmNtcChzPT0wID8gIiIgOiBzLCAiMSIpKTsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcwMzE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzAzNDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBlY2hvICIkYWNfdCIibm8gLS0gd2UgYXJlIGluIHRlcm1jYXAgbGFuZCIgMT4mNgogZWxzZQpAQCAtNzA0OCwxMiArNzA1MSwxMiBAQAogCiBpZiB0ZXN0ICJ4JG9saWJzIiAhPSAieCRMSUJTIjsgdGhlbgogICBlY2hvICRhY19uICJjaGVja2luZyB3aGF0IHRnZXRlbnQoKSByZXR1cm5zIGZvciBhbiB1bmtub3duIHRlcm1pbmFsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MDUyOiBjaGVja2luZyB3aGF0IHRnZXRlbnQoKSByZXR1cm5zIGZvciBhbiB1bmtub3duIHRlcm1pbmFsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3MDU1OiBjaGVja2luZyB3aGF0IHRnZXRlbnQoKSByZXR1cm5zIGZvciBhbiB1bmtub3duIHRlcm1pbmFsIiA+JjUKICAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBmYWlsZWQgdG8gY29tcGlsZSB0ZXN0IHByb2dyYW0uIiAxPiYyOyBleGl0IDE7IH0KIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzA1NyAiY29uZmlndXJlIgorI2xpbmUgNzA2MCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZmRlZiBIQVZFX1RFUk1DQVBfSApAQCAtNzA2Miw3ICs3MDY1LDcgQEAKIG1haW4oKQoge2NoYXIgc1sxMDAwMF07IGludCByZXMgPSB0Z2V0ZW50KHMsICJ0aGlzdGVybWluYWxkb2Vzbm90ZXhpc3QiKTsgZXhpdChyZXMgIT0gMCk7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3MDY2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcwNjk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgZWNobyAiJGFjX3QiInplcm8iIDE+JjY7IGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBUR0VURU5UX1pFUk9fRVJSIDAKQEAgLTcwODAsOSArNzA4Myw5IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRlcm1jYXAuaCBjb250YWlucyBvc3BlZWQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjcwODQ6IGNoZWNraW5nIHdoZXRoZXIgdGVybWNhcC5oIGNvbnRhaW5zIG9zcGVlZCIgPiY1CitlY2hvICJjb25maWd1cmU6NzA4NzogY2hlY2tpbmcgd2hldGhlciB0ZXJtY2FwLmggY29udGFpbnMgb3NwZWVkIiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDcwODYgImNvbmZpZ3VyZSIKKyNsaW5lIDcwODkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZkZWYgSEFWRV9URVJNQ0FQX0gKQEAgLTcwOTMsNyArNzA5Niw3IEBACiBvc3BlZWQgPSAyMDAwMAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcwOTc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3MTAwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OyBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9PU1BFRUQgMQpAQCAtNzEwNSw5ICs3MTA4LDkgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIAllY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIG9zcGVlZCBjYW4gYmUgZXh0ZXJuIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MTA5OiBjaGVja2luZyB3aGV0aGVyIG9zcGVlZCBjYW4gYmUgZXh0ZXJuIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3MTEyOiBjaGVja2luZyB3aGV0aGVyIG9zcGVlZCBjYW4gYmUgZXh0ZXJuIiA+JjUKIAljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3MTExICJjb25maWd1cmUiCisjbGluZSA3MTE0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmZGVmIEhBVkVfVEVSTUNBUF9ICkBAIC03MTE5LDcgKzcxMjIsNyBAQAogb3NwZWVkID0gMjAwMDAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3MTIzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzEyNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIE9TUEVFRF9FWFRFUk4gMQpAQCAtNzEzNyw5ICs3MTQwLDkgQEAKIHJtIC1mIGNvbmZ0ZXN0KgogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRlcm1jYXAuaCBjb250YWlucyBVUCwgQkMgYW5kIFBDIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MTQxOiBjaGVja2luZyB3aGV0aGVyIHRlcm1jYXAuaCBjb250YWlucyBVUCwgQkMgYW5kIFBDIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3MTQ0OiBjaGVja2luZyB3aGV0aGVyIHRlcm1jYXAuaCBjb250YWlucyBVUCwgQkMgYW5kIFBDIiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDcxNDMgImNvbmZpZ3VyZSIKKyNsaW5lIDcxNDYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZkZWYgSEFWRV9URVJNQ0FQX0gKQEAgLTcxNTAsNyArNzE1Myw3IEBACiBpZiAoVVAgPT0gMCAmJiBCQyA9PSAwKSBQQyA9IDEKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3MTU0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzE1NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfVVBfQkNfUEMgMQpAQCAtNzE2Miw5ICs3MTY1LDkgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIAllY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIFVQLCBCQyBhbmQgUEMgY2FuIGJlIGV4dGVybiIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzE2NjogY2hlY2tpbmcgd2hldGhlciBVUCwgQkMgYW5kIFBDIGNhbiBiZSBleHRlcm4iID4mNQorZWNobyAiY29uZmlndXJlOjcxNjk6IGNoZWNraW5nIHdoZXRoZXIgVVAsIEJDIGFuZCBQQyBjYW4gYmUgZXh0ZXJuIiA+JjUKIAljYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3MTY4ICJjb25maWd1cmUiCisjbGluZSA3MTcxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmZGVmIEhBVkVfVEVSTUNBUF9ICkBAIC03MTc2LDcgKzcxNzksNyBAQAogaWYgKFVQID09IDAgJiYgQkMgPT0gMCkgUEMgPSAxCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzE4MDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcxODM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjY7IGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBVUF9CQ19QQ19FWFRFUk4gMQpAQCAtNzE5NCw5ICs3MTk3LDkgQEAKIHJtIC1mIGNvbmZ0ZXN0KgogCiBlY2hvICRhY19uICJjaGVja2luZyB3aGV0aGVyIHRwdXRzKCkgdXNlcyBvdXRmdW50eXBlIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MTk4OiBjaGVja2luZyB3aGV0aGVyIHRwdXRzKCkgdXNlcyBvdXRmdW50eXBlIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3MjAxOiBjaGVja2luZyB3aGV0aGVyIHRwdXRzKCkgdXNlcyBvdXRmdW50eXBlIiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDcyMDAgImNvbmZpZ3VyZSIKKyNsaW5lIDcyMDMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZkZWYgSEFWRV9URVJNQ0FQX0gKQEAgLTcyMDcsNyArNzIxMCw3IEBACiBleHRlcm4gaW50IHh4KCk7IHRwdXRzKCJ0ZXN0IiwgMSwgKG91dGZ1bnR5cGUpeHgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzIxMTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3MjE0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfT1VURlVOVFlQRSAxCkBAIC03MjIyLDkgKzcyMjUsOSBAQAogcm0gLWYgY29uZnRlc3QqCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgc3lzL3NlbGVjdC5oIGFuZCBzeXMvdGltZS5oIG1heSBib3RoIGJlIGluY2x1ZGVkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MjI2OiBjaGVja2luZyB3aGV0aGVyIHN5cy9zZWxlY3QuaCBhbmQgc3lzL3RpbWUuaCBtYXkgYm90aCBiZSBpbmNsdWRlZCIgPiY1CitlY2hvICJjb25maWd1cmU6NzIyOTogY2hlY2tpbmcgd2hldGhlciBzeXMvc2VsZWN0LmggYW5kIHN5cy90aW1lLmggbWF5IGJvdGggYmUgaW5jbHVkZWQiID4mNQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzIyOCAiY29uZmlndXJlIgorI2xpbmUgNzIzMSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTcyMzQsNyArNzIzNyw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3MjM4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcyNDE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2CiAJCQljYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKQEAgLTcyNTEsNyArNzI1NCw3IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIC9kZXYvcHRjIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3MjU1OiBjaGVja2luZyBmb3IgL2Rldi9wdGMiID4mNQorZWNobyAiY29uZmlndXJlOjcyNTg6IGNoZWNraW5nIGZvciAvZGV2L3B0YyIgPiY1CiBpZiB0ZXN0IC1yIC9kZXYvcHRjOyB0aGVuCiAgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX0RFVl9QVEMgMQpAQCAtNzI2MywxNyArNzI2NiwxNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFNWUjQgcHR5cyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzI2NzogY2hlY2tpbmcgZm9yIFNWUjQgcHR5cyIgPiY1CitlY2hvICJjb25maWd1cmU6NzI3MDogY2hlY2tpbmcgZm9yIFNWUjQgcHR5cyIgPiY1CiBpZiB0ZXN0IC1jIC9kZXYvcHRteCA7IHRoZW4KICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzI3MCAiY29uZmlndXJlIgorI2xpbmUgNzI3MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewogcHRzbmFtZSgwKTtncmFudHB0KDApO3VubG9ja3B0KDApOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjcyNzc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3MjgwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OyBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9TVlI0X1BUWVMgMQpAQCAtNzI5MSwxNCArNzI5NCwxNCBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHB0eXJhbmdlcyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzI5NTogY2hlY2tpbmcgZm9yIHB0eXJhbmdlcyIgPiY1CitlY2hvICJjb25maWd1cmU6NzI5ODogY2hlY2tpbmcgZm9yIHB0eXJhbmdlcyIgPiY1CiBpZiB0ZXN0IC1kIC9kZXYvcHR5bSA7IHRoZW4KICAgcGRpcj0nL2Rldi9wdHltJwogZWxzZQogICBwZGlyPScvZGV2JwogZmkKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDczMDIgImNvbmZpZ3VyZSIKKyNsaW5lIDczMDUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2lmZGVmIE1fVU5JWAogICAgeWVzOwpAQCAtNzMzMiwxMyArNzMzNSwxMyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZGVmYXVsdCB0dHkgcGVybWlzc2lvbnMvZ3JvdXAiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjczMzY6IGNoZWNraW5nIGRlZmF1bHQgdHR5IHBlcm1pc3Npb25zL2dyb3VwIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3MzM5OiBjaGVja2luZyBkZWZhdWx0IHR0eSBwZXJtaXNzaW9ucy9ncm91cCIgPiY1CiBybSAtZiBjb25mdGVzdF9ncnAKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogZmFpbGVkIHRvIGNvbXBpbGUgdGVzdCBwcm9ncmFtIiAxPiYyOyBleGl0IDE7IH0KIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzM0MiAiY29uZmlndXJlIgorI2xpbmUgNzM0NSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTczNzAsNyArNzM3Myw3IEBACiB9CiAKIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3Mzc0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjczNzc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgCiAgICAgaWYgdGVzdCAtZiBjb25mdGVzdF9ncnA7IHRoZW4KQEAgLTc0MDEsMTIgKzc0MDQsMTIgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyByZXR1cm4gdHlwZSBvZiBzaWduYWwgaGFuZGxlcnMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjc0MDU6IGNoZWNraW5nIHJldHVybiB0eXBlIG9mIHNpZ25hbCBoYW5kbGVycyIgPiY1CitlY2hvICJjb25maWd1cmU6NzQwODogY2hlY2tpbmcgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl90eXBlX3NpZ25hbCcrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDc0MTAgImNvbmZpZ3VyZSIKKyNsaW5lIDc0MTMgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHNpZ25hbC5oPgpAQCAtNzQyMyw3ICs3NDI2LDcgQEAKIGludCBpOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc0Mjc6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzQzMDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGFjX2N2X3R5cGVfc2lnbmFsPXZvaWQKIGVsc2UKQEAgLTc0NTUsOSArNzQ1OCw5IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc3RydWN0IHNpZ2NvbnRleHQiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjc0NTk6IGNoZWNraW5nIGZvciBzdHJ1Y3Qgc2lnY29udGV4dCIgPiY1CitlY2hvICJjb25maWd1cmU6NzQ2MjogY2hlY2tpbmcgZm9yIHN0cnVjdCBzaWdjb250ZXh0IiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDc0NjEgImNvbmZpZ3VyZSIKKyNsaW5lIDc0NjQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c2lnbmFsLmg+CkBAIC03NDcxLDcgKzc0NzQsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzQ3NTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3NDc4OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgogCQljYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKQEAgLTc0ODcsMTIgKzc0OTAsMTIgQEAKIHJtIC1mIGNvbmZ0ZXN0KgogCiBlY2hvICRhY19uICJjaGVja2luZyBnZXRjd2QgaW1wbGVtZW50YXRpb24iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjc0OTE6IGNoZWNraW5nIGdldGN3ZCBpbXBsZW1lbnRhdGlvbiIgPiY1CitlY2hvICJjb25maWd1cmU6NzQ5NDogY2hlY2tpbmcgZ2V0Y3dkIGltcGxlbWVudGF0aW9uIiA+JjUKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgIHsgZWNobyAiY29uZmlndXJlOiBlcnJvcjogZmFpbGVkIHRvIGNvbXBpbGUgdGVzdCBwcm9ncmFtIiAxPiYyOyBleGl0IDE7IH0KIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzQ5NiAiY29uZmlndXJlIgorI2xpbmUgNzQ5OSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGNoYXIgKmRhZ2dlcltdID0geyAiSUZTPXB3ZCIsIDAgfTsKQEAgLTc1MDQsNyArNzUwNyw3IEBACiAgIHJldHVybiBnZXRjd2QoYnVmZmVyLCA1MDApID8gMCA6IDE7CiB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzUwODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3NTExOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCiB0aGVuCiAgIGVjaG8gIiRhY190IiJpdCBpcyB1c2FibGUiIDE+JjYKIGVsc2UKQEAgLTc1MjksMTIgKzc1MzIsMTIgQEAKIAlzdHJuaWNtcCBzdHJwYnJrIHN0cnRvbCB0Z2V0ZW50IHRvd2xvd2VyIHRvd3VwcGVyIHVzbGVlcCB1dGltZSB1dGltZXMKIGRvCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgJGFjX2Z1bmMiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjc1MzM6IGNoZWNraW5nIGZvciAkYWNfZnVuYyIgPiY1CitlY2hvICJjb25maWd1cmU6NzUzNjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9mdW5jXyRhY19mdW5jJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzUzOCAiY29uZmlndXJlIgorI2xpbmUgNzU0MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAvKiBTeXN0ZW0gaGVhZGVyIHRvIGRlZmluZSBfX3N0dWIgbWFjcm9zIGFuZCBob3BlZnVsbHkgZmV3IHByb3RvdHlwZXMsCiAgICAgd2hpY2ggY2FuIGNvbmZsaWN0IHdpdGggY2hhciAkYWNfZnVuYygpOyBiZWxvdy4gICovCkBAIC03NTU3LDcgKzc1NjAsNyBAQAogCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzU2MTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc1NjQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGV2YWwgImFjX2N2X2Z1bmNfJGFjX2Z1bmM9eWVzIgogZWxzZQpAQCAtNzU4Myw5ICs3NTg2LDkgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc3RfYmxrc2l6ZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzU4NzogY2hlY2tpbmcgZm9yIHN0X2Jsa3NpemUiID4mNQorZWNobyAiY29uZmlndXJlOjc1OTA6IGNoZWNraW5nIGZvciBzdF9ibGtzaXplIiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDc1ODkgImNvbmZpZ3VyZSIKKyNsaW5lIDc1OTIgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CkBAIC03NTk3LDcgKzc2MDAsNyBAQAogCW4gPSAoaW50KXN0LnN0X2Jsa3NpemU7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzYwMTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3NjA0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfU1RfQkxLU0laRSAxCkBAIC03NjEyLDE4ICs3NjE1LDE4IEBACiBybSAtZiBjb25mdGVzdCoKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciBzdGF0KCkgaWdub3JlcyBhIHRyYWlsaW5nIHNsYXNoIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3NjE2OiBjaGVja2luZyB3aGV0aGVyIHN0YXQoKSBpZ25vcmVzIGEgdHJhaWxpbmcgc2xhc2giID4mNQorZWNobyAiY29uZmlndXJlOjc2MTk6IGNoZWNraW5nIHdoZXRoZXIgc3RhdCgpIGlnbm9yZXMgYSB0cmFpbGluZyBzbGFzaCIgPiY1CiBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGZhaWxlZCB0byBjb21waWxlIHRlc3QgcHJvZ3JhbSIgMT4mMjsgZXhpdCAxOyB9CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDc2MjEgImNvbmZpZ3VyZSIKKyNsaW5lIDc2MjQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiBtYWluKCkge3N0cnVjdCBzdGF0IHN0OyAgZXhpdChzdGF0KCJjb25maWd1cmUvIiwgJnN0KSAhPSAwKTsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc2Mjc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzYzMDogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OyBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgU1RBVF9JR05PUkVTX1NMQVNIIDEKQEAgLTc2NDAsMTEgKzc2NDMsMTEgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgaWNvbnZfb3BlbigpIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3NjQ0OiBjaGVja2luZyBmb3IgaWNvbnZfb3BlbigpIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3NjQ3OiBjaGVja2luZyBmb3IgaWNvbnZfb3BlbigpIiA+JjUKIHNhdmVfTElCUz0iJExJQlMiCiBMSUJTPSIkTElCUyAtbGljb252IgogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgNzY0OCAiY29uZmlndXJlIgorI2xpbmUgNzY1MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKICNpZmRlZiBIQVZFX0lDT05WX0gKQEAgLTc2NTUsNyArNzY1OCw3IEBACiBpY29udl9vcGVuKCJmciIsICJ0byIpOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc2NTk6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3NjYyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzOyB3aXRoIC1saWNvbnYiIDE+JjY7IGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX0lDT05WIDEKQEAgLTc2NjcsNyArNzY3MCw3IEBACiAgIHJtIC1yZiBjb25mdGVzdCoKICAgTElCUz0iJHNhdmVfTElCUyIKICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3NjcxICJjb25maWd1cmUiCisjbGluZSA3Njc0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmZGVmIEhBVkVfSUNPTlZfSApAQCAtNzY3OCw3ICs3NjgxLDcgQEAKIGljb252X29wZW4oImZyIiwgInRvIik7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzY4MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc2ODU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjY7IGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX0lDT05WIDEKQEAgLTc2OTYsOSArNzY5OSw5IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIG5sX2xhbmdpbmZvKENPREVTRVQpIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3NzAwOiBjaGVja2luZyBmb3IgbmxfbGFuZ2luZm8oQ09ERVNFVCkiID4mNQorZWNobyAiY29uZmlndXJlOjc3MDM6IGNoZWNraW5nIGZvciBubF9sYW5naW5mbyhDT0RFU0VUKSIgPiY1CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3NzAyICJjb25maWd1cmUiCisjbGluZSA3NzA1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmZGVmIEhBVkVfTEFOR0lORk9fSApAQCAtNzcwOSw3ICs3NzEyLDcgQEAKIGNoYXIgKmNzID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7CiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzcxMzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc3MTY6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjY7IGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX05MX0xBTkdJTkZPX0NPREVTRVQgMQpAQCAtNzcyNCw3ICs3NzI3LDcgQEAKIHJtIC1mIGNvbmZ0ZXN0KgogCiBlY2hvICRhY19uICJjaGVja2luZyAtLWRpc2FibGUtYWNsIGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3NzI4OiBjaGVja2luZyAtLWRpc2FibGUtYWNsIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3NzMxOiBjaGVja2luZyAtLWRpc2FibGUtYWNsIGFyZ3VtZW50IiA+JjUKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1hY2wgb3IgLS1kaXNhYmxlLWFjbCB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9hY2wrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX2FjbCIKQEAgLTc3MzYsNyArNzczOSw3IEBACiBpZiB0ZXN0ICIkZW5hYmxlX2FjbCIgPSAieWVzIjsgdGhlbgogZWNobyAiJGFjX3QiIm5vIiAxPiY2CiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgYWNsX2dldF9maWxlIGluIC1scG9zaXgxZSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Nzc0MDogY2hlY2tpbmcgZm9yIGFjbF9nZXRfZmlsZSBpbiAtbHBvc2l4MWUiID4mNQorZWNobyAiY29uZmlndXJlOjc3NDM6IGNoZWNraW5nIGZvciBhY2xfZ2V0X2ZpbGUgaW4gLWxwb3NpeDFlIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gcG9zaXgxZSdfJ2FjbF9nZXRfZmlsZSB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNzc0NCw3ICs3NzQ3LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1scG9zaXgxZSAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3NzQ4ICJjb25maWd1cmUiCisjbGluZSA3NzUxICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC03NzU1LDcgKzc3NTgsNyBAQAogYWNsX2dldF9maWxlKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3NzU5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Nzc2MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTc3NzQsNyArNzc3Nyw3IEBACiBlbHNlCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNgogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGFjbF9nZXRfZmlsZSBpbiAtbGFjbCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Nzc3ODogY2hlY2tpbmcgZm9yIGFjbF9nZXRfZmlsZSBpbiAtbGFjbCIgPiY1CitlY2hvICJjb25maWd1cmU6Nzc4MTogY2hlY2tpbmcgZm9yIGFjbF9nZXRfZmlsZSBpbiAtbGFjbCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIGFjbCdfJ2FjbF9nZXRfZmlsZSB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNzc4Miw3ICs3Nzg1LDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sYWNsICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDc3ODYgImNvbmZpZ3VyZSIKKyNsaW5lIDc3ODkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTc3OTMsNyArNzc5Niw3IEBACiBhY2xfZ2V0X2ZpbGUoKQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc3OTc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3ODAwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBldmFsICJhY19jdl9saWJfJGFjX2xpYl92YXI9eWVzIgogZWxzZQpAQCAtNzgxMCw3ICs3ODEzLDcgQEAKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNgogICBMSUJTPSIkTElCUyAtbGFjbCIKIAkJICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZmdldHhhdHRyIGluIC1sYXR0ciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzgxNDogY2hlY2tpbmcgZm9yIGZnZXR4YXR0ciBpbiAtbGF0dHIiID4mNQorZWNobyAiY29uZmlndXJlOjc4MTc6IGNoZWNraW5nIGZvciBmZ2V0eGF0dHIgaW4gLWxhdHRyIiA+JjUKIGFjX2xpYl92YXI9YGVjaG8gYXR0cidfJ2ZnZXR4YXR0ciB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9saWJfJGFjX2xpYl92YXInK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgpAQCAtNzgxOCw3ICs3ODIxLDcgQEAKICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKIExJQlM9Ii1sYXR0ciAgJExJQlMiCiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3ODIyICJjb25maWd1cmUiCisjbGluZSA3ODI1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIE92ZXJyaWRlIGFueSBnY2MyIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4gICovCiAvKiBXZSB1c2UgY2hhciBiZWNhdXNlIGludCBtaWdodCBtYXRjaCB0aGUgcmV0dXJuIHR5cGUgb2YgYSBnY2MyCkBAIC03ODI5LDcgKzc4MzIsNyBAQAogZmdldHhhdHRyKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3ODMzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzgzNjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTc4NTcsOSArNzg2MCw5IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIFBPU0lYIEFDTCBzdXBwb3J0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3ODYxOiBjaGVja2luZyBmb3IgUE9TSVggQUNMIHN1cHBvcnQiID4mNQorZWNobyAiY29uZmlndXJlOjc4NjQ6IGNoZWNraW5nIGZvciBQT1NJWCBBQ0wgc3VwcG9ydCIgPiY1CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3ODYzICJjb25maWd1cmUiCisjbGluZSA3ODY2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtNzg3Myw3ICs3ODc2LDcgQEAKIAlhY2xfZnJlZShhY2wpOwogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc4Nzc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3ODgwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OyBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9QT1NJWF9BQ0wgMQpAQCAtNzg4OCw5ICs3ODkxLDkgQEAKIHJtIC1mIGNvbmZ0ZXN0KgogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgU29sYXJpcyBBQ0wgc3VwcG9ydCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6Nzg5MjogY2hlY2tpbmcgZm9yIFNvbGFyaXMgQUNMIHN1cHBvcnQiID4mNQorZWNobyAiY29uZmlndXJlOjc4OTU6IGNoZWNraW5nIGZvciBTb2xhcmlzIEFDTCBzdXBwb3J0IiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDc4OTQgImNvbmZpZ3VyZSIKKyNsaW5lIDc4OTcgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaWZkZWYgSEFWRV9TWVNfQUNMX0gKQEAgLTc5MDEsNyArNzkwNCw3IEBACiAJCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6NzkwNTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc5MDg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjY7IGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX1NPTEFSSVNfQUNMIDEKQEAgLTc5MTYsOSArNzkxOSw5IEBACiBybSAtZiBjb25mdGVzdCoKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIEFJWCBBQ0wgc3VwcG9ydCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6NzkyMDogY2hlY2tpbmcgZm9yIEFJWCBBQ0wgc3VwcG9ydCIgPiY1CitlY2hvICJjb25maWd1cmU6NzkyMzogY2hlY2tpbmcgZm9yIEFJWCBBQ0wgc3VwcG9ydCIgPiY1CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA3OTIyICJjb25maWd1cmUiCisjbGluZSA3OTI1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIAogI2lmZGVmIEhBVkVfU1lTX0FDTF9ICkBAIC03OTQwLDcgKzc5NDMsNyBAQAogCQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjc5NDQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3OTQ3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OyBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgSEFWRV9BSVhfQUNMIDEKQEAgLTc5NTgsNyArNzk2MSw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyAtLWRpc2FibGUtZ3BtIGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo3OTYyOiBjaGVja2luZyAtLWRpc2FibGUtZ3BtIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo3OTY1OiBjaGVja2luZyAtLWRpc2FibGUtZ3BtIGFyZ3VtZW50IiA+JjUKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ncG0gb3IgLS1kaXNhYmxlLWdwbSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9ncG0rc2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX2dwbSIKQEAgLTc5NzEsMTMgKzc5NzQsMTMgQEAKIGlmIHRlc3QgIiRlbmFibGVfZ3BtIiA9ICJ5ZXMiOyB0aGVuCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBncG0iIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjc5NzU6IGNoZWNraW5nIGZvciBncG0iID4mNQorZWNobyAiY29uZmlndXJlOjc5Nzg6IGNoZWNraW5nIGZvciBncG0iID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J3ZpX2N2X2hhdmVfZ3BtJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgb2xpYnM9IiRMSUJTIiA7IExJQlM9Ii1sZ3BtIgogCWNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDc5ODEgImNvbmZpZ3VyZSIKKyNsaW5lIDc5ODQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGdwbS5oPgogCSAgICAjaW5jbHVkZSA8bGludXgva2V5Ym9hcmQuaD4KQEAgLTc5ODUsNyArNzk4OCw3IEBACiBHcG1fR2V0TGliVmVyc2lvbihOVUxMKTsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo3OTg5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6Nzk5MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgCSAgICAJICAgIHZpX2N2X2hhdmVfZ3BtPXllcwogZWxzZQpAQCAtODAxMiwxMiArODAxNSwxMiBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHZzbnByaW50ZigpIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4MDE2OiBjaGVja2luZyBmb3IgdnNucHJpbnRmKCkiID4mNQorZWNobyAiY29uZmlndXJlOjgwMTk6IGNoZWNraW5nIGZvciB2c25wcmludGYoKSIgPiY1CiBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbgogICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGZhaWxlZCB0byBjb21waWxlIHRlc3QgcHJvZ3JhbSIgMT4mMjsgZXhpdCAxOyB9CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDgwMjEgImNvbmZpZ3VyZSIKKyNsaW5lIDgwMjQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTgwMzgsNyArODA0MSw3IEBACiAJfQogCSAgICAKIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MDQyOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgwNDU6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfVlNOUFJJTlRGIDEKQEAgLTgwNTYsMTYgKzgwNTksMTYgQEAKIAogCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgcmVuYW1lIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4MDYwOiBjaGVja2luZyBmb3IgcmVuYW1lIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4MDYzOiBjaGVja2luZyBmb3IgcmVuYW1lIiA+JjUKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDgwNjIgImNvbmZpZ3VyZSIKKyNsaW5lIDgwNjUgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CiBpbnQgbWFpbigpIHsKIHJlbmFtZSgidGhpcyIsICJ0aGF0IikKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MDY5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODA3MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfUkVOQU1FIDEKQEAgLTgwODAsOSArODA4Myw5IEBACiBybSAtZiBjb25mdGVzdCoKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIHN5c2N0bCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODA4NDogY2hlY2tpbmcgZm9yIHN5c2N0bCIgPiY1CitlY2hvICJjb25maWd1cmU6ODA4NzogY2hlY2tpbmcgZm9yIHN5c2N0bCIgPiY1CiBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA4MDg2ICJjb25maWd1cmUiCisjbGluZSA4MDg5ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CkBAIC04MDk3LDcgKzgxMDAsNyBAQAogCQogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgxMDE6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODEwNDogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjY7IGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgogI2RlZmluZSBIQVZFX1NZU0NUTCAxCkBAIC04MTEyLDkgKzgxMTUsOSBAQAogcm0gLWYgY29uZnRlc3QqCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzeXNpbmZvIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4MTE2OiBjaGVja2luZyBmb3Igc3lzaW5mbyIgPiY1CitlY2hvICJjb25maWd1cmU6ODExOTogY2hlY2tpbmcgZm9yIHN5c2luZm8iID4mNQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgODExOCAiY29uZmlndXJlIgorI2xpbmUgODEyMSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2luZm8uaD4KQEAgLTgxMjcsNyArODEzMCw3IEBACiAJCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODEzMTogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MTM0OiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfU1lTSU5GTyAxCkBAIC04MTQyLDkgKzgxNDUsOSBAQAogcm0gLWYgY29uZnRlc3QqCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciBzeXNjb25mIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4MTQ2OiBjaGVja2luZyBmb3Igc3lzY29uZiIgPiY1CitlY2hvICJjb25maWd1cmU6ODE0OTogY2hlY2tpbmcgZm9yIHN5c2NvbmYiID4mNQogY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgODE0OCAiY29uZmlndXJlIgorI2xpbmUgODE1MSAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8dW5pc3RkLmg+CiBpbnQgbWFpbigpIHsKQEAgLTgxNTMsNyArODE1Niw3IEBACiAJCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODE1NzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MTYwOiBcIiRhY19jb21waWxlXCIpIDE+JjU7IChldmFsICRhY19jb21waWxlKSAyPiY1OyB9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfU1lTQ09ORiAxCkBAIC04MTY5LDcgKzgxNzIsNyBAQAogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHNpemUgb2YgaW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4MTczOiBjaGVja2luZyBzaXplIG9mIGludCIgPiY1CitlY2hvICJjb25maWd1cmU6ODE3NjogY2hlY2tpbmcgc2l6ZSBvZiBpbnQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3NpemVvZl9pbnQnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQpAQCAtODE3Nyw3ICs4MTgwLDcgQEAKICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBmYWlsZWQgdG8gY29tcGlsZSB0ZXN0IHByb2dyYW0iIDE+JjI7IGV4aXQgMTsgfQogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA4MTgxICJjb25maWd1cmUiCisjbGluZSA4MTg0ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxzdGRpby5oPgogCQltYWluKCkKQEAgLTgxODgsNyArODE5MSw3IEBACiAJCSAgZXhpdCgwKTsKIAkJfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgxOTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODE5NTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBhY19jdl9zaXplb2ZfaW50PWBjYXQgY29uZnRlc3R2YWxgCiBlbHNlCkBAIC04MjA5LDcgKzgyMTIsNyBAQAogCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgbWVtbW92ZS9iY29weS9tZW1jcHkgaGFuZGxlIG92ZXJsYXBzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4MjEzOiBjaGVja2luZyB3aGV0aGVyIG1lbW1vdmUvYmNvcHkvbWVtY3B5IGhhbmRsZSBvdmVybGFwcyIgPiY1CitlY2hvICJjb25maWd1cmU6ODIxNjogY2hlY2tpbmcgd2hldGhlciBtZW1tb3ZlL2Jjb3B5L21lbWNweSBoYW5kbGUgb3ZlcmxhcHMiID4mNQogYmNvcHlfdGVzdF9wcm9nPScKIG1haW4oKSB7CiAgIGNoYXIgYnVmWzEwXTsKQEAgLTgyMjksMTEgKzgyMzIsMTEgQEAKICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBmYWlsZWQgdG8gY29tcGlsZSB0ZXN0IHByb2dyYW0iIDE+JjI7IGV4aXQgMTsgfQogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA4MjMzICJjb25maWd1cmUiCisjbGluZSA4MjM2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNkZWZpbmUgbWNoX21lbW1vdmUocyxkLGwpIG1lbW1vdmUoZCxzLGwpICRiY29weV90ZXN0X3Byb2cKIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MjM3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgyNDA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIFVTRU1FTU1PVkUgMQpAQCAtODI0NywxMSArODI1MCwxMSBAQAogICB7IGVjaG8gImNvbmZpZ3VyZTogZXJyb3I6IGZhaWxlZCB0byBjb21waWxlIHRlc3QgcHJvZ3JhbSIgMT4mMjsgZXhpdCAxOyB9CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDgyNTEgImNvbmZpZ3VyZSIKKyNsaW5lIDgyNTQgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2RlZmluZSBtY2hfbWVtbW92ZShzLGQsbCkgYmNvcHkoZCxzLGwpICRiY29weV90ZXN0X3Byb2cKIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4MjU1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH0gJiYgKC4vY29uZnRlc3Q7IGV4aXQpIDI+L2Rldi9udWxsCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgyNTg6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKIHRoZW4KICAgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIFVTRUJDT1BZIDEKQEAgLTgyNjUsMTEgKzgyNjgsMTEgQEAKICAgeyBlY2hvICJjb25maWd1cmU6IGVycm9yOiBmYWlsZWQgdG8gY29tcGlsZSB0ZXN0IHByb2dyYW0iIDE+JjI7IGV4aXQgMTsgfQogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA4MjY5ICJjb25maWd1cmUiCisjbGluZSA4MjcyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNkZWZpbmUgbWNoX21lbW1vdmUocyxkLGwpIG1lbWNweShkLHMsbCkgJGJjb3B5X3Rlc3RfcHJvZwogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgyNzM6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fSAmJiAoLi9jb25mdGVzdDsgZXhpdCkgMj4vZGV2L251bGwKK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODI3NjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9ICYmICguL2NvbmZ0ZXN0OyBleGl0KSAyPi9kZXYvbnVsbAogdGhlbgogICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKICNkZWZpbmUgVVNFTUVNQ1BZIDEKQEAgLTgzMDEsMTkgKzgzMDQsMTkgQEAKICAgICBDRkxBR1M9IiRDRkxBR1MgLUkkeF9pbmNsdWRlcyIKICAgICBMREZMQUdTPSIkWF9MSUJTICRMREZMQUdTIC1sWDExIgogICAgIGVjaG8gJGFjX24gImNoZWNraW5nIHdoZXRoZXIgWF9MT0NBTEUgbmVlZGVkIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4MzA1OiBjaGVja2luZyB3aGV0aGVyIFhfTE9DQUxFIG5lZWRlZCIgPiY1CitlY2hvICJjb25maWd1cmU6ODMwODogY2hlY2tpbmcgd2hldGhlciBYX0xPQ0FMRSBuZWVkZWQiID4mNQogICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDgzMDcgImNvbmZpZ3VyZSIKKyNsaW5lIDgzMTAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPFgxMS9YbG9jYWxlLmg+CiBpbnQgbWFpbigpIHsKIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgzMTQ6IFwiJGFjX2NvbXBpbGVcIikgMT4mNTsgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjU7IH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODMxNzogXCIkYWNfY29tcGlsZVwiKSAxPiY1OyAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNTsgfTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDgzMTcgImNvbmZpZ3VyZSIKKyNsaW5lIDgzMjAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTgzMjQsNyArODMyNyw3IEBACiBfWHNldGxvY2FsZSgpCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODMyODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjgzMzE6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjYKIAkJY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCkBAIC04MzUxLDcgKzgzNTQsNyBAQAogZmkKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIF94cGc0X3NldHJ1bmVsb2NhbGUgaW4gLWx4cGc0IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4MzU1OiBjaGVja2luZyBmb3IgX3hwZzRfc2V0cnVuZWxvY2FsZSBpbiAtbHhwZzQiID4mNQorZWNobyAiY29uZmlndXJlOjgzNTg6IGNoZWNraW5nIGZvciBfeHBnNF9zZXRydW5lbG9jYWxlIGluIC1seHBnNCIgPiY1CiBhY19saWJfdmFyPWBlY2hvIHhwZzQnXydfeHBnNF9zZXRydW5lbG9jYWxlIHwgc2VkICd5JS4vKy0lX19wXyUnYAogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2xpYl8kYWNfbGliX3Zhcicrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CkBAIC04MzU5LDcgKzgzNjIsNyBAQAogICBhY19zYXZlX0xJQlM9IiRMSUJTIgogTElCUz0iLWx4cGc0ICAkTElCUyIKIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDgzNjMgImNvbmZpZ3VyZSIKKyNsaW5lIDgzNjYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogLyogT3ZlcnJpZGUgYW55IGdjYzIgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLiAgKi8KIC8qIFdlIHVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIGdjYzIKQEAgLTgzNzAsNyArODM3Myw3IEBACiBfeHBnNF9zZXRydW5lbG9jYWxlKCkKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4Mzc0OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODM3NzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfbGliXyRhY19saWJfdmFyPXllcyIKIGVsc2UKQEAgLTgzOTIsNyArODM5NSw3IEBACiAKIAogZWNobyAkYWNfbiAiY2hlY2tpbmcgaG93IHRvIGNyZWF0ZSB0YWdzIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4Mzk2OiBjaGVja2luZyBob3cgdG8gY3JlYXRlIHRhZ3MiID4mNQorZWNobyAiY29uZmlndXJlOjgzOTk6IGNoZWNraW5nIGhvdyB0byBjcmVhdGUgdGFncyIgPiY1CiB0ZXN0IC1mIHRhZ3MgJiYgbXYgdGFncyB0YWdzLnNhdmUKIGlmIChldmFsIGN0YWdzIC0tdmVyc2lvbiAvZGV2L251bGwgfCBncmVwIEV4dWJlcmFudCkgPCAvZGV2L251bGwgMT4mNSAyPiYxOyB0aGVuCiAgIFRBR1BSRz0iY3RhZ3MiCkBAIC04NDA5LDcgKzg0MTIsNyBAQAogZWNobyAiJGFjX3QiIiRUQUdQUkciIDE+JjYgCiAKIGVjaG8gJGFjX24gImNoZWNraW5nIGhvdyB0byBydW4gbWFuIHdpdGggYSBzZWN0aW9uIG5yIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4NDEzOiBjaGVja2luZyBob3cgdG8gcnVuIG1hbiB3aXRoIGEgc2VjdGlvbiBuciIgPiY1CitlY2hvICJjb25maWd1cmU6ODQxNjogY2hlY2tpbmcgaG93IHRvIHJ1biBtYW4gd2l0aCBhIHNlY3Rpb24gbnIiID4mNQogTUFOREVGPSJtYW4iCiAoZXZhbCBtYW4gLXMgMiByZWFkKSA8IC9kZXYvbnVsbCA+IC9kZXYvbnVsbCAyPiY1ICYmIE1BTkRFRj0ibWFuIC1zIgogZWNobyAiJGFjX3QiIiRNQU5ERUYiIDE+JjYKQEAgLTg0MjEsNyArODQyNCw3IEBACiBmaQogCiBlY2hvICRhY19uICJjaGVja2luZyAtLWRpc2FibGUtbmxzIGFyZ3VtZW50IiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4NDI1OiBjaGVja2luZyAtLWRpc2FibGUtbmxzIGFyZ3VtZW50IiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4NDI4OiBjaGVja2luZyAtLWRpc2FibGUtbmxzIGFyZ3VtZW50IiA+JjUKICMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1ubHMgb3IgLS1kaXNhYmxlLW5scyB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9ubHMrc2V0fSIgPSBzZXQ7IHRoZW4KICAgZW5hYmxldmFsPSIkZW5hYmxlX25scyIKQEAgLTg0MzYsNyArODQzOSw3IEBACiAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXNnZm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KIHNldCBkdW1teSBtc2dmbXQ7IGFjX3dvcmQ9JDIKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfd29yZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODQ0MDogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4NDQzOiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X3Byb2dfTVNHRk1UJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKQEAgLTg0NjMsMTkgKzg0NjYsMTkgQEAKIGZpCiAKICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIE5MUyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODQ2NzogY2hlY2tpbmcgZm9yIE5MUyIgPiY1CitlY2hvICJjb25maWd1cmU6ODQ3MDogY2hlY2tpbmcgZm9yIE5MUyIgPiY1CiAgIGlmIHRlc3QgLWYgcG8vTWFrZWZpbGU7IHRoZW4KICAgICBoYXZlX2dldHRleHQ9Im5vIgogICAgIGlmIHRlc3QgLW4gIiRNU0dGTVQiOyB0aGVuCiAgICAgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA4NDcyICJjb25maWd1cmUiCisjbGluZSA4NDc1ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBpbnQgbWFpbigpIHsKIGdldHRleHQoIlRlc3QiKTsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NDc5OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODQ4MjogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiImdldHRleHQoKSB3b3JrcyIgMT4mNjsgaGF2ZV9nZXR0ZXh0PSJ5ZXMiCiBlbHNlCkBAIC04NDg1LDE0ICs4NDg4LDE0IEBACiAgIG9saWJzPSRMSUJTCiAJICBMSUJTPSIkTElCUyAtbGludGwiCiAJICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA4NDg5ICJjb25maWd1cmUiCisjbGluZSA4NDkyICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxsaWJpbnRsLmg+CiBpbnQgbWFpbigpIHsKIGdldHRleHQoIlRlc3QiKTsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NDk2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODQ5OTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiImdldHRleHQoKSB3b3JrcyB3aXRoIC1saW50bCIgMT4mNjsgaGF2ZV9nZXR0ZXh0PSJ5ZXMiCiBlbHNlCkBAIC04NTE4LDEyICs4NTIxLDEyIEBACiAgICAgICAgICAgICBmb3IgYWNfZnVuYyBpbiBiaW5kX3RleHRkb21haW5fY29kZXNldAogZG8KIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfZnVuYyIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODUyMjogY2hlY2tpbmcgZm9yICRhY19mdW5jIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4NTI1OiBjaGVja2luZyBmb3IgJGFjX2Z1bmMiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2Z1bmNfJGFjX2Z1bmMnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA4NTI3ICJjb25maWd1cmUiCisjbGluZSA4NTMwICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKIC8qIFN5c3RlbSBoZWFkZXIgdG8gZGVmaW5lIF9fc3R1YiBtYWNyb3MgYW5kIGhvcGVmdWxseSBmZXcgcHJvdG90eXBlcywKICAgICB3aGljaCBjYW4gY29uZmxpY3Qgd2l0aCBjaGFyICRhY19mdW5jKCk7IGJlbG93LiAgKi8KQEAgLTg1NDYsNyArODU0OSw3IEBACiAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NTUwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODU1MzogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZXZhbCAiYWNfY3ZfZnVuY18kYWNfZnVuYz15ZXMiCiBlbHNlCkBAIC04NTcxLDkgKzg1NzQsOSBAQAogZG9uZQogCiAgICAgICAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgX25sX21zZ19jYXRfY250ciIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODU3NTogY2hlY2tpbmcgZm9yIF9ubF9tc2dfY2F0X2NudHIiID4mNQorZWNobyAiY29uZmlndXJlOjg1Nzg6IGNoZWNraW5nIGZvciBfbmxfbXNnX2NhdF9jbnRyIiA+JjUKICAgICAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDg1NzcgImNvbmZpZ3VyZSIKKyNsaW5lIDg1ODAgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPGxpYmludGwuaD4KIAkJZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOwpAQCAtODU4MSw3ICs4NTg0LDcgQEAKICsrX25sX21zZ19jYXRfY250cjsKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NTg1OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODU4ODogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsgY2F0ID4+IGNvbmZkZWZzLmggPDxcRU9GCiAjZGVmaW5lIEhBVkVfTkxfTVNHX0NBVF9DTlRSIDEKQEAgLTg2MDQsMTcgKzg2MDcsMTcgQEAKIAogYWNfc2FmZT1gZWNobyAiZGxmY24uaCIgfCBzZWQgJ3klLi8rLSVfX3BfJSdgCiBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxmY24uaCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODYwODogY2hlY2tpbmcgZm9yIGRsZmNuLmgiID4mNQorZWNobyAiY29uZmlndXJlOjg2MTE6IGNoZWNraW5nIGZvciBkbGZjbi5oIiA+JjUKIGlmIGV2YWwgInRlc3QgXCJgZWNobyAnJCcneydhY19jdl9oZWFkZXJfJGFjX3NhZmUnK3NldH0nYFwiID0gc2V0IjsgdGhlbgogICBlY2hvICRhY19uICIoY2FjaGVkKSAkYWNfYyIgMT4mNgogZWxzZQogICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi0jbGluZSA4NjEzICJjb25maWd1cmUiCisjbGluZSA4NjE2ICJjb25maWd1cmUiCiAjaW5jbHVkZSAiY29uZmRlZnMuaCIKICNpbmNsdWRlIDxkbGZjbi5oPgogRU9GCiBhY190cnk9IiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCA+L2Rldi9udWxsIDI+Y29uZnRlc3Qub3V0IgoteyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NjE4OiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQoreyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NjIxOiBcIiRhY190cnlcIikgMT4mNTsgKGV2YWwgJGFjX3RyeSkgMj4mNTsgfQogYWNfZXJyPWBncmVwIC12ICdeICorJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICJeY29uZnRlc3QuJHthY19leHR9XCQiYAogaWYgdGVzdCAteiAiJGFjX2VyciI7IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgpAQCAtODYzNSwxNyArODYzOCwxNyBAQAogICBlY2hvICIkYWNfdCIibm8iIDE+JjYKIGFjX3NhZmU9YGVjaG8gImRsLmgiIHwgc2VkICd5JS4vKy0lX19wXyUnYAogZWNobyAkYWNfbiAiY2hlY2tpbmcgZm9yIGRsLmgiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjg2Mzk6IGNoZWNraW5nIGZvciBkbC5oIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4NjQyOiBjaGVja2luZyBmb3IgZGwuaCIgPiY1CiBpZiBldmFsICJ0ZXN0IFwiYGVjaG8gJyQnJ3snYWNfY3ZfaGVhZGVyXyRhY19zYWZlJytzZXR9J2BcIiA9IHNldCI7IHRoZW4KICAgZWNobyAkYWNfbiAiKGNhY2hlZCkgJGFjX2MiIDE+JjYKIGVsc2UKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgODY0NCAiY29uZmlndXJlIgorI2xpbmUgODY0NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAjaW5jbHVkZSA8ZGwuaD4KIEVPRgogYWNfdHJ5PSIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQgPi9kZXYvbnVsbCAyPmNvbmZ0ZXN0Lm91dCIKLXsgKGV2YWwgZWNobyBjb25maWd1cmU6ODY0OTogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KK3sgKGV2YWwgZWNobyBjb25maWd1cmU6ODY1MjogXCIkYWNfdHJ5XCIpIDE+JjU7IChldmFsICRhY190cnkpIDI+JjU7IH0KIGFjX2Vycj1gZ3JlcCAtdiAnXiAqKycgY29uZnRlc3Qub3V0IHwgZ3JlcCAtdiAiXmNvbmZ0ZXN0LiR7YWNfZXh0fVwkImAKIGlmIHRlc3QgLXogIiRhY19lcnIiOyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKQEAgLTg2NzQsOSArODY3Nyw5IEBACiBFT0YKIAogICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxvcGVuKCkiIi4uLiAkYWNfYyIgMT4mNgotZWNobyAiY29uZmlndXJlOjg2Nzg6IGNoZWNraW5nIGZvciBkbG9wZW4oKSIgPiY1CitlY2hvICJjb25maWd1cmU6ODY4MTogY2hlY2tpbmcgZm9yIGRsb3BlbigpIiA+JjUKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgODY4MCAiY29uZmlndXJlIgorI2xpbmUgODY4MyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewpAQCAtODY4Niw3ICs4Njg5LDcgQEAKICAgICAgIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjg2OTA6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NjkzOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OwogCSAgICAgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgpAQCAtODY5OSwxMSArODcwMiwxMSBAQAogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNjsKIAkgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxvcGVuKCkgaW4gLWxkbCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODcwMzogY2hlY2tpbmcgZm9yIGRsb3BlbigpIGluIC1sZGwiID4mNQorZWNobyAiY29uZmlndXJlOjg3MDY6IGNoZWNraW5nIGZvciBkbG9wZW4oKSBpbiAtbGRsIiA+JjUKIAkgICAgICBvbGlicz0kTElCUwogCSAgICAgIExJQlM9IiRMSUJTIC1sZGwiCiAJICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgODcwNyAiY29uZmlndXJlIgorI2xpbmUgODcxMCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewpAQCAtODcxMyw3ICs4NzE2LDcgQEAKIAkJIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjg3MTc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NzIwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OwogCQkJICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKQEAgLTg3MzEsOSArODczNCw5IEBACiBmaQogcm0gLWYgY29uZnRlc3QqCiAgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxzeW0oKSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODczNTogY2hlY2tpbmcgZm9yIGRsc3ltKCkiID4mNQorZWNobyAiY29uZmlndXJlOjg3Mzg6IGNoZWNraW5nIGZvciBkbHN5bSgpIiA+JjUKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgODczNyAiY29uZmlndXJlIgorI2xpbmUgODc0MCAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewpAQCAtODc0Myw3ICs4NzQ2LDcgQEAKICAgICAgIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjg3NDc6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4NzUwOiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OwogCSAgICAgIGNhdCA+PiBjb25mZGVmcy5oIDw8XEVPRgpAQCAtODc1NiwxMSArODc1OSwxMSBAQAogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJubyIgMT4mNjsKIAkgICAgICBlY2hvICRhY19uICJjaGVja2luZyBmb3IgZGxzeW0oKSBpbiAtbGRsIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4NzYwOiBjaGVja2luZyBmb3IgZGxzeW0oKSBpbiAtbGRsIiA+JjUKK2VjaG8gImNvbmZpZ3VyZTo4NzYzOiBjaGVja2luZyBmb3IgZGxzeW0oKSBpbiAtbGRsIiA+JjUKIAkgICAgICBvbGlicz0kTElCUwogCSAgICAgIExJQlM9IiRMSUJTIC1sZGwiCiAJICAgICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgODc2NCAiY29uZmlndXJlIgorI2xpbmUgODc2NyAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewpAQCAtODc3MCw3ICs4NzczLDcgQEAKIAkJIAogOyByZXR1cm4gMDsgfQogRU9GCi1pZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjg3NzQ6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgoraWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4Nzc3OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIieWVzIiAxPiY2OwogCQkJICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKQEAgLTg3OTMsOSArODc5Niw5IEBACiBFT0YKIAogICBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc2hsX2xvYWQoKSIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODc5NzogY2hlY2tpbmcgZm9yIHNobF9sb2FkKCkiID4mNQorZWNobyAiY29uZmlndXJlOjg4MDA6IGNoZWNraW5nIGZvciBzaGxfbG9hZCgpIiA+JjUKICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2xpbmUgODc5OSAiY29uZmlndXJlIgorI2xpbmUgODgwMiAiY29uZmlndXJlIgogI2luY2x1ZGUgImNvbmZkZWZzLmgiCiAKIGludCBtYWluKCkgewpAQCAtODgwNSw3ICs4ODA4LDcgQEAKICAgICAgCiA7IHJldHVybiAwOyB9CiBFT0YKLWlmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODgwOTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCitpZiB7IChldmFsIGVjaG8gY29uZmlndXJlOjg4MTI6IFwiJGFjX2xpbmtcIikgMT4mNTsgKGV2YWwgJGFjX2xpbmspIDI+JjU7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCiAgIGVjaG8gIiRhY190IiJ5ZXMiIDE+JjY7CiAJICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKQEAgLTg4MTgsMTEgKzg4MjEsMTEgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICBlY2hvICIkYWNfdCIibm8iIDE+JjY7CiAJICBlY2hvICRhY19uICJjaGVja2luZyBmb3Igc2hsX2xvYWQoKSBpbiAtbGRsZCIiLi4uICRhY19jIiAxPiY2Ci1lY2hvICJjb25maWd1cmU6ODgyMjogY2hlY2tpbmcgZm9yIHNobF9sb2FkKCkgaW4gLWxkbGQiID4mNQorZWNobyAiY29uZmlndXJlOjg4MjU6IGNoZWNraW5nIGZvciBzaGxfbG9hZCgpIGluIC1sZGxkIiA+JjUKIAkgIG9saWJzPSRMSUJTCiAJICBMSUJTPSIkTElCUyAtbGRsZCIKIAkgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDg4MjYgImNvbmZpZ3VyZSIKKyNsaW5lIDg4MjkgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogCiBpbnQgbWFpbigpIHsKQEAgLTg4MzIsNyArODgzNSw3IEBACiAJICAgICAKIDsgcmV0dXJuIDA7IH0KIEVPRgotaWYgeyAoZXZhbCBlY2hvIGNvbmZpZ3VyZTo4ODM2OiBcIiRhY19saW5rXCIpIDE+JjU7IChldmFsICRhY19saW5rKSAyPiY1OyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KK2lmIHsgKGV2YWwgZWNobyBjb25maWd1cmU6ODgzOTogXCIkYWNfbGlua1wiKSAxPiY1OyAoZXZhbCAkYWNfbGluaykgMj4mNTsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCiAgIHJtIC1yZiBjb25mdGVzdCoKICAgZWNobyAiJGFjX3QiInllcyIgMT4mNjsKIAkJICBjYXQgPj4gY29uZmRlZnMuaCA8PFxFT0YKQEAgLTg4NTQsMTcgKzg4NTcsMTcgQEAKIGRvCiBhY19zYWZlPWBlY2hvICIkYWNfaGRyIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKIGVjaG8gJGFjX24gImNoZWNraW5nIGZvciAkYWNfaGRyIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4ODU4OiBjaGVja2luZyBmb3IgJGFjX2hkciIgPiY1CitlY2hvICJjb25maWd1cmU6ODg2MTogY2hlY2tpbmcgZm9yICRhY19oZHIiID4mNQogaWYgZXZhbCAidGVzdCBcImBlY2hvICckJyd7J2FjX2N2X2hlYWRlcl8kYWNfc2FmZScrc2V0fSdgXCIgPSBzZXQiOyB0aGVuCiAgIGVjaG8gJGFjX24gIihjYWNoZWQpICRhY19jIiAxPiY2CiBlbHNlCiAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLSNsaW5lIDg4NjMgImNvbmZpZ3VyZSIKKyNsaW5lIDg4NjYgImNvbmZpZ3VyZSIKICNpbmNsdWRlICJjb25mZGVmcy5oIgogI2luY2x1ZGUgPCRhY19oZHI+CiBFT0YKIGFjX3RyeT0iJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0ID4vZGV2L251bGwgMj5jb25mdGVzdC5vdXQiCi17IChldmFsIGVjaG8gY29uZmlndXJlOjg4Njg6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9Cit7IChldmFsIGVjaG8gY29uZmlndXJlOjg4NzE6IFwiJGFjX3RyeVwiKSAxPiY1OyAoZXZhbCAkYWNfdHJ5KSAyPiY1OyB9CiBhY19lcnI9YGdyZXAgLXYgJ14gKisnIGNvbmZ0ZXN0Lm91dCB8IGdyZXAgLXYgIl5jb25mdGVzdC4ke2FjX2V4dH1cJCJgCiBpZiB0ZXN0IC16ICIkYWNfZXJyIjsgdGhlbgogICBybSAtcmYgY29uZnRlc3QqCkBAIC04OTAxLDcgKzg5MDQsNyBAQAogaWYgdGVzdCAieCRNQUNPU1giID0gInh5ZXMiICYmIHRlc3QgIngkQ0FSQk9OIiA9ICJ4eWVzIiBcCiAJJiYgdGVzdCAieCRHVUlUWVBFIiAhPSAieENBUkJPTkdVSSI7IHRoZW4KICAgZWNobyAkYWNfbiAiY2hlY2tpbmcgd2hldGhlciB3ZSBuZWVkIC1mcmFtZXdvcmsgQ2FyYm9uIiIuLi4gJGFjX2MiIDE+JjYKLWVjaG8gImNvbmZpZ3VyZTo4OTA1OiBjaGVja2luZyB3aGV0aGVyIHdlIG5lZWQgLWZyYW1ld29yayBDYXJib24iID4mNQorZWNobyAiY29uZmlndXJlOjg5MDg6IGNoZWNraW5nIHdoZXRoZXIgd2UgbmVlZCAtZnJhbWV3b3JrIENhcmJvbiIgPiY1CiAgICAgaWYgdGVzdCAieCRlbmFibGVfbXVsdGlieXRlIiA9ICJ4eWVzIiB8fCB0ZXN0ICJ4JGZlYXR1cmVzIiA9PSAieGJpZyIgXAogCXx8IHRlc3QgIngkZmVhdHVyZXMiID0gInhodWdlIjsgdGhlbgogICAgIExJQlM9IiRMSUJTIC1mcmFtZXdvcmsgQ2FyYm9uIgpkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZ3VyZS5pbiBiL3NyYy9jb25maWd1cmUuaW4KaW5kZXggNmY4YTg0Yy4uYTcxYzIwZCAxMDA2NDQKLS0tIGEvc3JjL2NvbmZpZ3VyZS5pbgorKysgYi9zcmMvY29uZmlndXJlLmluCkBAIC0zNjQsNiArMzY0LDkgQEAKIAlkbmwgTWFrZSBWaW0gcmVtZW1iZXIgdGhlIHBhdGggdG8gdGhlIGxpYnJhcnkuICBGb3Igd2hlbiBpdCdzIG5vdCBpbgogCWRubCAkTERfTElCUkFSWV9QQVRILgogICAgICAgICBNWlNDSEVNRV9MSUJTPSIkTVpTQ0hFTUVfTElCUyAtV2wsLXJwYXRoIC1XbCwke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4fS9saWIiCisgICAgICBlbGlmIHRlc3QgImAodW5hbWUpIDI+L2Rldi9udWxsYCIgPSBTdW5PUyAmJgorCQkJICAgICAgIHVuYW1lIC1yIHwgZ3JlcCAnXjUnID4vZGV2L251bGw7IHRoZW4KKwlNWlNDSEVNRV9MSUJTPSIkTVpTQ0hFTUVfTElCUyAtUiAke3ZpX2N2X3BhdGhfbXpzY2hlbWVfcGZ4fS9saWIiCiAgICAgICBmaQogICAgIGZpCiAgICAgTVpTQ0hFTUVfQ0ZMQUdTPSItSSR7dmlfY3ZfcGF0aF9tenNjaGVtZV9wZnh9L2luY2x1ZGUgICBcCmRpZmYgLS1naXQgYS9zcmMvZXhfZG9jbWQuYyBiL3NyYy9leF9kb2NtZC5jCmluZGV4IDViMzRjOGUuLjc0MTVlNDYgMTAwNjQ0Ci0tLSBhL3NyYy9leF9kb2NtZC5jCisrKyBiL3NyYy9leF9kb2NtZC5jCkBAIC0zMjA1LDYgKzMyMDUsMTEgQEAKIAkgICAgewogCQl4cC0+eHBfY29udGV4dCA9IEVYUEFORF9FTlZfVkFSUzsKIAkJKyt4cC0+eHBfcGF0dGVybjsKKyNpZiBkZWZpbmVkKEZFQVRfVVNSX0NNRFMpICYmIGRlZmluZWQoRkVBVF9DTURMX0NPTVBMKQorCQkvKiBBdm9pZCB0aGF0IHRoZSBhc3NpZ25tZW50IHVzZXMgRVhQQU5EX0ZJTEVTIGFnYWluLiAqLworCQlpZiAoY29tcGwgIT0gRVhQQU5EX1VTRVJfREVGSU5FRCkKKwkJICAgIGNvbXBsID0gRVhQQU5EX0VOVl9WQVJTOworI2VuZGlmCiAJICAgIH0KIAl9CiAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL2ZpbGVpby5jIGIvc3JjL2ZpbGVpby5jCmluZGV4IDI0MGM3ZTkuLjAyZTVhZDEgMTAwNjQ0Ci0tLSBhL3NyYy9maWxlaW8uYworKysgYi9zcmMvZmlsZWlvLmMKQEAgLTI3MjAsNiArMjcyMCw3IEBACiAJaW50CQlidWZfZm5hbWVfZiA9IEZBTFNFOwogCWludAkJYnVmX2ZuYW1lX3MgPSBGQUxTRTsKIAlpbnQJCWRpZF9jbWQgPSBGQUxTRTsKKwlpbnQJCW5vZmlsZV9lcnIgPSBGQUxTRTsKIAogCS8qCiAJICogQXBwbHkgUFJFIGF1Y29jb21tYW5kcy4KQEAgLTI3NDIsOCArMjc0MywxMyBAQAogCXsKIAkgICAgaWYgKCEoZGlkX2NtZCA9IGFwcGx5X2F1dG9jbWRzX2V4YXJnKEVWRU5UX0ZJTEVBUFBFTkRDTUQsCiAJCQkJCSBzZm5hbWUsIHNmbmFtZSwgRkFMU0UsIGN1cmJ1ZiwgZWFwKSkpCi0JCWFwcGx5X2F1dG9jbWRzX2V4YXJnKEVWRU5UX0ZJTEVBUFBFTkRQUkUsCisJICAgIHsKKwkJaWYgKGJ0X25vZmlsZShjdXJidWYpKQorCQkgICAgbm9maWxlX2VyciA9IFRSVUU7CisJCWVsc2UKKwkJICAgIGFwcGx5X2F1dG9jbWRzX2V4YXJnKEVWRU5UX0ZJTEVBUFBFTkRQUkUsCiAJCQkJCSAgc2ZuYW1lLCBzZm5hbWUsIEZBTFNFLCBjdXJidWYsIGVhcCk7CisJICAgIH0KIAl9CiAJZWxzZSBpZiAoZmlsdGVyaW5nKQogCXsKQEAgLTI3NTQsMTUgKzI3NjAsMjUgQEAKIAl7CiAJICAgIGlmICghKGRpZF9jbWQgPSBhcHBseV9hdXRvY21kc19leGFyZyhFVkVOVF9CVUZXUklURUNNRCwKIAkJCQkJIHNmbmFtZSwgc2ZuYW1lLCBGQUxTRSwgY3VyYnVmLCBlYXApKSkKLQkJYXBwbHlfYXV0b2NtZHNfZXhhcmcoRVZFTlRfQlVGV1JJVEVQUkUsCisJICAgIHsKKwkJaWYgKGJ0X25vZmlsZShjdXJidWYpKQorCQkgICAgbm9maWxlX2VyciA9IFRSVUU7CisJCWVsc2UKKwkJICAgIGFwcGx5X2F1dG9jbWRzX2V4YXJnKEVWRU5UX0JVRldSSVRFUFJFLAogCQkJCQkgIHNmbmFtZSwgc2ZuYW1lLCBGQUxTRSwgY3VyYnVmLCBlYXApOworCSAgICB9CiAJfQogCWVsc2UKIAl7CiAJICAgIGlmICghKGRpZF9jbWQgPSBhcHBseV9hdXRvY21kc19leGFyZyhFVkVOVF9GSUxFV1JJVEVDTUQsCiAJCQkJCSBzZm5hbWUsIHNmbmFtZSwgRkFMU0UsIGN1cmJ1ZiwgZWFwKSkpCi0JCWFwcGx5X2F1dG9jbWRzX2V4YXJnKEVWRU5UX0ZJTEVXUklURVBSRSwKKwkgICAgeworCQlpZiAoYnRfbm9maWxlKGN1cmJ1ZikpCisJCSAgICBub2ZpbGVfZXJyID0gVFJVRTsKKwkJZWxzZQorCQkgICAgYXBwbHlfYXV0b2NtZHNfZXhhcmcoRVZFTlRfRklMRVdSSVRFUFJFLAogCQkJCQkgIHNmbmFtZSwgc2ZuYW1lLCBGQUxTRSwgY3VyYnVmLCBlYXApOworCSAgICB9CiAJfQogCiAJLyogcmVzdG9yZSBjdXJ3aW4vY3VyYnVmIGFuZCBhIGZldyBvdGhlciB0aGluZ3MgKi8KQEAgLTI3NzYsMTEgKzI3OTIsMTUgQEAKIAkgKi8KIAlpZiAoIWJ1Zl92YWxpZChidWYpKQogCSAgICBidWYgPSBOVUxMOwotCWlmIChidWYgPT0gTlVMTCB8fCBidWYtPmJfbWwubWxfbWZwID09IE5VTEwgfHwgZGlkX2NtZCB8fCBhYm9ydGluZygpKQorCWlmIChidWYgPT0gTlVMTCB8fCBidWYtPmJfbWwubWxfbWZwID09IE5VTEwKKwkJCQkgICAgICAgfHwgZGlkX2NtZCB8fCBub2ZpbGVfZXJyIHx8IGFib3J0aW5nKCkpCiAJewogCSAgICAtLW5vX3dhaXRfcmV0dXJuOwogCSAgICBtc2dfc2Nyb2xsID0gbXNnX3NhdmU7Ci0JICAgIGlmIChhYm9ydGluZygpKQorCSAgICBpZiAobm9maWxlX2VycikKKwkJRU1TRyhfKCJFNjc2OiBObyBtYXRjaGluZyBhdXRvY29tbWFuZHMgZm9yIGFjd3JpdGUgYnVmZmVyIikpOworCisJICAgIGlmIChhYm9ydGluZygpIHx8IG5vZmlsZV9lcnIpCiAJCS8qIEFuIGFib3J0aW5nIGVycm9yLCBpbnRlcnJ1cHQgb3IgZXhjZXB0aW9uIGluIHRoZQogCQkgKiBhdXRvY29tbWFuZHMuICovCiAJCXJldHVybiBGQUlMOwpkaWZmIC0tZ2l0IGEvc3JjL21pc2MxLmMgYi9zcmMvbWlzYzEuYwppbmRleCBmNmZhOWQ2Li44YTJkMTllIDEwMDY0NAotLS0gYS9zcmMvbWlzYzEuYworKysgYi9zcmMvbWlzYzEuYwpAQCAtOTkyLDI0ICs5OTIsOTIgQEAKIAkJCWZvciAocCA9IGxlYWRlciArIGxlYWRfbGVuIC0gMTsgcCA+IGxlYWRlcgogCQkJCQkJICAgICAgJiYgdmltX2lzd2hpdGUoKnApOyAtLXApCiAJCQkgICAgOwotCiAJCQkrK3A7CisKKyNpZmRlZiBGRUFUX01CWVRFCisJCQkvKiBDb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIHJlcGxhY2VkIGNoYXJhY3RlcnMgaW4KKwkJCSAqIHNjcmVlbiBjaGFyYWN0ZXJzLCBub3QgYnl0ZXMuICovCisJCQl7CisJCQkgICAgaW50CSAgICByZXBsX3NpemUgPSB2aW1fc3RybnNpemUobGVhZF9yZXBsLAorCQkJCQkJCSAgICAgICBsZWFkX3JlcGxfbGVuKTsKKwkJCSAgICBpbnQJICAgIG9sZF9zaXplID0gMDsKKwkJCSAgICBjaGFyX3UgICplbmRwID0gcDsKKwkJCSAgICBpbnQJICAgIGw7CisKKwkJCSAgICB3aGlsZSAob2xkX3NpemUgPCByZXBsX3NpemUgJiYgcCA+IGxlYWRlcikKKwkJCSAgICB7CisJCQkJLS1wOworCQkJCXAgLT0gbWJfaGVhZF9vZmYobGVhZGVyLCBwKTsKKwkJCQlvbGRfc2l6ZSArPSBwdHIyY2VsbHMocCk7CisJCQkgICAgfQorCQkJICAgIGwgPSBsZWFkX3JlcGxfbGVuIC0gKGVuZHAgLSBwKTsKKwkJCSAgICBpZiAobCAhPSAwKQorCQkJCW1jaF9tZW1tb3ZlKGVuZHAgKyBsLCBlbmRwLAorCQkJCQkoc2l6ZV90KSgobGVhZGVyICsgbGVhZF9sZW4pIC0gZW5kcCkpOworCQkJICAgIGxlYWRfbGVuICs9IGw7CisJCQl9CisjZWxzZQogCQkJaWYgKHAgPCBsZWFkZXIgKyBsZWFkX3JlcGxfbGVuKQogCQkJICAgIHAgPSBsZWFkZXI7CiAJCQllbHNlCiAJCQkgICAgcCAtPSBsZWFkX3JlcGxfbGVuOworI2VuZGlmCiAJCQltY2hfbWVtbW92ZShwLCBsZWFkX3JlcGwsIChzaXplX3QpbGVhZF9yZXBsX2xlbik7CiAJCQlpZiAocCArIGxlYWRfcmVwbF9sZW4gPiBsZWFkZXIgKyBsZWFkX2xlbikKIAkJCSAgICBwW2xlYWRfcmVwbF9sZW5dID0gTlVMOwogCiAJCQkvKiBibGFuay1vdXQgYW55IG90aGVyIGNoYXJzIGZyb20gdGhlIG9sZCBsZWFkZXIuICovCiAJCQl3aGlsZSAoLS1wID49IGxlYWRlcikKKwkJCXsKKyNpZmRlZiBGRUFUX01CWVRFCisJCQkgICAgaW50IGwgPSBtYl9oZWFkX29mZihsZWFkZXIsIHApOworCisJCQkgICAgaWYgKGwgPiAxKQorCQkJICAgIHsKKwkJCQlwIC09IGw7CisJCQkJaWYgKHB0cjJjZWxscyhwKSA+IDEpCisJCQkJeworCQkJCSAgICBwWzFdID0gJyAnOworCQkJCSAgICAtLWw7CisJCQkJfQorCQkJCW1jaF9tZW1tb3ZlKHAgKyAxLCBwICsgbCArIDEsCisJCQkJICAgKHNpemVfdCkoKGxlYWRlciArIGxlYWRfbGVuKSAtIChwICsgbCArIDEpKSk7CisJCQkJbGVhZF9sZW4gLT0gbDsKKwkJCQkqcCA9ICcgJzsKKwkJCSAgICB9CisJCQkgICAgZWxzZQorI2VuZGlmCiAJCQkgICAgaWYgKCF2aW1faXN3aGl0ZSgqcCkpCiAJCQkJKnAgPSAnICc7CisJCQl9CiAJCSAgICB9CiAJCSAgICBlbHNlCQkgICAgLyogbGVmdCBhZGp1c3RlZCBsZWFkZXIgKi8KIAkJICAgIHsKIAkJCXAgPSBza2lwd2hpdGUobGVhZGVyKTsKKyNpZmRlZiBGRUFUX01CWVRFCisJCQkvKiBDb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIHJlcGxhY2VkIGNoYXJhY3RlcnMgaW4KKwkJCSAqIHNjcmVlbiBjaGFyYWN0ZXJzLCBub3QgYnl0ZXMuIE1vdmUgdGhlIHBhcnQgdGhhdCBpcworCQkJICogbm90IHRvIGJlIG92ZXJ3cml0dGVuLiAqLworCQkJeworCQkJICAgIGludAkgICAgcmVwbF9zaXplID0gdmltX3N0cm5zaXplKGxlYWRfcmVwbCwKKwkJCQkJCQkgICAgICAgbGVhZF9yZXBsX2xlbik7CisJCQkgICAgaW50CSAgICBpOworCQkJICAgIGludAkgICAgbDsKKworCQkJICAgIGZvciAoaSA9IDA7IHBbaV0gIT0gTlVMICYmIGkgPCBsZWFkX2xlbjsgaSArPSBsKQorCQkJICAgIHsKKwkJCQlsID0gbWJfcHRyMmxlbl9jaGVjayhwICsgaSk7CisJCQkJaWYgKHZpbV9zdHJuc2l6ZShwLCBpICsgbCkgPiByZXBsX3NpemUpCisJCQkJICAgIGJyZWFrOworCQkJICAgIH0KKwkJCSAgICBpZiAoaSAhPSBsZWFkX3JlcGxfbGVuKQorCQkJICAgIHsKKwkJCQltY2hfbWVtbW92ZShwICsgbGVhZF9yZXBsX2xlbiwgcCArIGksCisJCQkJICAgICAgIChzaXplX3QpKGxlYWRfbGVuIC0gaSAtIChsZWFkZXIgLSBwKSkpOworCQkJCWxlYWRfbGVuICs9IGxlYWRfcmVwbF9sZW4gLSBpOworCQkJICAgIH0KKwkJCX0KKyNlbmRpZgogCQkJbWNoX21lbW1vdmUocCwgbGVhZF9yZXBsLCAoc2l6ZV90KWxlYWRfcmVwbF9sZW4pOwogCiAJCQkvKiBSZXBsYWNlIGFueSByZW1haW5pbmcgbm9uLXdoaXRlIGNoYXJzIGluIHRoZSBvbGQKQEAgLTEwMjYsNyArMTA5NCwyNiBAQAogCQkJCQkJICAgICAobGVhZGVyICsgbGVhZF9sZW4pIC0gcCk7CiAJCQkJfQogCQkJCWVsc2UKKwkJCQl7CisjaWZkZWYgRkVBVF9NQllURQorCQkJCSAgICBpbnQJICAgIGwgPSBtYl9wdHIybGVuX2NoZWNrKHApOworCisJCQkJICAgIGlmIChsID4gMSkKKwkJCQkgICAgeworCQkJCQlpZiAocHRyMmNlbGxzKHApID4gMSkKKwkJCQkJeworCQkJCQkgICAgLyogUmVwbGFjZSBhIGRvdWJsZS13aWRlIGNoYXIgd2l0aAorCQkJCQkgICAgICogdHdvIHNwYWNlcyAqLworCQkJCQkgICAgLS1sOworCQkJCQkgICAgKnArKyA9ICcgJzsKKwkJCQkJfQorCQkJCQltY2hfbWVtbW92ZShwICsgMSwgcCArIGwsCisJCQkJCQkgICAgIChsZWFkZXIgKyBsZWFkX2xlbikgLSBwKTsKKwkJCQkJbGVhZF9sZW4gLT0gbCAtIDE7CisJCQkJICAgIH0KKyNlbmRpZgogCQkJCSAgICAqcCA9ICcgJzsKKwkJCQl9CiAJCQkgICAgfQogCQkJKnAgPSBOVUw7CiAJCSAgICB9CkBAIC0zNzg5LDcgKzM4NzYsOCBAQAogICAgIC8qIEJvcmxhbmQgQysrIDUuMiBoYXMgdGhpcyBpbiBhIGhlYWRlciBmaWxlLiAqLwogICAgIGV4dGVybiBjaGFyCQkqKmVudmlyb247CiAjIGVuZGlmCi0gICAgc3RhdGljIGNoYXJfdQluYW1lWzEwMF07CisjIGRlZmluZSBFTlZOQU1FTEVOIDEwMAorICAgIHN0YXRpYyBjaGFyX3UJbmFtZVtFTlZOQU1FTEVOXTsKICAgICBjaGFyX3UJCSpzdHI7CiAgICAgaW50CQkJbjsKIApAQCAtMzc5Nyw3ICszODg1LDcgQEAKICAgICBpZiAoc3RyID09IE5VTEwpCiAJcmV0dXJuIE5VTEw7CiAKLSAgICBmb3IgKG4gPSAwOyBuIDwgOTk7ICsrbikKKyAgICBmb3IgKG4gPSAwOyBuIDwgRU5WTkFNRUxFTiAtIDE7ICsrbikKICAgICB7CiAJaWYgKHN0cltuXSA9PSAnPScgfHwgc3RyW25dID09IE5VTCkKIAkgICAgYnJlYWs7CkBAIC01MDY0LDcgKzUxNTIsMTAgQEAKIAogICAgICpjb2wgPSAwOwogCi0gICAgcyA9IGNpbl9za2lwY29tbWVudChsaW5lKTsKKyAgICBzID0gc2tpcHdoaXRlKGxpbmUpOworICAgIGlmICgqcyA9PSAnIycpCQkvKiBza2lwICNkZWZpbmUgRk9PIHggPyAoeCkgOiB4ICovCisJcmV0dXJuIEZBTFNFOworICAgIHMgPSBjaW5fc2tpcGNvbW1lbnQocyk7CiAgICAgaWYgKCpzID09IE5VTCkKIAlyZXR1cm4gRkFMU0U7CiAKQEAgLTU3MzcsNyArNTgyOCw4IEBACiAJCSAgICBpZiAoc3RhcnRfb2ZmICE9IDApCiAJCQlhbW91bnQgKz0gc3RhcnRfb2ZmOwogCQkgICAgZWxzZSBpZiAoc3RhcnRfYWxpZ24gPT0gQ09NX1JJR0hUKQotCQkJYW1vdW50ICs9IGxlYWRfc3RhcnRfbGVuIC0gbGVhZF9taWRkbGVfbGVuOworCQkJYW1vdW50ICs9IHZpbV9zdHJzaXplKGxlYWRfc3RhcnQpCisJCQkJCQkgICAtIHZpbV9zdHJzaXplKGxlYWRfbWlkZGxlKTsKIAkJICAgIGJyZWFrOwogCQl9CiAKQEAgLTU3NTEsNyArNTg0Myw4IEBACiAJCSAgICBpZiAob2ZmICE9IDApCiAJCQlhbW91bnQgKz0gb2ZmOwogCQkgICAgZWxzZSBpZiAoYWxpZ24gPT0gQ09NX1JJR0hUKQotCQkJYW1vdW50ICs9IGxlYWRfc3RhcnRfbGVuIC0gbGVhZF9taWRkbGVfbGVuOworCQkJYW1vdW50ICs9IHZpbV9zdHJzaXplKGxlYWRfc3RhcnQpCisJCQkJCQkgICAtIHZpbV9zdHJzaXplKGxlYWRfbWlkZGxlKTsKIAkJICAgIGRvbmUgPSBUUlVFOwogCQkgICAgYnJlYWs7CiAJCX0KZGlmZiAtLWdpdCBhL3NyYy9vcHRpb24uYyBiL3NyYy9vcHRpb24uYwppbmRleCA1YzdiNzgwLi4wZGVlNTBiIDEwMDY0NAotLS0gYS9zcmMvb3B0aW9uLmMKKysrIGIvc3JjL29wdGlvbi5jCkBAIC0yNDc1LDcgKzI0NzUsMTEgQEAKIHN0YXRpYyBjaGFyICoocF9lYWRfdmFsdWVzW10pID0geyJib3RoIiwgInZlciIsICJob3IiLCBOVUxMfTsKICNlbmRpZgogI2lmIGRlZmluZWQoRkVBVF9RVUlDS0ZJWCkKKyMgaWZkZWYgRkVBVF9BVVRPQ01ECitzdGF0aWMgY2hhciAqKHBfYnVmdHlwZV92YWx1ZXNbXSkgPSB7Im5vZmlsZSIsICJub3dyaXRlIiwgInF1aWNrZml4IiwgImhlbHAiLCAiYWN3cml0ZSIsIE5VTEx9OworIyBlbHNlCiBzdGF0aWMgY2hhciAqKHBfYnVmdHlwZV92YWx1ZXNbXSkgPSB7Im5vZmlsZSIsICJub3dyaXRlIiwgInF1aWNrZml4IiwgImhlbHAiLCBOVUxMfTsKKyMgZW5kaWYKIHN0YXRpYyBjaGFyICoocF9idWZoaWRkZW5fdmFsdWVzW10pID0geyJoaWRlIiwgInVubG9hZCIsICJkZWxldGUiLCAid2lwZSIsIE5VTEx9OwogI2VuZGlmCiBzdGF0aWMgY2hhciAqKHBfYnNfdmFsdWVzW10pID0geyJpbmRlbnQiLCAiZW9sIiwgInN0YXJ0IiwgTlVMTH07CmRpZmYgLS1naXQgYS9zcmMvcXVpY2tmaXguYyBiL3NyYy9xdWlja2ZpeC5jCmluZGV4IGMyNWEwYmUuLmI5MzkyNzUgMTAwNjQ0Ci0tLSBhL3NyYy9xdWlja2ZpeC5jCisrKyBiL3NyYy9xdWlja2ZpeC5jCkBAIC0xOTcyLDEzICsxOTcyLDE1IEBACiB9CiAKIC8qCi0gKiBSZXR1cm4gVFJVRSBpZiAiYnVmIiBpcyBhICJub2ZpbGUiIGJ1ZmZlci4KKyAqIFJldHVybiBUUlVFIGlmICJidWYiIGlzIGEgIm5vZmlsZSIgb3IgImFjd3JpdGUiIGJ1ZmZlci4KKyAqIFRoaXMgbWVhbnMgdGhlIGJ1ZmZlciBuYW1lIGlzIG5vdCBhIGZpbGUgbmFtZS4KICAqLwogICAgIGludAogYnRfbm9maWxlKGJ1ZikKICAgICBidWZfVAkqYnVmOwogewotICAgIHJldHVybiAoYnVmLT5iX3BfYnRbMF0gPT0gJ24nICYmIGJ1Zi0+Yl9wX2J0WzJdID09ICdmJyk7CisgICAgcmV0dXJuIChidWYtPmJfcF9idFswXSA9PSAnbicgJiYgYnVmLT5iX3BfYnRbMl0gPT0gJ2YnKQorCSAgICB8fCBidWYtPmJfcF9idFswXSA9PSAnYSc7CiB9CiAKIC8qCg==