ZGlmZiAtLWdpdCBhLy5oZ3RhZ3MtdG9wLXJlcG8gYi8uaGd0YWdzLXRvcC1yZXBvCmluZGV4IDQyNzhmOTIuLmE0ZTJmN2EgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MtdG9wLXJlcG8KKysrIGIvLmhndGFncy10b3AtcmVwbwpAQCAtMjY3LDMgKzI2Nyw0IEBACiAwYzJiMmRhZTkzZTdhNzIwYmJjYzJlMTNhMTkxM2EyMjY0MzM1NTU0IGpkazd1MTctYjAxCiA4ZTQ5ZmYyZmVkYTMwODAxZDc4MjZjYTE3NzhlYjdiOTAxYTcwODljIGpkazd1MTctYjAyCiAyMTBmNDY0MzY4ZGJhMGZjNGY4ZDIzOTY1NGZhNzQzMmFkMmVkMzFmIGpkazd1MTQtYjE2CitmMDc3MTIyMzI2NDJmYzMwZGNmN2M0MzNmZjg5MGU3MjQ3YjVmZDBiIGpkazd1MTQtYjE3CmRpZmYgLS1naXQgYS9jb3JiYS8uaGd0YWdzIGIvY29yYmEvLmhndGFncwppbmRleCA5MjMyNzI2Li45M2EyNjJiIDEwMDY0NAotLS0gYS9jb3JiYS8uaGd0YWdzCisrKyBiL2NvcmJhLy5oZ3RhZ3MKQEAgLTI2NywzICsyNjcsNCBAQAogOTRlOGI5YjBlMGVmMTY4NWUyZjJmY2M4ODZlMDhhNDJhODVjOGUwMyBqZGs3dTE3LWIwMQogZTgyZDMxZTFmMTE4OWFlNmYwMmQ2ODU1ZjBjZDc4MDc0NTk5YjJlMSBqZGs3dTE3LWIwMgogMzgyODJiNzM0ZGFlZmNiYjgxNTViN2Q3ZWY5NjY0MTMwMzMwZWQxNCBqZGs3dTE0LWIxNgorOGIxZDc3Njk3Y2E0ZDJhOWMyOWQ2N2ZkMmZmMDNhZGVkOWIwNjAxMiBqZGs3dTE0LWIxNwpkaWZmIC0tZ2l0IGEvY29yYmEvc3JjL3NoYXJlL2NsYXNzZXMvY29tL3N1bi9jb3JiYS9zZS9pbXBsL2NvcmJhL1R5cGVDb2RlSW1wbC5qYXZhIGIvY29yYmEvc3JjL3NoYXJlL2NsYXNzZXMvY29tL3N1bi9jb3JiYS9zZS9pbXBsL2NvcmJhL1R5cGVDb2RlSW1wbC5qYXZhCmluZGV4IGM5YjZlNTUuLjdlOTI2ZGQgMTAwNjQ0Ci0tLSBhL2NvcmJhL3NyYy9zaGFyZS9jbGFzc2VzL2NvbS9zdW4vY29yYmEvc2UvaW1wbC9jb3JiYS9UeXBlQ29kZUltcGwuamF2YQorKysgYi9jb3JiYS9zcmMvc2hhcmUvY2xhc3Nlcy9jb20vc3VuL2NvcmJhL3NlL2ltcGwvY29yYmEvVHlwZUNvZGVJbXBsLmphdmEKQEAgLTIxODksMTAgKzIxODksNyBAQAogCiAgICAgICAgICAgICAgICAgaWYgKGxhYmVsSW5kZXggPT0gX3VuaW9uTGFiZWxzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAvLyBjaGVjayBpZiBsYWJlbCBoYXMgbm90IGJlZW4gZm91bmQKLSAgICAgICAgICAgICAgICAgICAgaWYgKF9kZWZhdWx0SW5kZXggPT0gLTEpCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aHJvdyBleGNlcHRpb24gaWYgZGVmYXVsdCB3YXMgbm90IGV4cGVjdGVkCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyB3cmFwcGVyLnVuZXhwZWN0ZWRVbmlvbkRlZmF1bHQoKSA7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgaWYgKF9kZWZhdWx0SW5kZXggIT0gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtdXN0IGJlIG9mIHRoZSBkZWZhdWx0IGJyYW5jaCB0eXBlCiAgICAgICAgICAgICAgICAgICAgICAgICBfbWVtYmVyVHlwZXNbX2RlZmF1bHRJbmRleF0uY29weShzcmMsIGRzdCk7CiAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvaG90c3BvdC8uaGd0YWdzIGIvaG90c3BvdC8uaGd0YWdzCmluZGV4IDliNzlmNzIuLmU3MTE1MWUgMTAwNjQ0Ci0tLSBhL2hvdHNwb3QvLmhndGFncworKysgYi9ob3RzcG90Ly5oZ3RhZ3MKQEAgLTQ1NywzICs0NTcsNSBAQAogYmUyMWY4YTRkNDJjMDNjYWZkZTRmNjE2ZmQ4MGVjZTc5MWJhMmYyMSBoczI0LWIzNQogMTBlMDA0M2JkYTA4NzhkYmM4NWYzZjI4MDE1N2VhYjU5MmI0N2M5MSBqZGs3dTE0LWIxNgogNzQxNmIwYTg0ZTNjNWIwZWVhNDZhZmZiNzFjYzM2Y2M3MjljMDQwYyBoczI0LWIzNgorNjE4MjJkYTJiMTQ5YmQyNzJiNWU3YjcyN2MxNDI2MzVmMWQ1MmQ1YyBqZGs3dTE0LWIxNworYzVjMDFkNGNkN2Q5YTUxNDFlMDk0NWE1ODExYzc2MjY3ZGEwZGYxMyBoczI0LWIzNwpkaWZmIC0tZ2l0IGEvaG90c3BvdC9tYWtlL2hvdHNwb3RfdmVyc2lvbiBiL2hvdHNwb3QvbWFrZS9ob3RzcG90X3ZlcnNpb24KaW5kZXggM2I2NDI1Ni4uNzVjMDJkOSAxMDA2NDQKLS0tIGEvaG90c3BvdC9tYWtlL2hvdHNwb3RfdmVyc2lvbgorKysgYi9ob3RzcG90L21ha2UvaG90c3BvdF92ZXJzaW9uCkBAIC0zNSw3ICszNSw3IEBACiAKIEhTX01BSk9SX1ZFUj0yNAogSFNfTUlOT1JfVkVSPTAKLUhTX0JVSUxEX05VTUJFUj0zNgorSFNfQlVJTERfTlVNQkVSPTM3CiAKIEpES19NQUpPUl9WRVI9MQogSkRLX01JTk9SX1ZFUj03CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9vcy9ic2Qvdm0vb3NfYnNkLmNwcCBiL2hvdHNwb3Qvc3JjL29zL2JzZC92bS9vc19ic2QuY3BwCmluZGV4IDBjYTMxNmUuLjcxYzI2NzYgMTAwNjQ0Ci0tLSBhL2hvdHNwb3Qvc3JjL29zL2JzZC92bS9vc19ic2QuY3BwCisrKyBiL2hvdHNwb3Qvc3JjL29zL2JzZC92bS9vc19ic2QuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAicnVudGltZS90aHJlYWRDcml0aWNhbC5ocHAiCiAjaW5jbHVkZSAicnVudGltZS90aW1lci5ocHAiCiAjaW5jbHVkZSAic2VydmljZXMvYXR0YWNoTGlzdGVuZXIuaHBwIgorI2luY2x1ZGUgInNlcnZpY2VzL21lbVRyYWNrZXIuaHBwIgogI2luY2x1ZGUgInNlcnZpY2VzL3J1bnRpbWVTZXJ2aWNlLmhwcCIKICNpbmNsdWRlICJ0aHJlYWRfYnNkLmlubGluZS5ocHAiCiAjaW5jbHVkZSAidXRpbGl0aWVzL2RlY29kZXIuaHBwIgpAQCAtMzMxNSwxMyArMzMxNiwyNSBAQAogICAgICByZXR1cm4gTlVMTDsKICAgfQogCisgIC8vIFRoZSBtZW1vcnkgaXMgY29tbWl0dGVkCisgIGFkZHJlc3MgcGMgPSBDQUxMRVJfUEM7CisgIE1lbVRyYWNrZXI6OnJlY29yZF92aXJ0dWFsX21lbW9yeV9yZXNlcnZlKChhZGRyZXNzKWFkZHIsIGJ5dGVzLCBwYyk7CisgIE1lbVRyYWNrZXI6OnJlY29yZF92aXJ0dWFsX21lbW9yeV9jb21taXQoKGFkZHJlc3MpYWRkciwgYnl0ZXMsIHBjKTsKKwogICByZXR1cm4gYWRkcjsKIH0KIAogYm9vbCBvczo6cmVsZWFzZV9tZW1vcnlfc3BlY2lhbChjaGFyKiBiYXNlLCBzaXplX3QgYnl0ZXMpIHsKICAgLy8gZGV0YWNoaW5nIHRoZSBTSE0gc2VnbWVudCB3aWxsIGFsc28gZGVsZXRlIGl0LCBzZWUgcmVzZXJ2ZV9tZW1vcnlfc3BlY2lhbCgpCiAgIGludCByc2x0ID0gc2htZHQoYmFzZSk7Ci0gIHJldHVybiByc2x0ID09IDA7CisgIGlmIChyc2x0ID09IDApIHsKKyAgICBNZW1UcmFja2VyOjpyZWNvcmRfdmlydHVhbF9tZW1vcnlfdW5jb21taXQoKGFkZHJlc3MpYmFzZSwgYnl0ZXMpOworICAgIE1lbVRyYWNrZXI6OnJlY29yZF92aXJ0dWFsX21lbW9yeV9yZWxlYXNlKChhZGRyZXNzKWJhc2UsIGJ5dGVzKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKwogfQogCiBzaXplX3Qgb3M6OmxhcmdlX3BhZ2Vfc2l6ZSgpIHsKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL29zL2xpbnV4L3ZtL29zX2xpbnV4LmNwcCBiL2hvdHNwb3Qvc3JjL29zL2xpbnV4L3ZtL29zX2xpbnV4LmNwcAppbmRleCA1Nzc2YmY3Li42Yzk0NmQwIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9vcy9saW51eC92bS9vc19saW51eC5jcHAKKysrIGIvaG90c3BvdC9zcmMvb3MvbGludXgvdm0vb3NfbGludXguY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAicnVudGltZS90aHJlYWRDcml0aWNhbC5ocHAiCiAjaW5jbHVkZSAicnVudGltZS90aW1lci5ocHAiCiAjaW5jbHVkZSAic2VydmljZXMvYXR0YWNoTGlzdGVuZXIuaHBwIgorI2luY2x1ZGUgInNlcnZpY2VzL21lbVRyYWNrZXIuaHBwIgogI2luY2x1ZGUgInNlcnZpY2VzL3J1bnRpbWVTZXJ2aWNlLmhwcCIKICNpbmNsdWRlICJ0aHJlYWRfbGludXguaW5saW5lLmhwcCIKICNpbmNsdWRlICJ1dGlsaXRpZXMvZGVjb2Rlci5ocHAiCkBAIC0zMTE2LDEzICszMTE3LDI0IEBACiAgICAgbnVtYV9tYWtlX2dsb2JhbChhZGRyLCBieXRlcyk7CiAgIH0KIAorICAvLyBUaGUgbWVtb3J5IGlzIGNvbW1pdHRlZAorICBhZGRyZXNzIHBjID0gQ0FMTEVSX1BDOworICBNZW1UcmFja2VyOjpyZWNvcmRfdmlydHVhbF9tZW1vcnlfcmVzZXJ2ZSgoYWRkcmVzcylhZGRyLCBieXRlcywgcGMpOworICBNZW1UcmFja2VyOjpyZWNvcmRfdmlydHVhbF9tZW1vcnlfY29tbWl0KChhZGRyZXNzKWFkZHIsIGJ5dGVzLCBwYyk7CisKICAgcmV0dXJuIGFkZHI7CiB9CiAKIGJvb2wgb3M6OnJlbGVhc2VfbWVtb3J5X3NwZWNpYWwoY2hhciogYmFzZSwgc2l6ZV90IGJ5dGVzKSB7CiAgIC8vIGRldGFjaGluZyB0aGUgU0hNIHNlZ21lbnQgd2lsbCBhbHNvIGRlbGV0ZSBpdCwgc2VlIHJlc2VydmVfbWVtb3J5X3NwZWNpYWwoKQogICBpbnQgcnNsdCA9IHNobWR0KGJhc2UpOwotICByZXR1cm4gcnNsdCA9PSAwOworICBpZiAocnNsdCA9PSAwKSB7CisgICAgTWVtVHJhY2tlcjo6cmVjb3JkX3ZpcnR1YWxfbWVtb3J5X3VuY29tbWl0KChhZGRyZXNzKWJhc2UsIGJ5dGVzKTsKKyAgICBNZW1UcmFja2VyOjpyZWNvcmRfdmlydHVhbF9tZW1vcnlfcmVsZWFzZSgoYWRkcmVzcyliYXNlLCBieXRlcyk7CisgICAgcmV0dXJuIHRydWU7CisgIH0gZWxzZSB7CisgICByZXR1cm4gZmFsc2U7CisgIH0KIH0KIAogc2l6ZV90IG9zOjpsYXJnZV9wYWdlX3NpemUoKSB7CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9vcy9zb2xhcmlzL3ZtL29zX3NvbGFyaXMuY3BwIGIvaG90c3BvdC9zcmMvb3Mvc29sYXJpcy92bS9vc19zb2xhcmlzLmNwcAppbmRleCBmNzM3ODk1Li42NGFjZmEyIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9vcy9zb2xhcmlzL3ZtL29zX3NvbGFyaXMuY3BwCisrKyBiL2hvdHNwb3Qvc3JjL29zL3NvbGFyaXMvdm0vb3Nfc29sYXJpcy5jcHAKQEAgLTM0MjYsMTMgKzM0MjYsMjUgQEAKICAgaWYgKChyZXRBZGRyICE9IE5VTEwpICYmIFVzZU5VTUFJbnRlcmxlYXZpbmcpIHsKICAgICBudW1hX21ha2VfZ2xvYmFsKHJldEFkZHIsIHNpemUpOwogICB9CisKKyAgLy8gVGhlIG1lbW9yeSBpcyBjb21taXR0ZWQKKyAgYWRkcmVzcyBwYyA9IENBTExFUl9QQzsKKyAgTWVtVHJhY2tlcjo6cmVjb3JkX3ZpcnR1YWxfbWVtb3J5X3Jlc2VydmUoKGFkZHJlc3MpcmV0QWRkciwgc2l6ZSwgcGMpOworICBNZW1UcmFja2VyOjpyZWNvcmRfdmlydHVhbF9tZW1vcnlfY29tbWl0KChhZGRyZXNzKXJldEFkZHIsIHNpemUsIHBjKTsKKwogICByZXR1cm4gcmV0QWRkcjsKIH0KIAogYm9vbCBvczo6cmVsZWFzZV9tZW1vcnlfc3BlY2lhbChjaGFyKiBiYXNlLCBzaXplX3QgYnl0ZXMpIHsKICAgLy8gZGV0YWNoaW5nIHRoZSBTSE0gc2VnbWVudCB3aWxsIGFsc28gZGVsZXRlIGl0LCBzZWUgcmVzZXJ2ZV9tZW1vcnlfc3BlY2lhbCgpCiAgIGludCByc2x0ID0gc2htZHQoYmFzZSk7Ci0gIHJldHVybiByc2x0ID09IDA7CisgIGlmIChyc2x0ID09IDApIHsKKyAgICBNZW1UcmFja2VyOjpyZWNvcmRfdmlydHVhbF9tZW1vcnlfdW5jb21taXQoKGFkZHJlc3MpYmFzZSwgYnl0ZXMpOworICAgIE1lbVRyYWNrZXI6OnJlY29yZF92aXJ0dWFsX21lbW9yeV9yZWxlYXNlKChhZGRyZXNzKWJhc2UsIGJ5dGVzKTsKKyAgICByZXR1cm4gdHJ1ZTsKKyAgfSBlbHNlIHsKKyAgIHJldHVybiBmYWxzZTsKKyAgfQogfQogCiBzaXplX3Qgb3M6OmxhcmdlX3BhZ2Vfc2l6ZSgpIHsKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL29zL3dpbmRvd3Mvdm0vb3Nfd2luZG93cy5jcHAgYi9ob3RzcG90L3NyYy9vcy93aW5kb3dzL3ZtL29zX3dpbmRvd3MuY3BwCmluZGV4IDNlOWYyY2QuLjVhMDAwNTMgMTAwNjQ0Ci0tLSBhL2hvdHNwb3Qvc3JjL29zL3dpbmRvd3Mvdm0vb3Nfd2luZG93cy5jcHAKKysrIGIvaG90c3BvdC9zcmMvb3Mvd2luZG93cy92bS9vc193aW5kb3dzLmNwcApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgInJ1bnRpbWUvdGhyZWFkQ3JpdGljYWwuaHBwIgogI2luY2x1ZGUgInJ1bnRpbWUvdGltZXIuaHBwIgogI2luY2x1ZGUgInNlcnZpY2VzL2F0dGFjaExpc3RlbmVyLmhwcCIKKyNpbmNsdWRlICJzZXJ2aWNlcy9tZW1UcmFja2VyLmhwcCIKICNpbmNsdWRlICJzZXJ2aWNlcy9ydW50aW1lU2VydmljZS5ocHAiCiAjaW5jbHVkZSAidGhyZWFkX3dpbmRvd3MuaW5saW5lLmhwcCIKICNpbmNsdWRlICJ1dGlsaXRpZXMvZGVjb2Rlci5ocHAiCkBAIC0yODA4LDcgKzI4MDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQUdFX1JFQURXUklURSk7CiAgIC8vIElmIHJlc2VydmF0aW9uIGZhaWxlZCwgcmV0dXJuIE5VTEwKICAgaWYgKHBfYnVmID09IE5VTEwpIHJldHVybiBOVUxMOwotCisgIE1lbVRyYWNrZXI6OnJlY29yZF92aXJ0dWFsX21lbW9yeV9yZXNlcnZlKChhZGRyZXNzKXBfYnVmLCBzaXplX29mX3Jlc2VydmUsIENBTExFUl9QQyk7CiAgIG9zOjpyZWxlYXNlX21lbW9yeShwX2J1ZiwgYnl0ZXMgKyBjaHVua19zaXplKTsKIAogICAvLyB3ZSBzdGlsbCBuZWVkIHRvIHJvdW5kIHVwIHRvIGEgcGFnZSBib3VuZGFyeSAoaW4gY2FzZSB3ZSBhcmUgdXNpbmcgbGFyZ2UgcGFnZXMpCkBAIC0yODcwLDYgKzI4NzEsMTEgQEAKICAgICAgIGlmIChuZXh0X2FsbG9jX2FkZHIgPiBwX2J1ZikgewogICAgICAgICAvLyBTb21lIG1lbW9yeSB3YXMgY29tbWl0dGVkIHNvIHJlbGVhc2UgaXQuCiAgICAgICAgIHNpemVfdCBieXRlc190b19yZWxlYXNlID0gYnl0ZXMgLSBieXRlc19yZW1haW5pbmc7CisgICAgICAgIC8vIE5NVCBoYXMgeWV0IHRvIHJlY29yZCBhbnkgaW5kaXZpZHVhbCBibG9ja3MsIHNvIGl0CisgICAgICAgIC8vIG5lZWQgdG8gY3JlYXRlIGEgZHVtbXkgJ3Jlc2VydmUnIHJlY29yZCB0byBtYXRjaAorICAgICAgICAvLyB0aGUgcmVsZWFzZS4KKyAgICAgICAgTWVtVHJhY2tlcjo6cmVjb3JkX3ZpcnR1YWxfbWVtb3J5X3Jlc2VydmUoKGFkZHJlc3MpcF9idWYsCisgICAgICAgICAgYnl0ZXNfdG9fcmVsZWFzZSwgQ0FMTEVSX1BDKTsKICAgICAgICAgb3M6OnJlbGVhc2VfbWVtb3J5KHBfYnVmLCBieXRlc190b19yZWxlYXNlKTsKICAgICAgIH0KICNpZmRlZiBBU1NFUlQKQEAgLTI4ODEsMTAgKzI4ODcsMTkgQEAKICNlbmRpZgogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorCiAgICAgYnl0ZXNfcmVtYWluaW5nIC09IGJ5dGVzX3RvX3JxOwogICAgIG5leHRfYWxsb2NfYWRkciArPSBieXRlc190b19ycTsKICAgICBjb3VudCsrOwogICB9CisgIC8vIEFsdGhvdWdoIHRoZSBtZW1vcnkgaXMgYWxsb2NhdGVkIGluZGl2aWR1YWxseSwgaXQgaXMgcmV0dXJuZWQgYXMgb25lLgorICAvLyBOTVQgcmVjb3JkcyBpdCBhcyBvbmUgYmxvY2suCisgIGFkZHJlc3MgcGMgPSBDQUxMRVJfUEM7CisgIE1lbVRyYWNrZXI6OnJlY29yZF92aXJ0dWFsX21lbW9yeV9yZXNlcnZlKChhZGRyZXNzKXBfYnVmLCBieXRlcywgcGMpOworICBpZiAoKGZsYWdzICYgTUVNX0NPTU1JVCkgIT0gMCkgeworICAgIE1lbVRyYWNrZXI6OnJlY29yZF92aXJ0dWFsX21lbW9yeV9jb21taXQoKGFkZHJlc3MpcF9idWYsIGJ5dGVzLCBwYyk7CisgIH0KKwogICAvLyBtYWRlIGl0IHRoaXMgZmFyLCBzdWNjZXNzCiAgIHJldHVybiBwX2J1ZjsKIH0KQEAgLTMwNzEsMTEgKzMwODYsMjAgQEAKICAgICAvLyBub3JtYWwgcG9saWN5IGp1c3QgYWxsb2NhdGUgaXQgYWxsIGF0IG9uY2UKICAgICBEV09SRCBmbGFnID0gTUVNX1JFU0VSVkUgfCBNRU1fQ09NTUlUIHwgTUVNX0xBUkdFX1BBR0VTOwogICAgIGNoYXIgKiByZXMgPSAoY2hhciAqKVZpcnR1YWxBbGxvYyhOVUxMLCBieXRlcywgZmxhZywgcHJvdCk7CisgICAgaWYgKHJlcyAhPSBOVUxMKSB7CisgICAgICBhZGRyZXNzIHBjID0gQ0FMTEVSX1BDOworICAgICAgTWVtVHJhY2tlcjo6cmVjb3JkX3ZpcnR1YWxfbWVtb3J5X3Jlc2VydmUoKGFkZHJlc3MpcmVzLCBieXRlcywgcGMpOworICAgICAgTWVtVHJhY2tlcjo6cmVjb3JkX3ZpcnR1YWxfbWVtb3J5X2NvbW1pdCgoYWRkcmVzcylyZXMsIGJ5dGVzLCBwYyk7CisgICAgfQorCiAgICAgcmV0dXJuIHJlczsKICAgfQogfQogCiBib29sIG9zOjpyZWxlYXNlX21lbW9yeV9zcGVjaWFsKGNoYXIqIGJhc2UsIHNpemVfdCBieXRlcykgeworICBhc3NlcnQoYmFzZSAhPSBOVUxMLCAiU2FuaXR5IGNoZWNrIik7CisgIC8vIE1lbW9yeSBhbGxvY2F0ZWQgdmlhIHJlc2VydmVfbWVtb3J5X3NwZWNpYWwoKSBpcyBjb21taXR0ZWQKKyAgTWVtVHJhY2tlcjo6cmVjb3JkX3ZpcnR1YWxfbWVtb3J5X3VuY29tbWl0KChhZGRyZXNzKWJhc2UsIGJ5dGVzKTsKICAgcmV0dXJuIHJlbGVhc2VfbWVtb3J5KGJhc2UsIGJ5dGVzKTsKIH0KIApkaWZmIC0tZ2l0IGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vY29uY3VycmVudE1hcmtTd2VlcC9jb25jdXJyZW50TWFya1N3ZWVwR2VuZXJhdGlvbi5jcHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9jb25jdXJyZW50TWFya1N3ZWVwL2NvbmN1cnJlbnRNYXJrU3dlZXBHZW5lcmF0aW9uLmNwcAppbmRleCBkM2M5M2I3Li5hNzU2MTVhIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9jb25jdXJyZW50TWFya1N3ZWVwL2NvbmN1cnJlbnRNYXJrU3dlZXBHZW5lcmF0aW9uLmNwcAorKysgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9jb25jdXJyZW50TWFya1N3ZWVwL2NvbmN1cnJlbnRNYXJrU3dlZXBHZW5lcmF0aW9uLmNwcApAQCAtNTkwMyw2ICs1OTAzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNtc0tlZXBBbGl2ZUNsb3N1cmUsIGZhbHNlIC8qICFwcmVjbGVhbiAqLyk7CiAgIHsKICAgICBHQ1RyYWNlVGltZSB0KCJ3ZWFrIHJlZnMgcHJvY2Vzc2luZyIsIFByaW50R0NEZXRhaWxzLCBmYWxzZSwgX2djX3RpbWVyX2NtKTsKKworICAgIFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzIHN0YXRzOwogICAgIGlmIChycC0+cHJvY2Vzc2luZ19pc19tdCgpKSB7CiAgICAgICAvLyBTZXQgdGhlIGRlZ3JlZSBvZiBNVCBoZXJlLiAgSWYgdGhlIGRpc2NvdmVyeSBpcyBkb25lIE1ULCB0aGVyZQogICAgICAgLy8gbWF5IGhhdmUgYmVlbiBhIGRpZmZlcmVudCBudW1iZXIgb2YgdGhyZWFkcyBkb2luZyB0aGUgZGlzY292ZXJ5CkBAIC01OTIxLDE4ICs1OTIzLDIwIEBACiAgICAgICB9CiAgICAgICBycC0+c2V0X2FjdGl2ZV9tdF9kZWdyZWUoYWN0aXZlX3dvcmtlcnMpOwogICAgICAgQ01TUmVmUHJvY1Rhc2tFeGVjdXRvciB0YXNrX2V4ZWN1dG9yKCp0aGlzKTsKLSAgICAgIHJwLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygmX2lzX2FsaXZlX2Nsb3N1cmUsCisgICAgICBzdGF0cyA9IHJwLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygmX2lzX2FsaXZlX2Nsb3N1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNtc0tlZXBBbGl2ZUNsb3N1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNtc0RyYWluTWFya2luZ1N0YWNrQ2xvc3VyZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGFza19leGVjdXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2NfdGltZXJfY20pOwogICAgIH0gZWxzZSB7Ci0gICAgICBycC0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoJl9pc19hbGl2ZV9jbG9zdXJlLAorICAgICAgc3RhdHMgPSBycC0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoJl9pc19hbGl2ZV9jbG9zdXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbXNLZWVwQWxpdmVDbG9zdXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjbXNEcmFpbk1hcmtpbmdTdGFja0Nsb3N1cmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2NfdGltZXJfY20pOwogICAgIH0KKyAgICBfZ2NfdHJhY2VyX2NtLT5yZXBvcnRfZ2NfcmVmZXJlbmNlX3N0YXRzKHN0YXRzKTsKKwogICAgIHZlcmlmeV93b3JrX3N0YWNrc19lbXB0eSgpOwogICB9CiAKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL2cxL2NvbmN1cnJlbnRNYXJrLmNwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL2cxL2NvbmN1cnJlbnRNYXJrLmNwcAppbmRleCAwNWEyY2I2Li4zMWMyYTNmIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9nMS9jb25jdXJyZW50TWFyay5jcHAKKysrIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vZzEvY29uY3VycmVudE1hcmsuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vZzEvaGVhcFJlZ2lvblNlcS5pbmxpbmUuaHBwIgogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC92bUdDT3BlcmF0aW9ucy5ocHAiCiAjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVGltZXIuaHBwIgorI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nY1RyYWNlLmhwcCIKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUcmFjZVRpbWUuaHBwIgogI2luY2x1ZGUgIm1lbW9yeS9nZW5Pb3BDbG9zdXJlcy5pbmxpbmUuaHBwIgogI2luY2x1ZGUgIm1lbW9yeS9yZWZlcmVuY2VQb2xpY3kuaHBwIgpAQCAtMjMyNSw2ICsyMzI2LDcgQEAKICAgICBHMUNNUmVmUHJvY1Rhc2tFeGVjdXRvciBwYXJfdGFza19leGVjdXRvcihnMWgsIHRoaXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZzFoLT53b3JrZXJzKCksIGFjdGl2ZV93b3JrZXJzKTsKIAorICAgIFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzIHN0YXRzOwogICAgIGlmIChycC0+cHJvY2Vzc2luZ19pc19tdCgpKSB7CiAgICAgICAvLyBTZXQgdGhlIGRlZ3JlZSBvZiBNVCBoZXJlLiAgSWYgdGhlIGRpc2NvdmVyeSBpcyBkb25lIE1ULCB0aGVyZQogICAgICAgLy8gbWF5IGhhdmUgYmVlbiBhIGRpZmZlcmVudCBudW1iZXIgb2YgdGhyZWFkcyBkb2luZyB0aGUgZGlzY292ZXJ5CkBAIC0yMzMzLDcgKzIzMzUsNyBAQAogICAgICAgLy8gYmFsYW5jZV9hbGxfcXVldWVzKCkgYW5kIGJhbGFuY2VfcXVldWVzKCkpLgogICAgICAgcnAtPnNldF9hY3RpdmVfbXRfZGVncmVlKGFjdGl2ZV93b3JrZXJzKTsKIAotICAgICAgcnAtPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKCZnMV9pc19hbGl2ZSwKKyAgICAgIHN0YXRzID0gcnAtPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKCZnMV9pc19hbGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmcxX2tlZXBfYWxpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZnMV9kcmFpbl9tYXJrX3N0YWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyX3Rhc2tfZXhlY3V0b3IsCkBAIC0yMzQzLDEzICsyMzQ1LDE1IEBACiAgICAgICAvLyB3aWxsIHNldCB0aGUgaGFzX292ZXJmbG93biBmbGFnIGlmIHdlIG92ZXJmbG93IHRoZSBnbG9iYWwgbWFya2luZwogICAgICAgLy8gc3RhY2suCiAgICAgfSBlbHNlIHsKLSAgICAgIHJwLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygmZzFfaXNfYWxpdmUsCisgICAgICBzdGF0cyA9IHJwLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygmZzFfaXNfYWxpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmcxX2tlZXBfYWxpdmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmcxX2RyYWluX21hcmtfc3RhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnMWgtPmdjX3RpbWVyX2NtKCkpOwogICAgIH0KIAorICAgIGcxaC0+Z2NfdHJhY2VyX2NtKCktPnJlcG9ydF9nY19yZWZlcmVuY2Vfc3RhdHMoc3RhdHMpOworCiAgICAgYXNzZXJ0KF9tYXJrU3RhY2sub3ZlcmZsb3coKSB8fCBfbWFya1N0YWNrLmlzRW1wdHkoKSwKICAgICAgICAgICAgICJtYXJrIHN0YWNrIHNob3VsZCBiZSBlbXB0eSAodW5sZXNzIGl0IG92ZXJmbG93ZWQpIik7CiAgICAgaWYgKF9tYXJrU3RhY2sub3ZlcmZsb3coKSkgewpkaWZmIC0tZ2l0IGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vZzEvZzFDb2xsZWN0ZWRIZWFwLmNwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL2cxL2cxQ29sbGVjdGVkSGVhcC5jcHAKaW5kZXggZGYwNmYwNS4uNTAxMTJiZCAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vZzEvZzFDb2xsZWN0ZWRIZWFwLmNwcAorKysgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9nMS9nMUNvbGxlY3RlZEhlYXAuY3BwCkBAIC01NTg0LDIyICs1NTg0LDI4IEBACiAgIC8vIFNldHVwIHRoZSBzb2Z0IHJlZnMgcG9saWN5Li4uCiAgIHJwLT5zZXR1cF9wb2xpY3koZmFsc2UpOwogCisgIFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzIHN0YXRzOwogICBpZiAoIXJwLT5wcm9jZXNzaW5nX2lzX210KCkpIHsKICAgICAvLyBTZXJpYWwgcmVmZXJlbmNlIHByb2Nlc3NpbmcuLi4KLSAgICBycC0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoJmlzX2FsaXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2VlcF9hbGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRyYWluX3F1ZXVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2NfdGltZXJfc3R3KTsKKyAgICBzdGF0cyA9IHJwLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygmaXNfYWxpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtlZXBfYWxpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRyYWluX3F1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2djX3RpbWVyX3N0dyk7CiAgIH0gZWxzZSB7CiAgICAgLy8gUGFyYWxsZWwgcmVmZXJlbmNlIHByb2Nlc3NpbmcKICAgICBhc3NlcnQocnAtPm51bV9xKCkgPT0gbm9fb2ZfZ2Nfd29ya2VycywgInNhbml0eSIpOwogICAgIGFzc2VydChub19vZl9nY193b3JrZXJzIDw9IHJwLT5tYXhfbnVtX3EoKSwgInNhbml0eSIpOwogCiAgICAgRzFTVFdSZWZQcm9jVGFza0V4ZWN1dG9yIHBhcl90YXNrX2V4ZWN1dG9yKHRoaXMsIHdvcmtlcnMoKSwgX3Rhc2tfcXVldWVzLCBub19vZl9nY193b3JrZXJzKTsKLSAgICBycC0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoJmlzX2FsaXZlLCAma2VlcF9hbGl2ZSwgJmRyYWluX3F1ZXVlLCAmcGFyX3Rhc2tfZXhlY3V0b3IsIF9nY190aW1lcl9zdHcpOworICAgIHN0YXRzID0gcnAtPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKCZpc19hbGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAma2VlcF9hbGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHJhaW5fcXVldWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBhcl90YXNrX2V4ZWN1dG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nY190aW1lcl9zdHcpOwogICB9CiAKKyAgX2djX3RyYWNlcl9zdHctPnJlcG9ydF9nY19yZWZlcmVuY2Vfc3RhdHMoc3RhdHMpOwogICAvLyBXZSBoYXZlIGNvbXBsZXRlZCBjb3B5aW5nIGFueSBuZWNlc3NhcnkgbGl2ZSByZWZlcmVudCBvYmplY3RzCiAgIC8vICh0aGF0IHdlcmUgbm90IGNvcGllZCBkdXJpbmcgdGhlIGFjdHVhbCBwYXVzZSkgc28gd2UgY2FuCiAgIC8vIHJldGlyZSBhbnkgYWN0aXZlIGFsbG9jIGJ1ZmZlcnMKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL2cxL2cxQ29sbGVjdGVkSGVhcC5ocHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9nMS9nMUNvbGxlY3RlZEhlYXAuaHBwCmluZGV4IDAxY2JiOTguLjM2ZGZlZGYgMTAwNjQ0Ci0tLSBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL2cxL2cxQ29sbGVjdGVkSGVhcC5ocHAKKysrIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vZzEvZzFDb2xsZWN0ZWRIZWFwLmhwcApAQCAtMTE3OCw2ICsxMTc4LDcgQEAKICAgUmVmZXJlbmNlUHJvY2Vzc29yKiByZWZfcHJvY2Vzc29yX2NtKCkgY29uc3QgeyByZXR1cm4gX3JlZl9wcm9jZXNzb3JfY207IH0KIAogICBDb25jdXJyZW50R0NUaW1lciogZ2NfdGltZXJfY20oKSBjb25zdCB7IHJldHVybiBfZ2NfdGltZXJfY207IH0KKyAgRzFPbGRUcmFjZXIqIGdjX3RyYWNlcl9jbSgpIGNvbnN0IHsgcmV0dXJuIF9nY190cmFjZXJfY207IH0KIAogICB2aXJ0dWFsIHNpemVfdCBjYXBhY2l0eSgpIGNvbnN0OwogICB2aXJ0dWFsIHNpemVfdCB1c2VkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9nMS9nMU1hcmtTd2VlcC5jcHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9nMS9nMU1hcmtTd2VlcC5jcHAKaW5kZXggMDIxNGE1ZS4uMTc2OGNkOCAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vZzEvZzFNYXJrU3dlZXAuY3BwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL2cxL2cxTWFya1N3ZWVwLmNwcApAQCAtMTQ4LDExICsxNDgsMTMgQEAKICAgYXNzZXJ0KHJwID09IEcxQ29sbGVjdGVkSGVhcDo6aGVhcCgpLT5yZWZfcHJvY2Vzc29yX3N0dygpLCAiU2FuaXR5Iik7CiAKICAgcnAtPnNldHVwX3BvbGljeShjbGVhcl9hbGxfc29mdHJlZnMpOwotICBycC0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoJkdlbk1hcmtTd2VlcDo6aXNfYWxpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR2VuTWFya1N3ZWVwOjprZWVwX2FsaXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdlbk1hcmtTd2VlcDo6Zm9sbG93X3N0YWNrX2Nsb3N1cmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NfdGltZXIoKSk7CisgIGNvbnN0IFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzJiBzdGF0cyA9CisgICAgcnAtPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKCZHZW5NYXJrU3dlZXA6OmlzX2FsaXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR2VuTWFya1N3ZWVwOjprZWVwX2FsaXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR2VuTWFya1N3ZWVwOjpmb2xsb3dfc3RhY2tfY2xvc3VyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NfdGltZXIoKSk7CisgIGdjX3RyYWNlcigpLT5yZXBvcnRfZ2NfcmVmZXJlbmNlX3N0YXRzKHN0YXRzKTsKIAogICAvLyBGb2xsb3cgc3lzdGVtIGRpY3Rpb25hcnkgcm9vdHMgYW5kIHVubG9hZCBjbGFzc2VzCiAgIGJvb2wgcHVyZ2VkX2NsYXNzID0gU3lzdGVtRGljdGlvbmFyeTo6ZG9fdW5sb2FkaW5nKCZHZW5NYXJrU3dlZXA6OmlzX2FsaXZlKTsKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3Bhck5ldy9wYXJOZXdHZW5lcmF0aW9uLmNwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3Bhck5ldy9wYXJOZXdHZW5lcmF0aW9uLmNwcAppbmRleCA0NzEzY2ZhLi5lMzAyYWQwIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJOZXcvcGFyTmV3R2VuZXJhdGlvbi5jcHAKKysrIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vcGFyTmV3L3Bhck5ld0dlbmVyYXRpb24uY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVGltZXIuaHBwIgogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nY1RyYWNlLmhwcCIKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUcmFjZVRpbWUuaHBwIgorI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9wcm9tb3Rpb25GYWlsZWRJbmZvLmhwcCIKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvc3BhY2VEZWNvcmF0b3IuaHBwIgogI2luY2x1ZGUgIm1lbW9yeS9kZWZOZXdHZW5lcmF0aW9uLmlubGluZS5ocHAiCiAjaW5jbHVkZSAibWVtb3J5L2dlbkNvbGxlY3RlZEhlYXAuaHBwIgpAQCAtNzksNyArODAsNiBAQAogICAgICAgICAgICAgICAgICAgICAgIHdvcmtfcXVldWVfc2V0XywgJnRlcm1fKSwKICAgX2lzX2FsaXZlX2Nsb3N1cmUoZ2VuXyksIF9zY2FuX3dlYWtfcmVmX2Nsb3N1cmUoZ2VuXywgdGhpcyksCiAgIF9rZWVwX2FsaXZlX2Nsb3N1cmUoJl9zY2FuX3dlYWtfcmVmX2Nsb3N1cmUpLAotICBfcHJvbW90aW9uX2ZhaWx1cmVfc2l6ZSgwKSwKICAgX3N0cm9uZ19yb290c190aW1lKDAuMCksIF90ZXJtX3RpbWUoMC4wKQogewogICAjaWYgVEFTS1FVRVVFX1NUQVRTCkBAIC0yODMsMTMgKzI4MywxMCBAQAogICB9CiB9CiAKLXZvaWQgUGFyU2NhblRocmVhZFN0YXRlOjpwcmludF9hbmRfY2xlYXJfcHJvbW90aW9uX2ZhaWx1cmVfc2l6ZSgpIHsKLSAgaWYgKF9wcm9tb3Rpb25fZmFpbHVyZV9zaXplICE9IDApIHsKLSAgICBpZiAoUHJpbnRQcm9tb3Rpb25GYWlsdXJlKSB7Ci0gICAgICBnY2xvZ19vcl90dHktPnByaW50KCIgKCVkOiBwcm9tb3Rpb24gZmFpbHVyZSBzaXplID0gIiBTSVpFX0ZPUk1BVCAiKSAiLAotICAgICAgICBfdGhyZWFkX251bSwgX3Byb21vdGlvbl9mYWlsdXJlX3NpemUpOwotICAgIH0KLSAgICBfcHJvbW90aW9uX2ZhaWx1cmVfc2l6ZSA9IDA7Cit2b2lkIFBhclNjYW5UaHJlYWRTdGF0ZTo6cHJpbnRfcHJvbW90aW9uX2ZhaWx1cmVfc2l6ZSgpIHsKKyAgaWYgKF9wcm9tb3Rpb25fZmFpbGVkX2luZm8ucHJvbW90aW9uX2ZhaWxlZCgpICYmIFByaW50UHJvbW90aW9uRmFpbHVyZSkgeworICAgIGdjbG9nX29yX3R0eS0+cHJpbnQoIiAoJWQ6IHByb21vdGlvbiBmYWlsdXJlIHNpemUgPSAiIFNJWkVfRk9STUFUICIpICIsCisgICAgICAgICAgICAgICAgICAgICAgICBfdGhyZWFkX251bSwgX3Byb21vdGlvbl9mYWlsZWRfaW5mby5maXJzdF9zaXplKCkpOwogICB9CiB9CiAKQEAgLTMwOSw2ICszMDYsNyBAQAogCiAgIGlubGluZSBQYXJTY2FuVGhyZWFkU3RhdGUmIHRocmVhZF9zdGF0ZShpbnQgaSk7CiAKKyAgdm9pZCB0cmFjZV9wcm9tb3Rpb25fZmFpbGVkKFlvdW5nR0NUcmFjZXImIGdjX3RyYWNlcik7CiAgIHZvaWQgcmVzZXQoaW50IGFjdGl2ZV93b3JrZXJzLCBib29sIHByb21vdGlvbl9mYWlsZWQpOwogICB2b2lkIGZsdXNoKCk7CiAKQEAgLTM1NywxMyArMzU1LDIxIEBACiAgIHJldHVybiAoKFBhclNjYW5UaHJlYWRTdGF0ZSopX2RhdGEpW2ldOwogfQogCit2b2lkIFBhclNjYW5UaHJlYWRTdGF0ZVNldDo6dHJhY2VfcHJvbW90aW9uX2ZhaWxlZChZb3VuZ0dDVHJhY2VyJiBnY190cmFjZXIpIHsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGgoKTsgKytpKSB7CisgICAgaWYgKHRocmVhZF9zdGF0ZShpKS5wcm9tb3Rpb25fZmFpbGVkKCkpIHsKKyAgICAgIGdjX3RyYWNlci5yZXBvcnRfcHJvbW90aW9uX2ZhaWxlZCh0aHJlYWRfc3RhdGUoaSkucHJvbW90aW9uX2ZhaWxlZF9pbmZvKCkpOworICAgICAgdGhyZWFkX3N0YXRlKGkpLnByb21vdGlvbl9mYWlsZWRfaW5mbygpLnJlc2V0KCk7CisgICAgfQorICB9Cit9CiAKIHZvaWQgUGFyU2NhblRocmVhZFN0YXRlU2V0OjpyZXNldChpbnQgYWN0aXZlX3RocmVhZHMsIGJvb2wgcHJvbW90aW9uX2ZhaWxlZCkKIHsKICAgX3Rlcm0ucmVzZXRfZm9yX3JldXNlKGFjdGl2ZV90aHJlYWRzKTsKICAgaWYgKHByb21vdGlvbl9mYWlsZWQpIHsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aCgpOyArK2kpIHsKLSAgICAgIHRocmVhZF9zdGF0ZShpKS5wcmludF9hbmRfY2xlYXJfcHJvbW90aW9uX2ZhaWx1cmVfc2l6ZSgpOworICAgICAgdGhyZWFkX3N0YXRlKGkpLnByaW50X3Byb21vdGlvbl9mYWlsdXJlX3NpemUoKTsKICAgICB9CiAgIH0KIH0KQEAgLTg3NCw2ICs4ODAsOCBAQAogfQogCiAKKy8vIEEgR2VuZXJhdGlvbiB0aGF0IGRvZXMgcGFyYWxsZWwgeW91bmctZ2VuIGNvbGxlY3Rpb24uCisKIGJvb2wgUGFyTmV3R2VuZXJhdGlvbjo6X2F2b2lkX3Byb21vdGlvbl91bmRvID0gZmFsc2U7CiAKIHZvaWQgUGFyTmV3R2VuZXJhdGlvbjo6YWRqdXN0X2Rlc2lyZWRfdGVudXJpbmdfdGhyZXNob2xkKCkgewpAQCAtODgyLDcgKzg5MCwzMCBAQAogICAgIGFnZV90YWJsZSgpLT5jb21wdXRlX3RlbnVyaW5nX3RocmVzaG9sZCh0bygpLT5jYXBhY2l0eSgpL0hlYXBXb3JkU2l6ZSk7CiB9CiAKLS8vIEEgR2VuZXJhdGlvbiB0aGF0IGRvZXMgcGFyYWxsZWwgeW91bmctZ2VuIGNvbGxlY3Rpb24uCit2b2lkIFBhck5ld0dlbmVyYXRpb246OmhhbmRsZV9wcm9tb3Rpb25fZmFpbGVkKEdlbkNvbGxlY3RlZEhlYXAqIGdjaCwgUGFyU2NhblRocmVhZFN0YXRlU2V0JiB0aHJlYWRfc3RhdGVfc2V0LCBQYXJOZXdUcmFjZXImIGdjX3RyYWNlcikgeworICBhc3NlcnQoX3Byb21vX2ZhaWx1cmVfc2Nhbl9zdGFjay5pc19lbXB0eSgpLCAicG9zdCBjb25kaXRpb24iKTsKKyAgX3Byb21vX2ZhaWx1cmVfc2Nhbl9zdGFjay5jbGVhcih0cnVlKTsgLy8gQ2xlYXIgY2FjaGVkIHNlZ21lbnRzLgorCisgIHJlbW92ZV9mb3J3YXJkaW5nX3BvaW50ZXJzKCk7CisgIGlmIChQcmludEdDRGV0YWlscykgeworICAgIGdjbG9nX29yX3R0eS0+cHJpbnQoIiAocHJvbW90aW9uIGZhaWxlZCkiKTsKKyAgfQorICAvLyBBbGwgdGhlIHNwYWNlcyBhcmUgaW4gcGxheSBmb3IgbWFyay1zd2VlcC4KKyAgc3dhcF9zcGFjZXMoKTsgIC8vIE1ha2UgbGlmZSBzaW1wbGVyIGZvciBDTVMgfHwgcmVzY2FuOyBzZWUgNjQ4MzY5MC4KKyAgZnJvbSgpLT5zZXRfbmV4dF9jb21wYWN0aW9uX3NwYWNlKHRvKCkpOworICBnY2gtPnNldF9pbmNyZW1lbnRhbF9jb2xsZWN0aW9uX2ZhaWxlZCgpOworICAvLyBJbmZvcm0gdGhlIG5leHQgZ2VuZXJhdGlvbiB0aGF0IGEgcHJvbW90aW9uIGZhaWx1cmUgb2NjdXJyZWQuCisgIF9uZXh0X2dlbi0+cHJvbW90aW9uX2ZhaWx1cmVfb2NjdXJyZWQoKTsKKworICAvLyBUcmFjZSBwcm9tb3Rpb24gZmFpbHVyZSBpbiB0aGUgcGFyYWxsZWwgR0MgdGhyZWFkcworICB0aHJlYWRfc3RhdGVfc2V0LnRyYWNlX3Byb21vdGlvbl9mYWlsZWQoZ2NfdHJhY2VyKTsKKyAgLy8gU2luZ2xlIHRocmVhZGVkIGNvZGUgbWF5IGhhdmUgcmVwb3J0ZWQgcHJvbW90aW9uIGZhaWx1cmUgdG8gdGhlIGdsb2JhbCBzdGF0ZQorICBpZiAoX3Byb21vdGlvbl9mYWlsZWRfaW5mby5wcm9tb3Rpb25fZmFpbGVkKCkpIHsKKyAgICBnY190cmFjZXIucmVwb3J0X3Byb21vdGlvbl9mYWlsZWQoX3Byb21vdGlvbl9mYWlsZWRfaW5mbyk7CisgIH0KKyAgLy8gUmVzZXQgdGhlIFByb21vdGlvbkZhaWx1cmVBTG90IGNvdW50ZXJzLgorICBOT1RfUFJPRFVDVChVbml2ZXJzZTo6aGVhcCgpLT5yZXNldF9wcm9tb3Rpb25fc2hvdWxkX2ZhaWwoKTspCit9CiAKIHZvaWQgUGFyTmV3R2VuZXJhdGlvbjo6Y29sbGVjdChib29sICAgZnVsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sICAgY2xlYXJfYWxsX3NvZnRfcmVmcywKQEAgLTkxNCw3ICs5NDUsNyBAQAogICAgIHNldF9hdm9pZF9wcm9tb3Rpb25fdW5kbyh0cnVlKTsKICAgfQogCi0gIC8vIElmIHRoZSBuZXh0IGdlbmVyYXRpb24gaXMgdG9vIGZ1bGwgdG8gYWNjb21vZGF0ZSB3b3JzdC1jYXNlIHByb21vdGlvbgorICAvLyBJZiB0aGUgbmV4dCBnZW5lcmF0aW9uIGlzIHRvbyBmdWxsIHRvIGFjY29tbW9kYXRlIHdvcnN0LWNhc2UgcHJvbW90aW9uCiAgIC8vIGZyb20gdGhpcyBnZW5lcmF0aW9uLCBwYXNzIG9uIGNvbGxlY3Rpb247IGxldCB0aGUgbmV4dCBnZW5lcmF0aW9uCiAgIC8vIGRvIGl0LgogICBpZiAoIWNvbGxlY3Rpb25fYXR0ZW1wdF9pc19zYWZlKCkpIHsKQEAgLTk4NywxOSArMTAxOCwyMSBAQAogICBycC0+c2V0dXBfcG9saWN5KGNsZWFyX2FsbF9zb2Z0X3JlZnMpOwogICAvLyBDYW4gIHRoZSBtdF9kZWdyZWUgYmUgc2V0IGxhdGVyIChhdCBydW5fdGFzaygpIHRpbWUgd291bGQgYmUgYmVzdCk/CiAgIHJwLT5zZXRfYWN0aXZlX210X2RlZ3JlZShhY3RpdmVfd29ya2Vycyk7CisgIFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzIHN0YXRzOwogICBpZiAocnAtPnByb2Nlc3NpbmdfaXNfbXQoKSkgewogICAgIFBhck5ld1JlZlByb2NUYXNrRXhlY3V0b3IgdGFza19leGVjdXRvcigqdGhpcywgdGhyZWFkX3N0YXRlX3NldCk7Ci0gICAgcnAtPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKCZpc19hbGl2ZSwgJmtlZXBfYWxpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldmFjdWF0ZV9mb2xsb3dlcnMsICZ0YXNrX2V4ZWN1dG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2NfdGltZXIpOworICAgIHN0YXRzID0gcnAtPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKCZpc19hbGl2ZSwgJmtlZXBfYWxpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2YWN1YXRlX2ZvbGxvd2VycywgJnRhc2tfZXhlY3V0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2djX3RpbWVyKTsKICAgfSBlbHNlIHsKICAgICB0aHJlYWRfc3RhdGVfc2V0LmZsdXNoKCk7CiAgICAgZ2NoLT5zZXRfcGFyX3RocmVhZHMoMCk7ICAvLyAwID09PiBub24tcGFyYWxsZWwuCiAgICAgZ2NoLT5zYXZlX21hcmtzKCk7Ci0gICAgcnAtPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKCZpc19hbGl2ZSwgJmtlZXBfYWxpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZldmFjdWF0ZV9mb2xsb3dlcnMsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nY190aW1lcik7CisgICAgc3RhdHMgPSBycC0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoJmlzX2FsaXZlLCAma2VlcF9hbGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXZhY3VhdGVfZm9sbG93ZXJzLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9nY190aW1lcik7CiAgIH0KKyAgZ2NfdHJhY2VyLnJlcG9ydF9nY19yZWZlcmVuY2Vfc3RhdHMoc3RhdHMpOwogICBpZiAoIXByb21vdGlvbl9mYWlsZWQoKSkgewogICAgIC8vIFN3YXAgdGhlIHN1cnZpdm9yIHNwYWNlcy4KICAgICBlZGVuKCktPmNsZWFyKFNwYWNlRGVjb3JhdG9yOjpNYW5nbGUpOwpAQCAtMTAyMiwyMiArMTA1NSw3IEBACiAKICAgICBhc3NlcnQodG8oKS0+aXNfZW1wdHkoKSwgInRvIHNwYWNlIHNob3VsZCBiZSBlbXB0eSBub3ciKTsKICAgfSBlbHNlIHsKLSAgICBhc3NlcnQoX3Byb21vX2ZhaWx1cmVfc2Nhbl9zdGFjay5pc19lbXB0eSgpLCAicG9zdCBjb25kaXRpb24iKTsKLSAgICBfcHJvbW9fZmFpbHVyZV9zY2FuX3N0YWNrLmNsZWFyKHRydWUpOyAvLyBDbGVhciBjYWNoZWQgc2VnbWVudHMuCi0KLSAgICByZW1vdmVfZm9yd2FyZGluZ19wb2ludGVycygpOwotICAgIGlmIChQcmludEdDRGV0YWlscykgewotICAgICAgZ2Nsb2dfb3JfdHR5LT5wcmludCgiIChwcm9tb3Rpb24gZmFpbGVkKSIpOwotICAgIH0KLSAgICAvLyBBbGwgdGhlIHNwYWNlcyBhcmUgaW4gcGxheSBmb3IgbWFyay1zd2VlcC4KLSAgICBzd2FwX3NwYWNlcygpOyAgLy8gTWFrZSBsaWZlIHNpbXBsZXIgZm9yIENNUyB8fCByZXNjYW47IHNlZSA2NDgzNjkwLgotICAgIGZyb20oKS0+c2V0X25leHRfY29tcGFjdGlvbl9zcGFjZSh0bygpKTsKLSAgICBnY2gtPnNldF9pbmNyZW1lbnRhbF9jb2xsZWN0aW9uX2ZhaWxlZCgpOwotICAgIC8vIEluZm9ybSB0aGUgbmV4dCBnZW5lcmF0aW9uIHRoYXQgYSBwcm9tb3Rpb24gZmFpbHVyZSBvY2N1cnJlZC4KLSAgICBfbmV4dF9nZW4tPnByb21vdGlvbl9mYWlsdXJlX29jY3VycmVkKCk7Ci0KLSAgICAvLyBSZXNldCB0aGUgUHJvbW90aW9uRmFpbHVyZUFMb3QgY291bnRlcnMuCi0gICAgTk9UX1BST0RVQ1QoVW5pdmVyc2U6OmhlYXAoKS0+cmVzZXRfcHJvbW90aW9uX3Nob3VsZF9mYWlsKCk7KQorICAgIGhhbmRsZV9wcm9tb3Rpb25fZmFpbGVkKGdjaCwgdGhyZWFkX3N0YXRlX3NldCwgZ2NfdHJhY2VyKTsKICAgfQogICAvLyBzZXQgbmV3IGl0ZXJhdGlvbiBzYWZlIGxpbWl0IGZvciB0aGUgc3Vydml2b3Igc3BhY2VzCiAgIGZyb20oKS0+c2V0X2NvbmN1cnJlbnRfaXRlcmF0aW9uX3NhZmVfbGltaXQoZnJvbSgpLT50b3AoKSk7CkBAIC0xMTkzLDggKzEyMTEsNyBAQAogICAgICAgbmV3X29iaiA9IG9sZDsKIAogICAgICAgcHJlc2VydmVfbWFya19pZl9uZWNlc3Nhcnkob2xkLCBtKTsKLSAgICAgIC8vIExvZyB0aGUgc2l6ZSBvZiB0aGUgbWFpZGVuIHByb21vdGlvbiBmYWlsdXJlCi0gICAgICBwYXJfc2Nhbl9zdGF0ZS0+bG9nX3Byb21vdGlvbl9mYWlsdXJlKHN6KTsKKyAgICAgIHBhcl9zY2FuX3N0YXRlLT5yZWdpc3Rlcl9wcm9tb3Rpb25fZmFpbHVyZShzeik7CiAgICAgfQogCiAgICAgb2xkLT5mb3J3YXJkX3RvKG5ld19vYmopOwpAQCAtMTMwOSw4ICsxMzI2LDcgQEAKICAgICAgIGZhaWxlZF90b19wcm9tb3RlID0gdHJ1ZTsKIAogICAgICAgcHJlc2VydmVfbWFya19pZl9uZWNlc3Nhcnkob2xkLCBtKTsKLSAgICAgIC8vIExvZyB0aGUgc2l6ZSBvZiB0aGUgbWFpZGVuIHByb21vdGlvbiBmYWlsdXJlCi0gICAgICBwYXJfc2Nhbl9zdGF0ZS0+bG9nX3Byb21vdGlvbl9mYWlsdXJlKHN6KTsKKyAgICAgIHBhcl9zY2FuX3N0YXRlLT5yZWdpc3Rlcl9wcm9tb3Rpb25fZmFpbHVyZShzeik7CiAgICAgfQogICB9IGVsc2UgewogICAgIC8vIElzIGluIHRvLXNwYWNlOyBkbyBjb3B5aW5nIG91cnNlbHZlcy4KZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3Bhck5ldy9wYXJOZXdHZW5lcmF0aW9uLmhwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3Bhck5ldy9wYXJOZXdHZW5lcmF0aW9uLmhwcAppbmRleCBiOGEyZDFlLi41MzdhNmY3IDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJOZXcvcGFyTmV3R2VuZXJhdGlvbi5ocHAKKysrIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vcGFyTmV3L3Bhck5ld0dlbmVyYXRpb24uaHBwCkBAIC0yNSw3ICsyNSw5IEBACiAjaWZuZGVmIFNIQVJFX1ZNX0dDX0lNUExFTUVOVEFUSU9OX1BBUk5FV19QQVJORVdHRU5FUkFUSU9OX0hQUAogI2RlZmluZSBTSEFSRV9WTV9HQ19JTVBMRU1FTlRBVElPTl9QQVJORVdfUEFSTkVXR0VORVJBVElPTl9IUFAKIAorI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nY1RyYWNlLmhwcCIKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvcGFyR0NBbGxvY0J1ZmZlci5ocHAiCisjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL3Byb21vdGlvbkZhaWxlZEluZm8uaHBwIgogI2luY2x1ZGUgIm1lbW9yeS9kZWZOZXdHZW5lcmF0aW9uLmhwcCIKICNpbmNsdWRlICJ1dGlsaXRpZXMvdGFza3F1ZXVlLmhwcCIKIApAQCAtMTA1LDcgKzEwNyw3IEBACiAjZW5kaWYgLy8gVEFTS1FVRVVFX1NUQVRTCiAKICAgLy8gU3RhdHMgZm9yIHByb21vdGlvbiBmYWlsdXJlCi0gIHNpemVfdCBfcHJvbW90aW9uX2ZhaWx1cmVfc2l6ZTsKKyAgUHJvbW90aW9uRmFpbGVkSW5mbyBfcHJvbW90aW9uX2ZhaWxlZF9pbmZvOwogCiAgIC8vIFRpbWluZyBudW1iZXJzLgogICBkb3VibGUgX3N0YXJ0OwpAQCAtMTgwLDEzICsxODIsMTYgQEAKICAgdm9pZCB1bmRvX2FsbG9jX2luX3RvX3NwYWNlKEhlYXBXb3JkKiBvYmosIHNpemVfdCB3b3JkX3N6KTsKIAogICAvLyBQcm9tb3Rpb24gZmFpbHVyZSBzdGF0cwotICBzaXplX3QgcHJvbW90aW9uX2ZhaWx1cmVfc2l6ZSgpIHsgcmV0dXJuIHByb21vdGlvbl9mYWlsdXJlX3NpemUoKTsgfQotICB2b2lkIGxvZ19wcm9tb3Rpb25fZmFpbHVyZShzaXplX3Qgc3opIHsKLSAgICBpZiAoX3Byb21vdGlvbl9mYWlsdXJlX3NpemUgPT0gMCkgewotICAgICAgX3Byb21vdGlvbl9mYWlsdXJlX3NpemUgPSBzejsKLSAgICB9CisgIHZvaWQgcmVnaXN0ZXJfcHJvbW90aW9uX2ZhaWx1cmUoc2l6ZV90IHN6KSB7CisgICAgX3Byb21vdGlvbl9mYWlsZWRfaW5mby5yZWdpc3Rlcl9wcm9tb3Rpb25fZmFpbGVkKHN6KTsKICAgfQotICB2b2lkIHByaW50X2FuZF9jbGVhcl9wcm9tb3Rpb25fZmFpbHVyZV9zaXplKCk7CisgIFByb21vdGlvbkZhaWxlZEluZm8mIHByb21vdGlvbl9mYWlsZWRfaW5mbygpIHsKKyAgICByZXR1cm4gX3Byb21vdGlvbl9mYWlsZWRfaW5mbzsKKyAgfQorICBib29sIHByb21vdGlvbl9mYWlsZWQoKSB7CisgICAgcmV0dXJuIF9wcm9tb3Rpb25fZmFpbGVkX2luZm8ucHJvbW90aW9uX2ZhaWxlZCgpOworICB9CisgIHZvaWQgcHJpbnRfcHJvbW90aW9uX2ZhaWx1cmVfc2l6ZSgpOwogCiAjaWYgVEFTS1FVRVVFX1NUQVRTCiAgIFRhc2tRdWV1ZVN0YXRzICYgdGFza3F1ZXVlX3N0YXRzKCkgY29uc3QgeyByZXR1cm4gX3dvcmtfcXVldWUtPnN0YXRzOyB9CkBAIC0zMzcsNiArMzQyLDggQEAKICAgLy8gd29yZCBiZWluZyBvdmVyd3JpdHRlbiB3aXRoIGEgc2VsZi1mb3J3YXJkaW5nLXBvaW50ZXIuCiAgIHZvaWQgcHJlc2VydmVfbWFya19pZl9uZWNlc3Nhcnkob29wIG9iaiwgbWFya09vcCBtKTsKIAorICB2b2lkIGhhbmRsZV9wcm9tb3Rpb25fZmFpbGVkKEdlbkNvbGxlY3RlZEhlYXAqIGdjaCwgUGFyU2NhblRocmVhZFN0YXRlU2V0JiB0aHJlYWRfc3RhdGVfc2V0LCBQYXJOZXdUcmFjZXImIGdjX3RyYWNlcik7CisKICBwcm90ZWN0ZWQ6CiAKICAgYm9vbCBfc3Vydml2b3Jfb3ZlcmZsb3c7CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzTWFya1N3ZWVwLmNwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNNYXJrU3dlZXAuY3BwCmluZGV4IDI0N2U4YTguLjM5OTk3ZmYgMTAwNjQ0Ci0tLSBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNNYXJrU3dlZXAuY3BwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNNYXJrU3dlZXAuY3BwCkBAIC01MzgsOCArNTM4LDEwIEBACiAgIC8vIFByb2Nlc3MgcmVmZXJlbmNlIG9iamVjdHMgZm91bmQgZHVyaW5nIG1hcmtpbmcKICAgewogICAgIHJlZl9wcm9jZXNzb3IoKS0+c2V0dXBfcG9saWN5KGNsZWFyX2FsbF9zb2Z0cmVmcyk7Ci0gICAgcmVmX3Byb2Nlc3NvcigpLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygKLSAgICAgIGlzX2FsaXZlX2Nsb3N1cmUoKSwgbWFya19hbmRfcHVzaF9jbG9zdXJlKCksIGZvbGxvd19zdGFja19jbG9zdXJlKCksIE5VTEwsIF9nY190aW1lcik7CisgICAgY29uc3QgUmVmZXJlbmNlUHJvY2Vzc29yU3RhdHMmIHN0YXRzID0KKyAgICAgIHJlZl9wcm9jZXNzb3IoKS0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoCisgICAgICAgIGlzX2FsaXZlX2Nsb3N1cmUoKSwgbWFya19hbmRfcHVzaF9jbG9zdXJlKCksIGZvbGxvd19zdGFja19jbG9zdXJlKCksIE5VTEwsIF9nY190aW1lcik7CisgICAgZ2NfdHJhY2VyKCktPnJlcG9ydF9nY19yZWZlcmVuY2Vfc3RhdHMoc3RhdHMpOwogICB9CiAKICAgLy8gRm9sbG93IHN5c3RlbSBkaWN0aW9uYXJ5IHJvb3RzIGFuZCB1bmxvYWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vcGFyYWxsZWxTY2F2ZW5nZS9wc1BhcmFsbGVsQ29tcGFjdC5jcHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzUGFyYWxsZWxDb21wYWN0LmNwcAppbmRleCAwMDU3NjVmLi5jYjJjYTNiIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzUGFyYWxsZWxDb21wYWN0LmNwcAorKysgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzUGFyYWxsZWxDb21wYWN0LmNwcApAQCAtMjA4Niw3ICsyMDg2LDcgQEAKICAgICBib29sIG1hcmtlZF9mb3JfdW5sb2FkaW5nID0gZmFsc2U7CiAKICAgICBtYXJraW5nX3N0YXJ0LnVwZGF0ZSgpOwotICAgIG1hcmtpbmdfcGhhc2Uodm10aHJlYWRfY20sIG1heGltdW1faGVhcF9jb21wYWN0aW9uLCAmX2djX3RyYWNlcik7CisgICAgbWFya2luZ19waGFzZSh2bXRocmVhZF9jbSwgbWF4aW11bV9oZWFwX2NvbXBhY3Rpb24pOwogCiAjaWZuZGVmIFBST0RVQ1QKICAgICBpZiAoVHJhY2VQYXJhbGxlbE9sZEdDTWFya2luZ1BoYXNlKSB7CkBAIC0yMzYxLDkgKzIzNjEsNyBAQAogICByZXR1cm4gUGFyYWxsZWxTY2F2ZW5nZUhlYXA6OmdjX3Rhc2tfbWFuYWdlcigpOwogfQogCi12b2lkIFBTUGFyYWxsZWxDb21wYWN0OjptYXJraW5nX3BoYXNlKFBhckNvbXBhY3Rpb25NYW5hZ2VyKiBjbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXhpbXVtX2hlYXBfY29tcGFjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYWxsZWxPbGRUcmFjZXIgKmdjX3RyYWNlcikgewordm9pZCBQU1BhcmFsbGVsQ29tcGFjdDo6bWFya2luZ19waGFzZShQYXJDb21wYWN0aW9uTWFuYWdlciogY20sIGJvb2wgbWF4aW11bV9oZWFwX2NvbXBhY3Rpb24pIHsKICAgLy8gUmVjdXJzaXZlbHkgdHJhdmVyc2UgYWxsIGxpdmUgb2JqZWN0cyBhbmQgbWFyayB0aGVtCiAgIEdDVHJhY2VUaW1lIHRtKCJtYXJraW5nIHBoYXNlIiwgcHJpbnRfcGhhc2VzKCksIHRydWUsICZfZ2NfdGltZXIpOwogCkBAIC0yNDA3LDE4ICsyNDA1LDE5IEBACiAgIHsKICAgICBHQ1RyYWNlVGltZSB0bV9yKCJyZWZlcmVuY2UgcHJvY2Vzc2luZyIsIHByaW50X3BoYXNlcygpLCB0cnVlLCAmX2djX3RpbWVyKTsKIAorICAgIFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzIHN0YXRzOwogICAgIGlmIChyZWZfcHJvY2Vzc29yKCktPnByb2Nlc3NpbmdfaXNfbXQoKSkgewogICAgICAgUmVmUHJvY1Rhc2tFeGVjdXRvciB0YXNrX2V4ZWN1dG9yOwotICAgICAgcmVmX3Byb2Nlc3NvcigpLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygKKyAgICAgIHN0YXRzID0gcmVmX3Byb2Nlc3NvcigpLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygKICAgICAgICAgaXNfYWxpdmVfY2xvc3VyZSgpLCAmbWFya19hbmRfcHVzaF9jbG9zdXJlLCAmZm9sbG93X3N0YWNrX2Nsb3N1cmUsCiAgICAgICAgICZ0YXNrX2V4ZWN1dG9yLCAmX2djX3RpbWVyKTsKICAgICB9IGVsc2UgewotICAgICAgcmVmX3Byb2Nlc3NvcigpLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygKKyAgICAgIHN0YXRzID0gcmVmX3Byb2Nlc3NvcigpLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygKICAgICAgICAgaXNfYWxpdmVfY2xvc3VyZSgpLCAmbWFya19hbmRfcHVzaF9jbG9zdXJlLCAmZm9sbG93X3N0YWNrX2Nsb3N1cmUsIE5VTEwsCiAgICAgICAgICZfZ2NfdGltZXIpOwogICAgIH0KIAotICAgIGdjX3RyYWNlci0+cmVwb3J0X2djX3JlZmVyZW5jZV9wcm9jZXNzaW5nKHJlZl9wcm9jZXNzb3IoKS0+Y29sbGVjdF9zdGF0aXN0aWNzKCkpOworICAgIF9nY190cmFjZXIucmVwb3J0X2djX3JlZmVyZW5jZV9zdGF0cyhzdGF0cyk7CiAgIH0KIAogICBHQ1RyYWNlVGltZSB0bV9jKCJjbGFzcyB1bmxvYWRpbmciLCBwcmludF9waGFzZXMoKSwgdHJ1ZSwgJl9nY190aW1lcik7CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzUGFyYWxsZWxDb21wYWN0LmhwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNQYXJhbGxlbENvbXBhY3QuaHBwCmluZGV4IGM3OTE2Y2YuLjUxZDIwMTkgMTAwNjQ0Ci0tLSBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNQYXJhbGxlbENvbXBhY3QuaHBwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNQYXJhbGxlbENvbXBhY3QuaHBwCkBAIC04OTAsOSArODkwLDcgQEAKICAgc3RhdGljIHZvaWQgcG9zdF9jb21wYWN0KCk7CiAKICAgLy8gTWFyayBsaXZlIG9iamVjdHMKLSAgc3RhdGljIHZvaWQgbWFya2luZ19waGFzZShQYXJDb21wYWN0aW9uTWFuYWdlciogY20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBtYXhpbXVtX2hlYXBfY29tcGFjdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbGxlbE9sZFRyYWNlciAqZ2NfdHJhY2VyKTsKKyAgc3RhdGljIHZvaWQgbWFya2luZ19waGFzZShQYXJDb21wYWN0aW9uTWFuYWdlciogY20sIGJvb2wgbWF4aW11bV9oZWFwX2NvbXBhY3Rpb24pOwogICBzdGF0aWMgdm9pZCBmb2xsb3dfd2Vha19rbGFzc19saW5rcygpOwogICBzdGF0aWMgdm9pZCBmb2xsb3dfbWRvX3dlYWtfcmVmcygpOwogCmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzUHJvbW90aW9uTWFuYWdlci5jcHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzUHJvbW90aW9uTWFuYWdlci5jcHAKaW5kZXggOGM3NWRkYy4uZDE1OTc2MyAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vcGFyYWxsZWxTY2F2ZW5nZS9wc1Byb21vdGlvbk1hbmFnZXIuY3BwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNQcm9tb3Rpb25NYW5hZ2VyLmNwcApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNPbGRHZW4uaHBwIgogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNQcm9tb3Rpb25NYW5hZ2VyLmlubGluZS5ocHAiCiAjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vcGFyYWxsZWxTY2F2ZW5nZS9wc1NjYXZlbmdlLmlubGluZS5ocHAiCisjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVHJhY2UuaHBwIgogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9tdXRhYmxlU3BhY2UuaHBwIgotI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9wcm9tb3Rpb25GYWlsZWRJbmZvLmhwcCIKICNpbmNsdWRlICJtZW1vcnkvbWVtUmVnaW9uLmhwcCIKICNpbmNsdWRlICJvb3BzL29vcC5pbmxpbmUuaHBwIgogI2luY2x1ZGUgIm9vcHMvb29wLnBzZ2MuaW5saW5lLmhwcCIKQEAgLTg3LDI0ICs4NywyMCBAQAogICB9CiB9CiAKLVByb21vdGlvbkZhaWxlZEluZm8gUFNQcm9tb3Rpb25NYW5hZ2VyOjpwb3N0X3NjYXZlbmdlKCkgewotICBzaXplX3QgcHJvbW90aW9uX2ZhaWxlZF9zaXplID0gMDsKLSAgdWludCAgIHByb21vdGlvbl9mYWlsZWRfY291bnQgPSAwOwotICBQcm9tb3Rpb25GYWlsZWRJbmZvIHBmaTsKK2Jvb2wgUFNQcm9tb3Rpb25NYW5hZ2VyOjpwb3N0X3NjYXZlbmdlKFlvdW5nR0NUcmFjZXImIGdjX3RyYWNlcikgeworICBib29sIHByb21vdGlvbl9mYWlsdXJlX29jY3VycmVkID0gZmFsc2U7CiAKICAgVEFTS1FVRVVFX1NUQVRTX09OTFkoaWYgKFByaW50R0NEZXRhaWxzICYmIFBhcmFsbGVsR0NWZXJib3NlKSBwcmludF9zdGF0cygpKTsKICAgZm9yICh1aW50IGkgPSAwOyBpIDwgUGFyYWxsZWxHQ1RocmVhZHMgKyAxOyBpKyspIHsKICAgICBQU1Byb21vdGlvbk1hbmFnZXIqIG1hbmFnZXIgPSBtYW5hZ2VyX2FycmF5KGkpOwogICAgIGFzc2VydChtYW5hZ2VyLT5jbGFpbWVkX3N0YWNrX2RlcHRoKCktPmlzX2VtcHR5KCksICJzaG91bGQgYmUgZW1wdHkiKTsKICAgICBpZiAobWFuYWdlci0+X3Byb21vdGlvbl9mYWlsZWRfaW5mby5wcm9tb3Rpb25fZmFpbGVkKCkpIHsKLSAgICAgICAgcHJvbW90aW9uX2ZhaWxlZF9zaXplICs9IG1hbmFnZXItPl9wcm9tb3Rpb25fZmFpbGVkX2luZm8ucHJvbW90aW9uX2ZhaWxlZF9zaXplKCk7Ci0gICAgICAgIHByb21vdGlvbl9mYWlsZWRfY291bnQgKz0gbWFuYWdlci0+X3Byb21vdGlvbl9mYWlsZWRfaW5mby5wcm9tb3Rpb25fZmFpbGVkX2NvdW50KCk7CisgICAgICBnY190cmFjZXIucmVwb3J0X3Byb21vdGlvbl9mYWlsZWQobWFuYWdlci0+X3Byb21vdGlvbl9mYWlsZWRfaW5mbyk7CisgICAgICBwcm9tb3Rpb25fZmFpbHVyZV9vY2N1cnJlZCA9IHRydWU7CiAgICAgfQogICAgIG1hbmFnZXItPmZsdXNoX2xhYnMoKTsKICAgfQotCi0gIHBmaS5zZXRfcHJvbW90aW9uX2ZhaWxlZChwcm9tb3Rpb25fZmFpbGVkX3NpemUsIHByb21vdGlvbl9mYWlsZWRfY291bnQpOwotICByZXR1cm4gcGZpOworICByZXR1cm4gcHJvbW90aW9uX2ZhaWx1cmVfb2NjdXJyZWQ7CiB9CiAKICNpZiBUQVNLUVVFVUVfU1RBVFMKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNQcm9tb3Rpb25NYW5hZ2VyLmhwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNQcm9tb3Rpb25NYW5hZ2VyLmhwcAppbmRleCAwZDc1YmVmLi5hMWU5NmViIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzUHJvbW90aW9uTWFuYWdlci5ocHAKKysrIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vcGFyYWxsZWxTY2F2ZW5nZS9wc1Byb21vdGlvbk1hbmFnZXIuaHBwCkBAIC0yNiw2ICsyNiw3IEBACiAjZGVmaW5lIFNIQVJFX1ZNX0dDX0lNUExFTUVOVEFUSU9OX1BBUkFMTEVMU0NBVkVOR0VfUFNQUk9NT1RJT05NQU5BR0VSX0hQUAogCiAjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vcGFyYWxsZWxTY2F2ZW5nZS9wc1Byb21vdGlvbkxBQi5ocHAiCisjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVHJhY2UuaHBwIgogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9wcm9tb3Rpb25GYWlsZWRJbmZvLmhwcCIKICNpbmNsdWRlICJtZW1vcnkvYWxsb2NhdGlvbi5ocHAiCiAjaW5jbHVkZSAidXRpbGl0aWVzL3Rhc2txdWV1ZS5ocHAiCkBAIC0xNTIsNyArMTUzLDcgQEAKICAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZSgpOwogCiAgIHN0YXRpYyB2b2lkIHByZV9zY2F2ZW5nZSgpOwotICBzdGF0aWMgUHJvbW90aW9uRmFpbGVkSW5mbyBwb3N0X3NjYXZlbmdlKCk7CisgIHN0YXRpYyBib29sIHBvc3Rfc2NhdmVuZ2UoWW91bmdHQ1RyYWNlciYgZ2NfdHJhY2VyKTsKIAogICBzdGF0aWMgUFNQcm9tb3Rpb25NYW5hZ2VyKiBnY190aHJlYWRfcHJvbW90aW9uX21hbmFnZXIoaW50IGluZGV4KTsKICAgc3RhdGljIFBTUHJvbW90aW9uTWFuYWdlciogdm1fdGhyZWFkX3Byb21vdGlvbl9tYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzU2NhdmVuZ2UuY3BwIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vcGFyYWxsZWxTY2F2ZW5nZS9wc1NjYXZlbmdlLmNwcAppbmRleCA0YjljYjBmLi43MTMyMTYwIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9wYXJhbGxlbFNjYXZlbmdlL3BzU2NhdmVuZ2UuY3BwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3BhcmFsbGVsU2NhdmVuZ2UvcHNTY2F2ZW5nZS5jcHAKQEAgLTMzMiw3ICszMzIsNiBAQAogICB7CiAgICAgUmVzb3VyY2VNYXJrIHJtOwogICAgIEhhbmRsZU1hcmsgaG07Ci0gICAgUHJvbW90aW9uRmFpbGVkSW5mbyBwcm9tb3Rpb25fZmFpbGVkX2luZm87CiAKICAgICBnY2xvZ19vcl90dHktPmRhdGVfc3RhbXAoUHJpbnRHQyAmJiBQcmludEdDRGF0ZVN0YW1wcyk7CiAgICAgVHJhY2VDUFVUaW1lIHRjcHUoUHJpbnRHQ0RldGFpbHMsIHRydWUsIGdjbG9nX29yX3R0eSk7CkBAIC00NDksMTcgKzQ0OCwxOCBAQAogICAgICAgcmVmZXJlbmNlX3Byb2Nlc3NvcigpLT5zZXRfYWN0aXZlX210X2RlZ3JlZShhY3RpdmVfd29ya2Vycyk7CiAgICAgICBQU0tlZXBBbGl2ZUNsb3N1cmUga2VlcF9hbGl2ZShwcm9tb3Rpb25fbWFuYWdlcik7CiAgICAgICBQU0V2YWN1YXRlRm9sbG93ZXJzQ2xvc3VyZSBldmFjX2ZvbGxvd2Vycyhwcm9tb3Rpb25fbWFuYWdlcik7CisgICAgICBSZWZlcmVuY2VQcm9jZXNzb3JTdGF0cyBzdGF0czsKICAgICAgIGlmIChyZWZlcmVuY2VfcHJvY2Vzc29yKCktPnByb2Nlc3NpbmdfaXNfbXQoKSkgewogICAgICAgICBQU1JlZlByb2NUYXNrRXhlY3V0b3IgdGFza19leGVjdXRvcjsKLSAgICAgICAgcmVmZXJlbmNlX3Byb2Nlc3NvcigpLT5wcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygKKyAgICAgICAgc3RhdHMgPSByZWZlcmVuY2VfcHJvY2Vzc29yKCktPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKAogICAgICAgICAgICZfaXNfYWxpdmVfY2xvc3VyZSwgJmtlZXBfYWxpdmUsICZldmFjX2ZvbGxvd2VycywgJnRhc2tfZXhlY3V0b3IsCiAgICAgICAgICAgJl9nY190aW1lcik7CiAgICAgICB9IGVsc2UgewotICAgICAgICByZWZlcmVuY2VfcHJvY2Vzc29yKCktPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKAorICAgICAgICBzdGF0cyA9IHJlZmVyZW5jZV9wcm9jZXNzb3IoKS0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoCiAgICAgICAgICAgJl9pc19hbGl2ZV9jbG9zdXJlLCAma2VlcF9hbGl2ZSwgJmV2YWNfZm9sbG93ZXJzLCBOVUxMLCAmX2djX3RpbWVyKTsKICAgICAgIH0KIAotICAgICAgX2djX3RyYWNlci5yZXBvcnRfZ2NfcmVmZXJlbmNlX3Byb2Nlc3NpbmcocmVmZXJlbmNlX3Byb2Nlc3NvcigpLT5jb2xsZWN0X3N0YXRpc3RpY3MoKSk7CisgICAgICBfZ2NfdHJhY2VyLnJlcG9ydF9nY19yZWZlcmVuY2Vfc3RhdHMoc3RhdHMpOwogCiAgICAgICAvLyBFbnF1ZXVlIHJlZmVyZW5jZSBvYmplY3RzIGRpc2NvdmVyZWQgZHVyaW5nIHNjYXZlbmdlLgogICAgICAgaWYgKHJlZmVyZW5jZV9wcm9jZXNzb3IoKS0+cHJvY2Vzc2luZ19pc19tdCgpKSB7CkBAIC00ODAsMTIgKzQ4MCw4IEBACiAgICAgfQogCiAgICAgLy8gRmluYWxseSwgZmx1c2ggdGhlIHByb21vdGlvbl9tYW5hZ2VyJ3MgbGFicywgYW5kIGRlYWxsb2NhdGUgaXRzIHN0YWNrcy4KLSAgICBwcm9tb3Rpb25fZmFpbGVkX2luZm8gPSBQU1Byb21vdGlvbk1hbmFnZXI6OnBvc3Rfc2NhdmVuZ2UoKTsKLQotICAgIHByb21vdGlvbl9mYWlsdXJlX29jY3VycmVkID0gcHJvbW90aW9uX2ZhaWxlZF9pbmZvLnByb21vdGlvbl9mYWlsZWQoKTsKKyAgICBwcm9tb3Rpb25fZmFpbHVyZV9vY2N1cnJlZCA9IFBTUHJvbW90aW9uTWFuYWdlcjo6cG9zdF9zY2F2ZW5nZShfZ2NfdHJhY2VyKTsKICAgICBpZiAocHJvbW90aW9uX2ZhaWx1cmVfb2NjdXJyZWQpIHsKLSAgICAgIF9nY190cmFjZXIucmVwb3J0X3Byb21vdGlvbl9mYWlsZWQocHJvbW90aW9uX2ZhaWxlZF9pbmZvLnByb21vdGlvbl9mYWlsZWRfc2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tb3Rpb25fZmFpbGVkX2luZm8ucHJvbW90aW9uX2ZhaWxlZF9jb3VudCgpKTsKICAgICAgIGNsZWFuX3VwX2ZhaWxlZF9wcm9tb3Rpb24oKTsKICAgICAgIGlmIChQcmludEdDKSB7CiAgICAgICAgIGdjbG9nX29yX3R0eS0+cHJpbnQoIi0tIik7CkBAIC00OTksOCArNDk1LDYgQEAKIAogICAgIGlmICghcHJvbW90aW9uX2ZhaWx1cmVfb2NjdXJyZWQpIHsKICAgICAgIC8vIFN3YXAgdGhlIHN1cnZpdm9yIHNwYWNlcy4KLQotCiAgICAgICB5b3VuZ19nZW4tPmVkZW5fc3BhY2UoKS0+Y2xlYXIoU3BhY2VEZWNvcmF0b3I6Ok1hbmdsZSk7CiAgICAgICB5b3VuZ19nZW4tPmZyb21fc3BhY2UoKS0+Y2xlYXIoU3BhY2VEZWNvcmF0b3I6Ok1hbmdsZSk7CiAgICAgICB5b3VuZ19nZW4tPnN3YXBfc3BhY2VzKCk7CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUcmFjZS5jcHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUcmFjZS5jcHAKaW5kZXggODdmMTllNy4uYzNkMDhiNSAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVHJhY2UuY3BwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nY1RyYWNlLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nY0hlYXBTdW1tYXJ5LmhwcCIKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUaW1lci5ocHAiCiAjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVHJhY2UuaHBwIgorI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9wcm9tb3Rpb25GYWlsZWRJbmZvLmhwcCIKICNpbmNsdWRlICJtZW1vcnkvcmVmZXJlbmNlUHJvY2Vzc29yU3RhdHMuaHBwIgogI2luY2x1ZGUgInV0aWxpdGllcy9nbG9iYWxEZWZpbml0aW9ucy5ocHAiCiAKQEAgLTc1LDEzICs3NiwxMyBAQAogICBfc2hhcmVkX2djX2luZm8uc2V0X2lkKFNoYXJlZEdDSW5mbzo6VU5TRVRfR0NJRCk7CiB9CiAKLXZvaWQgR0NUcmFjZXI6OnJlcG9ydF9nY19yZWZlcmVuY2VfcHJvY2Vzc2luZyhjb25zdCBSZWZlcmVuY2VQcm9jZXNzb3JTdGF0cyYgcnBzKSBjb25zdCB7Cit2b2lkIEdDVHJhY2VyOjpyZXBvcnRfZ2NfcmVmZXJlbmNlX3N0YXRzKGNvbnN0IFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzJiBycHMpIGNvbnN0IHsKICAgYXNzZXJ0X3NldF9nY19pZCgpOwogCi0gIHNlbmRfcmVmZXJlbmNlX3Byb2Nlc3NpbmdfZXZlbnQoUkVGX1NPRlQsIHJwcy5zb2Z0X2NvdW50KCkpOwotICBzZW5kX3JlZmVyZW5jZV9wcm9jZXNzaW5nX2V2ZW50KFJFRl9XRUFLLCBycHMud2Vha19jb3VudCgpKTsKLSAgc2VuZF9yZWZlcmVuY2VfcHJvY2Vzc2luZ19ldmVudChSRUZfRklOQUwsIHJwcy5maW5hbF9jb3VudCgpKTsKLSAgc2VuZF9yZWZlcmVuY2VfcHJvY2Vzc2luZ19ldmVudChSRUZfUEhBTlRPTSwgcnBzLnBoYW50b21fY291bnQoKSk7CisgIHNlbmRfcmVmZXJlbmNlX3N0YXRzX2V2ZW50KFJFRl9TT0ZULCBycHMuc29mdF9jb3VudCgpKTsKKyAgc2VuZF9yZWZlcmVuY2Vfc3RhdHNfZXZlbnQoUkVGX1dFQUssIHJwcy53ZWFrX2NvdW50KCkpOworICBzZW5kX3JlZmVyZW5jZV9zdGF0c19ldmVudChSRUZfRklOQUwsIHJwcy5maW5hbF9jb3VudCgpKTsKKyAgc2VuZF9yZWZlcmVuY2Vfc3RhdHNfZXZlbnQoUkVGX1BIQU5UT00sIHJwcy5waGFudG9tX2NvdW50KCkpOwogfQogCiB2b2lkIEdDVHJhY2VyOjpyZXBvcnRfZ2NfaGVhcF9zdW1tYXJ5KEdDV2hlbjo6VHlwZSB3aGVuLCBjb25zdCBHQ0hlYXBTdW1tYXJ5JiBoZWFwX3N1bW1hcnksIGNvbnN0IFBlcm1HZW5TdW1tYXJ5JiBwZXJtX2dlbl9zdW1tYXJ5KSBjb25zdCB7CkBAIC05OCwxMSArOTksMTAgQEAKICAgc2VuZF95b3VuZ19nY19ldmVudCgpOwogfQogCi12b2lkIFlvdW5nR0NUcmFjZXI6OnJlcG9ydF9wcm9tb3Rpb25fZmFpbGVkKHNpemVfdCBzaXplLCB1aW50IGNvdW50KSB7Cit2b2lkIFlvdW5nR0NUcmFjZXI6OnJlcG9ydF9wcm9tb3Rpb25fZmFpbGVkKGNvbnN0IFByb21vdGlvbkZhaWxlZEluZm8mIHBmX2luZm8pIHsKICAgYXNzZXJ0X3NldF9nY19pZCgpOwogCi0gIHlvdW5nX2djX2luZm8oKS5yZWdpc3Rlcl9wcm9tb3Rpb25fZmFpbGVkKCk7Ci0gIHNlbmRfcHJvbW90aW9uX2ZhaWxlZF9ldmVudChzaXplLCBjb3VudCk7CisgIHNlbmRfcHJvbW90aW9uX2ZhaWxlZF9ldmVudChwZl9pbmZvKTsKIH0KIAogCmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUcmFjZS5ocHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUcmFjZS5ocHAKaW5kZXggMmVmMWEzNC4uYzAyZDUzOCAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVHJhY2UuaHBwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nY1RyYWNlLmhwcApAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1ZGUgImdjX2ludGVyZmFjZS9nY0NhdXNlLmhwcCIKICNpbmNsdWRlICJnY19pbnRlcmZhY2UvZ2NOYW1lLmhwcCIKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NXaGVuLmhwcCIKKyNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvcHJvbW90aW9uRmFpbGVkSW5mby5ocHAiCiAjaW5jbHVkZSAibWVtb3J5L2FsbG9jYXRpb24uaHBwIgogI2luY2x1ZGUgIm1lbW9yeS9yZWZlcmVuY2VUeXBlLmhwcCIKICNpZm5kZWYgU0VSSUFMR0MKQEAgLTkzLDE2ICs5NCw2IEBACiAgIHZvaWQqIGRlbnNlX3ByZWZpeCgpIGNvbnN0IHsgcmV0dXJuIF9kZW5zZV9wcmVmaXg7IH0KIH07CiAKLWNsYXNzIFlvdW5nR0NJbmZvIFZBTFVFX09CSl9DTEFTU19TUEVDIHsKLSAgYm9vbCBfcHJvbW90aW9uX2ZhaWxlZDsKLSBwdWJsaWM6Ci0gIFlvdW5nR0NJbmZvKCkgOiBfcHJvbW90aW9uX2ZhaWxlZChmYWxzZSkge30KLSAgdm9pZCByZWdpc3Rlcl9wcm9tb3Rpb25fZmFpbGVkKCkgewotICAgIF9wcm9tb3Rpb25fZmFpbGVkID0gdHJ1ZTsKLSAgfQotICBib29sIHByb21vdGlvbl9mYWlsZWQoKSBjb25zdCB7IHJldHVybiBfcHJvbW90aW9uX2ZhaWxlZDsgfQotfTsKLQogI2lmbmRlZiBTRVJJQUxHQwogCiBjbGFzcyBHMVlvdW5nR0NJbmZvIFZBTFVFX09CSl9DTEFTU19TUEVDIHsKQEAgLTEyNSw3ICsxMTYsNyBAQAogICB2b2lkIHJlcG9ydF9nY19zdGFydChHQ0NhdXNlOjpDYXVzZSBjYXVzZSwgamxvbmcgdGltZXN0YW1wKTsKICAgdm9pZCByZXBvcnRfZ2NfZW5kKGpsb25nIHRpbWVzdGFtcCwgVGltZVBhcnRpdGlvbnMqIHRpbWVfcGFydGl0aW9ucyk7CiAgIHZvaWQgcmVwb3J0X2djX2hlYXBfc3VtbWFyeShHQ1doZW46OlR5cGUgd2hlbiwgY29uc3QgR0NIZWFwU3VtbWFyeSYgaGVhcF9zdW1tYXJ5LCBjb25zdCBQZXJtR2VuU3VtbWFyeSYgcGVybV9nZW5fc3VtbWFyeSkgY29uc3Q7Ci0gIHZvaWQgcmVwb3J0X2djX3JlZmVyZW5jZV9wcm9jZXNzaW5nKGNvbnN0IFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzJiBycCkgY29uc3Q7CisgIHZvaWQgcmVwb3J0X2djX3JlZmVyZW5jZV9zdGF0cyhjb25zdCBSZWZlcmVuY2VQcm9jZXNzb3JTdGF0cyYgcnApIGNvbnN0OwogCiAgIGJvb2wgaGFzX3JlcG9ydGVkX2djX3N0YXJ0KCkgY29uc3Q7CiAKQEAgLTEzOCwyNiArMTI5LDIzIEBACiAgIHZvaWQgc2VuZF9nYXJiYWdlX2NvbGxlY3Rpb25fZXZlbnQoKSBjb25zdDsKICAgdm9pZCBzZW5kX2djX2hlYXBfc3VtbWFyeV9ldmVudChHQ1doZW46OlR5cGUgd2hlbiwgY29uc3QgR0NIZWFwU3VtbWFyeSYgaGVhcF9zdW1tYXJ5KSBjb25zdDsKICAgdm9pZCBzZW5kX3Blcm1fZ2VuX3N1bW1hcnlfZXZlbnQoR0NXaGVuOjpUeXBlIHdoZW4sIGNvbnN0IFBlcm1HZW5TdW1tYXJ5JiBwZXJtX2dlbl9zdW1tYXJ5KSBjb25zdDsKLSAgdm9pZCBzZW5kX3JlZmVyZW5jZV9wcm9jZXNzaW5nX2V2ZW50KFJlZmVyZW5jZVR5cGUgdHlwZSwgc2l6ZV90IGNvdW50KSBjb25zdDsKKyAgdm9pZCBzZW5kX3JlZmVyZW5jZV9zdGF0c19ldmVudChSZWZlcmVuY2VUeXBlIHR5cGUsIHNpemVfdCBjb3VudCkgY29uc3Q7CiAgIHZvaWQgc2VuZF9waGFzZV9ldmVudHMoVGltZVBhcnRpdGlvbnMqIHRpbWVfcGFydGl0aW9ucykgY29uc3Q7CiB9OwogCiBjbGFzcyBZb3VuZ0dDVHJhY2VyIDogcHVibGljIEdDVHJhY2VyIHsKLSAgWW91bmdHQ0luZm8gX3lvdW5nX2djX2luZm87Ci0KICBwcm90ZWN0ZWQ6CiAgIFlvdW5nR0NUcmFjZXIoR0NOYW1lIG5hbWUpIDogR0NUcmFjZXIobmFtZSkge30KLSAgdmlydHVhbCBZb3VuZ0dDSW5mbyYgeW91bmdfZ2NfaW5mbygpIHsgcmV0dXJuIF95b3VuZ19nY19pbmZvOyB9CiAKICBwdWJsaWM6Ci0gIHZpcnR1YWwgdm9pZCByZXBvcnRfcHJvbW90aW9uX2ZhaWxlZChzaXplX3Qgc2l6ZSwgdWludCBjb3VudCk7CisgIHZpcnR1YWwgdm9pZCByZXBvcnRfcHJvbW90aW9uX2ZhaWxlZChjb25zdCBQcm9tb3Rpb25GYWlsZWRJbmZvJiBwZl9pbmZvKTsKIAogIHByb3RlY3RlZDoKICAgdmlydHVhbCB2b2lkIHJlcG9ydF9nY19lbmRfaW1wbChqbG9uZyB0aW1lc3RhbXAsIFRpbWVQYXJ0aXRpb25zKiB0aW1lX3BhcnRpdGlvbnMpOwogCiAgcHJpdmF0ZToKICAgdm9pZCBzZW5kX3lvdW5nX2djX2V2ZW50KCkgY29uc3Q7Ci0gIHZvaWQgc2VuZF9wcm9tb3Rpb25fZmFpbGVkX2V2ZW50KHNpemVfdCBzaXplLCB1aW50IGNvdW50KSBjb25zdDsKKyAgdm9pZCBzZW5kX3Byb21vdGlvbl9mYWlsZWRfZXZlbnQoY29uc3QgUHJvbW90aW9uRmFpbGVkSW5mbyYgcGZfaW5mbykgY29uc3Q7CiB9OwogCiBjbGFzcyBPbGRHQ1RyYWNlciA6IHB1YmxpYyBHQ1RyYWNlciB7CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUcmFjZVNlbmQuY3BwIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVHJhY2VTZW5kLmNwcAppbmRleCBiOTFhM2U0Li4xYzc1MWJhIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUcmFjZVNlbmQuY3BwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nY1RyYWNlU2VuZC5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvZ2NUaW1lci5ocHAiCiAjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2djVHJhY2UuaHBwIgogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nY1doZW4uaHBwIgorI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9wcm9tb3Rpb25GYWlsZWRJbmZvLmhwcCIKICNpbmNsdWRlICJ0cmFjZS90cmFjaW5nLmhwcCIKICNpZm5kZWYgU0VSSUFMR0MKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9nMS9nMVlDVHlwZXMuaHBwIgpAQCAtNTAsOCArNTEsOCBAQAogICB9CiB9CiAKLXZvaWQgR0NUcmFjZXI6OnNlbmRfcmVmZXJlbmNlX3Byb2Nlc3NpbmdfZXZlbnQoUmVmZXJlbmNlVHlwZSB0eXBlLCBzaXplX3QgY291bnQpIGNvbnN0IHsKLSAgRXZlbnRHQ1JlZmVyZW5jZVByb2Nlc3NpbmcgZTsKK3ZvaWQgR0NUcmFjZXI6OnNlbmRfcmVmZXJlbmNlX3N0YXRzX2V2ZW50KFJlZmVyZW5jZVR5cGUgdHlwZSwgc2l6ZV90IGNvdW50KSBjb25zdCB7CisgIEV2ZW50R0NSZWZlcmVuY2VTdGF0aXN0aWNzIGU7CiAgIGlmIChlLnNob3VsZF9jb21taXQoKSkgewogICAgICAgZS5zZXRfZ2NJZChfc2hhcmVkX2djX2luZm8uaWQoKSk7CiAgICAgICBlLnNldF90eXBlKCh1MSl0eXBlKTsKQEAgLTc1LDcgKzc2LDYgQEAKICAgRXZlbnRHQ1lvdW5nR2FyYmFnZUNvbGxlY3Rpb24gZShVTlRJTUVEKTsKICAgaWYgKGUuc2hvdWxkX2NvbW1pdCgpKSB7CiAgICAgZS5zZXRfZ2NJZChfc2hhcmVkX2djX2luZm8uaWQoKSk7Ci0gICAgZS5zZXRfcHJvbW90aW9uRmFpbGVkKF95b3VuZ19nY19pbmZvLnByb21vdGlvbl9mYWlsZWQoKSk7CiAgICAgZS5zZXRfc3RhcnR0aW1lKF9zaGFyZWRfZ2NfaW5mby5zdGFydF90aW1lc3RhbXAoKSk7CiAgICAgZS5zZXRfZW5kdGltZShfc2hhcmVkX2djX2luZm8uZW5kX3RpbWVzdGFtcCgpKTsKICAgICBlLmNvbW1pdCgpOwpAQCAtOTIsMTIgKzkyLDE1IEBACiAgIH0KIH0KIAotdm9pZCBZb3VuZ0dDVHJhY2VyOjpzZW5kX3Byb21vdGlvbl9mYWlsZWRfZXZlbnQoc2l6ZV90IHNpemUsIHVpbnQgY291bnQpIGNvbnN0IHsKK3ZvaWQgWW91bmdHQ1RyYWNlcjo6c2VuZF9wcm9tb3Rpb25fZmFpbGVkX2V2ZW50KGNvbnN0IFByb21vdGlvbkZhaWxlZEluZm8mIHBmX2luZm8pIGNvbnN0IHsKICAgRXZlbnRQcm9tb3Rpb25GYWlsZWQgZTsKICAgaWYgKGUuc2hvdWxkX2NvbW1pdCgpKSB7CiAgICAgZS5zZXRfZ2NJZChfc2hhcmVkX2djX2luZm8uaWQoKSk7Ci0gICAgZS5zZXRfb2JqZWN0Q291bnQoY291bnQpOwotICAgIGUuc2V0X3RvdGFsU2l6ZShzaXplKTsKKyAgICBlLnNldF9vYmplY3RDb3VudChwZl9pbmZvLnByb21vdGlvbl9mYWlsZWRfY291bnQoKSk7CisgICAgZS5zZXRfZmlyc3RTaXplKHBmX2luZm8uZmlyc3Rfc2l6ZSgpKTsKKyAgICBlLnNldF9zbWFsbGVzdFNpemUocGZfaW5mby5zbWFsbGVzdF9zaXplKCkpOworICAgIGUuc2V0X3RvdGFsU2l6ZShwZl9pbmZvLnRvdGFsX3NpemUoKSk7CisgICAgZS5zZXRfdGhyZWFkKHBmX2luZm8udGhyZWFkKCktPnRocmVhZF9pZCgpKTsKICAgICBlLmNvbW1pdCgpOwogICB9CiB9CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvcHJvbW90aW9uRmFpbGVkSW5mby5ocHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9nY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvcHJvbW90aW9uRmFpbGVkSW5mby5ocHAKaW5kZXggOTViMzI5My4uMDk4NzBmOCAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL3Byb21vdGlvbkZhaWxlZEluZm8uaHBwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL2djX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9wcm9tb3Rpb25GYWlsZWRJbmZvLmhwcApAQCAtMjUsMzQgKzI1LDQ2IEBACiAjaWZuZGVmIFNIQVJFX1ZNX0dDX0lNUExFTUVOVEFUSU9OX1NIQVJFRF9QUk9NT1RJT05GQUlMRURJTkZPX0hQUAogI2RlZmluZSBTSEFSRV9WTV9HQ19JTVBMRU1FTlRBVElPTl9TSEFSRURfUFJPTU9USU9ORkFJTEVESU5GT19IUFAKIAorI2luY2x1ZGUgInJ1bnRpbWUvdGhyZWFkLmhwcCIKICNpbmNsdWRlICJ1dGlsaXRpZXMvZ2xvYmFsRGVmaW5pdGlvbnMuaHBwIgogCiBjbGFzcyBQcm9tb3Rpb25GYWlsZWRJbmZvIFZBTFVFX09CSl9DTEFTU19TUEVDIHsKLSAgdWludCAgIF9wcm9tb3Rpb25fZmFpbGVkX2NvdW50OwotICBzaXplX3QgX3Byb21vdGlvbl9mYWlsZWRfc2l6ZTsKKyAgc2l6ZV90ICAgIF9maXJzdF9zaXplOworICBzaXplX3QgICAgX3NtYWxsZXN0X3NpemU7CisgIHNpemVfdCAgICBfdG90YWxfc2l6ZTsKKyAgdWludCAgICAgIF9jb3VudDsKKyAgT1NUaHJlYWQqIF90aHJlYWQ7CisKICBwdWJsaWM6Ci0gIFByb21vdGlvbkZhaWxlZEluZm8oKSA6IF9wcm9tb3Rpb25fZmFpbGVkX2NvdW50KDApLCBfcHJvbW90aW9uX2ZhaWxlZF9zaXplKDApIHt9CisgIFByb21vdGlvbkZhaWxlZEluZm8oKSA6IF9maXJzdF9zaXplKDApLCBfc21hbGxlc3Rfc2l6ZSgwKSwgX3RvdGFsX3NpemUoMCksIF9jb3VudCgwKSwgX3RocmVhZChOVUxMKSB7fQogCiAgIHZvaWQgcmVnaXN0ZXJfcHJvbW90aW9uX2ZhaWxlZChzaXplX3Qgc2l6ZSkgewotICAgIF9wcm9tb3Rpb25fZmFpbGVkX3NpemUgKz0gc2l6ZTsKLSAgICBfcHJvbW90aW9uX2ZhaWxlZF9jb3VudCsrOwotICB9Ci0KLSAgdm9pZCBzZXRfcHJvbW90aW9uX2ZhaWxlZChzaXplX3Qgc2l6ZSwgdWludCBjb3VudCkgewotICAgIF9wcm9tb3Rpb25fZmFpbGVkX3NpemUgPSBzaXplOwotICAgIF9wcm9tb3Rpb25fZmFpbGVkX2NvdW50ID0gY291bnQ7CisgICAgaWYgKF9maXJzdF9zaXplID09IDApIHsKKyAgICAgIF9maXJzdF9zaXplID0gc2l6ZTsKKyAgICAgIF9zbWFsbGVzdF9zaXplID0gc2l6ZTsKKyAgICAgIF90aHJlYWQgPSBUaHJlYWQ6OmN1cnJlbnQoKS0+b3N0aHJlYWQoKTsKKyAgICB9IGVsc2UgaWYgKHNpemUgPCBfc21hbGxlc3Rfc2l6ZSkgeworICAgICAgX3NtYWxsZXN0X3NpemUgPSBzaXplOworICAgIH0KKyAgICBfdG90YWxfc2l6ZSArPSBzaXplOworICAgIF9jb3VudCsrOworICAgIGFzc2VydChfdGhyZWFkID09IFRocmVhZDo6Y3VycmVudCgpLT5vc3RocmVhZCgpLCAiVGhlIFByb21vdGlvbkZhaWxlZEluZm8gc2hvdWxkIGJlIHRocmVhZCBsb2NhbC4iKTsKICAgfQogCiAgIHZvaWQgcmVzZXQoKSB7Ci0gICAgX3Byb21vdGlvbl9mYWlsZWRfc2l6ZSA9IDA7Ci0gICAgX3Byb21vdGlvbl9mYWlsZWRfY291bnQgPSAwOworICAgIF9maXJzdF9zaXplID0gMDsKKyAgICBfc21hbGxlc3Rfc2l6ZSA9IDA7CisgICAgX3RvdGFsX3NpemUgPSAwOworICAgIF9jb3VudCA9IDA7CisgICAgX3RocmVhZCA9IE5VTEw7CiAgIH0KIAotICBib29sIHByb21vdGlvbl9mYWlsZWQoKSBjb25zdCB7IHJldHVybiBfcHJvbW90aW9uX2ZhaWxlZF9zaXplID4gMDsgfQotICBzaXplX3QgcHJvbW90aW9uX2ZhaWxlZF9zaXplKCkgY29uc3QgeyByZXR1cm4gX3Byb21vdGlvbl9mYWlsZWRfc2l6ZTsgfQotICB1aW50IHByb21vdGlvbl9mYWlsZWRfY291bnQoKSBjb25zdCB7IHJldHVybiBfcHJvbW90aW9uX2ZhaWxlZF9jb3VudDsgfQorICBib29sIHByb21vdGlvbl9mYWlsZWQoKSBjb25zdCB7IHJldHVybiBfY291bnQgIT0gMDsgfQorICBzaXplX3QgZmlyc3Rfc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIF9maXJzdF9zaXplOyB9CisgIHNpemVfdCBzbWFsbGVzdF9zaXplKCkgY29uc3QgeyByZXR1cm4gX3NtYWxsZXN0X3NpemU7IH0KKyAgc2l6ZV90IHRvdGFsX3NpemUoKSBjb25zdCB7IHJldHVybiBfdG90YWxfc2l6ZTsgfQorICB1aW50IHByb21vdGlvbl9mYWlsZWRfY291bnQoKSBjb25zdCB7IHJldHVybiBfY291bnQ7IH0KKyAgT1NUaHJlYWQqIHRocmVhZCgpIGNvbnN0IHsgcmV0dXJuIF90aHJlYWQ7IH0KIH07CiAKLQogI2VuZGlmIC8qIFNIQVJFX1ZNX0dDX0lNUExFTUVOVEFUSU9OX1NIQVJFRF9QUk9NT1RJT05GQUlMRURJTkZPX0hQUCAqLwotCmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9tZW1vcnkvZGVmTmV3R2VuZXJhdGlvbi5jcHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9tZW1vcnkvZGVmTmV3R2VuZXJhdGlvbi5jcHAKaW5kZXggMDcwM2Q1YS4uM2Q3Zjg2MCAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vbWVtb3J5L2RlZk5ld0dlbmVyYXRpb24uY3BwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9kZWZOZXdHZW5lcmF0aW9uLmNwcApAQCAtNTQ2LDcgKzU0Niw3IEBACiAgIGFzc2VydChfbmV4dF9nZW4gIT0gTlVMTCwKICAgICAiVGhpcyBtdXN0IGJlIHRoZSB5b3VuZ2VzdCBnZW4sIGFuZCBub3QgdGhlIG9ubHkgZ2VuIik7CiAKLSAgLy8gSWYgdGhlIG5leHQgZ2VuZXJhdGlvbiBpcyB0b28gZnVsbCB0byBhY2NvbW9kYXRlIHByb21vdGlvbgorICAvLyBJZiB0aGUgbmV4dCBnZW5lcmF0aW9uIGlzIHRvbyBmdWxsIHRvIGFjY29tbW9kYXRlIHByb21vdGlvbgogICAvLyBmcm9tIHRoaXMgZ2VuZXJhdGlvbiwgcGFzcyBvbiBjb2xsZWN0aW9uOyBsZXQgdGhlIG5leHQgZ2VuZXJhdGlvbgogICAvLyBkbyBpdC4KICAgaWYgKCFjb2xsZWN0aW9uX2F0dGVtcHRfaXNfc2FmZSgpKSB7CkBAIC02MTAsOSArNjEwLDExIEBACiAgIEZhc3RLZWVwQWxpdmVDbG9zdXJlIGtlZXBfYWxpdmUodGhpcywgJnNjYW5fd2Vha19yZWYpOwogICBSZWZlcmVuY2VQcm9jZXNzb3IqIHJwID0gcmVmX3Byb2Nlc3NvcigpOwogICBycC0+c2V0dXBfcG9saWN5KGNsZWFyX2FsbF9zb2Z0X3JlZnMpOwotICBycC0+cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoJmlzX2FsaXZlLCAma2VlcF9hbGl2ZSwgJmV2YWN1YXRlX2ZvbGxvd2VycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIF9nY190aW1lcik7Ci0gIGlmICghcHJvbW90aW9uX2ZhaWxlZCgpKSB7CisgIGNvbnN0IFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzJiBzdGF0cyA9CisgICAgcnAtPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKCZpc19hbGl2ZSwgJmtlZXBfYWxpdmUsICZldmFjdWF0ZV9mb2xsb3dlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIF9nY190aW1lcik7CisgIGdjX3RyYWNlci5yZXBvcnRfZ2NfcmVmZXJlbmNlX3N0YXRzKHN0YXRzKTsKKyAgaWYgKCFfcHJvbW90aW9uX2ZhaWxlZCkgewogICAgIC8vIFN3YXAgdGhlIHN1cnZpdm9yIHNwYWNlcy4KICAgICBlZGVuKCktPmNsZWFyKFNwYWNlRGVjb3JhdG9yOjpNYW5nbGUpOwogICAgIGZyb20oKS0+Y2xlYXIoU3BhY2VEZWNvcmF0b3I6Ok1hbmdsZSk7CkBAIC02NjEsNiArNjYzLDcgQEAKIAogICAgIC8vIEluZm9ybSB0aGUgbmV4dCBnZW5lcmF0aW9uIHRoYXQgYSBwcm9tb3Rpb24gZmFpbHVyZSBvY2N1cnJlZC4KICAgICBfbmV4dF9nZW4tPnByb21vdGlvbl9mYWlsdXJlX29jY3VycmVkKCk7CisgICAgZ2NfdHJhY2VyLnJlcG9ydF9wcm9tb3Rpb25fZmFpbGVkKF9wcm9tb3Rpb25fZmFpbGVkX2luZm8pOwogCiAgICAgLy8gUmVzZXQgdGhlIFByb21vdGlvbkZhaWx1cmVBTG90IGNvdW50ZXJzLgogICAgIE5PVF9QUk9EVUNUKFVuaXZlcnNlOjpoZWFwKCktPnJlc2V0X3Byb21vdGlvbl9zaG91bGRfZmFpbCgpOykKQEAgLTY3MCw3ICs2NzMsNyBAQAogICB0bygpLT5zZXRfY29uY3VycmVudF9pdGVyYXRpb25fc2FmZV9saW1pdCh0bygpLT50b3AoKSk7CiAgIFNwZWNpYWxpemF0aW9uU3RhdHM6OnByaW50KCk7CiAKLSAgLy8gV2UgbmVlZCB0byB1c2UgYSBtb25vdG9uaWNhbGx5IG5vbi1kZWNjcmVhc2luZyB0aW1lIGluIG1zCisgIC8vIFdlIG5lZWQgdG8gdXNlIGEgbW9ub3RvbmljYWxseSBub24tZGVjcmVhc2luZyB0aW1lIGluIG1zCiAgIC8vIG9yIHdlIHdpbGwgc2VlIHRpbWUtd2FycCB3YXJuaW5ncyBhbmQgb3M6OmphdmFUaW1lTWlsbGlzKCkKICAgLy8gZG9lcyBub3QgZ3VhcmFudGVlIG1vbm90b25pY2l0eS4KICAgamxvbmcgbm93ID0gb3M6OmphdmFUaW1lTmFub3MoKSAvIE5BTk9TRUNTX1BFUl9NSUxMSVNFQzsKQEAgLTY5Miw2ICs2OTUsNyBAQAogCiB2b2lkIERlZk5ld0dlbmVyYXRpb246OmluaXRfYXNzdW1pbmdfbm9fcHJvbW90aW9uX2ZhaWx1cmUoKSB7CiAgIF9wcm9tb3Rpb25fZmFpbGVkID0gZmFsc2U7CisgIF9wcm9tb3Rpb25fZmFpbGVkX2luZm8ucmVzZXQoKTsKICAgZnJvbSgpLT5zZXRfbmV4dF9jb21wYWN0aW9uX3NwYWNlKE5VTEwpOwogfQogCkBAIC03MTMsNyArNzE3LDcgQEAKIH0KIAogdm9pZCBEZWZOZXdHZW5lcmF0aW9uOjpwcmVzZXJ2ZV9tYXJrKG9vcCBvYmosIG1hcmtPb3AgbSkgewotICBhc3NlcnQocHJvbW90aW9uX2ZhaWxlZCgpICYmIG0tPm11c3RfYmVfcHJlc2VydmVkX2Zvcl9wcm9tb3Rpb25fZmFpbHVyZShvYmopLAorICBhc3NlcnQoX3Byb21vdGlvbl9mYWlsZWQgJiYgbS0+bXVzdF9iZV9wcmVzZXJ2ZWRfZm9yX3Byb21vdGlvbl9mYWlsdXJlKG9iaiksCiAgICAgICAgICAiT3ZlcnNhdmluZyEiKTsKICAgX29ianNfd2l0aF9wcmVzZXJ2ZWRfbWFya3MucHVzaChvYmopOwogICBfcHJlc2VydmVkX21hcmtzX29mX29ianMucHVzaChtKTsKQEAgLTczMSw2ICs3MzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgb2xkLT5zaXplKCkpOwogICB9CiAgIF9wcm9tb3Rpb25fZmFpbGVkID0gdHJ1ZTsKKyAgX3Byb21vdGlvbl9mYWlsZWRfaW5mby5yZWdpc3Rlcl9wcm9tb3Rpb25fZmFpbGVkKG9sZC0+c2l6ZSgpKTsKICAgcHJlc2VydmVfbWFya19pZl9uZWNlc3Nhcnkob2xkLCBvbGQtPm1hcmsoKSk7CiAgIC8vIGZvcndhcmQgdG8gc2VsZgogICBvbGQtPmZvcndhcmRfdG8ob2xkKTsKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9kZWZOZXdHZW5lcmF0aW9uLmhwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9kZWZOZXdHZW5lcmF0aW9uLmhwcAppbmRleCBhYWNiZDY2Li40MDQ0ZjgzIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9tZW1vcnkvZGVmTmV3R2VuZXJhdGlvbi5ocHAKKysrIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vbWVtb3J5L2RlZk5ld0dlbmVyYXRpb24uaHBwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiZ2NfaW1wbGVtZW50YXRpb24vc2hhcmVkL2FnZVRhYmxlLmhwcCIKICNpbmNsdWRlICJnY19pbXBsZW1lbnRhdGlvbi9zaGFyZWQvY1NwYWNlQ291bnRlcnMuaHBwIgogI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9nZW5lcmF0aW9uQ291bnRlcnMuaHBwIgorI2luY2x1ZGUgImdjX2ltcGxlbWVudGF0aW9uL3NoYXJlZC9wcm9tb3Rpb25GYWlsZWRJbmZvLmhwcCIKICNpbmNsdWRlICJtZW1vcnkvZ2VuZXJhdGlvbi5pbmxpbmUuaHBwIgogI2luY2x1ZGUgInV0aWxpdGllcy9zdGFjay5ocHAiCiAKQEAgLTQ3LDE1ICs0OCwxNyBAQAogICBpbnQgICAgICAgICBfdGVudXJpbmdfdGhyZXNob2xkOyAgIC8vIFRlbnVyaW5nIHRocmVzaG9sZCBmb3IgbmV4dCBjb2xsZWN0aW9uLgogICBhZ2VUYWJsZSAgICBfYWdlX3RhYmxlOwogICAvLyBTaXplIG9mIG9iamVjdCB0byBwcmV0ZW51cmUgaW4gd29yZHM7IGNvbW1hbmQgbGluZSBwcm92aWRlcyBieXRlcwotICBzaXplX3QgICAgICAgIF9wcmV0ZW51cmVfc2l6ZV90aHJlc2hvbGRfd29yZHM7CisgIHNpemVfdCAgICAgIF9wcmV0ZW51cmVfc2l6ZV90aHJlc2hvbGRfd29yZHM7CiAKICAgYWdlVGFibGUqICAgYWdlX3RhYmxlKCkgeyByZXR1cm4gJl9hZ2VfdGFibGU7IH0KKwogICAvLyBJbml0aWFsaXplIHN0YXRlIHRvIG9wdGltaXN0aWNhbGx5IGFzc3VtZSBubyBwcm9tb3Rpb24gZmFpbHVyZSB3aWxsCiAgIC8vIGhhcHBlbi4KICAgdm9pZCAgIGluaXRfYXNzdW1pbmdfbm9fcHJvbW90aW9uX2ZhaWx1cmUoKTsKICAgLy8gVHJ1ZSBpZmYgYSBwcm9tb3Rpb24gaGFzIGZhaWxlZCBpbiB0aGUgY3VycmVudCBjb2xsZWN0aW9uLgogICBib29sICAgX3Byb21vdGlvbl9mYWlsZWQ7CiAgIGJvb2wgICBwcm9tb3Rpb25fZmFpbGVkKCkgeyByZXR1cm4gX3Byb21vdGlvbl9mYWlsZWQ7IH0KKyAgUHJvbW90aW9uRmFpbGVkSW5mbyBfcHJvbW90aW9uX2ZhaWxlZF9pbmZvOwogCiAgIC8vIEhhbmRsaW5nIHByb21vdGlvbiBmYWlsdXJlLiAgQSB5b3VuZyBnZW5lcmF0aW9uIGNvbGxlY3Rpb24KICAgLy8gY2FuIGZhaWwgaWYgYSBsaXZlIG9iamVjdCBjYW5ub3QgYmUgY29waWVkIG91dCBvZiBpdHMKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9nZW5NYXJrU3dlZXAuY3BwIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vbWVtb3J5L2dlbk1hcmtTd2VlcC5jcHAKaW5kZXggNTBhOGNlMC4uMGEwOGNiYSAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vbWVtb3J5L2dlbk1hcmtTd2VlcC5jcHAKKysrIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vbWVtb3J5L2dlbk1hcmtTd2VlcC5jcHAKQEAgLTI5MSw4ICsyOTEsMTAgQEAKICAgLy8gUHJvY2VzcyByZWZlcmVuY2Ugb2JqZWN0cyBmb3VuZCBkdXJpbmcgbWFya2luZwogICB7CiAgICAgcmVmX3Byb2Nlc3NvcigpLT5zZXR1cF9wb2xpY3koY2xlYXJfYWxsX3NvZnRyZWZzKTsKLSAgICByZWZfcHJvY2Vzc29yKCktPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKAotICAgICAgJmlzX2FsaXZlLCAma2VlcF9hbGl2ZSwgJmZvbGxvd19zdGFja19jbG9zdXJlLCBOVUxMLCBfZ2NfdGltZXIpOworICAgIGNvbnN0IFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzJiBzdGF0cyA9CisgICAgICByZWZfcHJvY2Vzc29yKCktPnByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKAorICAgICAgICAmaXNfYWxpdmUsICZrZWVwX2FsaXZlLCAmZm9sbG93X3N0YWNrX2Nsb3N1cmUsIE5VTEwsIF9nY190aW1lcik7CisgICAgZ2NfdHJhY2VyKCktPnJlcG9ydF9nY19yZWZlcmVuY2Vfc3RhdHMoc3RhdHMpOwogICB9CiAKICAgLy8gRm9sbG93IHN5c3RlbSBkaWN0aW9uYXJ5IHJvb3RzIGFuZCB1bmxvYWQgY2xhc3NlcwpkaWZmIC0tZ2l0IGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vbWVtb3J5L3JlZmVyZW5jZVByb2Nlc3Nvci5jcHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9tZW1vcnkvcmVmZXJlbmNlUHJvY2Vzc29yLmNwcAppbmRleCBmYjJkYmZhLi4zOWY0OTgwIDEwMDY0NAotLS0gYS9ob3RzcG90L3NyYy9zaGFyZS92bS9tZW1vcnkvcmVmZXJlbmNlUHJvY2Vzc29yLmNwcAorKysgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9tZW1vcnkvcmVmZXJlbmNlUHJvY2Vzc29yLmNwcApAQCAtMTAyLDggKzEwMiw3IEBACiAgIF9kaXNjb3ZlcmVkX2xpc3RfbmVlZHNfYmFycmllcihkaXNjb3ZlcmVkX2xpc3RfbmVlZHNfYmFycmllciksCiAgIF9icyhOVUxMKSwKICAgX3Byb2Nlc3NpbmdfaXNfbXQobXRfcHJvY2Vzc2luZyksCi0gIF9uZXh0X2lkKDApLAotICBfc3RhdHMoKQorICBfbmV4dF9pZCgwKQogewogICBfc3BhbiA9IHNwYW47CiAgIF9kaXNjb3ZlcnlfaXNfYXRvbWljID0gYXRvbWljX2Rpc2NvdmVyeTsKQEAgLTE5MSwxNCArMTkwLDcgQEAKICAgcmV0dXJuIHRvdGFsOwogfQogCi12b2lkIFJlZmVyZW5jZVByb2Nlc3Nvcjo6c2F2ZV9kaXNjb3ZlcmVkX2xpc3Rfc3RhdHMoKSB7Ci0gIF9zdGF0cy5fc29mdF9jb3VudCA9IHRvdGFsX2NvdW50KF9kaXNjb3ZlcmVkU29mdFJlZnMpOwotICBfc3RhdHMuX3dlYWtfY291bnQgPSB0b3RhbF9jb3VudChfZGlzY292ZXJlZFdlYWtSZWZzKTsKLSAgX3N0YXRzLl9maW5hbF9jb3VudCA9IHRvdGFsX2NvdW50KF9kaXNjb3ZlcmVkRmluYWxSZWZzKTsKLSAgX3N0YXRzLl9waGFudG9tX2NvdW50ID0gdG90YWxfY291bnQoX2Rpc2NvdmVyZWRQaGFudG9tUmVmcyk7Ci19Ci0KLXZvaWQgUmVmZXJlbmNlUHJvY2Vzc29yOjpwcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcygKK1JlZmVyZW5jZVByb2Nlc3NvclN0YXRzIFJlZmVyZW5jZVByb2Nlc3Nvcjo6cHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoCiAgIEJvb2xPYmplY3RDbG9zdXJlKiAgICAgICAgICAgaXNfYWxpdmUsCiAgIE9vcENsb3N1cmUqICAgICAgICAgICAgICAgICAga2VlcF9hbGl2ZSwKICAgVm9pZENsb3N1cmUqICAgICAgICAgICAgICAgICBjb21wbGV0ZV9nYywKQEAgLTIyMCwzNyArMjEyLDQ0IEBACiAKICAgX3NvZnRfcmVmX3RpbWVzdGFtcF9jbG9jayA9IGphdmFfbGFuZ19yZWZfU29mdFJlZmVyZW5jZTo6Y2xvY2soKTsKIAotICBzYXZlX2Rpc2NvdmVyZWRfbGlzdF9zdGF0cygpOwotCiAgIGJvb2wgdHJhY2VfdGltZSA9IFByaW50R0NEZXRhaWxzICYmIFByaW50UmVmZXJlbmNlR0M7CisKICAgLy8gU29mdCByZWZlcmVuY2VzCisgIHNpemVfdCBzb2Z0X2NvdW50ID0gMDsKICAgewogICAgIEdDVHJhY2VUaW1lIHR0KCJTb2Z0UmVmZXJlbmNlIiwgdHJhY2VfdGltZSwgZmFsc2UsIGdjX3RpbWVyKTsKLSAgICBwcm9jZXNzX2Rpc2NvdmVyZWRfcmVmbGlzdChfZGlzY292ZXJlZFNvZnRSZWZzLCBfY3VycmVudF9zb2Z0X3JlZl9wb2xpY3ksIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYWxpdmUsIGtlZXBfYWxpdmUsIGNvbXBsZXRlX2djLCB0YXNrX2V4ZWN1dG9yKTsKKyAgICBzb2Z0X2NvdW50ID0KKyAgICAgIHByb2Nlc3NfZGlzY292ZXJlZF9yZWZsaXN0KF9kaXNjb3ZlcmVkU29mdFJlZnMsIF9jdXJyZW50X3NvZnRfcmVmX3BvbGljeSwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2FsaXZlLCBrZWVwX2FsaXZlLCBjb21wbGV0ZV9nYywgdGFza19leGVjdXRvcik7CiAgIH0KIAogICB1cGRhdGVfc29mdF9yZWZfbWFzdGVyX2Nsb2NrKCk7CiAKICAgLy8gV2VhayByZWZlcmVuY2VzCisgIHNpemVfdCB3ZWFrX2NvdW50ID0gMDsKICAgewogICAgIEdDVHJhY2VUaW1lIHR0KCJXZWFrUmVmZXJlbmNlIiwgdHJhY2VfdGltZSwgZmFsc2UsIGdjX3RpbWVyKTsKLSAgICBwcm9jZXNzX2Rpc2NvdmVyZWRfcmVmbGlzdChfZGlzY292ZXJlZFdlYWtSZWZzLCBOVUxMLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2FsaXZlLCBrZWVwX2FsaXZlLCBjb21wbGV0ZV9nYywgdGFza19leGVjdXRvcik7CisgICAgd2Vha19jb3VudCA9CisgICAgICBwcm9jZXNzX2Rpc2NvdmVyZWRfcmVmbGlzdChfZGlzY292ZXJlZFdlYWtSZWZzLCBOVUxMLCB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYWxpdmUsIGtlZXBfYWxpdmUsIGNvbXBsZXRlX2djLCB0YXNrX2V4ZWN1dG9yKTsKICAgfQogCiAgIC8vIEZpbmFsIHJlZmVyZW5jZXMKKyAgc2l6ZV90IGZpbmFsX2NvdW50ID0gMDsKICAgewogICAgIEdDVHJhY2VUaW1lIHR0KCJGaW5hbFJlZmVyZW5jZSIsIHRyYWNlX3RpbWUsIGZhbHNlLCBnY190aW1lcik7Ci0gICAgcHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmxpc3QoX2Rpc2NvdmVyZWRGaW5hbFJlZnMsIE5VTEwsIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2FsaXZlLCBrZWVwX2FsaXZlLCBjb21wbGV0ZV9nYywgdGFza19leGVjdXRvcik7CisgICAgZmluYWxfY291bnQgPQorICAgICAgcHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmxpc3QoX2Rpc2NvdmVyZWRGaW5hbFJlZnMsIE5VTEwsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYWxpdmUsIGtlZXBfYWxpdmUsIGNvbXBsZXRlX2djLCB0YXNrX2V4ZWN1dG9yKTsKICAgfQogCiAgIC8vIFBoYW50b20gcmVmZXJlbmNlcworICBzaXplX3QgcGhhbnRvbV9jb3VudCA9IDA7CiAgIHsKICAgICBHQ1RyYWNlVGltZSB0dCgiUGhhbnRvbVJlZmVyZW5jZSIsIHRyYWNlX3RpbWUsIGZhbHNlLCBnY190aW1lcik7Ci0gICAgcHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmxpc3QoX2Rpc2NvdmVyZWRQaGFudG9tUmVmcywgTlVMTCwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYWxpdmUsIGtlZXBfYWxpdmUsIGNvbXBsZXRlX2djLCB0YXNrX2V4ZWN1dG9yKTsKKyAgICBwaGFudG9tX2NvdW50ID0KKyAgICAgIHByb2Nlc3NfZGlzY292ZXJlZF9yZWZsaXN0KF9kaXNjb3ZlcmVkUGhhbnRvbVJlZnMsIE5VTEwsIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfYWxpdmUsIGtlZXBfYWxpdmUsIGNvbXBsZXRlX2djLCB0YXNrX2V4ZWN1dG9yKTsKICAgfQogCiAgIC8vIFdlYWsgZ2xvYmFsIEpOSSByZWZlcmVuY2VzLiBJdCB3b3VsZCBtYWtlIG1vcmUgc2Vuc2UgKHNlbWFudGljYWxseSkgdG8KQEAgLTI2NSw2ICsyNjQsOCBAQAogICAgIH0KICAgICBwcm9jZXNzX3BoYXNlSk5JKGlzX2FsaXZlLCBrZWVwX2FsaXZlLCBjb21wbGV0ZV9nYyk7CiAgIH0KKworICByZXR1cm4gUmVmZXJlbmNlUHJvY2Vzc29yU3RhdHMoc29mdF9jb3VudCwgd2Vha19jb3VudCwgZmluYWxfY291bnQsIHBoYW50b21fY291bnQpOwogfQogCiAjaWZuZGVmIFBST0RVQ1QKQEAgLTkwMCw3ICs5MDEsNyBAQAogICBiYWxhbmNlX3F1ZXVlcyhfZGlzY292ZXJlZFBoYW50b21SZWZzKTsKIH0KIAotdm9pZAorc2l6ZV90CiBSZWZlcmVuY2VQcm9jZXNzb3I6OnByb2Nlc3NfZGlzY292ZXJlZF9yZWZsaXN0KAogICBEaXNjb3ZlcmVkTGlzdCAgICAgICAgICAgICAgIHJlZnNfbGlzdHNbXSwKICAgUmVmZXJlbmNlUG9saWN5KiAgICAgICAgICAgICBwb2xpY3ksCkBAIC05MjMsOCArOTI0LDExIEBACiAgICAgICBtdXN0X2JhbGFuY2UpIHsKICAgICBiYWxhbmNlX3F1ZXVlcyhyZWZzX2xpc3RzKTsKICAgfQorCisgIHNpemVfdCB0b3RhbF9saXN0X2NvdW50ID0gdG90YWxfY291bnQocmVmc19saXN0cyk7CisKICAgaWYgKFByaW50UmVmZXJlbmNlR0MgJiYgUHJpbnRHQ0RldGFpbHMpIHsKLSAgICBnY2xvZ19vcl90dHktPnByaW50KCIsICV1IHJlZnMiLCB0b3RhbF9jb3VudChyZWZzX2xpc3RzKSk7CisgICAgZ2Nsb2dfb3JfdHR5LT5wcmludCgiLCAldSByZWZzIiwgdG90YWxfbGlzdF9jb3VudCk7CiAgIH0KIAogICAvLyBQaGFzZSAxIChzb2Z0IHJlZnMgb25seSk6CkBAIC05NjksNiArOTczLDggQEAKICAgICAgICAgICAgICAgICAgICAgIGlzX2FsaXZlLCBrZWVwX2FsaXZlLCBjb21wbGV0ZV9nYyk7CiAgICAgfQogICB9CisKKyAgcmV0dXJuIHRvdGFsX2xpc3RfY291bnQ7CiB9CiAKIHZvaWQgUmVmZXJlbmNlUHJvY2Vzc29yOjpjbGVhbl91cF9kaXNjb3ZlcmVkX3JlZmVyZW5jZXMoKSB7CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS9tZW1vcnkvcmVmZXJlbmNlUHJvY2Vzc29yLmhwcCBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9yZWZlcmVuY2VQcm9jZXNzb3IuaHBwCmluZGV4IGEzY2E5ZmIuLmQxOTE5YmUgMTAwNjQ0Ci0tLSBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9yZWZlcmVuY2VQcm9jZXNzb3IuaHBwCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9yZWZlcmVuY2VQcm9jZXNzb3IuaHBwCkBAIC0yMTAsMTAgKzIxMCw3IEBACiBjbGFzcyBSZWZlcmVuY2VQcm9jZXNzb3IgOiBwdWJsaWMgQ0hlYXBPYmo8bXRHQz4gewogCiAgcHJpdmF0ZToKLSAgUmVmZXJlbmNlUHJvY2Vzc29yU3RhdHMgX3N0YXRzOwotCiAgIHNpemVfdCB0b3RhbF9jb3VudChEaXNjb3ZlcmVkTGlzdCBsaXN0c1tdKTsKLSAgdm9pZCBzYXZlX2Rpc2NvdmVyZWRfbGlzdF9zdGF0cygpOwogCiAgcHJvdGVjdGVkOgogICAvLyBDb21wYXRpYmlsaXR5IHdpdGggcHJlLTQ5NjU3NzcgSkRLJ3MKQEAgLTI5MywxMyArMjkwLDEzIEBACiAgIH0KIAogICAvLyBQcm9jZXNzIHJlZmVyZW5jZXMgd2l0aCBhIGNlcnRhaW4gcmVhY2hhYmlsaXR5IGxldmVsLgotICB2b2lkIHByb2Nlc3NfZGlzY292ZXJlZF9yZWZsaXN0KERpc2NvdmVyZWRMaXN0ICAgICAgICAgICAgICAgcmVmc19saXN0c1tdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZmVyZW5jZVBvbGljeSogICAgICAgICAgICAgcG9saWN5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfcmVmZXJlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vbE9iamVjdENsb3N1cmUqICAgICAgICAgICBpc19hbGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPb3BDbG9zdXJlKiAgICAgICAgICAgICAgICAgIGtlZXBfYWxpdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm9pZENsb3N1cmUqICAgICAgICAgICAgICAgICBjb21wbGV0ZV9nYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnN0cmFjdFJlZlByb2NUYXNrRXhlY3V0b3IqIHRhc2tfZXhlY3V0b3IpOworICBzaXplX3QgcHJvY2Vzc19kaXNjb3ZlcmVkX3JlZmxpc3QoRGlzY292ZXJlZExpc3QgICAgICAgICAgICAgICByZWZzX2xpc3RzW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZlcmVuY2VQb2xpY3kqICAgICAgICAgICAgIHBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJfcmVmZXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sT2JqZWN0Q2xvc3VyZSogICAgICAgICAgIGlzX2FsaXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT29wQ2xvc3VyZSogICAgICAgICAgICAgICAgICBrZWVwX2FsaXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm9pZENsb3N1cmUqICAgICAgICAgICAgICAgICBjb21wbGV0ZV9nYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFic3RyYWN0UmVmUHJvY1Rhc2tFeGVjdXRvciogdGFza19leGVjdXRvcik7CiAKICAgdm9pZCBwcm9jZXNzX3BoYXNlSk5JKEJvb2xPYmplY3RDbG9zdXJlKiBpc19hbGl2ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIE9vcENsb3N1cmUqICAgICAgICBrZWVwX2FsaXZlLApAQCAtMzg0LDEyICszODEsNiBAQAogCiAgIHZvaWQgZW5xdWV1ZV9kaXNjb3ZlcmVkX3JlZmxpc3RzKEhlYXBXb3JkKiBwZW5kaW5nX2xpc3RfYWRkciwgQWJzdHJhY3RSZWZQcm9jVGFza0V4ZWN1dG9yKiB0YXNrX2V4ZWN1dG9yKTsKIAotICAvLyBSZXR1cm5zIHN0YXRpc3RpY3MgZnJvbSB0aGUgbGFzdCB0aW1lIHRoZSByZWZlcmVuY2Ugd2hlcmUgcHJvY2Vzc2VkIHZpYQotICAvLyBhbiBpbnZvY2F0aW9uIG9mIHByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzLgotICBjb25zdCBSZWZlcmVuY2VQcm9jZXNzb3JTdGF0cyYgY29sbGVjdF9zdGF0aXN0aWNzKCkgY29uc3QgewotICAgIHJldHVybiBfc3RhdHM7Ci0gIH0KLQogIHByb3RlY3RlZDoKICAgLy8gU2V0IHRoZSAnZGlzY292ZXJlZCcgZmllbGQgb2YgdGhlIGdpdmVuIHJlZmVyZW5jZSB0bwogICAvLyB0aGUgZ2l2ZW4gdmFsdWUgLSBlbWl0dGluZyBiYXJyaWVycyBkZXBlbmRpbmcgdXBvbgpAQCAtNDQ3LDggKzQzOCw3IEBACiAgICAgX251bV9xKDApLAogICAgIF9tYXhfbnVtX3EoMCksCiAgICAgX3Byb2Nlc3NpbmdfaXNfbXQoZmFsc2UpLAotICAgIF9uZXh0X2lkKDApLAotICAgIF9zdGF0cygpCisgICAgX25leHRfaWQoMCkKICAgeyB9CiAKICAgLy8gRGVmYXVsdCBwYXJhbWV0ZXJzIGdpdmUgeW91IGEgdmFuaWxsYSByZWZlcmVuY2UgcHJvY2Vzc29yLgpAQCAtNTIwLDExICs1MTAsMTIgQEAKICAgYm9vbCBkaXNjb3Zlcl9yZWZlcmVuY2Uob29wIG9iaiwgUmVmZXJlbmNlVHlwZSBydCk7CiAKICAgLy8gUHJvY2VzcyByZWZlcmVuY2VzIGZvdW5kIGR1cmluZyBHQyAoY2FsbGVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3RvcikKLSAgdm9pZCBwcm9jZXNzX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcyhCb29sT2JqZWN0Q2xvc3VyZSogICAgICAgICAgIGlzX2FsaXZlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9vcENsb3N1cmUqICAgICAgICAgICAgICAgICAga2VlcF9hbGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb2lkQ2xvc3VyZSogICAgICAgICAgICAgICAgIGNvbXBsZXRlX2djLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFic3RyYWN0UmVmUHJvY1Rhc2tFeGVjdXRvciogdGFza19leGVjdXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1RpbWVyICpnY190aW1lcik7CisgIFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzCisgIHByb2Nlc3NfZGlzY292ZXJlZF9yZWZlcmVuY2VzKEJvb2xPYmplY3RDbG9zdXJlKiAgICAgICAgICAgaXNfYWxpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9vcENsb3N1cmUqICAgICAgICAgICAgICAgICAga2VlcF9hbGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVm9pZENsb3N1cmUqICAgICAgICAgICAgICAgICBjb21wbGV0ZV9nYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWJzdHJhY3RSZWZQcm9jVGFza0V4ZWN1dG9yKiB0YXNrX2V4ZWN1dG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ1RpbWVyICpnY190aW1lcik7CiAKICAgLy8gRW5xdWV1ZSByZWZlcmVuY2VzIGF0IGVuZCBvZiBHQyAoY2FsbGVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3RvcikKICAgYm9vbCBlbnF1ZXVlX2Rpc2NvdmVyZWRfcmVmZXJlbmNlcyhBYnN0cmFjdFJlZlByb2NUYXNrRXhlY3V0b3IqIHRhc2tfZXhlY3V0b3IgPSBOVUxMKTsKZGlmZiAtLWdpdCBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9yZWZlcmVuY2VQcm9jZXNzb3JTdGF0cy5ocHAgYi9ob3RzcG90L3NyYy9zaGFyZS92bS9tZW1vcnkvcmVmZXJlbmNlUHJvY2Vzc29yU3RhdHMuaHBwCmluZGV4IDFiNzQ3MGIuLjdmNGEwNWIgMTAwNjQ0Ci0tLSBhL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL21lbW9yeS9yZWZlcmVuY2VQcm9jZXNzb3JTdGF0cy5ocHAKKysrIGIvaG90c3BvdC9zcmMvc2hhcmUvdm0vbWVtb3J5L3JlZmVyZW5jZVByb2Nlc3NvclN0YXRzLmhwcApAQCAtMzIsOSArMzIsNiBAQAogLy8gUmVmZXJlbmNlUHJvY2Vzc29yU3RhdHMgY29udGFpbnMgc3RhdGlzdGljcyBhYm91dCBob3cgbWFueSByZWZlcmVuY2VzIHRoYXQKIC8vIGhhdmUgYmVlbiB0cmF2ZXJzZWQgd2hlbiBwcm9jZXNzaW5nIHJlZmVyZW5jZXMgZHVyaW5nIGdhcmJhZ2UgY29sbGVjdGlvbi4KIGNsYXNzIFJlZmVyZW5jZVByb2Nlc3NvclN0YXRzIHsKLSAgZnJpZW5kIGNsYXNzIFJlZmVyZW5jZVByb2Nlc3NvcjsKLQotIHByaXZhdGU6CiAgIHNpemVfdCBfc29mdF9jb3VudDsKICAgc2l6ZV90IF93ZWFrX2NvdW50OwogICBzaXplX3QgX2ZpbmFsX2NvdW50OwpAQCAtNDcsNiArNDQsMTYgQEAKICAgICBfZmluYWxfY291bnQoMCksCiAgICAgX3BoYW50b21fY291bnQoMCkge30KIAorICBSZWZlcmVuY2VQcm9jZXNzb3JTdGF0cyhzaXplX3Qgc29mdF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHdlYWtfY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBmaW5hbF9jb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHBoYW50b21fY291bnQpIDoKKyAgICBfc29mdF9jb3VudChzb2Z0X2NvdW50KSwKKyAgICBfd2Vha19jb3VudCh3ZWFrX2NvdW50KSwKKyAgICBfZmluYWxfY291bnQoZmluYWxfY291bnQpLAorICAgIF9waGFudG9tX2NvdW50KHBoYW50b21fY291bnQpCisgIHt9CisKICAgc2l6ZV90IHNvZnRfY291bnQoKSBjb25zdCB7CiAgICAgcmV0dXJuIF9zb2Z0X2NvdW50OwogICB9CmRpZmYgLS1naXQgYS9ob3RzcG90L3NyYy9zaGFyZS92bS90cmFjZS90cmFjZS54bWwgYi9ob3RzcG90L3NyYy9zaGFyZS92bS90cmFjZS90cmFjZS54bWwKaW5kZXggYmMwMmI1Yi4uODYwM2NjNCAxMDA2NDQKLS0tIGEvaG90c3BvdC9zcmMvc2hhcmUvdm0vdHJhY2UvdHJhY2UueG1sCisrKyBiL2hvdHNwb3Qvc3JjL3NoYXJlL3ZtL3RyYWNlL3RyYWNlLnhtbApAQCAtMTY4LDggKzE2OCw2IEBACiAgICAgPGV2ZW50IGlkPSJHQ1lvdW5nR2FyYmFnZUNvbGxlY3Rpb24iIHBhdGg9InZtL2djL2NvbGxlY3Rvci95b3VuZ19nYXJiYWdlX2NvbGxlY3Rpb24iIGxhYmVsPSJZb3VuZyBHYXJiYWdlIENvbGxlY3Rpb24iCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJFeHRyYSBpbmZvcm1hdGlvbiBzcGVjaWZpYyB0byBZb3VuZyBHYXJiYWdlIENvbGxlY3Rpb25zIj4KICAgICAgIDx2YWx1ZSB0eXBlPSJVTE9ORyIgZmllbGQ9ImdjSWQiICBsYWJlbD0iR0MgSUQiIHJlbGF0aW9uPSJHQ19JRCIgLz4KLSAgICAgIDwhLS0gVGhpcyBpbmZvcm1hdGlvbiBjYW4gYWxzbyBiZSBmb3VuZCBieSBsb29raW5nIGZvciBQcm9tb3Rpb25GYWlsZWQgZXZlbnRzLiBJdCdzIGhlcmUgZm9yIGNvbnZlbmllbmNlLiAtLT4KLSAgICAgIDx2YWx1ZSB0eXBlPSJCT09MRUFOIiBmaWVsZD0icHJvbW90aW9uRmFpbGVkIiBsYWJlbD0iUHJvbW90aW9uIEZhaWxlZCIgZGVzY3JpcHRpb249IlRlbGxzIGlmIHdlIGZhaWxlZCB0byBwcm9tb3RlIHNvbWUgb2JqZWN0cyB0byB0aGUgb2xkIGdlbiIgLz4KICAgICA8L2V2ZW50PgogCiAgICAgPGV2ZW50IGlkPSJHQ09sZEdhcmJhZ2VDb2xsZWN0aW9uIiBwYXRoPSJ2bS9nYy9jb2xsZWN0b3Ivb2xkX2dhcmJhZ2VfY29sbGVjdGlvbiIgbGFiZWw9Ik9sZCBHYXJiYWdlIENvbGxlY3Rpb24iCkBAIC0xODMsNyArMTgxLDcgQEAKICAgICAgIDx2YWx1ZSB0eXBlPSJHMVlDVFlQRSIgZmllbGQ9InR5cGUiIGxhYmVsPSJUeXBlIiAvPgogICAgIDwvZXZlbnQ+CiAKLSAgICA8ZXZlbnQgaWQ9IkdDUmVmZXJlbmNlUHJvY2Vzc2luZyIgcGF0aD0idm0vZ2MvcmVmZXJlbmNlL3N0YXRpc3RpY3MiCisgICAgPGV2ZW50IGlkPSJHQ1JlZmVyZW5jZVN0YXRpc3RpY3MiIHBhdGg9InZtL2djL3JlZmVyZW5jZS9zdGF0aXN0aWNzIgogICAgICAgICAgICBsYWJlbD0iR0MgUmVmZXJlbmNlIFByb2Nlc3NpbmciIGlzX2luc3RhbnQ9InRydWUiCiAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJUb3RhbCBjb3VudCBvZiBwcm9jZXNzZWQgcmVmZXJlbmNlcyBkdXJpbmcgR0MiPgogICAgICAgPHZhbHVlIHR5cGU9IlVMT05HIiBmaWVsZD0iZ2NJZCIgbGFiZWw9IkdDIElEIiByZWxhdGlvbj0iR0NfSUQiLz4KQEAgLTE5NSw3ICsxOTMsMTAgQEAKICAgICAgICAgICAgZGVzY3JpcHRpb249IlByb21vdGlvbiBvZiBhbiBvYmplY3QgZmFpbGVkIj4KICAgICAgIDx2YWx1ZSB0eXBlPSJVTE9ORyIgZmllbGQ9ImdjSWQiIGxhYmVsPSJHQyBJRCIgcmVsYXRpb249IkdDX0lEIi8+CiAgICAgICA8dmFsdWUgdHlwZT0iQllURVM2NCIgZmllbGQ9Im9iamVjdENvdW50IiBsYWJlbD0iT2JqZWN0IENvdW50Ii8+CisgICAgICA8dmFsdWUgdHlwZT0iQllURVM2NCIgZmllbGQ9ImZpcnN0U2l6ZSIgbGFiZWw9IkZpcnN0IEZhaWxlZCBPYmplY3QgU2l6ZSIvPgorICAgICAgPHZhbHVlIHR5cGU9IkJZVEVTNjQiIGZpZWxkPSJzbWFsbGVzdFNpemUiIGxhYmVsPSJTbWFsbGVzdCBGYWlsZWQgT2JqZWN0IFNpemUiLz4KICAgICAgIDx2YWx1ZSB0eXBlPSJCWVRFUzY0IiBmaWVsZD0idG90YWxTaXplIiBsYWJlbD0iVG90YWwgT2JqZWN0IFNpemUiLz4KKyAgICAgIDx2YWx1ZSB0eXBlPSJPU1RIUkVBRCIgZmllbGQ9InRocmVhZCIgbGFiZWw9IlJ1bm5pbmcgdGhyZWFkIi8+CiAgICAgPC9ldmVudD4KIAogICAgIDxldmVudCBpZD0iR0NQaGFzZVBhdXNlIiBwYXRoPSJ2bS9nYy9waGFzZXMvcGF1c2UiIGxhYmVsPSJHQyBQaGFzZSBQYXVzZSI+CmRpZmYgLS1naXQgYS9ob3RzcG90L3Rlc3QvcnVudGltZS9OTVQvQmFzZWxpbmVXaXRoUGFyYW1ldGVyLmphdmEgYi9ob3RzcG90L3Rlc3QvcnVudGltZS9OTVQvQmFzZWxpbmVXaXRoUGFyYW1ldGVyLmphdmEKaW5kZXggNTk0YmQ3MS4uZmYxMGIyOCAxMDA2NDQKLS0tIGEvaG90c3BvdC90ZXN0L3J1bnRpbWUvTk1UL0Jhc2VsaW5lV2l0aFBhcmFtZXRlci5qYXZhCisrKyBiL2hvdHNwb3QvdGVzdC9ydW50aW1lL05NVC9CYXNlbGluZVdpdGhQYXJhbWV0ZXIuamF2YQpAQCAtNDMsNyArNDMsNyBAQAogCiAgICAgLy8gUnVuICdqY21kIDxwaWQ+IFZNLm5hdGl2ZV9tZW1vcnkgYmFzZWxpbmU9ZmFsc2UnCiAgICAgcGIuY29tbWFuZChuZXcgU3RyaW5nW10geyBKREtUb29sRmluZGVyLmdldEpES1Rvb2woImpjbWQiKSwgcGlkLCAiVk0ubmF0aXZlX21lbW9yeSIsICJiYXNlbGluZT1mYWxzZSJ9KTsKLSAgICBwYi5zdGFydCgpOworICAgIHBiLnN0YXJ0KCkud2FpdEZvcigpOwogCiAgICAgLy8gUnVuICdqY21kIDxwaWQ+IFZNLm5hdGl2ZV9tZW1vcnkgc3VtbWFyeT1mYWxzZScKICAgICBwYi5jb21tYW5kKG5ldyBTdHJpbmdbXSB7IEpES1Rvb2xGaW5kZXIuZ2V0SkRLVG9vbCgiamNtZCIpLCBwaWQsICJWTS5uYXRpdmVfbWVtb3J5IiwgInN1bW1hcnk9ZmFsc2UifSk7CmRpZmYgLS1naXQgYS9qYXhwLy5oZ3RhZ3MgYi9qYXhwLy5oZ3RhZ3MKaW5kZXggMjRhMWI1NS4uMzE4ZDY0ZCAxMDA2NDQKLS0tIGEvamF4cC8uaGd0YWdzCisrKyBiL2pheHAvLmhndGFncwpAQCAtMjY3LDMgKzI2Nyw0IEBACiA4YTk4NjdlZTQyOTQ0MGI2NTdlYjU4NTJjNGRhZTVmMDI5MzU2MDIyIGpkazd1MTctYjAxCiA3ODYzYTYwYWU0YjRhMGM3ZDc2MmE5NWU3N2U1ODlmYWZhNGU1MGFlIGpkazd1MTctYjAyCiA3YjQ3ZTFhMjZmN2NiYjhkOGQyMmVhMTY1ZjJkN2ZiYmJkMzU0Yzc3IGpkazd1MTQtYjE2Cis3N2FjMWVmNDJiMmZkNDdjYzg3Yjk4MDBmNjNlZmRkNGNmMmZhMDVkIGpkazd1MTQtYjE3CmRpZmYgLS1naXQgYS9qYXh3cy8uaGd0YWdzIGIvamF4d3MvLmhndGFncwppbmRleCA0NGE4YzdmLi5mMDk3NzI0IDEwMDY0NAotLS0gYS9qYXh3cy8uaGd0YWdzCisrKyBiL2pheHdzLy5oZ3RhZ3MKQEAgLTI2NywzICsyNjcsNCBAQAogYjg0OTZkMWRjMDA1ODM0MWRhMTc5MGJjMmU3ZDJkYmJhNmQ0ZjkwZSBqZGs3dTE3LWIwMQogZGVmZGUzZWYwMzYwNWIxNjYwYTI0NmVhODVkMmU4MTBlM2ZlNGY2ZSBqZGs3dTE3LWIwMgogYTM2N2ViZjBjMjE1MTI4NjdmNGFiNWNkZDIwNmRkOGM3ODE3YzAwNCBqZGs3dTE0LWIxNgorNzRjMzRmMzU5MTJkOGQ3MTQ1YjNmZjM0ZmVmZWEyZDJmMTg5ZjJiNCBqZGs3dTE0LWIxNwpkaWZmIC0tZ2l0IGEvamRrLy5oZ3RhZ3MgYi9qZGsvLmhndGFncwppbmRleCBjYjk4NTM4Li40MGIxYTU4IDEwMDY0NAotLS0gYS9qZGsvLmhndGFncworKysgYi9qZGsvLmhndGFncwpAQCAtMjY2LDMgKzI2Niw0IEBACiBiNWFlNmZiOTJlNzFkZjE4MzMyMjEwMjZlZmU1MDg2MzU5M2JmNjgyIGpkazd1MTctYjAxCiBiMTMwYzhjZmVjZmM1NTI2MTQwNDdiMzI0NGQ1ZDk0NDM5ODI3ZmNkIGpkazd1MTctYjAyCiA1NTVlYTBjNGU5NTY3Mjk0ZDM3NzkzNzc3ZDUyMTkwMmQ0M2YxYTM5IGpkazd1MTQtYjE2Cis5NTBmYTgyN2MyZWM4YTNhMWNlYmE3NTU5OTRhZTU5MDE2ZGFhNjIxIGpkazd1MTQtYjE3CmRpZmYgLS1naXQgYS9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvVkVSU0lPTiBiL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9WRVJTSU9OCmluZGV4IDg1ZGI4NzEuLjQzOGVlMGYgMTAwNjQ0Ci0tLSBhL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9WRVJTSU9OCisrKyBiL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9WRVJTSU9OCkBAIC0yMSw0ICsyMSw0IEBACiAjIG9yIHZpc2l0IHd3dy5vcmFjbGUuY29tIGlmIHlvdSBuZWVkIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb3IgaGF2ZSBhbnkKICMgcXVlc3Rpb25zLgogIwotdHpkYXRhMjAxMmkKK3R6ZGF0YTIwMTNiCmRpZmYgLS1naXQgYS9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvYWZyaWNhIGIvamRrL21ha2Uvc3VuL2phdmF6aWMvdHpkYXRhL2FmcmljYQppbmRleCA3ZGI5YjNkLi4yZjVkM2M1IDEwMDY0NAotLS0gYS9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvYWZyaWNhCisrKyBiL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9hZnJpY2EKQEAgLTI3LDkgKzI3LDkgQEAKIAogIyBUaGlzIGRhdGEgaXMgYnkgbm8gbWVhbnMgYXV0aG9yaXRhdGl2ZTsgaWYgeW91IHRoaW5rIHlvdSBrbm93IGJldHRlciwKICMgZ28gYWhlYWQgYW5kIGVkaXQgdGhlIGZpbGUgKGFuZCBwbGVhc2Ugc2VuZCBhbnkgY2hhbmdlcyB0bwotIyB0ekBlbHNpZS5uY2kubmloLmdvdiBmb3IgZ2VuZXJhbCB1c2UgaW4gdGhlIGZ1dHVyZSkuCisjIHR6QGlhbmEub3JnIGZvciBnZW5lcmFsIHVzZSBpbiB0aGUgZnV0dXJlKS4KIAotIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKKyMgRnJvbSBQYXVsIEVnZ2VydCAoMjAxMy0wMi0yMSk6CiAjCiAjIEEgZ29vZCBzb3VyY2UgZm9yIHRpbWUgem9uZSBoaXN0b3JpY2FsIGRhdGEgb3V0c2lkZSB0aGUgVS5TLiBpcwogIyBUaG9tYXMgRy4gU2hhbmtzIGFuZCBSaXF1ZSBQb3R0ZW5nZXIsIFRoZSBJbnRlcm5hdGlvbmFsIEF0bGFzICg2dGggZWRpdGlvbiksCkBAIC00OCw2ICs0OCwxMCBAQAogIyBXaGl0bWFuIFB1Ymxpc2hpbmcgQ28sIDIgTmlhZ2FyYSBBdiwgRWFsaW5nLCBMb25kb24gKHVuZGF0ZWQpLCB3aGljaAogIyBJIGZvdW5kIGluIHRoZSBVQ0xBIGxpYnJhcnkuCiAjCisjIEZvciBkYXRhIGNpcmNhIDE4OTksIGEgY29tbW9uIHNvdXJjZSBpczoKKyMgTWlsbmUgSi4gQ2l2aWwgdGltZS4gR2VvZ3IgSi4gMTg5OSBGZWI7MTMoMik6MTczLTk0CisjIDxodHRwOi8vd3d3LmpzdG9yLm9yZy9zdGFibGUvMTc3NDM1OT4uCisjCiAjIEEgcmVsaWFibGUgYW5kIGVudGVydGFpbmluZyBzb3VyY2UgYWJvdXQgdGltZSB6b25lcyBpcwogIyBEZXJlayBIb3dzZSwgR3JlZW53aWNoIHRpbWUgYW5kIGxvbmdpdHVkZSwgUGhpbGlwIFdpbHNvbiBQdWJsaXNoZXJzICgxOTk3KS4KICMKQEAgLTEzOSw4ICsxNDMsMTIgQEAKIAkJCTE6MDAJLQlXQVQKIAogIyBCb3Rzd2FuYQorIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDEzLTAyLTIxKToKKyMgTWlsbmUgc2F5cyB0aGV5IHdlcmUgcmVndWxhdGVkIGJ5IHRoZSBDYXBlIFRvd24gU2lnbmFsIGluIDE4OTk7CisjIGFzc3VtZSB0aGV5IHN3aXRjaGVkIHRvIDI6MDAgd2hlbiBDYXBlIFRvd24gZGlkLgogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQogWm9uZQlBZnJpY2EvR2Fib3JvbmUJMTo0Mzo0MCAtCUxNVAkxODg1CisJCQkxOjMwCS0JU0FTVAkxOTAzIE1hcgogCQkJMjowMAktCUNBVAkxOTQzIFNlcCAxOSAyOjAwCiAJCQkyOjAwCTE6MDAJQ0FTVAkxOTQ0IE1hciAxOSAyOjAwCiAJCQkyOjAwCS0JQ0FUCkBAIC0yMTIsNiArMjIwLDExIEBACiAKICMgRWd5cHQKIAorIyBNaWxuZSBzYXlzIENhaXJvIHVzZWQgMjowNTowOC45LCB0aGUgbG9jYWwgbWVhbiB0aW1lIG9mIHRoZSBBYmJhc2l6ZWgKKyMgb2JzZXJ2YXRvcnk7IHJvdW5kIHRvIG5lYXJlc3QuICBNaWxuZSBhbHNvIHNheXMgdGhhdCB0aGUgb2ZmaWNpYWwgdGltZSBmb3IKKyMgRWd5cHQgd2FzIG1lYW4gbm9vbiBhdCB0aGUgR3JlYXQgUHlyYW1pZCwgMjowNDozMC41LCBidXQgYXBwYXJlbnRseSB0aGlzCisjIGRpZCBub3QgYXBwbHkgdG8gQ2Fpcm8sIEFsZXhhbmRyaWEsIG9yIFBvcnQgU2FpZC4KKwogIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKIFJ1bGUJRWd5cHQJMTk0MAlvbmx5CS0JSnVsCTE1CTA6MDAJMTowMAlTCiBSdWxlCUVneXB0CTE5NDAJb25seQktCU9jdAkgMQkwOjAwCTAJLQpAQCAtMzUyLDcgKzM2NSw3IEBACiBSdWxlCUVneXB0CTIwMTAJb25seQktCVNlcAlsYXN0VGh1CTIzOjAwcwkwCS0KIAogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQotWm9uZQlBZnJpY2EvQ2Fpcm8JMjowNTowMCAtCUxNVAkxOTAwIE9jdAorWm9uZQlBZnJpY2EvQ2Fpcm8JMjowNTowOSAtCUxNVAkxOTAwIE9jdAogCQkJMjowMAlFZ3lwdAlFRSVzVAogCiAjIEVxdWF0b3JpYWwgR3VpbmVhCkBAIC00NDcsNiArNDYwLDIwIEBACiAKICMgTGlieWEKIAorIyBGcm9tIEV2ZW4gU2NoYXJuaW5nICgyMDEyLTExLTEwKToKKyMgTGlieWEgc2V0IHRoZWlyIHRpbWUgb25lIGhvdXIgYmFjayBhdCAwMjowMCBvbiBTYXR1cmRheSBOb3ZlbWJlciAxMC4KKyMgaHR0cDovL3d3dy5saWJ5YWhlcmFsZC5jb20vMjAxMi8xMS8wNC9jbG9ja3MtdG8tZ28tYmFjay1hbi1ob3VyLW9uLXNhdHVyZGF5LworIyBIZXJlIGlzIGFuIG9mZmljaWFsIHNvdXJjZSBbaW4gQXJhYmljXTogaHR0cDovL2xzLmx5L2ZiNlljCisjCisjIFN0ZWZmZW4gVGhvcnNlbiBmb3J3YXJkZWQgYSB0cmFuc2xhdGlvbiAoMjAxMi0xMS0xMCkgaW4KKyMgaHR0cDovL21tLmljYW5uLm9yZy9waXBlcm1haWwvdHovMjAxMi1Ob3ZlbWJlci8wMTg0NTEuaHRtbAorIworIyBGcm9tIFRpbSBQYXJlbnRpICgyMDEyLTExLTExKToKKyMgVHJlYXQgdGhlIDIwMTItMTEtMTAgY2hhbmdlIGFzIGEgem9uZSBjaGFuZ2UgZnJvbSBVVEMrMiB0byBVVEMrMS4KKyMgVGhlIERTVCBydWxlcyBwbGFubmVkIGZvciAyMDEzIGFuZCBvbndhcmQgcm91Z2hseSBtaXJyb3IgdGhvc2Ugb2YgRXVyb3BlCisjIChlaXRoZXIgdHdvIGRheXMgYmVmb3JlIHRoZW0gb3IgZml2ZSBkYXlzIGFmdGVyIHRoZW0sIHNvIGFzIHRvIGZhbGwgb24KKyMgbGFzdEZyaSBpbnN0ZWFkIG9mIGxhc3RTdW4pLgorCiAjIFJ1bGUJTkFNRQlGUk9NCVRPCVRZUEUJSU4JT04JQVQJU0FWRQlMRVRURVIvUwogUnVsZQlMaWJ5YQkxOTUxCW9ubHkJLQlPY3QJMTQJMjowMAkxOjAwCVMKIFJ1bGUJTGlieWEJMTk1Mglvbmx5CS0JSmFuCSAxCTA6MDAJMAktCkBAIC00NjEsMTcgKzQ4OCwyMSBAQAogUnVsZQlMaWJ5YQkxOTg2CW9ubHkJLQlPY3QJIDMJMDowMAkwCS0KIFJ1bGUJTGlieWEJMTk4NwkxOTg5CS0JQXByCSAxCTA6MDAJMTowMAlTCiBSdWxlCUxpYnlhCTE5ODcJMTk4OQktCU9jdAkgMQkwOjAwCTAJLQorUnVsZQlMaWJ5YQkxOTk3CW9ubHkJLQlBcHIJIDQJMDowMAkxOjAwCVMKK1J1bGUJTGlieWEJMTk5Nwlvbmx5CS0JT2N0CSA0CTA6MDAJMAktCitSdWxlCUxpYnlhCTIwMTMJbWF4CS0JTWFyCWxhc3RGcmkJMTowMAkxOjAwCVMKK1J1bGUJTGlieWEJMjAxMwltYXgJLQlPY3QJbGFzdEZyaQkyOjAwCTAJLQogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQogWm9uZQlBZnJpY2EvVHJpcG9saQkwOjUyOjQ0IC0JTE1UCTE5MjAKIAkJCTE6MDAJTGlieWEJQ0Ulc1QJMTk1OQogCQkJMjowMAktCUVFVAkxOTgyCiAJCQkxOjAwCUxpYnlhCUNFJXNUCTE5OTAgTWF5ICA0Ci0jIFRoZSBmb2xsb3dpbmcgZW50cmllcyBhcmUgZnJvbSBTaGFua3MgJiBQb3R0ZW5nZXI7CisjIFRoZSAxOTk2IGFuZCAxOTk3IGVudHJpZXMgYXJlIGZyb20gU2hhbmtzICYgUG90dGVuZ2VyOwogIyB0aGUgSUFUQSBTU0lNIGRhdGEgY29udGFpbiBzb21lIG9idmlvdXMgZXJyb3JzLgogCQkJMjowMAktCUVFVAkxOTk2IFNlcCAzMAotCQkJMTowMAktCUNFVAkxOTk3IEFwciAgNAotCQkJMTowMAkxOjAwCUNFU1QJMTk5NyBPY3QgIDQKLQkJCTI6MDAJLQlFRVQKKwkJCTE6MDAJTGlieWEJQ0Ulc1QJMTk5NyBPY3QgIDQKKwkJCTI6MDAJLQlFRVQJMjAxMiBOb3YgMTAgMjowMAorCQkJMTowMAlMaWJ5YQlDRSVzVAogCiAjIE1hZGFnYXNjYXIKICMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KQEAgLTgzOCw2ICs4NjksNDEgQEAKICMgMzowMCBhbSBGcmlkYXksIEp1bHkgMjAsIDIwMTIgYW5kIHdpbGwgYWdhaW4gYmUgYWR2YW5jZWQgYnkgNjAgbWludXRlcwogIyBBdWd1c3QgMjAsIDIwMTIgZnJvbSAyOjAwIGFtLgogCisjIEZyb20gUGF1bCBFZ2dlcnQgKDIwMTMtMDMtMDYpOgorIyBNb3JvY2NvJ3MgZGF5bGlnaHQtc2F2aW5nIHRyYW5zaXRpb25zIGR1ZSB0byBSYW1hZGFuIHNlZW0gdG8gYmUKKyMgYW5ub3VuY2VkIGEgYml0IGluIGFkdmFuY2UuICBPbiAyMDEyLTA3LTExIHRoZSBNb3JvY2NhbiBnb3Zlcm5tZW50CisjIGFubm91bmNlZCB0aGF0IHllYXIncyBSYW1hZGFuIGRheWxpZ2h0LXNhdmluZyB0cmFuc2l0aW9ucyB3b3VsZCBiZQorIyAyMDEyLTA3LTIwIGFuZCAyMDEyLTA4LTIwOyBzZWUKKyMgPGh0dHA6Ly93d3cubW1zcC5nb3YubWEvZnIvYWN0dWFsaXRlcy5hc3B4P2lkPTI4OD4uCisjCisjIFRvIGVzdGltYXRlIHdoYXQgdGhlIE1vcm9jY2FuIGdvdmVybm1lbnQgd2lsbCBkbyBpbiBmdXR1cmUgeWVhcnMsCisjIHRyYW5zaXRpb24gZGF0ZXMgZm9yIDIwMTMgdGhyb3VnaCAyMDIxIHdlcmUgZGV0ZXJtaW5lZCBieSBydW5uaW5nCisjIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbSB1bmRlciBHTlUgRW1hY3MgMjQuMzoKKyMKKyMgKGxldCAoKGlzbGFtaWMteWVhciAxNDM0KSkKKyMgICAod2hpbGUgKDwgaXNsYW1pYy15ZWFyIDE0NDQpCisjICAgICAobGV0ICgoYQorIwkgICAgIChjYWxlbmRhci1ncmVnb3JpYW4tZnJvbS1hYnNvbHV0ZQorIwkgICAgICAoY2FsZW5kYXItaXNsYW1pYy10by1hYnNvbHV0ZSAobGlzdCA5IDEgaXNsYW1pYy15ZWFyKSkpKQorIwkgICAgKGIKKyMJICAgICAoY2FsZW5kYXItZ3JlZ29yaWFuLWZyb20tYWJzb2x1dGUKKyMJICAgICAgKGNhbGVuZGFyLWlzbGFtaWMtdG8tYWJzb2x1dGUgKGxpc3QgMTAgMSBpc2xhbWljLXllYXIpKSkpKQorIwkoaW5zZXJ0CisjCSAoZm9ybWF0CisjCSAgKGNvbmNhdCAiUnVsZVx0TW9yb2Njb1x0JWRcdG9ubHlcdC1cdCVzXHQgJTJkXHQgMzowMFx0MFx0LVxuIgorIwkJICAiUnVsZVx0TW9yb2Njb1x0JWRcdG9ubHlcdC1cdCVzXHQgJTJkXHQgMjowMFx0MTowMFx0U1xuIikKKyMJICAoY2FyIChjZHIgKGNkciBhKSkpIChjYWxlbmRhci1tb250aC1uYW1lIChjYXIgYSkgdCkgKGNhciAoY2RyIGEpKQorIwkgIChjYXIgKGNkciAoY2RyIGIpKSkgKGNhbGVuZGFyLW1vbnRoLW5hbWUgKGNhciBiKSB0KSAoY2FyIChjZHIgYikpKSkpCisjICAgICAoc2V0cSBpc2xhbWljLXllYXIgKCsgMSBpc2xhbWljLXllYXIpKSkpCisjCisjIHdpdGggdGhlIHJlc3VsdHMgaGFuZC1lZGl0ZWQgZm9yIDIwMjAtMjAyMiwgd2hlbiB0aGUgbm9ybWFsIHNwcmluZy1mb3J3YXJkCisjIGRhdGUgZmFsbHMgZHVyaW5nIHRoZSBlc3RpbWF0ZWQgUmFtYWRhbi4KKyMKKyMgRnJvbSAyMDIzIHRocm91Z2ggMjAzOCBSYW1hZGFuIGlzIG5vdCBwcmVkaWN0ZWQgdG8gb3ZlcmxhcCB3aXRoCisjIGRheWxpZ2h0IHNhdmluZyB0aW1lLiAgU3RhcnRpbmcgaW4gMjAzOSB0aGVyZSB3aWxsIGJlIG92ZXJsYXAgYWdhaW4sCisjIGJ1dCAzMi1iaXQgdGltZV90IHZhbHVlcyByb2xsIGFyb3VuZCBpbiAyMDM4IHNvIGZvciBub3cgZG8gbm90IHdvcnJ5CisjIGFib3V0IGRhdGVzIGFmdGVyIDIwMzguCisKICMgUlVMRQlOQU1FCUZST00JVE8JVFlQRQlJTglPTglBVAlTQVZFCUxFVFRFUi9TCiAKIFJ1bGUJTW9yb2NjbwkxOTM5CW9ubHkJLQlTZXAJMTIJIDA6MDAJMTowMAlTCkBAIC04NjMsMTAgKzkyOSwyOCBAQAogUnVsZQlNb3JvY2NvCTIwMTAJb25seQktCUF1ZwkgOAkgMDowMAkwCS0KIFJ1bGUJTW9yb2NjbwkyMDExCW9ubHkJLQlBcHIJIDMJIDA6MDAJMTowMAlTCiBSdWxlCU1vcm9jY28JMjAxMQlvbmx5CS0JSnVsCSAzMQkgMAkwCS0KLVJ1bGUJTW9yb2NjbwkyMDEyCW1heAktCUFwcgkgbGFzdFN1biAyOjAwCTE6MDAJUworUnVsZQlNb3JvY2NvCTIwMTIJMjAxOQktCUFwcgkgbGFzdFN1biAyOjAwCTE6MDAJUwogUnVsZQlNb3JvY2NvCTIwMTIJbWF4CS0JU2VwCSBsYXN0U3VuIDM6MDAJMAktCiBSdWxlCU1vcm9jY28JMjAxMglvbmx5CS0JSnVsCSAyMAkgMzowMAkwCS0KIFJ1bGUJTW9yb2NjbwkyMDEyCW9ubHkJLQlBdWcJIDIwCSAyOjAwCTE6MDAJUworUnVsZQlNb3JvY2NvCTIwMTMJb25seQktCUp1bAkgIDkJIDM6MDAJMAktCitSdWxlCU1vcm9jY28JMjAxMwlvbmx5CS0JQXVnCSAgOAkgMjowMAkxOjAwCVMKK1J1bGUJTW9yb2NjbwkyMDE0CW9ubHkJLQlKdW4JIDI5CSAzOjAwCTAJLQorUnVsZQlNb3JvY2NvCTIwMTQJb25seQktCUp1bAkgMjkJIDI6MDAJMTowMAlTCitSdWxlCU1vcm9jY28JMjAxNQlvbmx5CS0JSnVuCSAxOAkgMzowMAkwCS0KK1J1bGUJTW9yb2NjbwkyMDE1CW9ubHkJLQlKdWwJIDE4CSAyOjAwCTE6MDAJUworUnVsZQlNb3JvY2NvCTIwMTYJb25seQktCUp1bgkgIDcJIDM6MDAJMAktCitSdWxlCU1vcm9jY28JMjAxNglvbmx5CS0JSnVsCSAgNwkgMjowMAkxOjAwCVMKK1J1bGUJTW9yb2NjbwkyMDE3CW9ubHkJLQlNYXkJIDI3CSAzOjAwCTAJLQorUnVsZQlNb3JvY2NvCTIwMTcJb25seQktCUp1bgkgMjYJIDI6MDAJMTowMAlTCitSdWxlCU1vcm9jY28JMjAxOAlvbmx5CS0JTWF5CSAxNgkgMzowMAkwCS0KK1J1bGUJTW9yb2NjbwkyMDE4CW9ubHkJLQlKdW4JIDE1CSAyOjAwCTE6MDAJUworUnVsZQlNb3JvY2NvCTIwMTkJb25seQktCU1heQkgIDYJIDM6MDAJMAktCitSdWxlCU1vcm9jY28JMjAxOQlvbmx5CS0JSnVuCSAgNQkgMjowMAkxOjAwCVMKK1J1bGUJTW9yb2NjbwkyMDIwCW9ubHkJLQlNYXkJIDI0CSAyOjAwCTE6MDAJUworUnVsZQlNb3JvY2NvCTIwMjEJb25seQktCU1heQkgMTMJIDI6MDAJMTowMAlTCitSdWxlCU1vcm9jY28JMjAyMglvbmx5CS0JTWF5CSAgMwkgMjowMAkxOjAwCVMKK1J1bGUJTW9yb2NjbwkyMDIzCW1heAktCUFwcgkgbGFzdFN1biAyOjAwCTE6MDAJUwogCiAjIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCiBab25lIEFmcmljYS9DYXNhYmxhbmNhCS0wOjMwOjIwIC0JTE1UCTE5MTMgT2N0IDI2CmRpZmYgLS1naXQgYS9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvYW50YXJjdGljYSBiL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9hbnRhcmN0aWNhCmluZGV4IDY0YjcxZDUuLmMyYzFjNDEgMTAwNjQ0Ci0tLSBhL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9hbnRhcmN0aWNhCisrKyBiL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9hbnRhcmN0aWNhCkBAIC03MywxMCArNzMsOCBAQAogUnVsZQlDaGlsZUFRCTIwMTAJb25seQktCUFwcglTdW4+PTEJMzowMHUJMAktCiBSdWxlCUNoaWxlQVEJMjAxMQlvbmx5CS0JTWF5CVN1bj49MgkzOjAwdQkwCS0KIFJ1bGUJQ2hpbGVBUQkyMDExCW9ubHkJLQlBdWcJU3VuPj0xNgk0OjAwdQkxOjAwCVMKLVJ1bGUJQ2hpbGVBUQkyMDEyCW9ubHkJLQlBcHIJU3VuPj0yMwkzOjAwdQkwCS0KLVJ1bGUJQ2hpbGVBUQkyMDEyCW9ubHkJLQlTZXAJU3VuPj0yCTQ6MDB1CTE6MDAJUwotUnVsZQlDaGlsZUFRCTIwMTMJbWF4CS0JTWFyCVN1bj49OQkzOjAwdQkwCS0KLVJ1bGUJQ2hpbGVBUQkyMDEzCW1heAktCU9jdAlTdW4+PTkJNDowMHUJMTowMAlTCitSdWxlCUNoaWxlQVEJMjAxMgltYXgJLQlBcHIJU3VuPj0yMwkzOjAwdQkwCS0KK1J1bGUJQ2hpbGVBUQkyMDEyCW1heAktCVNlcAlTdW4+PTIJNDowMHUJMTowMAlTCiAKICMgVGhlc2UgcnVsZXMgYXJlIHN0b2xlbiBmcm9tIHRoZSBgYXVzdHJhbGFzaWEnIGZpbGUuCiBSdWxlCUF1c0FRCTE5MTcJb25seQktCUphbgkgMQkwOjAxCTE6MDAJLQpkaWZmIC0tZ2l0IGEvamRrL21ha2Uvc3VuL2phdmF6aWMvdHpkYXRhL2FzaWEgYi9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvYXNpYQppbmRleCA5ZWYzZWY4Li4wN2I5ZGQ2IDEwMDY0NAotLS0gYS9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvYXNpYQorKysgYi9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvYXNpYQpAQCAtMjcsOSArMjcsOSBAQAogCiAjIFRoaXMgZGF0YSBpcyBieSBubyBtZWFucyBhdXRob3JpdGF0aXZlOyBpZiB5b3UgdGhpbmsgeW91IGtub3cgYmV0dGVyLAogIyBnbyBhaGVhZCBhbmQgZWRpdCB0aGUgZmlsZSAoYW5kIHBsZWFzZSBzZW5kIGFueSBjaGFuZ2VzIHRvCi0jIHR6QGVsc2llLm5jaS5uaWguZ292IGZvciBnZW5lcmFsIHVzZSBpbiB0aGUgZnV0dXJlKS4KKyMgdHpAaWFuYS5vcmcgZm9yIGdlbmVyYWwgdXNlIGluIHRoZSBmdXR1cmUpLgogCi0jIEZyb20gUGF1bCBFZ2dlcnQgKDIwMDYtMDMtMjIpOgorIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDEzLTAyLTIxKToKICMKICMgQSBnb29kIHNvdXJjZSBmb3IgdGltZSB6b25lIGhpc3RvcmljYWwgZGF0YSBvdXRzaWRlIHRoZSBVLlMuIGlzCiAjIFRob21hcyBHLiBTaGFua3MgYW5kIFJpcXVlIFBvdHRlbmdlciwgVGhlIEludGVybmF0aW9uYWwgQXRsYXMgKDZ0aCBlZGl0aW9uKSwKQEAgLTQ4LDYgKzQ4LDEwIEBACiAjIFdoaXRtYW4gUHVibGlzaGluZyBDbywgMiBOaWFnYXJhIEF2LCBFYWxpbmcsIExvbmRvbiAodW5kYXRlZCksIHdoaWNoCiAjIEkgZm91bmQgaW4gdGhlIFVDTEEgbGlicmFyeS4KICMKKyMgRm9yIGRhdGEgY2lyY2EgMTg5OSwgYSBjb21tb24gc291cmNlIGlzOgorIyBNaWxuZSBKLiBDaXZpbCB0aW1lLiBHZW9nciBKLiAxODk5IEZlYjsxMygyKToxNzMtOTQKKyMgPGh0dHA6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8xNzc0MzU5Pi4KKyMKICMgQSByZWxpYWJsZSBhbmQgZW50ZXJ0YWluaW5nIHNvdXJjZSBhYm91dCB0aW1lIHpvbmVzIGlzCiAjIERlcmVrIEhvd3NlLCBHcmVlbndpY2ggdGltZSBhbmQgbG9uZ2l0dWRlLCBQaGlsaXAgV2lsc29uIFB1Ymxpc2hlcnMgKDE5OTcpLgogIwpAQCAtMzAyLDkgKzMwNiwxMiBAQAogCQkJODowMAktCUJOVAogCiAjIEJ1cm1hIC8gTXlhbm1hcgorCisjIE1pbG5lIHNheXMgNjoyNDo0MCB3YXMgdGhlIG1lcmlkaWFuIG9mIHRoZSB0aW1lIGJhbGwgb2JzZXJ2YXRvcnkgYXQgUmFuZ29vbi4KKwogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQogWm9uZQlBc2lhL1Jhbmdvb24JNjoyNDo0MCAtCUxNVAkxODgwCQkjIG9yIFlhbmdvbgotCQkJNjoyNDozNgktCVJNVAkxOTIwCSAgICMgUmFuZ29vbiBNZWFuIFRpbWU/CisJCQk2OjI0OjQwCS0JUk1UCTE5MjAJICAgIyBSYW5nb29uIE1lYW4gVGltZT8KIAkJCTY6MzAJLQlCVVJUCTE5NDIgTWF5ICAgIyBCdXJtYSBUaW1lCiAJCQk5OjAwCS0JSlNUCTE5NDUgTWF5IDMKIAkJCTY6MzAJLQlNTVQJCSAgICMgTXlhbm1hciBUaW1lCkBAIC00MDcsNyArNDE0LDggQEAKIAkJCTg6MDAJUFJDCUMlc1QKICMgWmhvbmd5dWFuIFRpbWUgKCJDZW50cmFsIHBsYWluIFRpbWUiKQogIyBtb3N0IG9mIENoaW5hCi1ab25lCUFzaWEvU2hhbmdoYWkJODowNTo1MgktCUxNVAkxOTI4CisjIE1pbG5lIGdpdmVzIDg6MDU6NTYuNzsgcm91bmQgdG8gbmVhcmVzdC4KK1pvbmUJQXNpYS9TaGFuZ2hhaQk4OjA1OjU3CS0JTE1UCTE5MjgKIAkJCTg6MDAJU2hhbmcJQyVzVAkxOTQ5CiAJCQk4OjAwCVBSQwlDJXNUCiAjIExvbmctc2h1IFRpbWUgKHByb2JhYmx5IGR1ZSB0byBMb25nIGFuZCBTaHUgYmVpbmcgdHdvIG5hbWVzIG9mIHRoYXQgYXJlYSkKQEAgLTUwNCw2ICs1MTIsMTAgQEAKIAkJCTg6MDAJUFJDCUMlc1QKIAogCisjIEhvbmcgS29uZyAoWGlhbmdnYW5nKQorCisjIE1pbG5lIGdpdmVzIDc6MzY6NDEuNzsgcm91bmQgdGhpcy4KKwogIyBGcm9tIExlZSBZaXUgQ2h1bmcgKDIwMDktMTAtMjQpOgogIyBJIGZvdW5kIHRoZXJlIGFyZSBzb21lIG1pc3Rha2VzIGZvciB0aGUuLi5EU1QgcnVsZSBmb3IgSG9uZwogIyBLb25nLiBbQWNjb3JkaW5nXSB0byB0aGUgRFNUIHJlY29yZCBmcm9tIEhvbmcgS29uZyBPYnNlcnZhdG9yeSAoYWN0dWFsbHksCkBAIC01NzAsNyArNTgyLDYgQEAKICMgVGhlIEphcGFuZXNlIHN1cnJlbmRlciBvZiBIb25nIEtvbmcgd2FzIHNpZ25lZCAxOTQ1LTA5LTE1LgogIyBGb3IgbGFjayBvZiBhbnl0aGluZyBiZXR0ZXIsIHVzZSBzdGFydCBvZiB0aG9zZSBkYXlzIGFzIHRoZSB0cmFuc2l0aW9uIHRpbWVzLgogCi0jIEhvbmcgS29uZyAoWGlhbmdnYW5nKQogIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKIFJ1bGUJSEsJMTk0MQlvbmx5CS0JQXByCTEJMzozMAkxOjAwCVMKIFJ1bGUJSEsJMTk0MQlvbmx5CS0JU2VwCTMwCTM6MzAJMAktCkBAIC01OTIsNyArNjAzLDcgQEAKIFJ1bGUJSEsJMTk3OQlvbmx5CS0JTWF5CVN1bj49OAkzOjMwCTE6MDAJUwogUnVsZQlISwkxOTc5CW9ubHkJLQlPY3QJU3VuPj0xNgkzOjMwCTAJLQogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQotWm9uZQlBc2lhL0hvbmdfS29uZwk3OjM2OjM2IC0JTE1UCTE5MDQgT2N0IDMwCitab25lCUFzaWEvSG9uZ19Lb25nCTc6MzY6NDIgLQlMTVQJMTkwNCBPY3QgMzAKIAkJCTg6MDAJSEsJSEslc1QJMTk0MSBEZWMgMjUKIAkJCTk6MDAJLQlKU1QJMTk0NSBTZXAgMTUKIAkJCTg6MDAJSEsJSEslc1QKQEAgLTY2OSw2ICs2ODAsOSBAQAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIEN5cHJ1cworIworIyBNaWxuZSBzYXlzIHRoZSBFYXN0ZXJuIFRlbGVncmFwaCBDb21wYW55IHVzZWQgMjoxNDowMC4gIFN0aWNrIHdpdGggTE1ULgorIwogIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKIFJ1bGUJQ3lwcnVzCTE5NzUJb25seQktCUFwcgkxMwkwOjAwCTE6MDAJUwogUnVsZQlDeXBydXMJMTk3NQlvbmx5CS0JT2N0CTEyCTA6MDAJMAktCkBAIC0xMjIyLDcgKzEyMzYsNiBAQAogUnVsZQlaaW9uCTIwMTIJb25seQktCVNlcAkyMwkyOjAwCTAJUwogCiAjIEZyb20gRXBocmFpbSBTaWx2ZXJiZXJnICgyMDEyLTEwLTE4KToKLQogIyBZZXN0ZXJkYXksIHRoZSBJbnRlcmlvciBNaW5pc3RyeSBDb21taXR0ZWUsIGFmdGVyIG1vcmUgdGhhbiBhIHllYXIKICMgcGFzdCwgYXBwcm92ZWQgc2VuZGluZyB0aGUgcHJvcG9zZWQgSnVuZSAyMDExIGNoYW5nZXMgdG8gdGhlIFRpbWUKICMgRGVjcmVlIExhdyBiYWNrIHRvIHRoZSBLbmVzc2V0IGZvciBzZWNvbmQgYW5kIHRoaXJkIChmaW5hbCkgdm90ZXMKQEAgLTEyMzUsNiArMTI0OCwxMCBAQAogIyBsYXRlciAoaS5lLiBhdCAwMjowMCB0aGUgZmlyc3QgTW9uZGF5IGFmdGVyIE9jdG9iZXIgMikuCiAjIFtSb3NoIEhhc2hhbmEgaG9saWRheXMgYXJlIGZhY3RvcmVkIGluIHVudGlsIDIxMDAuXQogCisjIEZyb20gRXBocmFpbSBTaWx2ZXJiZXJnICgyMDEyLTExLTA1KToKKyMgVGhlIEtuZXNzZXQgcGFzc2VkIHRvZGF5IChpbiBzZWNvbmQgYW5kIGZpbmFsIHJlYWRpbmdzKSB0aGUgYW1lbmRtZW50IHRvIHRoZQorIyBUaW1lIERlY3JlZSBMYXcgbWFraW5nIHRoZSBjaGFuZ2VzIC4uLiBsYXcuCisKICMgUnVsZQlOQU1FCUZST00JVE8JVFlQRQlJTglPTglBVAlTQVZFCUxFVFRFUi9TCiBSdWxlCVppb24JMjAxMwltYXgJLQlNYXIJRnJpPj0yMwkyOjAwCTE6MDAJRAogUnVsZQlaaW9uCTIwMTMJMjAyNgktCU9jdAlTdW4+PTIJMjowMAkwCVMKQEAgLTE4MjQsOCArMTg0MSwxMSBAQAogCQkJNTo0NQktCU5QVAkjIE5lcGFsIFRpbWUKIAogIyBPbWFuCisKKyMgTWlsbmUgc2F5cyAzOjU0OjI0IHdhcyB0aGUgbWVyaWRpYW4gb2YgdGhlIE11c2NhdCBUaWRhbCBPYnNlcnZhdG9yeS4KKwogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQotWm9uZQlBc2lhL011c2NhdAkzOjU0OjIwIC0JTE1UCTE5MjAKK1pvbmUJQXNpYS9NdXNjYXQJMzo1NDoyNCAtCUxNVAkxOTIwCiAJCQk0OjAwCS0JR1NUCiAKICMgUGFraXN0YW4KQEAgLTIwNzIsOCArMjA5Miw3IEBACiAjIG9jY3VycmVkIGJlZm9yZSBvdXIgY3V0b2ZmIGRhdGUgb2YgMTk3MC4KICMgSG93ZXZlciwgYXMgd2UgZ2V0IG1vcmUgaW5mb3JtYXRpb24sIHdlIG1heSBuZWVkIHRvIGFkZCBlbnRyaWVzCiAjIGZvciBwYXJ0cyBvZiB0aGUgV2VzdCBCYW5rIGFzIHRoZXkgdHJhbnNpdGlvbmVkIGZyb20gSXNyYWVsJ3MgcnVsZXMKLSMgdG8gUGFsZXN0aW5lJ3MgcnVsZXMuICBJZiB5b3UgaGF2ZSBtb3JlIGluZm8gYWJvdXQgdGhpcywgcGxlYXNlCi0jIHNlbmQgaXQgdG8gdHpAZWxzaWUubmNpLm5paC5nb3YgZm9yIGluY29ycG9yYXRpb24gaW50byBmdXR1cmUgZWRpdGlvbnMuCisjIHRvIFBhbGVzdGluZSdzIHJ1bGVzLgogCiAjIEZyb20gSUlOUyBOZXdzIFNlcnZpY2UgLSBJc3JhZWwgLSAxOTk4LTAzLTIzIDEwOjM4OjA3IElzcmFlbCB0aW1lLAogIyBmb3J3YXJkZWQgYnkgRXBocmFpbSBTaWx2ZXJiZXJnOgpAQCAtMjQyMSw2ICsyNDQwLDEzIEBACiAjIG5vIGluZm9ybWF0aW9uCiAKICMgU3JpIExhbmthCisKKyMgRnJvbSBQYXVsIEVnZ2VydCAoMjAxMy0wMi0yMSk6CisjIE1pbG5lIHNheXMgIk1hZHJhcyBtZWFuIHRpbWUgdXNlIGZyb20gTWF5IDEsIDE4OTguICBQcmlvciB0byB0aGlzIENvbG9tYm8KKyMgbWVhbiB0aW1lLCA1aC4gNG0uIDIxLjlzLiBGLiwgd2FzIHVzZWQuIiAgQnV0IDU6MDQ6MjEuOSBkaWZmZXJzIGNvbnNpZGVyYWJseQorIyBmcm9tIENvbG9tYm8ncyBtZXJpZGlhbiA1OjE5OjI0LCBzbyBmb3Igbm93IGlnbm9yZSBNaWxuZSBhbmQgc3RpY2sgd2l0aAorIyBTaGFua3MgYW5kIFBvdHRlbmdlci4KKwogIyBGcm9tIFBhdWwgRWdnZXJ0ICgxOTk2LTA5LTAzKToKICMgIlNyaSBMYW5rYSBhZHZhbmNlcyBjbG9jayBieSBhbiBob3VyIHRvIGF2b2lkIGJsYWNrb3V0IgogIyAod3d3LnZpcnR1YWwtcGMuY29tL2xhbmthd2ViL25ld3MvaXRlbXMvMjQwNTk2LTIuaHRtbCwgMTk5Ni0wNS0yNCwKQEAgLTI3MjAsNiArMjc0NiwxMiBAQAogCiAjIFZpZXRuYW0KIAorIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDEzLTAyLTIxKToKKyMgTWlsbmUgZ2l2ZXMgNzoxNjo1NiBmb3IgdGhlIG1lcmlkaWFuIG9mIFNhaWdvbiBpbiAxODk5LCBhcyBiZWluZworIyB1c2VkIGluIExvd2VyIExhb3MsIENhbWJvZGlhLCBhbmQgQW5uYW0uICBCdXQgdGhpcyBpcyBxdWl0ZSBhIHdheXMKKyMgZnJvbSBTYWlnb24ncyBsb2NhdGlvbi4gIEZvciBub3csIGlnbm9yZSB0aGlzIGFuZCBzdGljayB3aXRoIFNoYW5rcworIyBhbmQgUG90dGVuZ2VyLgorCiAjIEZyb20gQXJ0aHVyIERhdmlkIE9sc29uICgyMDA4LTAzLTE4KToKICMgVGhlIEVuZ2xpc2gtbGFuZ3VhZ2UgbmFtZSBvZiBWaWV0bmFtJ3MgbW9zdCBwb3B1bG91cyBjaXR5IGlzICJIbyBDaGkgTWluIENpdHkiOwogIyB3ZSB1c2UgSG9fQ2hpX01pbmggYmVsb3cgdG8gYXZvaWQgYSBuYW1lIG9mIG1vcmUgdGhhbiAxNCBjaGFyYWN0ZXJzLgpAQCAtMjczMyw2ICsyNzY1LDEwIEBACiAJCQk3OjAwCS0JSUNUCiAKICMgWWVtZW4KKworIyBNaWxuZSBzYXlzIDI6NTk6NTQgd2FzIHRoZSBtZXJpZGlhbiBvZiB0aGUgc2FsdXRpbmcgYmF0dGVyeSBhdCBBZGVuLAorIyBhbmQgdGhhdCBZZW1lbiB3YXMgYXQgMTo1NTo1NiwgdGhlIG1lcmlkaWFuIG9mIHRoZSBIYWdpYSBTb3BoaWEuCisKICMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KLVpvbmUJQXNpYS9BZGVuCTM6MDA6NDgJLQlMTVQJMTk1MAorWm9uZQlBc2lhL0FkZW4JMjo1OTo1NAktCUxNVAkxOTUwCiAJCQkzOjAwCS0JQVNUCmRpZmYgLS1naXQgYS9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvYXVzdHJhbGFzaWEgYi9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvYXVzdHJhbGFzaWEKaW5kZXggN2Y4MzQ0OC4uM2UxZTYyMSAxMDA2NDQKLS0tIGEvamRrL21ha2Uvc3VuL2phdmF6aWMvdHpkYXRhL2F1c3RyYWxhc2lhCisrKyBiL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9hdXN0cmFsYXNpYQpAQCAtMjY5LDYgKzI2OSw5IEBACiAJCQk2OjMwCS0JQ0NUCSMgQ29jb3MgSXNsYW5kcyBUaW1lCiAKICMgRmlqaQorCisjIE1pbG5lIGdpdmVzIDExOjU1OjQ0IGZvciBTdXZhLgorCiAjIEZyb20gQWxleGFuZGVyIEtyaXZlbnlzaGV2ICgyMDA5LTExLTEwKToKICMgQWNjb3JkaW5nIHRvIEZpamkgQnJvYWRjYXN0aW5nIENvcnBvcmF0aW9uLCAgRmlqaSBwbGFucyB0byByZS1pbnRyb2R1Y2UgRFNUCiAjIGZyb20gTm92ZW1iZXIgMjl0aCAyMDA5ICB0byBBcHJpbCAyNXRoIDIwMTAuCkBAIC0zNjIsNyArMzY1LDcgQEAKIFJ1bGUJRmlqaQkyMDExCW9ubHkJLQlNYXIJU3VuPj0xCTM6MDAJMAktCiBSdWxlCUZpamkJMjAxMgltYXgJLQlKYW4JU3VuPj0xOAkzOjAwCTAJLQogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQotWm9uZQlQYWNpZmljL0ZpamkJMTE6NTM6NDAgLQlMTVQJMTkxNSBPY3QgMjYJIyBTdXZhCitab25lCVBhY2lmaWMvRmlqaQkxMTo1NTo0NCAtCUxNVAkxOTE1IE9jdCAyNgkjIFN1dmEKIAkJCTEyOjAwCUZpamkJRkolc1QJIyBGaWppIFRpbWUKIAogIyBGcmVuY2ggUG9seW5lc2lhCkBAIC04MDMsOSArODA2LDkgQEAKIAogIyBUaGlzIGRhdGEgaXMgYnkgbm8gbWVhbnMgYXV0aG9yaXRhdGl2ZTsgaWYgeW91IHRoaW5rIHlvdSBrbm93IGJldHRlciwKICMgZ28gYWhlYWQgYW5kIGVkaXQgdGhlIGZpbGUgKGFuZCBwbGVhc2Ugc2VuZCBhbnkgY2hhbmdlcyB0bwotIyB0ekBlbHNpZS5uY2kubmloLmdvdiBmb3IgZ2VuZXJhbCB1c2UgaW4gdGhlIGZ1dHVyZSkuCisjIHR6QGlhbmEub3JnIGZvciBnZW5lcmFsIHVzZSBpbiB0aGUgZnV0dXJlKS4KIAotIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDA2LTAzLTIyKToKKyMgRnJvbSBQYXVsIEVnZ2VydCAoMjAxMy0wMi0yMSk6CiAjIEEgZ29vZCBzb3VyY2UgZm9yIHRpbWUgem9uZSBoaXN0b3JpY2FsIGRhdGEgb3V0c2lkZSB0aGUgVS5TLiBpcwogIyBUaG9tYXMgRy4gU2hhbmtzIGFuZCBSaXF1ZSBQb3R0ZW5nZXIsIFRoZSBJbnRlcm5hdGlvbmFsIEF0bGFzICg2dGggZWRpdGlvbiksCiAjIFNhbiBEaWVnbzogQUNTIFB1YmxpY2F0aW9ucywgSW5jLiAoMjAwMykuCkBAIC04MjMsNiArODI2LDEwIEBACiAjIFdoaXRtYW4gUHVibGlzaGluZyBDbywgMiBOaWFnYXJhIEF2LCBFYWxpbmcsIExvbmRvbiAodW5kYXRlZCksIHdoaWNoCiAjIEkgZm91bmQgaW4gdGhlIFVDTEEgbGlicmFyeS4KICMKKyMgRm9yIGRhdGEgY2lyY2EgMTg5OSwgYSBjb21tb24gc291cmNlIGlzOgorIyBNaWxuZSBKLiBDaXZpbCB0aW1lLiBHZW9nciBKLiAxODk5IEZlYjsxMygyKToxNzMtOTQKKyMgPGh0dHA6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8xNzc0MzU5Pi4KKyMKICMgQSByZWxpYWJsZSBhbmQgZW50ZXJ0YWluaW5nIHNvdXJjZSBhYm91dCB0aW1lIHpvbmVzIGlzCiAjIERlcmVrIEhvd3NlLCBHcmVlbndpY2ggdGltZSBhbmQgbG9uZ2l0dWRlLCBQaGlsaXAgV2lsc29uIFB1Ymxpc2hlcnMgKDE5OTcpLgogIwpkaWZmIC0tZ2l0IGEvamRrL21ha2Uvc3VuL2phdmF6aWMvdHpkYXRhL2V1cm9wZSBiL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9ldXJvcGUKaW5kZXggOWEwZDBiOS4uMjY4NTA0ZCAxMDA2NDQKLS0tIGEvamRrL21ha2Uvc3VuL2phdmF6aWMvdHpkYXRhL2V1cm9wZQorKysgYi9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvZXVyb3BlCkBAIC0yNyw3ICsyNyw3IEBACiAKICMgVGhpcyBkYXRhIGlzIGJ5IG5vIG1lYW5zIGF1dGhvcml0YXRpdmU7IGlmIHlvdSB0aGluayB5b3Uga25vdyBiZXR0ZXIsCiAjIGdvIGFoZWFkIGFuZCBlZGl0IHRoZSBmaWxlIChhbmQgcGxlYXNlIHNlbmQgYW55IGNoYW5nZXMgdG8KLSMgdHpAZWxzaWUubmNpLm5paC5nb3YgZm9yIGdlbmVyYWwgdXNlIGluIHRoZSBmdXR1cmUpLgorIyB0ekBpYW5hLm9yZyBmb3IgZ2VuZXJhbCB1c2UgaW4gdGhlIGZ1dHVyZSkuCiAKICMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNi0wMy0yMik6CiAjIEEgZ29vZCBzb3VyY2UgZm9yIHRpbWUgem9uZSBoaXN0b3JpY2FsIGRhdGEgb3V0c2lkZSB0aGUgVS5TLiBpcwpAQCAtNTMsNiArNTMsMTIgQEAKICMJV2lsbGlhbSBXaWxsZXR0LCBUaGUgV2FzdGUgb2YgRGF5bGlnaHQsIDE5dGggZWRpdGlvbgogIwk8L2E+ICgxOTE0LTAzKQogIworIwlNaWxuZSBKLiBDaXZpbCB0aW1lLiBHZW9nciBKLiAxODk5IEZlYjsxMygyKToxNzMtOTQKKyMJPGh0dHA6Ly93d3cuanN0b3Iub3JnL3N0YWJsZS8xNzc0MzU5Pi4gIEhlIHdyaXRlczoKKyMJIkl0IGlzIHJlcXVlc3RlZCB0aGF0IGNvcnJlY3Rpb25zIGFuZCBhZGRpdGlvbnMgdG8gdGhlc2UgdGFibGVzCisjCW1heSBiZSBzZW50IHRvIE1yLiBKb2huIE1pbG5lLCBSb3lhbCBHZW9ncmFwaGljYWwgU29jaWV0eSwKKyMJU2F2aWxlIFJvdywgTG9uZG9uLiIgIE5vd2FkYXlzIHBsZWFzZSBlbWFpbCB0aGVtIHRvIHR6QGlhbmEub3JnLgorIwogIwlCcmF6aWwncyBEZXBhcnRhbWVudG8gU2VydmljbyBkYSBIb3JhIChEU0gpLAogIwk8YSBocmVmPSJodHRwOi8vcGNkc2gwMS5vbi5ici9ISVNUSFYuaHRtIj4KICMJSGlzdG9yeSBvZiBTdW1tZXIgVGltZQpAQCAtNjg5LDYgKzY5NSw4IEBACiAKICMgQXVzdHJpYQogCisjIE1pbG5lIHNheXMgVmllbm5hIHRpbWUgd2FzIDE6MDU6MjEuCisKICMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNi0wMy0yMik6IFNoYW5rcyAmIFBvdHRlbmdlciBnaXZlIDE5MTgtMDYtMTYgYW5kCiAjIDE5NDUtMTEtMTgsIGJ1dCB0aGUgQXVzdHJpYW4gRmVkZXJhbCBPZmZpY2Ugb2YgTWV0cm9sb2d5IGFuZAogIyBTdXJ2ZXlpbmcgKEJFVikgZ2l2ZXMgMTkxOC0wOS0xNiBhbmQgZm9yIFZpZW5uYSBnaXZlcyB0aGUgImFsbGVnZWQiCkBAIC03MDYsNyArNzE0LDcgQEAKIFJ1bGUJQXVzdHJpYQkxOTgwCW9ubHkJLQlBcHIJIDYJMDowMAkxOjAwCVMKIFJ1bGUJQXVzdHJpYQkxOTgwCW9ubHkJLQlTZXAJMjgJMDowMAkwCS0KICMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KLVpvbmUJRXVyb3BlL1ZpZW5uYQkxOjA1OjIwIC0JTE1UCTE4OTMgQXByCitab25lCUV1cm9wZS9WaWVubmEJMTowNToyMSAtCUxNVAkxODkzIEFwcgogCQkJMTowMAlDLUV1cglDRSVzVAkxOTIwCiAJCQkxOjAwCUF1c3RyaWEJQ0Ulc1QJMTk0MCBBcHIgIDEgMjowMHMKIAkJCTE6MDAJQy1FdXIJQ0Ulc1QJMTk0NSBBcHIgIDIgMjowMHMKQEAgLTEyNjIsNiArMTI3MCwyMSBAQAogCQkJMTowMAlHZXJtYW55CUNFJXNUCTE5ODAKIAkJCTE6MDAJRVUJQ0Ulc1QKIAorIyBGcm9tIFRvYmlhcyBDb25yYWRpICgyMDExLTA5LTEyKToKKyMgQnVzaW5nZW4gPGh0dHA6Ly93d3cuYnVlc2luZ2VuLmRlPiwgc3Vycm91bmRlZCBieSB0aGUgU3dpc3MgY2FudG9uCisjIFNjaGFmZmhhdXNlbiwgZGlkIG5vdCBzdGFydCBvYnNlcnZpbmcgRFNUIGluIDE5ODAgYXMgdGhlIHJlc3Qgb2YgREUKKyMgKFdlc3QgR2VybWFueSBhdCB0aGF0IHRpbWUpIGFuZCBERCAoRWFzdCBHZXJtYW55IGF0IHRoYXQgdGltZSkgZGlkLgorIyBERCBtZXJnZWQgaW50byBERSwgdGhlIGFyZWEgaXMgY3VycmVudGx5IGNvdmVyZWQgYnkgY29kZSBERSBpbiBJU08gMzE2Ni0xLAorIyB3aGljaCBpbiB0dXJuIGlzIGNvdmVyZWQgYnkgdGhlIHpvbmUgRXVyb3BlL0Jlcmxpbi4KKyMKKyMgU291cmNlIGZvciB0aGUgdGltZSBpbiBCdXNpbmdlbiAxOTgwOgorIyBodHRwOi8vd3d3LnNyZi5jaC9wbGF5ZXIvdmlkZW8/aWQ9YzAxMmMwMjktMDNiNy00YzJiLTkxNjQtYWE1OTAyY2Q1OGQzCisKKyMgRnJvbSBBcnRodXIgRGF2aWQgT2xzb24gKDIwMTItMDMtMDMpOgorIyBCdXNpbmdlbiBhbmQgWnVyaWNoIGhhdmUgc2hhcmVkIGNsb2NrcyBzaW5jZSAxOTcwLgorCitMaW5rCUV1cm9wZS9adXJpY2gJRXVyb3BlL0J1c2luZ2VuCisKICMgR2VvcmdpYQogIyBQbGVhc2Ugc2VlIHRoZSAiYXNpYSIgZmlsZSBmb3IgQXNpYS9UYmlsaXNpLgogIyBIZXJvZG90dXMgKEhpc3RvcmllcywgSVYuNDUpIHNheXMgR2VvcmdpYSBub3J0aCBvZiB0aGUgUGhhc2lzIChub3cgUmlvbmkpCkBAIC0yMDY2LDYgKzIwODksNzAgQEAKIAogIyBSdXNzaWEKIAorIyBGcm9tIEFsZXhhbmRlciBLcml2ZW55c2hldiAoMjAxMS0wOS0xNSk6CisjIEJhc2VkIG9uIGxhc3QgUnVzc2lhbiBHb3Zlcm5tZW50IERlY3JlZSAjIDcyNSBvbiBBdWd1c3QgMzEsIDIwMTEKKyMgKEdvdmVybm1lbnQgZG9jdW1lbnQKKyMgPGEgaHJlZj0iaHR0cDovL3d3dy5nb3Zlcm5tZW50LnJ1L2dvdi9yZXN1bHRzLzE2MzU1L3ByaW50LyI+CisjIGh0dHA6Ly93d3cuZ292ZXJubWVudC5ydS9nb3YvcmVzdWx0cy8xNjM1NS9wcmludC8KKyMgPC9hPgorIyBpbiBSdXNzaWFuKQorIyB0aGVyZSBhcmUgZmV3IGNvcnJlY3Rpb25zIGhhdmUgdG8gYmUgbWFkZSBmb3Igc29tZSBSdXNzaWFuIHRpbWUgem9uZXMuLi4KKyMgQWxsIHVwZGF0ZWQgUnVzc2lhbiBUaW1lIFpvbmVzIHdlcmUgcGxhY2VkIGluIHRhYmxlIGFuZCB0cmFuc2xhdGVkIHRvIEVuZ2xpc2gKKyMgYnkgV29ybGRUaW1lWm9uZS5jb20gYXQgdGhlIGxpbmsgYmVsb3c6CisjIDxhIGhyZWY9Imh0dHA6Ly93d3cud29ybGR0aW1lem9uZS5jb20vZHN0X25ld3MvZHN0X25ld3NfcnVzc2lhMzYuaHRtIj4KKyMgaHR0cDovL3d3dy53b3JsZHRpbWV6b25lLmNvbS9kc3RfbmV3cy9kc3RfbmV3c19ydXNzaWEzNi5odG0KKyMgPC9hPgorCisjIEZyb20gU2FuamVldiBHdXB0YSAoMjAxMS0wOS0yNyk6CisjIFNjYW5zIG9mIFtEZWNyZWUgIzIzIG9mIEphbnVhcnkgOCwgMTk5Ml0gYXJlIGF2YWlsYWJsZSBhdDoKKyMgPGEgaHJlZj0iaHR0cDovL2dvdmVybm1lbnQuY29uc3VsdGFudC5ydS9wYWdlLmFzcHg/MTIyMzk2NiI+CisjIGh0dHA6Ly9nb3Zlcm5tZW50LmNvbnN1bHRhbnQucnUvcGFnZS5hc3B4PzEyMjM5NjYKKyMgVGhleSBhcmUgaW4gQ3lyaWxsaWMgbGV0dGVycyAocHJlc3VtYWJseSBSdXNzaWFuKS4KKworIyBGcm9tIEFydGh1ciBEYXZpZCBPbHNvbiAoMjAxMi0wNS0wOSk6CisjIFJlZ2FyZGluZyB0aGUgaW5zdGFudCB3aGVuIGNsb2NrcyBpbiB0aW1lLXpvbmUtc2hpZnRpbmcgcGFydHMgb2YgUnVzc2lhCisjIGNoYW5nZWQgaW4gU2VwdGVtYmVyIDIwMTE6CisjCisjIE9uZSBzb3VyY2UgaXMKKyMgPCBhIGhyZWY9Imh0dHA6Ly9nb3Zlcm5tZW50LnJ1L2dvdi9yZXN1bHRzLzE2MzU1Lz4KKyMgaHR0cDovL2dvdmVybm1lbnQucnUvZ292L3Jlc3VsdHMvMTYzNTUvCisjIDwvYT4KKyMgd2hpY2gsIGFjY29yZGluZyB0byB0cmFuc2xhdGUuZ29vZ2xlLmNvbSwgYmVnaW5zICJEZWNyZWUgb2YgQXVndXN0IDMxLAorIyAyMDExIE5vIDcyNSIgYW5kIGNvbnRhaW5zIG5vIG90aGVyIGRhdGVzIG9yICJlZmZlY3RpdmUgZGF0ZSIgaW5mb3JtYXRpb24uCisjCisjIEFub3RoZXIgc291cmNlIGlzCisjIDxhIGhyZWY9Imh0dHA6Ly93d3cucmcucnUvMjAxMS8wOS8wNi9jaGFzLXpvbmEtZG9rLmh0bWwiPgorIyBodHRwOi8vd3d3LnJnLnJ1LzIwMTEvMDkvMDYvY2hhcy16b25hLWRvay5odG1sCisjIDwvYT4KKyMgd2hpY2gsIGFjY29yZGluZyB0byB0cmFuc2xhdGUuZ29vZ2xlLmNvbSwgYmVnaW5zICJSZXNvbHV0aW9uIG9mIHRoZQorIyBHb3Zlcm5tZW50IG9mIHRoZSBSdXNzaWFuIEZlZGVyYXRpb24gb24gQXVndXN0IDMxLCAyMDExIE4gNzI1IiBhbmQgYWxzbworIyBjb250YWlucyAiRGF0ZSBmaXJzdCBvZmZpY2lhbCBwdWJsaWNhdGlvbjogU2VwdGVtYmVyIDYsIDIwMTEgUG9zdGVkIG9uOgorIyBpbiB0aGUgJ1JHJyAtIEZlZGVyYWwgSXNzdWUgbnVtYmVyIDU1NzMgU2VwdGVtYmVyIDYsIDIwMTEiIGJ1dCB3aGljaAorIyBkb2VzIG5vdCBjb250YWluIGFueSAiZWZmZWN0aXZlIGRhdGUiIGluZm9ybWF0aW9uLgorIworIyBBbm90aGVyIHNvdXJjZSBpcworIyA8YSBocmVmPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL095bXlha29uc2t5X0Rpc3RyaWN0I2NpdGVfbm90ZS1SdVRpbWUtNyI+CisjIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvT3lteWFrb25za3lfRGlzdHJpY3QjY2l0ZV9ub3RlLVJ1VGltZS03CisjIDwvYT4KKyMgd2hpY2gsIGluIG5vdGUgOCwgY29udGFpbnMgIlJlc29sdXRpb24gIzcyNSBvZiBBdWd1c3QgMzEsIDIwMTEuLi4KKyMgRWZmZWN0aXZlIGFzIG9mIGFmdGVyIDcgZGF5cyBmb2xsb3dpbmcgdGhlIGRheSBvZiB0aGUgb2ZmaWNpYWwgcHVibGljYXRpb24iCisjIGJ1dCB3aGljaCBkb2VzIG5vdCBjb250YWluIGFueSByZWZlcmVuY2UgdG8gU2VwdGVtYmVyIDYsIDIwMTEuCisjCisjIFRoZSBXaWtpcGVkaWEgYXJ0aWNsZSByZWZlcnMgdG8KKyMgPGEgaHJlZj0iaHR0cDovL2Jhc2UuY29uc3VsdGFudC5ydS9jb25zL2NnaS9vbmxpbmUuY2dpP3JlcT1kb2M7YmFzZT1MQVc7bj0xMTg4OTYiPgorIyBodHRwOi8vYmFzZS5jb25zdWx0YW50LnJ1L2NvbnMvY2dpL29ubGluZS5jZ2k/cmVxPWRvYztiYXNlPUxBVztuPTExODg5NgorIyA8L2E+CisjIHdoaWNoIHNlZW1zIHRvIGNvcHkgdGhlIHRleHQgb2YgdGhlIGdvdmVybm1lbnQucnUgcGFnZS4KKyMKKyMgVG9iaWFzIENvbnJhZGkgY29tYmluZXMgV2lraXBlZGlhJ3MKKyMgImFzIG9mIGFmdGVyIDcgZGF5cyBmb2xsb3dpbmcgdGhlIGRheSBvZiB0aGUgb2ZmaWNpYWwgcHVibGljYXRpb24iCisjIHdpdGggd3d3LnJnLnJ1J3MgIkRhdGUgb2YgZmlyc3Qgb2ZmaWNpYWwgcHVibGljYXRpb246IFNlcHRlbWJlciA2LCAyMDExIiB0byBnZXQKKyMgU2VwdGVtYmVyIDEzLCAyMDExIGFzIHRoZSBjdXRvdmVyIGRhdGUgKHVudXN1YWxseSwgYSBUdWVzZGF5LCBhcyBUb2JpYXMgQ29ucmFkaSBub3RlcykuCisjCisjIE5vbmUgb2YgdGhlIHNvdXJjZXMgaW5kaWNhdGVzIGEgdGltZSBvZiBkYXkgZm9yIGNoYW5naW5nIGNsb2Nrcy4KKyMKKyMgR28gd2l0aCAyMDExLTA5LTEzIDA6MDBzLgorCiAjIEZyb20gUGF1bCBFZ2dlcnQgKDIwMDYtMDMtMjIpOgogIyBFeGNlcHQgZm9yIE1vc2NvdyBhZnRlciAxOTE5LTA3LTAxLCBJIGludmVudGVkIHRoZSB0aW1lIHpvbmUgYWJicmV2aWF0aW9ucy4KICMgTW9zY293IHRpbWUgem9uZSBhYmJyZXZpYXRpb25zIGFmdGVyIDE5MTktMDctMDEsIGFuZCBNb3Njb3cgcnVsZXMgYWZ0ZXIgMTk5MSwKQEAgLTIyOTMsMTQgKzIzODAsMzIgQEAKICMgW3BhcnRzIG9mXSBSZXNwdWJsaWthIFNha2hhIChZYWt1dGl5YSkuCiAKICMgRnJvbSBPc2NhciB2YW4gVmxpam1lbiAoMjAwOS0xMS0yOSk6Ci0jIFRoZSBTYWtoYSBkaXN0cmljdHMgYXJlOiBCdWx1bnNraWosIFZlcmtob3lhbnNraWosIFRvbXBvbnNraWosIFVzdCctTWFqc2tpaiwKLSMgVXN0Jy1ZYW5za2lqLgorIyBUaGUgU2FraGEgZGlzdHJpY3RzIGFyZTogQnVsdW5za2lqLCBWZXJraG95YW5za2lqLCAuLi4gVXN0Jy1ZYW5za2lqLgogWm9uZSBBc2lhL1ZsYWRpdm9zdG9rCSA4OjQ3OjQ0IC0JTE1UCTE5MjIgTm92IDE1CiAJCQkgOTowMAktCVZMQVQJMTkzMCBKdW4gMjEgIyBWbGFkaXZvc3RvayBUaW1lCiAJCQkxMDowMAlSdXNzaWEJVkxBJXNUCTE5OTEgTWFyIDMxIDI6MDBzCiAJCQkgOTowMAlSdXNzaWEJVkxBJXNTVAkxOTkyIEphbiAxOSAyOjAwcwogCQkJMTA6MDAJUnVzc2lhCVZMQSVzVAkyMDExIE1hciAyNyAyOjAwcwogCQkJMTE6MDAJLQlWTEFUCisKKyMgRnJvbSBBcnRodXIgRGF2aWQgT2xzb24gKDIwMTItMDUtMDkpOgorIyBUb21wb25za2lqIGFuZCBVc3QnLU1hanNraWogc3dpdGNoZWQgZnJvbSBWbGFkaXZvc3RvayB0aW1lIHRvIFlha3V0c2sgdGltZQorIyBpbiAyMDExLgorIworIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDEyLTExLTI1KToKKyMgU2hhbmtzIGFuZCBQb3R0ZW5nZXIgKDIwMDMpIGhhcyBLaGFuZHlnYSBvbiBZYWt1dHNrIHRpbWUuCisjIE1ha2UgYSB3aWxkIGd1ZXNzIHRoYXQgaXQgc3dpdGNoZWQgdG8gVmxhZGl2b3N0b2sgdGltZSBpbiAyMDA0LgorIyBUaGlzIHRyYW5zaXRpb24gaXMgbm8gZG91YnQgd3JvbmcsIGJ1dCB3ZSBoYXZlIG5vIGJldHRlciBpbmZvLgorIworWm9uZSBBc2lhL0toYW5keWdhCSA5OjAyOjEzIC0JTE1UCTE5MTkgRGVjIDE1CisJCQkgODowMAktCVlBS1QJMTkzMCBKdW4gMjEgIyBZYWt1dHNrIFRpbWUKKwkJCSA5OjAwCVJ1c3NpYQlZQUslc1QJMTk5MSBNYXIgMzEgMjowMHMKKwkJCSA4OjAwCVJ1c3NpYQlZQUslc1QJMTk5MiBKYW4gMTkgMjowMHMKKwkJCSA5OjAwCVJ1c3NpYQlZQUslc1QJMjAwNAorCQkJMTA6MDAJUnVzc2lhCVZMQSVzVAkyMDExIE1hciAyNyAyOjAwcworCQkJMTE6MDAJLQlWTEFUCTIwMTEgU2VwIDEzIDA6MDBzICMgRGVjcmVlIDcyNT8KKwkJCTEwOjAwCS0JWUFLVAorCiAjCiAjIFNha2hhbGluc2theWEgb2JsYXN0Jy4KICMgVGhlIFpvbmUgbmFtZSBzaG91bGQgYmUgWXV6aG5vLVNha2hhbGluc2ssIGJ1dCB0aGF0J3MgdG9vIGxvbmcuCkBAIC0yMzE5LDE0ICsyNDI0LDI2IEBACiAKICMgRnJvbSBPc2NhciB2YW4gVmxpam1lbiAoMjAwOS0xMS0yOSk6CiAjIFRoZSBTYWtoYSBkaXN0cmljdHMgYXJlOiBBYnlqc2tpaiwgQWxsYWlraG92c2tpaiwgVmVya2hoaG5la29seW1za2lqLCBNb21za2lqLAotIyBOaXpobmVrb2x5bXNraWosIE9qbXlha29uc2tpaiwgU3JlZG5la29seW1za2lqLgorIyBOaXpobmVrb2x5bXNraWosIC4uLiBTcmVkbmVrb2x5bXNraWouCiBab25lIEFzaWEvTWFnYWRhbgkxMDowMzoxMiAtCUxNVAkxOTI0IE1heSAgMgogCQkJMTA6MDAJLQlNQUdUCTE5MzAgSnVuIDIxICMgTWFnYWRhbiBUaW1lCiAJCQkxMTowMAlSdXNzaWEJTUFHJXNUCTE5OTEgTWFyIDMxIDI6MDBzCiAJCQkxMDowMAlSdXNzaWEJTUFHJXNUCTE5OTIgSmFuIDE5IDI6MDBzCiAJCQkxMTowMAlSdXNzaWEJTUFHJXNUCTIwMTEgTWFyIDI3IDI6MDBzCiAJCQkxMjowMAktCU1BR1QKLSMKKworIyBGcm9tIEFydGh1ciBEYXZpZCBPbHNvbiAoMjAxMi0wNS0wOSk6CisjIE9qbXlha29uc2tpaiBhbmQgdGhlIEt1cmlsIElzbGFuZHMgc3dpdGNoZWQgZnJvbQorIyBNYWdhZGFuIHRpbWUgdG8gVmxhZGl2b3N0b2sgdGltZSBpbiAyMDExLgorWm9uZSBBc2lhL1VzdC1OZXJhCSA5OjMyOjU0IC0JTE1UCTE5MTkgRGVjIDE1CisJCQkgODowMAktCVlBS1QJMTkzMCBKdW4gMjEgIyBZYWt1dHNrIFRpbWUKKwkJCSA5OjAwCVJ1c3NpYQlZQUtUCTE5ODEgQXByICAxCisJCQkxMTowMAlSdXNzaWEJTUFHJXNUCTE5OTEgTWFyIDMxIDI6MDBzCisJCQkxMDowMAlSdXNzaWEJTUFHJXNUCTE5OTIgSmFuIDE5IDI6MDBzCisJCQkxMTowMAlSdXNzaWEJTUFHJXNUCTIwMTEgTWFyIDI3IDI6MDBzCisJCQkxMjowMAktCU1BR1QJMjAxMSBTZXAgMTMgMDowMHMgIyBEZWNyZWUgNzI1PworCQkJMTE6MDAJLQlWTEFUCisKICMgRnJvbSBPc2NhciB2YW4gVmxpam1lbiAoMjAwMS0wOC0yNSk6IFtUaGlzIHJlZ2lvbiBjb25zaXN0cyBvZl0KICMgS2FtY2hhdHNrYXlhIG9ibGFzdCcsIEtvcnlha3NraWogYXZ0b25vbW55aiBva3J1Zy4KICMKZGlmZiAtLWdpdCBhL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9ub3J0aGFtZXJpY2EgYi9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvbm9ydGhhbWVyaWNhCmluZGV4IGMzMDMzMjYuLjg1OGJmODEgMTAwNjQ0Ci0tLSBhL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9ub3J0aGFtZXJpY2EKKysrIGIvamRrL21ha2Uvc3VuL2phdmF6aWMvdHpkYXRhL25vcnRoYW1lcmljYQpAQCAtMjksNyArMjksNyBAQAogCiAjIFRoaXMgZGF0YSBpcyBieSBubyBtZWFucyBhdXRob3JpdGF0aXZlOyBpZiB5b3UgdGhpbmsgeW91IGtub3cgYmV0dGVyLAogIyBnbyBhaGVhZCBhbmQgZWRpdCB0aGUgZmlsZSAoYW5kIHBsZWFzZSBzZW5kIGFueSBjaGFuZ2VzIHRvCi0jIHR6QGVsc2llLm5jaS5uaWguZ292IGZvciBnZW5lcmFsIHVzZSBpbiB0aGUgZnV0dXJlKS4KKyMgdHpAaWFuYS5vcmcgZm9yIGdlbmVyYWwgdXNlIGluIHRoZSBmdXR1cmUpLgogCiAjIEZyb20gUGF1bCBFZ2dlcnQgKDE5OTktMDMtMjIpOgogIyBBIHJlbGlhYmxlIGFuZCBlbnRlcnRhaW5pbmcgc291cmNlIGFib3V0IHRpbWUgem9uZXMgaXMKQEAgLTEwNDIsNiArMTA0Miw5IEBACiAjCVdpbGxpYW0gV2lsbGV0dCwgVGhlIFdhc3RlIG9mIERheWxpZ2h0LCAxOXRoIGVkaXRpb24KICMJPC9hPiAoMTkxNC0wMykKICMKKyMJTWlsbmUgSi4gQ2l2aWwgdGltZS4gR2VvZ3IgSi4gMTg5OSBGZWI7MTMoMik6MTczLTk0CisjCTxodHRwOi8vd3d3LmpzdG9yLm9yZy9zdGFibGUvMTc3NDM1OT4uCisjCiAjIFNlZSB0aGUgYGV1cm9wZScgZmlsZSBmb3IgR3JlZW5sYW5kLgogCiAjIENhbmFkYQpAQCAtMjU3Nyw2ICsyNTgwLDggQEAKIAogIyBCYWhhbWFzCiAjCisjIEZvciAxODk5IE1pbG5lIGdpdmVzIC01OjA5OjI5LjU7IHJvdW5kIHRoYXQuCisjCiAjIEZyb20gU3VlIFdpbGxpYW1zICgyMDA2LTEyLTA3KToKICMgVGhlIEJhaGFtYXMgYW5ub3VuY2VkIGFib3V0IGEgbW9udGggYWdvIHRoYXQgdGhleSBwbGFuIHRvIGNoYW5nZSB0aGVpciBEU1QKICMgcnVsZXMgdG8gc3luYyB3aXRoIHRoZSBVLlMuIHN0YXJ0aW5nIGluIDIwMDcuLi4uCkBAIC0yNTg2LDExICsyNTkxLDE0IEBACiBSdWxlCUJhaGFtYXMJMTk2NAkxOTc1CS0JT2N0CWxhc3RTdW4JMjowMAkwCVMKIFJ1bGUJQmFoYW1hcwkxOTY0CTE5NzUJLQlBcHIJbGFzdFN1bgkyOjAwCTE6MDAJRAogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQotWm9uZQlBbWVyaWNhL05hc3NhdQktNTowOToyNCAtCUxNVAkxOTEyIE1hciAyCitab25lCUFtZXJpY2EvTmFzc2F1CS01OjA5OjMwIC0JTE1UCTE5MTIgTWFyIDIKIAkJCS01OjAwCUJhaGFtYXMJRSVzVAkxOTc2CiAJCQktNTowMAlVUwlFJXNUCiAKICMgQmFyYmFkb3MKKworIyBGb3IgMTg5OSBNaWxuZSBnaXZlcyAtMzo1ODoyOS4yOyByb3VuZCB0aGF0LgorCiAjIFJ1bGUJTkFNRQlGUk9NCVRPCVRZUEUJSU4JT04JQVQJU0FWRQlMRVRURVIvUwogUnVsZQlCYXJiCTE5NzcJb25seQktCUp1bgkxMgkyOjAwCTE6MDAJRAogUnVsZQlCYXJiCTE5NzcJMTk3OAktCU9jdAlTdW4+PTEJMjowMAkwCVMKQEAgLTI1OTgsOCArMjYwNiw4IEBACiBSdWxlCUJhcmIJMTk3OQlvbmx5CS0JU2VwCTMwCTI6MDAJMAlTCiBSdWxlCUJhcmIJMTk4MAlvbmx5CS0JU2VwCTI1CTI6MDAJMAlTCiAjIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCi1ab25lIEFtZXJpY2EvQmFyYmFkb3MJLTM6NTg6MjggLQlMTVQJMTkyNAkJIyBCcmlkZ2V0b3duCi0JCQktMzo1ODoyOCAtCUJNVAkxOTMyCSAgIyBCcmlkZ2V0b3duIE1lYW4gVGltZQorWm9uZSBBbWVyaWNhL0JhcmJhZG9zCS0zOjU4OjI5IC0JTE1UCTE5MjQJCSMgQnJpZGdldG93bgorCQkJLTM6NTg6MjkgLQlCTVQJMTkzMgkgICMgQnJpZGdldG93biBNZWFuIFRpbWUKIAkJCS00OjAwCUJhcmIJQSVzVAogCiAjIEJlbGl6ZQpAQCAtMjYxNyw2ICsyNjI1LDkgQEAKIAogIyBCZXJtdWRhCiAKKyMgRm9yIDE4OTkgTWlsbmUgZ2l2ZXMgLTQ6MTk6MTguMyBhcyB0aGUgbWVyaWRpYW4gb2YgdGhlIGNsb2NrIHRvd2VyLAorIyBCZXJtdWRhIGRvY2t5YXJkLCBJcmVsYW5kIEk7IHJvdW5kIHRoYXQuCisKICMgRnJvbSBEYW4gSm9uZXMsIHJlcG9ydGluZyBpbiBUaGUgUm95YWwgR2F6ZXR0ZSAoMjAwNi0wNi0yNik6CiAKICMgTmV4dCB5ZWFyLCBob3dldmVyLCBjbG9ja3MgaW4gdGhlIFVTIHdpbGwgZ28gZm9yd2FyZCBvbiB0aGUgc2Vjb25kIFN1bmRheQpAQCAtMjYyNiw3ICsyNjM3LDcgQEAKICMgaHR0cDovL3d3dy50aGVyb3lhbGdhemV0dGUuY29tL2FwcHMvcGJjcy5kbGwvYXJ0aWNsZT9BSUQ9LzIwMDYwNTI5L05FV1MvMTA1MjkwMTM1CiAKICMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KLVpvbmUgQXRsYW50aWMvQmVybXVkYQktNDoxOTowNCAtCUxNVAkxOTMwIEphbiAgMSAyOjAwICAgICMgSGFtaWx0b24KK1pvbmUgQXRsYW50aWMvQmVybXVkYQktNDoxOToxOCAtCUxNVAkxOTMwIEphbiAgMSAyOjAwICAgICMgSGFtaWx0b24KIAkJCS00OjAwCS0JQVNUCTE5NzQgQXByIDI4IDI6MDAKIAkJCS00OjAwCUJhaGFtYXMJQSVzVAkxOTc2CiAJCQktNDowMAlVUwlBJXNUCkBAIC0yNjM4LDYgKzI2NDksOSBAQAogCQkJLTU6MDAJLQlFU1QKIAogIyBDb3N0YSBSaWNhCisKKyMgTWlsbmUgZ2l2ZXMgLTU6MzY6MTMuMyBhcyBTYW4gSm9zZSBtZWFuIHRpbWU7IHJvdW5kIHRvIG5lYXJlc3QuCisKICMgUnVsZQlOQU1FCUZST00JVE8JVFlQRQlJTglPTglBVAlTQVZFCUxFVFRFUi9TCiBSdWxlCUNSCTE5NzkJMTk4MAktCUZlYglsYXN0U3VuCTA6MDAJMTowMAlECiBSdWxlCUNSCTE5NzkJMTk4MAktCUp1bglTdW4+PTEJMDowMAkwCVMKQEAgLTI2NDgsMTQgKzI2NjIsMTkgQEAKIFJ1bGUJQ1IJMTk5Mglvbmx5CS0JTWFyCTE1CTA6MDAJMAlTCiAjIFRoZXJlIGFyZSB0b28gbWFueSBTYW4gSm9zZXMgZWxzZXdoZXJlLCBzbyB3ZSdsbCB1c2UgYENvc3RhIFJpY2EnLgogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQotWm9uZSBBbWVyaWNhL0Nvc3RhX1JpY2EJLTU6MzY6MjAgLQlMTVQJMTg5MAkJIyBTYW4gSm9zZQotCQkJLTU6MzY6MjAgLQlTSk1UCTE5MjEgSmFuIDE1ICMgU2FuIEpvc2UgTWVhbiBUaW1lCitab25lIEFtZXJpY2EvQ29zdGFfUmljYQktNTozNjoxMyAtCUxNVAkxODkwCQkjIFNhbiBKb3NlCisJCQktNTozNjoxMyAtCVNKTVQJMTkyMSBKYW4gMTUgIyBTYW4gSm9zZSBNZWFuIFRpbWUKIAkJCS02OjAwCUNSCUMlc1QKICMgQ29jbwogIyBubyBpbmZvcm1hdGlvbjsgcHJvYmFibHkgbGlrZSBBbWVyaWNhL0Nvc3RhX1JpY2EKIAogIyBDdWJhCiAKKyMgRnJvbSBQYXVsIEVnZ2VydCAoMjAxMy0wMi0yMSk6CisjIE1pbG5lIGdpdmVzIC01OjI4OjUwLjQ1IGZvciB0aGUgb2JzZXJ2YXRvcnkgYXQgSGF2YW5hLCAtNToyOToyMy41NworIyBmb3IgdGhlIHBvcnQsIGFuZCAtNTozMCBmb3IgbWV0ZW9yb2xvZ2ljYWwgb2JzZXJ2YXRpb25zLgorIyBGb3Igbm93LCBzdGljayB3aXRoIFNoYW5rcyAmIFBvdHRlbmdlci4KKwogIyBGcm9tIEFydGh1ciBEYXZpZCBPbHNvbiAoMTk5OS0wMy0yOSk6CiAjIFRoZSAxOTk5LTAzLTI4IGV4aGliaXRpb24gYmFzZWJhbGwgZ2FtZSBoZWxkIGluIEhhdmFuYSwgQ3ViYSwgYmV0d2VlbgogIyB0aGUgQ3ViYW4gTmF0aW9uYWwgVGVhbSBhbmQgdGhlIEJhbHRpbW9yZSBPcmlvbGVzIHdhcyBjYXJyaWVkIGxpdmUgb24KQEAgLTMwMDQsMjQgKzMwMjMsMjEgQEAKICMgYXBwYXJlbnRseSB1c2luZyB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIGRhdGUgYXMgVVNBL0NhbmFkYS4KICMgU28gdGhpcyBtZWFucyB0aGV5IGhhdmUgYWxyZWFkeSBjaGFuZ2VkIHRoZWlyIHRpbWUuCiAjCi0jIChTb3VyY2VzIGluIEZyZW5jaCk6Ci0jIDxhIGhyZWY9Imh0dHA6Ly93d3cuYWx0ZXJwcmVzc2Uub3JnL3NwaXAucGhwP2FydGljbGUxMjUxMCI+CiAjIGh0dHA6Ly93d3cuYWx0ZXJwcmVzc2Uub3JnL3NwaXAucGhwP2FydGljbGUxMjUxMAotIyA8L2E+Ci0jIDxhIGhyZWY9Imh0dHA6Ly9yYWRpb3Zpc2lvbjIwMDBoYWl0aS5uZXQvaG9tZS8/cD0xMzI1MyI+CiAjIGh0dHA6Ly9yYWRpb3Zpc2lvbjIwMDBoYWl0aS5uZXQvaG9tZS8/cD0xMzI1MwotIyA8L2E+CiAjCi0jIE91ciBjb3ZlcmFnZToKLSMgPGEgaHJlZj0iaHR0cDovL3d3dy50aW1lYW5kZGF0ZS5jb20vbmV3cy90aW1lL2hhaXRpLWRzdC0yMDEyLmh0bWwiPgotIyBodHRwOi8vd3d3LnRpbWVhbmRkYXRlLmNvbS9uZXdzL3RpbWUvaGFpdGktZHN0LTIwMTIuaHRtbAotIyA8L2E+Ci0KICMgRnJvbSBBcnRodXIgRGF2aWQgT2xzb24gKDIwMTItMDMtMTEpOgogIyBUaGUgYWx0ZXJwcmVzc2Uub3JnIHNvdXJjZSBzZWVtcyB0byBzaG93IGEgVVMtc3R5bGUgbGVhcCBmcm9tIDI6MDAgYS5tLiB0bwogIyAzOjAwIGEubS4gcmF0aGVyIHRoYW4gdGhlIHRyYWRpdGlvbmFsIEhhaXRpYW4ganVtcCBhdCBtaWRuaWdodC4KLSMgQXNzdW1lIGEgVVMtc3R5bGUgZmFsbCBiYWNrIGFzIHdlbGwgWFhYLgotIyBEbyBub3QgeWV0IGFzc3VtZSB0aGF0IHRoZSBjaGFuZ2UgY2FycmllcyBmb3J3YXJkIHBhc3QgMjAxMiBYWFguCisjIEFzc3VtZSBhIFVTLXN0eWxlIGZhbGwgYmFjayBhcyB3ZWxsLgorCisjIEZyb20gU3RlZmZlbiBUaG9yc2VuICgyMDEzLTAzLTEwKToKKyMgSXQgYXBwZWFycyB0aGF0IEhhaXRpIGlzIG9ic2VydmluZyBEU1QgdGhpcyB5ZWFyIGFzIHdlbGwsIHNhbWUgcnVsZXMKKyMgYXMgVVMvQ2FuYWRhLiAgVGhleSBkaWQgaXQgbGFzdCB5ZWFyIGFzIHdlbGwsIGFuZCBpdCBsb29rcyBsaWtlIHRoZXkKKyMgYXJlIGdvaW5nIHRvIG9ic2VydmUgRFNUIGV2ZXJ5IHllYXIgbm93Li4uCisjCisjIGh0dHA6Ly9yYWRpb3Zpc2lvbjIwMDBoYWl0aS5uZXQvcHVibGljL2hhaXRpLWF2aXMtY2hhbmdlbWVudC1kaGV1cmUtZGltYW5jaGUvCisjIGh0dHA6Ly93d3cuY2FuYWxwbHVzaGFpdGkubmV0Lz9wPTY3MTQKIAogIyBSdWxlCU5BTUUJRlJPTQlUTwlUWVBFCUlOCU9OCUFUCVNBVkUJTEVUVEVSL1MKIFJ1bGUJSGFpdGkJMTk4Mwlvbmx5CS0JTWF5CTgJMDowMAkxOjAwCUQKQEAgLTMwMzMsOCArMzA0OSw4IEBACiBSdWxlCUhhaXRpCTE5ODgJMTk5NwktCU9jdAlsYXN0U3VuCTE6MDBzCTAJUwogUnVsZQlIYWl0aQkyMDA1CTIwMDYJLQlBcHIJU3VuPj0xCTA6MDAJMTowMAlECiBSdWxlCUhhaXRpCTIwMDUJMjAwNgktCU9jdAlsYXN0U3VuCTA6MDAJMAlTCi1SdWxlCUhhaXRpCTIwMTIJb25seQktCU1hcglTdW4+PTgJMjowMAkxOjAwCUQKLVJ1bGUJSGFpdGkJMjAxMglvbmx5CS0JTm92CVN1bj49MQkyOjAwCTAJUworUnVsZQlIYWl0aQkyMDEyCW1heAktCU1hcglTdW4+PTgJMjowMAkxOjAwCUQKK1J1bGUJSGFpdGkJMjAxMgltYXgJLQlOb3YJU3VuPj0xCTI6MDAJMAlTCiAjIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCiBab25lIEFtZXJpY2EvUG9ydC1hdS1QcmluY2UgLTQ6NDk6MjAgLQlMTVQJMTg5MAogCQkJLTQ6NDkJLQlQUE1UCTE5MTcgSmFuIDI0IDEyOjAwICMgUC1hLVAgTVQKZGlmZiAtLWdpdCBhL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9zb3V0aGFtZXJpY2EgYi9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvc291dGhhbWVyaWNhCmluZGV4IDBkNjc5N2UuLmE0NWExZjcgMTAwNjQ0Ci0tLSBhL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS9zb3V0aGFtZXJpY2EKKysrIGIvamRrL21ha2Uvc3VuL2phdmF6aWMvdHpkYXRhL3NvdXRoYW1lcmljYQpAQCAtMjcsMTMgKzI3LDE3IEBACiAKICMgVGhpcyBkYXRhIGlzIGJ5IG5vIG1lYW5zIGF1dGhvcml0YXRpdmU7IGlmIHlvdSB0aGluayB5b3Uga25vdyBiZXR0ZXIsCiAjIGdvIGFoZWFkIGFuZCBlZGl0IHRoZSBmaWxlIChhbmQgcGxlYXNlIHNlbmQgYW55IGNoYW5nZXMgdG8KLSMgdHpAZWxzaWUubmNpLm5paC5nb3YgZm9yIGdlbmVyYWwgdXNlIGluIHRoZSBmdXR1cmUpLgorIyB0ekBpYW5hLm9yZyBmb3IgZ2VuZXJhbCB1c2UgaW4gdGhlIGZ1dHVyZSkuCiAKICMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNi0wMy0yMik6CiAjIEEgZ29vZCBzb3VyY2UgZm9yIHRpbWUgem9uZSBoaXN0b3JpY2FsIGRhdGEgb3V0c2lkZSB0aGUgVS5TLiBpcwogIyBUaG9tYXMgRy4gU2hhbmtzIGFuZCBSaXF1ZSBQb3R0ZW5nZXIsIFRoZSBJbnRlcm5hdGlvbmFsIEF0bGFzICg2dGggZWRpdGlvbiksCiAjIFNhbiBEaWVnbzogQUNTIFB1YmxpY2F0aW9ucywgSW5jLiAoMjAwMykuCiAjCisjIEZvciBkYXRhIGNpcmNhIDE4OTksIGEgY29tbW9uIHNvdXJjZSBpczoKKyMgTWlsbmUgSi4gQ2l2aWwgdGltZS4gR2VvZ3IgSi4gMTg5OSBGZWI7MTMoMik6MTczLTk0CisjIDxodHRwOi8vd3d3LmpzdG9yLm9yZy9zdGFibGUvMTc3NDM1OT4uCisjCiAjIEd3aWxsaW0gTGF3IHdyaXRlcyB0aGF0IGEgZ29vZCBzb3VyY2UKICMgZm9yIHJlY2VudCB0aW1lIHpvbmUgZGF0YSBpcyB0aGUgSW50ZXJuYXRpb25hbCBBaXIgVHJhbnNwb3J0CiAjIEFzc29jaWF0aW9uJ3MgU3RhbmRhcmQgU2NoZWR1bGVzIEluZm9ybWF0aW9uIE1hbnVhbCAoSUFUQSBTU0lNKSwKQEAgLTQwNCwyMSArNDA4LDExIEBACiAjIDxhLz4KICMgaXMgdGhlIG9mZmljaWFsIHBhZ2UgZm9yIHRoZSBQcm92aW5jZSBHb3Zlcm5tZW50KS4KICMKLSMgVGhlcmUncyBhbHNvIGEgbm90ZSBpbiBvbmx5IG9uZSBvZiB0aGUgbWFqb3IgbmF0aW9uYWwgcGFwZXJzIChMYSBOYWNp824pIGF0Ci0jIDxhIGhyZWY9Imh0dHA6Ly93d3cubGFuYWNpb24uY29tLmFyL25vdGEuYXNwP25vdGFfaWQ9MTEwNzkxMiI+CisjIFRoZXJlJ3MgYWxzbyBhIG5vdGUgaW4gb25seSBvbmUgb2YgdGhlIG1ham9yIG5hdGlvbmFsIHBhcGVycyAuLi4KICMgaHR0cDovL3d3dy5sYW5hY2lvbi5jb20uYXIvbm90YS5hc3A/bm90YV9pZD0xMTA3OTEyCi0jIDwvYT4KICMKLSMgVGhlIHByZXNzIHJlbGVhc2Ugc2F5czoKLSMgICguLi4pIGFudW5jafMgcXVlIGVsIHBy83hpbW8gZG9taW5nbyBhIGxhcyAwMDowMCBsb3MgcHVudGFub3MgZGViZXLhbgotIyBhdHJhc2FyIHVuYSBob3JhIHN1cyByZWxvamVzLgotIwotIyBBIHBhcnRpciBkZSBlbnRvbmNlcywgU2FuIEx1aXMgZXN0YWJsZWNlcuEgZWwgaHVzbyBob3JhcmlvIHByb3BpbyBkZQotIyBsYSBQcm92aW5jaWEuIERlIGVzdGEgbWFuZXJhLCBkdXJhbnRlIGVsIHBlcmlvZG8gZGVsIGNhbGVuZGFyaW8gYW51YWwKLSMgMjAwOSwgZWwgY2FtYmlvIGhvcmFyaW8gcXVlZGFy4SBjb21wcmVuZGlkbyBlbnRyZSBsYXMgMDA6MDAgZGVsIHRlcmNlcgotIyBkb21pbmdvIGRlIG1hcnpvIHkgbGFzIDI0OjAwIGRlbCBzZWd1bmRvIHPhYmFkbyBkZSBvY3R1YnJlLgotIyBRdWljayZkaXJ0eSB0cmFuc2xhdGlvbgotIyAoLi4uKSBhbm5vdW5jZWQgdGhhdCBuZXh0IFN1bmRheSwgYXQgMDA6MDAsIFB1bnRhbm9zICh0aGUgU2FuIEx1aXMKKyMgVGhlIHByZXNzIHJlbGVhc2Ugc2F5cyBbcXVpY2sgYW5kIGRpcnR5IHRyYW5zbGF0aW9uXToKKyMgLi4uIGFubm91bmNlZCB0aGF0IG5leHQgU3VuZGF5LCBhdCAwMDowMCwgUHVudGFub3MgKHRoZSBTYW4gTHVpcwogIyBpbmhhYml0YW50cykgd2lsbCBoYXZlIHRvIHR1cm4gYmFjayBvbmUgaG91ciB0aGVpciBjbG9ja3MKICMKICMgU2luY2UgdGhlbiwgU2FuIEx1aXMgd2lsbCBlc3RhYmxpc2ggaXRzIG93biBQcm92aW5jZSB0aW1lem9uZS4gVGh1cywKQEAgLTQ4MCw2ICs0NzQsOSBAQAogIyBydWxlcy4uLlNhbiBMdWlzIGlzIHN0aWxsIHVzaW5nICJXZXN0ZXJuIEFSZ2VudGluYSBUaW1lIiBhbmQgaXQgZ290CiAjIHN0dWNrIG9uIFN1bW1lciBkYXlsaWdodCBzYXZpbmdzIHRpbWUgZXZlbiB0aG91Z2ggdGhlIHN1bW1lciBpcyBvdmVyLgogCisjIEZyb20gUGF1bCBFZ2dlcnQgKDIwMTMtMDItMjEpOgorIyBNaWxuZSBzYXlzIENvcmRvYmEgdGltZSB3YXMgLTQ6MTY6NDguMi4gIFJvdW5kIHRvIHRoZSBuZWFyZXN0IHNlY29uZC4KKwogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQogIwogIyBCdWVub3MgQWlyZXMgKEJBKSwgQ2FwaXRhbCBGZWRlcmFsIChDRiksCkBAIC04MzUsOSArODMyLDkgQEAKIAogIyBGcm9tIEd1aWxoZXJtZSBCZXJuYXJkZXMgUm9kcmlndWVzICgyMDExLTEwLTA3KToKICMgVGhlcmUgaXMgbmV3cyBpbiB0aGUgbWVkaWEsIGhvd2V2ZXIgdGhlcmUgaXMgc3RpbGwgbm8gZGVjcmVlIGFib3V0IGl0LgotIyBJIGp1c3Qgc2VuZCBhIGUtbWFpbCB0byBadWxtaXJhIEJyYW5k428gYXQKKyMgSSBqdXN0IHNlbmQgYSBlLW1haWwgdG8gWnVsbWlyYSBCcmFuZGFvIGF0CiAjIDxhIGhyZWY9Imh0dHA6Ly9wY2RzaDAxLm9uLmJyLyI+aHR0cDovL3BjZHNoMDEub24uYnIvPC9hPiB0aGUKLSMgb2ZpY2lhbCBhZ2VuY3kgYWJvdXQgdGltZSBpbiBCcmF6aWwsIGFuZCBzaGUgY29uZmlybWVkIHRoYXQgdGhlIG9sZCBydWxlIGlzCisjIG9mZmljaWFsIGFnZW5jeSBhYm91dCB0aW1lIGluIEJyYXppbCwgYW5kIHNoZSBjb25maXJtZWQgdGhhdCB0aGUgb2xkIHJ1bGUgaXMKICMgc3RpbGwgaW4gZm9yY2UuCiAKICMgRnJvbSBHdWlsaGVybWUgQmVybmFyZGVzIFJvZHJpZ3VlcyAoMjAxMS0xMC0xNCkKQEAgLTEyNjYsOSArMTI2MywxMyBAQAogIyBiLiBTYXR1cmRheSwgU2VwdGVtYmVyIDEsIDIwMTIsIGNsb2NrcyBzaG91bGQgZ28gZm9yd2FyZCA2MCBtaW51dGVzOyB0aGF0IGlzLAogIyBhdCAyMzo1OTo1OSwgaW5zdGVhZCBvZiBwYXNzaW5nIHRvIDA6MDAsIHRoZSB0aW1lIHNob3VsZCBiZSBhZGp1c3RlZCB0byBiZQogIyAwMTowMCBvbiBTZXB0ZW1iZXIgMi4KLSMKLSMgTm90ZSB0aGF0Li4udGhpcyBpcyB5ZXQgYW5vdGhlciAidGVtcG9yYXJ5IiBjaGFuZ2UgdGhhdCB3aWxsIGJlIHJlZXZhbHVhdGVkCi0jIEFHQUlOIGluIDIwMTMuCisKKyMgRnJvbSBTdGVmZmVuIFRob3JzZW4gKDIwMTMtMDItMTUpOgorIyBBY2NvcmRpbmcgdG8gc2V2ZXJhbCBuZXdzIHNvdXJjZXMsIENoaWxlIGhhcyBleHRlbmRlZCBEU1QgdGhpcyB5ZWFyLAorIyB0aGV5IHdpbGwgZW5kIERTVCBsYXRlciBhbmQgc3RhcnQgRFNUIGVhcmxpZXIgdGhhbiBwbGFubmVkLiAgVGhleQorIyBob3BlIHRvIHNhdmUgZW5lcmd5LiAgVGhlIG5ldyBlbmQgZGF0ZSBpcyAyMDEzLTA0LTI4IDAwOjAwIGFuZCBuZXcKKyMgc3RhcnQgZGF0ZSBpcyAyMDEzLTA5LTA4IDAwOjAwLi4uLgorIyBodHRwOi8vd3d3LmdvYi5jbC9pbmZvcm1hLzIwMTMvMDIvMTUvZ29iaWVybm8tYW51bmNpYS1mZWNoYXMtZGUtY2FtYmlvLWRlLWhvcmEtcGFyYS1lbC1hbm8tMjAxMy5odG0KIAogIyBOT1RFOiBDaGlsZUFRIHJ1bGVzIGZvciBBbnRhcmN0aWMgYmFzZXMgYXJlIHN0b3JlZCBzZXBhcmF0ZWx5IGluIHRoZQogIyAnYW50YXJjdGljYScgZmlsZS4KQEAgLTEzMTEsMTAgKzEzMTIsOCBAQAogUnVsZQlDaGlsZQkyMDEwCW9ubHkJLQlBcHIJU3VuPj0xCTM6MDB1CTAJLQogUnVsZQlDaGlsZQkyMDExCW9ubHkJLQlNYXkJU3VuPj0yCTM6MDB1CTAJLQogUnVsZQlDaGlsZQkyMDExCW9ubHkJLQlBdWcJU3VuPj0xNgk0OjAwdQkxOjAwCVMKLVJ1bGUJQ2hpbGUJMjAxMglvbmx5CS0JQXByCVN1bj49MjMJMzowMHUJMAktCi1SdWxlCUNoaWxlCTIwMTIJb25seQktCVNlcAlTdW4+PTIJNDowMHUJMTowMAlTCi1SdWxlCUNoaWxlCTIwMTMJbWF4CS0JTWFyCVN1bj49OQkzOjAwdQkwCS0KLVJ1bGUJQ2hpbGUJMjAxMwltYXgJLQlPY3QJU3VuPj05CTQ6MDB1CTE6MDAJUworUnVsZQlDaGlsZQkyMDEyCW1heAktCUFwcglTdW4+PTIzCTM6MDB1CTAJLQorUnVsZQlDaGlsZQkyMDEyCW1heAktCVNlcAlTdW4+PTIJNDowMHUJMTowMAlTCiAjIElBVEEgU1NJTSBhbm9tYWxpZXM6ICgxOTkyLTAyKSBzYXlzIDE5OTItMDMtMTQ7CiAjICgxOTk2LTA5KSBzYXlzIDE5OTgtMDMtMDguICBJZ25vcmUgdGhlc2UuCiAjIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCkBAIC0xMzM2LDE3ICsxMzM1LDIzIEBACiAjIFNhbiBGZWxpeCwgYW5kIEFudGFyY3RpYyBiYXNlcywgYXJlIGxpa2UgQW1lcmljYS9TYW50aWFnby4KIAogIyBDb2xvbWJpYQorCisjIE1pbG5lIGdpdmVzIDQ6NTY6MTYuNCBmb3IgQm9nb3RhIHRpbWUgaW4gMTg5OTsgcm91bmQgdG8gbmVhcmVzdC4gIEhlIHdyaXRlcywKKyMgIkEgdmFyaWF0aW9uIG9mIGZpZnRlZW4gbWludXRlcyBpbiB0aGUgcHVibGljIGNsb2NrcyBvZiBCb2dvdGEgaXMgbm90IHJhcmUuIgorCiAjIFJ1bGUJTkFNRQlGUk9NCVRPCVRZUEUJSU4JT04JQVQJU0FWRQlMRVRURVIvUwogUnVsZQlDTwkxOTkyCW9ubHkJLQlNYXkJIDMJMDowMAkxOjAwCVMKIFJ1bGUJQ08JMTk5Mwlvbmx5CS0JQXByCSA0CTA6MDAJMAktCiAjIFpvbmUJTkFNRQkJR01UT0ZGCVJVTEVTCUZPUk1BVAlbVU5USUxdCi1ab25lCUFtZXJpY2EvQm9nb3RhCS00OjU2OjIwIC0JTE1UCTE4ODQgTWFyIDEzCi0JCQktNDo1NjoyMCAtCUJNVAkxOTE0IE5vdiAyMyAjIEJvZ290YSBNZWFuIFRpbWUKK1pvbmUJQW1lcmljYS9Cb2dvdGEJLTQ6NTY6MTYgLQlMTVQJMTg4NCBNYXIgMTMKKwkJCS00OjU2OjE2IC0JQk1UCTE5MTQgTm92IDIzICMgQm9nb3RhIE1lYW4gVGltZQogCQkJLTU6MDAJQ08JQ08lc1QJIyBDb2xvbWJpYSBUaW1lCiAjIE1hbHBlbG8sIFByb3ZpZGVuY2lhLCBTYW4gQW5kcmVzCiAjIG5vIGluZm9ybWF0aW9uOyBwcm9iYWJseSBsaWtlIEFtZXJpY2EvQm9nb3RhCiAKICMgQ3VyYWNhbworCisjIE1pbG5lIGdpdmVzIDQ6MzU6NDYuOSBmb3IgQ3VyYWNhbyBtZWFuIHRpbWU7IHJvdW5kIHRvIG5lYXJlc3QuCiAjCiAjIEZyb20gUGF1bCBFZ2dlcnQgKDIwMDYtMDMtMjIpOgogIyBTaGFua3MgJiBQb3R0ZW5nZXIgc2F5IHRoYXQgVGhlIEJvdHRvbSBhbmQgUGhpbGlwc2J1cmcgaGF2ZSBiZWVuIGF0CkBAIC0xMzYzLDcgKzEzNjgsNyBAQAogIyB0aG91Z2gsIGFzIGZhciBhcyB3ZSBrbm93LgogIwogIyBab25lCU5BTUUJCUdNVE9GRglSVUxFUwlGT1JNQVQJW1VOVElMXQotWm9uZQlBbWVyaWNhL0N1cmFjYW8JLTQ6MzU6NDQgLQlMTVQJMTkxMiBGZWIgMTIJIyBXaWxsZW1zdGFkCitab25lCUFtZXJpY2EvQ3VyYWNhbwktNDozNTo0NyAtCUxNVAkxOTEyIEZlYiAxMgkjIFdpbGxlbXN0YWQKIAkJCS00OjMwCS0JQU5UCTE5NjUgIyBOZXRoZXJsYW5kcyBBbnRpbGxlcyBUaW1lCiAJCQktNDowMAktCUFTVAogCkBAIC0xMzc3LDYgKzEzODIsOCBAQAogCiAjIEVjdWFkb3IKICMKKyMgTWlsbmUgc2F5cyB0aGUgU2VudHJhbCBhbmQgU291dGggQW1lcmljYW4gVGVsZWdyYXBoIENvbXBhbnkgdXNlZCAtNToyNDoxNS4KKyMKICMgRnJvbSBQYXVsIEVnZ2VydCAoMjAwNy0wMy0wNCk6CiAjIEFwcGFyZW50bHkgRWN1YWRvciBoYWQgYSBmYWlsZWQgZXhwZXJpbWVudCB3aXRoIERTVCBpbiAxOTkyLgogIyA8aHR0cDovL21pZGVuYS5nb3YuZWMvY29udGVudC92aWV3LzEyNjEvMjA4Lz4gKDIwMDctMDItMjcpIGFuZApAQCAtMTU4Myw2ICsxNTkwLDE1IEBACiAjIC4uLgogUnVsZQlQYXJhCTIwMTAJbWF4CS0JT2N0CVN1bj49MQkwOjAwCTE6MDAJUwogUnVsZQlQYXJhCTIwMTAJbWF4CS0JQXByCVN1bj49OAkwOjAwCTAJLQorIworIyBGcm9tIFN0ZWZmZW4gVGhvcnNlbiAoMjAxMy0wMy0wNyk6CisjIFBhcmFndWF5IHdpbGwgZW5kIERTVCBvbiAyMDEzLTAzLTI0IDAwOjAwLi4uLgorIyBUaGV5IGRvIG5vdCB0ZWxsIGlmIHRoaXMgd2lsbCBiZSBhIHBlcm1hbmVudCBjaGFuZ2Ugb3IganVzdCB0aGlzIHllYXIuLi4uCisjIGh0dHA6Ly93d3cuYW5kZS5nb3YucHkvaW50ZXJuYS5waHA/aWQ9MTA3NQorIworIyBGcm9tIFBhdWwgRWdnZXJ0ICgyMDEzLTAzLTA3KToKKyMgRm9yIG5vdywgYXNzdW1lIGl0J3MganVzdCB0aGlzIHllYXIuCitSdWxlCVBhcmEJMjAxMwlvbmx5CS0JTWFyCTI0CTA6MDAJMAktCiAKICMgWm9uZQlOQU1FCQlHTVRPRkYJUlVMRVMJRk9STUFUCVtVTlRJTF0KIFpvbmUgQW1lcmljYS9Bc3VuY2lvbgktMzo1MDo0MCAtCUxNVAkxODkwCmRpZmYgLS1naXQgYS9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvem9uZS50YWIgYi9qZGsvbWFrZS9zdW4vamF2YXppYy90emRhdGEvem9uZS50YWIKaW5kZXggZWYzODBjZC4uZWIxZTg0ZiAxMDA2NDQKLS0tIGEvamRrL21ha2Uvc3VuL2phdmF6aWMvdHpkYXRhL3pvbmUudGFiCisrKyBiL2pkay9tYWtlL3N1bi9qYXZhemljL3R6ZGF0YS96b25lLnRhYgpAQCAtMTgyLDcgKzE4Miw4IEBACiBDWAktMTAyNSsxMDU0MwlJbmRpYW4vQ2hyaXN0bWFzCiBDWQkrMzUxMCswMzMyMglBc2lhL05pY29zaWEKIENaCSs1MDA1KzAxNDI2CUV1cm9wZS9QcmFndWUKLURFCSs1MjMwKzAxMzIyCUV1cm9wZS9CZXJsaW4KK0RFCSs1MjMwKzAxMzIyCUV1cm9wZS9CZXJsaW4JbW9zdCBsb2NhdGlvbnMKK0RFCSs0NzQyKzAwODQxCUV1cm9wZS9CdXNpbmdlbglCdXNpbmdlbgogREoJKzExMzYrMDQzMDkJQWZyaWNhL0RqaWJvdXRpCiBESwkrNTU0MCswMTIzNQlFdXJvcGUvQ29wZW5oYWdlbgogRE0JKzE1MTgtMDYxMjQJQW1lcmljYS9Eb21pbmljYQpAQCAtMzY0LDggKzM2NSwxMCBAQAogUlUJKzU2MDErMDkyNTAJQXNpYS9LcmFzbm95YXJzawlNb3Njb3crMDQgLSBZZW5pc2VpIFJpdmVyCiBSVQkrNTIxNisxMDQyMAlBc2lhL0lya3V0c2sJTW9zY293KzA1IC0gTGFrZSBCYWlrYWwKIFJVCSs2MjAwKzEyOTQwCUFzaWEvWWFrdXRzawlNb3Njb3crMDYgLSBMZW5hIFJpdmVyCitSVQkrNjIzOTIzKzEzNTMzMTQJQXNpYS9LaGFuZHlnYQlNb3Njb3crMDYgLSBUb21wb25za3ksIFVzdC1NYXlza3kKIFJVCSs0MzEwKzEzMTU2CUFzaWEvVmxhZGl2b3N0b2sJTW9zY293KzA3IC0gQW11ciBSaXZlcgogUlUJKzQ2NTgrMTQyNDIJQXNpYS9TYWtoYWxpbglNb3Njb3crMDcgLSBTYWtoYWxpbiBJc2xhbmQKK1JVCSs2NDMzMzcrMTQzMTMzNglBc2lhL1VzdC1OZXJhCU1vc2NvdyswNyAtIE95bXlha29uc2t5CiBSVQkrNTkzNCsxNTA0OAlBc2lhL01hZ2FkYW4JTW9zY293KzA4IC0gTWFnYWRhbgogUlUJKzUzMDErMTU4MzkJQXNpYS9LYW1jaGF0a2EJTW9zY293KzA4IC0gS2FtY2hhdGthCiBSVQkrNjQ0NSsxNzcyOQlBc2lhL0FuYWR5cglNb3Njb3crMDggLSBCZXJpbmcgU2VhCmRpZmYgLS1naXQgYS9qZGsvc3JjL21hY29zeC9uYXRpdmUvam9iamMvc3JjL2NvcmUvbmF0aXZlL1NFTC5tIGIvamRrL3NyYy9tYWNvc3gvbmF0aXZlL2pvYmpjL3NyYy9jb3JlL25hdGl2ZS9TRUwubQppbmRleCBlNmM1YjQ3Li44ZTYzNzljIDEwMDY0NAotLS0gYS9qZGsvc3JjL21hY29zeC9uYXRpdmUvam9iamMvc3JjL2NvcmUvbmF0aXZlL1NFTC5tCisrKyBiL2pkay9zcmMvbWFjb3N4L25hdGl2ZS9qb2JqYy9zcmMvY29yZS9uYXRpdmUvU0VMLm0KQEAgLTM0LDcgKzM0LDcgQEAKICAgICBjb25zdCBjaGFyICpzZWxOYW1lQXNDaGFycyA9ICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMoZW52LCBzZWxOYW1lLCBKTklfRkFMU0UpOwogICAgIGNvbnN0IFNFTCBzZWwgPSBzZWxfcmVnaXN0ZXJOYW1lKHNlbE5hbWVBc0NoYXJzKTsKICAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhlbnYsIHNlbE5hbWUsIHNlbE5hbWVBc0NoYXJzKTsKLSAgICByZXR1cm4gcHRyX3RvX2psb25nKHNlbCk7CisgICAgcmV0dXJuIHB0cl90b19qbG9uZygodm9pZCopc2VsKTsKIH0KIAogSk5JRVhQT1JUIGpzdHJpbmcgSk5JQ0FMTCBKYXZhX2NvbV9hcHBsZV9qb2JqY19TRUxfZ2V0U2VsZWN0b3JOYW1lCmRpZmYgLS1naXQgYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvamF2YS91dGlsL0hhc2hNYXAuamF2YSBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9qYXZhL3V0aWwvSGFzaE1hcC5qYXZhCmluZGV4IGNkY2JjZWMuLjU1NWNkZGEgMTAwNjQ0Ci0tLSBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9qYXZhL3V0aWwvSGFzaE1hcC5qYXZhCisrKyBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9qYXZhL3V0aWwvSGFzaE1hcC5qYXZhCkBAIC0xOTIsMTcgKzE5Miw2IEBACiAgICAgICovCiAgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgSG9sZGVyIHsKIAotICAgICAgICAgICAgLy8gVW5zYWZlIG1lY2hhbmljcwotICAgICAgICAvKioKLSAgICAgICAgICogVW5zYWZlIHV0aWxpdGllcwotICAgICAgICAgKi8KLSAgICAgICAgc3RhdGljIGZpbmFsIHN1bi5taXNjLlVuc2FmZSBVTlNBRkU7Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIE9mZnNldCBvZiAiZmluYWwiIGhhc2hTZWVkIGZpZWxkIHdlIG11c3Qgc2V0IGluIHJlYWRPYmplY3QoKSBtZXRob2QuCi0gICAgICAgICAqLwotICAgICAgICBzdGF0aWMgZmluYWwgbG9uZyBIQVNIU0VFRF9PRkZTRVQ7Ci0KICAgICAgICAgLyoqCiAgICAgICAgICAqIFRhYmxlIGNhcGFjaXR5IGFib3ZlIHdoaWNoIHRvIHN3aXRjaCB0byB1c2UgYWx0ZXJuYXRpdmUgaGFzaGluZy4KICAgICAgICAgICovCkBAIC0yMzAsMjkgKzIxOSwxNyBAQAogICAgICAgICAgICAgfSBjYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZmFpbGVkKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbGxlZ2FsIHZhbHVlIGZvciAnamRrLm1hcC5hbHRoYXNoaW5nLnRocmVzaG9sZCciLCBmYWlsZWQpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgQUxURVJOQVRJVkVfSEFTSElOR19USFJFU0hPTEQgPSB0aHJlc2hvbGQ7CiAKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgVU5TQUZFID0gc3VuLm1pc2MuVW5zYWZlLmdldFVuc2FmZSgpOwotICAgICAgICAgICAgICAgIEhBU0hTRUVEX09GRlNFVCA9IFVOU0FGRS5vYmplY3RGaWVsZE9mZnNldCgKLSAgICAgICAgICAgICAgICAgICAgSGFzaE1hcC5jbGFzcy5nZXREZWNsYXJlZEZpZWxkKCJoYXNoU2VlZCIpKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKE5vU3VjaEZpZWxkRXhjZXB0aW9uIHwgU2VjdXJpdHlFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRmFpbGVkIHRvIHJlY29yZCBoYXNoU2VlZCBvZmZzZXQiLCBlKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFMVEVSTkFUSVZFX0hBU0hJTkdfVEhSRVNIT0xEID0gdGhyZXNob2xkOwogICAgICAgICB9CiAgICAgfQogCiAgICAgLyoqCi0gICAgICogSWYge0Bjb2RlIHRydWV9IHRoZW4gcGVyZm9ybSBhbHRlcm5hdGl2ZSBoYXNoaW5nIG9mIFN0cmluZyBrZXlzIHRvIHJlZHVjZQotICAgICAqIHRoZSBpbmNpZGVuY2Ugb2YgY29sbGlzaW9ucyBkdWUgdG8gd2VhayBoYXNoIGNvZGUgY2FsY3VsYXRpb24uCi0gICAgICovCi0gICAgdHJhbnNpZW50IGJvb2xlYW4gdXNlQWx0SGFzaGluZzsKLQotICAgIC8qKgogICAgICAqIEEgcmFuZG9taXppbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2UgdGhhdCBpcyBhcHBsaWVkIHRvCi0gICAgICogaGFzaCBjb2RlIG9mIGtleXMgdG8gbWFrZSBoYXNoIGNvbGxpc2lvbnMgaGFyZGVyIHRvIGZpbmQuCisgICAgICogaGFzaCBjb2RlIG9mIGtleXMgdG8gbWFrZSBoYXNoIGNvbGxpc2lvbnMgaGFyZGVyIHRvIGZpbmQuIElmIDAgdGhlbgorICAgICAqIGFsdGVybmF0aXZlIGhhc2hpbmcgaXMgZGlzYWJsZWQuCiAgICAgICovCi0gICAgdHJhbnNpZW50IGZpbmFsIGludCBoYXNoU2VlZCA9IHN1bi5taXNjLkhhc2hpbmcucmFuZG9tSGFzaFNlZWQodGhpcyk7CisgICAgdHJhbnNpZW50IGludCBoYXNoU2VlZCA9IDA7CiAKICAgICAvKioKICAgICAgKiBDb25zdHJ1Y3RzIGFuIGVtcHR5IDx0dD5IYXNoTWFwPC90dD4gd2l0aCB0aGUgc3BlY2lmaWVkIGluaXRpYWwKQEAgLTI3NCwxNSArMjUxLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRGYWN0b3IpOwogCiAgICAgICAgIC8vIEZpbmQgYSBwb3dlciBvZiAyID49IGluaXRpYWxDYXBhY2l0eQotICAgICAgICBpbnQgY2FwYWNpdHkgPSAxOwotICAgICAgICB3aGlsZSAoY2FwYWNpdHkgPCBpbml0aWFsQ2FwYWNpdHkpCi0gICAgICAgICAgICBjYXBhY2l0eSA8PD0gMTsKKyAgICAgICAgaW50IGNhcGFjaXR5ID0gKGNhcGFjaXR5ID0gSW50ZWdlci5oaWdoZXN0T25lQml0KGluaXRpYWxDYXBhY2l0eSkpICE9IDAKKyAgICAgICAgICAgICAgICA/IGNhcGFjaXR5CisgICAgICAgICAgICAgICAgOiAxOworICAgICAgICBjYXBhY2l0eSA8PD0gKEludGVnZXIuYml0Q291bnQoaW5pdGlhbENhcGFjaXR5KSA+IDEpID8gMSA6IDA7CiAKICAgICAgICAgdGhpcy5sb2FkRmFjdG9yID0gbG9hZEZhY3RvcjsKICAgICAgICAgdGhyZXNob2xkID0gKGludClNYXRoLm1pbihjYXBhY2l0eSAqIGxvYWRGYWN0b3IsIE1BWElNVU1fQ0FQQUNJVFkgKyAxKTsKICAgICAgICAgdGFibGUgPSBuZXcgRW50cnlbY2FwYWNpdHldOwotICAgICAgICB1c2VBbHRIYXNoaW5nID0gc3VuLm1pc2MuVk0uaXNCb290ZWQoKSAmJgotICAgICAgICAgICAgICAgIChjYXBhY2l0eSA+PSBIb2xkZXIuQUxURVJOQVRJVkVfSEFTSElOR19USFJFU0hPTEQpOworICAgICAgICBpbml0SGFzaFNlZWRBc05lZWRlZChjYXBhY2l0eSk7CiAgICAgICAgIGluaXQoKTsKICAgICB9CiAKQEAgLTMzMyw2ICszMTAsMjMgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBJbml0aWFsaXplIHRoZSBoYXNoaW5nIG1hc2sgdmFsdWUuIFdlIGRlZmVyIGluaXRpYWxpemF0aW9uIHVudGlsIHdlCisgICAgICogcmVhbGx5IG5lZWQgaXQuCisgICAgICovCisgICAgZmluYWwgYm9vbGVhbiBpbml0SGFzaFNlZWRBc05lZWRlZChpbnQgY2FwYWNpdHkpIHsKKyAgICAgICAgYm9vbGVhbiBjdXJyZW50QWx0SGFzaGluZyA9IGhhc2hTZWVkICE9IDA7CisgICAgICAgIGJvb2xlYW4gdXNlQWx0SGFzaGluZyA9IHN1bi5taXNjLlZNLmlzQm9vdGVkKCkgJiYKKyAgICAgICAgICAgICAgICAoY2FwYWNpdHkgPj0gSG9sZGVyLkFMVEVSTkFUSVZFX0hBU0hJTkdfVEhSRVNIT0xEKTsKKyAgICAgICAgYm9vbGVhbiBzd2l0Y2hpbmcgPSBjdXJyZW50QWx0SGFzaGluZyBeIHVzZUFsdEhhc2hpbmc7CisgICAgICAgIGlmIChzd2l0Y2hpbmcpIHsKKyAgICAgICAgICAgIGhhc2hTZWVkID0gdXNlQWx0SGFzaGluZworICAgICAgICAgICAgICAgID8gc3VuLm1pc2MuSGFzaGluZy5yYW5kb21IYXNoU2VlZCh0aGlzKQorICAgICAgICAgICAgICAgIDogMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3dpdGNoaW5nOworICAgIH0KKworICAgIC8qKgogICAgICAqIFJldHJpZXZlIG9iamVjdCBoYXNoIGNvZGUgYW5kIGFwcGxpZXMgYSBzdXBwbGVtZW50YWwgaGFzaCBmdW5jdGlvbiB0byB0aGUKICAgICAgKiByZXN1bHQgaGFzaCwgd2hpY2ggZGVmZW5kcyBhZ2FpbnN0IHBvb3IgcXVhbGl0eSBoYXNoIGZ1bmN0aW9ucy4gIFRoaXMgaXMKICAgICAgKiBjcml0aWNhbCBiZWNhdXNlIEhhc2hNYXAgdXNlcyBwb3dlci1vZi10d28gbGVuZ3RoIGhhc2ggdGFibGVzLCB0aGF0CkBAIC0zNDAsMTIgKzMzNCw5IEBACiAgICAgICogaW4gbG93ZXIgYml0cy4gTm90ZTogTnVsbCBrZXlzIGFsd2F5cyBtYXAgdG8gaGFzaCAwLCB0aHVzIGluZGV4IDAuCiAgICAgICovCiAgICAgZmluYWwgaW50IGhhc2goT2JqZWN0IGspIHsKLSAgICAgICAgaW50IGggPSAwOwotICAgICAgICBpZiAodXNlQWx0SGFzaGluZykgewotICAgICAgICAgICAgaWYgKGsgaW5zdGFuY2VvZiBTdHJpbmcpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3VuLm1pc2MuSGFzaGluZy5zdHJpbmdIYXNoMzIoKFN0cmluZykgayk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBoID0gaGFzaFNlZWQ7CisgICAgICAgIGludCBoID0gaGFzaFNlZWQ7CisgICAgICAgIGlmICgwICE9IGggJiYgayBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgcmV0dXJuIHN1bi5taXNjLkhhc2hpbmcuc3RyaW5nSGFzaDMyKChTdHJpbmcpIGspOwogICAgICAgICB9CiAKICAgICAgICAgaCBePSBrLmhhc2hDb2RlKCk7CkBAIC01NTcsMTEgKzU0OCw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBFbnRyeVtdIG5ld1RhYmxlID0gbmV3IEVudHJ5W25ld0NhcGFjaXR5XTsKLSAgICAgICAgYm9vbGVhbiBvbGRBbHRIYXNoaW5nID0gdXNlQWx0SGFzaGluZzsKLSAgICAgICAgdXNlQWx0SGFzaGluZyB8PSBzdW4ubWlzYy5WTS5pc0Jvb3RlZCgpICYmCi0gICAgICAgICAgICAgICAgKG5ld0NhcGFjaXR5ID49IEhvbGRlci5BTFRFUk5BVElWRV9IQVNISU5HX1RIUkVTSE9MRCk7Ci0gICAgICAgIGJvb2xlYW4gcmVoYXNoID0gb2xkQWx0SGFzaGluZyBeIHVzZUFsdEhhc2hpbmc7Ci0gICAgICAgIHRyYW5zZmVyKG5ld1RhYmxlLCByZWhhc2gpOworICAgICAgICB0cmFuc2ZlcihuZXdUYWJsZSwgaW5pdEhhc2hTZWVkQXNOZWVkZWQobmV3Q2FwYWNpdHkpKTsKICAgICAgICAgdGFibGUgPSBuZXdUYWJsZTsKICAgICAgICAgdGhyZXNob2xkID0gKGludClNYXRoLm1pbihuZXdDYXBhY2l0eSAqIGxvYWRGYWN0b3IsIE1BWElNVU1fQ0FQQUNJVFkgKyAxKTsKICAgICB9CkBAIC04MTUsOCArODAyLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHB1YmxpYyBmaW5hbCBpbnQgaGFzaENvZGUoKSB7Ci0gICAgICAgICAgICByZXR1cm4gKGtleT09bnVsbCAgID8gMCA6IGtleS5oYXNoQ29kZSgpKSBeCi0gICAgICAgICAgICAgICAgICAgKHZhbHVlPT1udWxsID8gMCA6IHZhbHVlLmhhc2hDb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIE9iamVjdHMuaGFzaENvZGUoZ2V0S2V5KCkpIF4gT2JqZWN0cy5oYXNoQ29kZShnZXRWYWx1ZSgpKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgdG9TdHJpbmcoKSB7CkBAIC0xMTE3LDEwICsxMTAzLDYgQEAKICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkT2JqZWN0RXhjZXB0aW9uKCJJbGxlZ2FsIGxvYWQgZmFjdG9yOiAiICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZEZhY3Rvcik7CiAKLSAgICAgICAgLy8gc2V0IGhhc2hTZWVkIChjYW4gb25seSBoYXBwZW4gYWZ0ZXIgVk0gYm9vdCkKLSAgICAgICAgSG9sZGVyLlVOU0FGRS5wdXRJbnRWb2xhdGlsZSh0aGlzLCBIb2xkZXIuSEFTSFNFRURfT0ZGU0VULAotICAgICAgICAgICAgICAgIHN1bi5taXNjLkhhc2hpbmcucmFuZG9tSGFzaFNlZWQodGhpcykpOwotCiAgICAgICAgIC8vIFJlYWQgaW4gbnVtYmVyIG9mIGJ1Y2tldHMgYW5kIGFsbG9jYXRlIHRoZSBidWNrZXQgYXJyYXk7CiAgICAgICAgIHMucmVhZEludCgpOyAvLyBpZ25vcmVkCiAKQEAgLTExMzYsMTYgKzExMTgsMTUgQEAKICAgICAgICAgICAgICAgICBtYXBwaW5ncyAqIE1hdGgubWluKDEgLyBsb2FkRmFjdG9yLCA0LjBmKSwKICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGxpbWl0cy4uLgogICAgICAgICAgICAgICAgIEhhc2hNYXAuTUFYSU1VTV9DQVBBQ0lUWSk7Ci0gICAgICAgIGludCBjYXBhY2l0eSA9IDE7CiAgICAgICAgIC8vIGZpbmQgc21hbGxlc3QgcG93ZXIgb2YgdHdvIHdoaWNoIGhvbGRzIGFsbCBtYXBwaW5ncwotICAgICAgICB3aGlsZSAoY2FwYWNpdHkgPCBpbml0aWFsQ2FwYWNpdHkpIHsKLSAgICAgICAgICAgIGNhcGFjaXR5IDw8PSAxOwotICAgICAgICB9CisgICAgICAgIGludCBjYXBhY2l0eSA9IChjYXBhY2l0eSA9IEludGVnZXIuaGlnaGVzdE9uZUJpdChpbml0aWFsQ2FwYWNpdHkpKSAhPSAwCisgICAgICAgICAgICAgICAgPyBjYXBhY2l0eQorICAgICAgICAgICAgICAgIDogMTsKKyAgICAgICAgY2FwYWNpdHkgPDw9IChJbnRlZ2VyLmJpdENvdW50KGluaXRpYWxDYXBhY2l0eSkgPiAxKSA/IDEgOiAwOwogCiAgICAgICAgIHRhYmxlID0gbmV3IEVudHJ5W2NhcGFjaXR5XTsKICAgICAgICAgdGhyZXNob2xkID0gKGludCkgTWF0aC5taW4oY2FwYWNpdHkgKiBsb2FkRmFjdG9yLCBNQVhJTVVNX0NBUEFDSVRZICsgMSk7Ci0gICAgICAgIHVzZUFsdEhhc2hpbmcgPSBzdW4ubWlzYy5WTS5pc0Jvb3RlZCgpICYmCi0gICAgICAgICAgICAgICAgKGNhcGFjaXR5ID49IEhvbGRlci5BTFRFUk5BVElWRV9IQVNISU5HX1RIUkVTSE9MRCk7CisgICAgICAgIGluaXRIYXNoU2VlZEFzTmVlZGVkKGNhcGFjaXR5KTsKIAogICAgICAgICBpbml0KCk7ICAvLyBHaXZlIHN1YmNsYXNzIGEgY2hhbmNlIHRvIGRvIGl0cyB0aGluZy4KIApkaWZmIC0tZ2l0IGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL2phdmEvdXRpbC9IYXNodGFibGUuamF2YSBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9qYXZhL3V0aWwvSGFzaHRhYmxlLmphdmEKaW5kZXggZGY4YmFlNS4uN2I1YjA4NSAxMDA2NDQKLS0tIGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL2phdmEvdXRpbC9IYXNodGFibGUuamF2YQorKysgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvamF2YS91dGlsL0hhc2h0YWJsZS5qYXZhCkBAIC0yMTMsNTQgKzIxMywzMCBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIElmIHtAY29kZSB0cnVlfSB0aGVuIHBlcmZvcm0gYWx0ZXJuYXRpdmUgaGFzaGluZyBvZiBTdHJpbmcga2V5cyB0byByZWR1Y2UKLSAgICAgKiB0aGUgaW5jaWRlbmNlIG9mIGNvbGxpc2lvbnMgZHVlIHRvIHdlYWsgaGFzaCBjb2RlIGNhbGN1bGF0aW9uLgotICAgICAqLwotICAgIHRyYW5zaWVudCBib29sZWFuIHVzZUFsdEhhc2hpbmc7Ci0KLSAgICAvLyBVbnNhZmUgbWVjaGFuaWNzCi0gICAgLyoqCi0gICAgKiBVbnNhZmUgdXRpbGl0aWVzCi0gICAgKi8KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzdW4ubWlzYy5VbnNhZmUgVU5TQUZFOwotCi0gICAgLyoqCi0gICAgKiBPZmZzZXQgb2YgImZpbmFsIiBoYXNoU2VlZCBmaWVsZCB3ZSBtdXN0IHNldCBpbiByZWFkT2JqZWN0KCkgbWV0aG9kLgotICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBIQVNIU0VFRF9PRkZTRVQ7Ci0KLSAgICAgc3RhdGljIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIFVOU0FGRSA9IHN1bi5taXNjLlVuc2FmZS5nZXRVbnNhZmUoKTsKLSAgICAgICAgICAgIEhBU0hTRUVEX09GRlNFVCA9IFVOU0FGRS5vYmplY3RGaWVsZE9mZnNldCgKLSAgICAgICAgICAgICAgICBIYXNodGFibGUuY2xhc3MuZ2V0RGVjbGFyZWRGaWVsZCgiaGFzaFNlZWQiKSk7Ci0gICAgICAgIH0gY2F0Y2ggKE5vU3VjaEZpZWxkRXhjZXB0aW9uIHwgU2VjdXJpdHlFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGYWlsZWQgdG8gcmVjb3JkIGhhc2hTZWVkIG9mZnNldCIsIGUpOwotICAgICAgICB9Ci0gICAgIH0KLQotICAgIC8qKgogICAgICAqIEEgcmFuZG9taXppbmcgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2UgdGhhdCBpcyBhcHBsaWVkIHRvCiAgICAgICogaGFzaCBjb2RlIG9mIGtleXMgdG8gbWFrZSBoYXNoIGNvbGxpc2lvbnMgaGFyZGVyIHRvIGZpbmQuCiAgICAgICovCi0gICAgdHJhbnNpZW50IGZpbmFsIGludCBoYXNoU2VlZCA9IHN1bi5taXNjLkhhc2hpbmcucmFuZG9tSGFzaFNlZWQodGhpcyk7CisgICAgdHJhbnNpZW50IGludCBoYXNoU2VlZDsKKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemUgdGhlIGhhc2hpbmcgbWFzayB2YWx1ZS4KKyAgICAgKi8KKyAgICBmaW5hbCBib29sZWFuIGluaXRIYXNoU2VlZEFzTmVlZGVkKGludCBjYXBhY2l0eSkgeworICAgICAgICBib29sZWFuIGN1cnJlbnRBbHRIYXNoaW5nID0gaGFzaFNlZWQgIT0gMDsKKyAgICAgICAgYm9vbGVhbiB1c2VBbHRIYXNoaW5nID0gc3VuLm1pc2MuVk0uaXNCb290ZWQoKSAmJgorICAgICAgICAgICAgICAgIChjYXBhY2l0eSA+PSBIb2xkZXIuQUxURVJOQVRJVkVfSEFTSElOR19USFJFU0hPTEQpOworICAgICAgICBib29sZWFuIHN3aXRjaGluZyA9IGN1cnJlbnRBbHRIYXNoaW5nIF4gdXNlQWx0SGFzaGluZzsKKyAgICAgICAgaWYgKHN3aXRjaGluZykgeworICAgICAgICAgICAgaGFzaFNlZWQgPSB1c2VBbHRIYXNoaW5nCisgICAgICAgICAgICAgICAgPyBzdW4ubWlzYy5IYXNoaW5nLnJhbmRvbUhhc2hTZWVkKHRoaXMpCisgICAgICAgICAgICAgICAgOiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzd2l0Y2hpbmc7CisgICAgfQogCiAgICAgcHJpdmF0ZSBpbnQgaGFzaChPYmplY3QgaykgewotICAgICAgICBpZiAodXNlQWx0SGFzaGluZykgewotICAgICAgICAgICAgaWYgKGsuZ2V0Q2xhc3MoKSA9PSBTdHJpbmcuY2xhc3MpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3VuLm1pc2MuSGFzaGluZy5zdHJpbmdIYXNoMzIoKFN0cmluZykgayk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGludCBoID0gaGFzaFNlZWQgXiBrLmhhc2hDb2RlKCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBUaGlzIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCBoYXNoQ29kZXMgdGhhdCBkaWZmZXIgb25seSBieQotICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IG11bHRpcGxlcyBhdCBlYWNoIGJpdCBwb3NpdGlvbiBoYXZlIGEgYm91bmRlZAotICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBjb2xsaXNpb25zIChhcHByb3hpbWF0ZWx5IDggYXQgZGVmYXVsdCBsb2FkIGZhY3RvcikuCi0gICAgICAgICAgICAgICAgaCBePSAoaCA+Pj4gMjApIF4gKGggPj4+IDEyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gaCBeIChoID4+PiA3KSBeIChoID4+PiA0KTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSAgewotICAgICAgICAgICAgcmV0dXJuIGsuaGFzaENvZGUoKTsKLSAgICAgICAgfQorICAgICAgICAvLyBoYXNoU2VlZCB3aWxsIGJlIHplcm8gaWYgYWx0ZXJuYXRpdmUgaGFzaGluZyBpcyBkaXNhYmxlZC4KKyAgICAgICAgcmV0dXJuIGhhc2hTZWVkIF4gay5oYXNoQ29kZSgpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMjg0LDggKzI2MCw3IEBACiAgICAgICAgIHRoaXMubG9hZEZhY3RvciA9IGxvYWRGYWN0b3I7CiAgICAgICAgIHRhYmxlID0gbmV3IEVudHJ5W2luaXRpYWxDYXBhY2l0eV07CiAgICAgICAgIHRocmVzaG9sZCA9IChpbnQpTWF0aC5taW4oaW5pdGlhbENhcGFjaXR5ICogbG9hZEZhY3RvciwgTUFYX0FSUkFZX1NJWkUgKyAxKTsKLSAgICAgICAgdXNlQWx0SGFzaGluZyA9IHN1bi5taXNjLlZNLmlzQm9vdGVkKCkgJiYKLSAgICAgICAgICAgICAgICAoaW5pdGlhbENhcGFjaXR5ID49IEhvbGRlci5BTFRFUk5BVElWRV9IQVNISU5HX1RIUkVTSE9MRCk7CisgICAgICAgIGluaXRIYXNoU2VlZEFzTmVlZGVkKGluaXRpYWxDYXBhY2l0eSk7CiAgICAgfQogCiAgICAgLyoqCkBAIC00OTcsMTAgKzQ3Miw3IEBACiAKICAgICAgICAgbW9kQ291bnQrKzsKICAgICAgICAgdGhyZXNob2xkID0gKGludClNYXRoLm1pbihuZXdDYXBhY2l0eSAqIGxvYWRGYWN0b3IsIE1BWF9BUlJBWV9TSVpFICsgMSk7Ci0gICAgICAgIGJvb2xlYW4gY3VycmVudEFsdEhhc2hpbmcgPSB1c2VBbHRIYXNoaW5nOwotICAgICAgICB1c2VBbHRIYXNoaW5nID0gc3VuLm1pc2MuVk0uaXNCb290ZWQoKSAmJgotICAgICAgICAgICAgICAgIChuZXdDYXBhY2l0eSA+PSBIb2xkZXIuQUxURVJOQVRJVkVfSEFTSElOR19USFJFU0hPTEQpOwotICAgICAgICBib29sZWFuIHJlaGFzaCA9IGN1cnJlbnRBbHRIYXNoaW5nIF4gdXNlQWx0SGFzaGluZzsKKyAgICAgICAgYm9vbGVhbiByZWhhc2ggPSBpbml0SGFzaFNlZWRBc05lZWRlZChuZXdDYXBhY2l0eSk7CiAKICAgICAgICAgdGFibGUgPSBuZXdNYXA7CiAKQEAgLTk5OSwxMCArOTcxLDYgQEAKICAgICAgICAgLy8gUmVhZCBpbiB0aGUgbGVuZ3RoLCB0aHJlc2hvbGQsIGFuZCBsb2FkZmFjdG9yCiAgICAgICAgIHMuZGVmYXVsdFJlYWRPYmplY3QoKTsKIAotICAgICAgICAvLyBzZXQgaGFzaFNlZWQKLSAgICAgICAgVU5TQUZFLnB1dEludFZvbGF0aWxlKHRoaXMsIEhBU0hTRUVEX09GRlNFVCwKLSAgICAgICAgICAgICAgICBzdW4ubWlzYy5IYXNoaW5nLnJhbmRvbUhhc2hTZWVkKHRoaXMpKTsKLQogICAgICAgICAvLyBSZWFkIHRoZSBvcmlnaW5hbCBsZW5ndGggb2YgdGhlIGFycmF5IGFuZCBudW1iZXIgb2YgZWxlbWVudHMKICAgICAgICAgaW50IG9yaWdsZW5ndGggPSBzLnJlYWRJbnQoKTsKICAgICAgICAgaW50IGVsZW1lbnRzID0gcy5yZWFkSW50KCk7CkBAIC0xMDE3LDIwICs5ODUsMTkgQEAKICAgICAgICAgaWYgKG9yaWdsZW5ndGggPiAwICYmIGxlbmd0aCA+IG9yaWdsZW5ndGgpCiAgICAgICAgICAgICBsZW5ndGggPSBvcmlnbGVuZ3RoOwogCi0gICAgICAgIEVudHJ5PEssVj5bXSB0YWJsZSA9IG5ldyBFbnRyeVtsZW5ndGhdOworICAgICAgICBFbnRyeTxLLFY+W10gbmV3VGFibGUgPSBuZXcgRW50cnlbbGVuZ3RoXTsKICAgICAgICAgdGhyZXNob2xkID0gKGludCkgTWF0aC5taW4obGVuZ3RoICogbG9hZEZhY3RvciwgTUFYX0FSUkFZX1NJWkUgKyAxKTsKICAgICAgICAgY291bnQgPSAwOwotICAgICAgICB1c2VBbHRIYXNoaW5nID0gc3VuLm1pc2MuVk0uaXNCb290ZWQoKSAmJgotICAgICAgICAgICAgICAgIChsZW5ndGggPj0gSG9sZGVyLkFMVEVSTkFUSVZFX0hBU0hJTkdfVEhSRVNIT0xEKTsKKyAgICAgICAgaW5pdEhhc2hTZWVkQXNOZWVkZWQobGVuZ3RoKTsKIAogICAgICAgICAvLyBSZWFkIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZW4gYWxsIHRoZSBrZXkvdmFsdWUgb2JqZWN0cwogICAgICAgICBmb3IgKDsgZWxlbWVudHMgPiAwOyBlbGVtZW50cy0tKSB7CiAgICAgICAgICAgICBLIGtleSA9IChLKXMucmVhZE9iamVjdCgpOwogICAgICAgICAgICAgViB2YWx1ZSA9IChWKXMucmVhZE9iamVjdCgpOwogICAgICAgICAgICAgLy8gc3luY2ggY291bGQgYmUgZWxpbWluYXRlZCBmb3IgcGVyZm9ybWFuY2UKLSAgICAgICAgICAgIHJlY29uc3RpdHV0aW9uUHV0KHRhYmxlLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgIHJlY29uc3RpdHV0aW9uUHV0KG5ld1RhYmxlLCBrZXksIHZhbHVlKTsKICAgICAgICAgfQotICAgICAgICB0aGlzLnRhYmxlID0gdGFibGU7CisgICAgICAgIHRoaXMudGFibGUgPSBuZXdUYWJsZTsKICAgICB9CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vYXd0L2RhdGF0cmFuc2Zlci9EYXRhVHJhbnNmZXJlci5qYXZhIGIvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi9hd3QvZGF0YXRyYW5zZmVyL0RhdGFUcmFuc2ZlcmVyLmphdmEKaW5kZXggODJmZjg4OS4uYWE3YTczZCAxMDA2NDQKLS0tIGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi9hd3QvZGF0YXRyYW5zZmVyL0RhdGFUcmFuc2ZlcmVyLmphdmEKKysrIGIvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi9hd3QvZGF0YXRyYW5zZmVyL0RhdGFUcmFuc2ZlcmVyLmphdmEKQEAgLTE4NjgsNyArMTg2OCw3IEBACiAgICAgICovCiAgICAgcHVibGljIGNsYXNzIFJlZW5jb2RpbmdJbnB1dFN0cmVhbSBleHRlbmRzIElucHV0U3RyZWFtIHsKICAgICAgICAgcHJvdGVjdGVkIEJ1ZmZlcmVkUmVhZGVyIHdyYXBwZWQ7Ci0gICAgICAgIHByb3RlY3RlZCBmaW5hbCBjaGFyW10gaW4gPSBuZXcgY2hhclsxXTsKKyAgICAgICAgcHJvdGVjdGVkIGZpbmFsIGNoYXJbXSBpbiA9IG5ldyBjaGFyWzJdOwogICAgICAgICBwcm90ZWN0ZWQgYnl0ZVtdIG91dDsKIAogICAgICAgICBwcm90ZWN0ZWQgQ2hhcnNldEVuY29kZXIgZW5jb2RlcjsKQEAgLTE5MjEsNyArMTkyMSw3IEBACiAKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgZW5jb2RlciA9IENoYXJzZXQuZm9yTmFtZSh0YXJnZXRFbmNvZGluZykubmV3RW5jb2RlcigpOwotICAgICAgICAgICAgICAgIG91dCA9IG5ldyBieXRlWyhpbnQpKGVuY29kZXIubWF4Qnl0ZXNQZXJDaGFyKCkgKyAwLjUpXTsKKyAgICAgICAgICAgICAgICBvdXQgPSBuZXcgYnl0ZVsoaW50KShlbmNvZGVyLm1heEJ5dGVzUGVyQ2hhcigpICogaW4ubGVuZ3RoICsgMC41KV07CiAgICAgICAgICAgICAgICAgaW5CdWYgPSBDaGFyQnVmZmVyLndyYXAoaW4pOwogICAgICAgICAgICAgICAgIG91dEJ1ZiA9IEJ5dGVCdWZmZXIud3JhcChvdXQpOwogICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbENoYXJzZXROYW1lRXhjZXB0aW9uIGUpIHsKQEAgLTE5NDUsMzEgKzE5NDUsNTAgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIHByaXZhdGUgaW50IHJlYWRDaGFyKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgICAgIGludCBjID0gd3JhcHBlZC5yZWFkKCk7CisKKyAgICAgICAgICAgIGlmIChjID09IC0xKSB7IC8vIC0xIGlzIEVPUworICAgICAgICAgICAgICAgIGVvcyA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyAiYyA9PSAwIiBpcyBub3QgcXVpdGUgY29ycmVjdCwgYnV0IGdvb2QgZW5vdWdoIG9uIFdpbmRvd3MuCisgICAgICAgICAgICBpZiAobnVtVGVybWluYXRvcnMgPiAwICYmIGMgPT0gMCkgeworICAgICAgICAgICAgICAgIGVvcyA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfSBlbHNlIGlmIChlb2xuICE9IG51bGwgJiYgbWF0Y2hDaGFyQXJyYXkoZW9sbiwgYykpIHsKKyAgICAgICAgICAgICAgICBjID0gJ1xuJyAmIDB4RkZGRjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGM7CisgICAgICAgIH0KKwogICAgICAgICBwdWJsaWMgaW50IHJlYWQoKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgICAgICAgaWYgKGVvcykgewogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGluZGV4ID49IGxpbWl0KSB7Ci0gICAgICAgICAgICAgICAgaW50IGMgPSB3cmFwcGVkLnJlYWQoKTsKLQotICAgICAgICAgICAgICAgIGlmIChjID09IC0xKSB7IC8vIC0xIGlzIEVPUwotICAgICAgICAgICAgICAgICAgICBlb3MgPSB0cnVlOworICAgICAgICAgICAgICAgIC8vIGRlYWwgd2l0aCBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICBpbnQgYyA9IHJlYWRDaGFyKCk7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8vICJjID09IDAiIGlzIG5vdCBxdWl0ZSBjb3JyZWN0LCBidXQgZ29vZCBlbm91Z2ggb24gV2luZG93cy4KLSAgICAgICAgICAgICAgICBpZiAobnVtVGVybWluYXRvcnMgPiAwICYmIGMgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBlb3MgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlb2xuICE9IG51bGwgJiYgbWF0Y2hDaGFyQXJyYXkoZW9sbiwgYykpIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9ICdcbicgJiAweEZGRkY7CisgICAgICAgICAgICAgICAgaW5bMF0gPSAoY2hhcikgYzsKKyAgICAgICAgICAgICAgICBpblsxXSA9IDA7CisgICAgICAgICAgICAgICAgaW5CdWYubGltaXQoMSk7CisgICAgICAgICAgICAgICAgaWYgKENoYXJhY3Rlci5pc0hpZ2hTdXJyb2dhdGUoKGNoYXIpIGMpKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSByZWFkQ2hhcigpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5bMV0gPSAoY2hhcikgYzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluQnVmLmxpbWl0KDIpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgaW5bMF0gPSAoY2hhciljOwotCiAgICAgICAgICAgICAgICAgaW5CdWYucmV3aW5kKCk7Ci0gICAgICAgICAgICAgICAgb3V0QnVmLnJld2luZCgpOworICAgICAgICAgICAgICAgIG91dEJ1Zi5saW1pdChvdXQubGVuZ3RoKS5yZXdpbmQoKTsKICAgICAgICAgICAgICAgICBlbmNvZGVyLmVuY29kZShpbkJ1Ziwgb3V0QnVmLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgb3V0QnVmLmZsaXAoKTsKICAgICAgICAgICAgICAgICBsaW1pdCA9IG91dEJ1Zi5saW1pdCgpOwpkaWZmIC0tZ2l0IGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi9taXNjL0hhc2hpbmcuamF2YSBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vbWlzYy9IYXNoaW5nLmphdmEKaW5kZXggOWI1ODFlMy4uZWZiMDgyMSAxMDA2NDQKLS0tIGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi9taXNjL0hhc2hpbmcuamF2YQorKysgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL21pc2MvSGFzaGluZy5qYXZhCkBAIC0yNCw3ICsyNCw3IEBACiAgKi8KIHBhY2thZ2Ugc3VuLm1pc2M7CiAKLWltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZExvY2FsUmFuZG9tOwogCiAvKioKICAqIEhhc2hpbmcgdXRpbGl0aWVzLgpAQCAtMjEzLDE4ICsyMTMsNiBAQAogICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEhvbGRlciB7CiAKICAgICAgICAgLyoqCi0gICAgICAgICAqIFVzZWQgZm9yIGdlbmVyYXRpbmcgcGVyLWluc3RhbmNlIGhhc2ggc2VlZHMuCi0gICAgICAgICAqCi0gICAgICAgICAqIFdlIHRyeSB0byBpbXByb3ZlIHVwb24gdGhlIGRlZmF1bHQgc2VlZGluZy4KLSAgICAgICAgICovCi0gICAgICAgIHN0YXRpYyBmaW5hbCBSYW5kb20gU0VFRF9NQUtFUiA9IG5ldyBSYW5kb20oCi0gICAgICAgICAgICAgICAgRG91YmxlLmRvdWJsZVRvUmF3TG9uZ0JpdHMoTWF0aC5yYW5kb20oKSkKLSAgICAgICAgICAgICAgICBeIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKEhhc2hpbmcuY2xhc3MpCi0gICAgICAgICAgICAgICAgXiBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKQotICAgICAgICAgICAgICAgIF4gU3lzdGVtLm5hbm9UaW1lKCkKLSAgICAgICAgICAgICAgICBeIFJ1bnRpbWUuZ2V0UnVudGltZSgpLmZyZWVNZW1vcnkoKSk7Ci0KLSAgICAgICAgLyoqCiAgICAgICAgICAqIEFjY2VzcyB0byB7QGNvZGUgU3RyaW5nLmhhc2gzMigpfQogICAgICAgICAgKi8KICAgICAgICAgc3RhdGljIGZpbmFsIEphdmFMYW5nQWNjZXNzIExBTkdfQUNDRVNTOwpAQCAtMjQ4LDEwICsyMzYsMTcgQEAKICAgICAgICAgcmV0dXJuIEhvbGRlci5MQU5HX0FDQ0VTUy5nZXRTdHJpbmdIYXNoMzIoc3RyaW5nKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBub24temVybyAzMi1iaXQgcHNldWRvIHJhbmRvbSB2YWx1ZS4gVGhlIHtAY29kZSBpbnN0YW5jZX0gb2JqZWN0CisgICAgICogbWF5IGJlIHVzZWQgYXMgcGFydCBvZiB0aGUgdmFsdWUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaW5zdGFuY2UgYW4gb2JqZWN0IHRvIHVzZSBpZiBkZXNpcmVkIGluIGNob29zaW5nIHZhbHVlLgorICAgICAqIEByZXR1cm4gYSBub24temVybyAzMi1iaXQgcHNldWRvIHJhbmRvbSB2YWx1ZS4KKyAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGludCByYW5kb21IYXNoU2VlZChPYmplY3QgaW5zdGFuY2UpIHsKICAgICAgICAgaW50IHNlZWQ7CiAgICAgICAgIGlmIChzdW4ubWlzYy5WTS5pc0Jvb3RlZCgpKSB7Ci0gICAgICAgICAgICBzZWVkID0gSG9sZGVyLlNFRURfTUFLRVIubmV4dEludCgpOworICAgICAgICAgICAgc2VlZCA9IFRocmVhZExvY2FsUmFuZG9tLmN1cnJlbnQoKS5uZXh0SW50KCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBsb3dlciBxdWFsaXR5ICJyYW5kb20iIHNlZWQgdmFsdWUtLXN0aWxsIGJldHRlciB0aGFuIHplcm8gYW5kIG5vdAogICAgICAgICAgICAgLy8gbm90IHByYWN0aWNhbGx5IHJldmVyc2libGUuCmRpZmYgLS1naXQgYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3NlY3VyaXR5L3RpbWVzdGFtcC9UU1Jlc3BvbnNlLmphdmEgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3NlY3VyaXR5L3RpbWVzdGFtcC9UU1Jlc3BvbnNlLmphdmEKaW5kZXggYWZjOGU4Ny4uMTViZjg1MSAxMDA2NDQKLS0tIGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi9zZWN1cml0eS90aW1lc3RhbXAvVFNSZXNwb25zZS5qYXZhCisrKyBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vc2VjdXJpdHkvdGltZXN0YW1wL1RTUmVzcG9uc2UuamF2YQpAQCAtMzQxLDcgKzM0MSw3IEBACiAgICAgICAgICAgICBEZXJWYWx1ZVtdIHN0cmluZ3MgPSBzdGF0dXMuZGF0YS5nZXRTZXF1ZW5jZSgxKTsKICAgICAgICAgICAgIHN0YXR1c1N0cmluZyA9IG5ldyBTdHJpbmdbc3RyaW5ncy5sZW5ndGhdOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdHJpbmdzLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgc3RhdHVzU3RyaW5nW2ldID0gc3RyaW5nc1tpXS5kYXRhLmdldFVURjhTdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBzdGF0dXNTdHJpbmdbaV0gPSBzdHJpbmdzW2ldLmdldFVURjhTdHJpbmcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBQYXJzZSBmYWlsSW5mbywgaWYgcHJlc2VudApkaWZmIC0tZ2l0IGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzLmphdmEgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXMuamF2YQppbmRleCBmZTZlOTMzLi5hMjllYTY4IDEwMDY0NAotLS0gYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXMuamF2YQorKysgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXMuamF2YQpAQCAtNzUsNiArNzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDZW50cmFsIEV1cm9wZWFuIFN1bW1lciBUaW1lIiwgIkNFU1QifTsKICAgICAgICAgU3RyaW5nIENIQVNUW10gPSBuZXcgU3RyaW5nW10geyJDaGF0aGFtIFN0YW5kYXJkIFRpbWUiLCAiQ0hBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoYXRoYW0gRGF5bGlnaHQgVGltZSIsICJDSEFEVCJ9OworICAgICAgICBTdHJpbmcgQ2hTVFtdID0gbmV3IFN0cmluZ1tdIHsiQ2hhbW9ycm8gU3RhbmRhcmQgVGltZSIsICJDaFNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoYW1vcnJvIERheWxpZ2h0IFRpbWUiLCAiQ2hEVCJ9OwogICAgICAgICBTdHJpbmcgQ0hVVFtdID0gbmV3IFN0cmluZ1tdIHsiQ2h1dWsgVGltZSIsICJDSFVUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNodXVrIFN1bW1lciBUaW1lIiwgIkNIVVNUIn07CiAgICAgICAgIFN0cmluZyBDSVRbXSA9IG5ldyBTdHJpbmdbXSB7IkNlbnRyYWwgSW5kb25lc2lhIFRpbWUiLCAiQ0lUIiwKQEAgLTE2MSw2ICsxNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9obnBlaSBTdW1tZXIgVGltZSIsICJQT05TVCJ9OwogICAgICAgICBTdHJpbmcgUFNUW10gPSBuZXcgU3RyaW5nW10geyJQYWNpZmljIFN0YW5kYXJkIFRpbWUiLCAiUFNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUGFjaWZpYyBEYXlsaWdodCBUaW1lIiwgIlBEVCJ9OworICAgICAgICBTdHJpbmcgU0FNT0FbXSA9IG5ldyBTdHJpbmdbXSB7IlNhbW9hIFN0YW5kYXJkIFRpbWUiLCAiU1NUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTYW1vYSBEYXlsaWdodCBUaW1lIiwgIlNEVCJ9OwogICAgICAgICBTdHJpbmcgU0FTVFtdID0gbmV3IFN0cmluZ1tdIHsiU291dGggQWZyaWNhIFN0YW5kYXJkIFRpbWUiLCAiU0FTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTb3V0aCBBZnJpY2EgU3VtbWVyIFRpbWUiLCAiU0FTVCJ9OwogICAgICAgICBTdHJpbmcgU0JUW10gPSBuZXcgU3RyaW5nW10geyJTb2xvbW9uIElzLiBUaW1lIiwgIlNCVCIsCkBAIC0xNzUsNiArMTc5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlR1cmttZW5pc3RhbiBTdW1tZXIgVGltZSIsICJUTVNUIn07CiAgICAgICAgIFN0cmluZyBVTEFUW109IG5ldyBTdHJpbmdbXSB7IlVsYWFuYmFhdGFyIFRpbWUiLCAiVUxBVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVsYWFuYmFhdGFyIFN1bW1lciBUaW1lIiwgIlVMQVNUIn07CisgICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7IkNvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIiwgIlVUQyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lIiwgIlVUQyJ9OworICAgICAgICBTdHJpbmcgVVpUW10gPSBuZXcgU3RyaW5nW10geyJVemJla2lzdGFuIFRpbWUiLCAiVVpUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXpiZWtpc3RhbiBTdW1tZXIgVGltZSIsICJVWlNUIn07CisgICAgICAgIFN0cmluZyBWSUNUT1JJQVtdID0gbmV3IFN0cmluZ1tdIHsiRWFzdGVybiBTdGFuZGFyZCBUaW1lIChWaWN0b3JpYSkiLCAiRVNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFYXN0ZXJuIFN1bW1lciBUaW1lIChWaWN0b3JpYSkiLCAiRVNUIn07CisgICAgICAgIFN0cmluZyBWTEFUW10gPSBuZXcgU3RyaW5nW10geyJWbGFkaXZvc3RvayBUaW1lIiwgIlZMQVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmxhZGl2b3N0b2sgU3VtbWVyIFRpbWUiLCAiVkxBU1QifTsKICAgICAgICAgU3RyaW5nIFdBUlRbXSA9IG5ldyBTdHJpbmdbXSB7Ildlc3Rlcm4gQXJnZW50aW5lIFRpbWUiLCAiV0FSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0ZXJuIEFyZ2VudGluZSBTdW1tZXIgVGltZSIsICJXQVJTVCJ9OwogICAgICAgICBTdHJpbmcgV0FUW10gPSBuZXcgU3RyaW5nW10geyJXZXN0ZXJuIEFmcmljYW4gVGltZSIsICJXQVQiLApAQCAtMTg1LDE4ICsxOTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCBJbmRvbmVzaWEgU3VtbWVyIFRpbWUiLCAiV0lTVCJ9OwogICAgICAgICBTdHJpbmcgV1NUX0FVU1tdID0gbmV3IFN0cmluZ1tdIHsiV2VzdGVybiBTdGFuZGFyZCBUaW1lIChBdXN0cmFsaWEpIiwgIldTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXZXN0ZXJuIFN1bW1lciBUaW1lIChBdXN0cmFsaWEpIiwgIldTVCJ9OwotICAgICAgICBTdHJpbmcgU0FNT0FbXSA9IG5ldyBTdHJpbmdbXSB7IlNhbW9hIFN0YW5kYXJkIFRpbWUiLCAiU1NUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTYW1vYSBEYXlsaWdodCBUaW1lIiwgIlNEVCJ9OwogICAgICAgICBTdHJpbmcgV1NUX1NBTU9BW10gPSBuZXcgU3RyaW5nW10geyJXZXN0IFNhbW9hIFRpbWUiLCAiV1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdCBTYW1vYSBEYXlsaWdodCBUaW1lIiwgIldTRFQifTsKLSAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkNoYW1vcnJvIFN0YW5kYXJkIFRpbWUiLCAiQ2hTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGFtb3JybyBEYXlsaWdodCBUaW1lIiwgIkNoRFQifTsKLSAgICAgICAgU3RyaW5nIFZJQ1RPUklBW10gPSBuZXcgU3RyaW5nW10geyJFYXN0ZXJuIFN0YW5kYXJkIFRpbWUgKFZpY3RvcmlhKSIsICJFU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVhc3Rlcm4gU3VtbWVyIFRpbWUgKFZpY3RvcmlhKSIsICJFU1QifTsKLSAgICAgICAgU3RyaW5nIFVUQ1tdID0gbmV3IFN0cmluZ1tdIHsiQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiLCAiVVRDIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWUiLCAiVVRDIn07Ci0gICAgICAgIFN0cmluZyBVWlRbXSA9IG5ldyBTdHJpbmdbXSB7IlV6YmVraXN0YW4gVGltZSIsICJVWlQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVemJla2lzdGFuIFN1bW1lciBUaW1lIiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFlBS1RbXSA9IG5ldyBTdHJpbmdbXSB7Illha3V0c2sgVGltZSIsICJZQUtUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllha3V0c2sgU3VtbWVyIFRpbWUiLCAiWUFLU1QifTsKIAogICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10gewogICAgICAgICAgICAgeyJBbWVyaWNhL0xvc19BbmdlbGVzIiwgUFNUfSwKQEAgLTI4Nyw3ICsyOTEsNyBAQAogICAgICAgICAgICAgeyJBZnJpY2EvUG9ydG8tTm92byIsIFdBVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9TYW9fVG9tZSIsIEdNVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UaW1idWt0dSIsIEdNVH0sCi0gICAgICAgICAgICB7IkFmcmljYS9Ucmlwb2xpIiwgRUVUfSwKKyAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBDRVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvVHVuaXMiLCBDRVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvV2luZGhvZWsiLCBXQVR9LAogICAgICAgICAgICAgeyJBbWVyaWNhL0FkYWsiLCBIQVNUfSwKQEAgLTUzMyw2ICs1MzcsNyBAQAogICAgICAgICAgICAgeyJBc2lhL0thc2hnYXIiLCBDVFR9LAogICAgICAgICAgICAgeyJBc2lhL0thdGhtYW5kdSIsIE5QVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0bWFuZHUiLCBOUFR9LAorICAgICAgICAgICAgeyJBc2lhL0toYW5keWdhIiwgWUFLVH0sCiAgICAgICAgICAgICB7IkFzaWEvS29sa2F0YSIsIElTVH0sCiAgICAgICAgICAgICB7IkFzaWEvS3Jhc25veWFyc2siLCBuZXcgU3RyaW5nW10geyJLcmFzbm95YXJzayBUaW1lIiwgIktSQVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3Jhc25veWFyc2sgU3VtbWVyIFRpbWUiLCAiS1JBU1QifX0sCkBAIC01ODEsMTEgKzU4NiwxMCBAQAogICAgICAgICAgICAgeyJBc2lhL1VsYWFuYmFhdGFyIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVWxhbl9CYXRvciIsIFVMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1VydW1xaSIsIENUVH0sCisgICAgICAgICAgICB7IkFzaWEvVXN0LU5lcmEiLCBWTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9WaWVudGlhbmUiLCBJQ1R9LAotICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgbmV3IFN0cmluZ1tdIHsiVmxhZGl2b3N0b2sgVGltZSIsICJWTEFUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZsYWRpdm9zdG9rIFN1bW1lciBUaW1lIiwgIlZMQVNUIn19LAotICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBuZXcgU3RyaW5nW10geyJZYWt1dHNrIFRpbWUiLCAiWUFLVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllha3V0c2sgU3VtbWVyIFRpbWUiLCAiWUFLU1QifX0sCisgICAgICAgICAgICB7IkFzaWEvVmxhZGl2b3N0b2siLCBWTEFUfSwKKyAgICAgICAgICAgIHsiQXNpYS9ZYWt1dHNrIiwgWUFLVH0sCiAgICAgICAgICAgICB7IkFzaWEvWWVrYXRlcmluYnVyZyIsIG5ldyBTdHJpbmdbXSB7Illla2F0ZXJpbmJ1cmcgVGltZSIsICJZRUtUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVrYXRlcmluYnVyZyBTdW1tZXIgVGltZSIsICJZRUtTVCJ9fSwKICAgICAgICAgICAgIHsiQXNpYS9ZZXJldmFuIiwgQVJNVH0sCkBAIC02NjksNiArNjczLDcgQEAKICAgICAgICAgICAgIHsiRXVyb3BlL0JyYXRpc2xhdmEiLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQnJ1c3NlbHMiLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQnVkYXBlc3QiLCBDRVR9LAorICAgICAgICAgICAgeyJFdXJvcGUvQnVzaW5nZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQ2hpc2luYXUiLCBFRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQ29wZW5oYWdlbiIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9EdWJsaW4iLCBEVUJMSU59LApAQCAtNzQ4LDcgKzc1Myw3IEBACiAgICAgICAgICAgICB7IkphbWFpY2EiLCBFU1R9LAogICAgICAgICAgICAgeyJKYXBhbiIsIEpTVH0sCiAgICAgICAgICAgICB7Ikt3YWphbGVpbiIsIE1IVH0sCi0gICAgICAgICAgICB7IkxpYnlhIiwgRUVUfSwKKyAgICAgICAgICAgIHsiTGlieWEiLCBDRVR9LAogICAgICAgICAgICAgeyJNRVQiLCBuZXcgU3RyaW5nW10geyJNaWRkbGUgRXVyb3BlIFRpbWUiLCAiTUVUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlkZGxlIEV1cm9wZSBTdW1tZXIgVGltZSIsICJNRVNUIn19LAogICAgICAgICAgICAgeyJNZXhpY28vQmFqYU5vcnRlIiwgUFNUfSwKZGlmZiAtLWdpdCBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19kZS5qYXZhIGIvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX2RlLmphdmEKaW5kZXggMDkzMzU1Ny4uNWM3YzIwZCAxMDA2NDQKLS0tIGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX2RlLmphdmEKKysrIGIvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX2RlLmphdmEKQEAgLTc1LDYgKzc1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWl0dGVsZXVyb3BcdTAwZTRpc2NoZSBTb21tZXJ6ZWl0IiwgIk1FU1oifTsKICAgICAgICAgU3RyaW5nIENIQVNUW10gPSBuZXcgU3RyaW5nW10geyJDaGF0aGFtIE5vcm1hbHplaXQiLCAiQ0hBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoYXRoYW0gU29tbWVyemVpdCIsICJDSEFEVCJ9OworICAgICAgICBTdHJpbmcgQ2hTVFtdID0gbmV3IFN0cmluZ1tdIHsiQ2hhbW9ycm8gTm9ybWFsemVpdCIsICJDaFNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAiQ2hhbW9ycm8gU29tbWVyemVpdCIsICJDaERUIn07CiAgICAgICAgIFN0cmluZyBDSFVUW10gPSBuZXcgU3RyaW5nW10geyJDaHV1ayBUaW1lIiwgIkNIVVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2h1dWsgU3VtbWVyIFRpbWUiLCAiQ0hVU1QifTsKICAgICAgICAgU3RyaW5nIENJVFtdID0gbmV3IFN0cmluZ1tdIHsiWmVudHJhbGluZG9uZXNpc2NoZSBaZWl0IiwgIkNJVCIsCkBAIC0xNjEsNiArMTYzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvaG5wZWkgU3VtbWVyIFRpbWUiLCAiUE9OU1QifTsKICAgICAgICAgU3RyaW5nIFBTVFtdID0gbmV3IFN0cmluZ1tdIHsiUGF6aWZpc2NoZSBOb3JtYWx6ZWl0IiwgIlBTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhemlmaXNjaGUgU29tbWVyemVpdCIsICJQRFQifTsKKyAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJTYW1vYSBOb3JtYWx6ZWl0IiwgIlNTVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Ftb2EgU29tbWVyemVpdCIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFNBU1RbXSA9IG5ldyBTdHJpbmdbXSB7IlNcdTAwZmNkYWZyaWthbmlzY2hlIE5vcm1hbHplaXQiLCAiU0FTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTXHUwMGZjZGFmcmlrYW5pc2NoZSBTb21tZXJ6ZWl0IiwgIlNBU1QifTsKICAgICAgICAgU3RyaW5nIFNCVFtdID0gbmV3IFN0cmluZ1tdIHsiU2Fsb21vbmluc2VsbiBaZWl0IiwgIlNCVCIsCkBAIC0xNzUsNiArMTc5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlR1cmttZW5pc2NoZSBTb21tZXJ6ZWl0IiwgIlRNU1QifTsKICAgICAgICAgU3RyaW5nIFVMQVRbXT0gbmV3IFN0cmluZ1tdIHsiVWxhYW5iYWF0YXIgWmVpdCIsICJVTEFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWxhYW5iYWF0YXIgU29tbWVyemVpdCIsICJVTEFTVCJ9OworICAgICAgICBTdHJpbmcgVVRDW10gPSBuZXcgU3RyaW5nW10geyJLb29yZGluaWVydGUgVW5pdmVyc2FsemVpdCIsICJVVEMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLb29yZGluaWVydGUgVW5pdmVyc2FsemVpdCIsICJVVEMifTsKKyAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiVXNiZWtpc3RhbiBaZWl0IiwgIlVaVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVzYmVraXN0YW4gU29tbWVyemVpdCIsICJVWlNUIn07CisgICAgICAgIFN0cmluZyBWSUNUT1JJQVtdID0gbmV3IFN0cmluZ1tdIHsiXHUwMGQ2c3RsaWNoZSBOb3JtYWx6ZWl0IChWaWN0b3JpYSkiLCAiRVNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwZDZzdGxpY2hlIFNvbW1lcnplaXQgKFZpY3RvcmlhKSIsICJFU1QifTsKKyAgICAgICAgU3RyaW5nIFZMQVRbXSA9IG5ldyBTdHJpbmdbXSB7IldsYWRpd29zdG9rIFplaXQiLCAiVkxBVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXbGFkaXdvc3RvayBTb21tZXJ6ZWl0IiwgIlZMQVNUIn07CiAgICAgICAgIFN0cmluZyBXQVJUW10gPSBuZXcgU3RyaW5nW10geyJXZXN0YXJnZW50aW5pc2NoZSBaZWl0IiwgIldBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2VzdGFyZ2VudGluaXNjaGUgU29tbWVyemVpdCIsICJXQVJTVCJ9OwogICAgICAgICBTdHJpbmcgV0FUW10gPSBuZXcgU3RyaW5nW10geyJXZXN0YWZyaWthbmlzY2hlIFplaXQiLCAiV0FUIiwKQEAgLTE4NSwxOCArMTk3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3RpbmRvbmVzaXNjaGUgU29tbWVyemVpdCIsICJXSVNUIn07CiAgICAgICAgIFN0cmluZyBXU1RfQVVTW10gPSBuZXcgU3RyaW5nW10geyJXZXN0bGljaGUgTm9ybWFsemVpdCAoQXVzdHJhbGllbikiLCAiV1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3RsaWNoZSBTb21tZXJ6ZWl0IChBdXN0cmFsaWVuKSIsICJXU1QifTsKLSAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJTYW1vYSBOb3JtYWx6ZWl0IiwgIlNTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2Ftb2EgU29tbWVyemVpdCIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFdTVF9TQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiV2VzdCBTYW1vYSBaZWl0IiwgIldTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldlc3QgU2Ftb2EgU29tbWVyemVpdCIsICJXU0RUIn07Ci0gICAgICAgIFN0cmluZyBDaFNUW10gPSBuZXcgU3RyaW5nW10geyJDaGFtb3JybyBOb3JtYWx6ZWl0IiwgIkNoU1QiLAotICAgICAgICAgICAgICAgICAgICAgICJDaGFtb3JybyBTb21tZXJ6ZWl0IiwgIkNoRFQifTsKLSAgICAgICAgU3RyaW5nIFZJQ1RPUklBW10gPSBuZXcgU3RyaW5nW10geyJcdTAwZDZzdGxpY2hlIE5vcm1hbHplaXQgKFZpY3RvcmlhKSIsICJFU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDBkNnN0bGljaGUgU29tbWVyemVpdCAoVmljdG9yaWEpIiwgIkVTVCJ9OwotICAgICAgICBTdHJpbmcgVVRDW10gPSBuZXcgU3RyaW5nW10geyJLb29yZGluaWVydGUgVW5pdmVyc2FsemVpdCIsICJVVEMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLb29yZGluaWVydGUgVW5pdmVyc2FsemVpdCIsICJVVEMifTsKLSAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiVXNiZWtpc3RhbiBaZWl0IiwgIlVaVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVzYmVraXN0YW4gU29tbWVyemVpdCIsICJVWlNUIn07CisgICAgICAgIFN0cmluZyBZQUtUW10gPSBuZXcgU3RyaW5nW10geyJKYWt1dHNrIFplaXQiLCAiWUFLVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKYWt1dHNrIFNvbW1lcnplaXQiLCAiWUFLU1QifTsKIAogICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10gewogICAgICAgICAgICAgeyJBbWVyaWNhL0xvc19BbmdlbGVzIiwgUFNUfSwKQEAgLTI4Nyw3ICsyOTEsNyBAQAogICAgICAgICAgICAgeyJBZnJpY2EvUG9ydG8tTm92byIsIFdBVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9TYW9fVG9tZSIsIEdNVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UaW1idWt0dSIsIEdNVH0sCi0gICAgICAgICAgICB7IkFmcmljYS9Ucmlwb2xpIiwgRUVUfSwKKyAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBDRVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvVHVuaXMiLCBDRVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvV2luZGhvZWsiLCBXQVR9LAogICAgICAgICAgICAgeyJBbWVyaWNhL0FkYWsiLCBIQVNUfSwKQEAgLTUzMyw2ICs1MzcsNyBAQAogICAgICAgICAgICAgeyJBc2lhL0thc2hnYXIiLCBDVFR9LAogICAgICAgICAgICAgeyJBc2lhL0thdGhtYW5kdSIsIE5QVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0bWFuZHUiLCBOUFR9LAorICAgICAgICAgICAgeyJBc2lhL0toYW5keWdhIiwgWUFLVH0sCiAgICAgICAgICAgICB7IkFzaWEvS29sa2F0YSIsIElTVH0sCiAgICAgICAgICAgICB7IkFzaWEvS3Jhc25veWFyc2siLCBuZXcgU3RyaW5nW10geyJLcmFzbm9qYXJza2VyIFplaXQiLCAiS1JBVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLcmFzbm9qYXJza2VyIFNvbW1lcnplaXQiLCAiS1JBU1QifX0sCkBAIC01ODEsMTEgKzU4NiwxMCBAQAogICAgICAgICAgICAgeyJBc2lhL1VsYWFuYmFhdGFyIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVWxhbl9CYXRvciIsIFVMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1VydW1xaSIsIENUVH0sCisgICAgICAgICAgICB7IkFzaWEvVXN0LU5lcmEiLCBWTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9WaWVudGlhbmUiLCBJQ1R9LAotICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgbmV3IFN0cmluZ1tdIHsiV2xhZGl3b3N0b2sgWmVpdCIsICJWTEFUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldsYWRpd29zdG9rIFNvbW1lcnplaXQiLCAiVkxBU1QifX0sCi0gICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIG5ldyBTdHJpbmdbXSB7Ikpha3V0c2sgWmVpdCIsICJZQUtUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSmFrdXRzayBTb21tZXJ6ZWl0IiwgIllBS1NUIn19LAorICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgVkxBVH0sCisgICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIFlBS1R9LAogICAgICAgICAgICAgeyJBc2lhL1lla2F0ZXJpbmJ1cmciLCBuZXcgU3RyaW5nW10geyJKZWthdGVyaW5idXJnZXIgWmVpdCIsICJZRUtUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSmVrYXRlcmluYnVyZ2VyIFNvbW1lcnplaXQiLCAiWUVLU1QifX0sCiAgICAgICAgICAgICB7IkFzaWEvWWVyZXZhbiIsIEFSTVR9LApAQCAtNjY5LDYgKzY3Myw3IEBACiAgICAgICAgICAgICB7IkV1cm9wZS9CcmF0aXNsYXZhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0JydXNzZWxzIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0J1ZGFwZXN0IiwgQ0VUfSwKKyAgICAgICAgICAgIHsiRXVyb3BlL0J1c2luZ2VuIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NoaXNpbmF1IiwgRUVUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NvcGVuaGFnZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvRHVibGluIiwgRFVCTElOfSwKQEAgLTc0OCw3ICs3NTMsNyBAQAogICAgICAgICAgICAgeyJKYW1haWNhIiwgRVNUfSwKICAgICAgICAgICAgIHsiSmFwYW4iLCBKU1R9LAogICAgICAgICAgICAgeyJLd2FqYWxlaW4iLCBNSFR9LAotICAgICAgICAgICAgeyJMaWJ5YSIsIEVFVH0sCisgICAgICAgICAgICB7IkxpYnlhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiTUVUIiwgbmV3IFN0cmluZ1tdIHsiWmVudHJhbGV1cm9wXHUwMGU0aXNjaGUgWmVpdCIsICJNRVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJaZW50cmFsZXVyb3BcdTAwZTRpc2NoZSBTb21tZXJ6ZWl0IiwgIk1FU1QifX0sCiAgICAgICAgICAgICB7Ik1leGljby9CYWphTm9ydGUiLCBQU1R9LApkaWZmIC0tZ2l0IGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX2VzLmphdmEgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfZXMuamF2YQppbmRleCA0NzI5MTk4Li40ZTM2ZjA1IDEwMDY0NAotLS0gYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfZXMuamF2YQorKysgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfZXMuamF2YQpAQCAtNzUsNiArNzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JhIGRlIHZlcmFubyBkZSBFdXJvcGEgQ2VudHJhbCIsICJDRVNUIn07CiAgICAgICAgIFN0cmluZyBDSEFTVFtdID0gbmV3IFN0cmluZ1tdIHsiSG9yYSBlc3RcdTAwZTFuZGFyIGRlIENoYXRoYW0iLCAiQ0hBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvcmEgZGUgdmVyYW5vIGRlIENoYXRoYW0iLCAiQ0hBRFQifTsKKyAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhvcmEgZXN0XHUwMGUxbmRhciBkZSBDaGFtb3JybyIsICJDaFNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvcmEgZGUgdmVyYW5vIGRlIENoYW1vcnJvIiwgIkNoRFQifTsKICAgICAgICAgU3RyaW5nIENIVVRbXSA9IG5ldyBTdHJpbmdbXSB7IkNodXVrIFRpbWUiLCAiQ0hVVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaHV1ayBTdW1tZXIgVGltZSIsICJDSFVTVCJ9OwogICAgICAgICBTdHJpbmcgQ0lUW10gPSBuZXcgU3RyaW5nW10geyJIb3JhIGRlIEluZG9uZXNpYSBDZW50cmFsIiwgIkNJVCIsCkBAIC0xNjEsNiArMTYzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvaG5wZWkgU3VtbWVyIFRpbWUiLCAiUE9OU1QifTsKICAgICAgICAgU3RyaW5nIFBTVFtdID0gbmV3IFN0cmluZ1tdIHsiSG9yYSBlc3RcdTAwZTFuZGFyIGRlbCBQYWNcdTAwZWRmaWNvIiwgIlBTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvcmEgZGUgdmVyYW5vIGRlbCBQYWNcdTAwZWRmaWNvIiwgIlBEVCJ9OworICAgICAgICBTdHJpbmcgU0FNT0FbXSA9IG5ldyBTdHJpbmdbXSB7IkhvcmEgZXN0XHUwMGUxbmRhciBkZSBTYW1vYSIsICJTU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvcmEgZGUgdmVyYW5vIGRlIFNhbW9hIiwgIlNEVCJ9OwogICAgICAgICBTdHJpbmcgU0FTVFtdID0gbmV3IFN0cmluZ1tdIHsiSG9yYSBlc3RcdTAwZTFuZGFyIGRlIFN1ZFx1MDBlMWZyaWNhIiwgIlNBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGUgU3VkXHUwMGUxZnJpY2EiLCAiU0FTVCJ9OwogICAgICAgICBTdHJpbmcgU0JUW10gPSBuZXcgU3RyaW5nW10geyJIb3JhIGRlIGxhcyBJc2xhcyBTb2xvbW9uIiwgIlNCVCIsCkBAIC0xNzUsNiArMTc5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvcmEgZGUgdmVyYW5vIGRlIFR1cmttZW5pc3RcdTAwZTFuIiwgIlRNU1QifTsKICAgICAgICAgU3RyaW5nIFVMQVRbXT0gbmV3IFN0cmluZ1tdIHsiSG9yYSBkZSBVbGFuIEJhdG9yIiwgIlVMQVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JhIGRlIHZlcmFubyBkZSBVbGFuIEJhdG9yIiwgIlVMQVNUIn07CisgICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7IkhvcmEgVW5pdmVyc2FsIENvb3JkaW5hZGEiLCAiVVRDIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBVbml2ZXJzYWwgQ29vcmRpbmFkYSIsICJVVEMifTsKKyAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiSG9yYSBkZSBVemJla2lzdFx1MDBlMW4iLCAiVVpUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGUgVXpiZWtpc3RcdTAwZTFuIiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFZJQ1RPUklBW10gPSBuZXcgU3RyaW5nW10geyJIb3JhIGVzdFx1MDBlMW5kYXIgZGVsIEVzdGUgKFZpY3RvcmlhKSIsICJFU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvcmEgZGUgdmVyYW5vIGRlbCBFc3RlIChWaWN0b3JpYSkiLCAiRVNUIn07CisgICAgICAgIFN0cmluZyBWTEFUW10gPSBuZXcgU3RyaW5nW10geyJIb3JhIGRlIFZsYWRpdm9zdG9rIiwgIlZMQVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGUgVmxhZGl2b3N0b2siLCAiVkxBU1QifTsKICAgICAgICAgU3RyaW5nIFdBUlRbXSA9IG5ldyBTdHJpbmdbXSB7IkhvcmEgZGUgQXJnZW50aW5hIE9jY2lkZW50YWwiLCAiV0FSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JhIGRlIHZlcmFubyBkZSBBcmdlbnRpbmEgT2NjaWRlbnRhbCIsICJXQVJTVCJ9OwogICAgICAgICBTdHJpbmcgV0FUW10gPSBuZXcgU3RyaW5nW10geyJIb3JhIGRlIFx1MDBjMWZyaWNhIE9jY2lkZW50YWwiLCAiV0FUIiwKQEAgLTE4NSwxOCArMTk3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluZG9uZXNpYSBIb3JhIGRlIHZlcmFubyBkZSBJbmRvbmVzaWEgT2NjaWRlbnRhbCIsICJXSVNUIn07CiAgICAgICAgIFN0cmluZyBXU1RfQVVTW10gPSBuZXcgU3RyaW5nW10geyJIb3JhIGVzdFx1MDBlMW5kYXIgT2NjaWRlbnRhbCAoQXVzdHJhbGlhKSIsICJXU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gT2NjaWRlbnRhbCAoQXVzdHJhbGlhKSIsICJXU1QifTsKLSAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJIb3JhIGVzdFx1MDBlMW5kYXIgZGUgU2Ftb2EiLCAiU1NUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JhIGRlIHZlcmFubyBkZSBTYW1vYSIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFdTVF9TQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiSG9yYSBkZSBTYW1vYSBPY2NpZGVudGFsIiwgIldTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvcmEgZGUgdmVyYW5vIGRlIFNhbW9hIE9jY2lkZW50YWwiLCAiV1NEVCJ9OwotICAgICAgICBTdHJpbmcgQ2hTVFtdID0gbmV3IFN0cmluZ1tdIHsiSG9yYSBlc3RcdTAwZTFuZGFyIGRlIENoYW1vcnJvIiwgIkNoU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGUgQ2hhbW9ycm8iLCAiQ2hEVCJ9OwotICAgICAgICBTdHJpbmcgVklDVE9SSUFbXSA9IG5ldyBTdHJpbmdbXSB7IkhvcmEgZXN0XHUwMGUxbmRhciBkZWwgRXN0ZSAoVmljdG9yaWEpIiwgIkVTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGVsIEVzdGUgKFZpY3RvcmlhKSIsICJFU1QifTsKLSAgICAgICAgU3RyaW5nIFVUQ1tdID0gbmV3IFN0cmluZ1tdIHsiSG9yYSBVbml2ZXJzYWwgQ29vcmRpbmFkYSIsICJVVEMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JhIFVuaXZlcnNhbCBDb29yZGluYWRhIiwgIlVUQyJ9OwotICAgICAgICBTdHJpbmcgVVpUW10gPSBuZXcgU3RyaW5nW10geyJIb3JhIGRlIFV6YmVraXN0XHUwMGUxbiIsICJVWlQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JhIGRlIHZlcmFubyBkZSBVemJla2lzdFx1MDBlMW4iLCAiVVpTVCJ9OworICAgICAgICBTdHJpbmcgWUFLVFtdID0gbmV3IFN0cmluZ1tdIHsiSG9yYSBkZSBZYWt1dHNrIiwgIllBS1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGUgWWFrdXRzayIsICJZQUtTVCJ9OwogCiAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CiAgICAgICAgICAgICB7IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBQU1R9LApAQCAtMjg3LDcgKzI5MSw3IEBACiAgICAgICAgICAgICB7IkFmcmljYS9Qb3J0by1Ob3ZvIiwgV0FUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1Nhb19Ub21lIiwgR01UfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1RpbWJ1a3R1IiwgR01UfSwKLSAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBFRVR9LAorICAgICAgICAgICAgeyJBZnJpY2EvVHJpcG9saSIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UdW5pcyIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9XaW5kaG9layIsIFdBVH0sCiAgICAgICAgICAgICB7IkFtZXJpY2EvQWRhayIsIEhBU1R9LApAQCAtNTMzLDYgKzUzNyw3IEBACiAgICAgICAgICAgICB7IkFzaWEvS2FzaGdhciIsIENUVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0aG1hbmR1IiwgTlBUfSwKICAgICAgICAgICAgIHsiQXNpYS9LYXRtYW5kdSIsIE5QVH0sCisgICAgICAgICAgICB7IkFzaWEvS2hhbmR5Z2EiLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9Lb2xrYXRhIiwgSVNUfSwKICAgICAgICAgICAgIHsiQXNpYS9LcmFzbm95YXJzayIsIG5ldyBTdHJpbmdbXSB7IkhvcmEgZGUgS3Jhc25veWFyc2siLCAiS1JBVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JhIGRlIHZlcmFubyBkZSBLcmFzbm95YXJzayIsICJLUkFTVCJ9fSwKQEAgLTU4MSwxMSArNTg2LDEwIEBACiAgICAgICAgICAgICB7IkFzaWEvVWxhYW5iYWF0YXIiLCBVTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9VbGFuX0JhdG9yIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVXJ1bXFpIiwgQ1RUfSwKKyAgICAgICAgICAgIHsiQXNpYS9Vc3QtTmVyYSIsIFZMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1ZpZW50aWFuZSIsIElDVH0sCi0gICAgICAgICAgICB7IkFzaWEvVmxhZGl2b3N0b2siLCBuZXcgU3RyaW5nW10geyJIb3JhIGRlIFZsYWRpdm9zdG9rIiwgIlZMQVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGUgVmxhZGl2b3N0b2siLCAiVkxBU1QifX0sCi0gICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIG5ldyBTdHJpbmdbXSB7IkhvcmEgZGUgWWFrdXRzayIsICJZQUtUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGUgWWFrdXRzayIsICJZQUtTVCJ9fSwKKyAgICAgICAgICAgIHsiQXNpYS9WbGFkaXZvc3RvayIsIFZMQVR9LAorICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9ZZWthdGVyaW5idXJnIiwgbmV3IFN0cmluZ1tdIHsiSG9yYSBkZSBFa2F0ZXJpbmJ1cmdvIiwgIllFS1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JhIGRlIHZlcmFubyBkZSBFa2F0ZXJpbmJ1cmdvIiwgIllFS1NUIn19LAogICAgICAgICAgICAgeyJBc2lhL1llcmV2YW4iLCBBUk1UfSwKQEAgLTY2OSw2ICs2NzMsNyBAQAogICAgICAgICAgICAgeyJFdXJvcGUvQnJhdGlzbGF2YSIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9CcnVzc2VscyIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9CdWRhcGVzdCIsIENFVH0sCisgICAgICAgICAgICB7IkV1cm9wZS9CdXNpbmdlbiIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9DaGlzaW5hdSIsIEVFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9Db3BlbmhhZ2VuIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0R1YmxpbiIsIERVQkxJTn0sCkBAIC03NDgsNyArNzUzLDcgQEAKICAgICAgICAgICAgIHsiSmFtYWljYSIsIEVTVH0sCiAgICAgICAgICAgICB7IkphcGFuIiwgSlNUfSwKICAgICAgICAgICAgIHsiS3dhamFsZWluIiwgTUhUfSwKLSAgICAgICAgICAgIHsiTGlieWEiLCBFRVR9LAorICAgICAgICAgICAgeyJMaWJ5YSIsIENFVH0sCiAgICAgICAgICAgICB7Ik1FVCIsIG5ldyBTdHJpbmdbXSB7IkhvcmEgZGUgRXVyb3BhIENlbnRyYWwiLCAiTUVUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yYSBkZSB2ZXJhbm8gZGUgRXVyb3BhIENlbnRyYWwiLCAiTUVTVCJ9fSwKICAgICAgICAgICAgIHsiTWV4aWNvL0JhamFOb3J0ZSIsIFBTVH0sCmRpZmYgLS1naXQgYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfZnIuamF2YSBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19mci5qYXZhCmluZGV4IDY2NzExMjEuLjQxMWM5NGEgMTAwNjQ0Ci0tLSBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19mci5qYXZhCisrKyBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19mci5qYXZhCkBAIC00OCw0MyArNDgsNDUgQEAKICAgICAgICAgU3RyaW5nIEFERUxBSURFW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBzdGFuZGFyZCBkJ0F1c3RyYWxpZSBjZW50cmFsZSAoQXVzdHJhbGllIGR1IHN1ZCkiLCAiQ1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBdXN0cmFsaWUgY2VudHJhbGUgKEF1c3RyYWxpZSBkdSBzdWQpIiwgIkNTVCJ9OwogICAgICAgICBTdHJpbmcgQUdUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBEJ0FyZ2VudGluZSIsICJBUlQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgRCdBcmdlbnRpbmUiLCAiQVJTVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IEQnQXJnZW50aW5lIiwgIkFSU1QifTsKICAgICAgICAgU3RyaW5nIEFLU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIG5vcm1hbGUgZCdBbGFza2EiLCAiQUtTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZCdBbGFza2EiLCAiQUtEVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkJ0FsYXNrYSIsICJBS0RUIn07CiAgICAgICAgIFN0cmluZyBBTVRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIG5vcm1hbGUgZCdBbWF6b25pZSIsICJBTVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBbWF6b25pZSIsICJBTVNUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBbWF6b25pZSIsICJBTVNUIn07CiAgICAgICAgIFN0cmluZyBBUkFTVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkJ0FyYWJpZSIsICJBU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkJ0FyYWJpZSIsICJBRFQifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGQnQXJhYmllIiwgIkFEVCJ9OwogICAgICAgICBTdHJpbmcgQVJNVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZCdBcm1cdTAwZTluaWUiLCAiQU1UIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkJ0FybVx1MDBlOW5pZSIsICJBTVNUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGQnQXJtXHUwMGU5bmllIiwgIkFNU1QifTsKICAgICAgICAgU3RyaW5nIEFTVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkZSBsJ0F0bGFudGlxdWUiLCAiQVNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGRlIGwnQXRsYW50aXF1ZSIsICJBRFQifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkZSBsJ0F0bGFudGlxdWUiLCAiQURUIn07CiAgICAgICAgIFN0cmluZyBCRFRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGR1IEJhbmdsYWRlc2giLCAiQkRUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGR1IEJhbmdsYWRlc2giLCAiQkRTVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGR1IEJhbmdsYWRlc2giLCAiQkRTVCJ9OwogICAgICAgICBTdHJpbmcgQlJJU0JBTkVbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIHN0YW5kYXJkIGQnQXVzdHJhbGllIG9yaWVudGFsZSAoUXVlZW5zbGFuZCkiLCAiRVNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBdXN0cmFsaWUgb3JpZW50YWxlIChRdWVlbnNsYW5kKSIsICJFU1QifTsKICAgICAgICAgU3RyaW5nIEJST0tFTl9ISUxMW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBzdGFuZGFyZCBkJ0F1c3RyYWxpZSBjZW50cmFsZSAoQXVzdHJhbGllIGR1IHN1ZC9Ob3V2ZWxsZS1HYWxsZXMgZHUgc3VkKSIsICJDU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkJ0F1c3RyYWxpZSBjZW50cmFsZShBdXN0cmFsaWUgZHUgc3VkL05vdXZlbGxlLUdhbGxlcyBkdSBzdWQpIiwgIkNTVCJ9OwogICAgICAgICBTdHJpbmcgQlJUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkdSBCclx1MDBlOXNpbCIsICJCUlQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZHUgQnJcdTAwZTlzaWwiLCAiQlJTVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGR1IEJyXHUwMGU5c2lsIiwgIkJSU1QifTsKICAgICAgICAgU3RyaW5nIEJUVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZHUgQmhvdXRhbiIsICJCVFQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZHUgQmhvdXRhbiIsICJCVFNUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZHUgQmhvdXRhbiIsICJCVFNUIn07CiAgICAgICAgIFN0cmluZyBDQVRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGQnQWZyaXF1ZSBjZW50cmFsZSIsICJDQVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBZnJpcXVlIGNlbnRyYWxlIiwgIkNBU1QifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkJ0FmcmlxdWUgY2VudHJhbGUiLCAiQ0FTVCJ9OwogICAgICAgICBTdHJpbmcgQ0VUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkJ0V1cm9wZSBjZW50cmFsZSIsICJDRVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdFdXJvcGUgY2VudHJhbGUiLCAiQ0VTVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGQnRXVyb3BlIGNlbnRyYWxlIiwgIkNFU1QifTsKICAgICAgICAgU3RyaW5nIENIQVNUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBzdGFuZGFyZCBkZSBDaGF0aGFtIiwgIkNIQVNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZGUgQ2hhdGhhbSIsICJDSEFEVCJ9OworICAgICAgICBTdHJpbmcgQ2hTVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkZXMgXHUwMGVlbGVzIE1hcmlhbm5lcyIsICJDaFNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGRlcyBcdTAwZWVsZXMgTWFyaWFubmVzIiwgIkNoRFQifTsKICAgICAgICAgU3RyaW5nIENIVVRbXSA9IG5ldyBTdHJpbmdbXSB7IkNodXVrIFRpbWUiLCAiQ0hVVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaHV1ayBTdW1tZXIgVGltZSIsICJDSFVTVCJ9OwogICAgICAgICBTdHJpbmcgQ0lUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkJ0luZG9uXHUwMGU5c2llIGNlbnRyYWxlIiwgIkNJVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkJ0luZG9uXHUwMGU5c2llIGNlbnRyYWxlIiwgIkNJU1QifTsKICAgICAgICAgU3RyaW5nIENMVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZHUgQ2hpbGkiLCAiQ0xUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGR1IENoaWxpIiwgIkNMU1QifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkdSBDaGlsaSIsICJDTFNUIn07CiAgICAgICAgIFN0cmluZyBDU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIG5vcm1hbGUgZHUgQ2VudHJlIiwgIkNTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkdSBDZW50cmUiLCAiQ0RUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZHUgQ2VudHJlIiwgIkNEVCJ9OwogICAgICAgICBTdHJpbmcgQ1RUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBub3JtYWxlIGRlIENoaW5lIiwgIkNTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkZSBDaGluZSIsICJDRFQifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkZSBDaGluZSIsICJDRFQifTsKICAgICAgICAgU3RyaW5nIENVQkFbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIHN0YW5kYXJkIGRlIEN1YmEiLCAiQ1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBDdWJhIiwgIkNEVCJ9OwogICAgICAgICBTdHJpbmcgREFSV0lOW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBzdGFuZGFyZCBkJ0F1c3RyYWxpZSBjZW50cmFsZSAoVGVycml0b2lyZSBkdSBOb3JkKSIsICJDU1QiLApAQCAtOTIsMTcgKzk0LDE3IEBACiAgICAgICAgIFN0cmluZyBEVUJMSU5bXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGR1IG1cdTAwZTlyaWRpZW4gZGUgR3JlZW53aWNoIiwgIkdNVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBpcmxhbmRhaXNlIiwgIklTVCJ9OwogICAgICAgICBTdHJpbmcgRUFUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkJ0FmcmlxdWUgZGUgbCdFc3QiLCAiRUFUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGQnQWZyaXF1ZSBkZSBsJ0VzdCIsICJFQVNUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBZnJpcXVlIGRlIGwnRXN0IiwgIkVBU1QifTsKICAgICAgICAgU3RyaW5nIEVBU1RFUltdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZGUgbCdJbGUgZGUgUFx1MDBlMnF1ZXMiLCAiRUFTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBsJ0lsZSBkZSBQXHUwMGUycXVlcyIsICJFQVNTVCJ9OwogICAgICAgICBTdHJpbmcgRUVUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkJ0V1cm9wZSBkZSBsJ0VzdCIsICJFRVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdFdXJvcGUgZGUgbCdFc3QiLCAiRUVTVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGQnRXVyb3BlIGRlIGwnRXN0IiwgIkVFU1QifTsKICAgICAgICAgU3RyaW5nIEVHVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZHUgR3JvZW5sYW5kIGRlIGwnRXN0IiwgIkVHVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkdSBHcm9lbmxhbmQgZGUgbCdFc3QiLCAiRUdTVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGR1IEdyb2VubGFuZCBkZSBsJ0VzdCIsICJFR1NUIn07CiAgICAgICAgIFN0cmluZyBFU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIG5vcm1hbGUgZGUgbCdFc3QiLCAiRVNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGRlIGwnRXN0IiwgIkVEVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGRlIGwnRXN0IiwgIkVEVCJ9OwogICAgICAgICBTdHJpbmcgRVNUX05TV1tdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkZSBsJ0VzdCAoTm91dmVsbGUtR2FsbGVzIGR1IFN1ZCkiLCAiRVNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBsJ0VzdCAoTm91dmVsbGUtR2FsbGVzIGR1IFN1ZCkiLCAiRVNUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGRlIGwnRXN0IChOb3V2ZWxsZS1HYWxsZXMgZHUgU3VkKSIsICJFU1QifTsKICAgICAgICAgU3RyaW5nIEZFVFtdID0gbmV3IFN0cmluZ1tdIHsiRnVydGhlci1lYXN0ZXJuIEV1cm9wZWFuIFRpbWUiLCAiRkVUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVydGhlci1lYXN0ZXJuIEV1cm9wZWFuIFN1bW1lciBUaW1lIiwgIkZFU1QifTsKICAgICAgICAgU3RyaW5nIEdITVRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGR1IEdoYW5hIiwgIkdNVCIsCkBAIC0xMTAsMjkgKzExMiwyOSBAQAogICAgICAgICBTdHJpbmcgR0FNQklFUltdID0gIG5ldyBTdHJpbmdbXSB7IkhldXJlIGRlIEdhbWJpIiwgIkdBTVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBHYW1iaSIsICJHQU1TVCJ9OwogICAgICAgICBTdHJpbmcgR01UW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkZSBHcmVlbndpY2giLCAiR01UIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGRlIEdyZWVud2ljaCIsICJHTVQifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkZSBHcmVlbndpY2giLCAiR01UIn07CiAgICAgICAgIFN0cmluZyBHTVRCU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGR1IG1cdTAwZTlyaWRpZW4gZGUgR3JlZW53aWNoIiwgIkdNVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBicml0YW5uaXF1ZSIsICJCU1QifTsKICAgICAgICAgU3RyaW5nIEdTVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkdSBHb2xmZSIsICJHU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZHUgR29sZmUiLCAiR0RUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZHUgR29sZmUiLCAiR0RUIn07CiAgICAgICAgIFN0cmluZyBIQVNUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBub3JtYWxlIGQnSGF3YVx1MDBlZi1BbFx1MDBlOW91dGllbm5lcyIsICJIQVNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkJ0hhd2FcdTAwZWYtQWxcdTAwZTlvdXRpZW5uZXMiLCAiSEFEVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkJ0hhd2FcdTAwZWYtQWxcdTAwZTlvdXRpZW5uZXMiLCAiSEFEVCJ9OwogICAgICAgICBTdHJpbmcgSEtUW10gPSAgbmV3IFN0cmluZ1tdIHsiSGV1cmUgZGUgSG9uZyBLb25nIiwgIkhLVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZGUgSG9uZyBLb25nIiwgIkhLU1QifTsKICAgICAgICAgU3RyaW5nIEhTVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkJ0hhd2FcdTAwZWYiLCAiSFNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGQnSGF3YVx1MDBlZiIsICJIRFQifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkJ0hhd2FcdTAwZWYiLCAiSERUIn07CiAgICAgICAgIFN0cmluZyBJQ1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGQnSW5kb2NoaW5lIiwgIklDVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkJ0luZG9jaGluZSIsICJJQ1NUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdJbmRvY2hpbmUiLCAiSUNTVCJ9OwogICAgICAgICBTdHJpbmcgSVJUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBub3JtYWxlIGQnSXJhbiIsICJJUlNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGQnSXJhbiIsICJJUkRUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZCdJcmFuIiwgIklSRFQifTsKICAgICAgICAgU3RyaW5nIElTUkFFTFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgc3RhbmRhcmQgZCdJc3JhXHUwMGVibCIsICJJU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZCdJc3JhXHUwMGVibCIsICJJRFQifTsKICAgICAgICAgU3RyaW5nIElTVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkJ0luZGUiLCAiSVNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGQnSW5kZSIsICJJRFQifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkJ0luZGUiLCAiSURUIn07CiAgICAgICAgIFN0cmluZyBKU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIG5vcm1hbGUgZHUgSmFwb24iLCAiSlNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGR1IEphcG9uIiwgIkpEVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGR1IEphcG9uIiwgIkpEVCJ9OwogICAgICAgICBTdHJpbmcgS1NUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBub3JtYWxlIGRlIENvclx1MDBlOWUiLCAiS1NUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGRlIENvclx1MDBlOWUiLCAiS0RUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZGUgQ29yXHUwMGU5ZSIsICJLRFQifTsKICAgICAgICAgU3RyaW5nIExPUkRfSE9XRVtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgc3RhbmRhcmQgZGUgTG9yZCBIb3dlIiwgIkxIU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZGUgTG9yZCBIb3dlIiwgIkxIU1QifTsKICAgICAgICAgU3RyaW5nIE1IVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZGVzIElsZXMgTWFyc2hhbGwiLCAiTUhUIiwKQEAgLTE0MCw3ICsxNDIsNyBAQAogICAgICAgICBTdHJpbmcgTVNLW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBzdGFuZGFyZCBkZSBNb3Njb3UiLCAiTVNLIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGRlIE1vc2NvdSIsICJNU0QifTsKICAgICAgICAgU3RyaW5nIE1TVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkZXMgUm9jaGV1c2VzIiwgIk1TVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkZXMgUm9jaGV1c2VzIiwgIk1EVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGRlcyBSb2NoZXVzZXMiLCAiTURUIn07CiAgICAgICAgIFN0cmluZyBNWVRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGRlIE1hbGFpc2llIiwgIk1ZVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBNYWxhaXNpZSIsICJNWVNUIn07CiAgICAgICAgIFN0cmluZyBOT1JPTkhBW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkZSBGZXJuYW5kbyBkZSBOb3JvbmhhIiwgIkZOVCIsCkBAIC0xNTAsMjEgKzE1MiwyMyBAQAogICAgICAgICBTdHJpbmcgTlBUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkdSBOXHUwMGU5cGFsIiwgIk5QVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkdSBOXHUwMGU5cGFsIiwgIk5QU1QifTsKICAgICAgICAgU3RyaW5nIE5TVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkZSBUZXJyZS1OZXV2ZSIsICJOU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZGUgVGVycmUtTmV1dmUiLCAiTkRUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZGUgVGVycmUtTmV1dmUiLCAiTkRUIn07CiAgICAgICAgIFN0cmluZyBOWlNUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBub3JtYWxlIGRlIE5vdXZlbGxlLVpcdTAwZTlsYW5kZSIsICJOWlNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkZSBOb3V2ZWxsZS1aXHUwMGU5bGFuZGUiLCAiTlpEVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkZSBOb3V2ZWxsZS1aXHUwMGU5bGFuZGUiLCAiTlpEVCJ9OwogICAgICAgICBTdHJpbmcgUElUQ0FJUk5bXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIHN0YW5kYXJkIGRlcyBQaXRjYWlybiIsICJQU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhldXJlIGF2YW5jXHUwMGU5ZSBkZXMgUGl0Y2Fpcm4iLCAiUERUIn07CiAgICAgICAgIFN0cmluZyBQS1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGR1IFBha2lzdGFuIiwgIlBLVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkdSBQYWtpc3RhbiIsICJQS1NUIn0gOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZHUgUGFraXN0YW4iLCAiUEtTVCJ9OwogICAgICAgICBTdHJpbmcgUE9OVFtdID0gbmV3IFN0cmluZ1tdIHsiUG9obnBlaSBUaW1lIiwgIlBPTlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9obnBlaSBTdW1tZXIgVGltZSIsICJQT05TVCJ9OwogICAgICAgICBTdHJpbmcgUFNUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBub3JtYWxlIGR1IFBhY2lmaXF1ZSIsICJQU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBhdmFuY1x1MDBlOWUgZHUgUGFjaWZpcXVlIiwgIlBEVCJ9IDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGR1IFBhY2lmaXF1ZSIsICJQRFQifTsKKyAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBzdGFuZGFyZCBkZSBTYW1vYSIsICJTU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGF2YW5jXHUwMGU5ZSBkZSBTYW1vYSIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFNBU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIG5vcm1hbGUgZCdBZnJpcXVlIGR1IFN1ZCIsICJTQVNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkJ0FmcmlxdWUgZHUgU3VkIiwgIlNBU1QifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBZnJpcXVlIGR1IFN1ZCIsICJTQVNUIn07CiAgICAgICAgIFN0cmluZyBTQlRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGRlcyBcdTAwY2VsZXMgU2Fsb21vbiIsICJTQlQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZGVzIFx1MDBjZWxlcyBTYWxvbW9uIiwgIlNCU1QifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZXMgXHUwMGNlbGVzIFNhbG9tb24iLCAiU0JTVCJ9OwogICAgICAgICBTdHJpbmcgU0dUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkZSBTaW5nYXBvdXIiLCAiU0dUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGRlIFNpbmdhcG91ciIsICJTR1NUIn07CiAgICAgICAgIFN0cmluZyBTTFNUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkdSBtXHUwMGU5cmlkaWVuIGRlIEdyZWVud2ljaCIsICJHTVQiLApAQCAtMTcyLDMxICsxNzYsMzEgQEAKICAgICAgICAgU3RyaW5nIFRBU01BTklBW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBzdGFuZGFyZCBkJ0F1c3RyYWxpZSBvcmllbnRhbGUgKFRhc21hbmllKSIsICJFU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkJ0F1c3RyYWxpZSBvcmllbnRhbGUgKFRhc21hbmllKSIsICJFU1QifTsKICAgICAgICAgU3RyaW5nIFRNVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZHUgVHVya21cdTAwZTluaXN0YW4iLCAiVE1UIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGR1IFR1cmttXHUwMGU5bmlzdGFuIiwgIlRNU1QifSA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkdSBUdXJrbVx1MDBlOW5pc3RhbiIsICJUTVNUIn07CiAgICAgICAgIFN0cmluZyBVTEFUW109IG5ldyBTdHJpbmdbXSB7IkhldXJlIGRlIGwnVWxhYW5iYWF0YXIiLCAiVUxBVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBsJ1VsYWFuYmFhdGFyIiwgIlVMQVNUIn0gOwotICAgICAgICBTdHJpbmcgV0FSVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgRCdBcmdlbnRpbmUgZGUgbCdPdWVzdCIsICJXQVJUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBEJ0FyZ2VudGluZSBkZSBsJ091ZXN0IiwgIldBUlNUIn0gOwotICAgICAgICBTdHJpbmcgV0FUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkJ0FmcmlxdWUgZGUgbCdPdWVzdCIsICJXQVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBZnJpcXVlIGRlIGwnT3Vlc3QiLCAiV0FTVCJ9IDsKLSAgICAgICAgU3RyaW5nIFdFVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZCdFdXJvcGUgZGUgbCdPdWVzdCIsICJXRVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdFdXJvcGUgZGUgbCdPdWVzdCIsICJXRVNUIn0gOwotICAgICAgICBTdHJpbmcgV0lUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkZSBsJ0luZG9uXHUwMGU5c2llIG9jY2lkZW50YWxlIiwgIldJVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBsJ0luZG9uXHUwMGU5c2llIG9jY2lkZW50YWxlIiwgIldJU1QifTsKLSAgICAgICAgU3RyaW5nIFdTVF9BVVNbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIG5vcm1hbGUgZGUgbCdPdWVzdCAoQXVzdHJhbGllKSIsICJXU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGRlIGwnT3Vlc3QgKEF1c3RyYWxpZSkiLCAiV1NUIn0gOwotICAgICAgICBTdHJpbmcgU0FNT0FbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIHN0YW5kYXJkIGRlIFNhbW9hIiwgIlNTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgYXZhbmNcdTAwZTllIGRlIFNhbW9hIiwgIlNEVCJ9OwotICAgICAgICBTdHJpbmcgV1NUX1NBTU9BW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBkZXMgU2Ftb2FzIG9jY2lkZW50YWxlcyIsICJXU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZGVzIFNhbW9hcyBvY2NpZGVudGFsZXMiLCAiV1NEVCJ9IDsKLSAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIG5vcm1hbGUgZGVzIFx1MDBlZWxlcyBNYXJpYW5uZXMiLCAiQ2hTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZXMgXHUwMGVlbGVzIE1hcmlhbm5lcyIsICJDaERUIn07Ci0gICAgICAgIFN0cmluZyBWSUNUT1JJQVtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgc3RhbmRhcmQgZCdBdXN0cmFsaWUgb3JpZW50YWxlIChWaWN0b3JpYSkiLCAiRVNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdBdXN0cmFsaWUgb3JpZW50YWxlIChWaWN0b3JpYSkiLCAiRVNUIn07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBsJ1VsYWFuYmFhdGFyIiwgIlVMQVNUIn07CiAgICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7IlRlbXBzIHVuaXZlcnNlbCBjb29yZG9ublx1MDBlOSIsICJVVEMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZW1wcyB1bml2ZXJzZWwgY29vcmRvbm5cdTAwZTkiLCAiVVRDIn07CiAgICAgICAgIFN0cmluZyBVWlRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGRlIGwnT3V6Ylx1MDBlOWtpc3RhbiIsICJVWlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZGUgbCdPdXpiXHUwMGU5a2lzdGFuIiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFZJQ1RPUklBW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBzdGFuZGFyZCBkJ0F1c3RyYWxpZSBvcmllbnRhbGUgKFZpY3RvcmlhKSIsICJFU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkJ0F1c3RyYWxpZSBvcmllbnRhbGUgKFZpY3RvcmlhKSIsICJFU1QifTsKKyAgICAgICAgU3RyaW5nIFZMQVRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGRlIFZsYWRpdm9zdG9rIiwgIlZMQVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGRlIFZsYWRpdm9zdG9rIiwgIlZMQVNUIn07CisgICAgICAgIFN0cmluZyBXQVJUW10gPSBuZXcgU3RyaW5nW10geyJIZXVyZSBEJ0FyZ2VudGluZSBkZSBsJ091ZXN0IiwgIldBUlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IEQnQXJnZW50aW5lIGRlIGwnT3Vlc3QiLCAiV0FSU1QifTsKKyAgICAgICAgU3RyaW5nIFdBVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZCdBZnJpcXVlIGRlIGwnT3Vlc3QiLCAiV0FUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGQnQWZyaXF1ZSBkZSBsJ091ZXN0IiwgIldBU1QifTsKKyAgICAgICAgU3RyaW5nIFdFVFtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZCdFdXJvcGUgZGUgbCdPdWVzdCIsICJXRVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZCdFdXJvcGUgZGUgbCdPdWVzdCIsICJXRVNUIn07CisgICAgICAgIFN0cmluZyBXSVRbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGRlIGwnSW5kb25cdTAwZTlzaWUgb2NjaWRlbnRhbGUiLCAiV0lUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGRlIGwnSW5kb25cdTAwZTlzaWUgb2NjaWRlbnRhbGUiLCAiV0lTVCJ9OworICAgICAgICBTdHJpbmcgV1NUX0FVU1tdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgbm9ybWFsZSBkZSBsJ091ZXN0IChBdXN0cmFsaWUpIiwgIldTVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZGUgbCdPdWVzdCAoQXVzdHJhbGllKSIsICJXU1QifTsKKyAgICAgICAgU3RyaW5nIFdTVF9TQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiSGV1cmUgZGVzIFNhbW9hcyBvY2NpZGVudGFsZXMiLCAiV1NUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGRlcyBTYW1vYXMgb2NjaWRlbnRhbGVzIiwgIldTRFQifTsKKyAgICAgICAgU3RyaW5nIFlBS1RbXSA9IG5ldyBTdHJpbmdbXSB7IkhldXJlIGR1IElha291dHNrIiwgIllBS1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGR1IElha291dHNrIiwgIllBS1NUIn07CiAKICAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKICAgICAgICAgICAgIHsiQW1lcmljYS9Mb3NfQW5nZWxlcyIsIFBTVH0sCkBAIC0yODcsNyArMjkxLDcgQEAKICAgICAgICAgICAgIHsiQWZyaWNhL1BvcnRvLU5vdm8iLCBXQVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvU2FvX1RvbWUiLCBHTVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvVGltYnVrdHUiLCBHTVR9LAotICAgICAgICAgICAgeyJBZnJpY2EvVHJpcG9saSIsIEVFVH0sCisgICAgICAgICAgICB7IkFmcmljYS9Ucmlwb2xpIiwgQ0VUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1R1bmlzIiwgQ0VUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1dpbmRob2VrIiwgV0FUfSwKICAgICAgICAgICAgIHsiQW1lcmljYS9BZGFrIiwgSEFTVH0sCkBAIC01MzMsNiArNTM3LDcgQEAKICAgICAgICAgICAgIHsiQXNpYS9LYXNoZ2FyIiwgQ1RUfSwKICAgICAgICAgICAgIHsiQXNpYS9LYXRobWFuZHUiLCBOUFR9LAogICAgICAgICAgICAgeyJBc2lhL0thdG1hbmR1IiwgTlBUfSwKKyAgICAgICAgICAgIHsiQXNpYS9LaGFuZHlnYSIsIFlBS1R9LAogICAgICAgICAgICAgeyJBc2lhL0tvbGthdGEiLCBJU1R9LAogICAgICAgICAgICAgeyJBc2lhL0tyYXNub3lhcnNrIiwgbmV3IFN0cmluZ1tdIHsiSGV1cmUgZGUgS3Jhc25vXHUwMGVmYXJzayIsICJLUkFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhldXJlIGQnXHUwMGU5dFx1MDBlOSBkZSBLcmFzbm9cdTAwZWZhcnNrIiwgIktSQVNUIn19LApAQCAtNTgxLDExICs1ODYsMTAgQEAKICAgICAgICAgICAgIHsiQXNpYS9VbGFhbmJhYXRhciIsIFVMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1VsYW5fQmF0b3IiLCBVTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9VcnVtcWkiLCBDVFR9LAorICAgICAgICAgICAgeyJBc2lhL1VzdC1OZXJhIiwgVkxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVmllbnRpYW5lIiwgSUNUfSwKLSAgICAgICAgICAgIHsiQXNpYS9WbGFkaXZvc3RvayIsIG5ldyBTdHJpbmdbXSB7IkhldXJlIGRlIFZsYWRpdm9zdG9rIiwgIlZMQVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGRlIFZsYWRpdm9zdG9rIiwgIlZMQVNUIn19LAotICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBuZXcgU3RyaW5nW10geyJIZXVyZSBkdSBJYWtvdXRzayIsICJZQUtUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGV1cmUgZCdcdTAwZTl0XHUwMGU5IGR1IElha291dHNrIiwgIllBS1NUIn19LAorICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgVkxBVH0sCisgICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIFlBS1R9LAogICAgICAgICAgICAgeyJBc2lhL1lla2F0ZXJpbmJ1cmciLCBuZXcgU3RyaW5nW10geyJIZXVyZSBkZSBZZWthdGVyaW5idXJnIiwgIllFS1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZGUgWWVrYXRlcmluYnVyZyIsICJZRUtTVCJ9fSwKICAgICAgICAgICAgIHsiQXNpYS9ZZXJldmFuIiwgQVJNVH0sCkBAIC02NjksNiArNjczLDcgQEAKICAgICAgICAgICAgIHsiRXVyb3BlL0JyYXRpc2xhdmEiLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQnJ1c3NlbHMiLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQnVkYXBlc3QiLCBDRVR9LAorICAgICAgICAgICAgeyJFdXJvcGUvQnVzaW5nZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQ2hpc2luYXUiLCBFRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQ29wZW5oYWdlbiIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9EdWJsaW4iLCBEVUJMSU59LApAQCAtNzQ4LDcgKzc1Myw3IEBACiAgICAgICAgICAgICB7IkphbWFpY2EiLCBFU1R9LAogICAgICAgICAgICAgeyJKYXBhbiIsIEpTVH0sCiAgICAgICAgICAgICB7Ikt3YWphbGVpbiIsIE1IVH0sCi0gICAgICAgICAgICB7IkxpYnlhIiwgRUVUfSwKKyAgICAgICAgICAgIHsiTGlieWEiLCBDRVR9LAogICAgICAgICAgICAgeyJNRVQiLCBuZXcgU3RyaW5nW10geyJIZXVyZSBkZSBsJ0V1cm9wZSBjZW50cmFsZSIsICJNRVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXVyZSBkJ1x1MDBlOXRcdTAwZTkgZGUgbCdFdXJvcGUgY2VudHJhbGUiLCAiTUVTVCJ9fSwKICAgICAgICAgICAgIHsiTWV4aWNvL0JhamFOb3J0ZSIsIFBTVH0sCmRpZmYgLS1naXQgYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfaXQuamF2YSBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19pdC5qYXZhCmluZGV4IDg4NzEwNjYuLmFlMjhiMDcgMTAwNjQ0Ci0tLSBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19pdC5qYXZhCisrKyBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19pdC5qYXZhCkBAIC03Nyw2ICs3Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGxlZ2FsZSBkaSBDaGF0aGFtIiwgIkNIQURUIn07CiAgICAgICAgIFN0cmluZyBDSFVUW10gPSBuZXcgU3RyaW5nW10geyJDaHV1ayBUaW1lIiwgIkNIVVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2h1dWsgU3VtbWVyIFRpbWUiLCAiQ0hVU1QifTsKKyAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7Ik9yYSBzdGFuZGFyZCBkaSBDaGFtb3JybyIsICJDaFNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmEgbGVnYWxlIGRpIENoYW1vcnJvIiwgIkNoRFQifTsKICAgICAgICAgU3RyaW5nIENJVFtdID0gbmV3IFN0cmluZ1tdIHsiT3JhIGRlbGwnSW5kb25lc2lhIGNlbnRyYWxlIiwgIkNJVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yYSBlc3RpdmEgZGVsbCdJbmRvbmVzaWEgY2VudHJhbGUiLCAiQ0lTVCJ9OwogICAgICAgICBTdHJpbmcgQ0xUW10gPSBuZXcgU3RyaW5nW10geyJPcmEgZGVsIENpbGUiLCAiQ0xUIiwKQEAgLTE2MSw2ICsxNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9obnBlaSBTdW1tZXIgVGltZSIsICJQT05TVCJ9OwogICAgICAgICBTdHJpbmcgUFNUW10gPSBuZXcgU3RyaW5nW10geyJPcmEgc29sYXJlIGRlbGxhIGNvc3RhIG9jY2lkZW50YWxlIFVTQSIsICJQU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmEgbGVnYWxlIGRlbGxhIGNvc3RhIG9jY2lkZW50YWxlIFVTQSIsICJQRFQifTsKKyAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJPcmEgc3RhbmRhcmQgZGkgU2Ftb2EiLCAiU1NUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmEgbGVnYWxlIGRpIFNhbW9hIiwgIlNEVCJ9OwogICAgICAgICBTdHJpbmcgU0FTVFtdID0gbmV3IFN0cmluZ1tdIHsiT3JhIHNvbGFyZSBkZWwgU3VkYWZyaWNhIiwgIlNBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBkZWwgU3VkYWZyaWNhIiwgIlNBU1QifTsKICAgICAgICAgU3RyaW5nIFNCVFtdID0gbmV3IFN0cmluZ1tdIHsiT3JhIGRlbGxlIElzb2xlIFNhbG9tb25lIiwgIlNCVCIsCkBAIC0xNzUsNiArMTc5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yYSBlc3RpdmEgZGVsIFR1cmttZW5pc3RhbiIsICJUTVNUIn07CiAgICAgICAgIFN0cmluZyBVTEFUW109IG5ldyBTdHJpbmdbXSB7Ik9yYSBkaSBVbGFhbmJhYXRhciIsICJVTEFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBkaSBVbGFhbmJhYXRhciIsICJVTEFTVCJ9OworICAgICAgICBTdHJpbmcgVVRDW10gPSBuZXcgU3RyaW5nW10geyJUZW1wbyB1bml2ZXJzYWxlIGNvb3JkaW5hdG8iLCAiVVRDIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGVtcG8gdW5pdmVyc2FsZSBjb29yZGluYXRvIiwgIlVUQyJ9OworICAgICAgICBTdHJpbmcgVVpUW10gPSBuZXcgU3RyaW5nW10geyJPcmEgZGVsbCdVemJla2lzdGFuIiwgIlVaVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yYSBlc3RpdmEgZGVsbCdVemJla2lzdGFuIiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFZJQ1RPUklBW10gPSBuZXcgU3RyaW5nW10geyJPcmEgb3JpZW50YWxlIHN0YW5kYXJkIChWaWN0b3JpYSkiLCAiRVNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmEgZXN0aXZhIG9yaWVudGFsZSAoVmljdG9yaWEpIiwgIkVTVCJ9OworICAgICAgICBTdHJpbmcgVkxBVFtdID0gbmV3IFN0cmluZ1tdIHsiT3JhIGRpIFZsYWRpdm9zdG9rIiwgIlZMQVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBkaSBWbGFkaXZvc3RvayIsICJWTEFTVCJ9OwogICAgICAgICBTdHJpbmcgV0FSVFtdID0gbmV3IFN0cmluZ1tdIHsiT3JhIGRlbGwnQXJnZW50aW5hIG9jY2lkZW50YWxlIiwgIldBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBkZWxsJ0FyZ2VudGluYSBvY2NpZGVudGFsZSIsICJXQVJTVCJ9OwogICAgICAgICBTdHJpbmcgV0FUW10gPSBuZXcgU3RyaW5nW10geyJPcmEgZGVsbCdBZnJpY2Egb2NjaWRlbnRhbGUiLCAiV0FUIiwKQEAgLTE4NSwxOCArMTk3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yYSBlc3RpdmEgZGVsbCdJbmRvbmVzaWEgb2NjaWRlbnRhbGUiLCAiV0lTVCJ9OwogICAgICAgICBTdHJpbmcgV1NUX0FVU1tdID0gbmV3IFN0cmluZ1tdIHsiT3JhIHNvbGFyZSBkZWxsJ0F1c3RyYWxpYSBvY2NpZGVudGFsZSIsICJXU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBkZWxsJ0F1c3RyYWxpYSBvY2NpZGVudGFsZSIsICJXU1QifTsKLSAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJPcmEgc3RhbmRhcmQgZGkgU2Ftb2EiLCAiU1NUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmEgbGVnYWxlIGRpIFNhbW9hIiwgIlNEVCJ9OwogICAgICAgICBTdHJpbmcgV1NUX1NBTU9BW10gPSBuZXcgU3RyaW5nW10geyJPcmEgZGkgU2Ftb2EiLCAiV1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBkaSBTYW1vYSIsICJXU0RUIn07Ci0gICAgICAgIFN0cmluZyBDaFNUW10gPSBuZXcgU3RyaW5nW10geyJPcmEgc3RhbmRhcmQgZGkgQ2hhbW9ycm8iLCAiQ2hTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGxlZ2FsZSBkaSBDaGFtb3JybyIsICJDaERUIn07Ci0gICAgICAgIFN0cmluZyBWSUNUT1JJQVtdID0gbmV3IFN0cmluZ1tdIHsiT3JhIG9yaWVudGFsZSBzdGFuZGFyZCAoVmljdG9yaWEpIiwgIkVTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBvcmllbnRhbGUgKFZpY3RvcmlhKSIsICJFU1QifTsKLSAgICAgICAgU3RyaW5nIFVUQ1tdID0gbmV3IFN0cmluZ1tdIHsiVGVtcG8gdW5pdmVyc2FsZSBjb29yZGluYXRvIiwgIlVUQyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRlbXBvIHVuaXZlcnNhbGUgY29vcmRpbmF0byIsICJVVEMifTsKLSAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiT3JhIGRlbGwnVXpiZWtpc3RhbiIsICJVWlQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmEgZXN0aXZhIGRlbGwnVXpiZWtpc3RhbiIsICJVWlNUIn07CisgICAgICAgIFN0cmluZyBZQUtUW10gPSBuZXcgU3RyaW5nW10geyJPcmEgZGkgSmFrdXRzayIsICJZQUtUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yYSBlc3RpdmEgZGkgSmFrdXRzayIsICJZQUtTVCJ9OwogCiAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CiAgICAgICAgICAgICB7IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBQU1R9LApAQCAtMjg3LDcgKzI5MSw3IEBACiAgICAgICAgICAgICB7IkFmcmljYS9Qb3J0by1Ob3ZvIiwgV0FUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1Nhb19Ub21lIiwgR01UfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1RpbWJ1a3R1IiwgR01UfSwKLSAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBFRVR9LAorICAgICAgICAgICAgeyJBZnJpY2EvVHJpcG9saSIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UdW5pcyIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9XaW5kaG9layIsIFdBVH0sCiAgICAgICAgICAgICB7IkFtZXJpY2EvQWRhayIsIEhBU1R9LApAQCAtNTMzLDYgKzUzNyw3IEBACiAgICAgICAgICAgICB7IkFzaWEvS2FzaGdhciIsIENUVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0aG1hbmR1IiwgTlBUfSwKICAgICAgICAgICAgIHsiQXNpYS9LYXRtYW5kdSIsIE5QVH0sCisgICAgICAgICAgICB7IkFzaWEvS2hhbmR5Z2EiLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9Lb2xrYXRhIiwgSVNUfSwKICAgICAgICAgICAgIHsiQXNpYS9LcmFzbm95YXJzayIsIG5ldyBTdHJpbmdbXSB7Ik9yYSBkaSBLcmFzbm9qYXJzayIsICJLUkFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yYSBlc3RpdmEgZGkgS3Jhc25vamFyc2siLCAiS1JBU1QifX0sCkBAIC01ODEsMTEgKzU4NiwxMCBAQAogICAgICAgICAgICAgeyJBc2lhL1VsYWFuYmFhdGFyIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVWxhbl9CYXRvciIsIFVMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1VydW1xaSIsIENUVH0sCisgICAgICAgICAgICB7IkFzaWEvVXN0LU5lcmEiLCBWTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9WaWVudGlhbmUiLCBJQ1R9LAotICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgbmV3IFN0cmluZ1tdIHsiT3JhIGRpIFZsYWRpdm9zdG9rIiwgIlZMQVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBkaSBWbGFkaXZvc3RvayIsICJWTEFTVCJ9fSwKLSAgICAgICAgICAgIHsiQXNpYS9ZYWt1dHNrIiwgbmV3IFN0cmluZ1tdIHsiT3JhIGRpIEpha3V0c2siLCAiWUFLVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yYSBlc3RpdmEgZGkgSmFrdXRzayIsICJZQUtTVCJ9fSwKKyAgICAgICAgICAgIHsiQXNpYS9WbGFkaXZvc3RvayIsIFZMQVR9LAorICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9ZZWthdGVyaW5idXJnIiwgbmV3IFN0cmluZ1tdIHsiT3JhIGRpIEVrYXRlcmluYnVyZyIsICJZRUtUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JhIGVzdGl2YSBkaSBFa2F0ZXJpbmJ1cmciLCAiWUVLU1QifX0sCiAgICAgICAgICAgICB7IkFzaWEvWWVyZXZhbiIsIEFSTVR9LApAQCAtNjY5LDYgKzY3Myw3IEBACiAgICAgICAgICAgICB7IkV1cm9wZS9CcmF0aXNsYXZhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0JydXNzZWxzIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0J1ZGFwZXN0IiwgQ0VUfSwKKyAgICAgICAgICAgIHsiRXVyb3BlL0J1c2luZ2VuIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NoaXNpbmF1IiwgRUVUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NvcGVuaGFnZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvRHVibGluIiwgRFVCTElOfSwKQEAgLTc0OCw3ICs3NTMsNyBAQAogICAgICAgICAgICAgeyJKYW1haWNhIiwgRVNUfSwKICAgICAgICAgICAgIHsiSmFwYW4iLCBKU1R9LAogICAgICAgICAgICAgeyJLd2FqYWxlaW4iLCBNSFR9LAotICAgICAgICAgICAgeyJMaWJ5YSIsIEVFVH0sCisgICAgICAgICAgICB7IkxpYnlhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiTUVUIiwgbmV3IFN0cmluZ1tdIHsiT3JhIGRlbGwnRXVyb3BhIGNlbnRyYWxlIiwgIk1FVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yYSBlc3RpdmEgZGVsbCdFdXJvcGEgY2VudHJhbGUiLCAiTUVTVCJ9fSwKICAgICAgICAgICAgIHsiTWV4aWNvL0JhamFOb3J0ZSIsIFBTVH0sCmRpZmYgLS1naXQgYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfamEuamF2YSBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19qYS5qYXZhCmluZGV4IGU1MTdjMmMuLmE5NjE0MjkgMTAwNjQ0Ci0tLSBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19qYS5qYXZhCisrKyBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19qYS5qYXZhCkBAIC03NSw2ICs3NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NGUyZFx1OTBlOFx1MzBlOFx1MzBmY1x1MzBlZFx1MzBjM1x1MzBkMVx1NTkwZlx1NjY0Mlx1OTU5MyIsICJDRVNUIn07CiAgICAgICAgIFN0cmluZyBDSEFTVFtdID0gbmV3IFN0cmluZ1tdIHsiXHUzMGMxXHUzMGUzXHUzMGJmXHUzMGUwXHU2YTE5XHU2ZTk2XHU2NjQyIiwgIkNIQVNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTMwYzFcdTMwZTNcdTMwYmZcdTMwZTBcdTU5MGZcdTY2NDJcdTk1OTMiLCAiQ0hBRFQifTsKKyAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1MzBiMFx1MzBhMlx1MzBlMFx1NmExOVx1NmU5Nlx1NjY0MiIsICJDaFNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBiMFx1MzBhMlx1MzBlMFx1NTkwZlx1NjY0Mlx1OTU5MyIsICJDaERUIn07CiAgICAgICAgIFN0cmluZyBDSFVUW10gPSBuZXcgU3RyaW5nW10geyJDaHV1ayBUaW1lIiwgIkNIVVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2h1dWsgU3VtbWVyIFRpbWUiLCAiQ0hVU1QifTsKICAgICAgICAgU3RyaW5nIENJVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU0ZTJkXHU1OTJlXHUzMGE0XHUzMGYzXHUzMGM5XHUzMGNkXHUzMGI3XHUzMGEyXHU2NjQyXHU5NTkzIiwgIkNJVCIsCkBAIC0xNjEsNiArMTYzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvaG5wZWkgU3VtbWVyIFRpbWUiLCAiUE9OU1QifTsKICAgICAgICAgU3RyaW5nIFBTVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU1OTJhXHU1ZTczXHU2ZDBiXHU2YTE5XHU2ZTk2XHU2NjQyIiwgIlBTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NTkyYVx1NWU3M1x1NmQwYlx1NTkwZlx1NjY0Mlx1OTU5MyIsICJQRFQifTsKKyAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJcdTMwYjVcdTMwZTJcdTMwYTJcdTZhMTlcdTZlOTZcdTY2NDIiLCAiU1NUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTMwYjVcdTMwZTJcdTMwYTJcdTU5MGZcdTY2NDJcdTk1OTMiLCAiU0RUIn07CiAgICAgICAgIFN0cmluZyBTQVNUW10gPSBuZXcgU3RyaW5nW10geyJcdTUzNTdcdTMwYTJcdTMwZDVcdTMwZWFcdTMwYWJcdTZhMTlcdTZlOTZcdTY2NDIiLCAiU0FTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTUzNTdcdTMwYTJcdTMwZDVcdTMwZWFcdTMwYWJcdTU5MGZcdTY2NDJcdTk1OTMiLCAiU0FTVCJ9OwogICAgICAgICBTdHJpbmcgU0JUW10gPSBuZXcgU3RyaW5nW10geyJcdTMwYmRcdTMwZWRcdTMwZTJcdTMwZjNcdThhZjhcdTVjZjZcdTY2NDJcdTk1OTMiLCAiU0JUIiwKQEAgLTE3NSw2ICsxNzksMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMGM4XHUzMGViXHUzMGFmXHUzMGUxXHUzMGNiXHUzMGI5XHUzMGJmXHUzMGYzXHU1OTBmXHU2NjQyXHU5NTkzIiwgIlRNU1QifTsKICAgICAgICAgU3RyaW5nIFVMQVRbXT0gbmV3IFN0cmluZ1tdIHsiXHUzMGE2XHUzMGU5XHUzMGZjXHUzMGYzXHUzMGQwXHUzMGZjXHUzMGM4XHUzMGViXHU2NjQyXHU5NTkzIiwgIlVMQVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTMwYTZcdTMwZTlcdTMwZmNcdTMwZjNcdTMwZDBcdTMwZmNcdTMwYzhcdTMwZWJcdTU5MGZcdTY2NDJcdTk1OTMiLCAiVUxBU1QifTsKKyAgICAgICAgU3RyaW5nIFVUQ1tdID0gbmV3IFN0cmluZ1tdIHsiXHU1MzU0XHU1YjlhXHU0ZTE2XHU3NTRjXHU2NjQyIiwgIlVUQyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NTM1NFx1NWI5YVx1NGUxNlx1NzU0Y1x1NjY0MiIsICJVVEMifTsKKyAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiXHUzMGE2XHUzMGJhXHUzMGQ5XHUzMGFkXHUzMGI5XHUzMGJmXHUzMGYzXHU2NjQyXHU5NTkzIiwgIlVaVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBhNlx1MzBiYVx1MzBkOVx1MzBhZFx1MzBiOVx1MzBiZlx1MzBmM1x1NTkwZlx1NjY0Mlx1OTU5MyIsICJVWlNUIn07CisgICAgICAgIFN0cmluZyBWSUNUT1JJQVtdID0gbmV3IFN0cmluZ1tdIHsiXHU2NzcxXHU5MGU4XHU2YTE5XHU2ZTk2XHU2NjQyIChcdTMwZDNcdTMwYWZcdTMwYzhcdTMwZWFcdTMwYTIpIiwgIkVTVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU2NzcxXHU5MGU4XHU1OTBmXHU2NjQyXHU5NTkzIChcdTMwZDNcdTMwYWZcdTMwYzhcdTMwZWFcdTMwYTIpIiwgIkVTVCJ9OworICAgICAgICBTdHJpbmcgVkxBVFtdID0gbmV3IFN0cmluZ1tdIHsiXHUzMGE2XHUzMGU5XHUzMGI4XHUzMGFhXHUzMGI5XHUzMGM4XHUzMGFmXHU2NjQyXHU5NTkzIiwgIlZMQVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMGE2XHUzMGU5XHUzMGI4XHUzMGFhXHUzMGI5XHUzMGM4XHUzMGFmXHU1OTBmXHU2NjQyXHU5NTkzIiwgIlZMQVNUIn07CiAgICAgICAgIFN0cmluZyBXQVJUW10gPSBuZXcgU3RyaW5nW10geyJcdTg5N2ZcdTMwYTJcdTMwZWJcdTMwYmNcdTMwZjNcdTMwYzFcdTMwZjNcdTY2NDJcdTk1OTMiLCAiV0FSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTg5N2ZcdTMwYTJcdTMwZWJcdTMwYmNcdTMwZjNcdTMwYzFcdTMwZjNcdTU5MGZcdTY2NDJcdTk1OTMiLCAiV0FSU1QifTsKICAgICAgICAgU3RyaW5nIFdBVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU4OTdmXHUzMGEyXHUzMGQ1XHUzMGVhXHUzMGFiXHU2NjQyXHU5NTkzIiwgIldBVCIsCkBAIC0xODUsMTggKzE5NywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTg5N2ZcdTMwYTRcdTMwZjNcdTMwYzlcdTMwY2RcdTMwYjdcdTMwYTJcdTU5MGZcdTY2NDJcdTk1OTMiLCAiV0lTVCJ9OwogICAgICAgICBTdHJpbmcgV1NUX0FVU1tdID0gbmV3IFN0cmluZ1tdIHsiXHU4OTdmXHU5MGU4XHU2YTE5XHU2ZTk2XHU2NjQyIChcdTMwYWFcdTMwZmNcdTMwYjlcdTMwYzhcdTMwZTlcdTMwZWFcdTMwYTIpIiwgIldTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTg5N2ZcdTkwZThcdTU5MGZcdTY2NDJcdTk1OTMgKFx1MzBhYVx1MzBmY1x1MzBiOVx1MzBjOFx1MzBlOVx1MzBlYVx1MzBhMikiLCAiV1NUIn07Ci0gICAgICAgIFN0cmluZyBTQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiXHUzMGI1XHUzMGUyXHUzMGEyXHU2YTE5XHU2ZTk2XHU2NjQyIiwgIlNTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMGI1XHUzMGUyXHUzMGEyXHU1OTBmXHU2NjQyXHU5NTkzIiwgIlNEVCJ9OwogICAgICAgICBTdHJpbmcgV1NUX1NBTU9BW10gPSBuZXcgU3RyaW5nW10geyJcdTg5N2ZcdTMwYjVcdTMwZTJcdTMwYTJcdTY2NDJcdTk1OTMiLCAiV1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU4OTdmXHUzMGI1XHUzMGUyXHUzMGEyXHU1OTBmXHU2NjQyXHU5NTkzIiwgIldTRFQifTsKLSAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1MzBiMFx1MzBhMlx1MzBlMFx1NmExOVx1NmU5Nlx1NjY0MiIsICJDaFNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBiMFx1MzBhMlx1MzBlMFx1NTkwZlx1NjY0Mlx1OTU5MyIsICJDaERUIn07Ci0gICAgICAgIFN0cmluZyBWSUNUT1JJQVtdID0gbmV3IFN0cmluZ1tdIHsiXHU2NzcxXHU5MGU4XHU2YTE5XHU2ZTk2XHU2NjQyIChcdTMwZDNcdTMwYWZcdTMwYzhcdTMwZWFcdTMwYTIpIiwgIkVTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU2NzcxXHU5MGU4XHU1OTBmXHU2NjQyXHU5NTkzIChcdTMwZDNcdTMwYWZcdTMwYzhcdTMwZWFcdTMwYTIpIiwgIkVTVCJ9OwotICAgICAgICBTdHJpbmcgVVRDW10gPSBuZXcgU3RyaW5nW10geyJcdTUzNTRcdTViOWFcdTRlMTZcdTc1NGNcdTY2NDIiLCAiVVRDIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU1MzU0XHU1YjlhXHU0ZTE2XHU3NTRjXHU2NjQyIiwgIlVUQyJ9OwotICAgICAgICBTdHJpbmcgVVpUW10gPSBuZXcgU3RyaW5nW10geyJcdTMwYTZcdTMwYmFcdTMwZDlcdTMwYWRcdTMwYjlcdTMwYmZcdTMwZjNcdTY2NDJcdTk1OTMiLCAiVVpUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMGE2XHUzMGJhXHUzMGQ5XHUzMGFkXHUzMGI5XHUzMGJmXHUzMGYzXHU1OTBmXHU2NjQyXHU5NTkzIiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFlBS1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1MzBlNFx1MzBhZlx1MzBmY1x1MzBjNFx1MzBhZlx1NjY0Mlx1OTU5MyIsICJZQUtUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBlNFx1MzBhZlx1MzBmY1x1MzBjNFx1MzBhZlx1NTkwZlx1NjY0Mlx1OTU5MyIsICJZQUtTVCJ9OwogCiAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CiAgICAgICAgICAgICB7IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBQU1R9LApAQCAtMjg3LDcgKzI5MSw3IEBACiAgICAgICAgICAgICB7IkFmcmljYS9Qb3J0by1Ob3ZvIiwgV0FUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1Nhb19Ub21lIiwgR01UfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1RpbWJ1a3R1IiwgR01UfSwKLSAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBFRVR9LAorICAgICAgICAgICAgeyJBZnJpY2EvVHJpcG9saSIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UdW5pcyIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9XaW5kaG9layIsIFdBVH0sCiAgICAgICAgICAgICB7IkFtZXJpY2EvQWRhayIsIEhBU1R9LApAQCAtNTMzLDYgKzUzNyw3IEBACiAgICAgICAgICAgICB7IkFzaWEvS2FzaGdhciIsIENUVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0aG1hbmR1IiwgTlBUfSwKICAgICAgICAgICAgIHsiQXNpYS9LYXRtYW5kdSIsIE5QVH0sCisgICAgICAgICAgICB7IkFzaWEvS2hhbmR5Z2EiLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9Lb2xrYXRhIiwgSVNUfSwKICAgICAgICAgICAgIHsiQXNpYS9LcmFzbm95YXJzayIsIG5ldyBTdHJpbmdbXSB7Ilx1MzBhZlx1MzBlOVx1MzBiOVx1MzBjZVx1MzBlNFx1MzBlYlx1MzBiOVx1MzBhZlx1NjY0Mlx1OTU5MyIsICJLUkFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBhZlx1MzBlOVx1MzBiOVx1MzBjZVx1MzBlNFx1MzBlYlx1MzBiOVx1MzBhZlx1NTkwZlx1NjY0Mlx1OTU5MyIsICJLUkFTVCJ9fSwKQEAgLTU4MSwxMSArNTg2LDEwIEBACiAgICAgICAgICAgICB7IkFzaWEvVWxhYW5iYWF0YXIiLCBVTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9VbGFuX0JhdG9yIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVXJ1bXFpIiwgQ1RUfSwKKyAgICAgICAgICAgIHsiQXNpYS9Vc3QtTmVyYSIsIFZMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1ZpZW50aWFuZSIsIElDVH0sCi0gICAgICAgICAgICB7IkFzaWEvVmxhZGl2b3N0b2siLCBuZXcgU3RyaW5nW10geyJcdTMwYTZcdTMwZTlcdTMwYjhcdTMwYWFcdTMwYjlcdTMwYzhcdTMwYWZcdTY2NDJcdTk1OTMiLCAiVkxBVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTMwYTZcdTMwZTlcdTMwYjhcdTMwYWFcdTMwYjlcdTMwYzhcdTMwYWZcdTU5MGZcdTY2NDJcdTk1OTMiLCAiVkxBU1QifX0sCi0gICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIG5ldyBTdHJpbmdbXSB7Ilx1MzBlNFx1MzBhZlx1MzBmY1x1MzBjNFx1MzBhZlx1NjY0Mlx1OTU5MyIsICJZQUtUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMGU0XHUzMGFmXHUzMGZjXHUzMGM0XHUzMGFmXHU1OTBmXHU2NjQyXHU5NTkzIiwgIllBS1NUIn19LAorICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgVkxBVH0sCisgICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIFlBS1R9LAogICAgICAgICAgICAgeyJBc2lhL1lla2F0ZXJpbmJ1cmciLCBuZXcgU3RyaW5nW10geyJcdTMwYThcdTMwYWJcdTMwYzZcdTMwZWFcdTMwZjNcdTMwZDZcdTMwZWJcdTMwYjBcdTY2NDJcdTk1OTMiLCAiWUVLVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MzBhOFx1MzBhYlx1MzBjNlx1MzBlYVx1MzBmM1x1MzBkNlx1MzBlYlx1MzBiMFx1NTkwZlx1NjY0Mlx1OTU5MyIsICJZRUtTVCJ9fSwKICAgICAgICAgICAgIHsiQXNpYS9ZZXJldmFuIiwgQVJNVH0sCkBAIC02NjksNiArNjczLDcgQEAKICAgICAgICAgICAgIHsiRXVyb3BlL0JyYXRpc2xhdmEiLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQnJ1c3NlbHMiLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQnVkYXBlc3QiLCBDRVR9LAorICAgICAgICAgICAgeyJFdXJvcGUvQnVzaW5nZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQ2hpc2luYXUiLCBFRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvQ29wZW5oYWdlbiIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9EdWJsaW4iLCBEVUJMSU59LApAQCAtNzQ4LDcgKzc1Myw3IEBACiAgICAgICAgICAgICB7IkphbWFpY2EiLCBFU1R9LAogICAgICAgICAgICAgeyJKYXBhbiIsIEpTVH0sCiAgICAgICAgICAgICB7Ikt3YWphbGVpbiIsIE1IVH0sCi0gICAgICAgICAgICB7IkxpYnlhIiwgRUVUfSwKKyAgICAgICAgICAgIHsiTGlieWEiLCBDRVR9LAogICAgICAgICAgICAgeyJNRVQiLCBuZXcgU3RyaW5nW10geyJcdTRlMmRcdTkwZThcdTMwZThcdTMwZmNcdTMwZWRcdTMwYzNcdTMwZDFcdTY2NDJcdTk1OTMiLCAiTUVUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU0ZTJkXHU5MGU4XHUzMGU4XHUzMGZjXHUzMGVkXHUzMGMzXHUzMGQxXHU1OTBmXHU2NjQyXHU5NTkzIiwgIk1FU1QifX0sCiAgICAgICAgICAgICB7Ik1leGljby9CYWphTm9ydGUiLCBQU1R9LApkaWZmIC0tZ2l0IGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX2tvLmphdmEgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfa28uamF2YQppbmRleCA5NjM0OTM5Li44YjgyYTViIDEwMDY0NAotLS0gYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfa28uamF2YQorKysgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfa28uamF2YQpAQCAtNzUsNiArNzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWM5MTFcdWM1NTkgXHVjNzIwXHViN2ZkIFx1Yzc3Y1x1YWQxMVx1YzgwOFx1YzU3ZFx1YzJkY1x1YWMwNCIsICJDRVNUIn07CiAgICAgICAgIFN0cmluZyBDSEFTVFtdID0gbmV3IFN0cmluZ1tdIHsiQ2hhdGhhbSBcdWQ0NWNcdWM5MDBcdWMyZGMiLCAiQ0hBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoYXRoYW0gXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0IiwgIkNIQURUIn07CisgICAgICAgIFN0cmluZyBDaFNUW10gPSBuZXcgU3RyaW5nW10geyJcdWNjMjhcdWJhYThcdWI4NWMgXHVkNDVjXHVjOTAwXHVjMmRjIiwgIkNoU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVjYzI4XHViYWE4XHViODVjIFx1Yzc3Y1x1YWQxMVx1YzgwOFx1YzU3ZFx1YzJkY1x1YWMwNCIsICJDaERUIn07CiAgICAgICAgIFN0cmluZyBDSFVUW10gPSBuZXcgU3RyaW5nW10geyJDaHV1ayBUaW1lIiwgIkNIVVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2h1dWsgU3VtbWVyIFRpbWUiLCAiQ0hVU1QifTsKICAgICAgICAgU3RyaW5nIENJVFtdID0gbmV3IFN0cmluZ1tdIHsiXHVjOTExXHVjNTU5IFx1Yzc3OFx1YjNjNFx1YjEyNFx1YzJkY1x1YzU0NCBcdWMyZGNcdWFjMDQiLCAiQ0lUIiwKQEAgLTE2MSw2ICsxNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9obnBlaSBTdW1tZXIgVGltZSIsICJQT05TVCJ9OwogICAgICAgICBTdHJpbmcgUFNUW10gPSBuZXcgU3RyaW5nW10geyJcdWQwZGNcdWQzYzlcdWM1OTEgXHVkNDVjXHVjOTAwXHVjMmRjIiwgIlBTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZDBkY1x1ZDNjOVx1YzU5MSBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQiLCAiUERUIn07CisgICAgICAgIFN0cmluZyBTQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiXHVjMGFjXHViYWE4XHVjNTQ0IFx1ZDQ1Y1x1YzkwMFx1YzJkYyIsICJTU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1YzBhY1x1YmFhOFx1YzU0NCBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQiLCAiU0RUIn07CiAgICAgICAgIFN0cmluZyBTQVNUW10gPSBuZXcgU3RyaW5nW10geyJcdWIwYThcdWM1NDRcdWQ1MDRcdWI5YWNcdWNlNzQgXHVkNDVjXHVjOTAwXHVjMmRjIiwgIlNBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHViMGE4XHVjNTQ0XHVkNTA0XHViOWFjXHVjZTc0IFx1Yzc3Y1x1YWQxMVx1YzgwOFx1YzU3ZFx1YzJkY1x1YWMwNCIsICJTQVNUIn07CiAgICAgICAgIFN0cmluZyBTQlRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1YzE5NFx1Yjg1Y1x1YmFhYyBcdWFkNzBcdWIzYzQgXHVjMmRjXHVhYzA0IiwgIlNCVCIsCkBAIC0xNzUsNiArMTc5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZDIyY1x1Yjk3NFx1ZDA2Y1x1YmE1NFx1YjJjOFx1YzJhNFx1ZDBjNCBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQiLCAiVE1TVCJ9OwogICAgICAgICBTdHJpbmcgVUxBVFtdPSBuZXcgU3RyaW5nW10geyJcdWM2YjhcdWI3ODBcdWJjMTRcdWQwYzBcdWI5NzQgXHVjMmRjXHVhYzA0IiwgIlVMQVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWM2YjhcdWI3ODBcdWJjMTRcdWQwYzBcdWI5NzQgXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0IiwgIlVMQVNUIn07CisgICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1YzEzOFx1YWNjNCBcdWQ0NWNcdWM5MDBcdWMyZGMiLCAiVVRDIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVjMTM4XHVhY2M0IFx1ZDQ1Y1x1YzkwMFx1YzJkYyIsICJVVEMifTsKKyAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiXHVjNmIwXHVjOTg4XHViY2EwXHVkMGE0XHVjMmE0XHVkMGM0IFx1YzJkY1x1YWMwNCIsICJVWlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWM2YjBcdWM5ODhcdWJjYTBcdWQwYTRcdWMyYTRcdWQwYzQgXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0IiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFZJQ1RPUklBW10gPSBuZXcgU3RyaW5nW10geyJcdWIzZDlcdWJkODAgXHVkNDVjXHVjOTAwXHVjMmRjKFx1YmU0NVx1ZDFhMFx1YjlhY1x1YzU0NCkiLCAiRVNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWIzZDlcdWJkODAgXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0KFx1YmU0NVx1ZDFhMFx1YjlhY1x1YzU0NCkiLCAiRVNUIn07CisgICAgICAgIFN0cmluZyBWTEFUW10gPSBuZXcgU3RyaW5nW10geyJcdWJlMTRcdWI3N2NcdWI1MTRcdWJjZjRcdWMyYTRcdWQxYTEgXHVjMmRjXHVhYzA0IiwgIlZMQVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHViZTE0XHViNzdjXHViNTE0XHViY2Y0XHVjMmE0XHVkMWExIFx1Yzc3Y1x1YWQxMVx1YzgwOFx1YzU3ZFx1YzJkY1x1YWMwNCIsICJWTEFTVCJ9OwogICAgICAgICBTdHJpbmcgV0FSVFtdID0gbmV3IFN0cmluZ1tdIHsiXHVjMTFjXHViZDgwIFx1YzU0NFx1Yjk3NFx1ZDVlOFx1ZDJmMFx1YjA5OCBcdWMyZGNcdWFjMDQiLCAiV0FSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWMxMWNcdWJkODAgXHVjNTQ0XHViOTc0XHVkNWU4XHVkMmYwXHViMDk4IFx1Yzc3Y1x1YWQxMVx1YzgwOFx1YzU3ZFx1YzJkY1x1YWMwNCIsICJXQVJTVCJ9OwogICAgICAgICBTdHJpbmcgV0FUW10gPSBuZXcgU3RyaW5nW10geyJcdWMxMWNcdWJkODAgXHVjNTQ0XHVkNTA0XHViOWFjXHVjZTc0IFx1YzJkY1x1YWMwNCIsICJXQVQiLApAQCAtMTg1LDE4ICsxOTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVjMTFjXHVjNzc4XHViM2M0XHViMTI0XHVjMmRjXHVjNTQ0IFx1Yzc3Y1x1YWQxMVx1YzgwOFx1YzU3ZFx1YzJkY1x1YWMwNCIsICJXSVNUIn07CiAgICAgICAgIFN0cmluZyBXU1RfQVVTW10gPSBuZXcgU3RyaW5nW10geyJcdWMxMWNcdWJkODAgXHVkNDVjXHVjOTAwXHVjMmRjKFx1ZDYzOFx1YzhmYykiLCAiV1NUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1YzExY1x1YmQ4MCBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQoXHVkNjM4XHVjOGZjKSIsICJXU1QifTsKLSAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJcdWMwYWNcdWJhYThcdWM1NDQgXHVkNDVjXHVjOTAwXHVjMmRjIiwgIlNTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVjMGFjXHViYWE4XHVjNTQ0IFx1Yzc3Y1x1YWQxMVx1YzgwOFx1YzU3ZFx1YzJkY1x1YWMwNCIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFdTVF9TQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiXHVjMTFjXHVjMGFjXHViYWE4XHVjNTQ0IFx1YzJkY1x1YWMwNCIsICJXU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWMxMWNcdWMwYWNcdWJhYThcdWM1NDQgXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0IiwgIldTRFQifTsKLSAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1Y2MyOFx1YmFhOFx1Yjg1YyBcdWQ0NWNcdWM5MDBcdWMyZGMiLCAiQ2hTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWNjMjhcdWJhYThcdWI4NWMgXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0IiwgIkNoRFQifTsKLSAgICAgICAgU3RyaW5nIFZJQ1RPUklBW10gPSBuZXcgU3RyaW5nW10geyJcdWIzZDlcdWJkODAgXHVkNDVjXHVjOTAwXHVjMmRjKFx1YmU0NVx1ZDFhMFx1YjlhY1x1YzU0NCkiLCAiRVNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWIzZDlcdWJkODAgXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0KFx1YmU0NVx1ZDFhMFx1YjlhY1x1YzU0NCkiLCAiRVNUIn07Ci0gICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1YzEzOFx1YWNjNCBcdWQ0NWNcdWM5MDBcdWMyZGMiLCAiVVRDIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVjMTM4XHVhY2M0IFx1ZDQ1Y1x1YzkwMFx1YzJkYyIsICJVVEMifTsKLSAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiXHVjNmIwXHVjOTg4XHViY2EwXHVkMGE0XHVjMmE0XHVkMGM0IFx1YzJkY1x1YWMwNCIsICJVWlQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWM2YjBcdWM5ODhcdWJjYTBcdWQwYTRcdWMyYTRcdWQwYzQgXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0IiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFlBS1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1YzU3Y1x1Y2UyMFx1ZDA2YyBcdWMyZGNcdWFjMDQiLCAiWUFLVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWM1N2NcdWNlMjBcdWQwNmMgXHVjNzdjXHVhZDExXHVjODA4XHVjNTdkXHVjMmRjXHVhYzA0IiwgIllBS1NUIn07CiAKICAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKICAgICAgICAgICAgIHsiQW1lcmljYS9Mb3NfQW5nZWxlcyIsIFBTVH0sCkBAIC0yODcsNyArMjkxLDcgQEAKICAgICAgICAgICAgIHsiQWZyaWNhL1BvcnRvLU5vdm8iLCBXQVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvU2FvX1RvbWUiLCBHTVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvVGltYnVrdHUiLCBHTVR9LAotICAgICAgICAgICAgeyJBZnJpY2EvVHJpcG9saSIsIEVFVH0sCisgICAgICAgICAgICB7IkFmcmljYS9Ucmlwb2xpIiwgQ0VUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1R1bmlzIiwgQ0VUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1dpbmRob2VrIiwgV0FUfSwKICAgICAgICAgICAgIHsiQW1lcmljYS9BZGFrIiwgSEFTVH0sCkBAIC01MzMsNiArNTM3LDcgQEAKICAgICAgICAgICAgIHsiQXNpYS9LYXNoZ2FyIiwgQ1RUfSwKICAgICAgICAgICAgIHsiQXNpYS9LYXRobWFuZHUiLCBOUFR9LAogICAgICAgICAgICAgeyJBc2lhL0thdG1hbmR1IiwgTlBUfSwKKyAgICAgICAgICAgIHsiQXNpYS9LaGFuZHlnYSIsIFlBS1R9LAogICAgICAgICAgICAgeyJBc2lhL0tvbGthdGEiLCBJU1R9LAogICAgICAgICAgICAgeyJBc2lhL0tyYXNub3lhcnNrIiwgbmV3IFN0cmluZ1tdIHsiXHVkMDZjXHViNzdjXHVjMmE0XHViMTc4XHVjNTdjXHViOTc0XHVjMmE0XHVkMDZjIFx1YzJkY1x1YWMwNCIsICJLUkFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZDA2Y1x1Yjc3Y1x1YzJhNFx1YjE3OFx1YzU3Y1x1Yjk3NFx1YzJhNFx1ZDA2YyBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQiLCAiS1JBU1QifX0sCkBAIC01ODEsMTEgKzU4NiwxMCBAQAogICAgICAgICAgICAgeyJBc2lhL1VsYWFuYmFhdGFyIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVWxhbl9CYXRvciIsIFVMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1VydW1xaSIsIENUVH0sCisgICAgICAgICAgICB7IkFzaWEvVXN0LU5lcmEiLCBWTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9WaWVudGlhbmUiLCBJQ1R9LAotICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgbmV3IFN0cmluZ1tdIHsiXHViZTE0XHViNzdjXHViNTE0XHViY2Y0XHVjMmE0XHVkMWExIFx1YzJkY1x1YWMwNCIsICJWTEFUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1YmUxNFx1Yjc3Y1x1YjUxNFx1YmNmNFx1YzJhNFx1ZDFhMSBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQiLCAiVkxBU1QifX0sCi0gICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIG5ldyBTdHJpbmdbXSB7Ilx1YzU3Y1x1Y2UyMFx1ZDA2YyBcdWMyZGNcdWFjMDQiLCAiWUFLVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1YzU3Y1x1Y2UyMFx1ZDA2YyBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQiLCAiWUFLU1QifX0sCisgICAgICAgICAgICB7IkFzaWEvVmxhZGl2b3N0b2siLCBWTEFUfSwKKyAgICAgICAgICAgIHsiQXNpYS9ZYWt1dHNrIiwgWUFLVH0sCiAgICAgICAgICAgICB7IkFzaWEvWWVrYXRlcmluYnVyZyIsIG5ldyBTdHJpbmdbXSB7Ilx1YzYwOFx1Y2U3NFx1ZDE0Y1x1YjliMFx1YmM4NFx1YWRmOCBcdWMyZGNcdWFjMDQiLCAiWUVLVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1YzYwOFx1Y2U3NFx1ZDE0Y1x1YjliMFx1YmM4NFx1YWRmOCBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQiLCAiWUVLU1QifX0sCiAgICAgICAgICAgICB7IkFzaWEvWWVyZXZhbiIsIEFSTVR9LApAQCAtNjY5LDYgKzY3Myw3IEBACiAgICAgICAgICAgICB7IkV1cm9wZS9CcmF0aXNsYXZhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0JydXNzZWxzIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0J1ZGFwZXN0IiwgQ0VUfSwKKyAgICAgICAgICAgIHsiRXVyb3BlL0J1c2luZ2VuIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NoaXNpbmF1IiwgRUVUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NvcGVuaGFnZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvRHVibGluIiwgRFVCTElOfSwKQEAgLTc0OCw3ICs3NTMsNyBAQAogICAgICAgICAgICAgeyJKYW1haWNhIiwgRVNUfSwKICAgICAgICAgICAgIHsiSmFwYW4iLCBKU1R9LAogICAgICAgICAgICAgeyJLd2FqYWxlaW4iLCBNSFR9LAotICAgICAgICAgICAgeyJMaWJ5YSIsIEVFVH0sCisgICAgICAgICAgICB7IkxpYnlhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiTUVUIiwgbmV3IFN0cmluZ1tdIHsiXHVjOTExXHViZDgwIFx1YzcyMFx1YjdmZCBcdWMyZGNcdWFjMDQiLCAiTUVUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVjOTExXHViZDgwIFx1YzcyMFx1YjdmZCBcdWM3N2NcdWFkMTFcdWM4MDhcdWM1N2RcdWMyZGNcdWFjMDQiLCAiTUVTVCJ9fSwKICAgICAgICAgICAgIHsiTWV4aWNvL0JhamFOb3J0ZSIsIFBTVH0sCmRpZmYgLS1naXQgYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfcHRfQlIuamF2YSBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19wdF9CUi5qYXZhCmluZGV4IDliNjAyMTQuLjhkNTg3NGEgMTAwNjQ0Ci0tLSBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19wdF9CUi5qYXZhCisrKyBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19wdF9CUi5qYXZhCkBAIC03NSw2ICs3NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGEgRXVyb3BhIENlbnRyYWwiLCAiQ0VTVCJ9OwogICAgICAgICBTdHJpbmcgQ0hBU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkZ1c28gaG9yXHUwMGUxcmlvIHBhZHJcdTAwZTNvIGRlIENoYXRoYW0iLCAiQ0hBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvclx1MDBlMXJpbyBkZSBsdXogbmF0dXJhbCBkZSBDaGF0aGFtIiwgIkNIQURUIn07CisgICAgICAgIFN0cmluZyBDaFNUW10gPSBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBwYWRyXHUwMGUzbyBkZSBDaGFtb3JybyIsICJDaFNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvclx1MDBlMXJpbyBkZSBsdXogbmF0dXJhbCBkZSBDaGFtb3JybyIsICJDaERUIn07CiAgICAgICAgIFN0cmluZyBDSVRbXSA9IG5ldyBTdHJpbmdbXSB7IkZ1c28gaG9yXHUwMGUxcmlvIGRhIEluZG9uXHUwMGU5c2lhIENlbnRyYWwiLCAiQ0lUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBkYSBJbmRvblx1MDBlOXNpYSBDZW50cmFsIiwgIkNJU1QifTsKICAgICAgICAgU3RyaW5nIENMVFtdID0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZG8gQ2hpbGUiLCAiQ0xUIiwKQEAgLTE1OSw2ICsxNjEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBkZSBQb2hucGVpIiwgIlBPTlNUIn07CiAgICAgICAgIFN0cmluZyBQU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkZ1c28gaG9yXHUwMGUxcmlvIHBhZHJcdTAwZTNvIGRvIFBhY1x1MDBlZGZpY28iLCAiUFNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yXHUwMGUxcmlvIGRlIGx1eiBuYXR1cmFsIGRvIFBhY1x1MDBlZGZpY28iLCAiUERUIn07CisgICAgICAgIFN0cmluZyBTQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gcGFkclx1MDBlM28gZGUgU2Ftb2EiLCAiU1NUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIb3JcdTAwZTFyaW8gZGUgbHV6IG5hdHVyYWwgZGUgU2Ftb2EiLCAiU0RUIn07CiAgICAgICAgIFN0cmluZyBTQVNUW10gPSBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBwYWRyXHUwMGUzbyBkYSBcdTAwYzFmcmljYSBkbyBTdWwiLCAiU0FTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdXNvIGhvclx1MDBlMXJpbyBkZSB2ZXJcdTAwZTNvIGRhIFx1MDBjMWZyaWNhIGRvIFN1bCIsICJTQVNUIn07CiAgICAgICAgIFN0cmluZyBTQlRbXSA9IG5ldyBTdHJpbmdbXSB7IkZ1c28gaG9yXHUwMGUxcmlvIGRhcyBJbGhhcyBTYWxvbVx1MDBlM28iLCAiU0JUIiwKQEAgLTE3NSw2ICsxNzksMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGUgQ2h1dWsiLCAiQ0hVU1QifTsKICAgICAgICAgU3RyaW5nIFVMQVRbXT0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZGUgVWxhbiBCYXRvciIsICJVTEFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBkZSBVbGFuIEJhdG9yIiwgIlVMQVNUIn07CisgICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7IlRlbXBvIHVuaXZlcnNhbCBjb29yZGVuYWRvIiwgIlVUQyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRlbXBvIHVuaXZlcnNhbCBjb29yZGVuYWRvIiwgIlVUQyJ9OworICAgICAgICBTdHJpbmcgVVpUW10gPSBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBkbyBVemJlcXVpc3RcdTAwZTNvIiwgIlVaVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZG8gVXpiZXF1aXN0XHUwMGUzbyIsICJVWlNUIn07CisgICAgICAgIFN0cmluZyBWSUNUT1JJQVtdID0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gcGFkclx1MDBlM28gb3JpZW50YWwgKFZpY3RvcmlhKSIsICJFU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gb3JpZW50YWwgKFZpY3RvcmlhKSIsICJFU1QifTsKKyAgICAgICAgU3RyaW5nIFZMQVRbXSA9IG5ldyBTdHJpbmdbXSB7IkZ1c28gaG9yXHUwMGUxcmlvIGRlIFZsYWRpdm9zdG9rIiwgIlZMQVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBkZSBWbGFkaXZvc3RvayIsICJWTEFTVCJ9OworICAgICAgICBTdHJpbmcgV0FSVFtdID0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZGEgQXJnZW50aW5hIE9jaWRlbnRhbCIsICJXQVJUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGEgQXJnZW50aW5hIE9jaWRlbnRhbCIsICJXQVJTVCJ9OwogICAgICAgICBTdHJpbmcgV0FUW10gPSBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBkYSBcdTAwYzFmcmljYSBPY2lkZW50YWwiLCAiV0FUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBkYSBcdTAwYzFmcmljYSBPY2lkZW50YWwiLCAiV0FTVCJ9OwogICAgICAgICBTdHJpbmcgV0VUW10gPSBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBkYSBFdXJvcGEgT2NpZGVudGFsIiwgIldFVCIsCkBAIC0xODMsMjAgKzE5NywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdXNvIGhvclx1MDBlMXJpbyBkZSB2ZXJcdTAwZTNvIGRhIEluZG9uXHUwMGU5c2lhIE9jaWRlbnRhbCIsICJXSVNUIn07CiAgICAgICAgIFN0cmluZyBXU1RfQVVTW10gPSBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBwYWRyXHUwMGUzbyBvY2lkZW50YWwgKEF1c3RyXHUwMGUxbGlhKSIsICJXU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBvY2lkZW50YWwgKEF1c3RyXHUwMGUxbGlhKSIsICJXU1QifTsKLSAgICAgICAgU3RyaW5nIFNBTU9BW10gPSBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBwYWRyXHUwMGUzbyBkZSBTYW1vYSIsICJTU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkhvclx1MDBlMXJpbyBkZSBsdXogbmF0dXJhbCBkZSBTYW1vYSIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFdTVF9TQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZGUgU2Ftb2EgT2NpZGVudGFsIiwgIldTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGUgU2Ftb2EgT2NpZGVudGFsIiwgIldTRFQifTsKLSAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkZ1c28gaG9yXHUwMGUxcmlvIHBhZHJcdTAwZTNvIGRlIENoYW1vcnJvIiwgIkNoU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSG9yXHUwMGUxcmlvIGRlIGx1eiBuYXR1cmFsIGRlIENoYW1vcnJvIiwgIkNoRFQifTsKLSAgICAgICAgU3RyaW5nIFZJQ1RPUklBW10gPSBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBwYWRyXHUwMGUzbyBvcmllbnRhbCAoVmljdG9yaWEpIiwgIkVTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBvcmllbnRhbCAoVmljdG9yaWEpIiwgIkVTVCJ9OwotICAgICAgICBTdHJpbmcgVVRDW10gPSBuZXcgU3RyaW5nW10geyJUZW1wbyB1bml2ZXJzYWwgY29vcmRlbmFkbyIsICJVVEMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUZW1wbyB1bml2ZXJzYWwgY29vcmRlbmFkbyIsICJVVEMifTsKLSAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZG8gVXpiZXF1aXN0XHUwMGUzbyIsICJVWlQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdXNvIGhvclx1MDBlMXJpbyBkZSB2ZXJcdTAwZTNvIGRvIFV6YmVxdWlzdFx1MDBlM28iLCAiVVpTVCJ9OwotICAgICAgICBTdHJpbmcgV0FSVFtdID0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZGEgQXJnZW50aW5hIE9jaWRlbnRhbCIsICJXQVJUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGEgQXJnZW50aW5hIE9jaWRlbnRhbCIsICJXQVJTVCJ9OworICAgICAgICBTdHJpbmcgWUFLVFtdID0gbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZGUgWWFrdXRzayIsICJZQUtUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGUgWWFrdXRzayIsICJZQUtTVCJ9OwogCiAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CiAgICAgICAgICAgICB7IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBQU1R9LApAQCAtMjg3LDcgKzI5MSw3IEBACiAgICAgICAgICAgICB7IkFmcmljYS9Qb3J0by1Ob3ZvIiwgV0FUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1Nhb19Ub21lIiwgR01UfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1RpbWJ1a3R1IiwgR01UfSwKLSAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBFRVR9LAorICAgICAgICAgICAgeyJBZnJpY2EvVHJpcG9saSIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UdW5pcyIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9XaW5kaG9layIsIFdBVH0sCiAgICAgICAgICAgICB7IkFtZXJpY2EvQWRhayIsIEhBU1R9LApAQCAtNTMzLDYgKzUzNyw3IEBACiAgICAgICAgICAgICB7IkFzaWEvS2FzaGdhciIsIENUVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0aG1hbmR1IiwgTlBUfSwKICAgICAgICAgICAgIHsiQXNpYS9LYXRtYW5kdSIsIE5QVH0sCisgICAgICAgICAgICB7IkFzaWEvS2hhbmR5Z2EiLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9Lb2xrYXRhIiwgSVNUfSwKICAgICAgICAgICAgIHsiQXNpYS9LcmFzbm95YXJzayIsIG5ldyBTdHJpbmdbXSB7IkZ1c28gaG9yXHUwMGUxcmlvIGRlIEtyYXNub3lhcnNrIiwgIktSQVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBkZSBLcmFzbm95YXJzayIsICJLUkFTVCJ9fSwKQEAgLTU4MSwxMSArNTg2LDEwIEBACiAgICAgICAgICAgICB7IkFzaWEvVWxhYW5iYWF0YXIiLCBVTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9VbGFuX0JhdG9yIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVXJ1bXFpIiwgQ1RUfSwKKyAgICAgICAgICAgIHsiQXNpYS9Vc3QtTmVyYSIsIFZMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1ZpZW50aWFuZSIsIElDVH0sCi0gICAgICAgICAgICB7IkFzaWEvVmxhZGl2b3N0b2siLCBuZXcgU3RyaW5nW10geyJGdXNvIGhvclx1MDBlMXJpbyBkZSBWbGFkaXZvc3RvayIsICJWTEFUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGUgVmxhZGl2b3N0b2siLCAiVkxBU1QifX0sCi0gICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIG5ldyBTdHJpbmdbXSB7IkZ1c28gaG9yXHUwMGUxcmlvIGRlIFlha3V0c2siLCAiWUFLVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGUgWWFrdXRzayIsICJZQUtTVCJ9fSwKKyAgICAgICAgICAgIHsiQXNpYS9WbGFkaXZvc3RvayIsIFZMQVR9LAorICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9ZZWthdGVyaW5idXJnIiwgbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZGUgWWVrYXRlcmluYnVyZ28iLCAiWUVLVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1c28gaG9yXHUwMGUxcmlvIGRlIHZlclx1MDBlM28gZGUgWWVrYXRlcmluYnVyZ28iLCAiWUVLU1QifX0sCiAgICAgICAgICAgICB7IkFzaWEvWWVyZXZhbiIsIEFSTVR9LApAQCAtNjY5LDYgKzY3Myw3IEBACiAgICAgICAgICAgICB7IkV1cm9wZS9CcmF0aXNsYXZhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0JydXNzZWxzIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0J1ZGFwZXN0IiwgQ0VUfSwKKyAgICAgICAgICAgIHsiRXVyb3BlL0J1c2luZ2VuIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NoaXNpbmF1IiwgRUVUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NvcGVuaGFnZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvRHVibGluIiwgRFVCTElOfSwKQEAgLTc0OCw3ICs3NTMsNyBAQAogICAgICAgICAgICAgeyJKYW1haWNhIiwgRVNUfSwKICAgICAgICAgICAgIHsiSmFwYW4iLCBKU1R9LAogICAgICAgICAgICAgeyJLd2FqYWxlaW4iLCBNSFR9LAotICAgICAgICAgICAgeyJMaWJ5YSIsIEVFVH0sCisgICAgICAgICAgICB7IkxpYnlhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiTUVUIiwgbmV3IFN0cmluZ1tdIHsiRnVzbyBob3JcdTAwZTFyaW8gZGEgRXVyb3BhIE1cdTAwZTlkaWEiLCAiTUVUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVzbyBob3JcdTAwZTFyaW8gZGUgdmVyXHUwMGUzbyBkYSBFdXJvcGEgTVx1MDBlOWRpYSIsICJNRVNUIn19LAogICAgICAgICAgICAgeyJNZXhpY28vQmFqYU5vcnRlIiwgUFNUfSwKZGlmZiAtLWdpdCBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc19zdi5qYXZhIGIvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX3N2LmphdmEKaW5kZXggMTgyMzU5ZC4uOGNjYmQzNyAxMDA2NDQKLS0tIGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX3N2LmphdmEKKysrIGIvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX3N2LmphdmEKQEAgLTc1LDYgKzc1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2VudHJhbGV1cm9wZWlzayBzb21tYXJ0aWQiLCAiQ0VTVCJ9OwogICAgICAgICBTdHJpbmcgQ0hBU1RbXSA9IG5ldyBTdHJpbmdbXSB7IkNoYXRoYW0sIG5vcm1hbHRpZCIsICJDSEFTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hhdGhhbSwgc29tbWFydGlkIiwgIkNIQURUIn07CisgICAgICAgIFN0cmluZyBDaFNUW10gPSBuZXcgU3RyaW5nW10geyJDaGFtb3Jybywgbm9ybWFsdGlkIiwgIkNoU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hhbW9ycm8sIHNvbW1hcnRpZCIsICJDaERUIn07CiAgICAgICAgIFN0cmluZyBDSFVUW10gPSBuZXcgU3RyaW5nW10geyJDaHV1ayBUaW1lIiwgIkNIVVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2h1dWsgU3VtbWVyIFRpbWUiLCAiQ0hVU1QifTsKICAgICAgICAgU3RyaW5nIENJVFtdID0gbmV3IFN0cmluZ1tdIHsiQ2VudHJhbGluZG9uZXNpc2sgdGlkIiwgIkNJVCIsCkBAIC0xNjEsNiArMTYzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBvaG5wZWkgU3VtbWVyIFRpbWUiLCAiUE9OU1QifTsKICAgICAgICAgU3RyaW5nIFBTVFtdID0gbmV3IFN0cmluZ1tdIHsiU3RpbGxhIGhhdmV0LCBub3JtYWx0aWQiLCAiUFNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU3RpbGxhIGhhdmV0LCBzb21tYXJ0aWQiLCAiUERUIn07CisgICAgICAgIFN0cmluZyBTQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiU2Ftb2EsIG5vcm1hbHRpZCIsICJTU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhbW9hLCBzb21tYXJ0aWQiLCAiU0RUIn07CiAgICAgICAgIFN0cmluZyBTQVNUW10gPSBuZXcgU3RyaW5nW10geyJTeWRhZnJpa2EsIG5vcm1hbHRpZCIsICJTQVNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN5ZGFmcmlrYSwgc29tbWFydGlkIiwgIlNBU1QifTsKICAgICAgICAgU3RyaW5nIFNCVFtdID0gbmV3IFN0cmluZ1tdIHsiU2Fsb21vblx1MDBmNmFybmEsIG5vcm1hbHRpZCIsICJTQlQiLApAQCAtMTc1LDYgKzE3OSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUdXJrbWVuaXN0YW4sIHNvbW1hcnRpZCIsICJUTVNUIn07CiAgICAgICAgIFN0cmluZyBVTEFUW109IG5ldyBTdHJpbmdbXSB7IlVsYWFuYmFhdGFyLCBub3JtYWx0aWQiLCAiVUxBVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVsYWFuYmFhdGFyLCBzb21tYXJ0aWQiLCAiVUxBU1QifTsKKyAgICAgICAgU3RyaW5nIFVUQ1tdID0gbmV3IFN0cmluZ1tdIHsiS29vcmRpbmVyYWQgdW5pdmVyc2VsbCB0aWQiLCAiVVRDIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS29vcmRpbmVyYWQgdW5pdmVyc2VsbCB0aWQiLCAiVVRDIn07CisgICAgICAgIFN0cmluZyBVWlRbXSA9IG5ldyBTdHJpbmdbXSB7IlV6YmVraXN0YW4sIG5vcm1hbHRpZCIsICJVWlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVemJla2lzdGFuLCBzb21tYXJ0aWQiLCAiVVpTVCJ9OworICAgICAgICBTdHJpbmcgVklDVE9SSUFbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1MDBkNnN0bGlnIG5vcm1hbHRpZCAoVmljdG9yaWEpIiwgIkVTVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMGQ2c3RsaWcgc29tbWFydGlkIChWaWN0b3JpYSkiLCAiRVNUIn07CisgICAgICAgIFN0cmluZyBWTEFUW10gPSBuZXcgU3RyaW5nW10geyJWbGFkaXZvc3Rvaywgbm9ybWFsdGlkIiwgIlZMQVQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmxhZGl2b3N0b2ssIHNvbW1hcnRpZCIsICJWTEFTVCJ9OwogICAgICAgICBTdHJpbmcgV0FSVFtdID0gbmV3IFN0cmluZ1tdIHsiVlx1MDBlNHN0YXJnZW50aW5hLCBub3JtYWx0aWQiLCAiV0FSVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWXHUwMGU0c3RhcmdlbnRpbmEsIHNvbW1hcnRpZCIsICJXQVJTVCJ9OwogICAgICAgICBTdHJpbmcgV0FUW10gPSBuZXcgU3RyaW5nW10geyJWXHUwMGU0c3RhZnJpa2Fuc2sgdGlkIiwgIldBVCIsCkBAIC0xODUsMTggKzE5NywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWXHUwMGU0c3RpbmRvbmVzaXNrIHNvbW1hcnRpZCIsICJXSVNUIn07CiAgICAgICAgIFN0cmluZyBXU1RfQVVTW10gPSBuZXcgU3RyaW5nW10geyJWXHUwMGU0c3RsaWcgbm9ybWFsdGlkIChBdXN0cmFsaWVuKSIsICJXU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVlx1MDBlNHN0bGlnIHNvbW1hcnRpZCAoQXVzdHJhbGllbikiLCAiV1NUIn07Ci0gICAgICAgIFN0cmluZyBTQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiU2Ftb2EsIG5vcm1hbHRpZCIsICJTU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhbW9hLCBzb21tYXJ0aWQiLCAiU0RUIn07CiAgICAgICAgIFN0cmluZyBXU1RfU0FNT0FbXSA9IG5ldyBTdHJpbmdbXSB7IlZcdTAwZTRzdHNhbW9hbnNrIHRpZCIsICJXU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWXHUwMGU0c3RzYW1vYW5zayBzb21tYXJ0aWQiLCAiV1NEVCJ9OwotICAgICAgICBTdHJpbmcgQ2hTVFtdID0gbmV3IFN0cmluZ1tdIHsiQ2hhbW9ycm8sIG5vcm1hbHRpZCIsICJDaFNUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoYW1vcnJvLCBzb21tYXJ0aWQiLCAiQ2hEVCJ9OwotICAgICAgICBTdHJpbmcgVklDVE9SSUFbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1MDBkNnN0bGlnIG5vcm1hbHRpZCAoVmljdG9yaWEpIiwgIkVTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMGQ2c3RsaWcgc29tbWFydGlkIChWaWN0b3JpYSkiLCAiRVNUIn07Ci0gICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7Iktvb3JkaW5lcmFkIHVuaXZlcnNlbGwgdGlkIiwgIlVUQyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktvb3JkaW5lcmFkIHVuaXZlcnNlbGwgdGlkIiwgIlVUQyJ9OwotICAgICAgICBTdHJpbmcgVVpUW10gPSBuZXcgU3RyaW5nW10geyJVemJla2lzdGFuLCBub3JtYWx0aWQiLCAiVVpUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXpiZWtpc3Rhbiwgc29tbWFydGlkIiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFlBS1RbXSA9IG5ldyBTdHJpbmdbXSB7Ikpha3V0c2ssIG5vcm1hbHRpZCIsICJZQUtUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpha3V0c2ssIHNvbW1hcnRpZCIsICJZQUtTVCJ9OwogCiAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CiAgICAgICAgICAgICB7IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBQU1R9LApAQCAtMjg3LDcgKzI5MSw3IEBACiAgICAgICAgICAgICB7IkFmcmljYS9Qb3J0by1Ob3ZvIiwgV0FUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1Nhb19Ub21lIiwgR01UfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1RpbWJ1a3R1IiwgR01UfSwKLSAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBFRVR9LAorICAgICAgICAgICAgeyJBZnJpY2EvVHJpcG9saSIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UdW5pcyIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9XaW5kaG9layIsIFdBVH0sCiAgICAgICAgICAgICB7IkFtZXJpY2EvQWRhayIsIEhBU1R9LApAQCAtNTMzLDYgKzUzNyw3IEBACiAgICAgICAgICAgICB7IkFzaWEvS2FzaGdhciIsIENUVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0aG1hbmR1IiwgTlBUfSwKICAgICAgICAgICAgIHsiQXNpYS9LYXRtYW5kdSIsIE5QVH0sCisgICAgICAgICAgICB7IkFzaWEvS2hhbmR5Z2EiLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9Lb2xrYXRhIiwgSVNUfSwKICAgICAgICAgICAgIHsiQXNpYS9LcmFzbm95YXJzayIsIG5ldyBTdHJpbmdbXSB7IktyYXNub2phcnNrLCBub3JtYWx0aWQiLCAiS1JBVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLcmFzbm9qYXJzaywgc29tbWFydGlkIiwgIktSQVNUIn19LApAQCAtNTgxLDExICs1ODYsMTAgQEAKICAgICAgICAgICAgIHsiQXNpYS9VbGFhbmJhYXRhciIsIFVMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1VsYW5fQmF0b3IiLCBVTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9VcnVtcWkiLCBDVFR9LAorICAgICAgICAgICAgeyJBc2lhL1VzdC1OZXJhIiwgVkxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVmllbnRpYW5lIiwgSUNUfSwKLSAgICAgICAgICAgIHsiQXNpYS9WbGFkaXZvc3RvayIsIG5ldyBTdHJpbmdbXSB7IlZsYWRpdm9zdG9rLCBub3JtYWx0aWQiLCAiVkxBVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJWbGFkaXZvc3Rvaywgc29tbWFydGlkIiwgIlZMQVNUIn19LAotICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBuZXcgU3RyaW5nW10geyJKYWt1dHNrLCBub3JtYWx0aWQiLCAiWUFLVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkpha3V0c2ssIHNvbW1hcnRpZCIsICJZQUtTVCJ9fSwKKyAgICAgICAgICAgIHsiQXNpYS9WbGFkaXZvc3RvayIsIFZMQVR9LAorICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9ZZWthdGVyaW5idXJnIiwgbmV3IFN0cmluZ1tdIHsiSmVrYXRlcmluYnVyZywgbm9ybWFsdGlkIiwgIllFS1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJKZWthdGVyaW5idXJnLCBzb21tYXJ0aWQiLCAiWUVLU1QifX0sCiAgICAgICAgICAgICB7IkFzaWEvWWVyZXZhbiIsIEFSTVR9LApAQCAtNjY5LDYgKzY3Myw3IEBACiAgICAgICAgICAgICB7IkV1cm9wZS9CcmF0aXNsYXZhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0JydXNzZWxzIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0J1ZGFwZXN0IiwgQ0VUfSwKKyAgICAgICAgICAgIHsiRXVyb3BlL0J1c2luZ2VuIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NoaXNpbmF1IiwgRUVUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NvcGVuaGFnZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvRHVibGluIiwgRFVCTElOfSwKQEAgLTc0OCw3ICs3NTMsNyBAQAogICAgICAgICAgICAgeyJKYW1haWNhIiwgRVNUfSwKICAgICAgICAgICAgIHsiSmFwYW4iLCBKU1R9LAogICAgICAgICAgICAgeyJLd2FqYWxlaW4iLCBNSFR9LAotICAgICAgICAgICAgeyJMaWJ5YSIsIEVFVH0sCisgICAgICAgICAgICB7IkxpYnlhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiTUVUIiwgbmV3IFN0cmluZ1tdIHsiTWVsbGFuZXVyb3BlaXNrIHRpZCIsICJNRVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZWxsYW5ldXJvcGVpc2sgc29tbWFydGlkIiwgIk1FU1QifX0sCiAgICAgICAgICAgICB7Ik1leGljby9CYWphTm9ydGUiLCBQU1R9LApkaWZmIC0tZ2l0IGEvamRrL3NyYy9zaGFyZS9jbGFzc2VzL3N1bi91dGlsL3Jlc291cmNlcy9UaW1lWm9uZU5hbWVzX3poX0NOLmphdmEgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfemhfQ04uamF2YQppbmRleCBmYjlmNGJkLi42NTdmYWY1IDEwMDY0NAotLS0gYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfemhfQ04uamF2YQorKysgYi9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfemhfQ04uamF2YQpAQCAtNzUsNiArNzUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTRlMmRcdTZiMjdcdTU5MGZcdTRlZTRcdTY1ZjYiLCAiQ0VTVCJ9OwogICAgICAgICBTdHJpbmcgQ0hBU1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NjdlNVx1ODQyOFx1NTljNlx1NjgwN1x1NTFjNlx1NjVmNlx1OTVmNCIsICJDSEFTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU2N2U1XHU4NDI4XHU1OWM2XHU1OTBmXHU0ZWU0XHU2NWY2IiwgIkNIQURUIn07CisgICAgICAgIFN0cmluZyBDaFNUW10gPSBuZXcgU3RyaW5nW10geyJDaGFtb3JybyBcdTY4MDdcdTUxYzZcdTY1ZjZcdTk1ZjQiLCAiQ2hTVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGFtb3JybyBcdTU5MGZcdTRlZTRcdTY1ZjYiLCAiQ2hEVCJ9OwogICAgICAgICBTdHJpbmcgQ0hVVFtdID0gbmV3IFN0cmluZ1tdIHsiQ2h1dWsgVGltZSIsICJDSFVUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNodXVrIFN1bW1lciBUaW1lIiwgIkNIVVNUIn07CiAgICAgICAgIFN0cmluZyBDSVRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NGUyZFx1OTBlOFx1NTM3MFx1NWVhNlx1NWMzY1x1ODk3Zlx1NGU5YVx1NjVmNlx1OTVmNCIsICJDSVQiLApAQCAtMTYxLDYgKzE2Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQb2hucGVpIFN1bW1lciBUaW1lIiwgIlBPTlNUIn07CiAgICAgICAgIFN0cmluZyBQU1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NTkyYVx1NWU3M1x1NmQwYlx1NjgwN1x1NTFjNlx1NjVmNlx1OTVmNCIsICJQU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTU5MmFcdTVlNzNcdTZkMGJcdTU5MGZcdTRlZTRcdTY1ZjYiLCAiUERUIn07CisgICAgICAgIFN0cmluZyBTQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiXHU4NDI4XHU2NDY5XHU0ZTlhXHU3ZmE0XHU1YzliXHU2ODA3XHU1MWM2XHU2NWY2XHU5NWY0IiwgIlNTVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU4NDI4XHU2NDY5XHU0ZTlhXHU3ZmE0XHU1YzliXHU1OTBmXHU0ZWU0XHU2NWY2IiwgIlNEVCJ9OwogICAgICAgICBTdHJpbmcgU0FTVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU1MzU3XHU5NzVlXHU2ODA3XHU1MWM2XHU2NWY2XHU5NWY0IiwgIlNBU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU1MzU3XHU5NzVlXHU1OTBmXHU0ZWU0XHU2NWY2IiwgIlNBU1QifTsKICAgICAgICAgU3RyaW5nIFNCVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU2MjQwXHU3ZjU3XHU5NWU4XHU3ZmE0XHU1YzliXHU2NWY2XHU5NWY0IiwgIlNCVCIsCkBAIC0xNzUsNiArMTc5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NTcxZlx1NWU5M1x1NjZmY1x1NTkwZlx1NGVlNFx1NjVmNiIsICJUTVNUIn07CiAgICAgICAgIFN0cmluZyBVTEFUW109IG5ldyBTdHJpbmdbXSB7Ilx1NWU5M1x1NGYyNlx1NjVmNlx1OTVmNCIsICJVTEFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU1ZTkzXHU0ZjI2XHU1OTBmXHU0ZWU0XHU2NWY2IiwgIlVMQVNUIn07CisgICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NTM0Zlx1OGMwM1x1NGUxNlx1NzU0Y1x1NjVmNlx1OTVmNCIsICJVVEMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTUzNGZcdThjMDNcdTRlMTZcdTc1NGNcdTY1ZjZcdTk1ZjQiLCAiVVRDIn07CisgICAgICAgIFN0cmluZyBVWlRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NGU0Y1x1NTE3OVx1NTIyYlx1NTE0Ylx1NjVhZlx1NTc2Nlx1NjVmNlx1OTVmNCIsICJVWlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTRlNGNcdTUxNzlcdTUyMmJcdTUxNGJcdTY1YWZcdTU3NjZcdTU5MGZcdTRlZTRcdTY1ZjYiLCAiVVpTVCJ9OworICAgICAgICBTdHJpbmcgVklDVE9SSUFbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NGUxY1x1OTBlOFx1NjgwN1x1NTFjNlx1NjVmNlx1OTVmNFx1ZmYwOFx1N2VmNFx1NTkxYVx1NTIyOVx1NGU5YVx1ZmYwOSIsICJFU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NGUxY1x1OTBlOFx1NTkwZlx1NGVlNFx1NjVmNlx1ZmYwOFx1N2VmNFx1NTkxYVx1NTIyOVx1NGU5YVx1ZmYwOSIsICJFU1QifTsKKyAgICAgICAgU3RyaW5nIFZMQVRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NmQ3N1x1NTNjMlx1NWQzNFx1NjVmNlx1OTVmNCIsICJWTEFUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NmQ3N1x1NTNjMlx1NWQzNFx1NTkwZlx1NGVlNFx1NjVmNiIsICJWTEFTVCJ9OwogICAgICAgICBTdHJpbmcgV0FSVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU4OTdmXHU5NjNmXHU2ODM5XHU1ZWY3XHU2NWY2XHU5NWY0IiwgIldBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU4OTdmXHU5NjNmXHU2ODM5XHU1ZWY3XHU1OTBmXHU0ZWU0XHU2NWY2IiwgIldBUlNUIn07CiAgICAgICAgIFN0cmluZyBXQVRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1ODk3Zlx1OTc1ZVx1NjVmNlx1OTVmNCIsICJXQVQiLApAQCAtMTg1LDE4ICsxOTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU4OTdmXHU1MzcwXHU1ZWE2XHU1YzNjXHU4OTdmXHU0ZTlhXHU1OTBmXHU0ZWU0XHU2NWY2IiwgIldJU1QifTsKICAgICAgICAgU3RyaW5nIFdTVF9BVVNbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1ODk3Zlx1OTBlOFx1NjgwN1x1NTFjNlx1NjVmNlx1OTVmNFx1ZmYwOFx1NmZiM1x1NTkyN1x1NTIyOVx1NGU5YVx1ZmYwOSIsICJXU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU4OTdmXHU5MGU4XHU1OTBmXHU0ZWU0XHU2NWY2XHVmZjA4XHU2ZmIzXHU1OTI3XHU1MjI5XHU0ZTlhXHVmZjA5IiwgIldTVCJ9OwotICAgICAgICBTdHJpbmcgU0FNT0FbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1ODQyOFx1NjQ2OVx1NGU5YVx1N2ZhNFx1NWM5Ylx1NjgwN1x1NTFjNlx1NjVmNlx1OTVmNCIsICJTU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ODQyOFx1NjQ2OVx1NGU5YVx1N2ZhNFx1NWM5Ylx1NTkwZlx1NGVlNFx1NjVmNiIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFdTVF9TQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiXHU4OTdmXHU4NDI4XHU2NDY5XHU0ZTlhXHU2NWY2XHU5NWY0IiwgIldTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ODk3Zlx1ODQyOFx1NjQ2OVx1NGU5YVx1NTkwZlx1NGVlNFx1NjVmNiIsICJXU0RUIn07Ci0gICAgICAgIFN0cmluZyBDaFNUW10gPSBuZXcgU3RyaW5nW10geyJDaGFtb3JybyBcdTY4MDdcdTUxYzZcdTY1ZjZcdTk1ZjQiLCAiQ2hTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaGFtb3JybyBcdTU5MGZcdTRlZTRcdTY1ZjYiLCAiQ2hEVCJ9OwotICAgICAgICBTdHJpbmcgVklDVE9SSUFbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NGUxY1x1OTBlOFx1NjgwN1x1NTFjNlx1NjVmNlx1OTVmNFx1ZmYwOFx1N2VmNFx1NTkxYVx1NTIyOVx1NGU5YVx1ZmYwOSIsICJFU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NGUxY1x1OTBlOFx1NTkwZlx1NGVlNFx1NjVmNlx1ZmYwOFx1N2VmNFx1NTkxYVx1NTIyOVx1NGU5YVx1ZmYwOSIsICJFU1QifTsKLSAgICAgICAgU3RyaW5nIFVUQ1tdID0gbmV3IFN0cmluZ1tdIHsiXHU1MzRmXHU4YzAzXHU0ZTE2XHU3NTRjXHU2NWY2XHU5NWY0IiwgIlVUQyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NTM0Zlx1OGMwM1x1NGUxNlx1NzU0Y1x1NjVmNlx1OTVmNCIsICJVVEMifTsKLSAgICAgICAgU3RyaW5nIFVaVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU0ZTRjXHU1MTc5XHU1MjJiXHU1MTRiXHU2NWFmXHU1NzY2XHU2NWY2XHU5NWY0IiwgIlVaVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NGU0Y1x1NTE3OVx1NTIyYlx1NTE0Ylx1NjVhZlx1NTc2Nlx1NTkwZlx1NGVlNFx1NjVmNiIsICJVWlNUIn07CisgICAgICAgIFN0cmluZyBZQUtUW10gPSBuZXcgU3RyaW5nW10geyJcdTRlOWFcdTVlOTNcdTZiMjFcdTUxNGJcdTY1ZjZcdTk1ZjQiLCAiWUFLVCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTRlOWFcdTVlOTNcdTZiMjFcdTUxNGJcdTU5MGZcdTRlZTRcdTY1ZjYiLCAiWUFLU1QifTsKIAogICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10gewogICAgICAgICAgICAgeyJBbWVyaWNhL0xvc19BbmdlbGVzIiwgUFNUfSwKQEAgLTI4Nyw3ICsyOTEsNyBAQAogICAgICAgICAgICAgeyJBZnJpY2EvUG9ydG8tTm92byIsIFdBVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9TYW9fVG9tZSIsIEdNVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UaW1idWt0dSIsIEdNVH0sCi0gICAgICAgICAgICB7IkFmcmljYS9Ucmlwb2xpIiwgRUVUfSwKKyAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBDRVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvVHVuaXMiLCBDRVR9LAogICAgICAgICAgICAgeyJBZnJpY2EvV2luZGhvZWsiLCBXQVR9LAogICAgICAgICAgICAgeyJBbWVyaWNhL0FkYWsiLCBIQVNUfSwKQEAgLTUzMyw2ICs1MzcsNyBAQAogICAgICAgICAgICAgeyJBc2lhL0thc2hnYXIiLCBDVFR9LAogICAgICAgICAgICAgeyJBc2lhL0thdGhtYW5kdSIsIE5QVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0bWFuZHUiLCBOUFR9LAorICAgICAgICAgICAgeyJBc2lhL0toYW5keWdhIiwgWUFLVH0sCiAgICAgICAgICAgICB7IkFzaWEvS29sa2F0YSIsIElTVH0sCiAgICAgICAgICAgICB7IkFzaWEvS3Jhc25veWFyc2siLCBuZXcgU3RyaW5nW10geyJcdTUxNGJcdTYyYzlcdTY1YWZcdThiZmFcdTRlOWFcdTVjMTRcdTY1YWZcdTUxNGJcdTY1ZjZcdTk1ZjQiLCAiS1JBVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTUxNGJcdTYyYzlcdTY1YWZcdThiZmFcdTRlOWFcdTVjMTRcdTY1YWZcdTUxNGJcdTU5MGZcdTRlZTRcdTY1ZjYiLCAiS1JBU1QifX0sCkBAIC01ODEsMTEgKzU4NiwxMCBAQAogICAgICAgICAgICAgeyJBc2lhL1VsYWFuYmFhdGFyIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVWxhbl9CYXRvciIsIFVMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1VydW1xaSIsIENUVH0sCisgICAgICAgICAgICB7IkFzaWEvVXN0LU5lcmEiLCBWTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9WaWVudGlhbmUiLCBJQ1R9LAotICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgbmV3IFN0cmluZ1tdIHsiXHU2ZDc3XHU1M2MyXHU1ZDM0XHU2NWY2XHU5NWY0IiwgIlZMQVQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU2ZDc3XHU1M2MyXHU1ZDM0XHU1OTBmXHU0ZWU0XHU2NWY2IiwgIlZMQVNUIn19LAotICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBuZXcgU3RyaW5nW10geyJcdTRlOWFcdTVlOTNcdTZiMjFcdTUxNGJcdTY1ZjZcdTk1ZjQiLCAiWUFLVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NGU5YVx1NWU5M1x1NmIyMVx1NTE0Ylx1NTkwZlx1NGVlNFx1NjVmNiIsICJZQUtTVCJ9fSwKKyAgICAgICAgICAgIHsiQXNpYS9WbGFkaXZvc3RvayIsIFZMQVR9LAorICAgICAgICAgICAgeyJBc2lhL1lha3V0c2siLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9ZZWthdGVyaW5idXJnIiwgbmV3IFN0cmluZ1tdIHsiWWVrYXRlcmluYnVyZyBcdTY1ZjZcdTk1ZjQiLCAiWUVLVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllla2F0ZXJpbmJ1cmcgXHU1OTBmXHU0ZWU0XHU2NWY2IiwgIllFS1NUIn19LAogICAgICAgICAgICAgeyJBc2lhL1llcmV2YW4iLCBBUk1UfSwKQEAgLTY2OSw2ICs2NzMsNyBAQAogICAgICAgICAgICAgeyJFdXJvcGUvQnJhdGlzbGF2YSIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9CcnVzc2VscyIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9CdWRhcGVzdCIsIENFVH0sCisgICAgICAgICAgICB7IkV1cm9wZS9CdXNpbmdlbiIsIENFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9DaGlzaW5hdSIsIEVFVH0sCiAgICAgICAgICAgICB7IkV1cm9wZS9Db3BlbmhhZ2VuIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0R1YmxpbiIsIERVQkxJTn0sCkBAIC03NDgsNyArNzUzLDcgQEAKICAgICAgICAgICAgIHsiSmFtYWljYSIsIEVTVH0sCiAgICAgICAgICAgICB7IkphcGFuIiwgSlNUfSwKICAgICAgICAgICAgIHsiS3dhamFsZWluIiwgTUhUfSwKLSAgICAgICAgICAgIHsiTGlieWEiLCBFRVR9LAorICAgICAgICAgICAgeyJMaWJ5YSIsIENFVH0sCiAgICAgICAgICAgICB7Ik1FVCIsIG5ldyBTdHJpbmdbXSB7Ilx1NGUyZFx1NmIyN1x1NjVmNlx1OTVmNCIsICJNRVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTRlMmRcdTZiMjdcdTU5MGZcdTRlZTRcdTY1ZjYiLCAiTUVTVCJ9fSwKICAgICAgICAgICAgIHsiTWV4aWNvL0JhamFOb3J0ZSIsIFBTVH0sCmRpZmYgLS1naXQgYS9qZGsvc3JjL3NoYXJlL2NsYXNzZXMvc3VuL3V0aWwvcmVzb3VyY2VzL1RpbWVab25lTmFtZXNfemhfVFcuamF2YSBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc196aF9UVy5qYXZhCmluZGV4IGQxNzY2ODQuLjYzMTcwNDQgMTAwNjQ0Ci0tLSBhL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc196aF9UVy5qYXZhCisrKyBiL2pkay9zcmMvc2hhcmUvY2xhc3Nlcy9zdW4vdXRpbC9yZXNvdXJjZXMvVGltZVpvbmVOYW1lc196aF9UVy5qYXZhCkBAIC03NSw2ICs3NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NGUyZFx1NmI1MFx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyIsICJDRVNUIn07CiAgICAgICAgIFN0cmluZyBDSEFTVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU2N2U1XHU1NzY2XHU2YTE5XHU2ZTk2XHU2NjQyXHU5NTkzIiwgIkNIQVNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTY3ZTVcdTU3NjZcdTY1ZTVcdTUxNDlcdTdiYzBcdTdkMDRcdTY2NDJcdTk1OTMiLCAiQ0hBRFQifTsKKyAgICAgICAgU3RyaW5nIENoU1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NjdlNVx1ODNhYlx1NmQxYlx1NmExOVx1NmU5Nlx1NjY0Mlx1OTU5MyIsICJDaFNUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU2N2U1XHU4M2FiXHU2ZDFiXHU2NWU1XHU1MTQ5XHU3YmMwXHU3ZDA0XHU2NjQyXHU5NTkzIiwgIkNoRFQifTsKICAgICAgICAgU3RyaW5nIENIVVRbXSA9IG5ldyBTdHJpbmdbXSB7IkNodXVrIFRpbWUiLCAiQ0hVVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDaHV1ayBTdW1tZXIgVGltZSIsICJDSFVTVCJ9OwogICAgICAgICBTdHJpbmcgQ0lUW10gPSBuZXcgU3RyaW5nW10geyJcdTRlMmRcdTUzNzBcdTVlYTZcdTVjM2NcdTg5N2ZcdTRlOWVcdTY2NDJcdTk1OTMiLCAiQ0lUIiwKQEAgLTE2MSw2ICsxNjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUG9obnBlaSBTdW1tZXIgVGltZSIsICJQT05TVCJ9OwogICAgICAgICBTdHJpbmcgUFNUW10gPSBuZXcgU3RyaW5nW10geyJcdTU5MmFcdTVlNzNcdTZkMGJcdTZhMTlcdTZlOTZcdTY2NDJcdTk1OTMiLCAiUFNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU1OTJhXHU1ZTczXHU2ZDBiXHU2NWU1XHU1MTQ5XHU3YmMwXHU3ZDA0XHU2NjQyXHU5NTkzIiwgIlBEVCJ9OworICAgICAgICBTdHJpbmcgU0FNT0FbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1ODVhOVx1NjQ2OVx1NGU5ZVx1NmExOVx1NmU5Nlx1NjY0Mlx1OTU5MyIsICJTU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ODVhOVx1NjQ2OVx1NGU5ZVx1NjVlNVx1NTE0OVx1N2JjMFx1N2QwNFx1NjY0Mlx1OTU5MyIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFNBU1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NTM1N1x1OTc1ZVx1NmExOVx1NmU5Nlx1NjY0Mlx1OTU5MyIsICJTQVNUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NTM1N1x1OTc1ZVx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyIsICJTQVNUIn07CiAgICAgICAgIFN0cmluZyBTQlRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NjI0MFx1N2Y4NVx1OTU4MFx1N2ZhNFx1NWNmNlx1NjY0Mlx1OTU5MyIsICJTQlQiLApAQCAtMTc1LDcgKzE3OSwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTU3MWZcdTVlYWJcdTY2ZmNcdTU5MGZcdTRlZTRcdTY2NDJcdTk1OTMiLCAiVE1TVCJ9OwogICAgICAgICBTdHJpbmcgVUxBVFtdPSBuZXcgU3RyaW5nW10geyJcdTVlYWJcdTUwMmJcdTY2NDJcdTk1OTMiLCAiVUxBVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NWVhYlx1NTAyYlx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyIsICJVTEFTVCJ9OwotICAgICAgICAgIFN0cmluZyBXQVJUW10gPSBuZXcgU3RyaW5nW10geyJcdTg5N2ZcdTk2M2ZcdTY4MzlcdTVlZjdcdTY2NDJcdTk1OTMiLCAiV0FSVCIsCisgICAgICAgIFN0cmluZyBVVENbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NTM1NFx1OGFiZlx1NGUxNlx1NzU0Y1x1NjY0Mlx1OTU5MyIsICJVVEMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTUzNTRcdThhYmZcdTRlMTZcdTc1NGNcdTY2NDJcdTk1OTMiLCAiVVRDIn07CisgICAgICAgIFN0cmluZyBVWlRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NzBjZlx1ODMzMlx1NTIyNVx1NTE0Ylx1NjVhZlx1NTc2Nlx1NjY0Mlx1OTU5MyIsICJVWlQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTcwY2ZcdTgzMzJcdTUyMjVcdTUxNGJcdTY1YWZcdTU3NjZcdTU5MGZcdTRlZTRcdTY2NDJcdTk1OTMiLCAiVVpTVCJ9OworICAgICAgICBTdHJpbmcgVklDVE9SSUFbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1Njc3MVx1OTBlOFx1NmExOVx1NmU5Nlx1NjY0Mlx1OTU5MyAoXHU3ZGFkXHU1OTFhXHU1MjI5XHU0ZTllXHU5MGE2KSIsICJFU1QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1Njc3MVx1OTBlOFx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyAoXHU3ZGFkXHU1OTFhXHU1MjI5XHU0ZTllXHU5MGE2KSIsICJFU1QifTsKKyAgICAgICAgU3RyaW5nIFZMQVRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NmQ3N1x1NTNjM1x1NWQzNFx1NjY0Mlx1OTU5MyIsICJWTEFUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NmQ3N1x1NTNjM1x1NWQzNFx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyIsICJWTEFTVCJ9OworICAgICAgICBTdHJpbmcgV0FSVFtdID0gbmV3IFN0cmluZ1tdIHsiXHU4OTdmXHU5NjNmXHU2ODM5XHU1ZWY3XHU2NjQyXHU5NTkzIiwgIldBUlQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU4OTdmXHU5NjNmXHU2ODM5XHU1ZWY3XHU1OTBmXHU0ZWU0XHU2NjQyXHU5NTkzIiwgIldBUlNUIn07CiAgICAgICAgIFN0cmluZyBXQVRbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1ODk3Zlx1OTc1ZVx1NjY0Mlx1OTU5MyIsICJXQVQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTg5N2ZcdTk3NWVcdTU5MGZcdTRlZTRcdTY2NDJcdTk1OTMiLCAiV0FTVCJ9OwpAQCAtMTg1LDE4ICsxOTcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU4OTdmXHU1MzcwXHU1YzNjXHU1OTBmXHU0ZWU0XHU2NjQyXHU5NTkzIiwgIldJU1QifTsKICAgICAgICAgU3RyaW5nIFdTVF9BVVNbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1ODk3Zlx1NjViOVx1NmExOVx1NmU5Nlx1NjY0Mlx1OTU5MyAoXHU2ZmIzXHU1OTI3XHU1MjI5XHU0ZTllKSIsICJXU1QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU4OTdmXHU2NWI5XHU1OTBmXHU0ZWU0XHU2NjQyXHU5NTkzIChcdTZmYjNcdTU5MjdcdTUyMjlcdTRlOWUpIiwgIldTVCJ9OwotICAgICAgICBTdHJpbmcgU0FNT0FbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1ODVhOVx1NjQ2OVx1NGU5ZVx1NmExOVx1NmU5Nlx1NjY0Mlx1OTU5MyIsICJTU1QiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ODVhOVx1NjQ2OVx1NGU5ZVx1NjVlNVx1NTE0OVx1N2JjMFx1N2QwNFx1NjY0Mlx1OTU5MyIsICJTRFQifTsKICAgICAgICAgU3RyaW5nIFdTVF9TQU1PQVtdID0gbmV3IFN0cmluZ1tdIHsiXHU4OTdmXHU4NWE5XHU2NDY5XHU0ZTllXHU2NjQyXHU5NTkzIiwgIldTVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ODk3Zlx1ODVhOVx1NjQ2OVx1NGU5ZVx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyIsICJXU0RUIn07Ci0gICAgICAgIFN0cmluZyBDaFNUW10gPSBuZXcgU3RyaW5nW10geyJcdTY3ZTVcdTgzYWJcdTZkMWJcdTZhMTlcdTZlOTZcdTY2NDJcdTk1OTMiLCAiQ2hTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NjdlNVx1ODNhYlx1NmQxYlx1NjVlNVx1NTE0OVx1N2JjMFx1N2QwNFx1NjY0Mlx1OTU5MyIsICJDaERUIn07Ci0gICAgICAgIFN0cmluZyBWSUNUT1JJQVtdID0gbmV3IFN0cmluZ1tdIHsiXHU2NzcxXHU5MGU4XHU2YTE5XHU2ZTk2XHU2NjQyXHU5NTkzIChcdTdkYWRcdTU5MWFcdTUyMjlcdTRlOWVcdTkwYTYpIiwgIkVTVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU2NzcxXHU5MGU4XHU1OTBmXHU0ZWU0XHU2NjQyXHU5NTkzIChcdTdkYWRcdTU5MWFcdTUyMjlcdTRlOWVcdTkwYTYpIiwgIkVTVCJ9OwotICAgICAgICBTdHJpbmcgVVRDW10gPSBuZXcgU3RyaW5nW10geyJcdTUzNTRcdThhYmZcdTRlMTZcdTc1NGNcdTY2NDJcdTk1OTMiLCAiVVRDIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU1MzU0XHU4YWJmXHU0ZTE2XHU3NTRjXHU2NjQyXHU5NTkzIiwgIlVUQyJ9OwotICAgICAgICBTdHJpbmcgVVpUW10gPSBuZXcgU3RyaW5nW10geyJcdTcwY2ZcdTgzMzJcdTUyMjVcdTUxNGJcdTY1YWZcdTU3NjZcdTY2NDJcdTk1OTMiLCAiVVpUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU3MGNmXHU4MzMyXHU1MjI1XHU1MTRiXHU2NWFmXHU1NzY2XHU1OTBmXHU0ZWU0XHU2NjQyXHU5NTkzIiwgIlVaU1QifTsKKyAgICAgICAgU3RyaW5nIFlBS1RbXSA9IG5ldyBTdHJpbmdbXSB7Ilx1NGU5ZVx1NWVhYlx1NmIyMVx1NTE0Ylx1NjY0Mlx1OTU5MyIsICJZQUtUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NGU5ZVx1NWVhYlx1NmIyMVx1NTE0Ylx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyIsICJZQUtTVCJ9OwogCiAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CiAgICAgICAgICAgICB7IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBQU1R9LApAQCAtMjg3LDcgKzI5MSw3IEBACiAgICAgICAgICAgICB7IkFmcmljYS9Qb3J0by1Ob3ZvIiwgV0FUfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1Nhb19Ub21lIiwgR01UfSwKICAgICAgICAgICAgIHsiQWZyaWNhL1RpbWJ1a3R1IiwgR01UfSwKLSAgICAgICAgICAgIHsiQWZyaWNhL1RyaXBvbGkiLCBFRVR9LAorICAgICAgICAgICAgeyJBZnJpY2EvVHJpcG9saSIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9UdW5pcyIsIENFVH0sCiAgICAgICAgICAgICB7IkFmcmljYS9XaW5kaG9layIsIFdBVH0sCiAgICAgICAgICAgICB7IkFtZXJpY2EvQWRhayIsIEhBU1R9LApAQCAtNTMzLDYgKzUzNyw3IEBACiAgICAgICAgICAgICB7IkFzaWEvS2FzaGdhciIsIENUVH0sCiAgICAgICAgICAgICB7IkFzaWEvS2F0aG1hbmR1IiwgTlBUfSwKICAgICAgICAgICAgIHsiQXNpYS9LYXRtYW5kdSIsIE5QVH0sCisgICAgICAgICAgICB7IkFzaWEvS2hhbmR5Z2EiLCBZQUtUfSwKICAgICAgICAgICAgIHsiQXNpYS9Lb2xrYXRhIiwgSVNUfSwKICAgICAgICAgICAgIHsiQXNpYS9LcmFzbm95YXJzayIsIG5ldyBTdHJpbmdbXSB7Ilx1NTE0Ylx1NjJjOVx1NjVhZlx1OGFmZVx1NGU5ZVx1NzIzZVx1NjVhZlx1NTE0Ylx1NjY0Mlx1OTU5MyIsICJLUkFUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NTE0Ylx1NjJjOVx1NjVhZlx1OGFmZVx1NGU5ZVx1NzIzZVx1NjVhZlx1NTE0Ylx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyIsICJLUkFTVCJ9fSwKQEAgLTU4MiwxMSArNTg3LDEwIEBACiAgICAgICAgICAgICB7IkFzaWEvVWxhYW5iYWF0YXIiLCBVTEFUfSwKICAgICAgICAgICAgIHsiQXNpYS9VbGFuX0JhdG9yIiwgVUxBVH0sCiAgICAgICAgICAgICB7IkFzaWEvVXJ1bXFpIiwgQ1RUfSwKKyAgICAgICAgICAgIHsiQXNpYS9Vc3QtTmVyYSIsIFZMQVR9LAogICAgICAgICAgICAgeyJBc2lhL1ZpZW50aWFuZSIsIElDVH0sCi0gICAgICAgICAgICB7IkFzaWEvVmxhZGl2b3N0b2siLCBuZXcgU3RyaW5nW10geyJcdTZkNzdcdTUzYzNcdTVkMzRcdTY2NDJcdTk1OTMiLCAiVkxBVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTZkNzdcdTUzYzNcdTVkMzRcdTU5MGZcdTRlZTRcdTY2NDJcdTk1OTMiLCAiVkxBU1QifX0sCi0gICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIG5ldyBTdHJpbmdbXSB7Ilx1NGU5ZVx1NWVhYlx1NmIyMVx1NTE0Ylx1NjY0Mlx1OTU5MyIsICJZQUtUIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHU0ZTllXHU1ZWFiXHU2YjIxXHU1MTRiXHU1OTBmXHU0ZWU0XHU2NjQyXHU5NTkzIiwgIllBS1NUIn19LAorICAgICAgICAgICAgeyJBc2lhL1ZsYWRpdm9zdG9rIiwgVkxBVH0sCisgICAgICAgICAgICB7IkFzaWEvWWFrdXRzayIsIFlBS1R9LAogICAgICAgICAgICAgeyJBc2lhL1lla2F0ZXJpbmJ1cmciLCBuZXcgU3RyaW5nW10geyJZZWthdGVyaW5idXJnIFx1NjY0Mlx1OTU5MyIsICJZRUtUIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWVrYXRlcmluYnVyZyBcdTU5MGZcdTRlZTRcdTY2NDJcdTk1OTMiLCAiWUVLU1QifX0sCiAgICAgICAgICAgICB7IkFzaWEvWWVyZXZhbiIsIEFSTVR9LApAQCAtNjcwLDYgKzY3NCw3IEBACiAgICAgICAgICAgICB7IkV1cm9wZS9CcmF0aXNsYXZhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0JydXNzZWxzIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0J1ZGFwZXN0IiwgQ0VUfSwKKyAgICAgICAgICAgIHsiRXVyb3BlL0J1c2luZ2VuIiwgQ0VUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NoaXNpbmF1IiwgRUVUfSwKICAgICAgICAgICAgIHsiRXVyb3BlL0NvcGVuaGFnZW4iLCBDRVR9LAogICAgICAgICAgICAgeyJFdXJvcGUvRHVibGluIiwgRFVCTElOfSwKQEAgLTc0OSw3ICs3NTQsNyBAQAogICAgICAgICAgICAgeyJKYW1haWNhIiwgRVNUfSwKICAgICAgICAgICAgIHsiSmFwYW4iLCBKU1R9LAogICAgICAgICAgICAgeyJLd2FqYWxlaW4iLCBNSFR9LAotICAgICAgICAgICAgeyJMaWJ5YSIsIEVFVH0sCisgICAgICAgICAgICB7IkxpYnlhIiwgQ0VUfSwKICAgICAgICAgICAgIHsiTUVUIiwgbmV3IFN0cmluZ1tdIHsiXHU0ZTJkXHU2YjUwXHU2NjQyXHU5NTkzIiwgIk1FVCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1NGUyZFx1NmI1MFx1NTkwZlx1NGVlNFx1NjY0Mlx1OTU5MyIsICJNRVNUIn19LAogICAgICAgICAgICAgeyJNZXhpY28vQmFqYU5vcnRlIiwgUFNUfSwKZGlmZiAtLWdpdCBhL2pkay9zcmMvc29sYXJpcy9uYXRpdmUvamF2YS9uZXQvTmV0d29ya0ludGVyZmFjZS5jIGIvamRrL3NyYy9zb2xhcmlzL25hdGl2ZS9qYXZhL25ldC9OZXR3b3JrSW50ZXJmYWNlLmMKaW5kZXggYWQ2YTBiNi4uOWViZWEyYiAxMDA2NDQKLS0tIGEvamRrL3NyYy9zb2xhcmlzL25hdGl2ZS9qYXZhL25ldC9OZXR3b3JrSW50ZXJmYWNlLmMKKysrIGIvamRrL3NyYy9zb2xhcmlzL25hdGl2ZS9qYXZhL25ldC9OZXR3b3JrSW50ZXJmYWNlLmMKQEAgLTExMjksNyArMTEyOSw3IEBACiAgICAgdWludDhfdCBpcHY2YWRkclsxNl07CiAKICAgICBpZiAoKGYgPSBmb3BlbihfUEFUSF9QUk9DTkVUX0lGSU5FVDYsICJyIikpICE9IE5VTEwpIHsKLSAgICAgICAgd2hpbGUgKGZzY2FuZihmLCAiJTRzJTRzJTRzJTRzJTRzJTRzJTRzJTRzICUwMnggJTAyeCAlMDJ4ICUwMnggJTIwc1xuIiwKKyAgICAgICAgd2hpbGUgKGZzY2FuZihmLCAiJTRzJTRzJTRzJTRzJTRzJTRzJTRzJTRzICUwOHggJTAyeCAlMDJ4ICUwMnggJTIwc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyNnBbMF0sIGFkZHI2cFsxXSwgYWRkcjZwWzJdLCBhZGRyNnBbM10sIGFkZHI2cFs0XSwgYWRkcjZwWzVdLCBhZGRyNnBbNl0sIGFkZHI2cFs3XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAmaWZfaWR4LCAmcGxlbiwgJnNjb3BlLCAmZGFkX3N0YXR1cywgZGV2bmFtZSkgIT0gRU9GKSB7CiAKZGlmZiAtLWdpdCBhL2pkay90ZXN0L3N1bi9hd3QvZGF0YXRyYW5zZmVyL1N1cGxlbWVudGFyeUNoYXJhY3RlcnNUcmFuc2ZlclRlc3QuamF2YSBiL2pkay90ZXN0L3N1bi9hd3QvZGF0YXRyYW5zZmVyL1N1cGxlbWVudGFyeUNoYXJhY3RlcnNUcmFuc2ZlclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWY2MzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvamRrL3Rlc3Qvc3VuL2F3dC9kYXRhdHJhbnNmZXIvU3VwbGVtZW50YXJ5Q2hhcmFjdGVyc1RyYW5zZmVyVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEzLCBPcmFjbGUgYW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogRE8gTk9UIEFMVEVSIE9SIFJFTU9WRSBDT1BZUklHSFQgTk9USUNFUyBPUiBUSElTIEZJTEUgSEVBREVSLgorICoKKyAqIFRoaXMgY29kZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0CisgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMiBvbmx5LCBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisgKgorICogVGhpcyBjb2RlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCisgKiBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogdmVyc2lvbiAyIGZvciBtb3JlIGRldGFpbHMgKGEgY29weSBpcyBpbmNsdWRlZCBpbiB0aGUgTElDRU5TRSBmaWxlIHRoYXQKKyAqIGFjY29tcGFuaWVkIHRoaXMgY29kZSkuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbgorICogMiBhbG9uZyB3aXRoIHRoaXMgd29yazsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorICogSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorICoKKyAqIFBsZWFzZSBjb250YWN0IE9yYWNsZSwgNTAwIE9yYWNsZSBQYXJrd2F5LCBSZWR3b29kIFNob3JlcywgQ0EgOTQwNjUgVVNBCisgKiBvciB2aXNpdCB3d3cub3JhY2xlLmNvbSBpZiB5b3UgbmVlZCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9yIGhhdmUgYW55CisgKiBxdWVzdGlvbnMuCisgKi8KKworLyogQHRlc3QKKyAgIEBidWcgNjg3NzQ5NQorICAgQHN1bW1hcnkgSlRleHRGaWVsZCBhbmQgSlRleHRBcmVhIGRvZXMgbm90IHN1cHBvcnQgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzCisgICBAYXV0aG9yIEFsZXhhbmRlciBTY2hlcmJhdGl5CisgICBAcnVuIG1haW4gU3VwbGVtZW50YXJ5Q2hhcmFjdGVyc1RyYW5zZmVyVGVzdAorKi8KKworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLio7CitpbXBvcnQgc3VuLmF3dC5kYXRhdHJhbnNmZXIuKjsKK2ltcG9ydCBzdW4uYXd0LmRhdGF0cmFuc2Zlci5EYXRhVHJhbnNmZXJlci5SZWVuY29kaW5nSW5wdXRTdHJlYW07CisKK3B1YmxpYyBjbGFzcyBTdXBsZW1lbnRhcnlDaGFyYWN0ZXJzVHJhbnNmZXJUZXN0IHsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgbG9uZyBURVhUX0ZPUk1BVCA9IDEzOworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgRGF0YVRyYW5zZmVyZXIgZGF0YVRyYW5zZmVyZXIgPSBuZXcgVGVzdERhdGFUcmFuc2ZlcmVyKCk7CisgICAgICAgIGRhdGFUcmFuc2ZlcmVyLnJlZ2lzdGVyVGV4dEZsYXZvclByb3BlcnRpZXMoIlVOSUNPREUgVEVYVCIsICJ1dGYtMTZsZSIsICJcclxuIiwgIjIiKTsKKyAgICAgICAgQnl0ZVRyYW5zZmVyYWJsZSB0cmFuc2ZlcmFibGUgPSBuZXcgQnl0ZVRyYW5zZmVyYWJsZSgpOworICAgICAgICBSZWVuY29kaW5nSW5wdXRTdHJlYW0gaXMgPSBkYXRhVHJhbnNmZXJlci5uZXcgUmVlbmNvZGluZ0lucHV0U3RyZWFtKHRyYW5zZmVyYWJsZS5nZXRCeXRlSW5wdXRTdHJlYW0oKSwgVEVYVF9GT1JNQVQsCisgICAgICAgICAgICAgICAgRGF0YVRyYW5zZmVyZXIuZ2V0VGV4dENoYXJzZXQodHJhbnNmZXJhYmxlLmdldERhdGFGbGF2b3IoKSksIHRyYW5zZmVyYWJsZSk7CisKKyAgICAgICAgYnl0ZVtdIGJ5dGVzID0gdHJhbnNmZXJhYmxlLmdldEJ5dGVzKCk7CisgICAgICAgIGJ5dGVbXSByZXN1bHQgPSBuZXcgYnl0ZVtieXRlcy5sZW5ndGhdOworCisgICAgICAgIGlzLnJlYWQocmVzdWx0KTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoYnl0ZXNbaV0gIT0gcmVzdWx0W2ldKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNoYXJhY3RlcnMgYXJlIG5vdCBlcXVhbCEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfQorCisgICAgc3RhdGljIGNsYXNzIEJ5dGVUcmFuc2ZlcmFibGUgaW1wbGVtZW50cyBUcmFuc2ZlcmFibGUsIENsaXBib2FyZE93bmVyIHsKKworICAgICAgICBwcml2YXRlIGZpbmFsIERhdGFGbGF2b3IgZGF0YUZsYXZvcjsKKworICAgICAgICBwdWJsaWMgQnl0ZVRyYW5zZmVyYWJsZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAgICAgZGF0YUZsYXZvciA9IERhdGFGbGF2b3IuZ2V0VGV4dFBsYWluVW5pY29kZUZsYXZvcigpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIERhdGFGbGF2b3IgZ2V0RGF0YUZsYXZvcigpIHsKKyAgICAgICAgICAgIHJldHVybiBkYXRhRmxhdm9yOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIERhdGFGbGF2b3JbXSBnZXRUcmFuc2ZlckRhdGFGbGF2b3JzKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRhRmxhdm9yW117ZGF0YUZsYXZvcn07CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0RhdGFGbGF2b3JTdXBwb3J0ZWQoRGF0YUZsYXZvciBmbGF2b3IpIHsKKyAgICAgICAgICAgIHJldHVybiBmbGF2b3IuZXF1YWxzKGRhdGFGbGF2b3IpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJ5dGVbXSBnZXRCeXRlcygpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgYnl0ZVtdezk3LCAwLCA2NCwgLTQwLCAzMiwgLTM2LCA5OCwgMH07CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgSW5wdXRTdHJlYW0gZ2V0Qnl0ZUlucHV0U3RyZWFtKCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShnZXRCeXRlcygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBPYmplY3QgZ2V0VHJhbnNmZXJEYXRhKERhdGFGbGF2b3IgZmxhdm9yKQorICAgICAgICAgICAgICAgIHRocm93cyBVbnN1cHBvcnRlZEZsYXZvckV4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworICAgICAgICAgICAgaWYgKGZsYXZvci5lcXVhbHMoZGF0YUZsYXZvcikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0Qnl0ZUlucHV0U3RyZWFtKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZEZsYXZvckV4Y2VwdGlvbihmbGF2b3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgbG9zdE93bmVyc2hpcChDbGlwYm9hcmQgY2xpcGJvYXJkLCBUcmFuc2ZlcmFibGUgY29udGVudHMpIHsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBUZXN0RGF0YVRyYW5zZmVyZXIgZXh0ZW5kcyBEYXRhVHJhbnNmZXJlciB7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGVmYXVsdFVuaWNvZGVFbmNvZGluZygpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiTm90IHN1cHBvcnRlZCB5ZXQuIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNMb2NhbGVEZXBlbmRlbnRUZXh0Rm9ybWF0KGxvbmcgZm9ybWF0KSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNGaWxlRm9ybWF0KGxvbmcgZm9ybWF0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIk5vdCBzdXBwb3J0ZWQgeWV0LiIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzSW1hZ2VGb3JtYXQobG9uZyBmb3JtYXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiTm90IHN1cHBvcnRlZCB5ZXQuIik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIExvbmcgZ2V0Rm9ybWF0Rm9yTmF0aXZlQXNMb25nKFN0cmluZyBzdHIpIHsKKyAgICAgICAgICAgIHJldHVybiBURVhUX0ZPUk1BVDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgU3RyaW5nIGdldE5hdGl2ZUZvckZvcm1hdChsb25nIGZvcm1hdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJOb3Qgc3VwcG9ydGVkIHlldC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGNvbnZlcnRGaWxlTGlzdFRvQnl0ZXMoCisgICAgICAgICAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gZmlsZUxpc3QpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIk5vdCBzdXBwb3J0ZWQgeWV0LiIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBTdHJpbmdbXSBkcmFnUXVlcnlGaWxlKGJ5dGVbXSBieXRlcykgeworICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJOb3Qgc3VwcG9ydGVkIHlldC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgSW1hZ2UgcGxhdGZvcm1JbWFnZUJ5dGVzT3JTdHJlYW1Ub0ltYWdlKElucHV0U3RyZWFtIHN0ciwKKyAgICAgICAgICAgICAgICBieXRlW10gYnl0ZXMsIGxvbmcgZm9ybWF0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJOb3Qgc3VwcG9ydGVkIHlldC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgYnl0ZVtdIGltYWdlVG9QbGF0Zm9ybUJ5dGVzKEltYWdlIGltYWdlLCBsb25nIGZvcm1hdCkKKyAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJOb3Qgc3VwcG9ydGVkIHlldC4iKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgVG9vbGtpdFRocmVhZEJsb2NrZWRIYW5kbGVyIGdldFRvb2xraXRUaHJlYWRCbG9ja2VkSGFuZGxlcigpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigiTm90IHN1cHBvcnRlZCB5ZXQuIik7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvamRrL3Rlc3Qvc3VuL3NlY3VyaXR5L3Rvb2xzL2phcnNpZ25lci9UaW1lc3RhbXBDaGVjay5qYXZhIGIvamRrL3Rlc3Qvc3VuL3NlY3VyaXR5L3Rvb2xzL2phcnNpZ25lci9UaW1lc3RhbXBDaGVjay5qYXZhCmluZGV4IDIwOGY1MTkuLjg1YWIxNTYgMTAwNjQ0Ci0tLSBhL2pkay90ZXN0L3N1bi9zZWN1cml0eS90b29scy9qYXJzaWduZXIvVGltZXN0YW1wQ2hlY2suamF2YQorKysgYi9qZGsvdGVzdC9zdW4vc2VjdXJpdHkvdG9vbHMvamFyc2lnbmVyL1RpbWVzdGFtcENoZWNrLmphdmEKQEAgLTEyOSw2ICsxMjksOSBAQAogCiAgICAgICAgICAgICBEZXJPdXRwdXRTdHJlYW0gc3RhdHVzSW5mbyA9IG5ldyBEZXJPdXRwdXRTdHJlYW0oKTsKICAgICAgICAgICAgIHN0YXR1c0luZm8ucHV0SW50ZWdlcigwKTsKKyAgICAgICAgICAgIERlck91dHB1dFN0cmVhbSBzdGF0dXNTdHJpbmdzID0gbmV3IERlck91dHB1dFN0cmVhbSgpOworICAgICAgICAgICAgc3RhdHVzU3RyaW5ncy5wdXRVVEY4U3RyaW5nKCJTdGF0dXMgZm9yICIgKyBwYXRoKTsKKyAgICAgICAgICAgIHN0YXR1c0luZm8ud3JpdGUoRGVyVmFsdWUudGFnX1NlcXVlbmNlLCBzdGF0dXNTdHJpbmdzKTsKIAogICAgICAgICAgICAgRGVyT3V0cHV0U3RyZWFtIHRva2VuID0gbmV3IERlck91dHB1dFN0cmVhbSgpOwogICAgICAgICAgICAgQWxnb3JpdGhtSWRbXSBhbGdvcml0aG1zID0ge2FpZH07CmRpZmYgLS1naXQgYS9qZGsvdGVzdC90b29scy9sYXVuY2hlci9BcnJyZ2hzLmphdmEgYi9qZGsvdGVzdC90b29scy9sYXVuY2hlci9BcnJyZ2hzLmphdmEKaW5kZXggMjJhZjE4NS4uMmMyNGE5OSAxMDA2NDQKLS0tIGEvamRrL3Rlc3QvdG9vbHMvbGF1bmNoZXIvQXJycmdocy5qYXZhCisrKyBiL2pkay90ZXN0L3Rvb2xzL2xhdW5jaGVyL0FycnJnaHMuamF2YQpAQCAtMjcsNyArMjcsNyBAQAogICogICAgICA2ODk0NzE5IDY5NjgwNTMgNzE1MTQzNCA3MTQ2NDI0CiAgKiBAc3VtbWFyeSBBcmd1bWVudCBwYXJzaW5nIHZhbGlkYXRpb24uCiAgKiBAY29tcGlsZSAtWERpZ25vcmUuc3ltYm9sLmZpbGUgQXJycmdocy5qYXZhCi0gKiBAcnVuIG1haW4gQXJycmdocworICogQHJ1biBtYWluL290aGVydm0gQXJycmdocwogICovCiAKIGltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOwpAQCAtMjA1LDggKzIwNSw3IEBACiAgICAgICAgIC8vIGV4aXRpbmcgdGhlIHByb2Nlc3MgcHJlbWF0dXJlbHkgY2FuIHRlcm1pbmF0ZSB0aGUgc3RkZXJyLgogICAgICAgICBzY3JhdGNocGFkLmFkZChqYXZhQ21kICsgIiAtdmVyc2lvbiAiICsgaW5BcmdzKTsKICAgICAgICAgRmlsZSBiYXRGaWxlID0gbmV3IEZpbGUoImF0ZXN0LmJhdCIpOwotICAgICAgICBqYXZhLm5pby5maWxlLkZpbGVzLmRlbGV0ZUlmRXhpc3RzKGJhdEZpbGUudG9QYXRoKCkpOwotICAgICAgICBjcmVhdGVGaWxlKGJhdEZpbGUsIHNjcmF0Y2hwYWQpOworICAgICAgICBjcmVhdGVBRmlsZShiYXRGaWxlLCBzY3JhdGNocGFkKTsKIAogICAgICAgICBUZXN0UmVzdWx0IHRyID0gZG9FeGVjKGJhdEZpbGUuZ2V0TmFtZSgpKTsKIApkaWZmIC0tZ2l0IGEvamRrL3Rlc3QvdG9vbHMvbGF1bmNoZXIvVGVzdEhlbHBlci5qYXZhIGIvamRrL3Rlc3QvdG9vbHMvbGF1bmNoZXIvVGVzdEhlbHBlci5qYXZhCmluZGV4IDBiMmI3MjAuLmI0OTkwMjYgMTAwNjQ0Ci0tLSBhL2pkay90ZXN0L3Rvb2xzL2xhdW5jaGVyL1Rlc3RIZWxwZXIuamF2YQorKysgYi9qZGsvdGVzdC90b29scy9sYXVuY2hlci9UZXN0SGVscGVyLmphdmEKQEAgLTMzMiw2ICszMzIsNTEgQEAKICAgICAgICAgRmlsZXMuY29weShzcmMudG9QYXRoKCksIGRzdC50b1BhdGgoKSwgQ09QWV9BVFRSSUJVVEVTLCBSRVBMQUNFX0VYSVNUSU5HKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBBdHRlbXB0IHRvIGNyZWF0ZSBhIGZpbGUgYXQgdGhlIGdpdmVuIGxvY2F0aW9uLiBJZiBhbiBJT0V4Y2VwdGlvbgorICAgICAqIG9jY3VycyB0aGVuIGJhY2sgb2ZmIGZvciBhIG1vbWVudCBhbmQgdHJ5IGFnYWluLiBXaGVuIGEgbnVtYmVyIG9mCisgICAgICogYXR0ZW1wdHMgZmFpbCwgZ2l2ZSB1cCBhbmQgdGhyb3cgYW4gZXhjZXB0aW9uLgorICAgICAqLworICAgIHZvaWQgY3JlYXRlQUZpbGUoRmlsZSBhRmlsZSwgTGlzdDxTdHJpbmc+IGNvbnRlbnRzKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBJT0V4Y2VwdGlvbiBjYXVzZSA9IG51bGw7CisgICAgICAgIGZvciAoaW50IGF0dGVtcHRzID0gMDsgYXR0ZW1wdHMgPCAxMDsgYXR0ZW1wdHMrKykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBGaWxlcy53cml0ZShhRmlsZS5nZXRBYnNvbHV0ZUZpbGUoKS50b1BhdGgoKSwgY29udGVudHMsCisgICAgICAgICAgICAgICAgICAgIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSwgQ1JFQVRFLCBUUlVOQ0FURV9FWElTVElORywgV1JJVEUpOworICAgICAgICAgICAgICAgIGlmIChjYXVzZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIHJlcG9ydCBhdHRlbXB0cyBhbmQgZXJyb3JzIHRoYXQgd2VyZSBlbmNvdW50ZXJlZAorICAgICAgICAgICAgICAgICAgICAgKiBmb3IgZGlhZ25vc3RpYyBwdXJwb3NlcworICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKCJDcmVhdGVkIGJhdGNoIGZpbGUgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYUZpbGUgKyAiIGluICIgKyAoYXR0ZW1wdHMgKyAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhdHRlbXB0cyIpOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkVycm9ycyBlbmNvdW50ZXJlZDogIiArIGNhdXNlKTsKKyAgICAgICAgICAgICAgICAgICAgY2F1c2UucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGlvZSkgeworICAgICAgICAgICAgICAgIGlmIChjYXVzZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGNoYWluIHRoZSBleGNlcHRpb25zIHNvIHRoZXkgYWxsIGdldCByZXBvcnRlZCBmb3IgZGlhZ25vc3RpY3MKKyAgICAgICAgICAgICAgICAgICAgY2F1c2UuYWRkU3VwcHJlc3NlZChpb2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNhdXNlID0gaW9lOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoNTAwKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGllKSB7CisgICAgICAgICAgICAgICAgaWYgKGNhdXNlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gY2F1c2Ugc2hvdWxkIGFsd2F5IGJlIG5vbi1udWxsIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgaWUuYWRkU3VwcHJlc3NlZChjYXVzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJJbnRlcnJ1cHRlZCB3aGlsZSBjcmVhdGluZyBiYXRjaCBmaWxlIiwgaWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJVbmFibGUgdG8gY3JlYXRlIGJhdGNoIGZpbGUiLCBjYXVzZSk7CisgICAgfQorCiAgICAgc3RhdGljIHZvaWQgY3JlYXRlRmlsZShGaWxlIG91dEZpbGUsIExpc3Q8U3RyaW5nPiBjb250ZW50KSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgICBGaWxlcy53cml0ZShvdXRGaWxlLmdldEFic29sdXRlRmlsZSgpLnRvUGF0aCgpLCBjb250ZW50LAogICAgICAgICAgICAgICAgIENoYXJzZXQuZGVmYXVsdENoYXJzZXQoKSwgQ1JFQVRFX05FVyk7CmRpZmYgLS1naXQgYS9sYW5ndG9vbHMvLmhndGFncyBiL2xhbmd0b29scy8uaGd0YWdzCmluZGV4IDA4MGZjODYuLmJkYWE5YmUgMTAwNjQ0Ci0tLSBhL2xhbmd0b29scy8uaGd0YWdzCisrKyBiL2xhbmd0b29scy8uaGd0YWdzCkBAIC0yNTcsMyArMjU3LDQgQEAKIGVkZmNmMDdjMjg3N2FmOGVmYTY0OWU1MTQxNjdiMjJiN2Y2ZmMwYjQgamRrN3UxNy1iMDEKIDI3ODJhMWM2MGZhZjc1ODVkZWUwYWYwZWY1ODVhZWVkMzI4OGU1MjEgamRrN3UxNy1iMDIKIGNmODBjNTQ1NDM0Y2ZlNDQwMzRlNjY3MDc5NjczY2U0MmNjOWNkYmYgamRrN3UxNC1iMTYKK2FlY2Q1OGYyNWQ3ZjIxODI3YWUxYjAyMGFlOGNmYjQ0ODU3YzQzOWYgamRrN3UxNC1iMTcK