Name: series-workflowxwv96 Phase: Failed StartedAt: 2026-06-26 21:59:07 +0000 UTC FinishedAt: 2026-06-26 22:06:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxwv96[0] Phase: Succeeded StartedAt: 2026-06-26 21:59:07 +0000 UTC FinishedAt: 2026-06-26 22:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxwv96[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 21:59:07 +0000 UTC FinishedAt: 2026-06-26 22:06:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgYWRhcHRzIGV4aXN0aW5nIFJ1c3QgY29kZSAobGlrZSBgUGFnZWAgYW5kIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIpIHRvIHVzZSB0aGVzZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IGRyaXZlcnMsIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjY0MzBhNzEwMmVmNzRlOWQ0YjJlZDQyNDdkOGZmMTVmNWVhZjZlNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjA2OjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuaW5kZXggZTU0YTkwZTYyNDAyYTQuLjc5NDFlYjg1YjRlZjQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcbkBAIC0zMyw3ICYjNDM7MzMsNyBAQFxuICAgICBzeW5jOjp7YXJlZjo6QVJlZiwgTXV0ZXgsIFNwaW5Mb2NrfSxcbiAgICAgdGFzazo6UGlkLFxuICAgICB0cmFuc211dGU6OkZyb21CeXRlcyxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcbiYjNDM7ICAgIHR5cGVzOjp7T3BhcXVlLCBPd25lZH0sXG4gICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlcixcbiB9O1xuIFxuQEAgLTE5OCw3ICYjNDM7MTk4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgSW5uZXIge31cbiAjW3JlcHIoQyldXG4gc3RydWN0IFBhZ2VJbmZvIHtcbiAgICAgbHJ1OiBiaW5kaW5nczo6bGlzdF9oZWFkLFxuLSAgICBwYWdlOiBPcHRpb25cdTAwM2NQYWdlXHUwMDNlLFxuJiM0MzsgICAgcGFnZTogT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlLFxuICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsXG4gfVxuIFxuQEAgLTIwNiw3ICYjNDM7MjA2LDcgQEAgaW1wbCBQYWdlSW5mbyB7XG4gICAgIC8vLyAjIFNhZmV0eVxuICAgICAvLy9cbiAgICAgLy8vIFRoZSBjYWxsZXIgZW5zdXJlcyB0aGF0IHdyaXRpbmcgdG8gYG1lLnBhZ2VgIGlzIG9rLCBhbmQgdGhhdCB0aGUgcGFnZSBpcyBub3QgY3VycmVudGx5IHNldC5cbi0gICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBQYWdlKSB7XG4mIzQzOyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkXHUwMDNjUGFnZVx1MDAzZSkge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cbiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcbiBcbkBAIC0yMjksMTMgJiM0MzsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlXHUwMDNjJiMzOTthXHUwMDNlKG1lOiAqY29uc3QgUGFnZUluZm8pIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2JiMzOTthIFBhZ2VcdTAwM2Uge1xuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBjb25zdCAoKm1lKS5wYWdlIH07XG4gXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIGZvciByZWFkaW5nLlxuLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH1cbiYjNDM7ICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfZGVyZWYoKSB9XG4gICAgIH1cbiBcbiAgICAgLy8vICMgU2FmZXR5XG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2sgZm9yIHRoZSBkdXJhdGlvbiBvZiAmIzM5O2EuXG4tICAgIHVuc2FmZSBmbiB0YWtlX3BhZ2UobWU6ICptdXQgUGFnZUluZm8pIC1cdTAwM2UgT3B0aW9uXHUwMDNjUGFnZVx1MDAzZSB7XG4mIzQzOyAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtXHUwMDNlIE9wdGlvblx1MDAzY093bmVkXHUwMDNjUGFnZVx1MDAzZVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoaXMgcG9pbnRlciBvZmZzZXQgaXMgaW4gYm91bmRzLlxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xuIFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xuaW5kZXggY2Q0MjAzZjI3YWVkMDYuLmM3YjliMDY5Y2Y3NWRkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbkBAIC0xNjksNyAmIzQzOzE2OSw3IEBAIHVuc2FmZSBmbiByZWFsbG9jKFxuIH1cbiBcbiBpbXBsIFZtYWxsb2Mge1xuLSAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BwYWdlOjpCb3Jyb3dlZFBhZ2VgXS5cbiYjNDM7ICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2UuXG4gICAgIC8vL1xuICAgICAvLy8gIyBFeGFtcGxlc1xuICAgICAvLy9cbkBAIC0yMDIsMjAgJiM0MzsyMDIsMTcgQEAgaW1wbCBWbWFsbG9jIHtcbiAgICAgLy8vXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiAgICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgYCYjMzk7YWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZVx1MDAzYyYjMzk7YVx1MDAzZShwdHI6IE5vbk51bGxcdTAwM2N1OFx1MDAzZSkgLVx1MDAzZSBwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2Uge1xuJiM0MzsgICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXHUwMDNjJiMzOTthXHUwMDNlKHB0cjogTm9uTnVsbFx1MDAzY3U4XHUwMDNlKSAtXHUwMDNlIFx1MDAyNiYjMzk7YSBwYWdlOjpQYWdlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTtcbiBcbi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXJcbi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcbi1cbiAgICAgICAgIC8vIFNBRkVUWTpcbi0gICAgICAgIC8vIC0gYHBhZ2VgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAsIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2Zcbi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cbi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZlxuLSAgICAgICAgLy8gICBgJiMzOTthYC5cbi0gICAgICAgIHVuc2FmZSB7IHBhZ2U6OkJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuJiM0MzsgICAgICAgIC8vIC0gYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkLCBub24tbnVsbCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuJiM0MzsgICAgICAgIC8vICAgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb25cbiYjNDM7ICAgICAgICAvLyAgIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLlxuJiM0MzsgICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCwgYW5kIGhlbmNlIHRoZSBgc3RydWN0IHBhZ2VgLCBpc1xuJiM0MzsgICAgICAgIC8vICAgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYCYjMzk7YWAuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnBhZ2UuY2FzdCgpIH1cbiAgICAgfVxuIH1cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5pbmRleCAwMmZkYTNlYTVjYWU2Ni4uOGRjYzE2ZWQ4OTg5MzEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcbkBAIC05LDcgJiM0Mzs5LDcgQEBcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4gXG4tLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiYjNDM7Ly8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2VzIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiAvLy9cbiAvLy8gIyBHdWFyYW50ZWVzXG4gLy8vXG5AQCAtMjgsMTEgJiM0MzsyOCwxMSBAQCBwdWIgc3RydWN0IFZtYWxsb2NQYWdlSXRlclx1MDAzYyYjMzk7YVx1MDAzZSB7XG4gICAgIHNpemU6IHVzaXplLFxuICAgICAvLy8gVGhlIGN1cnJlbnQgcGFnZSBpbmRleCBvZiB0aGUgW2BJdGVyYXRvcmBdLlxuICAgICBpbmRleDogdXNpemUsXG4tICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY3BhZ2U6OkJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZVx1MDAzZSxcbiYjNDM7ICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY1x1MDAyNiYjMzk7YSBwYWdlOjpQYWdlXHUwMDNlLFxuIH1cbiBcbiBpbXBsXHUwMDNjJiMzOTthXHUwMDNlIEl0ZXJhdG9yIGZvciBWbWFsbG9jUGFnZUl0ZXJcdTAwM2MmIzM5O2FcdTAwM2Uge1xuLSAgICB0eXBlIEl0ZW0gPSBwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2U7XG4mIzQzOyAgICB0eXBlIEl0ZW0gPSBcdTAwMjYmIzM5O2EgcGFnZTo6UGFnZTtcbiBcbiAgICAgZm4gbmV4dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBPcHRpb25cdTAwM2NTZWxmOjpJdGVtXHUwMDNlIHtcbiAgICAgICAgIGxldCBvZmZzZXQgPSBzZWxmLmluZGV4LmNoZWNrZWRfbXVsKHBhZ2U6OlBBR0VfU0laRSk/O1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXG5pbmRleCAzNWQxZTAxNTg0OGRkYS4uZDUzNGU4YWRjZjdiMzMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXG5AQCAtMjExLDYgJiM0MzsyMTEsMTUgQEAgcHViIGZuIGxlYWtcdTAwM2MmIzM5O2FcdTAwM2UoYjogU2VsZikgLVx1MDAzZSBcdTAwMjYmIzM5O2EgbXV0IFQge1xuICAgICAgICAgLy8gd2hpY2ggcG9pbnRzIHRvIGFuIGluaXRpYWxpemVkIGluc3RhbmNlIG9mIGBUYC5cbiAgICAgICAgIHVuc2FmZSB7IFx1MDAyNm11dCAqQm94OjppbnRvX3JhdyhiKSB9XG4gICAgIH1cbiYjNDM7XG4mIzQzOyAgICAvLy8gQ29uc3VtZXMgdGhlIGBCb3hcdTAwM2NULEFcdTAwM2VgIGFuZCByZXR1cm5zIGEgYE5vbk51bGxcdTAwM2NUXHUwMDNlYC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgcHViIGZuIGludG9fbm9uX251bGwoYjogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgS0JveDo6aW50b19yYXdgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQoU2VsZjo6aW50b19yYXcoYikpIH1cbiYjNDM7ICAgIH1cbiB9XG4gXG4gaW1wbFx1MDAzY1QsIEFcdTAwM2UgQm94XHUwMDNjTWF5YmVVbmluaXRcdTAwM2NUXHUwMDNlLCBBXHUwMDNlXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzIGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXG5pbmRleCBjNDI5MjhkNWEyMzkzZi4uODU0NTI1Mjg5YzhiNDMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuQEAgLTE5LDYgJiM0MzsxOSwxMCBAQFxuICAgICAgICAgdG9fcmVzdWx0LCAvL1xuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gICAgIHR5cGVzOjp7XG4gICAgICAgICBGb3JMdCxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxuQEAgLTM0NCw3ICYjNDM7MzQ4LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC0zNjMsNiAmIzQzOzM2NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG5pbmRleCBjZTNlMzBjODFjYjVlZC4uOGRhZDE1YWU0Y2ZiMGEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG5AQCAtOSw3ICYjNDM7OSwxMSBAQFxuICAgICBibG9jazo6bXE6Ok9wZXJhdGlvbnMsXG4gICAgIGVycm9yOjpSZXN1bHQsXG4gICAgIHN5bmM6Ontcbi0gICAgICAgIGFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbiYjNDM7ICAgICAgICBhcmVmOjp7XG4mIzQzOyAgICAgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICAgICAgfSxcbiAgICAgICAgIGF0b21pYzo6UmVsYXhlZCxcbiAgICAgICAgIFJlZmNvdW50LFxuICAgICB9LFxuQEAgLTIyOSwxMSAmIzQzOzIzMywxMCBAQCB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU2VuZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiAvLyBtdXRhdGUgYHNlbGZgIGFyZSBpbnRlcm5hbGx5IHN5bmNocm9uaXplZGBcbiB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU3luYyBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiBcbi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXNcbi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBgQWx3YXlzUmVmQ291bnRlZGAgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50XG4tLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnRcbi0vLyBkZWNyZW1lbnQgaXMgZXhlY3V0ZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHtcbiYjNDM7Ly8gU0FGRVRZOiBBbGwgaW5zdGFuY2VzIG9mIGBSZXF1ZXN0XHUwMDNjVFx1MDAzZWAgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGBSZWZDb3VudGVkYFxuJiM0MzsvLyBlbnN1cmUgdGhhdCBpbmNyZW1lbnRzIHRvIHRoZSByZWYgY291bnQga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYVxuJiM0MzsvLyBtYXRjaGluZyByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgUmVmQ291bnRlZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIHNlbGYud3JhcHBlcl9yZWYoKS5yZWZjb3VudCgpLmluYygpO1xuICAgICB9XG5AQCAtMjU1LDMgJiM0MzsyNTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgICAgIH1cbiAgICAgfVxuIH1cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogV2UgY3VycmVudGx5IGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjUmVxdWVzdFx1MDAzZWBcbiYjNDM7Ly8gZnJvbSBhIGBcdTAwMjZSZXF1ZXN0YCAoYnV0IHRoaXMgd2lsbCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSkuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2NyZWQucnMgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5pbmRleCBmZmExNTZiOWRmMzc3ZS4uYjE3NzM2YTlhZGNkNTggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5AQCAtOCw3ICYjNDM7OCwxNSBAQFxuIC8vIVxuIC8vISBSZWZlcmVuY2U6IFx1MDAzY2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L3NlY3VyaXR5L2NyZWRlbnRpYWxzLmh0bWxcdTAwM2VcbiBcbi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdGFzazo6S3VpZCwgdHlwZXM6Ok9wYXF1ZX07XG4mIzQzO3VzZSBjcmF0ZTo6e1xuJiM0MzsgICAgYmluZGluZ3MsXG4mIzQzOyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLFxuJiM0MzsgICAgdGFzazo6S3VpZCxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBPcGFxdWUsIC8vXG4mIzQzOyAgICB9LCAvL1xuJiM0Mzt9O1xuIFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgY3JlZGAuXG4gLy8vXG5AQCAtNzYsNyAmIzQzOzg0LDcgQEAgcHViIGZuIGV1aWQoXHUwMDI2c2VsZikgLVx1MDAzZSBLdWlkIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBDcmVkZW50aWFsYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtOTAsMyAmIzQzOzk4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NDcmVkZW50aWFsXHUwMDNlKSB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cHV0X2NyZWQob2JqLmNhc3QoKS5hc19wdHIoKSkgfTtcbiAgICAgfVxuIH1cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NDcmVkZW50aWFsXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkNyZWRlbnRpYWxgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHt9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXG5pbmRleCA2NDVhZmM0OWEyN2Q2NC4uMmU5MGY2YTA2ZmQwNTkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xuQEAgLTgsOCAmIzQzOzgsMTIgQEBcbiAgICAgYmluZGluZ3MsXG4gICAgIGZtdCxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcbiAgICAgICAgIE9wYXF1ZSwgLy9cbiAgICAgfSwgLy9cbkBAIC00NDgsNyAmIzQzOzQ1Miw3IEBAIHB1YiBmbiBuYW1lKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2Q1N0ciB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtNDYwLDYgJiM0Mzs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIC8vIFNBRkVUWTogQXMgYnkgdGhlIHR5cGUgaW52YXJpYW50IGBEZXZpY2VgIGNhbiBiZSBzZW50IHRvIGFueSB0aHJlYWQuXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgRGV2aWNlIHt9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG5pbmRleCA1YWVhZDgzNWZiYmMwMi4uY2VlN2UyNTAxMzY4OTkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5yc1xuQEAgLTE0LDcgJiM0MzsxNCwxMCBAQFxuICAgICBmbXQsXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN0cjo6e0NTdHIsIENTdHJpbmd9LFxuLSAgICBzeW5jOjphcmVmOjpBUmVmLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gfTtcbiBcbkBAIC0zNjAsNyAmIzQzOzM2Myw3IEBAIGZuIGZtdChcdTAwMjZzZWxmLCBmOiBcdTAwMjZtdXQgZm10OjpGb3JtYXR0ZXJcdTAwM2MmIzM5O19cdTAwM2UpIC1cdTAwM2UgZm10OjpSZXN1bHQge1xuIH1cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRndOb2RlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge1xuJiM0Mzt1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGVcbiAgICAgICAgIC8vIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuQEAgLTM3NCw2ICYjNDM7Mzc3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRndOb2RlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkZ3Tm9kZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZ3Tm9kZSB7fVxuJiM0MztcbiBlbnVtIE5vZGVcdTAwM2MmIzM5O2FcdTAwM2Uge1xuICAgICBCb3Jyb3dlZChcdTAwMjYmIzM5O2EgRndOb2RlKSxcbiAgICAgT3duZWQoQVJlZlx1MDAzY0Z3Tm9kZVx1MDAzZSksXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbmluZGV4IDQwM2ZjMzUzNTNjNzQwLi4zNjg3NDJhMjU4Mzc2OCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbkBAIC0xNSw3ICYjNDM7MTUsOCBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gICAgIHdvcmtxdWV1ZTo6e1xuQEAgLTIyNyw3ICYjNDM7MjI4LDcgQEAgZm4gZGVyZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZTZWxmOjpUYXJnZXQge1xuIFxuIC8vIFNBRkVUWTogRFJNIGRldmljZSBvYmplY3RzIGFyZSBhbHdheXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIHRoZSBnZXQvcHV0IGZ1bmN0aW9uc1xuIC8vIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge1xuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIFJlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZGV2X2dldChzZWxmLmFzX3JhdygpKSB9O1xuQEAgLTI0Miw2ICYjNDM7MjQzLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZEZXZpY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge31cbiYjNDM7XG4gaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2UgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IGBiaW5kaW5nczo6ZHJtX2RldmljZTo6ZGV2YCBpcyB2YWxpZCBhcyBsb25nIGFzIHRoZSBEUk0gZGV2aWNlIGl0c2VsZiBpcyB2YWxpZCxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5ycyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXG5pbmRleCAwMWI1YmQ0N2EzMzMyZC4uMzBkMzcxODU3OGZlOGMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbkBAIC0xNyw3ICYjNDM7MTcsNyBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuIH07XG5AQCAtMjksNyAmIzQzOzI5LDcgQEBcbiAjW2NmZyhDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUildXG4gcHViIG1vZCBzaG1lbTtcbiBcbi0vLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgQWx3YXlzUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuJiM0MzsvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuIC8vL1xuIC8vLyBTaW5jZSBhbGwgR0VNIG9iamVjdHMgdXNlIHRoZSBzYW1lIHJlZmNvdW50aW5nIHNjaGVtZS5cbiAjW21hY3JvX2V4cG9ydF1cbkBAIC00Miw3ICYjNDM7NDIsNyBAQCBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQ6aWRlbnQgKSwmIzQzO1x1MDAzZSApPyBmb3IgJHR5cGU6dHlcbiAgICAgICAgICk/XG4gICAgICkgPVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEFsbCBHRU0gb2JqZWN0cyBhcmUgcmVmY291bnRlZC5cbi0gICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwmIzQzO1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4mIzQzOyAgICAgICAgdW5zYWZlIGltcGwgJCggXHUwMDNjJCggJHRwYXJhbV9pZCApLCYjNDM7XHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgJHR5cGVcbiAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiAgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksJiM0MzsgKT9cbkBAIC02MSw2ICYjNDM7NjEsMTQgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdF9wdXQob2JqKSB9O1xuICAgICAgICAgICAgIH1cbiAgICAgICAgIH1cbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzYyR0eXBlXHUwMDNlYCBmcm9tIGFcbiYjNDM7ICAgICAgICAvLyBgXHUwMDI2JHR5cGVgLlxuJiM0MzsgICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwmIzQzO1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4mIzQzOyAgICAgICAgd2hlcmVcbiYjNDM7ICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiYjNDM7ICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCYjNDM7ICk/XG4mIzQzOyAgICAgICAge31cbiAgICAgfTtcbiB9XG4gI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV1cbkBAIC05OCw3ICYjNDM7MTA2LDcgQEAgZm4gY2xvc2UoX29iajogXHUwMDI2XHUwMDNjU2VsZjo6RHJpdmVyIGFzIGRybTo6RHJpdmVyXHUwMDNlOjpPYmplY3QsIF9maWxlOiBcdTAwMjZEcml2ZXJGaWxlXHUwMDNjU2VsZlx1MDAzZSlcbiB9XG4gXG4gLy8vIFRyYWl0IHRoYXQgcmVwcmVzZW50cyBhIEdFTSBvYmplY3Qgc3VidHlwZVxuLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCAmIzQzOyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICYjNDM7IEFsd2F5c1JlZkNvdW50ZWQge1xuJiM0MztwdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgJiM0Mzsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCAmIzQzOyBSZWZDb3VudGVkIHtcbiAgICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHJhdyBgZHJtX2dlbV9vYmplY3RgIHN0cnVjdHVyZSwgd2hpY2ggbXVzdCBiZSB2YWxpZCBhcyBsb25nIGFzXG4gICAgIC8vLyB0aGlzIG93bmluZyBvYmplY3QgaXMgdmFsaWQuXG4gICAgIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0O1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG5pbmRleCAyM2VlNjg5YmQyNDAwNS4uNzIwZTU3NDE4MzU4ZGMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG5AQCAtMTIsOCAmIzQzOzEyLDE1IEBAXG4gICAgIGNyZWQ6OkNyZWRlbnRpYWwsXG4gICAgIGVycm9yOjp7Y29kZTo6KiwgdG9fcmVzdWx0LCBFcnJvciwgUmVzdWx0fSxcbiAgICAgZm10LFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuJiM0MzsgICAgdHlwZXM6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE5vdFRocmVhZFNhZmUsXG4mIzQzOyAgICAgICAgT3BhcXVlLCAvL1xuJiM0MzsgICAgfSwgLy9cbiB9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG5AQCAtMTk3LDcgJiM0MzsyMDQsNyBAQCB1bnNhZmUgaW1wbCBTeW5jIGZvciBGaWxlIHt9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb25cbiAvLyBtYWtlcyBgQVJlZlx1MDAzY0ZpbGVcdTAwM2VgIG93biBhIG5vcm1hbCByZWZjb3VudC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGaWxlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRmlsZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0yMTIsNiAmIzQzOzIxOSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0ZpbGVcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0ZpbGVcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RmlsZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge31cbiYjNDM7XG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBmaWxlYC4gTm90IHRocmVhZCBzYWZlLlxuIC8vL1xuIC8vLyBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIGZpbGUgdGhhdCBpcyBub3Qga25vd24gdG8gYmUgc2FmZSB0byB0cmFuc2ZlciBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXG5AQCAtMjMzLDcgJiM0MzsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBMb2NhbEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjTG9jYWxGaWxlXHUwMDNlYCBvd24gYSBub3JtYWwgcmVmY291bnQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxuQEAgLTI0OSw2ICYjNDM7MjYwLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjTG9jYWxGaWxlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NMb2NhbEZpbGVcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2TG9jYWxGaWxlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHt9XG4mIzQzO1xuIGltcGwgTG9jYWxGaWxlIHtcbiAgICAgLy8vIENvbnN0cnVjdHMgYSBuZXcgYHN0cnVjdCBmaWxlYCB3cmFwcGVyIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuaW5kZXggNjI0Yjk3MWNhOGIwYjIuLjAyYjJjOTIyMGViMTFjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9pMmMucnNcbkBAIC0xOCw3ICYjNDM7MTgsOCBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXG4gfTtcbkBAIC00MjQsNyAmIzQzOzQyNSw3IEBAIHB1YiBmbiBnZXQoaW5kZXg6IGkzMikgLVx1MDAzZSBSZXN1bHRcdTAwM2NBUmVmXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoSTJjQWRhcHRlcik7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0FkYXB0ZXJgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfZ2V0X2FkYXB0ZXIoc2VsZi5pbmRleCgpKSB9O1xuQEAgLTQzNSw2ICYjNDM7NDM2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH1cbiAgICAgfVxuIH1cbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhblxuJiM0MzsvLyBgXHUwMDI2STJjQWRhcHRlcmAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge31cbiBcbiAvLy8gVGhlIGkyYyBib2FyZCBpbmZvIHJlcHJlc2VudGF0aW9uXG4gLy8vXG5AQCAtNTAwLDcgJiM0Mzs1MDQsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcdTAwM2NDdHhcdTAwM2UgZm9yIEkyY0NsaWVudFx1MDAzY0NcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNDbGllbnQpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJMmNDbGllbnRgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUxMSw2ICYjNDM7NTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9kZXZpY2UoXHUwMDI2cmF3IG11dCAoKm9iai5hc19yZWYoKS5hc19yYXcoKSkuZGV2KSB9XG4gICAgIH1cbiB9XG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYW5cbiYjNDM7Ly8gYFx1MDAyNkkyY0NsaWVudGAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fVxuIFxuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBJMmNDbGllbnRcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbGliLnJzIGIvcnVzdC9rZXJuZWwvbGliLnJzXG5pbmRleCA5NTEyYWY3MTU2ZGYyYS4uZWI1MjU2MjA0YTE3NDIgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9saWIucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2xpYi5yc1xuQEAgLTEwMSw2ICYjNDM7MTAxLDcgQEBcbiBwdWIgbW9kIG9mO1xuICNbY2ZnKENPTkZJR19QTV9PUFApXVxuIHB1YiBtb2Qgb3BwO1xuJiM0MztwdWIgbW9kIG93bmVkO1xuIHB1YiBtb2QgcGFnZTtcbiAjW2NmZyhDT05GSUdfUENJKV1cbiBwdWIgbW9kIHBjaTtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9tbS5ycyBiL3J1c3Qva2VybmVsL21tLnJzXG5pbmRleCA0NzY0ZDdiNjhmMmE3Zi4uODNlZDk0ZmNhMTRjYTIgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9tbS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbW0ucnNcbkBAIC0xMyw4ICYjNDM7MTMsMTUgQEBcbiBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgTm90VGhyZWFkU2FmZSxcbiYjNDM7ICAgICAgICBPcGFxdWUsIC8vXG4mIzQzOyAgICB9LCAvL1xuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTU1LDcgJiM0Mzs2Miw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge31cbiBcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxuQEAgLTY5LDYgJiM0Mzs3Niw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY01tXHUwMDNlYCBmcm9tIGEgYFx1MDAyNk1tYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW0ge31cbiYjNDM7XG4gLy8vIEEgd3JhcHBlciBmb3IgdGhlIGtlcm5lbCYjMzk7cyBgc3RydWN0IG1tX3N0cnVjdGAuXG4gLy8vXG4gLy8vIFRoaXMgdHlwZSBpcyBsaWtlIFtgTW1gXSwgYnV0IHdpdGggbm9uLXplcm8gYG1tX3VzZXJzYC4gSXQgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGBtbV91c2Vyc2AgY2FuXG5AQCAtOTEsNyAmIzQzOzEwMSw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXIge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyIHt9XG4gXG4gLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtMTA1LDYgJiM0MzsxMTUsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1XaXRoVXNlclx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZNbVdpdGhVc2VyYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7fVxuJiM0MztcbiAvLyBNYWtlIGFsbCBgTW1gIG1ldGhvZHMgYXZhaWxhYmxlIG9uIGBNbVdpdGhVc2VyYC5cbiBpbXBsIERlcmVmIGZvciBNbVdpdGhVc2VyIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBNbTtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5ycyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzXG5pbmRleCBiOGQyZjA1MTIyNWM3My4uOGZiYzM5NmU0NjAyODEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbkBAIC0xMCw3ICYjNDM7MTAsMTEgQEBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4gICAgIG1tOjpNbVdpdGhVc2VyLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLFxuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTM0LDcgJiM0MzszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cbkBAIC00OCw2ICYjNDM7NTIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1XaXRoVXNlckFzeW5jXHUwMDNlYFxuJiM0MzsvLyBmcm9tIGEgYFx1MDAyNk1tV2l0aFVzZXJBc3luY2AuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuJiM0MztcbiAvLyBNYWtlIGFsbCBgTW1XaXRoVXNlcmAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJBc3luY2AuXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29wcC5ycyBiL3J1c3Qva2VybmVsL29wcC5yc1xuaW5kZXggNjJlNDQ2NzYxMjVkMTAuLmI4ZGI2YmRlZmQwNzcxIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvb3BwLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vcHAucnNcbkBAIC0xNiw4ICYjNDM7MTYsMTQgQEBcbiAgICAgZmZpOjp7Y19jaGFyLCBjX3Vsb25nfSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgc3RyOjpDU3RyaW5nLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjpPcGFxdWUsXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBPcGFxdWUsIC8vXG4mIzQzOyAgICB9LCAvL1xuIH07XG4gXG4gI1tjZmcoQ09ORklHX0NQVV9GUkVRKV1cbkBAIC0xMDQxLDcgJiM0MzsxMDQ3LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgT1BQIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgT1BQIHt9XG4gXG4gLy8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBbYE9QUGBdIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE9QUCB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE9QUCB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0xMDU1LDYgJiM0MzsxMDYxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjT1BQXHUwMDNlYCBmcm9tIGFuXG4mIzQzOy8vIGBcdTAwMjZPUFBgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge31cbiYjNDM7XG4gaW1wbCBPUFAge1xuICAgICAvLy8gQ3JlYXRlcyBhbiBvd25lZCByZWZlcmVuY2UgdG8gYSBbYE9QUGBdIGZyb20gYSB2YWxpZCBwb2ludGVyLlxuICAgICAvLy9cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vd25lZC5ycyBiL3J1c3Qva2VybmVsL293bmVkLnJzXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmFjYjYxMWYwODRmZjM1XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xuQEAgLTAsMCAmIzQzOzEsMzczIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO1xuJiM0MzsvLyEgVW5pcXVlIG93bmVkIHBvaW50ZXIgdHlwZXMgZm9yIG9iamVjdHMgd2l0aCBjdXN0b20gZHJvcCBsb2dpYy5cbiYjNDM7Ly8hXG4mIzQzOy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0XG4mIzQzOy8vISBhcmUgb3duZWQgYnkgUnVzdCwgYnV0IG5lZWQgdG8gYmUgZnJlZWQgdGhyb3VnaCB0aGUgQyBBUEkuXG4mIzQzO1xuJiM0Mzt1c2UgY29yZTo6e1xuJiM0MzsgICAgbWVtOjpNYW51YWxseURyb3AsXG4mIzQzOyAgICBvcHM6OntcbiYjNDM7ICAgICAgICBEZXJlZixcbiYjNDM7ICAgICAgICBEZXJlZk11dCwgLy9cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICBwaW46OlBpbixcbiYjNDM7ICAgIHB0cjo6Tm9uTnVsbCwgLy9cbiYjNDM7fTtcbiYjNDM7dXNlIGtlcm5lbDo6e1xuJiM0MzsgICAgc3luYzo6YXJlZjo6QVJlZixcbiYjNDM7ICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvL1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7dXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlO1xuJiM0MztcbiYjNDM7Ly8vIFR5cGVzIHRoYXQgc3BlY2lmeSB0aGVpciBvd24gd2F5IG9mIHBlcmZvcm1pbmcgYWxsb2NhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFR5cGljYWxseSwgdGhpcyB0cmFpdFxuJiM0MzsvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLlxuJiM0MzsvLy9cbiYjNDM7Ly8vIEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSByZWZlcmVuY2VkIHZpYSB0aGUgW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXSBwb2ludGVyIHR5cGUuXG4mIzQzOy8vLyAgLSBUaGlzIGlzIHVzZWZ1bCB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0byB0aWUgdGhlIGxpZmV0aW1lIG9mIGFuIG9iamVjdCByZWZlcmVuY2UgdG8gYW4gb3duZWRcbiYjNDM7Ly8vICAgIG9iamVjdCwgcmF0aGVyIHRoYW4gcGFzcyBhcm91bmQgYSBiYXJlIHJlZmVyZW5jZS5cbiYjNDM7Ly8vICAtIFtgT3duYWJsZWBdIHR5cGVzIGNhbiBkZWZpbmUgY3VzdG9tIGRyb3AgbG9naWMgdGhhdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBvd25lZCByZWZlcmVuY2VcbiYjNDM7Ly8vICAgIG9mIHR5cGUgW2BPd25lZFx1MDAzY19cdTAwM2VgXSBwb2ludGluZyB0byB0aGUgb2JqZWN0IGlzIGRyb3BwZWQuXG4mIzQzOy8vL1xuJiM0MzsvLy8gTm90ZTogVGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudGluZywgYmVjYXVzZSBpdFxuJiM0MzsvLy8gcmVwcmVzZW50cyBhIHVuaXF1ZSwgb3duZWQgcmVmZXJlbmNlLiBJZiByZWZlcmVuY2UgY291bnRpbmcgKG9uIHRoZSBSdXN0IHNpZGUpIGlzIHJlcXVpcmVkLFxuJiM0MzsvLy8gW2BSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkLiBbYE93bmFibGVSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIGNvbnZlcnNpb25cbiYjNDM7Ly8vIGJldHdlZW4gdW5pcXVlIGFuZCBzaGFyZWQgKHJlZmVyZW5jZSBjb3VudGVkKSBvd25lcnNoaXAgaXMgbmVlZGVkLlxuJiM0MzsvLy9cbiYjNDM7Ly8vICMgRXhhbXBsZXNcbiYjNDM7Ly8vXG4mIzQzOy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGggW2BPd25lZGBdIGxvb2tzIGxpa2VcbiYjNDM7Ly8vIHRoaXM6XG4mIzQzOy8vL1xuJiM0MzsvLy8gYGBgXG4mIzQzOy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxuJiM0MzsvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDtcbiYjNDM7Ly8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcbiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6c3luYzo6Z2xvYmFsX2xvY2s7XG4mIzQzOy8vLyAjIHVzZSBrZXJuZWw6OmFsbG9jOjp7ZmxhZ3MsIGtib3g6OktCb3gsIEFsbG9jRXJyb3J9O1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjp0eXBlczo6e093bmVkLCBPd25hYmxlfTtcbiYjNDM7Ly8vXG4mIzQzOy8vLyAvLyBMZXQmIzM5O3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLlxuJiM0MzsvLy8ga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jayEge1xuJiM0MzsvLy8gICAgIC8vIFNBRkVUWTogd2UgY2FsbCBgaW5pdCgpYCByaWdodCBiZWxvdywgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuXG4mIzQzOy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXhcdTAwM2N1c2l6ZVx1MDAzZSA9IDA7XG4mIzQzOy8vLyB9XG4mIzQzOy8vLyAvLyBTQUZFVFk6IFdlIGNhbGwgYGluaXQoKWAgb25seSBvbmNlLCBoZXJlLlxuJiM0MzsvLy8gdW5zYWZlIHsgRk9PX0FMTE9DX0NPVU5ULmluaXQoKSB9O1xuJiM0MzsvLy9cbiYjNDM7Ly8vIHN0cnVjdCBGb287XG4mIzQzOy8vL1xuJiM0MzsvLy8gaW1wbCBGb28ge1xuJiM0MzsvLy8gICAgIGZuIG5ldygpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbiYjNDM7Ly8vICAgICAgICAgLy8gV2UgYXJlIGp1c3QgdXNpbmcgYSBgS0JveGAgaGVyZSB0byBoYW5kbGUgdGhlIGFjdHVhbCBhbGxvY2F0aW9uLCBhcyBvdXIgYEZvb2AgaXNcbiYjNDM7Ly8vICAgICAgICAgLy8gbm90IGFjdHVhbGx5IGEgQy1hbGxvY2F0ZWQgb2JqZWN0LlxuJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6bmV3KFxuJiM0MzsvLy8gICAgICAgICAgICAgRm9vIHt9LFxuJiM0MzsvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXG4mIzQzOy8vLyAgICAgICAgICk/O1xuJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xuJiM0MzsvLy8gICAgICAgICAvLyBDb3VudCBuZXcgYWxsb2NhdGlvblxuJiM0MzsvLy8gICAgICAgICAqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSAmIzQzOz0gMTtcbiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOlxuJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuXG4mIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuXG4mIzQzOy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcbiYjNDM7Ly8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3hcdTAwM2NTZWxmXHUwMDNlYF0gaXMgc3RpbGwgYWxpdmUuIFdlIGNhbiBwYXNzIG93bmVyc2hpcCB0byB0aGUgW2BLQm94YF0sIGFzXG4mIzQzOy8vLyAgICAgICAgIC8vIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiYjNDM7Ly8vICAgICAgICAgZHJvcCh1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9KTtcbiYjNDM7Ly8vICAgICAgICAgLy8gQ291bnQgcmVsZWFzZWQgYWxsb2NhdGlvblxuJiM0MzsvLy8gICAgICAgICAqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSAtPSAxO1xuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyB7XG4mIzQzOy8vLyAgICBsZXQgZm9vID0gRm9vOjpuZXcoKT87XG4mIzQzOy8vLyAgICBhc3NlcnQhKCpGT09fQUxMT0NfQ09VTlQubG9jaygpID09IDEpO1xuJiM0MzsvLy8gfVxuJiM0MzsvLy8gLy8gYGZvb2AgaXMgb3V0IG9mIHNjb3BlIG5vdywgc28gd2UgZXhwZWN0IG5vIGxpdmUgYWxsb2NhdGlvbnMuXG4mIzQzOy8vLyBhc3NlcnQhKCpGT09fQUxMT0NfQ09VTlQubG9jaygpID09IDApO1xuJiM0MzsvLy8gIyBPazo6XHUwMDNjKCksIEVycm9yXHUwMDNlKCgpKVxuJiM0MzsvLy8gYGBgXG4mIzQzO3B1YiB0cmFpdCBPd25hYmxlIHtcbiYjNDM7ICAgIC8vLyBUZWFyIGRvd24gdGhpcyBgT3duYWJsZWAuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBJbXBsZW1lbnRlcnMgb2YgYE93bmFibGVgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjbGVhbiB1cCB0aGUgdXNlIG9mIGBTZWxmYC4gVGhpcyBjYW5cbiYjNDM7ICAgIC8vLyBpbmNsdWRlIGZyZWVpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gIyBTYWZldHlcbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLFxuJiM0MzsgICAgLy8vIGFuZCB0aGF0IHRoaXMgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLiBgdGhpc2AgbXVzdCBub3QgYmUgdXNlZFxuJiM0MzsgICAgLy8vIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFzIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGZyZWVkLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gYHRoaXNgIGlzIHBpbm5lZCBhbmQgaW1wbGVtZW50ZXJzIG9mIHRoaXMgbWV0aG9kIG11c3Qgb2JzZXJ2ZSB0aGlzIGNvbnN0cmFpbnQuXG4mIzQzOyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8vLyBBIG11dGFibGUgcmVmZXJlbmNlIHRvIGFuIG93bmVkIGBUYC5cbiYjNDM7Ly8vXG4mIzQzOy8vLyBUaGUgW2BPd25hYmxlYF0gaXMgYXV0b21hdGljYWxseSBmcmVlZCBvciByZWxlYXNlZCB3aGVuIGFuIGluc3RhbmNlIG9mIFtgT3duZWRgXSBpc1xuJiM0MzsvLy8gZHJvcHBlZC5cbiYjNDM7Ly8vXG4mIzQzOy8vLyAjIEludmFyaWFudHNcbiYjNDM7Ly8vXG4mIzQzOy8vLyAtIFVudGlsIGBUOjpyZWxlYXNlYCBpcyBjYWxsZWQsIHRoaXMgYE93bmVkXHUwMDNjVFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXG4mIzQzOy8vLyAtIFRoZSBgVGAgdmFsdWUgaXMgcGlubmVkLlxuJiM0MztwdWIgc3RydWN0IE93bmVkXHUwMDNjVDogT3duYWJsZVx1MDAzZSB7XG4mIzQzOyAgICBwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlLFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBPd25lZFx1MDAzY1RcdTAwM2Uge1xuJiM0MzsgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BPd25lZGBdLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyAjIFNhZmV0eVxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0OlxuJiM0MzsgICAgLy8vIC0gYHB0cmAgcG9pbnRzIHRvIGEgdmFsaWQgaW5zdGFuY2Ugb2YgYFRgLlxuJiM0MzsgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZFx1MDAzY1RcdTAwM2VgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLlxuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4mIzQzOyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnQgd2Ugc2F0aXNmeSB0aGUgZmlyc3QgaW52YXJpYW50IG9mIGBTZWxmYC5cbiYjNDM7ICAgICAgICAvLyBXZSB0cmVhdCBgVGAgYXMgcGlubmVkIGZyb20gbm93IG9uLlxuJiM0MzsgICAgICAgIFNlbGYgeyBwdHIgfVxuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIC8vLyBDb25zdW1lcyB0aGUgW2BPd25lZGBdLCByZXR1cm5pbmcgYSByYXcgcG9pbnRlci5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZHJvcCB0aGUgdW5kZXJseWluZyBgVGAuIFdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zLCBvd25lcnNoaXAgb2YgdGhlXG4mIzQzOyAgICAvLy8gdW5kZXJseWluZyBgVGAgaXMgd2l0aCB0aGUgY2FsbGVyLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gTm90ZSB0aGF0IHRoZSByZXR1cm5lZCBwb2ludGVyIGlzIHBpbm5lZC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtXHUwMDNlIE5vbk51bGxcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgICAgICBNYW51YWxseURyb3A6Om5ldyhtZSkucHRyXG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgLy8vIEdldCBhIHBpbm5lZCBtdXRhYmxlIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBvd25lZCBieSB0aGlzIGBPd25lZFx1MDAzY1RcdTAwM2VgLlxuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBwdWIgZm4gYXNfcGluX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBQaW5cdTAwM2NcdTAwMjZtdXQgVFx1MDAzZSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcbiYjNDM7ICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cbiYjNDM7ICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9O1xuJiM0MztcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9XG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGFuIFtgT3duZWRcdTAwM2NUXHUwMDNlYF0gdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgW2BTZW5kYF0sXG4mIzQzOy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BPd25lZFx1MDAzY1RcdTAwM2VgXSBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgdGhlIGBUYC5cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBPd25hYmxlICYjNDM7IFNlbmRcdTAwM2UgU2VuZCBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO1xuJiM0MzsvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBbYFx1MDAyNk93bmVkXHUwMDNjVFx1MDAzZWBdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU3luY2BdLFxuJiM0MzsvLyBiZWNhdXNlIG9mIHRoZSBvd25lcnNoaXAgaW52YXJpYW50LiBTZW5kaW5nIGFuIFtgXHUwMDI2T3duZWRcdTAwM2NUXHUwMDNlYF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgXHUwMDI2VGAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogT3duYWJsZSAmIzQzOyBTeW5jXHUwMDNlIFN5bmMgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7fVxuJiM0MztcbiYjNDM7aW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRGVyZWYgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICB0eXBlIFRhcmdldCA9IFQ7XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfVxuJiM0MzsgICAgfVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogT3duYWJsZSAmIzQzOyBVbnBpblx1MDAzZSBEZXJlZk11dCBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgZm4gZGVyZWZfbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5XG4mIzQzOyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfVxuJiM0MzsgICAgfVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBEcm9wIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBleGlzdGVuY2Ugb2YgYFx1MDAyNm11dCBzZWxmYCB3ZSBleGNsdXNpdmVseSBvd24gYHNlbGZgIGFuZCB0aGUgdW5kZXJseWluZyBgVGAuIEFzXG4mIzQzOyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07XG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogV2UgZGVyaXZlIHRoZSBwb2ludGVyIHRvIGBUYCBmcm9tIGEgdmFsaWQgYFRgLCBzbyB0aGUgcmV0dXJuZWRcbiYjNDM7Ly8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRm9yZWlnbk93bmFibGUgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICBjb25zdCBGT1JFSUdOX0FMSUdOOiB1c2l6ZSA9IGNvcmU6Om1lbTo6YWxpZ25fb2Y6Olx1MDAzY1RcdTAwM2UoKTtcbiYjNDM7XG4mIzQzOyAgICB0eXBlIEJvcnJvd2VkXHUwMDNjJiMzOTthXHUwMDNlXG4mIzQzOyAgICAgICAgPSBcdTAwMjYmIzM5O2EgVFxuJiM0MzsgICAgd2hlcmVcbiYjNDM7ICAgICAgICBTZWxmOiAmIzM5O2E7XG4mIzQzOyAgICB0eXBlIEJvcnJvd2VkTXV0XHUwMDNjJiMzOTthXHUwMDNlXG4mIzQzOyAgICAgICAgPSBQaW5cdTAwM2NcdTAwMjYmIzM5O2EgbXV0IFRcdTAwM2VcbiYjNDM7ICAgIHdoZXJlXG4mIzQzOyAgICAgICAgU2VsZjogJiMzOTthO1xuJiM0MztcbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgZm4gaW50b19mb3JlaWduKHNlbGYpIC1cdTAwM2UgKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkIHtcbiYjNDM7ICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpXG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICB1bnNhZmUgZm4gZnJvbV9mb3JlaWduKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXHUwMDNlIFNlbGYge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IGNvbnRyYWN0LCBgcHRyYCBjYW1lIGZyb20gYGludG9fZm9yZWlnbmAgYW5kIGNhbm5vdCBiZSBudWxsLlxuJiM0MzsgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHB0ci5jYXN0KCkpIH07XG4mIzQzO1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgd2FzIHJldHVybmVkIGJ5IGBpbnRvX2ZvcmVpZ25gLCB3aGljaCBnYXZlXG4mIzQzOyAgICAgICAgLy8gdXAgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiBhIHZhbGlkLCBwaW5uZWQgYFRgOyB3ZSByZXRha2UgdGhhdCBvd25lcnNoaXAgaGVyZS5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocHRyKSB9XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICB1bnNhZmUgZm4gYm9ycm93XHUwMDNjJiMzOTthXHUwMDNlKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXHUwMDNlIFNlbGY6OkJvcnJvd2VkXHUwMDNjJiMzOTthXHUwMDNlIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYVxuJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZSBmb3IgYCYjMzk7YWAuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnB0ci5jYXN0KCkgfVxuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgdW5zYWZlIGZuIGJvcnJvd19tdXRcdTAwM2MmIzM5O2FcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZjo6Qm9ycm93ZWRNdXRcdTAwM2MmIzM5O2FcdTAwM2Uge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhXG4mIzQzOyAgICAgICAgLy8gdW5pcXVlIHJlZmVyZW5jZSBmb3IgYCYjMzk7YWAuXG4mIzQzOyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgXHUwMDI2bXV0ICpwdHIuY2FzdCgpIH07XG4mIzQzO1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogV2UgbmV2ZXIgbW92ZSBvdXQgb2YgaW5uZXIsIGFuZCB3ZSBkbyBub3QgaGFuZCBvdXQgbXV0YWJsZVxuJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZXMgd2hlbiBgVDogIVVucGluYC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQoaW5uZXIpIH1cbiYjNDM7ICAgIH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7Ly8vIEEgdHJhaXQgZm9yIG9iamVjdHMgdGhhdCBjYW4gYmUgd3JhcHBlZCBpbiBlaXRoZXIgb25lIG9mIHRoZSByZWZlcmVuY2UgdHlwZXMgW2BPd25lZGBdIGFuZFxuJiM0MzsvLy8gW2BBUmVmYF0uXG4mIzQzOy8vL1xuJiM0MzsvLy8gIyBFeGFtcGxlc1xuJiM0MzsvLy9cbiYjNDM7Ly8vIEEgbWluaW1hbCBleGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIFtgT3duYWJsZVJlZkNvdW50ZWRgXSwgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoXG4mIzQzOy8vLyBbYEFSZWZgXSBhbmQgW2BPd25lZGBdIGxvb2tzIGxpa2UgdGhpczpcbiYjNDM7Ly8vXG4mIzQzOy8vLyBgYGBcbiYjNDM7Ly8vICMgIyFbZXhwZWN0KGNsaXBweTo6ZGlzYWxsb3dlZF9uYW1lcyldXG4mIzQzOy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsO1xuJiM0MzsvLy8gIyB1c2UgY29yZTo6cHRyOjpOb25OdWxsO1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTtcbiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9O1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjp0eXBlczo6e093bmVkLCBPd25hYmxlLCBPd25hYmxlUmVmQ291bnRlZH07XG4mIzQzOy8vL1xuJiM0MzsvLy8gLy8gQW4gaW50ZXJuYWxseSByZWZjb3VudGVkIHN0cnVjdCBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy5cbiYjNDM7Ly8vIC8vXG4mIzQzOy8vLyAvLyAjIEludmFyaWFudHNcbiYjNDM7Ly8vIC8vXG4mIzQzOy8vLyAvLyAtIGByZWZjb3VudGAgaXMgYWx3YXlzIG5vbi16ZXJvIGZvciBhIHZhbGlkIG9iamVjdC5cbiYjNDM7Ly8vIC8vIC0gYHJlZmNvdW50YCBpcyBcdTAwM2UxIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgUnVzdCByZWZlcmVuY2UgdG8gaXQuXG4mIzQzOy8vLyAvL1xuJiM0MzsvLy8gc3RydWN0IEZvbyB7XG4mIzQzOy8vLyAgICAgcmVmY291bnQ6IENlbGxcdTAwM2N1c2l6ZVx1MDAzZSxcbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyBpbXBsIEZvbyB7XG4mIzQzOy8vLyAgICAgZm4gbmV3KCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuJiM0MzsvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xuJiM0MzsvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXG4mIzQzOy8vLyAgICAgICAgIC8vIElOVkFSSUFOVDogV2UgaW5pdGlhbGl6ZSBgcmVmY291bnRgIHRvIDEsIHNhdGlzZnlpbmcgdGhlIGludmFyaWFudHMuXG4mIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXG4mIzQzOy8vLyAgICAgICAgICAgICBGb28ge1xuJiM0MzsvLy8gICAgICAgICAgICAgICAgIHJlZmNvdW50OiBDZWxsOjpuZXcoMSksXG4mIzQzOy8vLyAgICAgICAgICAgICB9LFxuJiM0MzsvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXG4mIzQzOy8vLyAgICAgICAgICk/O1xuJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6XG4mIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cbiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cbiYjNDM7Ly8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcbiYjNDM7Ly8vICAgICB9XG4mIzQzOy8vLyB9XG4mIzQzOy8vL1xuJiM0MzsvLy8gLy8gU0FGRVRZOiBXZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBlYWNoIHRpbWUgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBvbmx5IGZyZWVcbiYjNDM7Ly8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uXG4mIzQzOy8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBGb28ge1xuJiM0MzsvLy8gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuJiM0MzsvLy8gICAgICAgICBzZWxmLnJlZmNvdW50LnJlcGxhY2Uoc2VsZi5yZWZjb3VudC5nZXQoKSAmIzQzOyAxKTtcbiYjNDM7Ly8vICAgICB9XG4mIzQzOy8vL1xuJiM0MzsvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4mIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogQnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8sXG4mIzQzOy8vLyAgICAgICAgIC8vIGltcGx5aW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB2YWxpZC5cbiYjNDM7Ly8vICAgICAgICAgbGV0IHJlZmNvdW50ID0gdW5zYWZlIHsgXHUwMDI2dGhpcy5hc19yZWYoKS5yZWZjb3VudCB9O1xuJiM0MzsvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxO1xuJiM0MzsvLy8gICAgICAgICBpZiBuZXdfcmVmY291bnQgPT0gMCB7XG4mIzQzOy8vLyAgICAgICAgICAgICAvLyBUaGUgYEZvb2Agd2lsbCBiZSBkcm9wcGVkIHdoZW4gYEtCb3hgIGdvZXMgb3V0IG9mIHNjb3BlLlxuJiM0MzsvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94XHUwMDNjRm9vXHUwMDNlYF0gaXMgc3RpbGwgYWxpdmUgYXMgdGhlIG9sZCByZWZjb3VudCBpcyAxLiBXZSBjYW4gcGFzc1xuJiM0MzsvLy8gICAgICAgICAgICAgLy8gb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSBhcyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sXG4mIzQzOy8vLyAgICAgICAgICAgICAvLyB0aGUgYFNlbGZgIHdpbGwgbm8gbG9uZ2VyIGJlIHVzZWQgYnkgdGhlIGNhbGxlci5cbiYjNDM7Ly8vICAgICAgICAgICAgIHVuc2FmZSB7IEtCb3g6OmZyb21fcmF3KHRoaXMuYXNfcHRyKCkpIH07XG4mIzQzOy8vLyAgICAgICAgIH0gZWxzZSB7XG4mIzQzOy8vLyAgICAgICAgICAgICByZWZjb3VudC5yZXBsYWNlKG5ld19yZWZjb3VudCk7XG4mIzQzOy8vLyAgICAgICAgIH1cbiYjNDM7Ly8vICAgICB9XG4mIzQzOy8vLyB9XG4mIzQzOy8vL1xuJiM0MzsvLy8gaW1wbCBPd25hYmxlUmVmQ291bnRlZCBmb3IgRm9vIHtcbiYjNDM7Ly8vICAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZlx1MDAzY1NlbGZcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlLCBBUmVmXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4mIzQzOy8vLyAgICAgICAgIGlmIHRoaXMucmVmY291bnQuZ2V0KCkgPT0gMSB7XG4mIzQzOy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBgRm9vYCBpcyBzdGlsbCBhbGl2ZSBhbmQgaGFzIG5vIG90aGVyIFJ1c3QgcmVmZXJlbmNlcyBhcyB0aGUgcmVmY291bnRcbiYjNDM7Ly8vICAgICAgICAgICAgIC8vIGlzIDEuXG4mIzQzOy8vLyAgICAgICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcoQVJlZjo6aW50b19yYXcodGhpcykpIH0pXG4mIzQzOy8vLyAgICAgICAgIH0gZWxzZSB7XG4mIzQzOy8vLyAgICAgICAgICAgICBFcnIodGhpcylcbiYjNDM7Ly8vICAgICAgICAgfVxuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyAgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIEFSZWZcdTAwM2NTZWxmXHUwMDNlIHtcbiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOiBBbiBgT3duZWRcdTAwM2NGb29cdTAwM2VgIGhvbGRzIHRoZSB1bmlxdWUgcmVmZXJlbmNlIChyZWZjb3VudCAxKSwgd2hpY2ggd2UgdHJhbnNmZXIgdG9cbiYjNDM7Ly8vICAgICAgICAgLy8gdGhlIG5ldyBgQVJlZmAuXG4mIzQzOy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfVxuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XG4mIzQzOy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOiBVc2luZyBgZGVjX3JlZigpYCBmcm9tIFtgUmVmQ291bnRlZGBdIHRvIHJlbGVhc2UgaXMgb2theSwgYXMgdGhlIHJlZmNvdW50IGlzXG4mIzQzOy8vLyAgICAgICAgIC8vIGFsd2F5cyAxIGZvciBhbiBbYE93bmVkXHUwMDNjRm9vXHUwMDNlYF0uXG4mIzQzOy8vLyAgICAgICAgIHVuc2FmZSB7IEZvbzo6ZGVjX3JlZih0aGlzKSB9O1xuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyBsZXQgZm9vID0gRm9vOjpuZXcoKT87XG4mIzQzOy8vLyBsZXQgZm9vID0gQVJlZjo6ZnJvbShmb28pO1xuJiM0MzsvLy8ge1xuJiM0MzsvLy8gICAgIGxldCBiYXIgPSBmb28uY2xvbmUoKTtcbiYjNDM7Ly8vICAgICBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShiYXIpLmlzX2VycigpKTtcbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGZvbykuaXNfb2soKSk7XG4mIzQzOy8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4mIzQzOy8vLyBgYGBcbiYjNDM7cHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICYjNDM7IE93bmFibGUgJiM0MzsgU2l6ZWQge1xuJiM0MzsgICAgLy8vIENoZWNrcyBpZiB0aGUgW2BBUmVmYF0gaXMgdW5pcXVlIGFuZCBjb252ZXJ0cyBpdCB0byBhbiBbYE93bmVkYF0gaWYgdGhhdCBpcyB0aGUgY2FzZS5cbiYjNDM7ICAgIC8vLyBPdGhlcndpc2UgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC5cbiYjNDM7ICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2UsIEFSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgIC8vLyBDb252ZXJ0cyB0aGUgW2BPd25lZGBdIGludG8gYW4gW2BBUmVmYF0uXG4mIzQzOyAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZFx1MDAzY1NlbGZcdTAwM2UpIC1cdTAwM2UgQVJlZlx1MDAzY1NlbGZcdTAwM2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFx1MDAzZSBUcnlGcm9tXHUwMDNjQVJlZlx1MDAzY1RcdTAwM2VcdTAwM2UgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICB0eXBlIEVycm9yID0gQVJlZlx1MDAzY1RcdTAwM2U7XG4mIzQzOyAgICAvLy8gVHJpZXMgdG8gY29udmVydCB0aGUgW2BBUmVmYF0gdG8gYW4gW2BPd25lZGBdIGJ5IGNhbGxpbmdcbiYjNDM7ICAgIC8vLyBbYHRyeV9mcm9tX3NoYXJlZCgpYF0oT3duYWJsZVJlZkNvdW50ZWQ6OnRyeV9mcm9tX3NoYXJlZCkuIEluIGNhc2UgdGhlIFtgQVJlZmBdIGlzIG5vdFxuJiM0MzsgICAgLy8vIHVuaXF1ZSwgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgZm4gdHJ5X2Zyb20oYjogQVJlZlx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NUXHUwMDNlLCBTZWxmOjpFcnJvclx1MDAzZSB7XG4mIzQzOyAgICAgICAgVDo6dHJ5X2Zyb21fc2hhcmVkKGIpXG4mIzQzOyAgICB9XG4mIzQzO31cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wYWdlLnJzIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xuaW5kZXggOGFmZmQ4MjYyODkxYmEuLmM4OGZkYTA5ZWFkNWFhIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xuQEAgLTEyLDE2ICYjNDM7MTIsMTYgQEBcbiAgICAgICAgIGNvZGU6OiosXG4gICAgICAgICBSZXN1bHQsIC8vXG4gICAgIH0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIE9wYXF1ZSxcbiYjNDM7ICAgICAgICBPd25hYmxlLFxuJiM0MzsgICAgICAgIE93bmVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLCAvL1xuIH07XG4tdXNlIGNvcmU6Ontcbi0gICAgbWFya2VyOjpQaGFudG9tRGF0YSxcbi0gICAgbWVtOjpNYW51YWxseURyb3AsXG4tICAgIG9wczo6RGVyZWYsXG4tICAgIHB0cjo6e1xuLSAgICAgICAgc2VsZixcbi0gICAgICAgIE5vbk51bGwsIC8vXG4tICAgIH0sIC8vXG4mIzQzO3VzZSBjb3JlOjpwdHI6OntcbiYjNDM7ICAgIHNlbGYsXG4mIzQzOyAgICBOb25OdWxsLCAvL1xuIH07XG4gXG4gLy8vIEEgYml0d2lzZSBzaGlmdCBmb3IgdGhlIHBhZ2Ugc2l6ZS5cbkBAIC02NSw5MyAmIzQzOzY1LDI5IEBAIHB1YiBjb25zdCBmbiBwYWdlX2FsaWduKGFkZHI6IHVzaXplKSAtXHUwMDNlIE9wdGlvblx1MDAzY3VzaXplXHUwMDNlIHtcbiAgICAgU29tZShzdW0gXHUwMDI2IFBBR0VfTUFTSylcbiB9XG4gXG4tLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS5cbi0vLy9cbi0vLy8gVGhpcyB0eXBlIHByb3ZpZGVzIGEgYm9ycm93ZWQgdmVyc2lvbiBvZiBhIFtgUGFnZWBdIHRoYXQgaXMgb3duZWQgYnkgc29tZSBvdGhlciBlbnRpdHksIGUuZy4gYVxuLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uXG4tLy8vXG4tLy8vICMgRXhhbXBsZVxuLS8vL1xuLS8vLyBgYGBcbi0vLy8gIyB1c2Uga2VybmVsOjp7YmluZGluZ3MsIHByZWx1ZGU6Oip9O1xuLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9O1xuLS8vLyAjIHVzZSBjb3JlOjp7bWVtOjpNYXliZVVuaW5pdCwgcHRyLCBwdHI6Ok5vbk51bGwgfTtcbi0vLy9cbi0vLy8gZm4gYm9ycm93X3BhZ2VcdTAwM2MmIzM5O2FcdTAwM2UodmJveDogXHUwMDI2JiMzOTthIG11dCBWQm94XHUwMDNjTWF5YmVVbmluaXRcdTAwM2NbdTg7IFBBR0VfU0laRV1cdTAwM2VcdTAwM2UpIC1cdTAwM2UgQm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0vLy8gICAgIGxldCBwdHIgPSBwdHI6OmZyb21fcmVmKFx1MDAyNioqdmJveCk7XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6XG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuXG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGBzZWxmYC5cbi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuLS8vLyB9XG4tLy8vXG4tLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6Olx1MDAzY1t1ODsgUEFHRV9TSVpFXVx1MDAzZTo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87XG4tLy8vIGxldCBwYWdlID0gYm9ycm93X3BhZ2UoXHUwMDI2bXV0IHZib3gpO1xuLS8vL1xuLS8vLyAvLyBTQUZFVFk6IFRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgcmVhZCBvciB3cml0ZSB0byB0aGlzIHBhZ2UuXG4tLy8vIHVuc2FmZSB7IHBhZ2UuZmlsbF96ZXJvX3JhdygwLCBQQUdFX1NJWkUpPyB9O1xuLS8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4tLy8vIGBgYFxuLS8vL1xuLS8vLyAjIEludmFyaWFudHNcbi0vLy9cbi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuXG4tLy8vXG4tLy8vIFtgVkJveGBdOiBrZXJuZWw6OmFsbG9jOjpWQm94XG4tLy8vIFtgVm1hbGxvY2BdOiBrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2Ncbi1wdWIgc3RydWN0IEJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZShNYW51YWxseURyb3BcdTAwM2NQYWdlXHUwMDNlLCBQaGFudG9tRGF0YVx1MDAzY1x1MDAyNiYjMzk7YSBQYWdlXHUwMDNlKTtcbi1cbi1pbXBsXHUwMDNjJiMzOTthXHUwMDNlIEJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZSB7XG4tICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BCb3Jyb3dlZFBhZ2VgXSBmcm9tIGEgcmF3IHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLlxuLSAgICAvLy9cbi0gICAgLy8vICMgU2FmZXR5XG4tICAgIC8vL1xuLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC5cbi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4tICAgICAgICBsZXQgcGFnZSA9IFBhZ2UgeyBwYWdlOiBwdHIgfTtcbi1cbi0gICAgICAgIC8vIElOVkFSSUFOVDogVGhlIHNhZmV0eSByZXF1aXJlbWVudHMgZ3VhcmFudGVlIHRoYXQgYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWVcbi0gICAgICAgIC8vIGAmIzM5O2FgLlxuLSAgICAgICAgU2VsZihNYW51YWxseURyb3A6Om5ldyhwYWdlKSwgUGhhbnRvbURhdGEpXG4tICAgIH1cbi19XG4tXG4taW1wbFx1MDAzYyYjMzk7YVx1MDAzZSBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0gICAgdHlwZSBUYXJnZXQgPSBQYWdlO1xuLVxuLSAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4tICAgICAgICBcdTAwMjZzZWxmLjBcbi0gICAgfVxuLX1cbi1cbi0vLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gaW1wbGVtZW50YXRpb24gb2Zcbi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbiYjNDM7Ly8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMsIHN1Y2ggYXNcbiYjNDM7Ly8vIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxuIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHtcbiAgICAgLy8vIFRoZSBbYEl0ZXJhdG9yYF0gdHlwZSwgZS5nLiBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbi0gICAgdHlwZSBJdGVyXHUwMDNjJiMzOTthXHUwMDNlOiBJdGVyYXRvclx1MDAzY0l0ZW0gPSBCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2VcdTAwM2VcbiYjNDM7ICAgIHR5cGUgSXRlclx1MDAzYyYjMzk7YVx1MDAzZTogSXRlcmF0b3JcdTAwM2NJdGVtID0gXHUwMDI2JiMzOTthIFBhZ2VcdTAwM2VcbiAgICAgd2hlcmVcbiAgICAgICAgIFNlbGY6ICYjMzk7YTtcbiBcbi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuJiM0MzsgICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuICAgICBmbiBwYWdlX2l0ZXIoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgU2VsZjo6SXRlclx1MDAzYyYjMzk7X1x1MDAzZTtcbiB9XG4gXG4tLy8vIEEgcG9pbnRlciB0byBhIHBhZ2UgdGhhdCBvd25zIHRoZSBwYWdlIGFsbG9jYXRpb24uXG4mIzQzOy8vLyBBIGBzdHJ1Y3QgcGFnZWAuXG4mIzQzOy8vL1xuJiM0MzsvLy8gQSBgUGFnZWAgaXMgYWNjZXNzZWQgdGhyb3VnaCBhIHNoYXJlZCByZWZlcmVuY2Ugb3IgdGhyb3VnaCBhbiBvd25pbmcgW2BPd25lZFx1MDAzY1BhZ2VcdTAwM2VgXTsgdGhlIGxhdHRlclxuJiM0MzsvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuXG4gLy8vXG4gLy8vICMgSW52YXJpYW50c1xuIC8vL1xuLS8vLyBUaGUgcG9pbnRlciBpcyB2YWxpZCwgYW5kIGhhcyBvd25lcnNoaXAgb3ZlciB0aGUgcGFnZS5cbiYjNDM7Ly8vIFRoZSBgUGFnZWAgaXMgYmFja2VkIGJ5IGEgdmFsaWQgYHN0cnVjdCBwYWdlYC5cbiYjNDM7I1tyZXByKHRyYW5zcGFyZW50KV1cbiBwdWIgc3RydWN0IFBhZ2Uge1xuLSAgICBwYWdlOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UsXG4mIzQzOyAgICBwYWdlOiBPcGFxdWVcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSxcbiB9XG4gXG4gLy8gU0FGRVRZOiBQYWdlcyBoYXZlIG5vIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHRoZW0gc3RheWluZyBvbiBhIGdpdmVuIHRocmVhZCwgc28gbW92aW5nIHRoZW0gYWNyb3NzXG5AQCAtMTg1LDE5ICYjNDM7MTIxLDIwIEBAIGltcGwgUGFnZSB7XG4gICAgIC8vLyAjIE9rOjpcdTAwM2MoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvclx1MDAzZSgoKSlcbiAgICAgLy8vIGBgYFxuICAgICAjW2lubGluZV1cbi0gICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGYsIEFsbG9jRXJyb3JcdTAwM2Uge1xuJiM0MzsgICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQWxsb2NFcnJvclx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYGdmcF9mbGFnc2AsIHRoaXMgY2FsbCBtYXkgc2xlZXAuIE90aGVyIHRoYW4gdGhhdCwgaXRcbiAgICAgICAgIC8vIGlzIGFsd2F5cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2QuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjphbGxvY19wYWdlcyhmbGFncy5hc19yYXcoKSwgMCkgfTtcbiAgICAgICAgIGxldCBwYWdlID0gTm9uTnVsbDo6bmV3KHBhZ2UpLm9rX29yKEFsbG9jRXJyb3IpPztcbi0gICAgICAgIC8vIElOVkFSSUFOVDogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxuLSAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYFBhZ2VgIG9iamVjdC5cbi0gICAgICAgIE9rKFNlbGYgeyBwYWdlIH0pXG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XG4mIzQzOyAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYE93bmVkXHUwMDNjUGFnZVx1MDAzZWAgb2JqZWN0LlxuJiM0MzsgICAgICAgIC8vIFNpbmNlIGBQYWdlYCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHBvaW50ZXIgZGlyZWN0bHkuXG4mIzQzOyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KVxuICAgICB9XG4gXG4gICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuXG4gICAgIHB1YiBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqbXV0IGJpbmRpbmdzOjpwYWdlIHtcbi0gICAgICAgIHNlbGYucGFnZS5hc19wdHIoKVxuJiM0MzsgICAgICAgIE9wYXF1ZTo6Y2FzdF9pbnRvKFx1MDAyNnNlbGYucGFnZSlcbiAgICAgfVxuIFxuICAgICAvLy8gR2V0IHRoZSBub2RlIGlkIGNvbnRhaW5pbmcgdGhpcyBwYWdlLlxuQEAgLTIwNiw2ICYjNDM7MTQzLDIwIEBAIHB1YiBmbiBuaWQoXHUwMDI2c2VsZikgLVx1MDAzZSBpMzIge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBhZ2VfdG9fbmlkKHNlbGYuYXNfcHRyKCkpIH1cbiAgICAgfVxuIFxuJiM0MzsgICAgLy8vIENyZWF0ZSBhIGBcdTAwMjZQYWdlYCBmcm9tIGEgcmF3IGBzdHJ1Y3QgcGFnZWAgcG9pbnRlci5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vICMgU2FmZXR5XG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBgcHRyYCBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkIHJlZmVyZW5jZSB3aXRoIGEgbGlmZXRpbWUgb2YgYCYjMzk7YWAuXG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXdcdTAwM2MmIzM5O2FcdTAwM2UocHRyOiAqY29uc3QgYmluZGluZ3M6OnBhZ2UpIC1cdTAwM2UgXHUwMDI2JiMzOTthIFNlbGYge1xuJiM0MzsgICAgICAgIC8vIElOVkFSSUFOVDogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIHJlZmVycyB0byBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAsIHNvXG4mIzQzOyAgICAgICAgLy8gdGhlIHJldHVybmVkIHJlZmVyZW5jZSB1cGhvbGRzIHRoZSB0eXBlIGludmFyaWFudCBvZiBgUGFnZWAuXG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyBub3QgbnVsbCBhbmQgaXMgY29udmVydGlibGUgdG8gYSBzaGFyZWRcbiYjNDM7ICAgICAgICAvLyByZWZlcmVuY2UuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnB0ci5jYXN0KCkgfVxuJiM0MzsgICAgfVxuJiM0MztcbiAgICAgLy8vIFJ1bnMgYSBwaWVjZSBvZiBjb2RlIHdpdGggdGhpcyBwYWdlIG1hcHBlZCB0byBhbiBhZGRyZXNzLlxuICAgICAvLy9cbiAgICAgLy8vIFRoZSBwYWdlIGlzIHVubWFwcGVkIHdoZW4gdGhpcyBjYWxsIHJldHVybnMuXG5AQCAtMzcyLDEwICYjNDM7MzIzLDExIEBAIHB1YiB1bnNhZmUgZm4gY29weV9mcm9tX3VzZXJfc2xpY2VfcmF3KFxuICAgICB9XG4gfVxuIFxuLWltcGwgRHJvcCBmb3IgUGFnZSB7XG4mIzQzO2ltcGwgT3duYWJsZSBmb3IgUGFnZSB7XG4gICAgICNbaW5saW5lXVxuLSAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4tICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZSBpdC5cbi0gICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXMoc2VsZi5wYWdlLmFzX3B0cigpLCAwKSB9O1xuJiM0MzsgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWVcbiYjNDM7ICAgICAgICAvLyBpdC4gU2luY2UgUGFnZSBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHJhdyBwb2ludGVyIGRpcmVjdGx5LlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXModGhpcy5hc19wdHIoKS5jYXN0KCksIDApIH07XG4gICAgIH1cbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzXG5pbmRleCA1MDcxY2FlNjU0M2ZkMi4uZWE5ZWY5OWNlY2IwNzYgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuQEAgLTE5LDYgJiM0MzsxOSwxMCBAQFxuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OkNTdHIsXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTQ4MSw3ICYjNDM7NDg1LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBpbXBsXHUwMDNjJiMzOTthXHUwMDNlIGNyYXRlOjpkbWE6OkRldmljZVx1MDAzYyYjMzk7YVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJiMzOTthXHUwMDNlXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGNpX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTtcbkBAIC00OTMsNiAmIzQzOzQ5NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5pbmRleCA5NzlhOTcxOGYxNTNkOC4uMDY3ZjY4Yjk5ZThjNWMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5AQCAtNyw3ICYjNDM7NywxNCBAQFxuIC8vISBDIGhlYWRlcjogW2BpbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmgpIGFuZFxuIC8vISBbYGluY2x1ZGUvbGludXgvcGlkLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkLmgpXG4gXG4tdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHR5cGVzOjpPcGFxdWV9O1xuJiM0Mzt1c2UgY3JhdGU6OntcbiYjNDM7ICAgIGJpbmRpbmdzLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBPcGFxdWUsIC8vXG4mIzQzOyAgICB9LCAvL1xuJiM0Mzt9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBwaWRfbmFtZXNwYWNlYC4gVGhyZWFkIHNhZmUuXG5AQCAtNDEsNyAmIzQzOzQ4LDcgQEAgcHViIHVuc2FmZSBmbiBmcm9tX3B0clx1MDAzYyYjMzk7YVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLVx1MDAzZSBcdTAwMjYmIzM5O2EgU2VsZiB7XG4gfVxuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBQaWROYW1lc3BhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxuQEAgLTU1LDYgJiM0Mzs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1BpZE5hbWVzcGFjZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjUGlkTmFtZXNwYWNlXHUwMDNlYCBmcm9tXG4mIzQzOy8vIGEgYFx1MDAyNlBpZE5hbWVzcGFjZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fVxuJiM0MztcbiAvLyBTQUZFVFk6XG4gLy8gLSBgUGlkTmFtZXNwYWNlOjpkZWNfcmVmYCBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC5cbiAvLyAtIEl0IGlzIG9rYXkgdG8gc2VuZCBvd25lcnNoaXAgb2YgYFBpZE5hbWVzcGFjZWAgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzIGIvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcbmluZGV4IDliMzYyZTA0OTVkMzIzLi4wYmE2NzY0NDViMDZkNyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuQEAgLTI3LDYgJiM0MzsyNywxMCBAQFxuICAgICB9LFxuICAgICBvZixcbiAgICAgcHJlbHVkZTo6KixcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtNTE4LDcgJiM0Mzs1MjIsNyBAQCBwdWIgZm4gb3B0aW9uYWxfaXJxX2J5X25hbWUoXHUwMDI2c2VsZiwgbmFtZTogXHUwMDI2Q1N0cikgLVx1MDAzZSBSZXN1bHRcdTAwM2NJcnFSZXF1ZXN0XHUwMDNjJiMzOTtfXHUwMDNlXHUwMDNlIHtcbiBpbXBsXHUwMDNjJiMzOTthXHUwMDNlIGNyYXRlOjpkbWE6OkRldmljZVx1MDAzYyYjMzk7YVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJiMzOTthXHUwMDNlXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUzMCw2ICYjNDM7NTM0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZEZXZpY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbiYjNDM7XG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcHdtLnJzIGIvcnVzdC9rZXJuZWwvcHdtLnJzXG5pbmRleCA2YzlkNjY3MDA5ZWY3Yi4uMmQxY2Q3NGRkOThlMWUgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wd20ucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3B3bS5yc1xuQEAgLTEzLDcgJiM0MzsxMywxMSBAQFxuICAgICBkZXZyZXMsXG4gICAgIGVycm9yOjp7c2VsZiwgdG9fcmVzdWx0fSxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy9cbiB9O1xuIHVzZSBjb3JlOjp7XG5AQCAtNjI5LDcgJiM0Mzs2MzMsNyBAQCBwdWIgZm4gbmV3XHUwMDNjJiMzOTthXHUwMDNlKFxuIH1cbiBcbiAvLyBTQUZFVFk6IEltcGxlbWVudHMgcmVmY291bnRpbmcgZm9yIGBDaGlwYCB1c2luZyB0aGUgZW1iZWRkZWQgYHN0cnVjdCBkZXZpY2VgLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHtcbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IGBzZWxmLjAuZ2V0KClgIHBvaW50cyB0byBhIHZhbGlkIGBwd21fY2hpcGAgYmVjYXVzZSBgc2VsZmAgZXhpc3RzLlxuQEAgLTY0Nyw2ICYjNDM7NjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY0NoaXBcdTAwM2NUXHUwMDNlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NDaGlwXHUwMDNjVFx1MDAzZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZDaGlwXHUwMDNjVFx1MDAzZWAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO1xuIC8vIFNBRkVUWTogYENoaXBgIGlzIGEgd3JhcHBlciBhcm91bmQgYCptdXQgYmluZGluZ3M6OnB3bV9jaGlwYC4gVGhlIHVuZGVybHlpbmcgQ1xuIC8vIHN0cnVjdHVyZSYjMzk7cyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgbW9kZWxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzIGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXG5pbmRleCBiNzIxYjJlMDBiOTg2Zi4uZTZmZmU3YzY1MGMzOWMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xuQEAgLTExLDcgJiM0MzsxMSw3IEBAXG4gLy8hIHVuZGVybHlpbmcgb2JqZWN0LCBidXQgdGhpcyByZWZjb3VudCBpcyBpbnRlcm5hbCB0byB0aGUgb2JqZWN0LiBJdCBlc3NlbnRpYWxseSBpcyBhIFJ1c3RcbiAvLyEgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBnZXRfYCBhbmQgYHB1dF9gIHBhdHRlcm4gdXNlZCBpbiBDIGZvciByZWZlcmVuY2UgY291bnRpbmcuXG4gLy8hXG4tLy8hIFRvIG1ha2UgdXNlIG9mIFtgQVJlZlx1MDAzY015VHlwZVx1MDAzZWBdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BBbHdheXNSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXRcbiYjNDM7Ly8hIFRvIG1ha2UgdXNlIG9mIFtgQVJlZlx1MDAzY015VHlwZVx1MDAzZWBdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXRcbiAvLyEgZm9yIGFjY2Vzc2luZyB0aGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IG9mIGFuIG9iamVjdCBvZiB0aGUgYE15VHlwZWAgdHlwZS5cbiAvLyFcbiAvLyEgW2BBcmNgXTogY3JhdGU6OnN5bmM6OkFyY1xuQEAgLTIzLDI2ICYjNDM7MjMsMzUgQEBcbiAgICAgb3BzOjpEZXJlZixcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4mIzQzO3VzZSBrZXJuZWw6OnR5cGVzOjp7XG4mIzQzOyAgICBPd25hYmxlUmVmQ291bnRlZCxcbiYjNDM7ICAgIE93bmVkLCAvL1xuJiM0Mzt9O1xuIFxuLS8vLyBUeXBlcyB0aGF0IGFyZSBfYWx3YXlzXyByZWZlcmVuY2UgY291bnRlZC5cbiYjNDM7Ly8vIFR5cGVzIHRoYXQgYXJlIGludGVybmFsbHkgcmVmZXJlbmNlIGNvdW50ZWQuXG4gLy8vXG4gLy8vIEl0IGFsbG93cyBzdWNoIHR5cGVzIHRvIGRlZmluZSB0aGVpciBvd24gY3VzdG9tIHJlZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBmdW5jdGlvbnMuXG4tLy8vIEFkZGl0aW9uYWxseSwgaXQgYWxsb3dzIHVzZXJzIHRvIGNvbnZlcnQgZnJvbSBhIHNoYXJlZCByZWZlcmVuY2UgYFx1MDAyNlRgIHRvIGFuIG93bmVkIHJlZmVyZW5jZVxuLS8vLyBbYEFSZWZcdTAwM2NUXHUwMDNlYF0uXG4gLy8vXG4gLy8vIFRoaXMgaXMgdXN1YWxseSBpbXBsZW1lbnRlZCBieSB3cmFwcGVycyB0byBleGlzdGluZyBzdHJ1Y3R1cmVzIG9uIHRoZSBDIHNpZGUgb2YgdGhlIGNvZGUuIEZvclxuIC8vLyBSdXN0IGNvZGUsIHRoZSByZWNvbW1lbmRhdGlvbiBpcyB0byB1c2UgW2BBcmNgXShjcmF0ZTo6c3luYzo6QXJjKSB0byBjcmVhdGUgcmVmZXJlbmNlLWNvdW50ZWRcbiAvLy8gaW5zdGFuY2VzIG9mIGEgdHlwZS5cbiAvLy9cbiYjNDM7Ly8vIE5vdGU6IEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXS4gSXQgcmVxdWlyZXMgYW5cbiYjNDM7Ly8vIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBhbmQgcHJvdmlkZXMgb25seSBzaGFyZWQgcmVmZXJlbmNlcy4gSWYgdW5pcXVlIHJlZmVyZW5jZXMgYXJlIHJlcXVpcmVkXG4mIzQzOy8vLyBbYE93bmFibGVgXShjcmF0ZTo6dHlwZXM6Ok93bmFibGUpIHNob3VsZCBiZSBpbXBsZW1lbnRlZCB3aGljaCBhbGxvd3MgdHlwZXMgdG8gYmUgd3JhcHBlZCBpbiBhblxuJiM0MzsvLy8gW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdFxuJiM0MzsvLy8gW2BPd25hYmxlUmVmQ291bnRlZGBdIGFsbG93cyB0byBjb252ZXJ0IGJldHdlZW4gdW5pcXVlIGFuZFxuJiM0MzsvLy8gc2hhcmVkIHJlZmVyZW5jZXMgKGkuZS4gW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKSBhbmRcbiYjNDM7Ly8vIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXSkuXG4mIzQzOy8vL1xuIC8vLyAjIFNhZmV0eVxuIC8vL1xuIC8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBpbmNyZW1lbnRzIHRvIHRoZSByZWZlcmVuY2UgY291bnQga2VlcCB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeVxuIC8vLyBhdCBsZWFzdCB1bnRpbCBtYXRjaGluZyBkZWNyZW1lbnRzIGFyZSBwZXJmb3JtZWQuXG4gLy8vXG4gLy8vIEltcGxlbWVudGVycyBtdXN0IGFsc28gZW5zdXJlIHRoYXQgYWxsIGluc3RhbmNlcyBhcmUgcmVmZXJlbmNlLWNvdW50ZWQuIChPdGhlcndpc2UgdGhleVxuLS8vLyB3b24mIzM5O3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BBbHdheXNSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0XG4tLy8vIGFsaXZlLilcbi1wdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xuJiM0MzsvLy8gd29uJiMzOTt0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdCBhbGl2ZS4pXG4mIzQzO3B1YiB1bnNhZmUgdHJhaXQgUmVmQ291bnRlZCB7XG4gICAgIC8vLyBJbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIG9iamVjdC5cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKTtcbiBcbkBAIC01NSwxMSAmIzQzOzY0LDI3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgd2FzIGEgcHJldmlvdXMgbWF0Y2hpbmcgaW5jcmVtZW50IHRvIHRoZSByZWZlcmVuY2UgY291bnQsXG4gICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heVxuICAgICAvLy8gcmVzdWx0IGluIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQpLCB1bmxlc3MgdGhlIGNhbGxlciBvd25zIGFub3RoZXIgaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudFxuLSAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzXG4tICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbiYjNDM7ICAgIC8vLyAoZS5nLiwgaXQgY2FsbHMgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0gdHdpY2UsIHRoZW4gY2FsbHMgW2BSZWZDb3VudGVkOjpkZWNfcmVmYF0gb25jZSkuXG4gICAgIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpO1xuIH1cbiBcbiYjNDM7Ly8vIEFsd2F5cyByZWZlcmVuY2UtY291bnRlZCB0eXBlLlxuJiM0MzsvLy9cbiYjNDM7Ly8vIEl0IGFsbG93cyBkZXJpdmluZyBhIGNvdW50ZWQgcmVmZXJlbmNlIFtgQVJlZlx1MDAzY1RcdTAwM2VgXSBmcm9tIGEgYFx1MDAyNlRgLlxuJiM0MzsvLy9cbiYjNDM7Ly8vIFRoaXMgcHJvdmlkZXMgc29tZSBjb252ZW5pZW5jZSwgYnV0IGl0IGFsbG93cyBcJiMzNDtlc2NhcGluZ1wmIzM0OyBib3Jyb3cgY2hlY2tzIG9uIGBcdTAwMjZUYC4gQXMgaXRcbiYjNDM7Ly8vIGNvbXBsaWNhdGVzIGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IGEgcmVmZXJlbmNlIHRvIFQgaXMgdW5pcXVlLCBpdCBpcyBvcHRpb25hbCB0byBwcm92aWRlIGZvclxuJiM0MzsvLy8gW2BSZWZDb3VudGVkYF0gdHlwZXMuIFNlZSAqU2FmZXR5KiBiZWxvdy5cbiYjNDM7Ly8vXG4mIzQzOy8vLyAjIFNhZmV0eVxuJiM0MzsvLy9cbiYjNDM7Ly8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IG5vIHNhZmV0eSBpbnZhcmlhbnRzIGFyZSB2aW9sYXRlZCBieSB1cGdyYWRpbmcgYW4gYFx1MDAyNlRgIHRvIGFuXG4mIzQzOy8vLyBbYEFSZWZcdTAwM2NUXHUwMDNlYF0uIEluIHBhcnRpY3VsYXIgdGhhdCBpbXBsaWVzIFtgQWx3YXlzUmVmQ291bnRlZGBdIGFuZCBbYGNyYXRlOjp0eXBlczo6T3duYWJsZWBdXG4mIzQzOy8vLyBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgZm9yIHRoZSBzYW1lIHR5cGUsIGFzIHRoaXMgd291bGQgYWxsb3cgdmlvbGF0aW5nIHRoZSB1bmlxdWVuZXNzIGd1YXJhbnRlZVxuJiM0MzsvLy8gb2YgW2BjcmF0ZTo6dHlwZXM6Ok93bmVkXHUwMDNjVFx1MDAzZWBdIGJ5IGRlcmVmZXJlbmNpbmcgaXQgaW50byBhbiBgXHUwMDI2VGAgYW5kIG9idGFpbmluZyBhbiBbYEFSZWZgXSBmcm9tXG4mIzQzOy8vLyB0aGF0LlxuJiM0MztwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQ6IFJlZkNvdW50ZWQge31cbiYjNDM7XG4gLy8vIEFuIG93bmVkIHJlZmVyZW5jZSB0byBhbiBhbHdheXMtcmVmZXJlbmNlLWNvdW50ZWQgb2JqZWN0LlxuIC8vL1xuIC8vLyBUaGUgb2JqZWN0JiMzOTtzIHJlZmVyZW5jZSBjb3VudCBpcyBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BBUmVmYF0gaXNcbkBAIC03MCw3ICYjNDM7OTUsNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xuIC8vL1xuIC8vLyBUaGUgcG9pbnRlciBzdG9yZWQgaW4gYHB0cmAgaXMgbm9uLW51bGwgYW5kIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIFtgQVJlZmBdIGluc3RhbmNlLiBJblxuIC8vLyBwYXJ0aWN1bGFyLCB0aGUgW2BBUmVmYF0gaW5zdGFuY2Ugb3ducyBhbiBpbmNyZW1lbnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0JiMzOTtzIHJlZmVyZW5jZSBjb3VudC5cbi1wdWIgc3RydWN0IEFSZWZcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIHtcbiYjNDM7cHViIHN0cnVjdCBBUmVmXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSB7XG4gICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4gICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY1RcdTAwM2UsXG4gfVxuQEAgLTc5LDE5ICYjNDM7MTA0LDE5IEBAIHB1YiBzdHJ1Y3QgQVJlZlx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2Uge1xuIC8vIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSwgaXQgbmVlZHNcbiAvLyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhbiBgQVJlZlx1MDAzY1RcdTAwM2VgIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYVxuIC8vIG11dGFibGUgcmVmZXJlbmNlLCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZFx1MDAzZSBTZW5kIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kXHUwMDNlIFNlbmQgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYFx1MDAyNkFSZWZcdTAwM2NUXHUwMDNlYCB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBgU3luY2BcbiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSxcbiAvLyBpdCBuZWVkcyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhIGBcdTAwMjZBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW5cbiAvLyBgQVJlZlx1MDAzY1RcdTAwM2VgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yXG4gLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZFx1MDAzZSBTeW5jIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kXHUwMDNlIFN5bmMgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gLy8gRXZlbiBpZiBgVGAgaXMgcGlubmVkLCBwb2ludGVycyB0byBgVGAgY2FuIHN0aWxsIG1vdmUuXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgVW5waW4gZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYEFSZWZgXS5cbiAgICAgLy8vXG4gICAgIC8vLyBJdCB0YWtlcyBvdmVyIGFuIGluY3JlbWVudCBvZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbkBAIC0xMjAsMTkgJiM0MzsxNDUsMjEgQEAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlKSAtXHUwMDNlIFNlbGYge1xuICAgICAvLy9cbiAgICAgLy8vIGBgYFxuICAgICAvLy8gdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcbi0gICAgLy8vIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfTtcbiYjNDM7ICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XG4gICAgIC8vL1xuICAgICAvLy8gc3RydWN0IEVtcHR5IHt9XG4gICAgIC8vL1xuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXG4tICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7XG4mIzQzOyAgICAvLy8gLy8gU0FGRVRZOiBUaGUgYFJlZkNvdW50ZWRgIGltcGxlbWVudGF0aW9uIGZvciBgRW1wdHlgIGRvZXMgbm90IGNvdW50IHJlZmVyZW5jZXMgYW5kIG5ldmVyXG4mIzQzOyAgICAvLy8gLy8gZnJlZXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0LiBUaHVzIHdlIGNhbiBhY3QgYXMgb3duaW5nIGFuIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnQgZm9yXG4mIzQzOyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLlxuJiM0MzsgICAgLy8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEVtcHR5IHtcbiAgICAgLy8vICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHt9XG4gICAgIC8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYoX29iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHt9XG4gICAgIC8vLyB9XG4gICAgIC8vL1xuICAgICAvLy8gbGV0IG11dCBkYXRhID0gRW1wdHkge307XG4gICAgIC8vLyBsZXQgcHRyID0gTm9uTnVsbDo6XHUwMDNjRW1wdHlcdTAwM2U6Om5ldyhcdTAwMjZtdXQgZGF0YSkudW53cmFwKCk7XG4tICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy5cbiYjNDM7ICAgIC8vLyAvLyBTQUZFVFk6IFdlIGtlZXAgYGRhdGFgIGFyb3VuZCBsb25nZXIgdGhhbiB0aGUgYEFSZWZgLlxuICAgICAvLy8gbGV0IGRhdGFfcmVmOiBBUmVmXHUwMDNjRW1wdHlcdTAwM2UgPSB1bnNhZmUgeyBBUmVmOjpmcm9tX3JhdyhwdHIpIH07XG4gICAgIC8vLyBsZXQgcmF3X3B0cjogTm9uTnVsbFx1MDAzY0VtcHR5XHUwMDNlID0gQVJlZjo6aW50b19yYXcoZGF0YV9yZWYpO1xuICAgICAvLy9cbkBAIC0xNDMsNyAmIzQzOzE3MCw3IEBAIHB1YiBmbiBpbnRvX3JhdyhtZTogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgZm4gY2xvbmUoXHUwMDI2c2VsZikgLVx1MDAzZSBTZWxmIHtcbiAgICAgICAgIHNlbGYuaW5jX3JlZigpO1xuICAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IGluY3JlbWVudGVkIHRoZSByZWZjb3VudCBhYm92ZS5cbkBAIC0xNTEsNyAmIzQzOzE3OCw3IEBAIGZuIGNsb25lKFx1MDAyNnNlbGYpIC1cdTAwM2UgU2VsZiB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgRGVyZWYgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRGVyZWYgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBUO1xuIFxuICAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG5AQCAtMTY4LDcgJiM0MzsxOTUsMTQgQEAgZm4gZnJvbShiOiBcdTAwMjZUKSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIERyb3AgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IE93bmFibGVSZWZDb3VudGVkXHUwMDNlIEZyb21cdTAwM2NPd25lZFx1MDAzY1RcdTAwM2VcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgZm4gZnJvbShiOiBPd25lZFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4mIzQzOyAgICAgICAgVDo6aW50b19zaGFyZWQoYilcbiYjNDM7ICAgIH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UmIzM5O3JlIGFib3V0IHRvXG4gICAgICAgICAvLyBkZWNyZW1lbnQuXG5AQCAtMTc4LDE5ICYjNDM7MjEyLDE5IEBAIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbiBcbiBpbXBsXHUwMDNjVCwgVVx1MDAzZSBQYXJ0aWFsRXFcdTAwM2NBUmVmXHUwMDNjVVx1MDAzZVx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4tICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICBUOiBSZWZDb3VudGVkICYjNDM7IFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4mIzQzOyAgICBVOiBSZWZDb3VudGVkLFxuIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZBUmVmXHUwMDNjVVx1MDAzZSkgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIFQ6OmVxKFx1MDAyNioqc2VsZiwgXHUwMDI2KipvdGhlcilcbiAgICAgfVxuIH1cbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBFcVx1MDAzZSBFcSBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgJiM0MzsgRXFcdTAwM2UgRXEgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjXHUwMDI2JiMzOTtfIFVcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuJiM0MzsgICAgVDogUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZcdTAwMjZVKSAtXHUwMDNlIGJvb2wge1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3Rhc2sucnMgYi9ydXN0L2tlcm5lbC90YXNrLnJzXG5pbmRleCAzODI3M2Y0ZWVkYjUxMy4uNjI1OTQzMGIwY2EzMTggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC90YXNrLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90YXNrLnJzXG5AQCAtMTAsNyAmIzQzOzEwLDEyIEBAXG4gICAgIHBpZF9uYW1lc3BhY2U6OlBpZE5hbWVzcGFjZSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgc3luYzo6YXJlZjo6QVJlZixcbi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LFxuJiM0MzsgICAgdHlwZXM6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE5vdFRocmVhZFNhZmUsXG4mIzQzOyAgICAgICAgT3BhcXVlLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuIH07XG4gdXNlIGNvcmU6OntcbiAgICAgb3BzOjpEZXJlZixcbkBAIC0zNDcsNyAmIzQzOzM1Miw3IEBAIHB1YiBmbiBncm91cF9sZWFkZXIoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZUYXNrIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBUYXNrYCBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFRhc2sge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMzYxLDYgJiM0MzszNjYsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NUYXNrXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNlRhc2tgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHt9XG4mIzQzO1xuIGltcGwgUGFydGlhbEVxIGZvciBUYXNrIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZTZWxmKSAtXHUwMDNlIGJvb2wge1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3R5cGVzLnJzIGIvcnVzdC9rZXJuZWwvdHlwZXMucnNcbmluZGV4IGFjMzE2ZmQ3YjUzOGZlLi42YWE3NjA5NTJjYjYzNSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3R5cGVzLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xuQEAgLTE1LDYgJiM0MzsxNSwxOCBAQFxuIHB1YiBtb2QgZm9yX2x0O1xuIHB1YiB1c2UgZm9yX2x0OjpGb3JMdDtcbiBcbiYjNDM7cHViIHVzZSBjcmF0ZTo6e1xuJiM0MzsgICAgb3duZWQ6OntcbiYjNDM7ICAgICAgICBPd25hYmxlLFxuJiM0MzsgICAgICAgIE93bmFibGVSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE93bmVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LCAvL1xuJiM0Mzt9O1xuJiM0MztcbiAvLy8gVXNlZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgdG8gYW5kIGZyb20gZm9yZWlnbiAobm9uLVJ1c3QpIGxhbmd1YWdlcy5cbiAvLy9cbiAvLy8gT3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIGZyb20gUnVzdCB0byBhIGZvcmVpZ24gbGFuZ3VhZ2UgYnkgY2FsbGluZyBbYFNlbGY6OmludG9fZm9yZWlnbmBdIGFuZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuaW5kZXggN2FmZjBjODJkMGFmYzAuLjU5MzUwYzZiMGRmMmFkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvdXNiLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC91c2IucnNcbkBAIC0xOCw3ICYjNDM7MTgsMTAgQEBcbiAgICAgICAgIHRvX3Jlc3VsdCwgLy9cbiAgICAgfSxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtMzkyLDcgJiM0MzszOTUsNyBAQCBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZEZXZpY2Uge1xuIH1cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSW50ZXJmYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgSW50ZXJmYWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9pbnRlcmZhY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXG5AQCAtNDA2LDYgJiM0Mzs0MDksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjSW50ZXJmYWNlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkludGVyZmFjZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7fVxuJiM0MztcbiAvLyBTQUZFVFk6IEEgYEludGVyZmFjZWAgaXMgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIGFuZCBjYW4gYmUgcmVsZWFzZWQgZnJvbSBhbnkgdGhyZWFkLlxuIHVuc2FmZSBpbXBsIFNlbmQgZm9yIEludGVyZmFjZSB7fVxuIFxuQEAgLTQ0Myw3ICYjNDM7NDUwLDcgQEAgZm4gYXNfcmF3KFx1MDAyNnNlbGYpIC1cdTAwM2UgKm11dCBiaW5kaW5nczo6dXNiX2RldmljZSB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXG5AQCAtNDU3LDYgJiM0Mzs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkRldmljZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuJiM0MztcbiBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC93b3JrcXVldWUucnMgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnNcbmluZGV4IDdlMjUzYjZmMjk5Y2UzLi43NzY3M2I4ZWE0NWZiMSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG5AQCAtMTkyLDcgJiM0MzsxOTIsNyBAQFxuICAgICBzeW5jOjp7XG4gICAgICAgICBhcmVmOjp7XG4gICAgICAgICAgICAgQVJlZixcbi0gICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICAgICAgfSxcbiAgICAgICAgIEFyYyxcbiAgICAgICAgIExvY2tDbGFzc0tleSwgLy9cbkBAIC05NTQsNyAmIzQzOzk1NCw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBSYXdEZWxheWVkV29ya0l0ZW1cdTAwM2NJRFx1MDAzZSBmb3IgUGluXHUwMDNjS0JveFx1MDAzY1RcdTAwM2VcdTAwM2VcbiAvLyAgICAgaW1wbGVtZW50YXRpb24gb2YgYFdvcmtJdGVtUG9pbnRlcmAgZm9yIGBBUmVmXHUwMDNjVFx1MDAzZWAuXG4gdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFdvcmtJdGVtUG9pbnRlclx1MDAzY0lEXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIHdoZXJlXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICBUOiBSZWZDb3VudGVkLFxuICAgICBUOiBXb3JrSXRlbVx1MDAzY0lELCBQb2ludGVyID0gU2VsZlx1MDAzZSxcbiAgICAgVDogSGFzV29ya1x1MDAzY1QsIElEXHUwMDNlLFxuIHtcbkBAIC05ODcsNyAmIzQzOzk4Nyw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiAvLyByZXF1aXJlbWVudHMgb2YgYFdvcmtJdGVtUG9pbnRlcmAuXG4gdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd1dvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsXG4gICAgIFQ6IFdvcmtJdGVtXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXHUwMDNlLFxuICAgICBUOiBIYXNXb3JrXHUwMDNjVCwgSURcdTAwM2UsXG4ge1xuQEAgLTEwMjAsNyAmIzQzOzEwMjAsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc0RlbGF5ZWRXb3JrXHUwMDNjVCwgSURcdTAwM2UsXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICBUOiBSZWZDb3VudGVkLFxuIHtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIEl0IGludHJvZHVjZXMgYE93bmVkYCBhbmQgYE93bmFibGVgIHR5cGVzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCBhZGFwdHMgZXhpc3RpbmcgUnVzdCBjb2RlIChsaWtlIGBQYWdlYCBhbmQgdGhlIEFuZHJvaWQgQmluZGVyIGRyaXZlcikgdG8gdXNlIHRoZXNlIG5ldyB0eXBlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljLCBuZXcgZHJpdmVycywgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY2NDMwYTcxMDJlZjc0ZTlkNGIyZWQ0MjQ3ZDhmZjE1ZjVlYWY2ZTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAyMjowNjowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycwppbmRleCBlNTRhOTBlNjI0MDJhNC4uNzk0MWViODViNGVmNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnMKQEAgLTMzLDcgJiM0MzszMyw3IEBACiAgICAgc3luYzo6e2FyZWY6OkFSZWYsIE11dGV4LCBTcGluTG9ja30sCiAgICAgdGFzazo6UGlkLAogICAgIHRyYW5zbXV0ZTo6RnJvbUJ5dGVzLAotICAgIHR5cGVzOjpPcGFxdWUsCiYjNDM7ICAgIHR5cGVzOjp7T3BhcXVlLCBPd25lZH0sCiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLAogfTsKIApAQCAtMTk4LDcgJiM0MzsxOTgsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbm5lciB7fQogI1tyZXByKEMpXQogc3RydWN0IFBhZ2VJbmZvIHsKICAgICBscnU6IGJpbmRpbmdzOjpsaXN0X2hlYWQsCi0gICAgcGFnZTogT3B0aW9uJmx0O1BhZ2UmZ3Q7LAomIzQzOyAgICBwYWdlOiBPcHRpb24mbHQ7T3duZWQmbHQ7UGFnZSZndDsmZ3Q7LAogICAgIHJhbmdlOiAqY29uc3QgU2hyaW5rYWJsZVBhZ2VSYW5nZSwKIH0KIApAQCAtMjA2LDcgJiM0MzsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHsKICAgICAvLy8gIyBTYWZldHkKICAgICAvLy8KICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0LgotICAgIHVuc2FmZSBmbiBzZXRfcGFnZShtZTogKm11dCBQYWdlSW5mbywgcGFnZTogUGFnZSkgewomIzQzOyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkJmx0O1BhZ2UmZ3Q7KSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuCiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyAmYW1wO3JhdyBtdXQgKCptZSkucGFnZSB9OwogCkBAIC0yMjksMTMgJiM0MzsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlJmx0OyYjMzk7YSZndDsobWU6ICpjb25zdCBQYWdlSW5mbykgLSZndDsgT3B0aW9uJmx0OyZhbXA7JiMzOTthIFBhZ2UmZ3Q7IHsKICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7ICZhbXA7cmF3IGNvbnN0ICgqbWUpLnBhZ2UgfTsKIAogICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIGZvciByZWFkaW5nLgotICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfcmVmKCkgfQomIzQzOyAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX2RlcmVmKCkgfQogICAgIH0KIAogICAgIC8vLyAjIFNhZmV0eQogICAgIC8vLwogICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICYjMzk7YS4KLSAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtJmd0OyBPcHRpb24mbHQ7UGFnZSZndDsgewomIzQzOyAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtJmd0OyBPcHRpb24mbHQ7T3duZWQmbHQ7UGFnZSZndDsmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy4KICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7ICZhbXA7cmF3IG11dCAoKm1lKS5wYWdlIH07CiAKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycwppbmRleCBjZDQyMDNmMjdhZWQwNi4uYzdiOWIwNjljZjc1ZGQgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnMKQEAgLTE2OSw3ICYjNDM7MTY5LDcgQEAgdW5zYWZlIGZuIHJlYWxsb2MoCiB9CiAKIGltcGwgVm1hbGxvYyB7Ci0gICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgcGFnZTo6Qm9ycm93ZWRQYWdlYF0uCiYjNDM7ICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2UuCiAgICAgLy8vCiAgICAgLy8vICMgRXhhbXBsZXMKICAgICAvLy8KQEAgLTIwMiwyMCAmIzQzOzIwMiwxNyBAQCBpbXBsIFZtYWxsb2MgewogICAgIC8vLwogICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi4KICAgICAvLy8gLSBgcHRyYCBtdXN0IHJlbWFpbiB2YWxpZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiBgJiMzOTthYC4KLSAgICBwdWIgdW5zYWZlIGZuIHRvX3BhZ2UmbHQ7JiMzOTthJmd0OyhwdHI6IE5vbk51bGwmbHQ7dTgmZ3Q7KSAtJmd0OyBwYWdlOjpCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OyB7CiYjNDM7ICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZSZsdDsmIzM5O2EmZ3Q7KHB0cjogTm9uTnVsbCZsdDt1OCZndDspIC0mZ3Q7ICZhbXA7JiMzOTthIHBhZ2U6OlBhZ2UgewogICAgICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LgogICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTsKIAotICAgICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZCBwb2ludGVyCi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuCi0gICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwYWdlKSB9OwotCiAgICAgICAgIC8vIFNBRkVUWToKLSAgICAgICAgLy8gLSBgcGFnZWAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZgotICAgICAgICAvLyAgIHRoaXMgZnVuY3Rpb24gYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYFZtYWxsb2NgIGFsbG9jYXRpb24uCi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZgotICAgICAgICAvLyAgIGAmIzM5O2FgLgotICAgICAgICB1bnNhZmUgeyBwYWdlOjpCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH0KJiM0MzsgICAgICAgIC8vIC0gYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkLCBub24tbnVsbCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZAomIzQzOyAgICAgICAgLy8gICBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnksIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbgomIzQzOyAgICAgICAgLy8gICBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi4KJiM0MzsgICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCwgYW5kIGhlbmNlIHRoZSBgc3RydWN0IHBhZ2VgLCBpcwomIzQzOyAgICAgICAgLy8gICB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBgJiMzOTthYC4KJiM0MzsgICAgICAgIHVuc2FmZSB7ICZhbXA7KnBhZ2UuY2FzdCgpIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzIGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnMKaW5kZXggMDJmZGEzZWE1Y2FlNjYuLjhkY2MxNmVkODk4OTMxIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwpAQCAtOSw3ICYjNDM7OSw3IEBACiAgICAgcHRyOjpOb25OdWxsLCAvLwogfTsKIAotLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi4KJiM0MzsvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLgogLy8vCiAvLy8gIyBHdWFyYW50ZWVzCiAvLy8KQEAgLTI4LDExICYjNDM7MjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXImbHQ7JiMzOTthJmd0OyB7CiAgICAgc2l6ZTogdXNpemUsCiAgICAgLy8vIFRoZSBjdXJyZW50IHBhZ2UgaW5kZXggb2YgdGhlIFtgSXRlcmF0b3JgXS4KICAgICBpbmRleDogdXNpemUsCi0gICAgX3A6IFBoYW50b21EYXRhJmx0O3BhZ2U6OkJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7Jmd0OywKJiM0MzsgICAgX3A6IFBoYW50b21EYXRhJmx0OyZhbXA7JiMzOTthIHBhZ2U6OlBhZ2UmZ3Q7LAogfQogCiBpbXBsJmx0OyYjMzk7YSZndDsgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlciZsdDsmIzM5O2EmZ3Q7IHsKLSAgICB0eXBlIEl0ZW0gPSBwYWdlOjpCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OzsKJiM0MzsgICAgdHlwZSBJdGVtID0gJmFtcDsmIzM5O2EgcGFnZTo6UGFnZTsKIAogICAgIGZuIG5leHQoJmFtcDttdXQgc2VsZikgLSZndDsgT3B0aW9uJmx0O1NlbGY6Okl0ZW0mZ3Q7IHsKICAgICAgICAgbGV0IG9mZnNldCA9IHNlbGYuaW5kZXguY2hlY2tlZF9tdWwocGFnZTo6UEFHRV9TSVpFKT87CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5ycwppbmRleCAzNWQxZTAxNTg0OGRkYS4uZDUzNGU4YWRjZjdiMzMgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5ycwpAQCAtMjExLDYgJiM0MzsyMTEsMTUgQEAgcHViIGZuIGxlYWsmbHQ7JiMzOTthJmd0OyhiOiBTZWxmKSAtJmd0OyAmYW1wOyYjMzk7YSBtdXQgVCB7CiAgICAgICAgIC8vIHdoaWNoIHBvaW50cyB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiBgVGAuCiAgICAgICAgIHVuc2FmZSB7ICZhbXA7bXV0ICpCb3g6OmludG9fcmF3KGIpIH0KICAgICB9CiYjNDM7CiYjNDM7ICAgIC8vLyBDb25zdW1lcyB0aGUgYEJveCZsdDtULEEmZ3Q7YCBhbmQgcmV0dXJucyBhIGBOb25OdWxsJmx0O1QmZ3Q7YC4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBMaWtlIFtgU2VsZjo6aW50b19yYXdgXSwgYnV0IHJldHVybnMgYSBgTm9uTnVsbGAuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBwdWIgZm4gaW50b19ub25fbnVsbChiOiBTZWxmKSAtJmd0OyBOb25OdWxsJmx0O1QmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogYEtCb3g6OmludG9fcmF3YCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlci4KJiM0MzsgICAgICAgIHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQoU2VsZjo6aW50b19yYXcoYikpIH0KJiM0MzsgICAgfQogfQogCiBpbXBsJmx0O1QsIEEmZ3Q7IEJveCZsdDtNYXliZVVuaW5pdCZsdDtUJmd0OywgQSZndDsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycwppbmRleCBjNDI5MjhkNWEyMzkzZi4uODU0NTI1Mjg5YzhiNDMgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMKQEAgLTE5LDYgJiM0MzsxOSwxMCBAQAogICAgICAgICB0b19yZXN1bHQsIC8vCiAgICAgfSwKICAgICBwcmVsdWRlOjoqLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6ewogICAgICAgICBGb3JMdCwKICAgICAgICAgRm9yZWlnbk93bmFibGUsCkBAIC0zNDQsNyAmIzQzOzM0OCw3IEBAIHVuc2FmZSBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBkZXZpY2U6OkFzQnVzRGV2aWNlJmx0O0N0eCZndDsgZm9yIERldmljZSZsdDtDdHgmZ3Q7CiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpOwogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uCiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmVmKCkuYXNfcmF3KCkpIH07CkBAIC0zNjMsNiAmIzQzOzM2NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9CiYjNDM7CiBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7Jmd0OyBmb3IgRGV2aWNlJmx0O0N0eCZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5ycwppbmRleCBjZTNlMzBjODFjYjVlZC4uOGRhZDE1YWU0Y2ZiMGEgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5ycwpAQCAtOSw3ICYjNDM7OSwxMSBAQAogICAgIGJsb2NrOjptcTo6T3BlcmF0aW9ucywKICAgICBlcnJvcjo6UmVzdWx0LAogICAgIHN5bmM6OnsKLSAgICAgICAgYXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAomIzQzOyAgICAgICAgYXJlZjo6ewomIzQzOyAgICAgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICAgICAgfSwKICAgICAgICAgYXRvbWljOjpSZWxheGVkLAogICAgICAgICBSZWZjb3VudCwKICAgICB9LApAQCAtMjI5LDExICYjNDM7MjMzLDEwIEBAIHVuc2FmZSBpbXBsJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7IFNlbmQgZm9yIFJlcXVlc3QmbHQ7VCZndDsge30KIC8vIG11dGF0ZSBgc2VsZmAgYXJlIGludGVybmFsbHkgc3luY2hyb25pemVkYAogdW5zYWZlIGltcGwmbHQ7VDogT3BlcmF0aW9ucyZndDsgU3luYyBmb3IgUmVxdWVzdCZsdDtUJmd0OyB7fQogCi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3QmbHQ7VCZndDtgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpcwotLy8gaW1wbGVtZW50YXRpb24gb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudAotLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnQKLS8vIGRlY3JlbWVudCBpcyBleGVjdXRlZC4KLXVuc2FmZSBpbXBsJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3QmbHQ7VCZndDsgewomIzQzOy8vIFNBRkVUWTogQWxsIGluc3RhbmNlcyBvZiBgUmVxdWVzdCZsdDtUJmd0O2AgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGBSZWZDb3VudGVkYAomIzQzOy8vIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudCBrZWVwcyB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeSBhdCBsZWFzdCB1bnRpbCBhCiYjNDM7Ly8gbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpcyBleGVjdXRlZC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPcGVyYXRpb25zJmd0OyBSZWZDb3VudGVkIGZvciBSZXF1ZXN0Jmx0O1QmZ3Q7IHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICBzZWxmLndyYXBwZXJfcmVmKCkucmVmY291bnQoKS5pbmMoKTsKICAgICB9CkBAIC0yNTUsMyAmIzQzOzI1OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgICAgIH0KICAgICB9CiB9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7UmVxdWVzdCZndDtgCiYjNDM7Ly8gZnJvbSBhIGAmYW1wO1JlcXVlc3RgIChidXQgdGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlKS4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPcGVyYXRpb25zJmd0OyBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0Jmx0O1QmZ3Q7IHt9CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9jcmVkLnJzIGIvcnVzdC9rZXJuZWwvY3JlZC5ycwppbmRleCBmZmExNTZiOWRmMzc3ZS4uYjE3NzM2YTlhZGNkNTggMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2NyZWQucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvY3JlZC5ycwpAQCAtOCw3ICYjNDM7OCwxNSBAQAogLy8hCiAvLyEgUmVmZXJlbmNlOiAmbHQ7aHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3Qvc2VjdXJpdHkvY3JlZGVudGlhbHMuaHRtbCZndDsKIAotdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHRhc2s6Okt1aWQsIHR5cGVzOjpPcGFxdWV9OwomIzQzO3VzZSBjcmF0ZTo6ewomIzQzOyAgICBiaW5kaW5ncywKJiM0MzsgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCwKJiM0MzsgICAgdGFzazo6S3VpZCwKJiM0MzsgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBPcGFxdWUsIC8vCiYjNDM7ICAgIH0sIC8vCiYjNDM7fTsKIAogLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBjcmVkYC4KIC8vLwpAQCAtNzYsNyAmIzQzOzg0LDcgQEAgcHViIGZuIGV1aWQoJmFtcDtzZWxmKSAtJmd0OyBLdWlkIHsKIH0KIAogLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBDcmVkZW50aWFsYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uCkBAIC05MCwzICYjNDM7OTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbCZsdDtDcmVkZW50aWFsJmd0OykgewogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cHV0X2NyZWQob2JqLmNhc3QoKS5hc19wdHIoKSkgfTsKICAgICB9CiB9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtDcmVkZW50aWFsJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7Q3JlZGVudGlhbGAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7fQpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzCmluZGV4IDY0NWFmYzQ5YTI3ZDY0Li4yZTkwZjZhMDZmZDA1OSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RldmljZS5ycwpAQCAtOCw4ICYjNDM7OCwxMiBAQAogICAgIGJpbmRpbmdzLAogICAgIGZtdCwKICAgICBwcmVsdWRlOjoqLAotICAgIHN5bmM6OmFyZWY6OkFSZWYsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAogICAgICAgICBGb3JlaWduT3duYWJsZSwKICAgICAgICAgT3BhcXVlLCAvLwogICAgIH0sIC8vCkBAIC00NDgsNyAmIzQzOzQ1Miw3IEBAIHB1YiBmbiBuYW1lKCZhbXA7c2VsZikgLSZndDsgJmFtcDtDU3RyIHsKIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yYXcoKSkgfTsKQEAgLTQ2MCw2ICYjNDM7NDY0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtEZXZpY2UmZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtEZXZpY2VgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fQomIzQzOwogLy8gU0FGRVRZOiBBcyBieSB0aGUgdHlwZSBpbnZhcmlhbnQgYERldmljZWAgY2FuIGJlIHNlbnQgdG8gYW55IHRocmVhZC4KIHVuc2FmZSBpbXBsIFNlbmQgZm9yIERldmljZSB7fQogCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMKaW5kZXggNWFlYWQ4MzVmYmJjMDIuLmNlZTdlMjUwMTM2ODk5IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzCkBAIC0xNCw3ICYjNDM7MTQsMTAgQEAKICAgICBmbXQsCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSwKLSAgICBzeW5jOjphcmVmOjpBUmVmLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6T3BhcXVlLAogfTsKIApAQCAtMzYwLDcgJiM0MzszNjMsNyBAQCBmbiBmbXQoJmFtcDtzZWxmLCBmOiAmYW1wO211dCBmbXQ6OkZvcm1hdHRlciZsdDsmIzM5O18mZ3Q7KSAtJmd0OyBmbXQ6OlJlc3VsdCB7CiB9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBGd05vZGVgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHsKJiM0Mzt1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUKICAgICAgICAgLy8gcmVmY291bnQgaXMgbm9uLXplcm8uCkBAIC0zNzQsNiAmIzQzOzM3NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RndOb2RlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RndOb2RlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge30KJiM0MzsKIGVudW0gTm9kZSZsdDsmIzM5O2EmZ3Q7IHsKICAgICBCb3Jyb3dlZCgmYW1wOyYjMzk7YSBGd05vZGUpLAogICAgIE93bmVkKEFSZWYmbHQ7RndOb2RlJmd0OyksCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycwppbmRleCA0MDNmYzM1MzUzYzc0MC4uMzY4NzQyYTI1ODM3NjggMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycwpAQCAtMTUsNyAmIzQzOzE1LDggQEAKICAgICBwcmVsdWRlOjoqLAogICAgIHN5bmM6OmFyZWY6OnsKICAgICAgICAgQVJlZiwKLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwogICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwKICAgICB3b3JrcXVldWU6OnsKQEAgLTIyNyw3ICYjNDM7MjI4LDcgQEAgZm4gZGVyZWYoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO1NlbGY6OlRhcmdldCB7CiAKIC8vIFNBRkVUWTogRFJNIGRldmljZSBvYmplY3RzIGFyZSBhbHdheXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIHRoZSBnZXQvcHV0IGZ1bmN0aW9ucwogLy8gc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzLgotdW5zYWZlIGltcGwmbHQ7VDogZHJtOjpEcml2ZXImZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSZsdDtUJmd0OyB7CiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogZHJtOjpEcml2ZXImZ3Q7IFJlZkNvdW50ZWQgZm9yIERldmljZSZsdDtUJmd0OyB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLgogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTsKQEAgLTI0Miw2ICYjNDM7MjQzLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBkcm06OkRyaXZlciZndDsgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlJmx0O1QmZ3Q7IHt9CiYjNDM7CiBpbXBsJmx0O1Q6IGRybTo6RHJpdmVyJmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZndDsgZm9yIERldmljZSZsdDtUJmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSB7CiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLApkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMgYi9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5ycwppbmRleCAwMWI1YmQ0N2EzMzMyZC4uMzBkMzcxODU3OGZlOGMgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzCkBAIC0xNyw3ICYjNDM7MTcsNyBAQAogICAgIHByZWx1ZGU6OiosCiAgICAgc3luYzo6YXJlZjo6ewogICAgICAgICBBUmVmLAotICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvLwomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KICAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsCiB9OwpAQCAtMjksNyAmIzQzOzI5LDcgQEAKICNbY2ZnKENPTkZJR19SVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSKV0KIHB1YiBtb2Qgc2htZW07CiAKLS8vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgW2BBbHdheXNSZWZDb3VudGVkYF0gZm9yIGFueSBHRU0gb2JqZWN0IHR5cGUuCiYjNDM7Ly8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyBbYFJlZkNvdW50ZWRgXSBmb3IgYW55IEdFTSBvYmplY3QgdHlwZS4KIC8vLwogLy8vIFNpbmNlIGFsbCBHRU0gb2JqZWN0cyB1c2UgdGhlIHNhbWUgcmVmY291bnRpbmcgc2NoZW1lLgogI1ttYWNyb19leHBvcnRdCkBAIC00Miw3ICYjNDM7NDIsNyBAQCBpbXBsICQoICZsdDskKCAkdHBhcmFtX2lkOmlkZW50ICksJiM0MzsmZ3Q7ICk/IGZvciAkdHlwZTp0eQogICAgICAgICApPwogICAgICkgPSZndDsgewogICAgICAgICAvLyBTQUZFVFk6IEFsbCBHRU0gb2JqZWN0cyBhcmUgcmVmY291bnRlZC4KLSAgICAgICAgdW5zYWZlIGltcGwgJCggJmx0OyQoICR0cGFyYW1faWQgKSwmIzQzOyZndDsgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciAkdHlwZQomIzQzOyAgICAgICAgdW5zYWZlIGltcGwgJCggJmx0OyQoICR0cGFyYW1faWQgKSwmIzQzOyZndDsgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpSZWZDb3VudGVkIGZvciAkdHlwZQogICAgICAgICB3aGVyZQogICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCwKICAgICAgICAgICAgICQoICQoICRiaW5kX3BhcmFtIDogJGJpbmRfdHJhaXQgKSwmIzQzOyApPwpAQCAtNjEsNiAmIzQzOzYxLDE0IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgICAgICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0X3B1dChvYmopIH07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KJiM0MzsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7JHR5cGUmZ3Q7YCBmcm9tIGEKJiM0MzsgICAgICAgIC8vIGAmYW1wOyR0eXBlYC4KJiM0MzsgICAgICAgIHVuc2FmZSBpbXBsICQoICZsdDskKCAkdHBhcmFtX2lkICksJiM0MzsmZ3Q7ICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgJHR5cGUKJiM0MzsgICAgICAgIHdoZXJlCiYjNDM7ICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCwKJiM0MzsgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksJiM0MzsgKT8KJiM0MzsgICAgICAgIHt9CiAgICAgfTsKIH0KICNbY2ZnX2F0dHIobm90KENPTkZJR19SVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSKSwgYWxsb3codW51c2VkKSldCkBAIC05OCw3ICYjNDM7MTA2LDcgQEAgZm4gY2xvc2UoX29iajogJmFtcDsmbHQ7U2VsZjo6RHJpdmVyIGFzIGRybTo6RHJpdmVyJmd0Ozo6T2JqZWN0LCBfZmlsZTogJmFtcDtEcml2ZXJGaWxlJmx0O1NlbGYmZ3Q7KQogfQogCiAvLy8gVHJhaXQgdGhhdCByZXByZXNlbnRzIGEgR0VNIG9iamVjdCBzdWJ0eXBlCi1wdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgJiM0Mzsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCAmIzQzOyBBbHdheXNSZWZDb3VudGVkIHsKJiM0MztwdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgJiM0Mzsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCAmIzQzOyBSZWZDb3VudGVkIHsKICAgICAvLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcmF3IGBkcm1fZ2VtX29iamVjdGAgc3RydWN0dXJlLCB3aGljaCBtdXN0IGJlIHZhbGlkIGFzIGxvbmcgYXMKICAgICAvLy8gdGhpcyBvd25pbmcgb2JqZWN0IGlzIHZhbGlkLgogICAgIGZuIGFzX3JhdygmYW1wO3NlbGYpIC0mZ3Q7ICptdXQgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0OwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5ycyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMKaW5kZXggMjNlZTY4OWJkMjQwMDUuLjcyMGU1NzQxODM1OGRjIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMKQEAgLTEyLDggJiM0MzsxMiwxNSBAQAogICAgIGNyZWQ6OkNyZWRlbnRpYWwsCiAgICAgZXJyb3I6Ontjb2RlOjoqLCB0b19yZXN1bHQsIEVycm9yLCBSZXN1bHR9LAogICAgIGZtdCwKLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sCi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKJiM0MzsgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwogfTsKIHVzZSBjb3JlOjpwdHI7CiAKQEAgLTE5Nyw3ICYjNDM7MjA0LDcgQEAgdW5zYWZlIGltcGwgU3luYyBmb3IgRmlsZSB7fQogCiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvbgogLy8gbWFrZXMgYEFSZWYmbHQ7RmlsZSZndDtgIG93biBhIG5vcm1hbCByZWZjb3VudC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTIxMiw2ICYjNDM7MjE5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsJmx0O0ZpbGUmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtGaWxlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RmlsZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRmlsZSB7fQomIzQzOwogLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBmaWxlYC4gTm90IHRocmVhZCBzYWZlLgogLy8vCiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLgpAQCAtMjMzLDcgJiM0MzsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7CiAKIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgTG9jYWxGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb24KIC8vIG1ha2VzIGBBUmVmJmx0O0xvY2FsRmlsZSZndDtgIG93biBhIG5vcm1hbCByZWZjb3VudC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uCkBAIC0yNDksNiAmIzQzOzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtMb2NhbEZpbGUmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtMb2NhbEZpbGUmZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtMb2NhbEZpbGVgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fQomIzQzOwogaW1wbCBMb2NhbEZpbGUgewogICAgIC8vLyBDb25zdHJ1Y3RzIGEgbmV3IGBzdHJ1Y3QgZmlsZWAgd3JhcHBlciBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLgogICAgIC8vLwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvaTJjLnJzIGIvcnVzdC9rZXJuZWwvaTJjLnJzCmluZGV4IDYyNGI5NzFjYThiMGIyLi4wMmIyYzkyMjBlYjExYyAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2kyYy5ycwpAQCAtMTgsNyAmIzQzOzE4LDggQEAKICAgICBwcmVsdWRlOjoqLAogICAgIHN5bmM6OmFyZWY6OnsKICAgICAgICAgQVJlZiwKLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwogICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy8KIH07CkBAIC00MjQsNyAmIzQzOzQyNSw3IEBAIHB1YiBmbiBnZXQoaW5kZXg6IGkzMikgLSZndDsgUmVzdWx0Jmx0O0FSZWYmbHQ7U2VsZiZndDsmZ3Q7IHsKIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKEkyY0FkYXB0ZXIpOwogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQWRhcHRlcmAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19nZXRfYWRhcHRlcihzZWxmLmluZGV4KCkpIH07CkBAIC00MzUsNiAmIzQzOzQzNiw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6aTJjX3B1dF9hZGFwdGVyKG9iai5hc19yZWYoKS5hc19yYXcoKSkgfQogICAgIH0KIH0KJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYW4KJiM0MzsvLyBgJmFtcDtJMmNBZGFwdGVyYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHt9CiAKIC8vLyBUaGUgaTJjIGJvYXJkIGluZm8gcmVwcmVzZW50YXRpb24KIC8vLwpAQCAtNTAwLDcgJiM0Mzs1MDQsNyBAQCB1bnNhZmUgaW1wbCZsdDtDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dCZndDsgZGV2aWNlOjpBc0J1c0RldmljZSZsdDtDdHgmZ3Q7IGZvciBJMmNDbGllbnQmbHQ7Qwoga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoSTJjQ2xpZW50KTsKIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0NsaWVudGAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uCiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmVmKCkuYXNfcmF3KCkpIH07CkBAIC01MTEsNiAmIzQzOzUxNSw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cHV0X2RldmljZSgmYW1wO3JhdyBtdXQgKCpvYmouYXNfcmVmKCkuYXNfcmF3KCkpLmRldikgfQogICAgIH0KIH0KJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYW4KJiM0MzsvLyBgJmFtcDtJMmNDbGllbnRgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fQogCiBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7Jmd0OyBmb3IgSTJjQ2xpZW50Jmx0O0N0eCZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UmbHQ7Q3R4Jmd0OyB7CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9saWIucnMgYi9ydXN0L2tlcm5lbC9saWIucnMKaW5kZXggOTUxMmFmNzE1NmRmMmEuLmViNTI1NjIwNGExNzQyIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9saWIucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbGliLnJzCkBAIC0xMDEsNiAmIzQzOzEwMSw3IEBACiBwdWIgbW9kIG9mOwogI1tjZmcoQ09ORklHX1BNX09QUCldCiBwdWIgbW9kIG9wcDsKJiM0MztwdWIgbW9kIG93bmVkOwogcHViIG1vZCBwYWdlOwogI1tjZmcoQ09ORklHX1BDSSldCiBwdWIgbW9kIHBjaTsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tLnJzIGIvcnVzdC9rZXJuZWwvbW0ucnMKaW5kZXggNDc2NGQ3YjY4ZjJhN2YuLjgzZWQ5NGZjYTE0Y2EyIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9tbS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9tbS5ycwpAQCAtMTMsOCAmIzQzOzEzLDE1IEBACiAKIHVzZSBjcmF0ZTo6ewogICAgIGJpbmRpbmdzLAotICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSwKLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE5vdFRocmVhZFNhZmUsCiYjNDM7ICAgICAgICBPcGFxdWUsIC8vCiYjNDM7ICAgIH0sIC8vCiB9OwogdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9OwogCkBAIC01NSw3ICYjNDM7NjIsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBNbSB7fQogdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge30KIAogLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW0gewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS4KQEAgLTY5LDYgJiM0Mzs3Niw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7TW0mZ3Q7YCBmcm9tIGEgYCZhbXA7TW1gLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tIHt9CiYjNDM7CiAvLy8gQSB3cmFwcGVyIGZvciB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgbW1fc3RydWN0YC4KIC8vLwogLy8vIFRoaXMgdHlwZSBpcyBsaWtlIFtgTW1gXSwgYnV0IHdpdGggbm9uLXplcm8gYG1tX3VzZXJzYC4gSXQgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGBtbV91c2Vyc2AgY2FuCkBAIC05MSw3ICYjNDM7MTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fQogdW5zYWZlIGltcGwgU3luYyBmb3IgTW1XaXRoVXNlciB7fQogCiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS4KQEAgLTEwNSw2ICYjNDM7MTE1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7TW1XaXRoVXNlciZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO01tV2l0aFVzZXJgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge30KJiM0MzsKIC8vIE1ha2UgYWxsIGBNbWAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJgLgogaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlciB7CiAgICAgdHlwZSBUYXJnZXQgPSBNbTsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzIGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnMKaW5kZXggYjhkMmYwNTEyMjVjNzMuLjhmYmMzOTZlNDYwMjgxIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5ycwpAQCAtMTAsNyAmIzQzOzEwLDExIEBACiB1c2UgY3JhdGU6OnsKICAgICBiaW5kaW5ncywKICAgICBtbTo6TW1XaXRoVXNlciwKLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICB0eXBlczo6QWx3YXlzUmVmQ291bnRlZCwKIH07CiB1c2UgY29yZTo6e29wczo6RGVyZWYsIHB0cjo6Tm9uTnVsbH07CiAKQEAgLTM0LDcgJiM0MzszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fQogdW5zYWZlIGltcGwgU3luYyBmb3IgTW1XaXRoVXNlckFzeW5jIHt9CiAKIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlckFzeW5jIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS4KQEAgLTQ4LDYgJiM0Mzs1MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O01tV2l0aFVzZXJBc3luYyZndDtgCiYjNDM7Ly8gZnJvbSBhIGAmYW1wO01tV2l0aFVzZXJBc3luY2AuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlckFzeW5jIHt9CiYjNDM7CiAvLyBNYWtlIGFsbCBgTW1XaXRoVXNlcmAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJBc3luY2AuCiBpbXBsIERlcmVmIGZvciBNbVdpdGhVc2VyQXN5bmMgewogICAgIHR5cGUgVGFyZ2V0ID0gTW1XaXRoVXNlcjsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29wcC5ycyBiL3J1c3Qva2VybmVsL29wcC5ycwppbmRleCA2MmU0NDY3NjEyNWQxMC4uYjhkYjZiZGVmZDA3NzEgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL29wcC5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vcHAucnMKQEAgLTE2LDggJiM0MzsxNiwxNCBAQAogICAgIGZmaTo6e2NfY2hhciwgY191bG9uZ30sCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OkNTdHJpbmcsCi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAotICAgIHR5cGVzOjpPcGFxdWUsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE9wYXF1ZSwgLy8KJiM0MzsgICAgfSwgLy8KIH07CiAKICNbY2ZnKENPTkZJR19DUFVfRlJFUSldCkBAIC0xMDQxLDcgJiM0MzsxMDQ3LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgT1BQIHt9CiB1bnNhZmUgaW1wbCBTeW5jIGZvciBPUFAge30KIAogLy8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBbYE9QUGBdIGlzIGFsd2F5cyByZWZjb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTEwNTUsNiAmIzQzOzEwNjEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O09QUCZndDtgIGZyb20gYW4KJiM0MzsvLyBgJmFtcDtPUFBgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE9QUCB7fQomIzQzOwogaW1wbCBPUFAgewogICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuCiAgICAgLy8vCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vd25lZC5ycyBiL3J1c3Qva2VybmVsL293bmVkLnJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5hY2I2MTFmMDg0ZmYzNQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL293bmVkLnJzCkBAIC0wLDAgJiM0MzsxLDM3MyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7Ly8hIFVuaXF1ZSBvd25lZCBwb2ludGVyIHR5cGVzIGZvciBvYmplY3RzIHdpdGggY3VzdG9tIGRyb3AgbG9naWMuCiYjNDM7Ly8hCiYjNDM7Ly8hIFRoZXNlIHBvaW50ZXIgdHlwZXMgYXJlIHVzZWZ1bCBmb3IgQy1hbGxvY2F0ZWQgb2JqZWN0cyB3aGljaCBieSBBUEktY29udHJhY3QKJiM0MzsvLyEgYXJlIG93bmVkIGJ5IFJ1c3QsIGJ1dCBuZWVkIHRvIGJlIGZyZWVkIHRocm91Z2ggdGhlIEMgQVBJLgomIzQzOwomIzQzO3VzZSBjb3JlOjp7CiYjNDM7ICAgIG1lbTo6TWFudWFsbHlEcm9wLAomIzQzOyAgICBvcHM6OnsKJiM0MzsgICAgICAgIERlcmVmLAomIzQzOyAgICAgICAgRGVyZWZNdXQsIC8vCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHBpbjo6UGluLAomIzQzOyAgICBwdHI6Ok5vbk51bGwsIC8vCiYjNDM7fTsKJiM0Mzt1c2Uga2VybmVsOjp7CiYjNDM7ICAgIHN5bmM6OmFyZWY6OkFSZWYsCiYjNDM7ICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvLwomIzQzO307CiYjNDM7CiYjNDM7dXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlOwomIzQzOwomIzQzOy8vLyBUeXBlcyB0aGF0IHNwZWNpZnkgdGhlaXIgb3duIHdheSBvZiBwZXJmb3JtaW5nIGFsbG9jYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUeXBpY2FsbHksIHRoaXMgdHJhaXQKJiM0MzsvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLgomIzQzOy8vLwomIzQzOy8vLyBJbXBsZW1lbnRpbmcgdGhpcyB0cmFpdCBhbGxvd3MgdHlwZXMgdG8gYmUgcmVmZXJlbmNlZCB2aWEgdGhlIFtgT3duZWQmbHQ7U2VsZiZndDtgXSBwb2ludGVyIHR5cGUuCiYjNDM7Ly8vICAtIFRoaXMgaXMgdXNlZnVsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHRpZSB0aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0IHJlZmVyZW5jZSB0byBhbiBvd25lZAomIzQzOy8vLyAgICBvYmplY3QsIHJhdGhlciB0aGFuIHBhc3MgYXJvdW5kIGEgYmFyZSByZWZlcmVuY2UuCiYjNDM7Ly8vICAtIFtgT3duYWJsZWBdIHR5cGVzIGNhbiBkZWZpbmUgY3VzdG9tIGRyb3AgbG9naWMgdGhhdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBvd25lZCByZWZlcmVuY2UKJiM0MzsvLy8gICAgb2YgdHlwZSBbYE93bmVkJmx0O18mZ3Q7YF0gcG9pbnRpbmcgdG8gdGhlIG9iamVjdCBpcyBkcm9wcGVkLgomIzQzOy8vLwomIzQzOy8vLyBOb3RlOiBUaGUgdW5kZXJseWluZyBvYmplY3QgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50aW5nLCBiZWNhdXNlIGl0CiYjNDM7Ly8vIHJlcHJlc2VudHMgYSB1bmlxdWUsIG93bmVkIHJlZmVyZW5jZS4gSWYgcmVmZXJlbmNlIGNvdW50aW5nIChvbiB0aGUgUnVzdCBzaWRlKSBpcyByZXF1aXJlZCwKJiM0MzsvLy8gW2BSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkLiBbYE93bmFibGVSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIGNvbnZlcnNpb24KJiM0MzsvLy8gYmV0d2VlbiB1bmlxdWUgYW5kIHNoYXJlZCAocmVmZXJlbmNlIGNvdW50ZWQpIG93bmVyc2hpcCBpcyBuZWVkZWQuCiYjNDM7Ly8vCiYjNDM7Ly8vICMgRXhhbXBsZXMKJiM0MzsvLy8KJiM0MzsvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoIFtgT3duZWRgXSBsb29rcyBsaWtlCiYjNDM7Ly8vIHRoaXM6CiYjNDM7Ly8vCiYjNDM7Ly8vIGBgYAomIzQzOy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXQomIzQzOy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsOwomIzQzOy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6c3luYzo6Z2xvYmFsX2xvY2s7CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZX07CiYjNDM7Ly8vCiYjNDM7Ly8vIC8vIExldCYjMzk7cyBjb3VudCB0aGUgYWxsb2NhdGlvbnMgdG8gc2VlIGlmIGZyZWVpbmcgd29ya3MuCiYjNDM7Ly8vIGtlcm5lbDo6c3luYzo6Z2xvYmFsX2xvY2shIHsKJiM0MzsvLy8gICAgIC8vIFNBRkVUWTogd2UgY2FsbCBgaW5pdCgpYCByaWdodCBiZWxvdywgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuCiYjNDM7Ly8vICAgICB1bnNhZmUodW5pbml0KSBzdGF0aWMgRk9PX0FMTE9DX0NPVU5UOiBNdXRleCZsdDt1c2l6ZSZndDsgPSAwOwomIzQzOy8vLyB9CiYjNDM7Ly8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuCiYjNDM7Ly8vIHVuc2FmZSB7IEZPT19BTExPQ19DT1VOVC5pbml0KCkgfTsKJiM0MzsvLy8KJiM0MzsvLy8gc3RydWN0IEZvbzsKJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBGb28gewomIzQzOy8vLyAgICAgZm4gbmV3KCkgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1NlbGYmZ3Q7Jmd0OyB7CiYjNDM7Ly8vICAgICAgICAgLy8gV2UgYXJlIGp1c3QgdXNpbmcgYSBgS0JveGAgaGVyZSB0byBoYW5kbGUgdGhlIGFjdHVhbCBhbGxvY2F0aW9uLCBhcyBvdXIgYEZvb2AgaXMKJiM0MzsvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuCiYjNDM7Ly8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldygKJiM0MzsvLy8gICAgICAgICAgICAgRm9vIHt9LAomIzQzOy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCwKJiM0MzsvLy8gICAgICAgICApPzsKJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpOwomIzQzOy8vLyAgICAgICAgIC8vIENvdW50IG5ldyBhbGxvY2F0aW9uCiYjNDM7Ly8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgJiM0Mzs9IDE7CiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOgomIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC4KJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBjYW4gdHJhbnNmZXIgdGhpcyBvd25lcnNoaXAgdG8gdGhlIGBmcm9tX3Jhd2AgbWV0aG9kLgomIzQzOy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pCiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBPd25hYmxlIGZvciBGb28gewomIzQzOy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbCZsdDtTZWxmJmd0OykgewomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveCZsdDtTZWxmJmd0O2BdIGlzIHN0aWxsIGFsaXZlLiBXZSBjYW4gcGFzcyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdLCBhcwomIzQzOy8vLyAgICAgICAgIC8vIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KJiM0MzsvLy8gICAgICAgICBkcm9wKHVuc2FmZSB7IEtCb3g6OmZyb21fcmF3KHRoaXMuYXNfcHRyKCkpIH0pOwomIzQzOy8vLyAgICAgICAgIC8vIENvdW50IHJlbGVhc2VkIGFsbG9jYXRpb24KJiM0MzsvLy8gICAgICAgICAqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSAtPSAxOwomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIHsKJiM0MzsvLy8gICAgbGV0IGZvbyA9IEZvbzo6bmV3KCk/OwomIzQzOy8vLyAgICBhc3NlcnQhKCpGT09fQUxMT0NfQ09VTlQubG9jaygpID09IDEpOwomIzQzOy8vLyB9CiYjNDM7Ly8vIC8vIGBmb29gIGlzIG91dCBvZiBzY29wZSBub3csIHNvIHdlIGV4cGVjdCBubyBsaXZlIGFsbG9jYXRpb25zLgomIzQzOy8vLyBhc3NlcnQhKCpGT09fQUxMT0NfQ09VTlQubG9jaygpID09IDApOwomIzQzOy8vLyAjIE9rOjombHQ7KCksIEVycm9yJmd0OygoKSkKJiM0MzsvLy8gYGBgCiYjNDM7cHViIHRyYWl0IE93bmFibGUgewomIzQzOyAgICAvLy8gVGVhciBkb3duIHRoaXMgYE93bmFibGVgLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIEltcGxlbWVudGVycyBvZiBgT3duYWJsZWAgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNsZWFuIHVwIHRoZSB1c2Ugb2YgYFNlbGZgLiBUaGlzIGNhbgomIzQzOyAgICAvLy8gaW5jbHVkZSBmcmVlaW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyAjIFNhZmV0eQomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLAomIzQzOyAgICAvLy8gYW5kIHRoYXQgdGhpcyBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGByZWxlYXNlYCBtZXRob2QuIGB0aGlzYCBtdXN0IG5vdCBiZSB1c2VkCiYjNDM7ICAgIC8vLyBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLCBhcyB0aGUgdW5kZXJseWluZyBvYmplY3QgbWF5IGhhdmUgYmVlbiBmcmVlZC4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBgdGhpc2AgaXMgcGlubmVkIGFuZCBpbXBsZW1lbnRlcnMgb2YgdGhpcyBtZXRob2QgbXVzdCBvYnNlcnZlIHRoaXMgY29uc3RyYWludC4KJiM0MzsgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbCZsdDtTZWxmJmd0Oyk7CiYjNDM7fQomIzQzOwomIzQzOy8vLyBBIG11dGFibGUgcmVmZXJlbmNlIHRvIGFuIG93bmVkIGBUYC4KJiM0MzsvLy8KJiM0MzsvLy8gVGhlIFtgT3duYWJsZWBdIGlzIGF1dG9tYXRpY2FsbHkgZnJlZWQgb3IgcmVsZWFzZWQgd2hlbiBhbiBpbnN0YW5jZSBvZiBbYE93bmVkYF0gaXMKJiM0MzsvLy8gZHJvcHBlZC4KJiM0MzsvLy8KJiM0MzsvLy8gIyBJbnZhcmlhbnRzCiYjNDM7Ly8vCiYjNDM7Ly8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWQmbHQ7VCZndDtgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLgomIzQzOy8vLyAtIFRoZSBgVGAgdmFsdWUgaXMgcGlubmVkLgomIzQzO3B1YiBzdHJ1Y3QgT3duZWQmbHQ7VDogT3duYWJsZSZndDsgewomIzQzOyAgICBwdHI6IE5vbk51bGwmbHQ7VCZndDssCiYjNDM7fQomIzQzOwomIzQzO2ltcGwmbHQ7VDogT3duYWJsZSZndDsgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYE93bmVkYF0uCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gIyBTYWZldHkKJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQ6CiYjNDM7ICAgIC8vLyAtIGBwdHJgIHBvaW50cyB0byBhIHZhbGlkIGluc3RhbmNlIG9mIGBUYC4KJiM0MzsgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZCZsdDtUJmd0O2AgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbCZsdDtUJmd0OykgLSZndDsgU2VsZiB7CiYjNDM7ICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLgomIzQzOyAgICAgICAgLy8gV2UgdHJlYXQgYFRgIGFzIHBpbm5lZCBmcm9tIG5vdyBvbi4KJiM0MzsgICAgICAgIFNlbGYgeyBwdHIgfQomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgIC8vLyBDb25zdW1lcyB0aGUgW2BPd25lZGBdLCByZXR1cm5pbmcgYSByYXcgcG9pbnRlci4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGRyb3AgdGhlIHVuZGVybHlpbmcgYFRgLiBXaGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgb3duZXJzaGlwIG9mIHRoZQomIzQzOyAgICAvLy8gdW5kZXJseWluZyBgVGAgaXMgd2l0aCB0aGUgY2FsbGVyLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgcG9pbnRlciBpcyBwaW5uZWQuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC0mZ3Q7IE5vbk51bGwmbHQ7VCZndDsgewomIzQzOyAgICAgICAgTWFudWFsbHlEcm9wOjpuZXcobWUpLnB0cgomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgIC8vLyBHZXQgYSBwaW5uZWQgbXV0YWJsZSByZWZlcmVuY2UgdG8gdGhlIGRhdGEgb3duZWQgYnkgdGhpcyBgT3duZWQmbHQ7VCZndDtgLgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgcHViIGZuIGFzX3Bpbl9tdXQoJmFtcDttdXQgc2VsZikgLSZndDsgUGluJmx0OyZhbXA7bXV0IFQmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5CiYjNDM7ICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC4KJiM0MzsgICAgICAgIGxldCB1bnBpbm5lZCA9IHVuc2FmZSB7IHNlbGYucHRyLmFzX211dCgpIH07CiYjNDM7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuCiYjNDM7ICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQodW5waW5uZWQpIH0KJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MzsvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBhbiBbYE93bmVkJmx0O1QmZ3Q7YF0gdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgW2BTZW5kYF0sCiYjNDM7Ly8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYE93bmVkJmx0O1QmZ3Q7YF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgVGAuCiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogT3duYWJsZSAmIzQzOyBTZW5kJmd0OyBTZW5kIGZvciBPd25lZCZsdDtUJmd0OyB7fQomIzQzOwomIzQzOy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIFtgJmFtcDtPd25lZCZsdDtUJmd0O2BdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU3luY2BdLAomIzQzOy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2AmYW1wO093bmVkJmx0O1QmZ3Q7YF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgJmFtcDtUYC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPd25hYmxlICYjNDM7IFN5bmMmZ3Q7IFN5bmMgZm9yIE93bmVkJmx0O1QmZ3Q7IHt9CiYjNDM7CiYjNDM7aW1wbCZsdDtUOiBPd25hYmxlJmd0OyBEZXJlZiBmb3IgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICB0eXBlIFRhcmdldCA9IFQ7CiYjNDM7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiBkZXJlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7U2VsZjo6VGFyZ2V0IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLgomIzQzOyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfQomIzQzOyAgICB9CiYjNDM7fQomIzQzOwomIzQzO2ltcGwmbHQ7VDogT3duYWJsZSAmIzQzOyBVbnBpbiZndDsgRGVyZWZNdXQgZm9yIE93bmVkJmx0O1QmZ3Q7IHsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIGZuIGRlcmVmX211dCgmYW1wO211dCBzZWxmKSAtJmd0OyAmYW1wO211dCBTZWxmOjpUYXJnZXQgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHkKJiM0MzsgICAgICAgIC8vIHJldHVybiBhIG11dGFibGUgcmVmZXJlbmNlIHRvIGl0LgomIzQzOyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfQomIzQzOyAgICB9CiYjNDM7fQomIzQzOwomIzQzO2ltcGwmbHQ7VDogT3duYWJsZSZndDsgRHJvcCBmb3IgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgZm4gZHJvcCgmYW1wO211dCBzZWxmKSB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgJmFtcDttdXQgc2VsZmAgd2UgZXhjbHVzaXZlbHkgb3duIGBzZWxmYCBhbmQgdGhlIHVuZGVybHlpbmcgYFRgLiBBcwomIzQzOyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLgomIzQzOyAgICAgICAgdW5zYWZlIHsgVDo6cmVsZWFzZShzZWxmLnB0cikgfTsKJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MzsvLyBTQUZFVFk6IFdlIGRlcml2ZSB0aGUgcG9pbnRlciB0byBgVGAgZnJvbSBhIHZhbGlkIGBUYCwgc28gdGhlIHJldHVybmVkCiYjNDM7Ly8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLgomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IE93bmFibGUmZ3Q7IEZvcmVpZ25Pd25hYmxlIGZvciBPd25lZCZsdDtUJmd0OyB7CiYjNDM7ICAgIGNvbnN0IEZPUkVJR05fQUxJR046IHVzaXplID0gY29yZTo6bWVtOjphbGlnbl9vZjo6Jmx0O1QmZ3Q7KCk7CiYjNDM7CiYjNDM7ICAgIHR5cGUgQm9ycm93ZWQmbHQ7JiMzOTthJmd0OwomIzQzOyAgICAgICAgPSAmYW1wOyYjMzk7YSBUCiYjNDM7ICAgIHdoZXJlCiYjNDM7ICAgICAgICBTZWxmOiAmIzM5O2E7CiYjNDM7ICAgIHR5cGUgQm9ycm93ZWRNdXQmbHQ7JiMzOTthJmd0OwomIzQzOyAgICAgICAgPSBQaW4mbHQ7JmFtcDsmIzM5O2EgbXV0IFQmZ3Q7CiYjNDM7ICAgIHdoZXJlCiYjNDM7ICAgICAgICBTZWxmOiAmIzM5O2E7CiYjNDM7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLSZndDsgKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkIHsKJiM0MzsgICAgICAgIE93bmVkOjppbnRvX3JhdyhzZWxmKS5hc19wdHIoKS5jYXN0KCkKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgdW5zYWZlIGZuIGZyb21fZm9yZWlnbihwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLSZndDsgU2VsZiB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgY2FtZSBmcm9tIGBpbnRvX2ZvcmVpZ25gIGFuZCBjYW5ub3QgYmUgbnVsbC4KJiM0MzsgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHB0ci5jYXN0KCkpIH07CiYjNDM7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIHdhcyByZXR1cm5lZCBieSBgaW50b19mb3JlaWduYCwgd2hpY2ggZ2F2ZQomIzQzOyAgICAgICAgLy8gdXAgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiBhIHZhbGlkLCBwaW5uZWQgYFRgOyB3ZSByZXRha2UgdGhhdCBvd25lcnNoaXAgaGVyZS4KJiM0MzsgICAgICAgIHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwdHIpIH0KJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgdW5zYWZlIGZuIGJvcnJvdyZsdDsmIzM5O2EmZ3Q7KHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtJmd0OyBTZWxmOjpCb3Jyb3dlZCZsdDsmIzM5O2EmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhCiYjNDM7ICAgICAgICAvLyByZWZlcmVuY2UgZm9yIGAmIzM5O2FgLgomIzQzOyAgICAgICAgdW5zYWZlIHsgJmFtcDsqcHRyLmNhc3QoKSB9CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHVuc2FmZSBmbiBib3Jyb3dfbXV0Jmx0OyYjMzk7YSZndDsocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC0mZ3Q7IFNlbGY6OkJvcnJvd2VkTXV0Jmx0OyYjMzk7YSZndDsgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGEKJiM0MzsgICAgICAgIC8vIHVuaXF1ZSByZWZlcmVuY2UgZm9yIGAmIzM5O2FgLgomIzQzOyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgJmFtcDttdXQgKnB0ci5jYXN0KCkgfTsKJiM0MzsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogV2UgbmV2ZXIgbW92ZSBvdXQgb2YgaW5uZXIsIGFuZCB3ZSBkbyBub3QgaGFuZCBvdXQgbXV0YWJsZQomIzQzOyAgICAgICAgLy8gcmVmZXJlbmNlcyB3aGVuIGBUOiAhVW5waW5gLgomIzQzOyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKGlubmVyKSB9CiYjNDM7ICAgIH0KJiM0Mzt9CiYjNDM7CiYjNDM7Ly8vIEEgdHJhaXQgZm9yIG9iamVjdHMgdGhhdCBjYW4gYmUgd3JhcHBlZCBpbiBlaXRoZXIgb25lIG9mIHRoZSByZWZlcmVuY2UgdHlwZXMgW2BPd25lZGBdIGFuZAomIzQzOy8vLyBbYEFSZWZgXS4KJiM0MzsvLy8KJiM0MzsvLy8gIyBFeGFtcGxlcwomIzQzOy8vLwomIzQzOy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVSZWZDb3VudGVkYF0sIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aAomIzQzOy8vLyBbYEFSZWZgXSBhbmQgW2BPd25lZGBdIGxvb2tzIGxpa2UgdGhpczoKJiM0MzsvLy8KJiM0MzsvLy8gYGBgCiYjNDM7Ly8vICMgIyFbZXhwZWN0KGNsaXBweTo6ZGlzYWxsb3dlZF9uYW1lcyldCiYjNDM7Ly8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7CiYjNDM7Ly8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDsKJiM0MzsvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTsKJiM0MzsvLy8gIyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZSwgT3duYWJsZVJlZkNvdW50ZWR9OwomIzQzOy8vLwomIzQzOy8vLyAvLyBBbiBpbnRlcm5hbGx5IHJlZmNvdW50ZWQgc3RydWN0IGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzLgomIzQzOy8vLyAvLwomIzQzOy8vLyAvLyAjIEludmFyaWFudHMKJiM0MzsvLy8gLy8KJiM0MzsvLy8gLy8gLSBgcmVmY291bnRgIGlzIGFsd2F5cyBub24temVybyBmb3IgYSB2YWxpZCBvYmplY3QuCiYjNDM7Ly8vIC8vIC0gYHJlZmNvdW50YCBpcyAmZ3Q7MSBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIFJ1c3QgcmVmZXJlbmNlIHRvIGl0LgomIzQzOy8vLyAvLwomIzQzOy8vLyBzdHJ1Y3QgRm9vIHsKJiM0MzsvLy8gICAgIHJlZmNvdW50OiBDZWxsJmx0O3VzaXplJmd0OywKJiM0MzsvLy8gfQomIzQzOy8vLwomIzQzOy8vLyBpbXBsIEZvbyB7CiYjNDM7Ly8vICAgICBmbiBuZXcoKSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7U2VsZiZndDsmZ3Q7IHsKJiM0MzsvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpcwomIzQzOy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC4KJiM0MzsvLy8gICAgICAgICAvLyBJTlZBUklBTlQ6IFdlIGluaXRpYWxpemUgYHJlZmNvdW50YCB0byAxLCBzYXRpc2Z5aW5nIHRoZSBpbnZhcmlhbnRzLgomIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoCiYjNDM7Ly8vICAgICAgICAgICAgIEZvbyB7CiYjNDM7Ly8vICAgICAgICAgICAgICAgICByZWZjb3VudDogQ2VsbDo6bmV3KDEpLAomIzQzOy8vLyAgICAgICAgICAgICB9LAomIzQzOy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCwKJiM0MzsvLy8gICAgICAgICApPzsKJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpOwomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWToKJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuCiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC4KJiM0MzsvLy8gICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocmVzdWx0KSB9KQomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIC8vIFNBRkVUWTogV2UgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZWFjaCB0aW1lIHRoZSByZXNwZWN0aXZlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgb25seSBmcmVlCiYjNDM7Ly8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uCiYjNDM7Ly8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZvbyB7CiYjNDM7Ly8vICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewomIzQzOy8vLyAgICAgICAgIHNlbGYucmVmY291bnQucmVwbGFjZShzZWxmLnJlZmNvdW50LmdldCgpICYjNDM7IDEpOwomIzQzOy8vLyAgICAgfQomIzQzOy8vLwomIzQzOy8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYodGhpczogTm9uTnVsbCZsdDtTZWxmJmd0OykgewomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogQnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8sCiYjNDM7Ly8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLgomIzQzOy8vLyAgICAgICAgIGxldCByZWZjb3VudCA9IHVuc2FmZSB7ICZhbXA7dGhpcy5hc19yZWYoKS5yZWZjb3VudCB9OwomIzQzOy8vLyAgICAgICAgIGxldCBuZXdfcmVmY291bnQgPSByZWZjb3VudC5nZXQoKSAtIDE7CiYjNDM7Ly8vICAgICAgICAgaWYgbmV3X3JlZmNvdW50ID09IDAgewomIzQzOy8vLyAgICAgICAgICAgICAvLyBUaGUgYEZvb2Agd2lsbCBiZSBkcm9wcGVkIHdoZW4gYEtCb3hgIGdvZXMgb3V0IG9mIHNjb3BlLgomIzQzOy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3gmbHQ7Rm9vJmd0O2BdIGlzIHN0aWxsIGFsaXZlIGFzIHRoZSBvbGQgcmVmY291bnQgaXMgMS4gV2UgY2FuIHBhc3MKJiM0MzsvLy8gICAgICAgICAgICAgLy8gb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSBhcyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sCiYjNDM7Ly8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLgomIzQzOy8vLyAgICAgICAgICAgICB1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9OwomIzQzOy8vLyAgICAgICAgIH0gZWxzZSB7CiYjNDM7Ly8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTsKJiM0MzsvLy8gICAgICAgICB9CiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBPd25hYmxlUmVmQ291bnRlZCBmb3IgRm9vIHsKJiM0MzsvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmJmx0O1NlbGYmZ3Q7KSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7U2VsZiZndDssIEFSZWYmbHQ7U2VsZiZndDsmZ3Q7IHsKJiM0MzsvLy8gICAgICAgICBpZiB0aGlzLnJlZmNvdW50LmdldCgpID09IDEgewomIzQzOy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBgRm9vYCBpcyBzdGlsbCBhbGl2ZSBhbmQgaGFzIG5vIG90aGVyIFJ1c3QgcmVmZXJlbmNlcyBhcyB0aGUgcmVmY291bnQKJiM0MzsvLy8gICAgICAgICAgICAgLy8gaXMgMS4KJiM0MzsvLy8gICAgICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KEFSZWY6OmludG9fcmF3KHRoaXMpKSB9KQomIzQzOy8vLyAgICAgICAgIH0gZWxzZSB7CiYjNDM7Ly8vICAgICAgICAgICAgIEVycih0aGlzKQomIzQzOy8vLyAgICAgICAgIH0KJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8KJiM0MzsvLy8gICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkJmx0O1NlbGYmZ3Q7KSAtJmd0OyBBUmVmJmx0O1NlbGYmZ3Q7IHsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IEFuIGBPd25lZCZsdDtGb28mZ3Q7YCBob2xkcyB0aGUgdW5pcXVlIHJlZmVyZW5jZSAocmVmY291bnQgMSksIHdoaWNoIHdlIHRyYW5zZmVyIHRvCiYjNDM7Ly8vICAgICAgICAgLy8gdGhlIG5ldyBgQVJlZmAuCiYjNDM7Ly8vICAgICAgICAgdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcoT3duZWQ6OmludG9fcmF3KHRoaXMpKSB9CiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBPd25hYmxlIGZvciBGb28gewomIzQzOy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbCZsdDtTZWxmJmd0OykgewomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogVXNpbmcgYGRlY19yZWYoKWAgZnJvbSBbYFJlZkNvdW50ZWRgXSB0byByZWxlYXNlIGlzIG9rYXksIGFzIHRoZSByZWZjb3VudCBpcwomIzQzOy8vLyAgICAgICAgIC8vIGFsd2F5cyAxIGZvciBhbiBbYE93bmVkJmx0O0ZvbyZndDtgXS4KJiM0MzsvLy8gICAgICAgICB1bnNhZmUgeyBGb286OmRlY19yZWYodGhpcykgfTsKJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8gfQomIzQzOy8vLwomIzQzOy8vLyBsZXQgZm9vID0gRm9vOjpuZXcoKT87CiYjNDM7Ly8vIGxldCBmb28gPSBBUmVmOjpmcm9tKGZvbyk7CiYjNDM7Ly8vIHsKJiM0MzsvLy8gICAgIGxldCBiYXIgPSBmb28uY2xvbmUoKTsKJiM0MzsvLy8gICAgIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGJhcikuaXNfZXJyKCkpOwomIzQzOy8vLyB9CiYjNDM7Ly8vIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGZvbykuaXNfb2soKSk7CiYjNDM7Ly8vICMgT2s6OiZsdDsoKSwgRXJyb3ImZ3Q7KCgpKQomIzQzOy8vLyBgYGAKJiM0MztwdWIgdHJhaXQgT3duYWJsZVJlZkNvdW50ZWQ6IFJlZkNvdW50ZWQgJiM0MzsgT3duYWJsZSAmIzQzOyBTaXplZCB7CiYjNDM7ICAgIC8vLyBDaGVja3MgaWYgdGhlIFtgQVJlZmBdIGlzIHVuaXF1ZSBhbmQgY29udmVydHMgaXQgdG8gYW4gW2BPd25lZGBdIGlmIHRoYXQgaXMgdGhlIGNhc2UuCiYjNDM7ICAgIC8vLyBPdGhlcndpc2UgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC4KJiM0MzsgICAgZm4gdHJ5X2Zyb21fc2hhcmVkKHRoaXM6IEFSZWYmbHQ7U2VsZiZndDspIC0mZ3Q7IFJlc3VsdCZsdDtPd25lZCZsdDtTZWxmJmd0OywgQVJlZiZsdDtTZWxmJmd0OyZndDs7CiYjNDM7CiYjNDM7ICAgIC8vLyBDb252ZXJ0cyB0aGUgW2BPd25lZGBdIGludG8gYW4gW2BBUmVmYF0uCiYjNDM7ICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkJmx0O1NlbGYmZ3Q7KSAtJmd0OyBBUmVmJmx0O1NlbGYmZ3Q7OwomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGVSZWZDb3VudGVkJmd0OyBUcnlGcm9tJmx0O0FSZWYmbHQ7VCZndDsmZ3Q7IGZvciBPd25lZCZsdDtUJmd0OyB7CiYjNDM7ICAgIHR5cGUgRXJyb3IgPSBBUmVmJmx0O1QmZ3Q7OwomIzQzOyAgICAvLy8gVHJpZXMgdG8gY29udmVydCB0aGUgW2BBUmVmYF0gdG8gYW4gW2BPd25lZGBdIGJ5IGNhbGxpbmcKJiM0MzsgICAgLy8vIFtgdHJ5X2Zyb21fc2hhcmVkKClgXShPd25hYmxlUmVmQ291bnRlZDo6dHJ5X2Zyb21fc2hhcmVkKS4gSW4gY2FzZSB0aGUgW2BBUmVmYF0gaXMgbm90CiYjNDM7ICAgIC8vLyB1bmlxdWUsIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiB0cnlfZnJvbShiOiBBUmVmJmx0O1QmZ3Q7KSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7VCZndDssIFNlbGY6OkVycm9yJmd0OyB7CiYjNDM7ICAgICAgICBUOjp0cnlfZnJvbV9zaGFyZWQoYikKJiM0MzsgICAgfQomIzQzO30KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BhZ2UucnMgYi9ydXN0L2tlcm5lbC9wYWdlLnJzCmluZGV4IDhhZmZkODI2Mjg5MWJhLi5jODhmZGEwOWVhZDVhYSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wYWdlLnJzCkBAIC0xMiwxNiAmIzQzOzEyLDE2IEBACiAgICAgICAgIGNvZGU6OiosCiAgICAgICAgIFJlc3VsdCwgLy8KICAgICB9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgT3BhcXVlLAomIzQzOyAgICAgICAgT3duYWJsZSwKJiM0MzsgICAgICAgIE93bmVkLCAvLwomIzQzOyAgICB9LAogICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlciwgLy8KIH07Ci11c2UgY29yZTo6ewotICAgIG1hcmtlcjo6UGhhbnRvbURhdGEsCi0gICAgbWVtOjpNYW51YWxseURyb3AsCi0gICAgb3BzOjpEZXJlZiwKLSAgICBwdHI6OnsKLSAgICAgICAgc2VsZiwKLSAgICAgICAgTm9uTnVsbCwgLy8KLSAgICB9LCAvLwomIzQzO3VzZSBjb3JlOjpwdHI6OnsKJiM0MzsgICAgc2VsZiwKJiM0MzsgICAgTm9uTnVsbCwgLy8KIH07CiAKIC8vLyBBIGJpdHdpc2Ugc2hpZnQgZm9yIHRoZSBwYWdlIHNpemUuCkBAIC02NSw5MyAmIzQzOzY1LDI5IEBAIHB1YiBjb25zdCBmbiBwYWdlX2FsaWduKGFkZHI6IHVzaXplKSAtJmd0OyBPcHRpb24mbHQ7dXNpemUmZ3Q7IHsKICAgICBTb21lKHN1bSAmYW1wOyBQQUdFX01BU0spCiB9CiAKLS8vLyBSZXByZXNlbnRhdGlvbiBvZiBhIG5vbi1vd25pbmcgcmVmZXJlbmNlIHRvIGEgW2BQYWdlYF0uCi0vLy8KLS8vLyBUaGlzIHR5cGUgcHJvdmlkZXMgYSBib3Jyb3dlZCB2ZXJzaW9uIG9mIGEgW2BQYWdlYF0gdGhhdCBpcyBvd25lZCBieSBzb21lIG90aGVyIGVudGl0eSwgZS5nLiBhCi0vLy8gW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiBzdWNoIGFzIFtgVkJveGBdLgotLy8vCi0vLy8gIyBFeGFtcGxlCi0vLy8KLS8vLyBgYGAKLS8vLyAjIHVzZSBrZXJuZWw6OntiaW5kaW5ncywgcHJlbHVkZTo6Kn07Ci0vLy8gdXNlIGtlcm5lbDo6cGFnZTo6e0JvcnJvd2VkUGFnZSwgUGFnZSwgUEFHRV9TSVpFfTsKLS8vLyAjIHVzZSBjb3JlOjp7bWVtOjpNYXliZVVuaW5pdCwgcHRyLCBwdHI6Ok5vbk51bGwgfTsKLS8vLwotLy8vIGZuIGJvcnJvd19wYWdlJmx0OyYjMzk7YSZndDsodmJveDogJmFtcDsmIzM5O2EgbXV0IFZCb3gmbHQ7TWF5YmVVbmluaXQmbHQ7W3U4OyBQQUdFX1NJWkVdJmd0OyZndDspIC0mZ3Q7IEJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7IHsKLS8vLyAgICAgbGV0IHB0ciA9IHB0cjo6ZnJvbV9yZWYoJmFtcDsqKnZib3gpOwotLy8vCi0vLy8gICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuCi0vLy8gICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OnZtYWxsb2NfdG9fcGFnZShwdHIuY2FzdCgpKSB9OwotLy8vCi0vLy8gICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkCi0vLy8gICAgIC8vIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS4KLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07Ci0vLy8KLS8vLyAgICAgLy8gU0FGRVRZOgotLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuCi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYHNlbGZgLgotLy8vICAgICB1bnNhZmUgeyBCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH0KLS8vLyB9Ci0vLy8KLS8vLyBsZXQgbXV0IHZib3ggPSBWQm94OjombHQ7W3U4OyBQQUdFX1NJWkVdJmd0Ozo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87Ci0vLy8gbGV0IHBhZ2UgPSBib3Jyb3dfcGFnZSgmYW1wO211dCB2Ym94KTsKLS8vLwotLy8vIC8vIFNBRkVUWTogVGhlcmUgaXMgbm8gY29uY3VycmVudCByZWFkIG9yIHdyaXRlIHRvIHRoaXMgcGFnZS4KLS8vLyB1bnNhZmUgeyBwYWdlLmZpbGxfemVyb19yYXcoMCwgUEFHRV9TSVpFKT8gfTsKLS8vLyAjIE9rOjombHQ7KCksIEVycm9yJmd0OygoKSkKLS8vLyBgYGAKLS8vLwotLy8vICMgSW52YXJpYW50cwotLy8vCi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuCi0vLy8KLS8vLyBbYFZCb3hgXToga2VybmVsOjphbGxvYzo6VkJveAotLy8vIFtgVm1hbGxvY2BdOiBrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2MKLXB1YiBzdHJ1Y3QgQm9ycm93ZWRQYWdlJmx0OyYjMzk7YSZndDsoTWFudWFsbHlEcm9wJmx0O1BhZ2UmZ3Q7LCBQaGFudG9tRGF0YSZsdDsmYW1wOyYjMzk7YSBQYWdlJmd0Oyk7Ci0KLWltcGwmbHQ7JiMzOTthJmd0OyBCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OyB7Ci0gICAgLy8vIENvbnN0cnVjdHMgYSBbYEJvcnJvd2VkUGFnZWBdIGZyb20gYSByYXcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuCi0gICAgLy8vCi0gICAgLy8vICMgU2FmZXR5Ci0gICAgLy8vCi0gICAgLy8vIC0gYHB0cmAgbXVzdCBwb2ludCB0byBhIHZhbGlkIGBiaW5kaW5nczo6cGFnZWAuCi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuCi0gICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGwmbHQ7YmluZGluZ3M6OnBhZ2UmZ3Q7KSAtJmd0OyBTZWxmIHsKLSAgICAgICAgbGV0IHBhZ2UgPSBQYWdlIHsgcGFnZTogcHRyIH07Ci0KLSAgICAgICAgLy8gSU5WQVJJQU5UOiBUaGUgc2FmZXR5IHJlcXVpcmVtZW50cyBndWFyYW50ZWUgdGhhdCBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZQotICAgICAgICAvLyBgJiMzOTthYC4KLSAgICAgICAgU2VsZihNYW51YWxseURyb3A6Om5ldyhwYWdlKSwgUGhhbnRvbURhdGEpCi0gICAgfQotfQotCi1pbXBsJmx0OyYjMzk7YSZndDsgRGVyZWYgZm9yIEJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7IHsKLSAgICB0eXBlIFRhcmdldCA9IFBhZ2U7Ci0KLSAgICBmbiBkZXJlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7U2VsZjo6VGFyZ2V0IHsKLSAgICAgICAgJmFtcDtzZWxmLjAKLSAgICB9Ci19Ci0KLS8vLyBUcmFpdCB0byBiZSBpbXBsZW1lbnRlZCBieSB0eXBlcyB3aGljaCBwcm92aWRlIGFuIFtgSXRlcmF0b3JgXSBpbXBsZW1lbnRhdGlvbiBvZgotLy8vIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMsIHN1Y2ggYXMgW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuCiYjNDM7Ly8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMsIHN1Y2ggYXMKJiM0MzsvLy8gW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuCiBwdWIgdHJhaXQgQXNQYWdlSXRlciB7CiAgICAgLy8vIFRoZSBbYEl0ZXJhdG9yYF0gdHlwZSwgZS5nLiBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS4KLSAgICB0eXBlIEl0ZXImbHQ7JiMzOTthJmd0OzogSXRlcmF0b3ImbHQ7SXRlbSA9IEJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7Jmd0OwomIzQzOyAgICB0eXBlIEl0ZXImbHQ7JiMzOTthJmd0OzogSXRlcmF0b3ImbHQ7SXRlbSA9ICZhbXA7JiMzOTthIFBhZ2UmZ3Q7CiAgICAgd2hlcmUKICAgICAgICAgU2VsZjogJiMzOTthOwogCi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLgomIzQzOyAgICAvLy8gUmV0dXJucyBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcyBvdmVyIGFsbCBwYWdlcyBvd25lZCBieSBgc2VsZmAuCiAgICAgZm4gcGFnZV9pdGVyKCZhbXA7bXV0IHNlbGYpIC0mZ3Q7IFNlbGY6Okl0ZXImbHQ7JiMzOTtfJmd0OzsKIH0KIAotLy8vIEEgcG9pbnRlciB0byBhIHBhZ2UgdGhhdCBvd25zIHRoZSBwYWdlIGFsbG9jYXRpb24uCiYjNDM7Ly8vIEEgYHN0cnVjdCBwYWdlYC4KJiM0MzsvLy8KJiM0MzsvLy8gQSBgUGFnZWAgaXMgYWNjZXNzZWQgdGhyb3VnaCBhIHNoYXJlZCByZWZlcmVuY2Ugb3IgdGhyb3VnaCBhbiBvd25pbmcgW2BPd25lZCZsdDtQYWdlJmd0O2BdOyB0aGUgbGF0dGVyCiYjNDM7Ly8vIGZyZWVzIHRoZSBwYWdlIGFsbG9jYXRpb24gd2hlbiBpdCBpcyBkcm9wcGVkLgogLy8vCiAvLy8gIyBJbnZhcmlhbnRzCiAvLy8KLS8vLyBUaGUgcG9pbnRlciBpcyB2YWxpZCwgYW5kIGhhcyBvd25lcnNoaXAgb3ZlciB0aGUgcGFnZS4KJiM0MzsvLy8gVGhlIGBQYWdlYCBpcyBiYWNrZWQgYnkgYSB2YWxpZCBgc3RydWN0IHBhZ2VgLgomIzQzOyNbcmVwcih0cmFuc3BhcmVudCldCiBwdWIgc3RydWN0IFBhZ2UgewotICAgIHBhZ2U6IE5vbk51bGwmbHQ7YmluZGluZ3M6OnBhZ2UmZ3Q7LAomIzQzOyAgICBwYWdlOiBPcGFxdWUmbHQ7YmluZGluZ3M6OnBhZ2UmZ3Q7LAogfQogCiAvLyBTQUZFVFk6IFBhZ2VzIGhhdmUgbm8gbG9naWMgdGhhdCByZWxpZXMgb24gdGhlbSBzdGF5aW5nIG9uIGEgZ2l2ZW4gdGhyZWFkLCBzbyBtb3ZpbmcgdGhlbSBhY3Jvc3MKQEAgLTE4NSwxOSAmIzQzOzEyMSwyMCBAQCBpbXBsIFBhZ2UgewogICAgIC8vLyAjIE9rOjombHQ7KCksIGtlcm5lbDo6YWxsb2M6OkFsbG9jRXJyb3ImZ3Q7KCgpKQogICAgIC8vLyBgYGAKICAgICAjW2lubGluZV0KLSAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC0mZ3Q7IFJlc3VsdCZsdDtTZWxmLCBBbGxvY0Vycm9yJmd0OyB7CiYjNDM7ICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1NlbGYmZ3Q7LCBBbGxvY0Vycm9yJmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgZ2ZwX2ZsYWdzYCwgdGhpcyBjYWxsIG1heSBzbGVlcC4gT3RoZXIgdGhhbiB0aGF0LCBpdAogICAgICAgICAvLyBpcyBhbHdheXMgc2FmZSB0byBjYWxsIHRoaXMgbWV0aG9kLgogICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjphbGxvY19wYWdlcyhmbGFncy5hc19yYXcoKSwgMCkgfTsKICAgICAgICAgbGV0IHBhZ2UgPSBOb25OdWxsOjpuZXcocGFnZSkub2tfb3IoQWxsb2NFcnJvcik/OwotICAgICAgICAvLyBJTlZBUklBTlQ6IFdlIGp1c3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBhIHBhZ2UsIHNvIHdlIG5vdyBoYXZlIG93bmVyc2hpcCBvZiB0aGUgbmV3bHkKLSAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYFBhZ2VgIG9iamVjdC4KLSAgICAgICAgT2soU2VsZiB7IHBhZ2UgfSkKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseQomIzQzOyAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYE93bmVkJmx0O1BhZ2UmZ3Q7YCBvYmplY3QuCiYjNDM7ICAgICAgICAvLyBTaW5jZSBgUGFnZWAgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSBwb2ludGVyIGRpcmVjdGx5LgomIzQzOyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KQogICAgIH0KIAogICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuCiAgICAgcHViIGZuIGFzX3B0cigmYW1wO3NlbGYpIC0mZ3Q7ICptdXQgYmluZGluZ3M6OnBhZ2UgewotICAgICAgICBzZWxmLnBhZ2UuYXNfcHRyKCkKJiM0MzsgICAgICAgIE9wYXF1ZTo6Y2FzdF9pbnRvKCZhbXA7c2VsZi5wYWdlKQogICAgIH0KIAogICAgIC8vLyBHZXQgdGhlIG5vZGUgaWQgY29udGFpbmluZyB0aGlzIHBhZ2UuCkBAIC0yMDYsNiAmIzQzOzE0MywyMCBAQCBwdWIgZm4gbmlkKCZhbXA7c2VsZikgLSZndDsgaTMyIHsKICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBhZ2VfdG9fbmlkKHNlbGYuYXNfcHRyKCkpIH0KICAgICB9CiAKJiM0MzsgICAgLy8vIENyZWF0ZSBhIGAmYW1wO1BhZ2VgIGZyb20gYSByYXcgYHN0cnVjdCBwYWdlYCBwb2ludGVyLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vICMgU2FmZXR5CiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gYHB0cmAgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZCByZWZlcmVuY2Ugd2l0aCBhIGxpZmV0aW1lIG9mIGAmIzM5O2FgLgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyZsdDsmIzM5O2EmZ3Q7KHB0cjogKmNvbnN0IGJpbmRpbmdzOjpwYWdlKSAtJmd0OyAmYW1wOyYjMzk7YSBTZWxmIHsKJiM0MzsgICAgICAgIC8vIElOVkFSSUFOVDogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIHJlZmVycyB0byBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAsIHNvCiYjNDM7ICAgICAgICAvLyB0aGUgcmV0dXJuZWQgcmVmZXJlbmNlIHVwaG9sZHMgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBQYWdlYC4KJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgbm90IG51bGwgYW5kIGlzIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkCiYjNDM7ICAgICAgICAvLyByZWZlcmVuY2UuCiYjNDM7ICAgICAgICB1bnNhZmUgeyAmYW1wOypwdHIuY2FzdCgpIH0KJiM0MzsgICAgfQomIzQzOwogICAgIC8vLyBSdW5zIGEgcGllY2Ugb2YgY29kZSB3aXRoIHRoaXMgcGFnZSBtYXBwZWQgdG8gYW4gYWRkcmVzcy4KICAgICAvLy8KICAgICAvLy8gVGhlIHBhZ2UgaXMgdW5tYXBwZWQgd2hlbiB0aGlzIGNhbGwgcmV0dXJucy4KQEAgLTM3MiwxMCAmIzQzOzMyMywxMSBAQCBwdWIgdW5zYWZlIGZuIGNvcHlfZnJvbV91c2VyX3NsaWNlX3JhdygKICAgICB9CiB9CiAKLWltcGwgRHJvcCBmb3IgUGFnZSB7CiYjNDM7aW1wbCBPd25hYmxlIGZvciBQYWdlIHsKICAgICAjW2lubGluZV0KLSAgICBmbiBkcm9wKCZhbXA7bXV0IHNlbGYpIHsKLSAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWUgaXQuCi0gICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXMoc2VsZi5wYWdlLmFzX3B0cigpLCAwKSB9OwomIzQzOyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWUKJiM0MzsgICAgICAgIC8vIGl0LiBTaW5jZSBQYWdlIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcmF3IHBvaW50ZXIgZGlyZWN0bHkuCiYjNDM7ICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6X19mcmVlX3BhZ2VzKHRoaXMuYXNfcHRyKCkuY2FzdCgpLCAwKSB9OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BjaS5ycyBiL3J1c3Qva2VybmVsL3BjaS5ycwppbmRleCA1MDcxY2FlNjU0M2ZkMi4uZWE5ZWY5OWNlY2IwNzYgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BjaS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wY2kucnMKQEAgLTE5LDYgJiM0MzsxOSwxMCBAQAogICAgIH0sCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OkNTdHIsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsCiAgICAgVGhpc01vZHVsZSwgLy8KIH07CkBAIC00ODEsNyAmIzQzOzQ4NSw3IEBAIHVuc2FmZSBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBkZXZpY2U6OkFzQnVzRGV2aWNlJmx0O0N0eCZndDsgZm9yIERldmljZSZsdDtDdHgmZ3Q7CiBpbXBsJmx0OyYjMzk7YSZndDsgY3JhdGU6OmRtYTo6RGV2aWNlJmx0OyYjMzk7YSZndDsgZm9yIERldmljZSZsdDtkZXZpY2U6OkNvcmUmbHQ7JiMzOTthJmd0OyZndDsge30KIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLgogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGNpX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTsKQEAgLTQ5Myw2ICYjNDM7NDk3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzCmluZGV4IDk3OWE5NzE4ZjE1M2Q4Li4wNjdmNjhiOTllOGM1YyAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzCkBAIC03LDcgJiM0Mzs3LDE0IEBACiAvLyEgQyBoZWFkZXI6IFtgaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oKSBhbmQKIC8vISBbYGluY2x1ZGUvbGludXgvcGlkLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkLmgpCiAKLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0eXBlczo6T3BhcXVlfTsKJiM0Mzt1c2UgY3JhdGU6OnsKJiM0MzsgICAgYmluZGluZ3MsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsCiYjNDM7ICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwomIzQzO307CiB1c2UgY29yZTo6cHRyOwogCiAvLy8gV3JhcHMgdGhlIGtlcm5lbCYjMzk7cyBgc3RydWN0IHBpZF9uYW1lc3BhY2VgLiBUaHJlYWQgc2FmZS4KQEAgLTQxLDcgJiM0Mzs0OCw3IEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9wdHImbHQ7JiMzOTthJmd0OyhwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLSZndDsgJmFtcDsmIzM5O2EgU2VsZiB7CiB9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBQaWROYW1lc3BhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLgpAQCAtNTUsNiAmIzQzOzYyLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsJmx0O1BpZE5hbWVzcGFjZSZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O1BpZE5hbWVzcGFjZSZndDtgIGZyb20KJiM0MzsvLyBhIGAmYW1wO1BpZE5hbWVzcGFjZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHt9CiYjNDM7CiAvLyBTQUZFVFk6CiAvLyAtIGBQaWROYW1lc3BhY2U6OmRlY19yZWZgIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgogLy8gLSBJdCBpcyBva2F5IHRvIHNlbmQgb3duZXJzaGlwIG9mIGBQaWROYW1lc3BhY2VgIGFjcm9zcyB0aHJlYWQgYm91bmRhcmllcy4KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzIGIvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMKaW5kZXggOWIzNjJlMDQ5NWQzMjMuLjBiYTY3NjQ0NWIwNmQ3IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycwpAQCAtMjcsNiAmIzQzOzI3LDEwIEBACiAgICAgfSwKICAgICBvZiwKICAgICBwcmVsdWRlOjoqLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6T3BhcXVlLAogICAgIFRoaXNNb2R1bGUsIC8vCiB9OwpAQCAtNTE4LDcgJiM0Mzs1MjIsNyBAQCBwdWIgZm4gb3B0aW9uYWxfaXJxX2J5X25hbWUoJmFtcDtzZWxmLCBuYW1lOiAmYW1wO0NTdHIpIC0mZ3Q7IFJlc3VsdCZsdDtJcnFSZXF1ZXN0Jmx0OyYjMzk7XyZndDsmZ3Q7IHsKIGltcGwmbHQ7JiMzOTthJmd0OyBjcmF0ZTo6ZG1hOjpEZXZpY2UmbHQ7JiMzOTthJmd0OyBmb3IgRGV2aWNlJmx0O2RldmljZTo6Q29yZSZsdDsmIzM5O2EmZ3Q7Jmd0OyB7fQogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uCiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmVmKCkuYXNfcmF3KCkpIH07CkBAIC01MzAsNiAmIzQzOzUzNCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9CiYjNDM7CiBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7Jmd0OyBmb3IgRGV2aWNlJmx0O0N0eCZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wd20ucnMgYi9ydXN0L2tlcm5lbC9wd20ucnMKaW5kZXggNmM5ZDY2NzAwOWVmN2IuLjJkMWNkNzRkZDk4ZTFlIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9wd20ucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcHdtLnJzCkBAIC0xMyw3ICYjNDM7MTMsMTEgQEAKICAgICBkZXZyZXMsCiAgICAgZXJyb3I6OntzZWxmLCB0b19yZXN1bHR9LAogICAgIHByZWx1ZGU6OiosCi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy8KIH07CiB1c2UgY29yZTo6ewpAQCAtNjI5LDcgJiM0Mzs2MzMsNyBAQCBwdWIgZm4gbmV3Jmx0OyYjMzk7YSZndDsoCiB9CiAKIC8vIFNBRkVUWTogSW1wbGVtZW50cyByZWZjb3VudGluZyBmb3IgYENoaXBgIHVzaW5nIHRoZSBlbWJlZGRlZCBgc3RydWN0IGRldmljZWAuCi11bnNhZmUgaW1wbCZsdDtUOiBQd21PcHMmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXAmbHQ7VCZndDsgewomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFB3bU9wcyZndDsgUmVmQ291bnRlZCBmb3IgQ2hpcCZsdDtUJmd0OyB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBgc2VsZi4wLmdldCgpYCBwb2ludHMgdG8gYSB2YWxpZCBgcHdtX2NoaXBgIGJlY2F1c2UgYHNlbGZgIGV4aXN0cy4KQEAgLTY0Nyw2ICYjNDM7NjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtDaGlwJmx0O1QmZ3Q7Jmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7Q2hpcCZsdDtUJmd0OyZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0NoaXAmbHQ7VCZndDtgLgomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFB3bU9wcyZndDsgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ2hpcCZsdDtUJmd0OyB7fQomIzQzOwogLy8gU0FGRVRZOiBgQ2hpcGAgaXMgYSB3cmFwcGVyIGFyb3VuZCBgKm11dCBiaW5kaW5nczo6cHdtX2NoaXBgLiBUaGUgdW5kZXJseWluZyBDCiAvLyBzdHJ1Y3R1cmUmIzM5O3Mgc3RhdGUgaXMgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSBrZXJuZWwmIzM5O3MgZGV2aWNlIG1vZGVsCiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMKaW5kZXggYjcyMWIyZTAwYjk4NmYuLmU2ZmZlN2M2NTBjMzljIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzCkBAIC0xMSw3ICYjNDM7MTEsNyBAQAogLy8hIHVuZGVybHlpbmcgb2JqZWN0LCBidXQgdGhpcyByZWZjb3VudCBpcyBpbnRlcm5hbCB0byB0aGUgb2JqZWN0LiBJdCBlc3NlbnRpYWxseSBpcyBhIFJ1c3QKIC8vISBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGdldF9gIGFuZCBgcHV0X2AgcGF0dGVybiB1c2VkIGluIEMgZm9yIHJlZmVyZW5jZSBjb3VudGluZy4KIC8vIQotLy8hIFRvIG1ha2UgdXNlIG9mIFtgQVJlZiZsdDtNeVR5cGUmZ3Q7YF0sIGBNeVR5cGVgIG5lZWRzIHRvIGltcGxlbWVudCBbYEFsd2F5c1JlZkNvdW50ZWRgXS4gSXQgaXMgYSB0cmFpdAomIzQzOy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWYmbHQ7TXlUeXBlJmd0O2BdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXQKIC8vISBmb3IgYWNjZXNzaW5nIHRoZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IG9mIHRoZSBgTXlUeXBlYCB0eXBlLgogLy8hCiAvLyEgW2BBcmNgXTogY3JhdGU6OnN5bmM6OkFyYwpAQCAtMjMsMjYgJiM0MzsyMywzNSBAQAogICAgIG9wczo6RGVyZWYsCiAgICAgcHRyOjpOb25OdWxsLCAvLwogfTsKJiM0Mzt1c2Uga2VybmVsOjp0eXBlczo6ewomIzQzOyAgICBPd25hYmxlUmVmQ291bnRlZCwKJiM0MzsgICAgT3duZWQsIC8vCiYjNDM7fTsKIAotLy8vIFR5cGVzIHRoYXQgYXJlIF9hbHdheXNfIHJlZmVyZW5jZSBjb3VudGVkLgomIzQzOy8vLyBUeXBlcyB0aGF0IGFyZSBpbnRlcm5hbGx5IHJlZmVyZW5jZSBjb3VudGVkLgogLy8vCiAvLy8gSXQgYWxsb3dzIHN1Y2ggdHlwZXMgdG8gZGVmaW5lIHRoZWlyIG93biBjdXN0b20gcmVmIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGZ1bmN0aW9ucy4KLS8vLyBBZGRpdGlvbmFsbHksIGl0IGFsbG93cyB1c2VycyB0byBjb252ZXJ0IGZyb20gYSBzaGFyZWQgcmVmZXJlbmNlIGAmYW1wO1RgIHRvIGFuIG93bmVkIHJlZmVyZW5jZQotLy8vIFtgQVJlZiZsdDtUJmd0O2BdLgogLy8vCiAvLy8gVGhpcyBpcyB1c3VhbGx5IGltcGxlbWVudGVkIGJ5IHdyYXBwZXJzIHRvIGV4aXN0aW5nIHN0cnVjdHVyZXMgb24gdGhlIEMgc2lkZSBvZiB0aGUgY29kZS4gRm9yCiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkCiAvLy8gaW5zdGFuY2VzIG9mIGEgdHlwZS4KIC8vLwomIzQzOy8vLyBOb3RlOiBJbXBsZW1lbnRpbmcgdGhpcyB0cmFpdCBhbGxvd3MgdHlwZXMgdG8gYmUgd3JhcHBlZCBpbiBhbiBbYEFSZWYmbHQ7U2VsZiZndDtgXS4gSXQgcmVxdWlyZXMgYW4KJiM0MzsvLy8gaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGFuZCBwcm92aWRlcyBvbmx5IHNoYXJlZCByZWZlcmVuY2VzLiBJZiB1bmlxdWUgcmVmZXJlbmNlcyBhcmUgcmVxdWlyZWQKJiM0MzsvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW4KJiM0MzsvLy8gW2BPd25lZCZsdDtTZWxmJmd0O2BdKGNyYXRlOjp0eXBlczo6T3duZWQpLiBJbXBsZW1lbnRpbmcgdGhlIHRyYWl0CiYjNDM7Ly8vIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBhbGxvd3MgdG8gY29udmVydCBiZXR3ZWVuIHVuaXF1ZSBhbmQKJiM0MzsvLy8gc2hhcmVkIHJlZmVyZW5jZXMgKGkuZS4gW2BPd25lZCZsdDtTZWxmJmd0O2BdKGNyYXRlOjp0eXBlczo6T3duZWQpIGFuZAomIzQzOy8vLyBbYEFSZWYmbHQ7U2VsZiZndDtgXSkuCiYjNDM7Ly8vCiAvLy8gIyBTYWZldHkKIC8vLwogLy8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCBrZWVwIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5CiAvLy8gYXQgbGVhc3QgdW50aWwgbWF0Y2hpbmcgZGVjcmVtZW50cyBhcmUgcGVyZm9ybWVkLgogLy8vCiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBhbGwgaW5zdGFuY2VzIGFyZSByZWZlcmVuY2UtY291bnRlZC4gKE90aGVyd2lzZSB0aGV5Ci0vLy8gd29uJiMzOTt0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdAotLy8vIGFsaXZlLikKLXB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7CiYjNDM7Ly8vIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGhvbm91ciB0aGUgcmVxdWlyZW1lbnQgdGhhdCBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSBrZWVwIHRoZSBvYmplY3QgYWxpdmUuKQomIzQzO3B1YiB1bnNhZmUgdHJhaXQgUmVmQ291bnRlZCB7CiAgICAgLy8vIEluY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiB0aGUgb2JqZWN0LgogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKTsKIApAQCAtNTUsMTEgJiM0Mzs2NCwyNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQgewogICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgd2FzIGEgcHJldmlvdXMgbWF0Y2hpbmcgaW5jcmVtZW50IHRvIHRoZSByZWZlcmVuY2UgY291bnQsCiAgICAgLy8vIGFuZCB0aGF0IHRoZSBvYmplY3QgaXMgbm8gbG9uZ2VyIHVzZWQgYWZ0ZXIgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBkZWNyZW1lbnRlZCAoYXMgaXQgbWF5CiAgICAgLy8vIHJlc3VsdCBpbiB0aGUgb2JqZWN0IGJlaW5nIGZyZWVkKSwgdW5sZXNzIHRoZSBjYWxsZXIgb3ducyBhbm90aGVyIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnQKLSAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzCi0gICAgLy8vIFtgQWx3YXlzUmVmQ291bnRlZDo6ZGVjX3JlZmBdIG9uY2UpLgomIzQzOyAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzIFtgUmVmQ291bnRlZDo6ZGVjX3JlZmBdIG9uY2UpLgogICAgIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0Oyk7CiB9CiAKJiM0MzsvLy8gQWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIHR5cGUuCiYjNDM7Ly8vCiYjNDM7Ly8vIEl0IGFsbG93cyBkZXJpdmluZyBhIGNvdW50ZWQgcmVmZXJlbmNlIFtgQVJlZiZsdDtUJmd0O2BdIGZyb20gYSBgJmFtcDtUYC4KJiM0MzsvLy8KJiM0MzsvLy8gVGhpcyBwcm92aWRlcyBzb21lIGNvbnZlbmllbmNlLCBidXQgaXQgYWxsb3dzICYjMzQ7ZXNjYXBpbmcmIzM0OyBib3Jyb3cgY2hlY2tzIG9uIGAmYW1wO1RgLiBBcyBpdAomIzQzOy8vLyBjb21wbGljYXRlcyBhdHRlbXB0cyB0byBlbnN1cmUgdGhhdCBhIHJlZmVyZW5jZSB0byBUIGlzIHVuaXF1ZSwgaXQgaXMgb3B0aW9uYWwgdG8gcHJvdmlkZSBmb3IKJiM0MzsvLy8gW2BSZWZDb3VudGVkYF0gdHlwZXMuIFNlZSAqU2FmZXR5KiBiZWxvdy4KJiM0MzsvLy8KJiM0MzsvLy8gIyBTYWZldHkKJiM0MzsvLy8KJiM0MzsvLy8gSW1wbGVtZW50ZXJzIG11c3QgZW5zdXJlIHRoYXQgbm8gc2FmZXR5IGludmFyaWFudHMgYXJlIHZpb2xhdGVkIGJ5IHVwZ3JhZGluZyBhbiBgJmFtcDtUYCB0byBhbgomIzQzOy8vLyBbYEFSZWYmbHQ7VCZndDtgXS4gSW4gcGFydGljdWxhciB0aGF0IGltcGxpZXMgW2BBbHdheXNSZWZDb3VudGVkYF0gYW5kIFtgY3JhdGU6OnR5cGVzOjpPd25hYmxlYF0KJiM0MzsvLy8gY2Fubm90IGJlIGltcGxlbWVudGVkIGZvciB0aGUgc2FtZSB0eXBlLCBhcyB0aGlzIHdvdWxkIGFsbG93IHZpb2xhdGluZyB0aGUgdW5pcXVlbmVzcyBndWFyYW50ZWUKJiM0MzsvLy8gb2YgW2BjcmF0ZTo6dHlwZXM6Ok93bmVkJmx0O1QmZ3Q7YF0gYnkgZGVyZWZlcmVuY2luZyBpdCBpbnRvIGFuIGAmYW1wO1RgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbQomIzQzOy8vLyB0aGF0LgomIzQzO3B1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZDogUmVmQ291bnRlZCB7fQomIzQzOwogLy8vIEFuIG93bmVkIHJlZmVyZW5jZSB0byBhbiBhbHdheXMtcmVmZXJlbmNlLWNvdW50ZWQgb2JqZWN0LgogLy8vCiAvLy8gVGhlIG9iamVjdCYjMzk7cyByZWZlcmVuY2UgY291bnQgaXMgYXV0b21hdGljYWxseSBkZWNyZW1lbnRlZCB3aGVuIGFuIGluc3RhbmNlIG9mIFtgQVJlZmBdIGlzCkBAIC03MCw3ICYjNDM7OTUsNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQgewogLy8vCiAvLy8gVGhlIHBvaW50ZXIgc3RvcmVkIGluIGBwdHJgIGlzIG5vbi1udWxsIGFuZCB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBbYEFSZWZgXSBpbnN0YW5jZS4gSW4KIC8vLyBwYXJ0aWN1bGFyLCB0aGUgW2BBUmVmYF0gaW5zdGFuY2Ugb3ducyBhbiBpbmNyZW1lbnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0JiMzOTtzIHJlZmVyZW5jZSBjb3VudC4KLXB1YiBzdHJ1Y3QgQVJlZiZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyB7CiYjNDM7cHViIHN0cnVjdCBBUmVmJmx0O1Q6IFJlZkNvdW50ZWQmZ3Q7IHsKICAgICBwdHI6IE5vbk51bGwmbHQ7VCZndDssCiAgICAgX3A6IFBoYW50b21EYXRhJmx0O1QmZ3Q7LAogfQpAQCAtNzksMTkgJiM0MzsxMDQsMTkgQEAgcHViIHN0cnVjdCBBUmVmJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IHsKIC8vIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYCZhbXA7VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LCBpdCBuZWVkcwogLy8gYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYW4gYEFSZWYmbHQ7VCZndDtgIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYQogLy8gbXV0YWJsZSByZWZlcmVuY2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC4KLXVuc2FmZSBpbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kJmd0OyBTZW5kIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogUmVmQ291bnRlZCAmIzQzOyBTeW5jICYjNDM7IFNlbmQmZ3Q7IFNlbmQgZm9yIEFSZWYmbHQ7VCZndDsge30KIAogLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYCZhbXA7QVJlZiZsdDtUJmd0O2AgdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgYFN5bmNgCiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYCZhbXA7VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LAogLy8gaXQgbmVlZHMgYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYSBgJmFtcDtBUmVmJmx0O1QmZ3Q7YCBtYXkgY2xvbmUgaXQgYW5kIGdldCBhbgogLy8gYEFSZWYmbHQ7VCZndDtgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yCiAvLyBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC4KLXVuc2FmZSBpbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kJmd0OyBTeW5jIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogUmVmQ291bnRlZCAmIzQzOyBTeW5jICYjNDM7IFNlbmQmZ3Q7IFN5bmMgZm9yIEFSZWYmbHQ7VCZndDsge30KIAogLy8gRXZlbiBpZiBgVGAgaXMgcGlubmVkLCBwb2ludGVycyB0byBgVGAgY2FuIHN0aWxsIG1vdmUuCi1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IFVucGluIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiYjNDM7aW1wbCZsdDtUOiBSZWZDb3VudGVkJmd0OyBVbnBpbiBmb3IgQVJlZiZsdDtUJmd0OyB7fQogCi1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IEFSZWYmbHQ7VCZndDsgewomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCZndDsgQVJlZiZsdDtUJmd0OyB7CiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BBUmVmYF0uCiAgICAgLy8vCiAgICAgLy8vIEl0IHRha2VzIG92ZXIgYW4gaW5jcmVtZW50IG9mIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0LgpAQCAtMTIwLDE5ICYjNDM7MTQ1LDIxIEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsJmx0O1QmZ3Q7KSAtJmd0OyBTZWxmIHsKICAgICAvLy8KICAgICAvLy8gYGBgCiAgICAgLy8vIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7Ci0gICAgLy8vIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfTsKJiM0MzsgICAgLy8vIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBSZWZDb3VudGVkfTsKICAgICAvLy8KICAgICAvLy8gc3RydWN0IEVtcHR5IHt9CiAgICAgLy8vCi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLgotICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7CiYjNDM7ICAgIC8vLyAvLyBTQUZFVFk6IFRoZSBgUmVmQ291bnRlZGAgaW1wbGVtZW50YXRpb24gZm9yIGBFbXB0eWAgZG9lcyBub3QgY291bnQgcmVmZXJlbmNlcyBhbmQgbmV2ZXIKJiM0MzsgICAgLy8vIC8vIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gVGh1cyB3ZSBjYW4gYWN0IGFzIG93bmluZyBhbiBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50IGZvcgomIzQzOyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLgomIzQzOyAgICAvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRW1wdHkgewogICAgIC8vLyAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHt9CiAgICAgLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZihfb2JqOiBOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7fQogICAgIC8vLyB9CiAgICAgLy8vCiAgICAgLy8vIGxldCBtdXQgZGF0YSA9IEVtcHR5IHt9OwogICAgIC8vLyBsZXQgcHRyID0gTm9uTnVsbDo6Jmx0O0VtcHR5Jmd0Ozo6bmV3KCZhbXA7bXV0IGRhdGEpLnVud3JhcCgpOwotICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy4KJiM0MzsgICAgLy8vIC8vIFNBRkVUWTogV2Uga2VlcCBgZGF0YWAgYXJvdW5kIGxvbmdlciB0aGFuIHRoZSBgQVJlZmAuCiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZiZsdDtFbXB0eSZndDsgPSB1bnNhZmUgeyBBUmVmOjpmcm9tX3JhdyhwdHIpIH07CiAgICAgLy8vIGxldCByYXdfcHRyOiBOb25OdWxsJmx0O0VtcHR5Jmd0OyA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTsKICAgICAvLy8KQEAgLTE0Myw3ICYjNDM7MTcwLDcgQEAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtJmd0OyBOb25OdWxsJmx0O1QmZ3Q7IHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQWx3YXlzUmVmQ291bnRlZCZndDsgQ2xvbmUgZm9yIEFSZWYmbHQ7VCZndDsgewomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCZndDsgQ2xvbmUgZm9yIEFSZWYmbHQ7VCZndDsgewogICAgIGZuIGNsb25lKCZhbXA7c2VsZikgLSZndDsgU2VsZiB7CiAgICAgICAgIHNlbGYuaW5jX3JlZigpOwogICAgICAgICAvLyBTQUZFVFk6IFdlIGp1c3QgaW5jcmVtZW50ZWQgdGhlIHJlZmNvdW50IGFib3ZlLgpAQCAtMTUxLDcgJiM0MzsxNzgsNyBAQCBmbiBjbG9uZSgmYW1wO3NlbGYpIC0mZ3Q7IFNlbGYgewogICAgIH0KIH0KIAotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyBEZXJlZiBmb3IgQVJlZiZsdDtUJmd0OyB7CiYjNDM7aW1wbCZsdDtUOiBSZWZDb3VudGVkJmd0OyBEZXJlZiBmb3IgQVJlZiZsdDtUJmd0OyB7CiAgICAgdHlwZSBUYXJnZXQgPSBUOwogCiAgICAgZm4gZGVyZWYoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO1NlbGY6OlRhcmdldCB7CkBAIC0xNjgsNyAmIzQzOzE5NSwxNCBAQCBmbiBmcm9tKGI6ICZhbXA7VCkgLSZndDsgU2VsZiB7CiAgICAgfQogfQogCi1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IERyb3AgZm9yIEFSZWYmbHQ7VCZndDsgewomIzQzO2ltcGwmbHQ7VDogT3duYWJsZVJlZkNvdW50ZWQmZ3Q7IEZyb20mbHQ7T3duZWQmbHQ7VCZndDsmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7IHsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIGZuIGZyb20oYjogT3duZWQmbHQ7VCZndDspIC0mZ3Q7IFNlbGYgewomIzQzOyAgICAgICAgVDo6aW50b19zaGFyZWQoYikKJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IFJlZkNvdW50ZWQmZ3Q7IERyb3AgZm9yIEFSZWYmbHQ7VCZndDsgewogICAgIGZuIGRyb3AoJmFtcDttdXQgc2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UmIzM5O3JlIGFib3V0IHRvCiAgICAgICAgIC8vIGRlY3JlbWVudC4KQEAgLTE3OCwxOSAmIzQzOzIxMiwxOSBAQCBmbiBkcm9wKCZhbXA7bXV0IHNlbGYpIHsKIAogaW1wbCZsdDtULCBVJmd0OyBQYXJ0aWFsRXEmbHQ7QVJlZiZsdDtVJmd0OyZndDsgZm9yIEFSZWYmbHQ7VCZndDsKIHdoZXJlCi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXEmbHQ7VSZndDssCi0gICAgVTogQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgVDogUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXEmbHQ7VSZndDssCiYjNDM7ICAgIFU6IFJlZkNvdW50ZWQsCiB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gZXEoJmFtcDtzZWxmLCBvdGhlcjogJmFtcDtBUmVmJmx0O1UmZ3Q7KSAtJmd0OyBib29sIHsKICAgICAgICAgVDo6ZXEoJmFtcDsqKnNlbGYsICZhbXA7KipvdGhlcikKICAgICB9CiB9Ci1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgRXEmZ3Q7IEVxIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiYjNDM7aW1wbCZsdDtUOiBSZWZDb3VudGVkICYjNDM7IEVxJmd0OyBFcSBmb3IgQVJlZiZsdDtUJmd0OyB7fQogCiBpbXBsJmx0O1QsIFUmZ3Q7IFBhcnRpYWxFcSZsdDsmYW1wOyYjMzk7XyBVJmd0OyBmb3IgQVJlZiZsdDtUJmd0Owogd2hlcmUKLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFBhcnRpYWxFcSZsdDtVJmd0OywKJiM0MzsgICAgVDogUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXEmbHQ7VSZndDssCiB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gZXEoJmFtcDtzZWxmLCBvdGhlcjogJmFtcDsmYW1wO1UpIC0mZ3Q7IGJvb2wgewpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdGFzay5ycyBiL3J1c3Qva2VybmVsL3Rhc2sucnMKaW5kZXggMzgyNzNmNGVlZGI1MTMuLjYyNTk0MzBiMGNhMzE4IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC90YXNrLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3Rhc2sucnMKQEAgLTEwLDcgJiM0MzsxMCwxMiBAQAogICAgIHBpZF9uYW1lc3BhY2U6OlBpZE5hbWVzcGFjZSwKICAgICBwcmVsdWRlOjoqLAogICAgIHN5bmM6OmFyZWY6OkFSZWYsCi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE5vdFRocmVhZFNhZmUsCiYjNDM7ICAgICAgICBPcGFxdWUsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogfTsKIHVzZSBjb3JlOjp7CiAgICAgb3BzOjpEZXJlZiwKQEAgLTM0Nyw3ICYjNDM7MzUyLDcgQEAgcHViIGZuIGdyb3VwX2xlYWRlcigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7VGFzayB7CiB9CiAKIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgVGFza2AgaXMgYWx3YXlzIHJlZmNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgVGFzayB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLgpAQCAtMzYxLDYgJiM0MzszNjYsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O1Rhc2smZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtUYXNrYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHt9CiYjNDM7CiBpbXBsIFBhcnRpYWxFcSBmb3IgVGFzayB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gZXEoJmFtcDtzZWxmLCBvdGhlcjogJmFtcDtTZWxmKSAtJmd0OyBib29sIHsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3R5cGVzLnJzIGIvcnVzdC9rZXJuZWwvdHlwZXMucnMKaW5kZXggYWMzMTZmZDdiNTM4ZmUuLjZhYTc2MDk1MmNiNjM1IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC90eXBlcy5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90eXBlcy5ycwpAQCAtMTUsNiAmIzQzOzE1LDE4IEBACiBwdWIgbW9kIGZvcl9sdDsKIHB1YiB1c2UgZm9yX2x0OjpGb3JMdDsKIAomIzQzO3B1YiB1c2UgY3JhdGU6OnsKJiM0MzsgICAgb3duZWQ6OnsKJiM0MzsgICAgICAgIE93bmFibGUsCiYjNDM7ICAgICAgICBPd25hYmxlUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE93bmVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwgLy8KJiM0Mzt9OwomIzQzOwogLy8vIFVzZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIGFuZCBmcm9tIGZvcmVpZ24gKG5vbi1SdXN0KSBsYW5ndWFnZXMuCiAvLy8KIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91c2IucnMgYi9ydXN0L2tlcm5lbC91c2IucnMKaW5kZXggN2FmZjBjODJkMGFmYzAuLjU5MzUwYzZiMGRmMmFkIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC91c2IucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvdXNiLnJzCkBAIC0xOCw3ICYjNDM7MTgsMTAgQEAKICAgICAgICAgdG9fcmVzdWx0LCAvLwogICAgIH0sCiAgICAgcHJlbHVkZTo6KiwKLSAgICBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6T3BhcXVlLAogICAgIFRoaXNNb2R1bGUsIC8vCiB9OwpAQCAtMzkyLDcgJiM0MzszOTUsNyBAQCBmbiBhc19yZWYoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO0RldmljZSB7CiB9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJbnRlcmZhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJbnRlcmZhY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgSW50ZXJmYWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWAKICAgICAgICAgLy8gcmV0dXJucyBhIHZhbGlkIGBzdHJ1Y3QgdXNiX2ludGVyZmFjZWAgcG9pbnRlciwgZm9yIHdoaWNoIHdlIHdpbGwKQEAgLTQwNiw2ICYjNDM7NDA5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7SW50ZXJmYWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7SW50ZXJmYWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge30KJiM0MzsKIC8vIFNBRkVUWTogQSBgSW50ZXJmYWNlYCBpcyBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgYW5kIGNhbiBiZSByZWxlYXNlZCBmcm9tIGFueSB0aHJlYWQuCiB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbnRlcmZhY2Uge30KIApAQCAtNDQzLDcgJiM0Mzs0NTAsNyBAQCBmbiBhc19yYXcoJmFtcDtzZWxmKSAtJmd0OyAqbXV0IGJpbmRpbmdzOjp1c2JfZGV2aWNlIHsKIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWAKICAgICAgICAgLy8gcmV0dXJucyBhIHZhbGlkIGBzdHJ1Y3QgdXNiX2RldmljZWAgcG9pbnRlciwgZm9yIHdoaWNoIHdlIHdpbGwKQEAgLTQ1Nyw2ICYjNDM7NDY0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycwppbmRleCA3ZTI1M2I2ZjI5OWNlMy4uNzc2NzNiOGVhNDVmYjEgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnMKQEAgLTE5Miw3ICYjNDM7MTkyLDcgQEAKICAgICBzeW5jOjp7CiAgICAgICAgIGFyZWY6OnsKICAgICAgICAgICAgIEFSZWYsCi0gICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvLwomIzQzOyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vCiAgICAgICAgIH0sCiAgICAgICAgIEFyYywKICAgICAgICAgTG9ja0NsYXNzS2V5LCAvLwpAQCAtOTU0LDcgJiM0Mzs5NTQsNyBAQCB1bnNhZmUgaW1wbCZsdDtULCBjb25zdCBJRDogdTY0Jmd0OyBSYXdEZWxheWVkV29ya0l0ZW0mbHQ7SUQmZ3Q7IGZvciBQaW4mbHQ7S0JveCZsdDtUJmd0OyZndDsKIC8vICAgICBpbXBsZW1lbnRhdGlvbiBvZiBgV29ya0l0ZW1Qb2ludGVyYCBmb3IgYEFSZWYmbHQ7VCZndDtgLgogdW5zYWZlIGltcGwmbHQ7VCwgY29uc3QgSUQ6IHU2NCZndDsgV29ya0l0ZW1Qb2ludGVyJmx0O0lEJmd0OyBmb3IgQVJlZiZsdDtUJmd0Owogd2hlcmUKLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICBUOiBSZWZDb3VudGVkLAogICAgIFQ6IFdvcmtJdGVtJmx0O0lELCBQb2ludGVyID0gU2VsZiZndDssCiAgICAgVDogSGFzV29yayZsdDtULCBJRCZndDssCiB7CkBAIC05ODcsNyAmIzQzOzk4Nyw3IEBAIHVuc2FmZSBpbXBsJmx0O1QsIGNvbnN0IElEOiB1NjQmZ3Q7IFdvcmtJdGVtUG9pbnRlciZsdDtJRCZndDsgZm9yIEFSZWYmbHQ7VCZndDsKIC8vIHJlcXVpcmVtZW50cyBvZiBgV29ya0l0ZW1Qb2ludGVyYC4KIHVuc2FmZSBpbXBsJmx0O1QsIGNvbnN0IElEOiB1NjQmZ3Q7IFJhd1dvcmtJdGVtJmx0O0lEJmd0OyBmb3IgQVJlZiZsdDtUJmd0Owogd2hlcmUKLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICBUOiBSZWZDb3VudGVkLAogICAgIFQ6IFdvcmtJdGVtJmx0O0lELCBQb2ludGVyID0gU2VsZiZndDssCiAgICAgVDogSGFzV29yayZsdDtULCBJRCZndDssCiB7CkBAIC0xMDIwLDcgJiM0MzsxMDIwLDcgQEAgdW5zYWZlIGltcGwmbHQ7VCwgY29uc3QgSUQ6IHU2NCZndDsgUmF3RGVsYXllZFdvcmtJdGVtJmx0O0lEJmd0OyBmb3IgQVJlZiZsdDtUJmd0Owogd2hlcmUKICAgICBUOiBXb3JrSXRlbSZsdDtJRCwgUG9pbnRlciA9IFNlbGYmZ3Q7LAogICAgIFQ6IEhhc0RlbGF5ZWRXb3JrJmx0O1QsIElEJmd0OywKLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICBUOiBSZWZDb3VudGVkLAogewogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDE4CgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDEwMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgRGVlcCBEaXZlOiBObyBGdXp6aW5nIE5lZWRlZCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbnRyb2R1Y2luZyBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHlwZXMsIGFuZCByZW9yZ2FuaXppbmcgaG93IHJlZmVyZW5jZSBjb3VudGluZyB3b3Jrcy4gSXQgc2VlbXMgbGlrZSBhIGZ1bmRhbWVudGFsIHJlZmFjdG9yaW5nIG9mIHRoZSBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMganVzdCBhIHR5cGUgc3lzdGVtIHNodWZmbGUsIG9yIGFyZSB0aGVyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29uc2lkZXI/CgpJIHNlZSB0aGF0IGl0JiMzOTtzIGludHJvZHVjaW5nIG5ldyB0eXBlcyBhbmQgdHJhaXRzIGluIGBydXN0L2tlcm5lbC9vd25lZC5yc2AgYW5kIGNoYW5naW5nIGhvdyBgQWx3YXlzUmVmQ291bnRlZGAgaXMgc3RydWN0dXJlZC4gSXQmIzM5O3MgYWxzbyBtb2RpZnlpbmcgaG93IGBQYWdlYCBpcyBoYW5kbGVkLCB1c2luZyBgT3duZWQmbHQ7UGFnZSZndDtgIGluc3RlYWQgb2YgZGlyZWN0bHkgcmV0dXJuaW5nIGBQYWdlYCBmcm9tIGBhbGxvY19wYWdlYC4gVGhpcyBjaGFuZ2UgcmlwcGxlcyB0aHJvdWdoIHRvIHBsYWNlcyBsaWtlIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIgKGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNgKSwgYWRhcHRpbmcgdG8gdGhlIG5ldyB0eXBlLgoKTXkgZm9jdXMgaXMgYWx3YXlzIG9uIG5ldyBmdW5jdGlvbmFsaXR5IHRoYXQgY291bGQgYmUgYSBmdXp6aW5nIHRhcmdldC4gQWZ0ZXIgYSBjbG9zZSBsb29rLCB0aGUgcGF0Y2ggaXMgY29uZmluZWQgdG8gdGhlIFJ1c3QgYWJzdHJhY3Rpb25zIGFuZCBhZGFwdGF0aW9ucyB0byB0aGUgQW5kcm9pZCBCaW5kZXIgZHJpdmVyLiBUaGUgQmluZGVyIGRyaXZlciBjaGFuZ2VzIGFyZSBzdHJhaWdodGZvcndhcmQgdXBkYXRlcyB0byB1c2UgdGhlIG5ldyBgT3duZWQmbHQ7UGFnZSZndDtgIHR5cGUgc2lnbmF0dXJlLCB3aGljaCBpcyBtZXJlbHkgYSB3cmFwcGVyIGFyb3VuZCBhIGBOb25OdWxsJmx0O1QmZ3Q7YCBhbmQgY2FsbHMgYFQ6OnJlbGVhc2VgIG9uIGRyb3AuIFRoaXMgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uIHdoZXJlIGBQYWdlYCB3YXMgaW1wbGVtZW50aW5nIGBEcm9wYC4KCkkmIzM5O20gdmVyaWZ5aW5nIGlmIHRoZXJlIGFyZSBhbnkgbmV3IGZ1bmN0aW9ucyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGZ1enplZC4gSXQgYWRkcyBtZXRob2RzIGxpa2UgYE93bmVkOjpmcm9tX3Jhd2AsIGBPd25lZDo6aW50b19yYXdgLCBldGMuIFRoZXNlIGFyZSBhbGwgcGFydCBvZiB0aGUgUnVzdCBhYnN0cmFjdGlvbiBtYWNoaW5lcnkuIFRoZXJlJiMzOTtzIG5vIG5ldyBDIGNvZGUgZXhwb3NlZCwgbm8gY29tcGxleCBsb2dpYyBpbnRyb2R1Y2VkLiBJdCYjMzk7cyBhbGwgYWJvdXQgcmVzaGFwaW5nIHR5cGVzLgoKSSYjMzk7bSBjaGVja2luZyBpZiB0aGVyZSYjMzk7cyBhbnkgYWx0ZXJhdGlvbiB0byBiZWhhdmlvciBpbiBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYC4gSXQmIzM5O3MganVzdCByZXBsYWNpbmcgYSBmaWVsZCB0eXBlIChgUGFnZWAgd2l0aCBgT3duZWQmbHQ7UGFnZSZndDtgKS4gU2luY2UgYm90aCBhcmUgZXNzZW50aWFsbHkgcG9pbnRlcnMgdW5kZXIgdGhlIGhvb2QsIHRoZSBtZW1vcnkgbGF5b3V0IGlzIGlkZW50aWNhbCwgYW5kIHNvIGlzIHRoZSBkcm9wIGJlaGF2aW9yLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgdGhlcmUmIzM5O3Mgbm8gcmVhc29uIHRvIGZ1enogdGhpcy4gVGhpcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgKHR5cGVzLCB0cmFpdHMpIGFuZCBhZGFwdGF0aW9uIG9mIGV4aXN0aW5nIGNvZGUgdG8gdXNlIHRoZW0uIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IHN5c2NhbGxzLCBuZXcgZHJpdmVycywgb3IgY2hhbmdlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIGBydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzYCwgYW5kIGl0JiMzOTtzIGp1c3QgYSBoZWxwZXIgbWV0aG9kLCBub3RoaW5nIHRoYXQgZXhwYW5kcyB0aGUgYXR0YWNrIHN1cmZhY2UuCgoqKldvcnRoRnV6emluZz1mYWxzZSoqIGJlY2F1c2UgdGhpcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgKGludHJvZHVjaW5nIGBPd25lZGAgYW5kIGBPd25hYmxlYCwgc3BsaXR0aW5nIGBBbHdheXNSZWZDb3VudGVkYCkgYW5kIGFkYXB0aW5nIGV4aXN0aW5nIGNvZGUgdG8gdXNlIHRoZW0sIHdpdGhvdXQgY2hhbmdpbmcgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgYWRhcHRzIGV4aXN0aW5nIFJ1c3QgY29kZSAobGlrZSBgUGFnZWAgYW5kIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIpIHRvIHVzZSB0aGVzZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IGRyaXZlcnMsIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgaW4gdGhlIGtlcm5lbC4gSXQgaW50cm9kdWNlcyBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHlwZXMsIHNwbGl0cyBgQWx3YXlzUmVmQ291bnRlZGAgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYCwgYW5kIGFkYXB0cyBleGlzdGluZyBSdXN0IGNvZGUgKGxpa2UgYFBhZ2VgIGFuZCB0aGUgQW5kcm9pZCBCaW5kZXIgZHJpdmVyKSB0byB1c2UgdGhlc2UgbmV3IHR5cGVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMsIG5ldyBkcml2ZXJzLCBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCByZXF1aXJlcyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjA2OjAzLjczMTg1MDk0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjcyMjI4MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgaW4gdGhlIGtlcm5lbC4gSXQgaW50cm9kdWNlcyBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHlwZXMsIHNwbGl0cyBgQWx3YXlzUmVmQ291bnRlZGAgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYCwgYW5kIGFkYXB0cyBleGlzdGluZyBSdXN0IGNvZGUgKGxpa2UgYFBhZ2VgIGFuZCB0aGUgQW5kcm9pZCBCaW5kZXIgZHJpdmVyKSB0byB1c2UgdGhlc2UgbmV3IHR5cGVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMsIG5ldyBkcml2ZXJzLCBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCByZXF1aXJlcyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6MDY6MDMuNzMxODYyNTU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODI0MDUzNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2NjQzMGE3MTAyZWY3NGU5ZDRiMmVkNDI0N2Q4ZmYxNWY1ZWFmNmU2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjA2OjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xcbmluZGV4IGU1NGE5MGU2MjQwMmE0Li43OTQxZWI4NWI0ZWY0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcXG4rKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcXG5AQCAtMzMsNyArMzMsNyBAQFxcbiAgICAgc3luYzo6e2FyZWY6OkFSZWYsIE11dGV4LCBTcGluTG9ja30sXFxuICAgICB0YXNrOjpQaWQsXFxuICAgICB0cmFuc211dGU6OkZyb21CeXRlcyxcXG4tICAgIHR5cGVzOjpPcGFxdWUsXFxuKyAgICB0eXBlczo6e09wYXF1ZSwgT3duZWR9LFxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLFxcbiB9O1xcbiBcXG5AQCAtMTk4LDcgKzE5OCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIElubmVyIHt9XFxuICNbcmVwcihDKV1cXG4gc3RydWN0IFBhZ2VJbmZvIHtcXG4gICAgIGxydTogYmluZGluZ3M6Omxpc3RfaGVhZCxcXG4tICAgIHBhZ2U6IE9wdGlvblxcdTAwM2NQYWdlXFx1MDAzZSxcXG4rICAgIHBhZ2U6IE9wdGlvblxcdTAwM2NPd25lZFxcdTAwM2NQYWdlXFx1MDAzZVxcdTAwM2UsXFxuICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsXFxuIH1cXG4gXFxuQEAgLTIwNiw3ICsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHtcXG4gICAgIC8vLyAjIFNhZmV0eVxcbiAgICAgLy8vXFxuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0Llxcbi0gICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBQYWdlKSB7XFxuKyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkXFx1MDAzY1BhZ2VcXHUwMDNlKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xcbiBcXG5AQCAtMjI5LDEzICsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlXFx1MDAzYydhXFx1MDAzZShtZTogKmNvbnN0IFBhZ2VJbmZvKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjXFx1MDAyNidhIFBhZ2VcXHUwMDNlIHtcXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXFx1MDAyNnJhdyBjb25zdCAoKm1lKS5wYWdlIH07XFxuIFxcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgZm9yIHJlYWRpbmcuXFxuLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH1cXG4rICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfZGVyZWYoKSB9XFxuICAgICB9XFxuIFxcbiAgICAgLy8vICMgU2FmZXR5XFxuICAgICAvLy9cXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICdhLlxcbi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVxcdTAwM2UgT3B0aW9uXFx1MDAzY1BhZ2VcXHUwMDNlIHtcXG4rICAgIHVuc2FmZSBmbiB0YWtlX3BhZ2UobWU6ICptdXQgUGFnZUluZm8pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NPd25lZFxcdTAwM2NQYWdlXFx1MDAzZVxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuXFxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFxcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcXG4gXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xcbmluZGV4IGNkNDIwM2YyN2FlZDA2Li5jN2I5YjA2OWNmNzVkZCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcXG5AQCAtMTY5LDcgKzE2OSw3IEBAIHVuc2FmZSBmbiByZWFsbG9jKFxcbiB9XFxuIFxcbiBpbXBsIFZtYWxsb2Mge1xcbi0gICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgcGFnZTo6Qm9ycm93ZWRQYWdlYF0uXFxuKyAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BQYWdlYF0ocGFnZTo6UGFnZSkgcmVmZXJlbmNlLlxcbiAgICAgLy8vXFxuICAgICAvLy8gIyBFeGFtcGxlc1xcbiAgICAgLy8vXFxuQEAgLTIwMiwyMCArMjAyLDE3IEBAIGltcGwgVm1hbGxvYyB7XFxuICAgICAvLy9cXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgcmVtYWluIHZhbGlkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIGAnYWAuXFxuLSAgICBwdWIgdW5zYWZlIGZuIHRvX3BhZ2VcXHUwMDNjJ2FcXHUwMDNlKHB0cjogTm9uTnVsbFxcdTAwM2N1OFxcdTAwM2UpIC1cXHUwMDNlIHBhZ2U6OkJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2Uge1xcbisgICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXFx1MDAzYydhXFx1MDAzZShwdHI6IE5vbk51bGxcXHUwMDNjdThcXHUwMDNlKSAtXFx1MDAzZSBcXHUwMDI2J2EgcGFnZTo6UGFnZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS5cXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTtcXG4gXFxuLSAgICAgICAgLy8gU0FGRVRZOiBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWQgcG9pbnRlclxcbi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuXFxuLSAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07XFxuLVxcbiAgICAgICAgIC8vIFNBRkVUWTpcXG4tICAgICAgICAvLyAtIGBwYWdlYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mXFxuLSAgICAgICAgLy8gICB0aGlzIGZ1bmN0aW9uIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLlxcbi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZlxcbi0gICAgICAgIC8vICAgYCdhYC5cXG4tICAgICAgICB1bnNhZmUgeyBwYWdlOjpCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH1cXG4rICAgICAgICAvLyAtIGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCwgbm9uLW51bGwgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWRcXG4rICAgICAgICAvLyAgIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeSwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uXFxuKyAgICAgICAgLy8gICBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cXG4rICAgICAgICAvLyAtIEJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb24gYHB0cmAsIGFuZCBoZW5jZSB0aGUgYHN0cnVjdCBwYWdlYCwgaXNcXG4rICAgICAgICAvLyAgIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGAnYWAuXFxuKyAgICAgICAgdW5zYWZlIHsgXFx1MDAyNipwYWdlLmNhc3QoKSB9XFxuICAgICB9XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzIGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcXG5pbmRleCAwMmZkYTNlYTVjYWU2Ni4uOGRjYzE2ZWQ4OTg5MzEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5yc1xcbkBAIC05LDcgKzksNyBAQFxcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xcbiB9O1xcbiBcXG4tLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cXG4rLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2VzIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cXG4gLy8vXFxuIC8vLyAjIEd1YXJhbnRlZXNcXG4gLy8vXFxuQEAgLTI4LDExICsyOCwxMSBAQCBwdWIgc3RydWN0IFZtYWxsb2NQYWdlSXRlclxcdTAwM2MnYVxcdTAwM2Uge1xcbiAgICAgc2l6ZTogdXNpemUsXFxuICAgICAvLy8gVGhlIGN1cnJlbnQgcGFnZSBpbmRleCBvZiB0aGUgW2BJdGVyYXRvcmBdLlxcbiAgICAgaW5kZXg6IHVzaXplLFxcbi0gICAgX3A6IFBoYW50b21EYXRhXFx1MDAzY3BhZ2U6OkJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlLFxcbisgICAgX3A6IFBoYW50b21EYXRhXFx1MDAzY1xcdTAwMjYnYSBwYWdlOjpQYWdlXFx1MDAzZSxcXG4gfVxcbiBcXG4gaW1wbFxcdTAwM2MnYVxcdTAwM2UgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlclxcdTAwM2MnYVxcdTAwM2Uge1xcbi0gICAgdHlwZSBJdGVtID0gcGFnZTo6Qm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZTtcXG4rICAgIHR5cGUgSXRlbSA9IFxcdTAwMjYnYSBwYWdlOjpQYWdlO1xcbiBcXG4gICAgIGZuIG5leHQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjU2VsZjo6SXRlbVxcdTAwM2Uge1xcbiAgICAgICAgIGxldCBvZmZzZXQgPSBzZWxmLmluZGV4LmNoZWNrZWRfbXVsKHBhZ2U6OlBBR0VfU0laRSk/O1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xcbmluZGV4IDM1ZDFlMDE1ODQ4ZGRhLi5kNTM0ZThhZGNmN2IzMyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xcbkBAIC0yMTEsNiArMjExLDE1IEBAIHB1YiBmbiBsZWFrXFx1MDAzYydhXFx1MDAzZShiOiBTZWxmKSAtXFx1MDAzZSBcXHUwMDI2J2EgbXV0IFQge1xcbiAgICAgICAgIC8vIHdoaWNoIHBvaW50cyB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiBgVGAuXFxuICAgICAgICAgdW5zYWZlIHsgXFx1MDAyNm11dCAqQm94OjppbnRvX3JhdyhiKSB9XFxuICAgICB9XFxuK1xcbisgICAgLy8vIENvbnN1bWVzIHRoZSBgQm94XFx1MDAzY1QsQVxcdTAwM2VgIGFuZCByZXR1cm5zIGEgYE5vbk51bGxcXHUwMDNjVFxcdTAwM2VgLlxcbisgICAgLy8vXFxuKyAgICAvLy8gTGlrZSBbYFNlbGY6OmludG9fcmF3YF0sIGJ1dCByZXR1cm5zIGEgYE5vbk51bGxgLlxcbisgICAgI1tpbmxpbmVdXFxuKyAgICBwdWIgZm4gaW50b19ub25fbnVsbChiOiBTZWxmKSAtXFx1MDAzZSBOb25OdWxsXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IGBLQm94OjppbnRvX3Jhd2AgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIuXFxuKyAgICAgICAgdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChTZWxmOjppbnRvX3JhdyhiKSkgfVxcbisgICAgfVxcbiB9XFxuIFxcbiBpbXBsXFx1MDAzY1QsIEFcXHUwMDNlIEJveFxcdTAwM2NNYXliZVVuaW5pdFxcdTAwM2NUXFx1MDAzZSwgQVxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzIGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXFxuaW5kZXggYzQyOTI4ZDVhMjM5M2YuLjg1NDUyNTI4OWM4YjQzIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xcbkBAIC0xOSw2ICsxOSwxMCBAQFxcbiAgICAgICAgIHRvX3Jlc3VsdCwgLy9cXG4gICAgIH0sXFxuICAgICBwcmVsdWRlOjoqLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6e1xcbiAgICAgICAgIEZvckx0LFxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxcbkBAIC0zNDQsNyArMzQ4LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xcbkBAIC0zNjMsNiArMzY3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkRldmljZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZVxcdTAwM2UgZm9yIERldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXFxuaW5kZXggY2UzZTMwYzgxY2I1ZWQuLjhkYWQxNWFlNGNmYjBhIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXFxuQEAgLTksNyArOSwxMSBAQFxcbiAgICAgYmxvY2s6Om1xOjpPcGVyYXRpb25zLFxcbiAgICAgZXJyb3I6OlJlc3VsdCxcXG4gICAgIHN5bmM6OntcXG4tICAgICAgICBhcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuKyAgICAgICAgYXJlZjo6e1xcbisgICAgICAgICAgICBBUmVmLFxcbisgICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgICAgIH0sXFxuICAgICAgICAgYXRvbWljOjpSZWxheGVkLFxcbiAgICAgICAgIFJlZmNvdW50LFxcbiAgICAgfSxcXG5AQCAtMjI5LDExICsyMzMsMTAgQEAgdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgU2VuZCBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7fVxcbiAvLyBtdXRhdGUgYHNlbGZgIGFyZSBpbnRlcm5hbGx5IHN5bmNocm9uaXplZGBcXG4gdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgU3luYyBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7fVxcbiBcXG4tLy8gU0FGRVRZOiBBbGwgaW5zdGFuY2VzIG9mIGBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXNcXG4tLy8gaW1wbGVtZW50YXRpb24gb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudFxcbi0vLyBrZWVwcyB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeSBhdCBsZWFzdCB1bnRpbCBhIG1hdGNoaW5nIHJlZmVyZW5jZSBjb3VudFxcbi0vLyBkZWNyZW1lbnQgaXMgZXhlY3V0ZWQuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IE9wZXJhdGlvbnNcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3RcXHUwMDNjVFxcdTAwM2Uge1xcbisvLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcXHUwMDNjVFxcdTAwM2VgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgUmVmQ291bnRlZGBcXG4rLy8gZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50IGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGFcXG4rLy8gbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpcyBleGVjdXRlZC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgUmVmQ291bnRlZCBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgc2VsZi53cmFwcGVyX3JlZigpLnJlZmNvdW50KCkuaW5jKCk7XFxuICAgICB9XFxuQEAgLTI1NSwzICsyNTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgICAgIH1cXG4gICAgIH1cXG4gfVxcbitcXG4rLy8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjUmVxdWVzdFxcdTAwM2VgXFxuKy8vIGZyb20gYSBgXFx1MDAyNlJlcXVlc3RgIChidXQgdGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlKS5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7fVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9jcmVkLnJzIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xcbmluZGV4IGZmYTE1NmI5ZGYzNzdlLi5iMTc3MzZhOWFkY2Q1OCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xcbkBAIC04LDcgKzgsMTUgQEBcXG4gLy8hXFxuIC8vISBSZWZlcmVuY2U6IFxcdTAwM2NodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9zZWN1cml0eS9jcmVkZW50aWFscy5odG1sXFx1MDAzZVxcbiBcXG4tdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHRhc2s6Okt1aWQsIHR5cGVzOjpPcGFxdWV9O1xcbit1c2UgY3JhdGU6OntcXG4rICAgIGJpbmRpbmdzLFxcbisgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCxcXG4rICAgIHRhc2s6Okt1aWQsXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgT3BhcXVlLCAvL1xcbisgICAgfSwgLy9cXG4rfTtcXG4gXFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBjcmVkYC5cXG4gLy8vXFxuQEAgLTc2LDcgKzg0LDcgQEAgcHViIGZuIGV1aWQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIEt1aWQge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYENyZWRlbnRpYWxgIGlzIGFsd2F5cyByZWYtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC05MCwzICs5OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXFx1MDAzY0NyZWRlbnRpYWxcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9jcmVkKG9iai5jYXN0KCkuYXNfcHRyKCkpIH07XFxuICAgICB9XFxuIH1cXG4rXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjQ3JlZGVudGlhbFxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkNyZWRlbnRpYWxgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHt9XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xcbmluZGV4IDY0NWFmYzQ5YTI3ZDY0Li4yZTkwZjZhMDZmZDA1OSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9kZXZpY2UucnNcXG5AQCAtOCw4ICs4LDEyIEBAXFxuICAgICBiaW5kaW5ncyxcXG4gICAgIGZtdCxcXG4gICAgIHByZWx1ZGU6OiosXFxuLSAgICBzeW5jOjphcmVmOjpBUmVmLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFSZWYsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuICAgICAgICAgRm9yZWlnbk93bmFibGUsXFxuICAgICAgICAgT3BhcXVlLCAvL1xcbiAgICAgfSwgLy9cXG5AQCAtNDQ4LDcgKzQ1Miw3IEBAIHB1YiBmbiBuYW1lKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2Q1N0ciB7XFxuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yYXcoKSkgfTtcXG5AQCAtNDYwLDYgKzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkRldmljZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxcbitcXG4gLy8gU0FGRVRZOiBBcyBieSB0aGUgdHlwZSBpbnZhcmlhbnQgYERldmljZWAgY2FuIGJlIHNlbnQgdG8gYW55IHRocmVhZC5cXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgRGV2aWNlIHt9XFxuIFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcXG5pbmRleCA1YWVhZDgzNWZiYmMwMi4uY2VlN2UyNTAxMzY4OTkgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXFxuQEAgLTE0LDcgKzE0LDEwIEBAXFxuICAgICBmbXQsXFxuICAgICBwcmVsdWRlOjoqLFxcbiAgICAgc3RyOjp7Q1N0ciwgQ1N0cmluZ30sXFxuLSAgICBzeW5jOjphcmVmOjpBUmVmLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFSZWYsXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiB9O1xcbiBcXG5AQCAtMzYwLDcgKzM2Myw3IEBAIGZuIGZtdChcXHUwMDI2c2VsZiwgZjogXFx1MDAyNm11dCBmbXQ6OkZvcm1hdHRlclxcdTAwM2MnX1xcdTAwM2UpIC1cXHUwMDNlIGZtdDo6UmVzdWx0IHtcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEZ3Tm9kZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIEZ3Tm9kZSB7XFxuK3Vuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpSZWZDb3VudGVkIGZvciBGd05vZGUge1xcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZVxcbiAgICAgICAgIC8vIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxcbkBAIC0zNzQsNiArMzc3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRndOb2RlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RndOb2RlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHt9XFxuK1xcbiBlbnVtIE5vZGVcXHUwMDNjJ2FcXHUwMDNlIHtcXG4gICAgIEJvcnJvd2VkKFxcdTAwMjYnYSBGd05vZGUpLFxcbiAgICAgT3duZWQoQVJlZlxcdTAwM2NGd05vZGVcXHUwMDNlKSxcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcXG5pbmRleCA0MDNmYzM1MzUzYzc0MC4uMzY4NzQyYTI1ODM3NjggMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcXG5AQCAtMTUsNyArMTUsOCBAQFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN5bmM6OmFyZWY6OntcXG4gICAgICAgICBBUmVmLFxcbi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbiAgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuICAgICB3b3JrcXVldWU6OntcXG5AQCAtMjI3LDcgKzIyOCw3IEBAIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4gXFxuIC8vIFNBRkVUWTogRFJNIGRldmljZSBvYmplY3RzIGFyZSBhbHdheXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIHRoZSBnZXQvcHV0IGZ1bmN0aW9uc1xcbiAvLyBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IGRybTo6RHJpdmVyXFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2VcXHUwMDNjVFxcdTAwM2Uge1xcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBkcm06OkRyaXZlclxcdTAwM2UgUmVmQ291bnRlZCBmb3IgRGV2aWNlXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTI0Miw2ICsyNDMsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogZHJtOjpEcml2ZXJcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVxcdTAwM2NUXFx1MDAzZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NUOiBkcm06OkRyaXZlclxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5ycyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXFxuaW5kZXggMDFiNWJkNDdhMzMzMmQuLjMwZDM3MTg1NzhmZThjIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcXG5AQCAtMTcsNyArMTcsNyBAQFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN5bmM6OmFyZWY6OntcXG4gICAgICAgICBBUmVmLFxcbi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4gICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiB9O1xcbkBAIC0yOSw3ICsyOSw3IEBAXFxuICNbY2ZnKENPTkZJR19SVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSKV1cXG4gcHViIG1vZCBzaG1lbTtcXG4gXFxuLS8vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgW2BBbHdheXNSZWZDb3VudGVkYF0gZm9yIGFueSBHRU0gb2JqZWN0IHR5cGUuXFxuKy8vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgW2BSZWZDb3VudGVkYF0gZm9yIGFueSBHRU0gb2JqZWN0IHR5cGUuXFxuIC8vL1xcbiAvLy8gU2luY2UgYWxsIEdFTSBvYmplY3RzIHVzZSB0aGUgc2FtZSByZWZjb3VudGluZyBzY2hlbWUuXFxuICNbbWFjcm9fZXhwb3J0XVxcbkBAIC00Miw3ICs0Miw3IEBAIGltcGwgJCggXFx1MDAzYyQoICR0cGFyYW1faWQ6aWRlbnQgKSwrXFx1MDAzZSApPyBmb3IgJHR5cGU6dHlcXG4gICAgICAgICApP1xcbiAgICAgKSA9XFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBBbGwgR0VNIG9iamVjdHMgYXJlIHJlZmNvdW50ZWQuXFxuLSAgICAgICAgdW5zYWZlIGltcGwgJCggXFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXFx1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXFxuKyAgICAgICAgdW5zYWZlIGltcGwgJCggXFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXFx1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yICR0eXBlXFxuICAgICAgICAgd2hlcmVcXG4gICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcXG4gICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCsgKT9cXG5AQCAtNjEsNiArNjEsMTQgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgICAgICAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdF9wdXQob2JqKSB9O1xcbiAgICAgICAgICAgICB9XFxuICAgICAgICAgfVxcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzYyR0eXBlXFx1MDAzZWAgZnJvbSBhXFxuKyAgICAgICAgLy8gYFxcdTAwMjYkdHlwZWAuXFxuKyAgICAgICAgdW5zYWZlIGltcGwgJCggXFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXFx1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXFxuKyAgICAgICAgd2hlcmVcXG4rICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcXG4rICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCsgKT9cXG4rICAgICAgICB7fVxcbiAgICAgfTtcXG4gfVxcbiAjW2NmZ19hdHRyKG5vdChDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUiksIGFsbG93KHVudXNlZCkpXVxcbkBAIC05OCw3ICsxMDYsNyBAQCBmbiBjbG9zZShfb2JqOiBcXHUwMDI2XFx1MDAzY1NlbGY6OkRyaXZlciBhcyBkcm06OkRyaXZlclxcdTAwM2U6Ok9iamVjdCwgX2ZpbGU6IFxcdTAwMjZEcml2ZXJGaWxlXFx1MDAzY1NlbGZcXHUwMDNlKVxcbiB9XFxuIFxcbiAvLy8gVHJhaXQgdGhhdCByZXByZXNlbnRzIGEgR0VNIG9iamVjdCBzdWJ0eXBlXFxuLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCArIHN1cGVyOjpwcml2YXRlOjpTZWFsZWQgKyBBbHdheXNSZWZDb3VudGVkIHtcXG4rcHViIHRyYWl0IEludG9HRU1PYmplY3Q6IFNpemVkICsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCArIFJlZkNvdW50ZWQge1xcbiAgICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHJhdyBgZHJtX2dlbV9vYmplY3RgIHN0cnVjdHVyZSwgd2hpY2ggbXVzdCBiZSB2YWxpZCBhcyBsb25nIGFzXFxuICAgICAvLy8gdGhpcyBvd25pbmcgb2JqZWN0IGlzIHZhbGlkLlxcbiAgICAgZm4gYXNfcmF3KFxcdTAwMjZzZWxmKSAtXFx1MDAzZSAqbXV0IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdDtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5ycyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnNcXG5pbmRleCAyM2VlNjg5YmQyNDAwNS4uNzIwZTU3NDE4MzU4ZGMgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnNcXG5AQCAtMTIsOCArMTIsMTUgQEBcXG4gICAgIGNyZWQ6OkNyZWRlbnRpYWwsXFxuICAgICBlcnJvcjo6e2NvZGU6OiosIHRvX3Jlc3VsdCwgRXJyb3IsIFJlc3VsdH0sXFxuICAgICBmbXQsXFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxcbisgICAgICAgIE9wYXF1ZSwgLy9cXG4rICAgIH0sIC8vXFxuIH07XFxuIHVzZSBjb3JlOjpwdHI7XFxuIFxcbkBAIC0xOTcsNyArMjA0LDcgQEAgdW5zYWZlIGltcGwgU3luYyBmb3IgRmlsZSB7fVxcbiBcXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb25cXG4gLy8gbWFrZXMgYEFSZWZcXHUwMDNjRmlsZVxcdTAwM2VgIG93biBhIG5vcm1hbCByZWZjb3VudC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRmlsZSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC0yMTIsNiArMjE5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXFx1MDAzY0ZpbGVcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRmlsZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkZpbGVgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGaWxlIHt9XFxuK1xcbiAvLy8gV3JhcHMgdGhlIGtlcm5lbCdzIGBzdHJ1Y3QgZmlsZWAuIE5vdCB0aHJlYWQgc2FmZS5cXG4gLy8vXFxuIC8vLyBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIGZpbGUgdGhhdCBpcyBub3Qga25vd24gdG8gYmUgc2FmZSB0byB0cmFuc2ZlciBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXFxuQEAgLTIzMyw3ICsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYExvY2FsRmlsZWAgaXMgYWx3YXlzIHJlZi1jb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uXFxuIC8vIG1ha2VzIGBBUmVmXFx1MDAzY0xvY2FsRmlsZVxcdTAwM2VgIG93biBhIG5vcm1hbCByZWZjb3VudC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cXG5AQCAtMjQ5LDYgKzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NMb2NhbEZpbGVcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjTG9jYWxGaWxlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2TG9jYWxGaWxlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHt9XFxuK1xcbiBpbXBsIExvY2FsRmlsZSB7XFxuICAgICAvLy8gQ29uc3RydWN0cyBhIG5ldyBgc3RydWN0IGZpbGVgIHdyYXBwZXIgZnJvbSBhIGZpbGUgZGVzY3JpcHRvci5cXG4gICAgIC8vL1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9pMmMucnMgYi9ydXN0L2tlcm5lbC9pMmMucnNcXG5pbmRleCA2MjRiOTcxY2E4YjBiMi4uMDJiMmM5MjIwZWIxMWMgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvaTJjLnJzXFxuQEAgLTE4LDcgKzE4LDggQEBcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzeW5jOjphcmVmOjp7XFxuICAgICAgICAgQVJlZixcXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4gICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLCAvL1xcbiB9O1xcbkBAIC00MjQsNyArNDI1LDcgQEAgcHViIGZuIGdldChpbmRleDogaTMyKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjQVJlZlxcdTAwM2NTZWxmXFx1MDAzZVxcdTAwM2Uge1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTtcXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJMmNBZGFwdGVyYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfZ2V0X2FkYXB0ZXIoc2VsZi5pbmRleCgpKSB9O1xcbkBAIC00MzUsNiArNDM2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH1cXG4gICAgIH1cXG4gfVxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYW5cXG4rLy8gYFxcdTAwMjZJMmNBZGFwdGVyYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7fVxcbiBcXG4gLy8vIFRoZSBpMmMgYm9hcmQgaW5mbyByZXByZXNlbnRhdGlvblxcbiAvLy9cXG5AQCAtNTAwLDcgKzUwNCw3IEBAIHVuc2FmZSBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2UgZm9yIEkyY0NsaWVudFxcdTAwM2NDXFxuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKEkyY0NsaWVudCk7XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQ2xpZW50YCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNDbGllbnQge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJMmNDbGllbnQge1xcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xcbkBAIC01MTEsNiArNTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9kZXZpY2UoXFx1MDAyNnJhdyBtdXQgKCpvYmouYXNfcmVmKCkuYXNfcmF3KCkpLmRldikgfVxcbiAgICAgfVxcbiB9XFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhblxcbisvLyBgXFx1MDAyNkkyY0NsaWVudGAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fVxcbiBcXG4gaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZVxcdTAwM2UgZm9yIEkyY0NsaWVudFxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9saWIucnMgYi9ydXN0L2tlcm5lbC9saWIucnNcXG5pbmRleCA5NTEyYWY3MTU2ZGYyYS4uZWI1MjU2MjA0YTE3NDIgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvbGliLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvbGliLnJzXFxuQEAgLTEwMSw2ICsxMDEsNyBAQFxcbiBwdWIgbW9kIG9mO1xcbiAjW2NmZyhDT05GSUdfUE1fT1BQKV1cXG4gcHViIG1vZCBvcHA7XFxuK3B1YiBtb2Qgb3duZWQ7XFxuIHB1YiBtb2QgcGFnZTtcXG4gI1tjZmcoQ09ORklHX1BDSSldXFxuIHB1YiBtb2QgcGNpO1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9tbS5ycyBiL3J1c3Qva2VybmVsL21tLnJzXFxuaW5kZXggNDc2NGQ3YjY4ZjJhN2YuLjgzZWQ5NGZjYTE0Y2EyIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL21tLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvbW0ucnNcXG5AQCAtMTMsOCArMTMsMTUgQEBcXG4gXFxuIHVzZSBjcmF0ZTo6e1xcbiAgICAgYmluZGluZ3MsXFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxcbisgICAgICAgIE9wYXF1ZSwgLy9cXG4rICAgIH0sIC8vXFxuIH07XFxuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcXG4gXFxuQEAgLTU1LDcgKzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge31cXG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge31cXG4gXFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cXG5AQCAtNjksNiArNzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NNbVxcdTAwM2VgIGZyb20gYSBgXFx1MDAyNk1tYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW0ge31cXG4rXFxuIC8vLyBBIHdyYXBwZXIgZm9yIHRoZSBrZXJuZWwncyBgc3RydWN0IG1tX3N0cnVjdGAuXFxuIC8vL1xcbiAvLy8gVGhpcyB0eXBlIGlzIGxpa2UgW2BNbWBdLCBidXQgd2l0aCBub24temVybyBgbW1fdXNlcnNgLiBJdCBjYW4gb25seSBiZSB1c2VkIHdoZW4gYG1tX3VzZXJzYCBjYW5cXG5AQCAtOTEsNyArMTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fVxcbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxcbkBAIC0xMDUsNiArMTE1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY01tV2l0aFVzZXJcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZNbVdpdGhVc2VyYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7fVxcbitcXG4gLy8gTWFrZSBhbGwgYE1tYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlcmAuXFxuIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIge1xcbiAgICAgdHlwZSBUYXJnZXQgPSBNbTtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnMgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xcbmluZGV4IGI4ZDJmMDUxMjI1YzczLi44ZmJjMzk2ZTQ2MDI4MSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xcbisrKyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzXFxuQEAgLTEwLDcgKzEwLDExIEBAXFxuIHVzZSBjcmF0ZTo6e1xcbiAgICAgYmluZGluZ3MsXFxuICAgICBtbTo6TW1XaXRoVXNlcixcXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBUmVmLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbisgICAgdHlwZXM6OkFsd2F5c1JlZkNvdW50ZWQsXFxuIH07XFxuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcXG4gXFxuQEAgLTM0LDcgKzM4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlckFzeW5jIHt9XFxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxcbiBcXG4gLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXFxuQEAgLTQ4LDYgKzUyLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY01tV2l0aFVzZXJBc3luY1xcdTAwM2VgXFxuKy8vIGZyb20gYSBgXFx1MDAyNk1tV2l0aFVzZXJBc3luY2AuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxcbitcXG4gLy8gTWFrZSBhbGwgYE1tV2l0aFVzZXJgIG1ldGhvZHMgYXZhaWxhYmxlIG9uIGBNbVdpdGhVc2VyQXN5bmNgLlxcbiBpbXBsIERlcmVmIGZvciBNbVdpdGhVc2VyQXN5bmMge1xcbiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyO1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vcHAucnMgYi9ydXN0L2tlcm5lbC9vcHAucnNcXG5pbmRleCA2MmU0NDY3NjEyNWQxMC4uYjhkYjZiZGVmZDA3NzEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvb3BwLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvb3BwLnJzXFxuQEAgLTE2LDggKzE2LDE0IEBAXFxuICAgICBmZmk6OntjX2NoYXIsIGNfdWxvbmd9LFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN0cjo6Q1N0cmluZyxcXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcXG4tICAgIHR5cGVzOjpPcGFxdWUsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBPcGFxdWUsIC8vXFxuKyAgICB9LCAvL1xcbiB9O1xcbiBcXG4gI1tjZmcoQ09ORklHX0NQVV9GUkVRKV1cXG5AQCAtMTA0MSw3ICsxMDQ3LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgT1BQIHt9XFxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE9QUCB7fVxcbiBcXG4gLy8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBbYE9QUGBdIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC0xMDU1LDYgKzEwNjEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NPUFBcXHUwMDNlYCBmcm9tIGFuXFxuKy8vIGBcXHUwMDI2T1BQYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHt9XFxuK1xcbiBpbXBsIE9QUCB7XFxuICAgICAvLy8gQ3JlYXRlcyBhbiBvd25lZCByZWZlcmVuY2UgdG8gYSBbYE9QUGBdIGZyb20gYSB2YWxpZCBwb2ludGVyLlxcbiAgICAgLy8vXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL293bmVkLnJzIGIvcnVzdC9rZXJuZWwvb3duZWQucnNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5hY2I2MTFmMDg0ZmYzNVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xcbkBAIC0wLDAgKzEsMzczIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK1xcbisvLyEgVW5pcXVlIG93bmVkIHBvaW50ZXIgdHlwZXMgZm9yIG9iamVjdHMgd2l0aCBjdXN0b20gZHJvcCBsb2dpYy5cXG4rLy8hXFxuKy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0XFxuKy8vISBhcmUgb3duZWQgYnkgUnVzdCwgYnV0IG5lZWQgdG8gYmUgZnJlZWQgdGhyb3VnaCB0aGUgQyBBUEkuXFxuK1xcbit1c2UgY29yZTo6e1xcbisgICAgbWVtOjpNYW51YWxseURyb3AsXFxuKyAgICBvcHM6OntcXG4rICAgICAgICBEZXJlZixcXG4rICAgICAgICBEZXJlZk11dCwgLy9cXG4rICAgIH0sXFxuKyAgICBwaW46OlBpbixcXG4rICAgIHB0cjo6Tm9uTnVsbCwgLy9cXG4rfTtcXG4rdXNlIGtlcm5lbDo6e1xcbisgICAgc3luYzo6YXJlZjo6QVJlZixcXG4rICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvL1xcbit9O1xcbitcXG4rdXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlO1xcbitcXG4rLy8vIFR5cGVzIHRoYXQgc3BlY2lmeSB0aGVpciBvd24gd2F5IG9mIHBlcmZvcm1pbmcgYWxsb2NhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFR5cGljYWxseSwgdGhpcyB0cmFpdFxcbisvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLlxcbisvLy9cXG4rLy8vIEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSByZWZlcmVuY2VkIHZpYSB0aGUgW2BPd25lZFxcdTAwM2NTZWxmXFx1MDAzZWBdIHBvaW50ZXIgdHlwZS5cXG4rLy8vICAtIFRoaXMgaXMgdXNlZnVsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHRpZSB0aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0IHJlZmVyZW5jZSB0byBhbiBvd25lZFxcbisvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLlxcbisvLy8gIC0gW2BPd25hYmxlYF0gdHlwZXMgY2FuIGRlZmluZSBjdXN0b20gZHJvcCBsb2dpYyB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIG93bmVkIHJlZmVyZW5jZVxcbisvLy8gICAgb2YgdHlwZSBbYE93bmVkXFx1MDAzY19cXHUwMDNlYF0gcG9pbnRpbmcgdG8gdGhlIG9iamVjdCBpcyBkcm9wcGVkLlxcbisvLy9cXG4rLy8vIE5vdGU6IFRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnRpbmcsIGJlY2F1c2UgaXRcXG4rLy8vIHJlcHJlc2VudHMgYSB1bmlxdWUsIG93bmVkIHJlZmVyZW5jZS4gSWYgcmVmZXJlbmNlIGNvdW50aW5nIChvbiB0aGUgUnVzdCBzaWRlKSBpcyByZXF1aXJlZCxcXG4rLy8vIFtgUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZC4gW2BPd25hYmxlUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpZiBjb252ZXJzaW9uXFxuKy8vLyBiZXR3ZWVuIHVuaXF1ZSBhbmQgc2hhcmVkIChyZWZlcmVuY2UgY291bnRlZCkgb3duZXJzaGlwIGlzIG5lZWRlZC5cXG4rLy8vXFxuKy8vLyAjIEV4YW1wbGVzXFxuKy8vL1xcbisvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoIFtgT3duZWRgXSBsb29rcyBsaWtlXFxuKy8vLyB0aGlzOlxcbisvLy9cXG4rLy8vIGBgYFxcbisvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV1cXG4rLy8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7XFxuKy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XFxuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrO1xcbisvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTtcXG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZX07XFxuKy8vL1xcbisvLy8gLy8gTGV0J3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLlxcbisvLy8ga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jayEge1xcbisvLy8gICAgIC8vIFNBRkVUWTogd2UgY2FsbCBgaW5pdCgpYCByaWdodCBiZWxvdywgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuXFxuKy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXhcXHUwMDNjdXNpemVcXHUwMDNlID0gMDtcXG4rLy8vIH1cXG4rLy8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuXFxuKy8vLyB1bnNhZmUgeyBGT09fQUxMT0NfQ09VTlQuaW5pdCgpIH07XFxuKy8vL1xcbisvLy8gc3RydWN0IEZvbztcXG4rLy8vXFxuKy8vLyBpbXBsIEZvbyB7XFxuKy8vLyAgICAgZm4gbmV3KCkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZSB7XFxuKy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXFxuKy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC5cXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcXG4rLy8vICAgICAgICAgICAgIEZvbyB7fSxcXG4rLy8vICAgICAgICAgICAgIGZsYWdzOjpHRlBfS0VSTkVMLFxcbisvLy8gICAgICAgICApPztcXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTtcXG4rLy8vICAgICAgICAgLy8gQ291bnQgbmV3IGFsbG9jYXRpb25cXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgKz0gMTtcXG4rLy8vICAgICAgICAgLy8gU0FGRVRZOlxcbisvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuXFxuKy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuXFxuKy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXFxuKy8vLyAgICAgfVxcbisvLy8gfVxcbisvLy9cXG4rLy8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcXG4rLy8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFxcdTAwM2NTZWxmXFx1MDAzZWBdIGlzIHN0aWxsIGFsaXZlLiBXZSBjYW4gcGFzcyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdLCBhc1xcbisvLy8gICAgICAgICAvLyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXFxuKy8vLyAgICAgICAgIGRyb3AodW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfSk7XFxuKy8vLyAgICAgICAgIC8vIENvdW50IHJlbGVhc2VkIGFsbG9jYXRpb25cXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgLT0gMTtcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8ge1xcbisvLy8gICAgbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xcbisvLy8gICAgYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAxKTtcXG4rLy8vIH1cXG4rLy8vIC8vIGBmb29gIGlzIG91dCBvZiBzY29wZSBub3csIHNvIHdlIGV4cGVjdCBubyBsaXZlIGFsbG9jYXRpb25zLlxcbisvLy8gYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAwKTtcXG4rLy8vICMgT2s6OlxcdTAwM2MoKSwgRXJyb3JcXHUwMDNlKCgpKVxcbisvLy8gYGBgXFxuK3B1YiB0cmFpdCBPd25hYmxlIHtcXG4rICAgIC8vLyBUZWFyIGRvd24gdGhpcyBgT3duYWJsZWAuXFxuKyAgICAvLy9cXG4rICAgIC8vLyBJbXBsZW1lbnRlcnMgb2YgYE93bmFibGVgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjbGVhbiB1cCB0aGUgdXNlIG9mIGBTZWxmYC4gVGhpcyBjYW5cXG4rICAgIC8vLyBpbmNsdWRlIGZyZWVpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxcbisgICAgLy8vXFxuKyAgICAvLy8gIyBTYWZldHlcXG4rICAgIC8vL1xcbisgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLFxcbisgICAgLy8vIGFuZCB0aGF0IHRoaXMgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLiBgdGhpc2AgbXVzdCBub3QgYmUgdXNlZFxcbisgICAgLy8vIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFzIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGZyZWVkLlxcbisgICAgLy8vXFxuKyAgICAvLy8gYHRoaXNgIGlzIHBpbm5lZCBhbmQgaW1wbGVtZW50ZXJzIG9mIHRoaXMgbWV0aG9kIG11c3Qgb2JzZXJ2ZSB0aGlzIGNvbnN0cmFpbnQuXFxuKyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKTtcXG4rfVxcbitcXG4rLy8vIEEgbXV0YWJsZSByZWZlcmVuY2UgdG8gYW4gb3duZWQgYFRgLlxcbisvLy9cXG4rLy8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzXFxuKy8vLyBkcm9wcGVkLlxcbisvLy9cXG4rLy8vICMgSW52YXJpYW50c1xcbisvLy9cXG4rLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWRcXHUwMDNjVFxcdTAwM2VgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLlxcbisvLy8gLSBUaGUgYFRgIHZhbHVlIGlzIHBpbm5lZC5cXG4rcHViIHN0cnVjdCBPd25lZFxcdTAwM2NUOiBPd25hYmxlXFx1MDAzZSB7XFxuKyAgICBwdHI6IE5vbk51bGxcXHUwMDNjVFxcdTAwM2UsXFxuK31cXG4rXFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVxcdTAwM2UgT3duZWRcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BPd25lZGBdLlxcbisgICAgLy8vXFxuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICAvLy9cXG4rICAgIC8vLyAjIFNhZmV0eVxcbisgICAgLy8vXFxuKyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0OlxcbisgICAgLy8vIC0gYHB0cmAgcG9pbnRzIHRvIGEgdmFsaWQgaW5zdGFuY2Ugb2YgYFRgLlxcbisgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZFxcdTAwM2NUXFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXFx1MDAzY1RcXHUwMDNlKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLlxcbisgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uXFxuKyAgICAgICAgU2VsZiB7IHB0ciB9XFxuKyAgICB9XFxuK1xcbisgICAgLy8vIENvbnN1bWVzIHRoZSBbYE93bmVkYF0sIHJldHVybmluZyBhIHJhdyBwb2ludGVyLlxcbisgICAgLy8vXFxuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGVcXG4rICAgIC8vLyB1bmRlcmx5aW5nIGBUYCBpcyB3aXRoIHRoZSBjYWxsZXIuXFxuKyAgICAvLy9cXG4rICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLlxcbisgICAgI1tpbmxpbmVdXFxuKyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cXHUwMDNlIE5vbk51bGxcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHJcXG4rICAgIH1cXG4rXFxuKyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkXFx1MDAzY1RcXHUwMDNlYC5cXG4rICAgICNbaW5saW5lXVxcbisgICAgcHViIGZuIGFzX3Bpbl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBQaW5cXHUwMDNjXFx1MDAyNm11dCBUXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcXG4rICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cXG4rICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuXFxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGFuIFtgT3duZWRcXHUwMDNjVFxcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFNlbmRgXSxcXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYE93bmVkXFx1MDAzY1RcXHUwMDNlYF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgVGAuXFxuK3Vuc2FmZSBpbXBsXFx1MDAzY1Q6IE93bmFibGUgKyBTZW5kXFx1MDAzZSBTZW5kIGZvciBPd25lZFxcdTAwM2NUXFx1MDAzZSB7fVxcbitcXG4rLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgW2BcXHUwMDI2T3duZWRcXHUwMDNjVFxcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFN5bmNgXSxcXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYFxcdTAwMjZPd25lZFxcdTAwM2NUXFx1MDAzZWBdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFxcdTAwMjZUYC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogT3duYWJsZSArIFN5bmNcXHUwMDNlIFN5bmMgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHt9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGVcXHUwMDNlIERlcmVmIGZvciBPd25lZFxcdTAwM2NUXFx1MDAzZSB7XFxuKyAgICB0eXBlIFRhcmdldCA9IFQ7XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBkZXJlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNlNlbGY6OlRhcmdldCB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQuXFxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGUgKyBVbnBpblxcdTAwM2UgRGVyZWZNdXQgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZGVyZWZfbXV0KFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgXFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xcbisgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5XFxuKyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXFxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGVcXHUwMDNlIERyb3AgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgXFx1MDAyNm11dCBzZWxmYCB3ZSBleGNsdXNpdmVseSBvd24gYHNlbGZgIGFuZCB0aGUgdW5kZXJseWluZyBgVGAuIEFzXFxuKyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLlxcbisgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vIFNBRkVUWTogV2UgZGVyaXZlIHRoZSBwb2ludGVyIHRvIGBUYCBmcm9tIGEgdmFsaWQgYFRgLCBzbyB0aGUgcmV0dXJuZWRcXG4rLy8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBPd25hYmxlXFx1MDAzZSBGb3JlaWduT3duYWJsZSBmb3IgT3duZWRcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgY29uc3QgRk9SRUlHTl9BTElHTjogdXNpemUgPSBjb3JlOjptZW06OmFsaWduX29mOjpcXHUwMDNjVFxcdTAwM2UoKTtcXG4rXFxuKyAgICB0eXBlIEJvcnJvd2VkXFx1MDAzYydhXFx1MDAzZVxcbisgICAgICAgID0gXFx1MDAyNidhIFRcXG4rICAgIHdoZXJlXFxuKyAgICAgICAgU2VsZjogJ2E7XFxuKyAgICB0eXBlIEJvcnJvd2VkTXV0XFx1MDAzYydhXFx1MDAzZVxcbisgICAgICAgID0gUGluXFx1MDAzY1xcdTAwMjYnYSBtdXQgVFxcdTAwM2VcXG4rICAgIHdoZXJlXFxuKyAgICAgICAgU2VsZjogJ2E7XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLVxcdTAwM2UgKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkIHtcXG4rICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpXFxuKyAgICB9XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICB1bnNhZmUgZm4gZnJvbV9mb3JlaWduKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgY2FtZSBmcm9tIGBpbnRvX2ZvcmVpZ25gIGFuZCBjYW5ub3QgYmUgbnVsbC5cXG4rICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwdHIuY2FzdCgpKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIHdhcyByZXR1cm5lZCBieSBgaW50b19mb3JlaWduYCwgd2hpY2ggZ2F2ZVxcbisgICAgICAgIC8vIHVwIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgYSB2YWxpZCwgcGlubmVkIGBUYDsgd2UgcmV0YWtlIHRoYXQgb3duZXJzaGlwIGhlcmUuXFxuKyAgICAgICAgdW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHB0cikgfVxcbisgICAgfVxcbitcXG4rICAgICNbaW5saW5lXVxcbisgICAgdW5zYWZlIGZuIGJvcnJvd1xcdTAwM2MnYVxcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cXHUwMDNlIFNlbGY6OkJvcnJvd2VkXFx1MDAzYydhXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGFcXG4rICAgICAgICAvLyByZWZlcmVuY2UgZm9yIGAnYWAuXFxuKyAgICAgICAgdW5zYWZlIHsgXFx1MDAyNipwdHIuY2FzdCgpIH1cXG4rICAgIH1cXG4rXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHVuc2FmZSBmbiBib3Jyb3dfbXV0XFx1MDAzYydhXFx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVxcdTAwM2UgU2VsZjo6Qm9ycm93ZWRNdXRcXHUwMDNjJ2FcXHUwMDNlIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYVxcbisgICAgICAgIC8vIHVuaXF1ZSByZWZlcmVuY2UgZm9yIGAnYWAuXFxuKyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgXFx1MDAyNm11dCAqcHRyLmNhc3QoKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIG5ldmVyIG1vdmUgb3V0IG9mIGlubmVyLCBhbmQgd2UgZG8gbm90IGhhbmQgb3V0IG11dGFibGVcXG4rICAgICAgICAvLyByZWZlcmVuY2VzIHdoZW4gYFQ6ICFVbnBpbmAuXFxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKGlubmVyKSB9XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vLyBBIHRyYWl0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHdyYXBwZWQgaW4gZWl0aGVyIG9uZSBvZiB0aGUgcmVmZXJlbmNlIHR5cGVzIFtgT3duZWRgXSBhbmRcXG4rLy8vIFtgQVJlZmBdLlxcbisvLy9cXG4rLy8vICMgRXhhbXBsZXNcXG4rLy8vXFxuKy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVSZWZDb3VudGVkYF0sIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aFxcbisvLy8gW2BBUmVmYF0gYW5kIFtgT3duZWRgXSBsb29rcyBsaWtlIHRoaXM6XFxuKy8vL1xcbisvLy8gYGBgXFxuKy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxcbisvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDtcXG4rLy8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcXG4rLy8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XFxuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBSZWZDb3VudGVkfTtcXG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZSwgT3duYWJsZVJlZkNvdW50ZWR9O1xcbisvLy9cXG4rLy8vIC8vIEFuIGludGVybmFsbHkgcmVmY291bnRlZCBzdHJ1Y3QgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuXFxuKy8vLyAvL1xcbisvLy8gLy8gIyBJbnZhcmlhbnRzXFxuKy8vLyAvL1xcbisvLy8gLy8gLSBgcmVmY291bnRgIGlzIGFsd2F5cyBub24temVybyBmb3IgYSB2YWxpZCBvYmplY3QuXFxuKy8vLyAvLyAtIGByZWZjb3VudGAgaXMgXFx1MDAzZTEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC5cXG4rLy8vIC8vXFxuKy8vLyBzdHJ1Y3QgRm9vIHtcXG4rLy8vICAgICByZWZjb3VudDogQ2VsbFxcdTAwM2N1c2l6ZVxcdTAwM2UsXFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gaW1wbCBGb28ge1xcbisvLy8gICAgIGZuIG5ldygpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NTZWxmXFx1MDAzZVxcdTAwM2Uge1xcbisvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xcbisvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXFxuKy8vLyAgICAgICAgIC8vIElOVkFSSUFOVDogV2UgaW5pdGlhbGl6ZSBgcmVmY291bnRgIHRvIDEsIHNhdGlzZnlpbmcgdGhlIGludmFyaWFudHMuXFxuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXFxuKy8vLyAgICAgICAgICAgICBGb28ge1xcbisvLy8gICAgICAgICAgICAgICAgIHJlZmNvdW50OiBDZWxsOjpuZXcoMSksXFxuKy8vLyAgICAgICAgICAgICB9LFxcbisvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXFxuKy8vLyAgICAgICAgICk/O1xcbisvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xcbisvLy8gICAgICAgICAvLyBTQUZFVFk6XFxuKy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cXG4rLy8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cXG4rLy8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gLy8gU0FGRVRZOiBXZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBlYWNoIHRpbWUgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBvbmx5IGZyZWVcXG4rLy8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uXFxuKy8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBGb28ge1xcbisvLy8gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4rLy8vICAgICAgICAgc2VsZi5yZWZjb3VudC5yZXBsYWNlKHNlbGYucmVmY291bnQuZ2V0KCkgKyAxKTtcXG4rLy8vICAgICB9XFxuKy8vL1xcbisvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKHRoaXM6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4rLy8vICAgICAgICAgLy8gU0FGRVRZOiBCeSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSByZWZjb3VudCBpcyBub24temVybyxcXG4rLy8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLlxcbisvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyBcXHUwMDI2dGhpcy5hc19yZWYoKS5yZWZjb3VudCB9O1xcbisvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxO1xcbisvLy8gICAgICAgICBpZiBuZXdfcmVmY291bnQgPT0gMCB7XFxuKy8vLyAgICAgICAgICAgICAvLyBUaGUgYEZvb2Agd2lsbCBiZSBkcm9wcGVkIHdoZW4gYEtCb3hgIGdvZXMgb3V0IG9mIHNjb3BlLlxcbisvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94XFx1MDAzY0Zvb1xcdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZSBhcyB0aGUgb2xkIHJlZmNvdW50IGlzIDEuIFdlIGNhbiBwYXNzXFxuKy8vLyAgICAgICAgICAgICAvLyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdIGFzIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbixcXG4rLy8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLlxcbisvLy8gICAgICAgICAgICAgdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfTtcXG4rLy8vICAgICAgICAgfSBlbHNlIHtcXG4rLy8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTtcXG4rLy8vICAgICAgICAgfVxcbisvLy8gICAgIH1cXG4rLy8vIH1cXG4rLy8vXFxuKy8vLyBpbXBsIE93bmFibGVSZWZDb3VudGVkIGZvciBGb28ge1xcbisvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXFx1MDAzY1NlbGZcXHUwMDNlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjT3duZWRcXHUwMDNjU2VsZlxcdTAwM2UsIEFSZWZcXHUwMDNjU2VsZlxcdTAwM2VcXHUwMDNlIHtcXG4rLy8vICAgICAgICAgaWYgdGhpcy5yZWZjb3VudC5nZXQoKSA9PSAxIHtcXG4rLy8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIGBGb29gIGlzIHN0aWxsIGFsaXZlIGFuZCBoYXMgbm8gb3RoZXIgUnVzdCByZWZlcmVuY2VzIGFzIHRoZSByZWZjb3VudFxcbisvLy8gICAgICAgICAgICAgLy8gaXMgMS5cXG4rLy8vICAgICAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhBUmVmOjppbnRvX3Jhdyh0aGlzKSkgfSlcXG4rLy8vICAgICAgICAgfSBlbHNlIHtcXG4rLy8vICAgICAgICAgICAgIEVycih0aGlzKVxcbisvLy8gICAgICAgICB9XFxuKy8vLyAgICAgfVxcbisvLy9cXG4rLy8vICAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZFxcdTAwM2NTZWxmXFx1MDAzZSkgLVxcdTAwM2UgQVJlZlxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogQW4gYE93bmVkXFx1MDAzY0Zvb1xcdTAwM2VgIGhvbGRzIHRoZSB1bmlxdWUgcmVmZXJlbmNlIChyZWZjb3VudCAxKSwgd2hpY2ggd2UgdHJhbnNmZXIgdG9cXG4rLy8vICAgICAgICAgLy8gdGhlIG5ldyBgQVJlZmAuXFxuKy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfVxcbisvLy8gICAgIH1cXG4rLy8vIH1cXG4rLy8vXFxuKy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XFxuKy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IFVzaW5nIGBkZWNfcmVmKClgIGZyb20gW2BSZWZDb3VudGVkYF0gdG8gcmVsZWFzZSBpcyBva2F5LCBhcyB0aGUgcmVmY291bnQgaXNcXG4rLy8vICAgICAgICAgLy8gYWx3YXlzIDEgZm9yIGFuIFtgT3duZWRcXHUwMDNjRm9vXFx1MDAzZWBdLlxcbisvLy8gICAgICAgICB1bnNhZmUgeyBGb286OmRlY19yZWYodGhpcykgfTtcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xcbisvLy8gbGV0IGZvbyA9IEFSZWY6OmZyb20oZm9vKTtcXG4rLy8vIHtcXG4rLy8vICAgICBsZXQgYmFyID0gZm9vLmNsb25lKCk7XFxuKy8vLyAgICAgYXNzZXJ0IShPd25lZDo6dHJ5X2Zyb20oYmFyKS5pc19lcnIoKSk7XFxuKy8vLyB9XFxuKy8vLyBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShmb28pLmlzX29rKCkpO1xcbisvLy8gIyBPazo6XFx1MDAzYygpLCBFcnJvclxcdTAwM2UoKCkpXFxuKy8vLyBgYGBcXG4rcHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICsgT3duYWJsZSArIFNpemVkIHtcXG4rICAgIC8vLyBDaGVja3MgaWYgdGhlIFtgQVJlZmBdIGlzIHVuaXF1ZSBhbmQgY29udmVydHMgaXQgdG8gYW4gW2BPd25lZGBdIGlmIHRoYXQgaXMgdGhlIGNhc2UuXFxuKyAgICAvLy8gT3RoZXJ3aXNlIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZlxcdTAwM2NTZWxmXFx1MDAzZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlLCBBUmVmXFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZTtcXG4rXFxuKyAgICAvLy8gQ29udmVydHMgdGhlIFtgT3duZWRgXSBpbnRvIGFuIFtgQVJlZmBdLlxcbisgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcXHUwMDNjU2VsZlxcdTAwM2UpIC1cXHUwMDNlIEFSZWZcXHUwMDNjU2VsZlxcdTAwM2U7XFxuK31cXG4rXFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVJlZkNvdW50ZWRcXHUwMDNlIFRyeUZyb21cXHUwMDNjQVJlZlxcdTAwM2NUXFx1MDAzZVxcdTAwM2UgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgIHR5cGUgRXJyb3IgPSBBUmVmXFx1MDAzY1RcXHUwMDNlO1xcbisgICAgLy8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIFtgQVJlZmBdIHRvIGFuIFtgT3duZWRgXSBieSBjYWxsaW5nXFxuKyAgICAvLy8gW2B0cnlfZnJvbV9zaGFyZWQoKWBdKE93bmFibGVSZWZDb3VudGVkOjp0cnlfZnJvbV9zaGFyZWQpLiBJbiBjYXNlIHRoZSBbYEFSZWZgXSBpcyBub3RcXG4rICAgIC8vLyB1bmlxdWUsIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIGZuIHRyeV9mcm9tKGI6IEFSZWZcXHUwMDNjVFxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NUXFx1MDAzZSwgU2VsZjo6RXJyb3JcXHUwMDNlIHtcXG4rICAgICAgICBUOjp0cnlfZnJvbV9zaGFyZWQoYilcXG4rICAgIH1cXG4rfVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wYWdlLnJzIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xcbmluZGV4IDhhZmZkODI2Mjg5MWJhLi5jODhmZGEwOWVhZDVhYSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9wYWdlLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xcbkBAIC0xMiwxNiArMTIsMTYgQEBcXG4gICAgICAgICBjb2RlOjoqLFxcbiAgICAgICAgIFJlc3VsdCwgLy9cXG4gICAgIH0sXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIE9wYXF1ZSxcXG4rICAgICAgICBPd25hYmxlLFxcbisgICAgICAgIE93bmVkLCAvL1xcbisgICAgfSxcXG4gICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlciwgLy9cXG4gfTtcXG4tdXNlIGNvcmU6OntcXG4tICAgIG1hcmtlcjo6UGhhbnRvbURhdGEsXFxuLSAgICBtZW06Ok1hbnVhbGx5RHJvcCxcXG4tICAgIG9wczo6RGVyZWYsXFxuLSAgICBwdHI6OntcXG4tICAgICAgICBzZWxmLFxcbi0gICAgICAgIE5vbk51bGwsIC8vXFxuLSAgICB9LCAvL1xcbit1c2UgY29yZTo6cHRyOjp7XFxuKyAgICBzZWxmLFxcbisgICAgTm9uTnVsbCwgLy9cXG4gfTtcXG4gXFxuIC8vLyBBIGJpdHdpc2Ugc2hpZnQgZm9yIHRoZSBwYWdlIHNpemUuXFxuQEAgLTY1LDkzICs2NSwyOSBAQCBwdWIgY29uc3QgZm4gcGFnZV9hbGlnbihhZGRyOiB1c2l6ZSkgLVxcdTAwM2UgT3B0aW9uXFx1MDAzY3VzaXplXFx1MDAzZSB7XFxuICAgICBTb21lKHN1bSBcXHUwMDI2IFBBR0VfTUFTSylcXG4gfVxcbiBcXG4tLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS5cXG4tLy8vXFxuLS8vLyBUaGlzIHR5cGUgcHJvdmlkZXMgYSBib3Jyb3dlZCB2ZXJzaW9uIG9mIGEgW2BQYWdlYF0gdGhhdCBpcyBvd25lZCBieSBzb21lIG90aGVyIGVudGl0eSwgZS5nLiBhXFxuLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uXFxuLS8vL1xcbi0vLy8gIyBFeGFtcGxlXFxuLS8vL1xcbi0vLy8gYGBgXFxuLS8vLyAjIHVzZSBrZXJuZWw6OntiaW5kaW5ncywgcHJlbHVkZTo6Kn07XFxuLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9O1xcbi0vLy8gIyB1c2UgY29yZTo6e21lbTo6TWF5YmVVbmluaXQsIHB0ciwgcHRyOjpOb25OdWxsIH07XFxuLS8vL1xcbi0vLy8gZm4gYm9ycm93X3BhZ2VcXHUwMDNjJ2FcXHUwMDNlKHZib3g6IFxcdTAwMjYnYSBtdXQgVkJveFxcdTAwM2NNYXliZVVuaW5pdFxcdTAwM2NbdTg7IFBBR0VfU0laRV1cXHUwMDNlXFx1MDAzZSkgLVxcdTAwM2UgQm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZSB7XFxuLS8vLyAgICAgbGV0IHB0ciA9IHB0cjo6ZnJvbV9yZWYoXFx1MDAyNioqdmJveCk7XFxuLS8vL1xcbi0vLy8gICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXFxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07XFxuLS8vL1xcbi0vLy8gICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkXFxuLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5Llxcbi0vLy8gICAgIGxldCBwYWdlID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwYWdlKSB9O1xcbi0vLy9cXG4tLy8vICAgICAvLyBTQUZFVFk6XFxuLS8vLyAgICAgLy8gLSBgc2VsZi4wYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLlxcbi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYHNlbGZgLlxcbi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxcbi0vLy8gfVxcbi0vLy9cXG4tLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6OlxcdTAwM2NbdTg7IFBBR0VfU0laRV1cXHUwMDNlOjpuZXdfdW5pbml0KEdGUF9LRVJORUwpPztcXG4tLy8vIGxldCBwYWdlID0gYm9ycm93X3BhZ2UoXFx1MDAyNm11dCB2Ym94KTtcXG4tLy8vXFxuLS8vLyAvLyBTQUZFVFk6IFRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgcmVhZCBvciB3cml0ZSB0byB0aGlzIHBhZ2UuXFxuLS8vLyB1bnNhZmUgeyBwYWdlLmZpbGxfemVyb19yYXcoMCwgUEFHRV9TSVpFKT8gfTtcXG4tLy8vICMgT2s6OlxcdTAwM2MoKSwgRXJyb3JcXHUwMDNlKCgpKVxcbi0vLy8gYGBgXFxuLS8vL1xcbi0vLy8gIyBJbnZhcmlhbnRzXFxuLS8vL1xcbi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCdhYC5cXG4tLy8vXFxuLS8vLyBbYFZCb3hgXToga2VybmVsOjphbGxvYzo6VkJveFxcbi0vLy8gW2BWbWFsbG9jYF06IGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1xcbi1wdWIgc3RydWN0IEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2UoTWFudWFsbHlEcm9wXFx1MDAzY1BhZ2VcXHUwMDNlLCBQaGFudG9tRGF0YVxcdTAwM2NcXHUwMDI2J2EgUGFnZVxcdTAwM2UpO1xcbi1cXG4taW1wbFxcdTAwM2MnYVxcdTAwM2UgQm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZSB7XFxuLSAgICAvLy8gQ29uc3RydWN0cyBhIFtgQm9ycm93ZWRQYWdlYF0gZnJvbSBhIHJhdyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC5cXG4tICAgIC8vL1xcbi0gICAgLy8vICMgU2FmZXR5XFxuLSAgICAvLy9cXG4tICAgIC8vLyAtIGBwdHJgIG11c3QgcG9pbnQgdG8gYSB2YWxpZCBgYmluZGluZ3M6OnBhZ2VgLlxcbi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCdhYC5cXG4tICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXFx1MDAzY2JpbmRpbmdzOjpwYWdlXFx1MDAzZSkgLVxcdTAwM2UgU2VsZiB7XFxuLSAgICAgICAgbGV0IHBhZ2UgPSBQYWdlIHsgcGFnZTogcHRyIH07XFxuLVxcbi0gICAgICAgIC8vIElOVkFSSUFOVDogVGhlIHNhZmV0eSByZXF1aXJlbWVudHMgZ3VhcmFudGVlIHRoYXQgYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWVcXG4tICAgICAgICAvLyBgJ2FgLlxcbi0gICAgICAgIFNlbGYoTWFudWFsbHlEcm9wOjpuZXcocGFnZSksIFBoYW50b21EYXRhKVxcbi0gICAgfVxcbi19XFxuLVxcbi1pbXBsXFx1MDAzYydhXFx1MDAzZSBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZSB7XFxuLSAgICB0eXBlIFRhcmdldCA9IFBhZ2U7XFxuLVxcbi0gICAgZm4gZGVyZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZTZWxmOjpUYXJnZXQge1xcbi0gICAgICAgIFxcdTAwMjZzZWxmLjBcXG4tICAgIH1cXG4tfVxcbi1cXG4tLy8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIGltcGxlbWVudGF0aW9uIG9mXFxuLS8vLyBbYEJvcnJvd2VkUGFnZWBdIGl0ZW1zLCBzdWNoIGFzIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxcbisvLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcywgc3VjaCBhc1xcbisvLy8gW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuXFxuIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHtcXG4gICAgIC8vLyBUaGUgW2BJdGVyYXRvcmBdIHR5cGUsIGUuZy4gW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuXFxuLSAgICB0eXBlIEl0ZXJcXHUwMDNjJ2FcXHUwMDNlOiBJdGVyYXRvclxcdTAwM2NJdGVtID0gQm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZVxcdTAwM2VcXG4rICAgIHR5cGUgSXRlclxcdTAwM2MnYVxcdTAwM2U6IEl0ZXJhdG9yXFx1MDAzY0l0ZW0gPSBcXHUwMDI2J2EgUGFnZVxcdTAwM2VcXG4gICAgIHdoZXJlXFxuICAgICAgICAgU2VsZjogJ2E7XFxuIFxcbi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxcbisgICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxcbiAgICAgZm4gcGFnZV9pdGVyKFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgU2VsZjo6SXRlclxcdTAwM2MnX1xcdTAwM2U7XFxuIH1cXG4gXFxuLS8vLyBBIHBvaW50ZXIgdG8gYSBwYWdlIHRoYXQgb3ducyB0aGUgcGFnZSBhbGxvY2F0aW9uLlxcbisvLy8gQSBgc3RydWN0IHBhZ2VgLlxcbisvLy9cXG4rLy8vIEEgYFBhZ2VgIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBzaGFyZWQgcmVmZXJlbmNlIG9yIHRocm91Z2ggYW4gb3duaW5nIFtgT3duZWRcXHUwMDNjUGFnZVxcdTAwM2VgXTsgdGhlIGxhdHRlclxcbisvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuXFxuIC8vL1xcbiAvLy8gIyBJbnZhcmlhbnRzXFxuIC8vL1xcbi0vLy8gVGhlIHBvaW50ZXIgaXMgdmFsaWQsIGFuZCBoYXMgb3duZXJzaGlwIG92ZXIgdGhlIHBhZ2UuXFxuKy8vLyBUaGUgYFBhZ2VgIGlzIGJhY2tlZCBieSBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAuXFxuKyNbcmVwcih0cmFuc3BhcmVudCldXFxuIHB1YiBzdHJ1Y3QgUGFnZSB7XFxuLSAgICBwYWdlOiBOb25OdWxsXFx1MDAzY2JpbmRpbmdzOjpwYWdlXFx1MDAzZSxcXG4rICAgIHBhZ2U6IE9wYXF1ZVxcdTAwM2NiaW5kaW5nczo6cGFnZVxcdTAwM2UsXFxuIH1cXG4gXFxuIC8vIFNBRkVUWTogUGFnZXMgaGF2ZSBubyBsb2dpYyB0aGF0IHJlbGllcyBvbiB0aGVtIHN0YXlpbmcgb24gYSBnaXZlbiB0aHJlYWQsIHNvIG1vdmluZyB0aGVtIGFjcm9zc1xcbkBAIC0xODUsMTkgKzEyMSwyMCBAQCBpbXBsIFBhZ2Uge1xcbiAgICAgLy8vICMgT2s6OlxcdTAwM2MoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvclxcdTAwM2UoKCkpXFxuICAgICAvLy8gYGBgXFxuICAgICAjW2lubGluZV1cXG4tICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1NlbGYsIEFsbG9jRXJyb3JcXHUwMDNlIHtcXG4rICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlLCBBbGxvY0Vycm9yXFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBnZnBfZmxhZ3NgLCB0aGlzIGNhbGwgbWF5IHNsZWVwLiBPdGhlciB0aGFuIHRoYXQsIGl0XFxuICAgICAgICAgLy8gaXMgYWx3YXlzIHNhZmUgdG8gY2FsbCB0aGlzIG1ldGhvZC5cXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjphbGxvY19wYWdlcyhmbGFncy5hc19yYXcoKSwgMCkgfTtcXG4gICAgICAgICBsZXQgcGFnZSA9IE5vbk51bGw6Om5ldyhwYWdlKS5va19vcihBbGxvY0Vycm9yKT87XFxuLSAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XFxuLSAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYFBhZ2VgIG9iamVjdC5cXG4tICAgICAgICBPayhTZWxmIHsgcGFnZSB9KVxcbisgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxcbisgICAgICAgIC8vIGFsbG9jYXRlZCBwYWdlLiBXZSB0cmFuc2ZlciB0aGF0IG93bmVyc2hpcCB0byB0aGUgbmV3IGBPd25lZFxcdTAwM2NQYWdlXFx1MDAzZWAgb2JqZWN0LlxcbisgICAgICAgIC8vIFNpbmNlIGBQYWdlYCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHBvaW50ZXIgZGlyZWN0bHkuXFxuKyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KVxcbiAgICAgfVxcbiBcXG4gICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuXFxuICAgICBwdWIgZm4gYXNfcHRyKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSAqbXV0IGJpbmRpbmdzOjpwYWdlIHtcXG4tICAgICAgICBzZWxmLnBhZ2UuYXNfcHRyKClcXG4rICAgICAgICBPcGFxdWU6OmNhc3RfaW50byhcXHUwMDI2c2VsZi5wYWdlKVxcbiAgICAgfVxcbiBcXG4gICAgIC8vLyBHZXQgdGhlIG5vZGUgaWQgY29udGFpbmluZyB0aGlzIHBhZ2UuXFxuQEAgLTIwNiw2ICsxNDMsMjAgQEAgcHViIGZuIG5pZChcXHUwMDI2c2VsZikgLVxcdTAwM2UgaTMyIHtcXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGFnZV90b19uaWQoc2VsZi5hc19wdHIoKSkgfVxcbiAgICAgfVxcbiBcXG4rICAgIC8vLyBDcmVhdGUgYSBgXFx1MDAyNlBhZ2VgIGZyb20gYSByYXcgYHN0cnVjdCBwYWdlYCBwb2ludGVyLlxcbisgICAgLy8vXFxuKyAgICAvLy8gIyBTYWZldHlcXG4rICAgIC8vL1xcbisgICAgLy8vIGBwdHJgIG11c3QgYmUgY29udmVydGlibGUgdG8gYSBzaGFyZWQgcmVmZXJlbmNlIHdpdGggYSBsaWZldGltZSBvZiBgJ2FgLlxcbisgICAgI1tpbmxpbmVdXFxuKyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3XFx1MDAzYydhXFx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGFnZSkgLVxcdTAwM2UgXFx1MDAyNidhIFNlbGYge1xcbisgICAgICAgIC8vIElOVkFSSUFOVDogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIHJlZmVycyB0byBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAsIHNvXFxuKyAgICAgICAgLy8gdGhlIHJldHVybmVkIHJlZmVyZW5jZSB1cGhvbGRzIHRoZSB0eXBlIGludmFyaWFudCBvZiBgUGFnZWAuXFxuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyBub3QgbnVsbCBhbmQgaXMgY29udmVydGlibGUgdG8gYSBzaGFyZWRcXG4rICAgICAgICAvLyByZWZlcmVuY2UuXFxuKyAgICAgICAgdW5zYWZlIHsgXFx1MDAyNipwdHIuY2FzdCgpIH1cXG4rICAgIH1cXG4rXFxuICAgICAvLy8gUnVucyBhIHBpZWNlIG9mIGNvZGUgd2l0aCB0aGlzIHBhZ2UgbWFwcGVkIHRvIGFuIGFkZHJlc3MuXFxuICAgICAvLy9cXG4gICAgIC8vLyBUaGUgcGFnZSBpcyB1bm1hcHBlZCB3aGVuIHRoaXMgY2FsbCByZXR1cm5zLlxcbkBAIC0zNzIsMTAgKzMyMywxMSBAQCBwdWIgdW5zYWZlIGZuIGNvcHlfZnJvbV91c2VyX3NsaWNlX3JhdyhcXG4gICAgIH1cXG4gfVxcbiBcXG4taW1wbCBEcm9wIGZvciBQYWdlIHtcXG4raW1wbCBPd25hYmxlIGZvciBQYWdlIHtcXG4gICAgICNbaW5saW5lXVxcbi0gICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG4tICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZSBpdC5cXG4tICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6X19mcmVlX3BhZ2VzKHNlbGYucGFnZS5hc19wdHIoKSwgMCkgfTtcXG4rICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWVcXG4rICAgICAgICAvLyBpdC4gU2luY2UgUGFnZSBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHJhdyBwb2ludGVyIGRpcmVjdGx5LlxcbisgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXModGhpcy5hc19wdHIoKS5jYXN0KCksIDApIH07XFxuICAgICB9XFxuIH1cXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzXFxuaW5kZXggNTA3MWNhZTY1NDNmZDIuLmVhOWVmOTljZWNiMDc2IDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3BjaS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BjaS5yc1xcbkBAIC0xOSw2ICsxOSwxMCBAQFxcbiAgICAgfSxcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzdHI6OkNTdHIsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuICAgICBUaGlzTW9kdWxlLCAvL1xcbiB9O1xcbkBAIC00ODEsNyArNDg1LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXG4gaW1wbFxcdTAwM2MnYVxcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXFx1MDAzYydhXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY2RldmljZTo6Q29yZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBjaV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTQ5Myw2ICs0OTcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XFxuK1xcbiBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBBc1JlZlxcdTAwM2NkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycyBiL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcXG5pbmRleCA5NzlhOTcxOGYxNTNkOC4uMDY3ZjY4Yjk5ZThjNWMgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcXG5AQCAtNyw3ICs3LDE0IEBAXFxuIC8vISBDIGhlYWRlcjogW2BpbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmgpIGFuZFxcbiAvLyEgW2BpbmNsdWRlL2xpbnV4L3BpZC5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZC5oKVxcbiBcXG4tdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHR5cGVzOjpPcGFxdWV9O1xcbit1c2UgY3JhdGU6OntcXG4rICAgIGJpbmRpbmdzLFxcbisgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBPcGFxdWUsIC8vXFxuKyAgICB9LCAvL1xcbit9O1xcbiB1c2UgY29yZTo6cHRyO1xcbiBcXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwncyBgc3RydWN0IHBpZF9uYW1lc3BhY2VgLiBUaHJlYWQgc2FmZS5cXG5AQCAtNDEsNyArNDgsNyBAQCBwdWIgdW5zYWZlIGZuIGZyb21fcHRyXFx1MDAzYydhXFx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLVxcdTAwM2UgXFx1MDAyNidhIFNlbGYge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgUGlkTmFtZXNwYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC01NSw2ICs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NQaWROYW1lc3BhY2VcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjUGlkTmFtZXNwYWNlXFx1MDAzZWAgZnJvbVxcbisvLyBhIGBcXHUwMDI2UGlkTmFtZXNwYWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHt9XFxuK1xcbiAvLyBTQUZFVFk6XFxuIC8vIC0gYFBpZE5hbWVzcGFjZTo6ZGVjX3JlZmAgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuXFxuIC8vIC0gSXQgaXMgb2theSB0byBzZW5kIG93bmVyc2hpcCBvZiBgUGlkTmFtZXNwYWNlYCBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzIGIvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcXG5pbmRleCA5YjM2MmUwNDk1ZDMyMy4uMGJhNjc2NDQ1YjA2ZDcgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xcbkBAIC0yNyw2ICsyNywxMCBAQFxcbiAgICAgfSxcXG4gICAgIG9mLFxcbiAgICAgcHJlbHVkZTo6KixcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcXG4gICAgIFRoaXNNb2R1bGUsIC8vXFxuIH07XFxuQEAgLTUxOCw3ICs1MjIsNyBAQCBwdWIgZm4gb3B0aW9uYWxfaXJxX2J5X25hbWUoXFx1MDAyNnNlbGYsIG5hbWU6IFxcdTAwMjZDU3RyKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjSXJxUmVxdWVzdFxcdTAwM2MnX1xcdTAwM2VcXHUwMDNlIHtcXG4gaW1wbFxcdTAwM2MnYVxcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXFx1MDAzYydhXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY2RldmljZTo6Q29yZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcXG5AQCAtNTMwLDYgKzUzNCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NEZXZpY2VcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZEZXZpY2VgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cXG4rXFxuIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIEFzUmVmXFx1MDAzY2RldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICBmbiBhc19yZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wd20ucnMgYi9ydXN0L2tlcm5lbC9wd20ucnNcXG5pbmRleCA2YzlkNjY3MDA5ZWY3Yi4uMmQxY2Q3NGRkOThlMWUgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcHdtLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvcHdtLnJzXFxuQEAgLTEzLDcgKzEzLDExIEBAXFxuICAgICBkZXZyZXMsXFxuICAgICBlcnJvcjo6e3NlbGYsIHRvX3Jlc3VsdH0sXFxuICAgICBwcmVsdWRlOjoqLFxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFSZWYsXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXFxuIH07XFxuIHVzZSBjb3JlOjp7XFxuQEAgLTYyOSw3ICs2MzMsNyBAQCBwdWIgZm4gbmV3XFx1MDAzYydhXFx1MDAzZShcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbXBsZW1lbnRzIHJlZmNvdW50aW5nIGZvciBgQ2hpcGAgdXNpbmcgdGhlIGVtYmVkZGVkIGBzdHJ1Y3QgZGV2aWNlYC5cXG4tdW5zYWZlIGltcGxcXHUwMDNjVDogUHdtT3BzXFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBDaGlwXFx1MDAzY1RcXHUwMDNlIHtcXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogUHdtT3BzXFx1MDAzZSBSZWZDb3VudGVkIGZvciBDaGlwXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYHNlbGYuMC5nZXQoKWAgcG9pbnRzIHRvIGEgdmFsaWQgYHB3bV9jaGlwYCBiZWNhdXNlIGBzZWxmYCBleGlzdHMuXFxuQEAgLTY0Nyw2ICs2NTEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY0NoaXBcXHUwMDNjVFxcdTAwM2VcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjQ2hpcFxcdTAwM2NUXFx1MDAzZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkNoaXBcXHUwMDNjVFxcdTAwM2VgLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBQd21PcHNcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcXHUwMDNjVFxcdTAwM2Uge31cXG4rXFxuIC8vIFNBRkVUWTogYENoaXBgIGlzIGEgd3JhcHBlciBhcm91bmQgYCptdXQgYmluZGluZ3M6OnB3bV9jaGlwYC4gVGhlIHVuZGVybHlpbmcgQ1xcbiAvLyBzdHJ1Y3R1cmUncyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCdzIGRldmljZSBtb2RlbFxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5ycyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xcbmluZGV4IGI3MjFiMmUwMGI5ODZmLi5lNmZmZTdjNjUwYzM5YyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcXG5AQCAtMTEsNyArMTEsNyBAQFxcbiAvLyEgdW5kZXJseWluZyBvYmplY3QsIGJ1dCB0aGlzIHJlZmNvdW50IGlzIGludGVybmFsIHRvIHRoZSBvYmplY3QuIEl0IGVzc2VudGlhbGx5IGlzIGEgUnVzdFxcbiAvLyEgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBnZXRfYCBhbmQgYHB1dF9gIHBhdHRlcm4gdXNlZCBpbiBDIGZvciByZWZlcmVuY2UgY291bnRpbmcuXFxuIC8vIVxcbi0vLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmXFx1MDAzY015VHlwZVxcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgQWx3YXlzUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XFxuKy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcXHUwMDNjTXlUeXBlXFx1MDAzZWBdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXRcXG4gLy8hIGZvciBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3Qgb2YgdGhlIGBNeVR5cGVgIHR5cGUuXFxuIC8vIVxcbiAvLyEgW2BBcmNgXTogY3JhdGU6OnN5bmM6OkFyY1xcbkBAIC0yMywyNiArMjMsMzUgQEBcXG4gICAgIG9wczo6RGVyZWYsXFxuICAgICBwdHI6Ok5vbk51bGwsIC8vXFxuIH07XFxuK3VzZSBrZXJuZWw6OnR5cGVzOjp7XFxuKyAgICBPd25hYmxlUmVmQ291bnRlZCxcXG4rICAgIE93bmVkLCAvL1xcbit9O1xcbiBcXG4tLy8vIFR5cGVzIHRoYXQgYXJlIF9hbHdheXNfIHJlZmVyZW5jZSBjb3VudGVkLlxcbisvLy8gVHlwZXMgdGhhdCBhcmUgaW50ZXJuYWxseSByZWZlcmVuY2UgY291bnRlZC5cXG4gLy8vXFxuIC8vLyBJdCBhbGxvd3Mgc3VjaCB0eXBlcyB0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSByZWYgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZnVuY3Rpb25zLlxcbi0vLy8gQWRkaXRpb25hbGx5LCBpdCBhbGxvd3MgdXNlcnMgdG8gY29udmVydCBmcm9tIGEgc2hhcmVkIHJlZmVyZW5jZSBgXFx1MDAyNlRgIHRvIGFuIG93bmVkIHJlZmVyZW5jZVxcbi0vLy8gW2BBUmVmXFx1MDAzY1RcXHUwMDNlYF0uXFxuIC8vL1xcbiAvLy8gVGhpcyBpcyB1c3VhbGx5IGltcGxlbWVudGVkIGJ5IHdyYXBwZXJzIHRvIGV4aXN0aW5nIHN0cnVjdHVyZXMgb24gdGhlIEMgc2lkZSBvZiB0aGUgY29kZS4gRm9yXFxuIC8vLyBSdXN0IGNvZGUsIHRoZSByZWNvbW1lbmRhdGlvbiBpcyB0byB1c2UgW2BBcmNgXShjcmF0ZTo6c3luYzo6QXJjKSB0byBjcmVhdGUgcmVmZXJlbmNlLWNvdW50ZWRcXG4gLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuXFxuIC8vL1xcbisvLy8gTm90ZTogSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW4gW2BBUmVmXFx1MDAzY1NlbGZcXHUwMDNlYF0uIEl0IHJlcXVpcmVzIGFuXFxuKy8vLyBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgYW5kIHByb3ZpZGVzIG9ubHkgc2hhcmVkIHJlZmVyZW5jZXMuIElmIHVuaXF1ZSByZWZlcmVuY2VzIGFyZSByZXF1aXJlZFxcbisvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW5cXG4rLy8vIFtgT3duZWRcXHUwMDNjU2VsZlxcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdFxcbisvLy8gW2BPd25hYmxlUmVmQ291bnRlZGBdIGFsbG93cyB0byBjb252ZXJ0IGJldHdlZW4gdW5pcXVlIGFuZFxcbisvLy8gc2hhcmVkIHJlZmVyZW5jZXMgKGkuZS4gW2BPd25lZFxcdTAwM2NTZWxmXFx1MDAzZWBdKGNyYXRlOjp0eXBlczo6T3duZWQpIGFuZFxcbisvLy8gW2BBUmVmXFx1MDAzY1NlbGZcXHUwMDNlYF0pLlxcbisvLy9cXG4gLy8vICMgU2FmZXR5XFxuIC8vL1xcbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmZXJlbmNlIGNvdW50IGtlZXAgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnlcXG4gLy8vIGF0IGxlYXN0IHVudGlsIG1hdGNoaW5nIGRlY3JlbWVudHMgYXJlIHBlcmZvcm1lZC5cXG4gLy8vXFxuIC8vLyBJbXBsZW1lbnRlcnMgbXVzdCBhbHNvIGVuc3VyZSB0aGF0IGFsbCBpbnN0YW5jZXMgYXJlIHJlZmVyZW5jZS1jb3VudGVkLiAoT3RoZXJ3aXNlIHRoZXlcXG4tLy8vIHdvbid0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdFxcbi0vLy8gYWxpdmUuKVxcbi1wdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xcbisvLy8gd29uJ3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0IGFsaXZlLilcXG4rcHViIHVuc2FmZSB0cmFpdCBSZWZDb3VudGVkIHtcXG4gICAgIC8vLyBJbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIG9iamVjdC5cXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpO1xcbiBcXG5AQCAtNTUsMTEgKzY0LDI3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XFxuICAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIHdhcyBhIHByZXZpb3VzIG1hdGNoaW5nIGluY3JlbWVudCB0byB0aGUgcmVmZXJlbmNlIGNvdW50LFxcbiAgICAgLy8vIGFuZCB0aGF0IHRoZSBvYmplY3QgaXMgbm8gbG9uZ2VyIHVzZWQgYWZ0ZXIgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBkZWNyZW1lbnRlZCAoYXMgaXQgbWF5XFxuICAgICAvLy8gcmVzdWx0IGluIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQpLCB1bmxlc3MgdGhlIGNhbGxlciBvd25zIGFub3RoZXIgaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudFxcbi0gICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxsc1xcbi0gICAgLy8vIFtgQWx3YXlzUmVmQ291bnRlZDo6ZGVjX3JlZmBdIG9uY2UpLlxcbisgICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscyBbYFJlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cXG4gICAgIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSk7XFxuIH1cXG4gXFxuKy8vLyBBbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgdHlwZS5cXG4rLy8vXFxuKy8vLyBJdCBhbGxvd3MgZGVyaXZpbmcgYSBjb3VudGVkIHJlZmVyZW5jZSBbYEFSZWZcXHUwMDNjVFxcdTAwM2VgXSBmcm9tIGEgYFxcdTAwMjZUYC5cXG4rLy8vXFxuKy8vLyBUaGlzIHByb3ZpZGVzIHNvbWUgY29udmVuaWVuY2UsIGJ1dCBpdCBhbGxvd3MgXFxcImVzY2FwaW5nXFxcIiBib3Jyb3cgY2hlY2tzIG9uIGBcXHUwMDI2VGAuIEFzIGl0XFxuKy8vLyBjb21wbGljYXRlcyBhdHRlbXB0cyB0byBlbnN1cmUgdGhhdCBhIHJlZmVyZW5jZSB0byBUIGlzIHVuaXF1ZSwgaXQgaXMgb3B0aW9uYWwgdG8gcHJvdmlkZSBmb3JcXG4rLy8vIFtgUmVmQ291bnRlZGBdIHR5cGVzLiBTZWUgKlNhZmV0eSogYmVsb3cuXFxuKy8vL1xcbisvLy8gIyBTYWZldHlcXG4rLy8vXFxuKy8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBzYWZldHkgaW52YXJpYW50cyBhcmUgdmlvbGF0ZWQgYnkgdXBncmFkaW5nIGFuIGBcXHUwMDI2VGAgdG8gYW5cXG4rLy8vIFtgQVJlZlxcdTAwM2NUXFx1MDAzZWBdLiBJbiBwYXJ0aWN1bGFyIHRoYXQgaW1wbGllcyBbYEFsd2F5c1JlZkNvdW50ZWRgXSBhbmQgW2BjcmF0ZTo6dHlwZXM6Ok93bmFibGVgXVxcbisvLy8gY2Fubm90IGJlIGltcGxlbWVudGVkIGZvciB0aGUgc2FtZSB0eXBlLCBhcyB0aGlzIHdvdWxkIGFsbG93IHZpb2xhdGluZyB0aGUgdW5pcXVlbmVzcyBndWFyYW50ZWVcXG4rLy8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZFxcdTAwM2NUXFx1MDAzZWBdIGJ5IGRlcmVmZXJlbmNpbmcgaXQgaW50byBhbiBgXFx1MDAyNlRgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbVxcbisvLy8gdGhhdC5cXG4rcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkOiBSZWZDb3VudGVkIHt9XFxuK1xcbiAvLy8gQW4gb3duZWQgcmVmZXJlbmNlIHRvIGFuIGFsd2F5cy1yZWZlcmVuY2UtY291bnRlZCBvYmplY3QuXFxuIC8vL1xcbiAvLy8gVGhlIG9iamVjdCdzIHJlZmVyZW5jZSBjb3VudCBpcyBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BBUmVmYF0gaXNcXG5AQCAtNzAsNyArOTUsNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xcbiAvLy9cXG4gLy8vIFRoZSBwb2ludGVyIHN0b3JlZCBpbiBgcHRyYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgW2BBUmVmYF0gaW5zdGFuY2UuIEluXFxuIC8vLyBwYXJ0aWN1bGFyLCB0aGUgW2BBUmVmYF0gaW5zdGFuY2Ugb3ducyBhbiBpbmNyZW1lbnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0J3MgcmVmZXJlbmNlIGNvdW50Llxcbi1wdWIgc3RydWN0IEFSZWZcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFxcdTAwM2Uge1xcbitwdWIgc3RydWN0IEFSZWZcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2Uge1xcbiAgICAgcHRyOiBOb25OdWxsXFx1MDAzY1RcXHUwMDNlLFxcbiAgICAgX3A6IFBoYW50b21EYXRhXFx1MDAzY1RcXHUwMDNlLFxcbiB9XFxuQEAgLTc5LDE5ICsxMDQsMTkgQEAgcHViIHN0cnVjdCBBUmVmXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIHtcXG4gLy8gaXQgZWZmZWN0aXZlbHkgbWVhbnMgc2hhcmluZyBgXFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSwgaXQgbmVlZHNcXG4gLy8gYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYW4gYEFSZWZcXHUwMDNjVFxcdTAwM2VgIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYVxcbiAvLyBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8gYW5kIGBUYCBpcyBkcm9wcGVkLlxcbi11bnNhZmUgaW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgU3luYyArIFNlbmRcXHUwMDNlIFNlbmQgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXFx1MDAzZSBTZW5kIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBgXFx1MDAyNkFSZWZcXHUwMDNjVFxcdTAwM2VgIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIGBTeW5jYFxcbiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFxcdTAwMjZUYCAod2hpY2ggaXMgc2FmZSBiZWNhdXNlIGBUYCBpcyBgU3luY2ApOyBhZGRpdGlvbmFsbHksXFxuIC8vIGl0IG5lZWRzIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGEgYFxcdTAwMjZBUmVmXFx1MDAzY1RcXHUwMDNlYCBtYXkgY2xvbmUgaXQgYW5kIGdldCBhblxcbiAvLyBgQVJlZlxcdTAwM2NUXFx1MDAzZWAgb24gdGhhdCB0aHJlYWQsIHNvIHRoZSB0aHJlYWQgbWF5IHVsdGltYXRlbHkgYWNjZXNzIGBUYCB1c2luZyBhIG11dGFibGUgcmVmZXJlbmNlLCBmb3JcXG4gLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFxcdTAwM2UgU3luYyBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7fVxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBSZWZDb3VudGVkICsgU3luYyArIFNlbmRcXHUwMDNlIFN5bmMgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4gXFxuIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLlxcbi1pbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIFVucGluIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2UgVW5waW4gZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4gXFxuLWltcGxcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFxcdTAwM2UgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2UgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuICAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYEFSZWZgXS5cXG4gICAgIC8vL1xcbiAgICAgLy8vIEl0IHRha2VzIG92ZXIgYW4gaW5jcmVtZW50IG9mIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxcbkBAIC0xMjAsMTkgKzE0NSwyMSBAQCBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbFxcdTAwM2NUXFx1MDAzZSkgLVxcdTAwM2UgU2VsZiB7XFxuICAgICAvLy9cXG4gICAgIC8vLyBgYGBcXG4gICAgIC8vLyB1c2UgY29yZTo6cHRyOjpOb25OdWxsO1xcbi0gICAgLy8vIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfTtcXG4rICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XFxuICAgICAvLy9cXG4gICAgIC8vLyBzdHJ1Y3QgRW1wdHkge31cXG4gICAgIC8vL1xcbi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLlxcbi0gICAgLy8vIHVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEVtcHR5IHtcXG4rICAgIC8vLyAvLyBTQUZFVFk6IFRoZSBgUmVmQ291bnRlZGAgaW1wbGVtZW50YXRpb24gZm9yIGBFbXB0eWAgZG9lcyBub3QgY291bnQgcmVmZXJlbmNlcyBhbmQgbmV2ZXJcXG4rICAgIC8vLyAvLyBmcmVlcyB0aGUgdW5kZXJseWluZyBvYmplY3QuIFRodXMgd2UgY2FuIGFjdCBhcyBvd25pbmcgYW4gaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudCBmb3JcXG4rICAgIC8vLyAvLyB0aGUgb2JqZWN0IHRoYXQgd2UgcGFzcyB0byB0aGUgbmV3bHkgY3JlYXRlZCBgQVJlZmAuXFxuKyAgICAvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRW1wdHkge1xcbiAgICAgLy8vICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7fVxcbiAgICAgLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZihfb2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7fVxcbiAgICAgLy8vIH1cXG4gICAgIC8vL1xcbiAgICAgLy8vIGxldCBtdXQgZGF0YSA9IEVtcHR5IHt9O1xcbiAgICAgLy8vIGxldCBwdHIgPSBOb25OdWxsOjpcXHUwMDNjRW1wdHlcXHUwMDNlOjpuZXcoXFx1MDAyNm11dCBkYXRhKS51bndyYXAoKTtcXG4tICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy5cXG4rICAgIC8vLyAvLyBTQUZFVFk6IFdlIGtlZXAgYGRhdGFgIGFyb3VuZCBsb25nZXIgdGhhbiB0aGUgYEFSZWZgLlxcbiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZlxcdTAwM2NFbXB0eVxcdTAwM2UgPSB1bnNhZmUgeyBBUmVmOjpmcm9tX3JhdyhwdHIpIH07XFxuICAgICAvLy8gbGV0IHJhd19wdHI6IE5vbk51bGxcXHUwMDNjRW1wdHlcXHUwMDNlID0gQVJlZjo6aW50b19yYXcoZGF0YV9yZWYpO1xcbiAgICAgLy8vXFxuQEAgLTE0Myw3ICsxNzAsNyBAQCBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cXHUwMDNlIE5vbk51bGxcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIENsb25lIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBSZWZDb3VudGVkXFx1MDAzZSBDbG9uZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuICAgICBmbiBjbG9uZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgU2VsZiB7XFxuICAgICAgICAgc2VsZi5pbmNfcmVmKCk7XFxuICAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IGluY3JlbWVudGVkIHRoZSByZWZjb3VudCBhYm92ZS5cXG5AQCAtMTUxLDcgKzE3OCw3IEBAIGZuIGNsb25lKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBTZWxmIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSBEZXJlZiBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2UgRGVyZWYgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgdHlwZSBUYXJnZXQgPSBUO1xcbiBcXG4gICAgIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG5AQCAtMTY4LDcgKzE5NSwxNCBAQCBmbiBmcm9tKGI6IFxcdTAwMjZUKSAtXFx1MDAzZSBTZWxmIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSBEcm9wIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFxcdTAwM2UgRnJvbVxcdTAwM2NPd25lZFxcdTAwM2NUXFx1MDAzZVxcdTAwM2UgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBmcm9tKGI6IE93bmVkXFx1MDAzY1RcXHUwMDNlKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICBUOjppbnRvX3NoYXJlZChiKVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIERyb3AgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UncmUgYWJvdXQgdG9cXG4gICAgICAgICAvLyBkZWNyZW1lbnQuXFxuQEAgLTE3OCwxOSArMjEyLDE5IEBAIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuIFxcbiBpbXBsXFx1MDAzY1QsIFVcXHUwMDNlIFBhcnRpYWxFcVxcdTAwM2NBUmVmXFx1MDAzY1VcXHUwMDNlXFx1MDAzZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZVxcbiB3aGVyZVxcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCArIFBhcnRpYWxFcVxcdTAwM2NVXFx1MDAzZSxcXG4tICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICBUOiBSZWZDb3VudGVkICsgUGFydGlhbEVxXFx1MDAzY1VcXHUwMDNlLFxcbisgICAgVTogUmVmQ291bnRlZCxcXG4ge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBlcShcXHUwMDI2c2VsZiwgb3RoZXI6IFxcdTAwMjZBUmVmXFx1MDAzY1VcXHUwMDNlKSAtXFx1MDAzZSBib29sIHtcXG4gICAgICAgICBUOjplcShcXHUwMDI2KipzZWxmLCBcXHUwMDI2KipvdGhlcilcXG4gICAgIH1cXG4gfVxcbi1pbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgKyBFcVxcdTAwM2UgRXEgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4raW1wbFxcdTAwM2NUOiBSZWZDb3VudGVkICsgRXFcXHUwMDNlIEVxIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbiBpbXBsXFx1MDAzY1QsIFVcXHUwMDNlIFBhcnRpYWxFcVxcdTAwM2NcXHUwMDI2J18gVVxcdTAwM2UgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2VcXG4gd2hlcmVcXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQgKyBQYXJ0aWFsRXFcXHUwMDNjVVxcdTAwM2UsXFxuKyAgICBUOiBSZWZDb3VudGVkICsgUGFydGlhbEVxXFx1MDAzY1VcXHUwMDNlLFxcbiB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGVxKFxcdTAwMjZzZWxmLCBvdGhlcjogXFx1MDAyNlxcdTAwMjZVKSAtXFx1MDAzZSBib29sIHtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdGFzay5ycyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcXG5pbmRleCAzODI3M2Y0ZWVkYjUxMy4uNjI1OTQzMGIwY2EzMTggMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvdGFzay5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcXG5AQCAtMTAsNyArMTAsMTIgQEBcXG4gICAgIHBpZF9uYW1lc3BhY2U6OlBpZE5hbWVzcGFjZSxcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzeW5jOjphcmVmOjpBUmVmLFxcbi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LFxcbisgICAgdHlwZXM6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIE5vdFRocmVhZFNhZmUsXFxuKyAgICAgICAgT3BhcXVlLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbiB9O1xcbiB1c2UgY29yZTo6e1xcbiAgICAgb3BzOjpEZXJlZixcXG5AQCAtMzQ3LDcgKzM1Miw3IEBAIHB1YiBmbiBncm91cF9sZWFkZXIoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZUYXNrIHtcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBUYXNrYCBpcyBhbHdheXMgcmVmY291bnRlZC5cXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBUYXNrIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cXG5AQCAtMzYxLDYgKzM2NiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY1Rhc2tcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZUYXNrYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7fVxcbitcXG4gaW1wbCBQYXJ0aWFsRXEgZm9yIFRhc2sge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBlcShcXHUwMDI2c2VsZiwgb3RoZXI6IFxcdTAwMjZTZWxmKSAtXFx1MDAzZSBib29sIHtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdHlwZXMucnMgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xcbmluZGV4IGFjMzE2ZmQ3YjUzOGZlLi42YWE3NjA5NTJjYjYzNSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC90eXBlcy5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXFxuQEAgLTE1LDYgKzE1LDE4IEBAXFxuIHB1YiBtb2QgZm9yX2x0O1xcbiBwdWIgdXNlIGZvcl9sdDo6Rm9yTHQ7XFxuIFxcbitwdWIgdXNlIGNyYXRlOjp7XFxuKyAgICBvd25lZDo6e1xcbisgICAgICAgIE93bmFibGUsXFxuKyAgICAgICAgT3duYWJsZVJlZkNvdW50ZWQsXFxuKyAgICAgICAgT3duZWQsIC8vXFxuKyAgICB9LFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sIC8vXFxuK307XFxuK1xcbiAvLy8gVXNlZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgdG8gYW5kIGZyb20gZm9yZWlnbiAobm9uLVJ1c3QpIGxhbmd1YWdlcy5cXG4gLy8vXFxuIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xcbmluZGV4IDdhZmYwYzgyZDBhZmMwLi41OTM1MGM2YjBkZjJhZCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC91c2IucnNcXG4rKysgYi9ydXN0L2tlcm5lbC91c2IucnNcXG5AQCAtMTgsNyArMTgsMTAgQEBcXG4gICAgICAgICB0b19yZXN1bHQsIC8vXFxuICAgICB9LFxcbiAgICAgcHJlbHVkZTo6KixcXG4tICAgIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuICAgICBUaGlzTW9kdWxlLCAvL1xcbiB9O1xcbkBAIC0zOTIsNyArMzk1LDcgQEAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2RGV2aWNlIHtcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEludGVyZmFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBpbnZhcmlhbnRzIG9mIGBJbnRlcmZhY2VgIGd1YXJhbnRlZSB0aGF0IGBzZWxmLmFzX3JhdygpYFxcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9pbnRlcmZhY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXFxuQEAgLTQwNiw2ICs0MDksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjSW50ZXJmYWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2SW50ZXJmYWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHt9XFxuK1xcbiAvLyBTQUZFVFk6IEEgYEludGVyZmFjZWAgaXMgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIGFuZCBjYW4gYmUgcmVsZWFzZWQgZnJvbSBhbnkgdGhyZWFkLlxcbiB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbnRlcmZhY2Uge31cXG4gXFxuQEAgLTQ0Myw3ICs0NTAsNyBAQCBmbiBhc19yYXcoXFx1MDAyNnNlbGYpIC1cXHUwMDNlICptdXQgYmluZGluZ3M6OnVzYl9kZXZpY2Uge1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBpbnZhcmlhbnRzIG9mIGBEZXZpY2VgIGd1YXJhbnRlZSB0aGF0IGBzZWxmLmFzX3JhdygpYFxcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXFxuQEAgLTQ1Nyw2ICs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XFxuK1xcbiBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBBc1JlZlxcdTAwM2NkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXFxuaW5kZXggN2UyNTNiNmYyOTljZTMuLjc3NjczYjhlYTQ1ZmIxIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xcbkBAIC0xOTIsNyArMTkyLDcgQEBcXG4gICAgIHN5bmM6OntcXG4gICAgICAgICBhcmVmOjp7XFxuICAgICAgICAgICAgIEFSZWYsXFxuLSAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuICAgICAgICAgfSxcXG4gICAgICAgICBBcmMsXFxuICAgICAgICAgTG9ja0NsYXNzS2V5LCAvL1xcbkBAIC05NTQsNyArOTU0LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFxcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXFx1MDAzY0lEXFx1MDAzZSBmb3IgUGluXFx1MDAzY0tCb3hcXHUwMDNjVFxcdTAwM2VcXHUwMDNlXFxuIC8vICAgICBpbXBsZW1lbnRhdGlvbiBvZiBgV29ya0l0ZW1Qb2ludGVyYCBmb3IgYEFSZWZcXHUwMDNjVFxcdTAwM2VgLlxcbiB1bnNhZmUgaW1wbFxcdTAwM2NULCBjb25zdCBJRDogdTY0XFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcXHUwMDNjSURcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIHdoZXJlXFxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgVDogUmVmQ291bnRlZCxcXG4gICAgIFQ6IFdvcmtJdGVtXFx1MDAzY0lELCBQb2ludGVyID0gU2VsZlxcdTAwM2UsXFxuICAgICBUOiBIYXNXb3JrXFx1MDAzY1QsIElEXFx1MDAzZSxcXG4ge1xcbkBAIC05ODcsNyArOTg3LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFxcdTAwM2UgV29ya0l0ZW1Qb2ludGVyXFx1MDAzY0lEXFx1MDAzZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZVxcbiAvLyByZXF1aXJlbWVudHMgb2YgYFdvcmtJdGVtUG9pbnRlcmAuXFxuIHVuc2FmZSBpbXBsXFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcXHUwMDNlIFJhd1dvcmtJdGVtXFx1MDAzY0lEXFx1MDAzZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZVxcbiB3aGVyZVxcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgIFQ6IFJlZkNvdW50ZWQsXFxuICAgICBUOiBXb3JrSXRlbVxcdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcXHUwMDNlLFxcbiAgICAgVDogSGFzV29ya1xcdTAwM2NULCBJRFxcdTAwM2UsXFxuIHtcXG5AQCAtMTAyMCw3ICsxMDIwLDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFxcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXFx1MDAzY0lEXFx1MDAzZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZVxcbiB3aGVyZVxcbiAgICAgVDogV29ya0l0ZW1cXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXFx1MDAzZSxcXG4gICAgIFQ6IEhhc0RlbGF5ZWRXb3JrXFx1MDAzY1QsIElEXFx1MDAzZSxcXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICBUOiBSZWZDb3VudGVkLFxcbiB7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjA2OjA0LjYxNTYxNjUxNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzODg0NTAyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgYWRhcHRzIGV4aXN0aW5nIFJ1c3QgY29kZSAobGlrZSBgUGFnZWAgYW5kIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIpIHRvIHVzZSB0aGVzZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IGRyaXZlcnMsIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY2NDMwYTcxMDJlZjc0ZTlkNGIyZWQ0MjQ3ZDhmZjE1ZjVlYWY2ZTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMjowNjowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuaW5kZXggZTU0YTkwZTYyNDAyYTQuLjc5NDFlYjg1YjRlZjQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzXG4rKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcbkBAIC0zMyw3ICszMyw3IEBAXG4gICAgIHN5bmM6OnthcmVmOjpBUmVmLCBNdXRleCwgU3BpbkxvY2t9LFxuICAgICB0YXNrOjpQaWQsXG4gICAgIHRyYW5zbXV0ZTo6RnJvbUJ5dGVzLFxuLSAgICB0eXBlczo6T3BhcXVlLFxuKyAgICB0eXBlczo6e09wYXF1ZSwgT3duZWR9LFxuICAgICB1YWNjZXNzOjpVc2VyU2xpY2VSZWFkZXIsXG4gfTtcbiBcbkBAIC0xOTgsNyArMTk4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgSW5uZXIge31cbiAjW3JlcHIoQyldXG4gc3RydWN0IFBhZ2VJbmZvIHtcbiAgICAgbHJ1OiBiaW5kaW5nczo6bGlzdF9oZWFkLFxuLSAgICBwYWdlOiBPcHRpb25cdTAwM2NQYWdlXHUwMDNlLFxuKyAgICBwYWdlOiBPcHRpb25cdTAwM2NPd25lZFx1MDAzY1BhZ2VcdTAwM2VcdTAwM2UsXG4gICAgIHJhbmdlOiAqY29uc3QgU2hyaW5rYWJsZVBhZ2VSYW5nZSxcbiB9XG4gXG5AQCAtMjA2LDcgKzIwNiw3IEBAIGltcGwgUGFnZUluZm8ge1xuICAgICAvLy8gIyBTYWZldHlcbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvaywgYW5kIHRoYXQgdGhlIHBhZ2UgaXMgbm90IGN1cnJlbnRseSBzZXQuXG4tICAgIHVuc2FmZSBmbiBzZXRfcGFnZShtZTogKm11dCBQYWdlSW5mbywgcGFnZTogUGFnZSkge1xuKyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkXHUwMDNjUGFnZVx1MDAzZSkge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cbiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcbiBcbkBAIC0yMjksMTMgKzIyOSwxMyBAQCB1bnNhZmUgZm4gZ2V0X3BhZ2VcdTAwM2MnYVx1MDAzZShtZTogKmNvbnN0IFBhZ2VJbmZvKSAtXHUwMDNlIE9wdGlvblx1MDAzY1x1MDAyNidhIFBhZ2VcdTAwM2Uge1xuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBjb25zdCAoKm1lKS5wYWdlIH07XG4gXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIGZvciByZWFkaW5nLlxuLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH1cbisgICAgICAgIHVuc2FmZSB7ICgqcHRyKS5hc19kZXJlZigpIH1cbiAgICAgfVxuIFxuICAgICAvLy8gIyBTYWZldHlcbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICdhLlxuLSAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtXHUwMDNlIE9wdGlvblx1MDAzY1BhZ2VcdTAwM2Uge1xuKyAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtXHUwMDNlIE9wdGlvblx1MDAzY093bmVkXHUwMDNjUGFnZVx1MDAzZVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoaXMgcG9pbnRlciBvZmZzZXQgaXMgaW4gYm91bmRzLlxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xuIFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xuaW5kZXggY2Q0MjAzZjI3YWVkMDYuLmM3YjliMDY5Y2Y3NWRkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbkBAIC0xNjksNyArMTY5LDcgQEAgdW5zYWZlIGZuIHJlYWxsb2MoXG4gfVxuIFxuIGltcGwgVm1hbGxvYyB7XG4tICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdLlxuKyAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BQYWdlYF0ocGFnZTo6UGFnZSkgcmVmZXJlbmNlLlxuICAgICAvLy9cbiAgICAgLy8vICMgRXhhbXBsZXNcbiAgICAgLy8vXG5AQCAtMjAyLDIwICsyMDIsMTcgQEAgaW1wbCBWbWFsbG9jIHtcbiAgICAgLy8vXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiAgICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgYCdhYC5cbi0gICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXHUwMDNjJ2FcdTAwM2UocHRyOiBOb25OdWxsXHUwMDNjdThcdTAwM2UpIC1cdTAwM2UgcGFnZTo6Qm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2Uge1xuKyAgICBwdWIgdW5zYWZlIGZuIHRvX3BhZ2VcdTAwM2MnYVx1MDAzZShwdHI6IE5vbk51bGxcdTAwM2N1OFx1MDAzZSkgLVx1MDAzZSBcdTAwMjYnYSBwYWdlOjpQYWdlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTtcbiBcbi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXJcbi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcbi1cbiAgICAgICAgIC8vIFNBRkVUWTpcbi0gICAgICAgIC8vIC0gYHBhZ2VgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAsIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2Zcbi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cbi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZlxuLSAgICAgICAgLy8gICBgJ2FgLlxuLSAgICAgICAgdW5zYWZlIHsgcGFnZTo6Qm9ycm93ZWRQYWdlOjpmcm9tX3JhdyhwYWdlKSB9XG4rICAgICAgICAvLyAtIGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCwgbm9uLW51bGwgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWRcbisgICAgICAgIC8vICAgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb25cbisgICAgICAgIC8vICAgYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYFZtYWxsb2NgIGFsbG9jYXRpb24uXG4rICAgICAgICAvLyAtIEJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb24gYHB0cmAsIGFuZCBoZW5jZSB0aGUgYHN0cnVjdCBwYWdlYCwgaXNcbisgICAgICAgIC8vICAgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYCdhYC5cbisgICAgICAgIHVuc2FmZSB7IFx1MDAyNipwYWdlLmNhc3QoKSB9XG4gICAgIH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5yc1xuaW5kZXggMDJmZGEzZWE1Y2FlNjYuLjhkY2MxNmVkODk4OTMxIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5AQCAtOSw3ICs5LDcgQEBcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4gXG4tLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbisvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxuIC8vL1xuIC8vLyAjIEd1YXJhbnRlZXNcbiAvLy9cbkBAIC0yOCwxMSArMjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXJcdTAwM2MnYVx1MDAzZSB7XG4gICAgIHNpemU6IHVzaXplLFxuICAgICAvLy8gVGhlIGN1cnJlbnQgcGFnZSBpbmRleCBvZiB0aGUgW2BJdGVyYXRvcmBdLlxuICAgICBpbmRleDogdXNpemUsXG4tICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY3BhZ2U6OkJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlXHUwMDNlLFxuKyAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NcdTAwMjYnYSBwYWdlOjpQYWdlXHUwMDNlLFxuIH1cbiBcbiBpbXBsXHUwMDNjJ2FcdTAwM2UgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlclx1MDAzYydhXHUwMDNlIHtcbi0gICAgdHlwZSBJdGVtID0gcGFnZTo6Qm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2U7XG4rICAgIHR5cGUgSXRlbSA9IFx1MDAyNidhIHBhZ2U6OlBhZ2U7XG4gXG4gICAgIGZuIG5leHQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgT3B0aW9uXHUwMDNjU2VsZjo6SXRlbVx1MDAzZSB7XG4gICAgICAgICBsZXQgb2Zmc2V0ID0gc2VsZi5pbmRleC5jaGVja2VkX211bChwYWdlOjpQQUdFX1NJWkUpPztcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuaW5kZXggMzVkMWUwMTU4NDhkZGEuLmQ1MzRlOGFkY2Y3YjMzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuQEAgLTIxMSw2ICsyMTEsMTUgQEAgcHViIGZuIGxlYWtcdTAwM2MnYVx1MDAzZShiOiBTZWxmKSAtXHUwMDNlIFx1MDAyNidhIG11dCBUIHtcbiAgICAgICAgIC8vIHdoaWNoIHBvaW50cyB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiBgVGAuXG4gICAgICAgICB1bnNhZmUgeyBcdTAwMjZtdXQgKkJveDo6aW50b19yYXcoYikgfVxuICAgICB9XG4rXG4rICAgIC8vLyBDb25zdW1lcyB0aGUgYEJveFx1MDAzY1QsQVx1MDAzZWAgYW5kIHJldHVybnMgYSBgTm9uTnVsbFx1MDAzY1RcdTAwM2VgLlxuKyAgICAvLy9cbisgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC5cbisgICAgI1tpbmxpbmVdXG4rICAgIHB1YiBmbiBpbnRvX25vbl9udWxsKGI6IFNlbGYpIC1cdTAwM2UgTm9uTnVsbFx1MDAzY1RcdTAwM2Uge1xuKyAgICAgICAgLy8gU0FGRVRZOiBgS0JveDo6aW50b19yYXdgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyLlxuKyAgICAgICAgdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChTZWxmOjppbnRvX3JhdyhiKSkgfVxuKyAgICB9XG4gfVxuIFxuIGltcGxcdTAwM2NULCBBXHUwMDNlIEJveFx1MDAzY01heWJlVW5pbml0XHUwMDNjVFx1MDAzZSwgQVx1MDAzZVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuaW5kZXggYzQyOTI4ZDVhMjM5M2YuLjg1NDUyNTI4OWM4YjQzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXG4rKysgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbkBAIC0xOSw2ICsxOSwxMCBAQFxuICAgICAgICAgdG9fcmVzdWx0LCAvL1xuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6OntcbiAgICAgICAgIEZvckx0LFxuICAgICAgICAgRm9yZWlnbk93bmFibGUsXG5AQCAtMzQ0LDcgKzM0OCw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgZGV2aWNlOjpBc0J1c0RldmljZVx1MDAzY0N0eFx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlXG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC0zNjMsNiArMzY3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2RGV2aWNlYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbitcbiBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuaW5kZXggY2UzZTMwYzgxY2I1ZWQuLjhkYWQxNWFlNGNmYjBhIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuQEAgLTksNyArOSwxMSBAQFxuICAgICBibG9jazo6bXE6Ok9wZXJhdGlvbnMsXG4gICAgIGVycm9yOjpSZXN1bHQsXG4gICAgIHN5bmM6Ontcbi0gICAgICAgIGFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbisgICAgICAgIGFyZWY6OntcbisgICAgICAgICAgICBBUmVmLFxuKyAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgICAgIH0sXG4gICAgICAgICBhdG9taWM6OlJlbGF4ZWQsXG4gICAgICAgICBSZWZjb3VudCxcbiAgICAgfSxcbkBAIC0yMjksMTEgKzIzMywxMCBAQCB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU2VuZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiAvLyBtdXRhdGUgYHNlbGZgIGFyZSBpbnRlcm5hbGx5IHN5bmNocm9uaXplZGBcbiB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU3luYyBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiBcbi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXNcbi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBgQWx3YXlzUmVmQ291bnRlZGAgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50XG4tLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnRcbi0vLyBkZWNyZW1lbnQgaXMgZXhlY3V0ZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHtcbisvLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYFJlZkNvdW50ZWRgXG4rLy8gZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50IGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGFcbisvLyBtYXRjaGluZyByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgc2VsZi53cmFwcGVyX3JlZigpLnJlZmNvdW50KCkuaW5jKCk7XG4gICAgIH1cbkBAIC0yNTUsMyArMjU4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB9XG4gICAgIH1cbiB9XG4rXG4rLy8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NSZXF1ZXN0XHUwMDNlYFxuKy8vIGZyb20gYSBgXHUwMDI2UmVxdWVzdGAgKGJ1dCB0aGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUpLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2NyZWQucnMgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5pbmRleCBmZmExNTZiOWRmMzc3ZS4uYjE3NzM2YTlhZGNkNTggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5AQCAtOCw3ICs4LDE1IEBAXG4gLy8hXG4gLy8hIFJlZmVyZW5jZTogXHUwMDNjaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3Qvc2VjdXJpdHkvY3JlZGVudGlhbHMuaHRtbFx1MDAzZVxuIFxuLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0YXNrOjpLdWlkLCB0eXBlczo6T3BhcXVlfTtcbit1c2UgY3JhdGU6OntcbisgICAgYmluZGluZ3MsXG4rICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsXG4rICAgIHRhc2s6Okt1aWQsXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgT3BhcXVlLCAvL1xuKyAgICB9LCAvL1xuK307XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwncyBgc3RydWN0IGNyZWRgLlxuIC8vL1xuQEAgLTc2LDcgKzg0LDcgQEAgcHViIGZuIGV1aWQoXHUwMDI2c2VsZikgLVx1MDAzZSBLdWlkIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBDcmVkZW50aWFsYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC05MCwzICs5OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXHUwMDNjQ3JlZGVudGlhbFx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9jcmVkKG9iai5jYXN0KCkuYXNfcHRyKCkpIH07XG4gICAgIH1cbiB9XG4rXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0NyZWRlbnRpYWxcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZDcmVkZW50aWFsYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHt9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXG5pbmRleCA2NDVhZmM0OWEyN2Q2NC4uMmU5MGY2YTA2ZmQwNTkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnNcbisrKyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xuQEAgLTgsOCArOCwxMiBAQFxuICAgICBiaW5kaW5ncyxcbiAgICAgZm10LFxuICAgICBwcmVsdWRlOjoqLFxuLSAgICBzeW5jOjphcmVmOjpBUmVmLFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBUmVmLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcbiAgICAgICAgIE9wYXF1ZSwgLy9cbiAgICAgfSwgLy9cbkBAIC00NDgsNyArNDUyLDcgQEAgcHViIGZuIG5hbWUoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZDU3RyIHtcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JhdygpKSB9O1xuQEAgLTQ2MCw2ICs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkRldmljZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4rXG4gLy8gU0FGRVRZOiBBcyBieSB0aGUgdHlwZSBpbnZhcmlhbnQgYERldmljZWAgY2FuIGJlIHNlbnQgdG8gYW55IHRocmVhZC5cbiB1bnNhZmUgaW1wbCBTZW5kIGZvciBEZXZpY2Uge31cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcbmluZGV4IDVhZWFkODM1ZmJiYzAyLi5jZWU3ZTI1MDEzNjg5OSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG5AQCAtMTQsNyArMTQsMTAgQEBcbiAgICAgZm10LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSxcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gfTtcbiBcbkBAIC0zNjAsNyArMzYzLDcgQEAgZm4gZm10KFx1MDAyNnNlbGYsIGY6IFx1MDAyNm11dCBmbXQ6OkZvcm1hdHRlclx1MDAzYydfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEZ3Tm9kZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbit1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGVcbiAgICAgICAgIC8vIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuQEAgLTM3NCw2ICszNzcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0Z3Tm9kZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkZ3Tm9kZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHt9XG4rXG4gZW51bSBOb2RlXHUwMDNjJ2FcdTAwM2Uge1xuICAgICBCb3Jyb3dlZChcdTAwMjYnYSBGd05vZGUpLFxuICAgICBPd25lZChBUmVmXHUwMDNjRndOb2RlXHUwMDNlKSxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuaW5kZXggNDAzZmMzNTM1M2M3NDAuLjM2ODc0MmEyNTgzNzY4IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuQEAgLTE1LDcgKzE1LDggQEBcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgc3luYzo6YXJlZjo6e1xuICAgICAgICAgQVJlZixcbi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiAgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgd29ya3F1ZXVlOjp7XG5AQCAtMjI3LDcgKzIyOCw3IEBAIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbiBcbiAvLyBTQUZFVFk6IERSTSBkZXZpY2Ugb2JqZWN0cyBhcmUgYWx3YXlzIHJlZmVyZW5jZSBjb3VudGVkIGFuZCB0aGUgZ2V0L3B1dCBmdW5jdGlvbnNcbiAvLyBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBkcm06OkRyaXZlclx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2VcdTAwM2NUXHUwMDNlIHtcbit1bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIFJlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZGV2X2dldChzZWxmLmFzX3JhdygpKSB9O1xuQEAgLTI0Miw2ICsyNDMsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZEZXZpY2VgLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXJcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVFx1MDAzZSB7fVxuK1xuIGltcGxcdTAwM2NUOiBkcm06OkRyaXZlclx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NUXHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBgYmluZGluZ3M6OmRybV9kZXZpY2U6OmRldmAgaXMgdmFsaWQgYXMgbG9uZyBhcyB0aGUgRFJNIGRldmljZSBpdHNlbGYgaXMgdmFsaWQsXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMgYi9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xuaW5kZXggMDFiNWJkNDdhMzMzMmQuLjMwZDM3MTg1NzhmZThjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbisrKyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXG5AQCAtMTcsNyArMTcsNyBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gfTtcbkBAIC0yOSw3ICsyOSw3IEBAXG4gI1tjZmcoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpXVxuIHB1YiBtb2Qgc2htZW07XG4gXG4tLy8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyBbYEFsd2F5c1JlZkNvdW50ZWRgXSBmb3IgYW55IEdFTSBvYmplY3QgdHlwZS5cbisvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuIC8vL1xuIC8vLyBTaW5jZSBhbGwgR0VNIG9iamVjdHMgdXNlIHRoZSBzYW1lIHJlZmNvdW50aW5nIHNjaGVtZS5cbiAjW21hY3JvX2V4cG9ydF1cbkBAIC00Miw3ICs0Miw3IEBAIGltcGwgJCggXHUwMDNjJCggJHRwYXJhbV9pZDppZGVudCApLCtcdTAwM2UgKT8gZm9yICR0eXBlOnR5XG4gICAgICAgICApP1xuICAgICApID1cdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBBbGwgR0VNIG9iamVjdHMgYXJlIHJlZmNvdW50ZWQuXG4tICAgICAgICB1bnNhZmUgaW1wbCAkKCBcdTAwM2MkKCAkdHBhcmFtX2lkICksK1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4rICAgICAgICB1bnNhZmUgaW1wbCAkKCBcdTAwM2MkKCAkdHBhcmFtX2lkICksK1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yICR0eXBlXG4gICAgICAgICB3aGVyZVxuICAgICAgICAgICAgIFNlbGY6IEludG9HRU1PYmplY3QsXG4gICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCsgKT9cbkBAIC02MSw2ICs2MSwxNCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgICAgICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0X3B1dChvYmopIH07XG4gICAgICAgICAgICAgfVxuICAgICAgICAgfVxuK1xuKyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzYyR0eXBlXHUwMDNlYCBmcm9tIGFcbisgICAgICAgIC8vIGBcdTAwMjYkdHlwZWAuXG4rICAgICAgICB1bnNhZmUgaW1wbCAkKCBcdTAwM2MkKCAkdHBhcmFtX2lkICksK1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4rICAgICAgICB3aGVyZVxuKyAgICAgICAgICAgIFNlbGY6IEludG9HRU1PYmplY3QsXG4rICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCsgKT9cbisgICAgICAgIHt9XG4gICAgIH07XG4gfVxuICNbY2ZnX2F0dHIobm90KENPTkZJR19SVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSKSwgYWxsb3codW51c2VkKSldXG5AQCAtOTgsNyArMTA2LDcgQEAgZm4gY2xvc2UoX29iajogXHUwMDI2XHUwMDNjU2VsZjo6RHJpdmVyIGFzIGRybTo6RHJpdmVyXHUwMDNlOjpPYmplY3QsIF9maWxlOiBcdTAwMjZEcml2ZXJGaWxlXHUwMDNjU2VsZlx1MDAzZSlcbiB9XG4gXG4gLy8vIFRyYWl0IHRoYXQgcmVwcmVzZW50cyBhIEdFTSBvYmplY3Qgc3VidHlwZVxuLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCArIHN1cGVyOjpwcml2YXRlOjpTZWFsZWQgKyBBbHdheXNSZWZDb3VudGVkIHtcbitwdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgKyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICsgUmVmQ291bnRlZCB7XG4gICAgIC8vLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSByYXcgYGRybV9nZW1fb2JqZWN0YCBzdHJ1Y3R1cmUsIHdoaWNoIG11c3QgYmUgdmFsaWQgYXMgbG9uZyBhc1xuICAgICAvLy8gdGhpcyBvd25pbmcgb2JqZWN0IGlzIHZhbGlkLlxuICAgICBmbiBhc19yYXcoXHUwMDI2c2VsZikgLVx1MDAzZSAqbXV0IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdDtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuaW5kZXggMjNlZTY4OWJkMjQwMDUuLjcyMGU1NzQxODM1OGRjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuQEAgLTEyLDggKzEyLDE1IEBAXG4gICAgIGNyZWQ6OkNyZWRlbnRpYWwsXG4gICAgIGVycm9yOjp7Y29kZTo6KiwgdG9fcmVzdWx0LCBFcnJvciwgUmVzdWx0fSxcbiAgICAgZm10LFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbiB9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG5AQCAtMTk3LDcgKzIwNCw3IEBAIHVuc2FmZSBpbXBsIFN5bmMgZm9yIEZpbGUge31cbiBcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjRmlsZVx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50LlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjEyLDYgKzIxOSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0ZpbGVcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRmlsZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkZpbGVgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge31cbitcbiAvLy8gV3JhcHMgdGhlIGtlcm5lbCdzIGBzdHJ1Y3QgZmlsZWAuIE5vdCB0aHJlYWQgc2FmZS5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxuQEAgLTIzMyw3ICsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBMb2NhbEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjTG9jYWxGaWxlXHUwMDNlYCBvd24gYSBub3JtYWwgcmVmY291bnQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjQ5LDYgKzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0xvY2FsRmlsZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NMb2NhbEZpbGVcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZMb2NhbEZpbGVgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fVxuK1xuIGltcGwgTG9jYWxGaWxlIHtcbiAgICAgLy8vIENvbnN0cnVjdHMgYSBuZXcgYHN0cnVjdCBmaWxlYCB3cmFwcGVyIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuaW5kZXggNjI0Yjk3MWNhOGIwYjIuLjAyYjJjOTIyMGViMTFjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9pMmMucnNcbkBAIC0xOCw3ICsxOCw4IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXG4gfTtcbkBAIC00MjQsNyArNDI1LDcgQEAgcHViIGZuIGdldChpbmRleDogaTMyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0FSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQWRhcHRlcmAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6aTJjX2dldF9hZGFwdGVyKHNlbGYuaW5kZXgoKSkgfTtcbkBAIC00MzUsNiArNDM2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH1cbiAgICAgfVxuIH1cbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFuXG4rLy8gYFx1MDAyNkkyY0FkYXB0ZXJgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge31cbiBcbiAvLy8gVGhlIGkyYyBib2FyZCBpbmZvIHJlcHJlc2VudGF0aW9uXG4gLy8vXG5AQCAtNTAwLDcgKzUwNCw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgZGV2aWNlOjpBc0J1c0RldmljZVx1MDAzY0N0eFx1MDAzZSBmb3IgSTJjQ2xpZW50XHUwMDNjQ1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKEkyY0NsaWVudCk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0NsaWVudGAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNDbGllbnQge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC01MTEsNiArNTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9kZXZpY2UoXHUwMDI2cmF3IG11dCAoKm9iai5hc19yZWYoKS5hc19yYXcoKSkuZGV2KSB9XG4gICAgIH1cbiB9XG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhblxuKy8vIGBcdTAwMjZJMmNDbGllbnRgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fVxuIFxuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBJMmNDbGllbnRcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbGliLnJzIGIvcnVzdC9rZXJuZWwvbGliLnJzXG5pbmRleCA5NTEyYWY3MTU2ZGYyYS4uZWI1MjU2MjA0YTE3NDIgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9saWIucnNcbisrKyBiL3J1c3Qva2VybmVsL2xpYi5yc1xuQEAgLTEwMSw2ICsxMDEsNyBAQFxuIHB1YiBtb2Qgb2Y7XG4gI1tjZmcoQ09ORklHX1BNX09QUCldXG4gcHViIG1vZCBvcHA7XG4rcHViIG1vZCBvd25lZDtcbiBwdWIgbW9kIHBhZ2U7XG4gI1tjZmcoQ09ORklHX1BDSSldXG4gcHViIG1vZCBwY2k7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0ucnMgYi9ydXN0L2tlcm5lbC9tbS5yc1xuaW5kZXggNDc2NGQ3YjY4ZjJhN2YuLjgzZWQ5NGZjYTE0Y2EyIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbW0ucnNcbisrKyBiL3J1c3Qva2VybmVsL21tLnJzXG5AQCAtMTMsOCArMTMsMTUgQEBcbiBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBUmVmLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbisgICAgdHlwZXM6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxuKyAgICAgICAgT3BhcXVlLCAvL1xuKyAgICB9LCAvL1xuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTU1LDcgKzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbSB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cbkBAIC02OSw2ICs3Niw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1cdTAwM2VgIGZyb20gYSBgXHUwMDI2TW1gLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tIHt9XG4rXG4gLy8vIEEgd3JhcHBlciBmb3IgdGhlIGtlcm5lbCdzIGBzdHJ1Y3QgbW1fc3RydWN0YC5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIGlzIGxpa2UgW2BNbWBdLCBidXQgd2l0aCBub24temVybyBgbW1fdXNlcnNgLiBJdCBjYW4gb25seSBiZSB1c2VkIHdoZW4gYG1tX3VzZXJzYCBjYW5cbkBAIC05MSw3ICsxMDEsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBNbVdpdGhVc2VyIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW1XaXRoVXNlciB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtMTA1LDYgKzExNSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY01tV2l0aFVzZXJcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZNbVdpdGhVc2VyYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHt9XG4rXG4gLy8gTWFrZSBhbGwgYE1tYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlcmAuXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlciB7XG4gICAgIHR5cGUgVGFyZ2V0ID0gTW07XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnMgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xuaW5kZXggYjhkMmYwNTEyMjVjNzMuLjhmYmMzOTZlNDYwMjgxIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbisrKyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzXG5AQCAtMTAsNyArMTAsMTEgQEBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4gICAgIG1tOjpNbVdpdGhVc2VyLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFSZWYsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuKyAgICB0eXBlczo6QWx3YXlzUmVmQ291bnRlZCxcbiB9O1xuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcbiBcbkBAIC0zNCw3ICszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxuQEAgLTQ4LDYgKzUyLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1XaXRoVXNlckFzeW5jXHUwMDNlYFxuKy8vIGZyb20gYSBgXHUwMDI2TW1XaXRoVXNlckFzeW5jYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge31cbitcbiAvLyBNYWtlIGFsbCBgTW1XaXRoVXNlcmAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJBc3luY2AuXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29wcC5ycyBiL3J1c3Qva2VybmVsL29wcC5yc1xuaW5kZXggNjJlNDQ2NzYxMjVkMTAuLmI4ZGI2YmRlZmQwNzcxIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvb3BwLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9vcHAucnNcbkBAIC0xNiw4ICsxNiwxNCBAQFxuICAgICBmZmk6OntjX2NoYXIsIGNfdWxvbmd9LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OkNTdHJpbmcsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgT3BhcXVlLCAvL1xuKyAgICB9LCAvL1xuIH07XG4gXG4gI1tjZmcoQ09ORklHX0NQVV9GUkVRKV1cbkBAIC0xMDQxLDcgKzEwNDcsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBPUFAge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBPUFAge31cbiBcbiAvLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IFtgT1BQYF0gaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMTA1NSw2ICsxMDYxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NPUFBcdTAwM2VgIGZyb20gYW5cbisvLyBgXHUwMDI2T1BQYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge31cbitcbiBpbXBsIE9QUCB7XG4gICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL293bmVkLnJzIGIvcnVzdC9rZXJuZWwvb3duZWQucnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYWNiNjExZjA4NGZmMzVcbi0tLSAvZGV2L251bGxcbisrKyBiL3J1c3Qva2VybmVsL293bmVkLnJzXG5AQCAtMCwwICsxLDM3MyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rXG4rLy8hIFVuaXF1ZSBvd25lZCBwb2ludGVyIHR5cGVzIGZvciBvYmplY3RzIHdpdGggY3VzdG9tIGRyb3AgbG9naWMuXG4rLy8hXG4rLy8hIFRoZXNlIHBvaW50ZXIgdHlwZXMgYXJlIHVzZWZ1bCBmb3IgQy1hbGxvY2F0ZWQgb2JqZWN0cyB3aGljaCBieSBBUEktY29udHJhY3RcbisvLyEgYXJlIG93bmVkIGJ5IFJ1c3QsIGJ1dCBuZWVkIHRvIGJlIGZyZWVkIHRocm91Z2ggdGhlIEMgQVBJLlxuK1xuK3VzZSBjb3JlOjp7XG4rICAgIG1lbTo6TWFudWFsbHlEcm9wLFxuKyAgICBvcHM6OntcbisgICAgICAgIERlcmVmLFxuKyAgICAgICAgRGVyZWZNdXQsIC8vXG4rICAgIH0sXG4rICAgIHBpbjo6UGluLFxuKyAgICBwdHI6Ok5vbk51bGwsIC8vXG4rfTtcbit1c2Uga2VybmVsOjp7XG4rICAgIHN5bmM6OmFyZWY6OkFSZWYsXG4rICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvL1xuK307XG4rXG4rdXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlO1xuK1xuKy8vLyBUeXBlcyB0aGF0IHNwZWNpZnkgdGhlaXIgb3duIHdheSBvZiBwZXJmb3JtaW5nIGFsbG9jYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUeXBpY2FsbHksIHRoaXMgdHJhaXRcbisvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLlxuKy8vL1xuKy8vLyBJbXBsZW1lbnRpbmcgdGhpcyB0cmFpdCBhbGxvd3MgdHlwZXMgdG8gYmUgcmVmZXJlbmNlZCB2aWEgdGhlIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0gcG9pbnRlciB0eXBlLlxuKy8vLyAgLSBUaGlzIGlzIHVzZWZ1bCB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0byB0aWUgdGhlIGxpZmV0aW1lIG9mIGFuIG9iamVjdCByZWZlcmVuY2UgdG8gYW4gb3duZWRcbisvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLlxuKy8vLyAgLSBbYE93bmFibGVgXSB0eXBlcyBjYW4gZGVmaW5lIGN1c3RvbSBkcm9wIGxvZ2ljIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgb3duZWQgcmVmZXJlbmNlXG4rLy8vICAgIG9mIHR5cGUgW2BPd25lZFx1MDAzY19cdTAwM2VgXSBwb2ludGluZyB0byB0aGUgb2JqZWN0IGlzIGRyb3BwZWQuXG4rLy8vXG4rLy8vIE5vdGU6IFRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnRpbmcsIGJlY2F1c2UgaXRcbisvLy8gcmVwcmVzZW50cyBhIHVuaXF1ZSwgb3duZWQgcmVmZXJlbmNlLiBJZiByZWZlcmVuY2UgY291bnRpbmcgKG9uIHRoZSBSdXN0IHNpZGUpIGlzIHJlcXVpcmVkLFxuKy8vLyBbYFJlZkNvdW50ZWRgXSBzaG91bGQgYmUgaW1wbGVtZW50ZWQuIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaWYgY29udmVyc2lvblxuKy8vLyBiZXR3ZWVuIHVuaXF1ZSBhbmQgc2hhcmVkIChyZWZlcmVuY2UgY291bnRlZCkgb3duZXJzaGlwIGlzIG5lZWRlZC5cbisvLy9cbisvLy8gIyBFeGFtcGxlc1xuKy8vL1xuKy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGggW2BPd25lZGBdIGxvb2tzIGxpa2VcbisvLy8gdGhpczpcbisvLy9cbisvLy8gYGBgXG4rLy8vICMgIyFbZXhwZWN0KGNsaXBweTo6ZGlzYWxsb3dlZF9uYW1lcyldXG4rLy8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7XG4rLy8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcbisvLy8gIyB1c2Uga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jaztcbisvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTtcbisvLy8gIyB1c2Uga2VybmVsOjp0eXBlczo6e093bmVkLCBPd25hYmxlfTtcbisvLy9cbisvLy8gLy8gTGV0J3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLlxuKy8vLyBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrISB7XG4rLy8vICAgICAvLyBTQUZFVFk6IHdlIGNhbGwgYGluaXQoKWAgcmlnaHQgYmVsb3csIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLlxuKy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXhcdTAwM2N1c2l6ZVx1MDAzZSA9IDA7XG4rLy8vIH1cbisvLy8gLy8gU0FGRVRZOiBXZSBjYWxsIGBpbml0KClgIG9ubHkgb25jZSwgaGVyZS5cbisvLy8gdW5zYWZlIHsgRk9PX0FMTE9DX0NPVU5ULmluaXQoKSB9O1xuKy8vL1xuKy8vLyBzdHJ1Y3QgRm9vO1xuKy8vL1xuKy8vLyBpbXBsIEZvbyB7XG4rLy8vICAgICBmbiBuZXcoKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4rLy8vICAgICAgICAgLy8gV2UgYXJlIGp1c3QgdXNpbmcgYSBgS0JveGAgaGVyZSB0byBoYW5kbGUgdGhlIGFjdHVhbCBhbGxvY2F0aW9uLCBhcyBvdXIgYEZvb2AgaXNcbisvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcbisvLy8gICAgICAgICAgICAgRm9vIHt9LFxuKy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCxcbisvLy8gICAgICAgICApPztcbisvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xuKy8vLyAgICAgICAgIC8vIENvdW50IG5ldyBhbGxvY2F0aW9uXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgKz0gMTtcbisvLy8gICAgICAgICAvLyBTQUZFVFk6XG4rLy8vICAgICAgICAgLy8gIC0gV2UganVzdCBhbGxvY2F0ZWQgdGhlIGBTZWxmYCwgdGh1cyBpdCBpcyB2YWxpZCBhbmQgd2Ugb3duIGl0LlxuKy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuXG4rLy8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XG4rLy8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFx1MDAzY1NlbGZcdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZS4gV2UgY2FuIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSwgYXNcbisvLy8gICAgICAgICAvLyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4rLy8vICAgICAgICAgZHJvcCh1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9KTtcbisvLy8gICAgICAgICAvLyBDb3VudCByZWxlYXNlZCBhbGxvY2F0aW9uXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgLT0gMTtcbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyB7XG4rLy8vICAgIGxldCBmb28gPSBGb286Om5ldygpPztcbisvLy8gICAgYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAxKTtcbisvLy8gfVxuKy8vLyAvLyBgZm9vYCBpcyBvdXQgb2Ygc2NvcGUgbm93LCBzbyB3ZSBleHBlY3Qgbm8gbGl2ZSBhbGxvY2F0aW9ucy5cbisvLy8gYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAwKTtcbisvLy8gIyBPazo6XHUwMDNjKCksIEVycm9yXHUwMDNlKCgpKVxuKy8vLyBgYGBcbitwdWIgdHJhaXQgT3duYWJsZSB7XG4rICAgIC8vLyBUZWFyIGRvd24gdGhpcyBgT3duYWJsZWAuXG4rICAgIC8vL1xuKyAgICAvLy8gSW1wbGVtZW50ZXJzIG9mIGBPd25hYmxlYCBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2xlYW4gdXAgdGhlIHVzZSBvZiBgU2VsZmAuIFRoaXMgY2FuXG4rICAgIC8vLyBpbmNsdWRlIGZyZWVpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuKyAgICAvLy9cbisgICAgLy8vICMgU2FmZXR5XG4rICAgIC8vL1xuKyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXkgaGF2ZSBleGNsdXNpdmUgb3duZXJzaGlwIG9mIHRoZSBgU2VsZmAgcG9pbnRlZCB0byBieSBgdGhpc2AsXG4rICAgIC8vLyBhbmQgdGhhdCB0aGlzIG93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgYHJlbGVhc2VgIG1ldGhvZC4gYHRoaXNgIG11c3Qgbm90IGJlIHVzZWRcbisgICAgLy8vIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFzIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGZyZWVkLlxuKyAgICAvLy9cbisgICAgLy8vIGB0aGlzYCBpcyBwaW5uZWQgYW5kIGltcGxlbWVudGVycyBvZiB0aGlzIG1ldGhvZCBtdXN0IG9ic2VydmUgdGhpcyBjb25zdHJhaW50LlxuKyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSk7XG4rfVxuK1xuKy8vLyBBIG11dGFibGUgcmVmZXJlbmNlIHRvIGFuIG93bmVkIGBUYC5cbisvLy9cbisvLy8gVGhlIFtgT3duYWJsZWBdIGlzIGF1dG9tYXRpY2FsbHkgZnJlZWQgb3IgcmVsZWFzZWQgd2hlbiBhbiBpbnN0YW5jZSBvZiBbYE93bmVkYF0gaXNcbisvLy8gZHJvcHBlZC5cbisvLy9cbisvLy8gIyBJbnZhcmlhbnRzXG4rLy8vXG4rLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWRcdTAwM2NUXHUwMDNlYCBleGNsdXNpdmVseSBvd25zIHRoZSB1bmRlcmx5aW5nIGBUYC5cbisvLy8gLSBUaGUgYFRgIHZhbHVlIGlzIHBpbm5lZC5cbitwdWIgc3RydWN0IE93bmVkXHUwMDNjVDogT3duYWJsZVx1MDAzZSB7XG4rICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4rfVxuK1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFtgT3duZWRgXS5cbisgICAgLy8vXG4rICAgIC8vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIG92ZXIgb3duZXJzaGlwIG9mIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbisgICAgLy8vXG4rICAgIC8vLyAjIFNhZmV0eVxuKyAgICAvLy9cbisgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdDpcbisgICAgLy8vIC0gYHB0cmAgcG9pbnRzIHRvIGEgdmFsaWQgaW5zdGFuY2Ugb2YgYFRgLlxuKyAgICAvLy8gLSBVbnRpbCBgVDo6cmVsZWFzZWAgaXMgY2FsbGVkLCB0aGUgcmV0dXJuZWQgYE93bmVkXHUwMDNjVFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXG4rICAgICNbaW5saW5lXVxuKyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4rICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLlxuKyAgICAgICAgLy8gV2UgdHJlYXQgYFRgIGFzIHBpbm5lZCBmcm9tIG5vdyBvbi5cbisgICAgICAgIFNlbGYgeyBwdHIgfVxuKyAgICB9XG4rXG4rICAgIC8vLyBDb25zdW1lcyB0aGUgW2BPd25lZGBdLCByZXR1cm5pbmcgYSByYXcgcG9pbnRlci5cbisgICAgLy8vXG4rICAgIC8vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGRyb3AgdGhlIHVuZGVybHlpbmcgYFRgLiBXaGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgb3duZXJzaGlwIG9mIHRoZVxuKyAgICAvLy8gdW5kZXJseWluZyBgVGAgaXMgd2l0aCB0aGUgY2FsbGVyLlxuKyAgICAvLy9cbisgICAgLy8vIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgcG9pbnRlciBpcyBwaW5uZWQuXG4rICAgICNbaW5saW5lXVxuKyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cdTAwM2UgTm9uTnVsbFx1MDAzY1RcdTAwM2Uge1xuKyAgICAgICAgTWFudWFsbHlEcm9wOjpuZXcobWUpLnB0clxuKyAgICB9XG4rXG4rICAgIC8vLyBHZXQgYSBwaW5uZWQgbXV0YWJsZSByZWZlcmVuY2UgdG8gdGhlIGRhdGEgb3duZWQgYnkgdGhpcyBgT3duZWRcdTAwM2NUXHUwMDNlYC5cbisgICAgI1tpbmxpbmVdXG4rICAgIHB1YiBmbiBhc19waW5fbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFBpblx1MDAzY1x1MDAyNm11dCBUXHUwMDNlIHtcbisgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5XG4rICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cbisgICAgICAgIGxldCB1bnBpbm5lZCA9IHVuc2FmZSB7IHNlbGYucHRyLmFzX211dCgpIH07XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuXG4rICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQodW5waW5uZWQpIH1cbisgICAgfVxuK31cbitcbisvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBhbiBbYE93bmVkXHUwMDNjVFx1MDAzZWBdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU2VuZGBdLFxuKy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BPd25lZFx1MDAzY1RcdTAwM2VgXSBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgdGhlIGBUYC5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGUgKyBTZW5kXHUwMDNlIFNlbmQgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7fVxuK1xuKy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIFtgXHUwMDI2T3duZWRcdTAwM2NUXHUwMDNlYF0gdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgW2BTeW5jYF0sXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYFx1MDAyNk93bmVkXHUwMDNjVFx1MDAzZWBdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFx1MDAyNlRgLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3duYWJsZSArIFN5bmNcdTAwM2UgU3luYyBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHt9XG4rXG4raW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRGVyZWYgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgIHR5cGUgVGFyZ2V0ID0gVDtcbitcbisgICAgI1tpbmxpbmVdXG4rICAgIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbisgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLlxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfVxuKyAgICB9XG4rfVxuK1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlICsgVW5waW5cdTAwM2UgRGVyZWZNdXQgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBkZXJlZl9tdXQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XG4rICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCwgYW5kIHRoYXQgd2UgY2FuIHNhZmVseVxuKyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXG4rICAgICAgICB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9XG4rICAgIH1cbit9XG4rXG4raW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRHJvcCBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbisgICAgI1tpbmxpbmVdXG4rICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgZXhpc3RlbmNlIG9mIGBcdTAwMjZtdXQgc2VsZmAgd2UgZXhjbHVzaXZlbHkgb3duIGBzZWxmYCBhbmQgdGhlIHVuZGVybHlpbmcgYFRgLiBBc1xuKyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLlxuKyAgICAgICAgdW5zYWZlIHsgVDo6cmVsZWFzZShzZWxmLnB0cikgfTtcbisgICAgfVxuK31cbitcbisvLyBTQUZFVFk6IFdlIGRlcml2ZSB0aGUgcG9pbnRlciB0byBgVGAgZnJvbSBhIHZhbGlkIGBUYCwgc28gdGhlIHJldHVybmVkXG4rLy8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBGb3JlaWduT3duYWJsZSBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbisgICAgY29uc3QgRk9SRUlHTl9BTElHTjogdXNpemUgPSBjb3JlOjptZW06OmFsaWduX29mOjpcdTAwM2NUXHUwMDNlKCk7XG4rXG4rICAgIHR5cGUgQm9ycm93ZWRcdTAwM2MnYVx1MDAzZVxuKyAgICAgICAgPSBcdTAwMjYnYSBUXG4rICAgIHdoZXJlXG4rICAgICAgICBTZWxmOiAnYTtcbisgICAgdHlwZSBCb3Jyb3dlZE11dFx1MDAzYydhXHUwMDNlXG4rICAgICAgICA9IFBpblx1MDAzY1x1MDAyNidhIG11dCBUXHUwMDNlXG4rICAgIHdoZXJlXG4rICAgICAgICBTZWxmOiAnYTtcbitcbisgICAgI1tpbmxpbmVdXG4rICAgIGZuIGludG9fZm9yZWlnbihzZWxmKSAtXHUwMDNlICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCB7XG4rICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpXG4rICAgIH1cbitcbisgICAgI1tpbmxpbmVdXG4rICAgIHVuc2FmZSBmbiBmcm9tX2ZvcmVpZ24ocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZiB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgY2FtZSBmcm9tIGBpbnRvX2ZvcmVpZ25gIGFuZCBjYW5ub3QgYmUgbnVsbC5cbisgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHB0ci5jYXN0KCkpIH07XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIHdhcyByZXR1cm5lZCBieSBgaW50b19mb3JlaWduYCwgd2hpY2ggZ2F2ZVxuKyAgICAgICAgLy8gdXAgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiBhIHZhbGlkLCBwaW5uZWQgYFRgOyB3ZSByZXRha2UgdGhhdCBvd25lcnNoaXAgaGVyZS5cbisgICAgICAgIHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwdHIpIH1cbisgICAgfVxuK1xuKyAgICAjW2lubGluZV1cbisgICAgdW5zYWZlIGZuIGJvcnJvd1x1MDAzYydhXHUwMDNlKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXHUwMDNlIFNlbGY6OkJvcnJvd2VkXHUwMDNjJ2FcdTAwM2Uge1xuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGFcbisgICAgICAgIC8vIHJlZmVyZW5jZSBmb3IgYCdhYC5cbisgICAgICAgIHVuc2FmZSB7IFx1MDAyNipwdHIuY2FzdCgpIH1cbisgICAgfVxuK1xuKyAgICAjW2lubGluZV1cbisgICAgdW5zYWZlIGZuIGJvcnJvd19tdXRcdTAwM2MnYVx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVx1MDAzZSBTZWxmOjpCb3Jyb3dlZE11dFx1MDAzYydhXHUwMDNlIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhXG4rICAgICAgICAvLyB1bmlxdWUgcmVmZXJlbmNlIGZvciBgJ2FgLlxuKyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgXHUwMDI2bXV0ICpwdHIuY2FzdCgpIH07XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIG5ldmVyIG1vdmUgb3V0IG9mIGlubmVyLCBhbmQgd2UgZG8gbm90IGhhbmQgb3V0IG11dGFibGVcbisgICAgICAgIC8vIHJlZmVyZW5jZXMgd2hlbiBgVDogIVVucGluYC5cbisgICAgICAgIHVuc2FmZSB7IFBpbjo6bmV3X3VuY2hlY2tlZChpbm5lcikgfVxuKyAgICB9XG4rfVxuK1xuKy8vLyBBIHRyYWl0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHdyYXBwZWQgaW4gZWl0aGVyIG9uZSBvZiB0aGUgcmVmZXJlbmNlIHR5cGVzIFtgT3duZWRgXSBhbmRcbisvLy8gW2BBUmVmYF0uXG4rLy8vXG4rLy8vICMgRXhhbXBsZXNcbisvLy9cbisvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlUmVmQ291bnRlZGBdLCBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGhcbisvLy8gW2BBUmVmYF0gYW5kIFtgT3duZWRgXSBsb29rcyBsaWtlIHRoaXM6XG4rLy8vXG4rLy8vIGBgYFxuKy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxuKy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsO1xuKy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4rLy8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XG4rLy8vICMgdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9O1xuKy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGUsIE93bmFibGVSZWZDb3VudGVkfTtcbisvLy9cbisvLy8gLy8gQW4gaW50ZXJuYWxseSByZWZjb3VudGVkIHN0cnVjdCBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy5cbisvLy8gLy9cbisvLy8gLy8gIyBJbnZhcmlhbnRzXG4rLy8vIC8vXG4rLy8vIC8vIC0gYHJlZmNvdW50YCBpcyBhbHdheXMgbm9uLXplcm8gZm9yIGEgdmFsaWQgb2JqZWN0LlxuKy8vLyAvLyAtIGByZWZjb3VudGAgaXMgXHUwMDNlMSBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIFJ1c3QgcmVmZXJlbmNlIHRvIGl0LlxuKy8vLyAvL1xuKy8vLyBzdHJ1Y3QgRm9vIHtcbisvLy8gICAgIHJlZmNvdW50OiBDZWxsXHUwMDNjdXNpemVcdTAwM2UsXG4rLy8vIH1cbisvLy9cbisvLy8gaW1wbCBGb28ge1xuKy8vLyAgICAgZm4gbmV3KCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuKy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXG4rLy8vICAgICAgICAgLy8gbm90IGFjdHVhbGx5IGEgQy1hbGxvY2F0ZWQgb2JqZWN0LlxuKy8vLyAgICAgICAgIC8vIElOVkFSSUFOVDogV2UgaW5pdGlhbGl6ZSBgcmVmY291bnRgIHRvIDEsIHNhdGlzZnlpbmcgdGhlIGludmFyaWFudHMuXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcbisvLy8gICAgICAgICAgICAgRm9vIHtcbisvLy8gICAgICAgICAgICAgICAgIHJlZmNvdW50OiBDZWxsOjpuZXcoMSksXG4rLy8vICAgICAgICAgICAgIH0sXG4rLy8vICAgICAgICAgICAgIGZsYWdzOjpHRlBfS0VSTkVMLFxuKy8vLyAgICAgICAgICk/O1xuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjppbnRvX25vbl9udWxsKHJlc3VsdCk7XG4rLy8vICAgICAgICAgLy8gU0FGRVRZOlxuKy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cbisvLy8gICAgICAgICAvLyAgLSBXZSBjYW4gdHJhbnNmZXIgdGhpcyBvd25lcnNoaXAgdG8gdGhlIGBmcm9tX3Jhd2AgbWV0aG9kLlxuKy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8gLy8gU0FGRVRZOiBXZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBlYWNoIHRpbWUgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBvbmx5IGZyZWVcbisvLy8gLy8gdGhlIGBGb29gIHdoZW4gdGhlIHJlZmNvdW50IHJlYWNoZXMgemVyby5cbisvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRm9vIHtcbisvLy8gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuKy8vLyAgICAgICAgIHNlbGYucmVmY291bnQucmVwbGFjZShzZWxmLnJlZmNvdW50LmdldCgpICsgMSk7XG4rLy8vICAgICB9XG4rLy8vXG4rLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZih0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogQnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8sXG4rLy8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLlxuKy8vLyAgICAgICAgIGxldCByZWZjb3VudCA9IHVuc2FmZSB7IFx1MDAyNnRoaXMuYXNfcmVmKCkucmVmY291bnQgfTtcbisvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxO1xuKy8vLyAgICAgICAgIGlmIG5ld19yZWZjb3VudCA9PSAwIHtcbisvLy8gICAgICAgICAgICAgLy8gVGhlIGBGb29gIHdpbGwgYmUgZHJvcHBlZCB3aGVuIGBLQm94YCBnb2VzIG91dCBvZiBzY29wZS5cbisvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94XHUwMDNjRm9vXHUwMDNlYF0gaXMgc3RpbGwgYWxpdmUgYXMgdGhlIG9sZCByZWZjb3VudCBpcyAxLiBXZSBjYW4gcGFzc1xuKy8vLyAgICAgICAgICAgICAvLyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdIGFzIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbixcbisvLy8gICAgICAgICAgICAgLy8gdGhlIGBTZWxmYCB3aWxsIG5vIGxvbmdlciBiZSB1c2VkIGJ5IHRoZSBjYWxsZXIuXG4rLy8vICAgICAgICAgICAgIHVuc2FmZSB7IEtCb3g6OmZyb21fcmF3KHRoaXMuYXNfcHRyKCkpIH07XG4rLy8vICAgICAgICAgfSBlbHNlIHtcbisvLy8gICAgICAgICAgICAgcmVmY291bnQucmVwbGFjZShuZXdfcmVmY291bnQpO1xuKy8vLyAgICAgICAgIH1cbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyBpbXBsIE93bmFibGVSZWZDb3VudGVkIGZvciBGb28ge1xuKy8vLyAgICAgZm4gdHJ5X2Zyb21fc2hhcmVkKHRoaXM6IEFSZWZcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQVJlZlx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuKy8vLyAgICAgICAgIGlmIHRoaXMucmVmY291bnQuZ2V0KCkgPT0gMSB7XG4rLy8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIGBGb29gIGlzIHN0aWxsIGFsaXZlIGFuZCBoYXMgbm8gb3RoZXIgUnVzdCByZWZlcmVuY2VzIGFzIHRoZSByZWZjb3VudFxuKy8vLyAgICAgICAgICAgICAvLyBpcyAxLlxuKy8vLyAgICAgICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcoQVJlZjo6aW50b19yYXcodGhpcykpIH0pXG4rLy8vICAgICAgICAgfSBlbHNlIHtcbisvLy8gICAgICAgICAgICAgRXJyKHRoaXMpXG4rLy8vICAgICAgICAgfVxuKy8vLyAgICAgfVxuKy8vL1xuKy8vLyAgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIEFSZWZcdTAwM2NTZWxmXHUwMDNlIHtcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IEFuIGBPd25lZFx1MDAzY0Zvb1x1MDAzZWAgaG9sZHMgdGhlIHVuaXF1ZSByZWZlcmVuY2UgKHJlZmNvdW50IDEpLCB3aGljaCB3ZSB0cmFuc2ZlciB0b1xuKy8vLyAgICAgICAgIC8vIHRoZSBuZXcgYEFSZWZgLlxuKy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfVxuKy8vLyAgICAgfVxuKy8vLyB9XG4rLy8vXG4rLy8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcbisvLy8gICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4rLy8vICAgICAgICAgLy8gU0FGRVRZOiBVc2luZyBgZGVjX3JlZigpYCBmcm9tIFtgUmVmQ291bnRlZGBdIHRvIHJlbGVhc2UgaXMgb2theSwgYXMgdGhlIHJlZmNvdW50IGlzXG4rLy8vICAgICAgICAgLy8gYWx3YXlzIDEgZm9yIGFuIFtgT3duZWRcdTAwM2NGb29cdTAwM2VgXS5cbisvLy8gICAgICAgICB1bnNhZmUgeyBGb286OmRlY19yZWYodGhpcykgfTtcbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyBsZXQgZm9vID0gRm9vOjpuZXcoKT87XG4rLy8vIGxldCBmb28gPSBBUmVmOjpmcm9tKGZvbyk7XG4rLy8vIHtcbisvLy8gICAgIGxldCBiYXIgPSBmb28uY2xvbmUoKTtcbisvLy8gICAgIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGJhcikuaXNfZXJyKCkpO1xuKy8vLyB9XG4rLy8vIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGZvbykuaXNfb2soKSk7XG4rLy8vICMgT2s6Olx1MDAzYygpLCBFcnJvclx1MDAzZSgoKSlcbisvLy8gYGBgXG4rcHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICsgT3duYWJsZSArIFNpemVkIHtcbisgICAgLy8vIENoZWNrcyBpZiB0aGUgW2BBUmVmYF0gaXMgdW5pcXVlIGFuZCBjb252ZXJ0cyBpdCB0byBhbiBbYE93bmVkYF0gaWYgdGhhdCBpcyB0aGUgY2FzZS5cbisgICAgLy8vIE90aGVyd2lzZSBpdCByZXR1cm5zIGFnYWluIGFuIFtgQVJlZmBdIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0LlxuKyAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZlx1MDAzY1NlbGZcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlLCBBUmVmXHUwMDNjU2VsZlx1MDAzZVx1MDAzZTtcbitcbisgICAgLy8vIENvbnZlcnRzIHRoZSBbYE93bmVkYF0gaW50byBhbiBbYEFSZWZgXS5cbisgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIEFSZWZcdTAwM2NTZWxmXHUwMDNlO1xuK31cbitcbitpbXBsXHUwMDNjVDogT3duYWJsZVJlZkNvdW50ZWRcdTAwM2UgVHJ5RnJvbVx1MDAzY0FSZWZcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuKyAgICB0eXBlIEVycm9yID0gQVJlZlx1MDAzY1RcdTAwM2U7XG4rICAgIC8vLyBUcmllcyB0byBjb252ZXJ0IHRoZSBbYEFSZWZgXSB0byBhbiBbYE93bmVkYF0gYnkgY2FsbGluZ1xuKyAgICAvLy8gW2B0cnlfZnJvbV9zaGFyZWQoKWBdKE93bmFibGVSZWZDb3VudGVkOjp0cnlfZnJvbV9zaGFyZWQpLiBJbiBjYXNlIHRoZSBbYEFSZWZgXSBpcyBub3RcbisgICAgLy8vIHVuaXF1ZSwgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC5cbisgICAgI1tpbmxpbmVdXG4rICAgIGZuIHRyeV9mcm9tKGI6IEFSZWZcdTAwM2NUXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjVFx1MDAzZSwgU2VsZjo6RXJyb3JcdTAwM2Uge1xuKyAgICAgICAgVDo6dHJ5X2Zyb21fc2hhcmVkKGIpXG4rICAgIH1cbit9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGFnZS5ycyBiL3J1c3Qva2VybmVsL3BhZ2UucnNcbmluZGV4IDhhZmZkODI2Mjg5MWJhLi5jODhmZGEwOWVhZDVhYSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BhZ2UucnNcbisrKyBiL3J1c3Qva2VybmVsL3BhZ2UucnNcbkBAIC0xMiwxNiArMTIsMTYgQEBcbiAgICAgICAgIGNvZGU6OiosXG4gICAgICAgICBSZXN1bHQsIC8vXG4gICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBPcGFxdWUsXG4rICAgICAgICBPd25hYmxlLFxuKyAgICAgICAgT3duZWQsIC8vXG4rICAgIH0sXG4gICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlciwgLy9cbiB9O1xuLXVzZSBjb3JlOjp7XG4tICAgIG1hcmtlcjo6UGhhbnRvbURhdGEsXG4tICAgIG1lbTo6TWFudWFsbHlEcm9wLFxuLSAgICBvcHM6OkRlcmVmLFxuLSAgICBwdHI6Ontcbi0gICAgICAgIHNlbGYsXG4tICAgICAgICBOb25OdWxsLCAvL1xuLSAgICB9LCAvL1xuK3VzZSBjb3JlOjpwdHI6OntcbisgICAgc2VsZixcbisgICAgTm9uTnVsbCwgLy9cbiB9O1xuIFxuIC8vLyBBIGJpdHdpc2Ugc2hpZnQgZm9yIHRoZSBwYWdlIHNpemUuXG5AQCAtNjUsOTMgKzY1LDI5IEBAIHB1YiBjb25zdCBmbiBwYWdlX2FsaWduKGFkZHI6IHVzaXplKSAtXHUwMDNlIE9wdGlvblx1MDAzY3VzaXplXHUwMDNlIHtcbiAgICAgU29tZShzdW0gXHUwMDI2IFBBR0VfTUFTSylcbiB9XG4gXG4tLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS5cbi0vLy9cbi0vLy8gVGhpcyB0eXBlIHByb3ZpZGVzIGEgYm9ycm93ZWQgdmVyc2lvbiBvZiBhIFtgUGFnZWBdIHRoYXQgaXMgb3duZWQgYnkgc29tZSBvdGhlciBlbnRpdHksIGUuZy4gYVxuLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uXG4tLy8vXG4tLy8vICMgRXhhbXBsZVxuLS8vL1xuLS8vLyBgYGBcbi0vLy8gIyB1c2Uga2VybmVsOjp7YmluZGluZ3MsIHByZWx1ZGU6Oip9O1xuLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9O1xuLS8vLyAjIHVzZSBjb3JlOjp7bWVtOjpNYXliZVVuaW5pdCwgcHRyLCBwdHI6Ok5vbk51bGwgfTtcbi0vLy9cbi0vLy8gZm4gYm9ycm93X3BhZ2VcdTAwM2MnYVx1MDAzZSh2Ym94OiBcdTAwMjYnYSBtdXQgVkJveFx1MDAzY01heWJlVW5pbml0XHUwMDNjW3U4OyBQQUdFX1NJWkVdXHUwMDNlXHUwMDNlKSAtXHUwMDNlIEJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlIHtcbi0vLy8gICAgIGxldCBwdHIgPSBwdHI6OmZyb21fcmVmKFx1MDAyNioqdmJveCk7XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6XG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuXG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGBzZWxmYC5cbi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuLS8vLyB9XG4tLy8vXG4tLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6Olx1MDAzY1t1ODsgUEFHRV9TSVpFXVx1MDAzZTo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87XG4tLy8vIGxldCBwYWdlID0gYm9ycm93X3BhZ2UoXHUwMDI2bXV0IHZib3gpO1xuLS8vL1xuLS8vLyAvLyBTQUZFVFk6IFRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgcmVhZCBvciB3cml0ZSB0byB0aGlzIHBhZ2UuXG4tLy8vIHVuc2FmZSB7IHBhZ2UuZmlsbF96ZXJvX3JhdygwLCBQQUdFX1NJWkUpPyB9O1xuLS8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4tLy8vIGBgYFxuLS8vL1xuLS8vLyAjIEludmFyaWFudHNcbi0vLy9cbi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCdhYC5cbi0vLy9cbi0vLy8gW2BWQm94YF06IGtlcm5lbDo6YWxsb2M6OlZCb3hcbi0vLy8gW2BWbWFsbG9jYF06IGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1xuLXB1YiBzdHJ1Y3QgQm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2UoTWFudWFsbHlEcm9wXHUwMDNjUGFnZVx1MDAzZSwgUGhhbnRvbURhdGFcdTAwM2NcdTAwMjYnYSBQYWdlXHUwMDNlKTtcbi1cbi1pbXBsXHUwMDNjJ2FcdTAwM2UgQm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2Uge1xuLSAgICAvLy8gQ29uc3RydWN0cyBhIFtgQm9ycm93ZWRQYWdlYF0gZnJvbSBhIHJhdyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC5cbi0gICAgLy8vXG4tICAgIC8vLyAjIFNhZmV0eVxuLSAgICAvLy9cbi0gICAgLy8vIC0gYHB0cmAgbXVzdCBwb2ludCB0byBhIHZhbGlkIGBiaW5kaW5nczo6cGFnZWAuXG4tICAgIC8vLyAtIGBwdHJgIG11c3QgcmVtYWluIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIGAnYWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4tICAgICAgICBsZXQgcGFnZSA9IFBhZ2UgeyBwYWdlOiBwdHIgfTtcbi1cbi0gICAgICAgIC8vIElOVkFSSUFOVDogVGhlIHNhZmV0eSByZXF1aXJlbWVudHMgZ3VhcmFudGVlIHRoYXQgYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWVcbi0gICAgICAgIC8vIGAnYWAuXG4tICAgICAgICBTZWxmKE1hbnVhbGx5RHJvcDo6bmV3KHBhZ2UpLCBQaGFudG9tRGF0YSlcbi0gICAgfVxuLX1cbi1cbi1pbXBsXHUwMDNjJ2FcdTAwM2UgRGVyZWYgZm9yIEJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlIHtcbi0gICAgdHlwZSBUYXJnZXQgPSBQYWdlO1xuLVxuLSAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4tICAgICAgICBcdTAwMjZzZWxmLjBcbi0gICAgfVxuLX1cbi1cbi0vLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gaW1wbGVtZW50YXRpb24gb2Zcbi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbisvLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcywgc3VjaCBhc1xuKy8vLyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbiBwdWIgdHJhaXQgQXNQYWdlSXRlciB7XG4gICAgIC8vLyBUaGUgW2BJdGVyYXRvcmBdIHR5cGUsIGUuZy4gW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuXG4tICAgIHR5cGUgSXRlclx1MDAzYydhXHUwMDNlOiBJdGVyYXRvclx1MDAzY0l0ZW0gPSBCb3Jyb3dlZFBhZ2VcdTAwM2MnYVx1MDAzZVx1MDAzZVxuKyAgICB0eXBlIEl0ZXJcdTAwM2MnYVx1MDAzZTogSXRlcmF0b3JcdTAwM2NJdGVtID0gXHUwMDI2J2EgUGFnZVx1MDAzZVxuICAgICB3aGVyZVxuICAgICAgICAgU2VsZjogJ2E7XG4gXG4tICAgIC8vLyBSZXR1cm5zIGFuIFtgSXRlcmF0b3JgXSBvZiBbYEJvcnJvd2VkUGFnZWBdIGl0ZW1zIG92ZXIgYWxsIHBhZ2VzIG93bmVkIGJ5IGBzZWxmYC5cbisgICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuICAgICBmbiBwYWdlX2l0ZXIoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgU2VsZjo6SXRlclx1MDAzYydfXHUwMDNlO1xuIH1cbiBcbi0vLy8gQSBwb2ludGVyIHRvIGEgcGFnZSB0aGF0IG93bnMgdGhlIHBhZ2UgYWxsb2NhdGlvbi5cbisvLy8gQSBgc3RydWN0IHBhZ2VgLlxuKy8vL1xuKy8vLyBBIGBQYWdlYCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEgc2hhcmVkIHJlZmVyZW5jZSBvciB0aHJvdWdoIGFuIG93bmluZyBbYE93bmVkXHUwMDNjUGFnZVx1MDAzZWBdOyB0aGUgbGF0dGVyXG4rLy8vIGZyZWVzIHRoZSBwYWdlIGFsbG9jYXRpb24gd2hlbiBpdCBpcyBkcm9wcGVkLlxuIC8vL1xuIC8vLyAjIEludmFyaWFudHNcbiAvLy9cbi0vLy8gVGhlIHBvaW50ZXIgaXMgdmFsaWQsIGFuZCBoYXMgb3duZXJzaGlwIG92ZXIgdGhlIHBhZ2UuXG4rLy8vIFRoZSBgUGFnZWAgaXMgYmFja2VkIGJ5IGEgdmFsaWQgYHN0cnVjdCBwYWdlYC5cbisjW3JlcHIodHJhbnNwYXJlbnQpXVxuIHB1YiBzdHJ1Y3QgUGFnZSB7XG4tICAgIHBhZ2U6IE5vbk51bGxcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSxcbisgICAgcGFnZTogT3BhcXVlXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UsXG4gfVxuIFxuIC8vIFNBRkVUWTogUGFnZXMgaGF2ZSBubyBsb2dpYyB0aGF0IHJlbGllcyBvbiB0aGVtIHN0YXlpbmcgb24gYSBnaXZlbiB0aHJlYWQsIHNvIG1vdmluZyB0aGVtIGFjcm9zc1xuQEAgLTE4NSwxOSArMTIxLDIwIEBAIGltcGwgUGFnZSB7XG4gICAgIC8vLyAjIE9rOjpcdTAwM2MoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvclx1MDAzZSgoKSlcbiAgICAgLy8vIGBgYFxuICAgICAjW2lubGluZV1cbi0gICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGYsIEFsbG9jRXJyb3JcdTAwM2Uge1xuKyAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlLCBBbGxvY0Vycm9yXHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgZ2ZwX2ZsYWdzYCwgdGhpcyBjYWxsIG1heSBzbGVlcC4gT3RoZXIgdGhhbiB0aGF0LCBpdFxuICAgICAgICAgLy8gaXMgYWx3YXlzIHNhZmUgdG8gY2FsbCB0aGlzIG1ldGhvZC5cbiAgICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OmFsbG9jX3BhZ2VzKGZsYWdzLmFzX3JhdygpLCAwKSB9O1xuICAgICAgICAgbGV0IHBhZ2UgPSBOb25OdWxsOjpuZXcocGFnZSkub2tfb3IoQWxsb2NFcnJvcik/O1xuLSAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XG4tICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgUGFnZWAgb2JqZWN0LlxuLSAgICAgICAgT2soU2VsZiB7IHBhZ2UgfSlcbisgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxuKyAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYE93bmVkXHUwMDNjUGFnZVx1MDAzZWAgb2JqZWN0LlxuKyAgICAgICAgLy8gU2luY2UgYFBhZ2VgIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcG9pbnRlciBkaXJlY3RseS5cbisgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwYWdlLmNhc3QoKSkgfSlcbiAgICAgfVxuIFxuICAgICAvLy8gUmV0dXJucyBhIHJhdyBwb2ludGVyIHRvIHRoZSBwYWdlLlxuICAgICBwdWIgZm4gYXNfcHRyKFx1MDAyNnNlbGYpIC1cdTAwM2UgKm11dCBiaW5kaW5nczo6cGFnZSB7XG4tICAgICAgICBzZWxmLnBhZ2UuYXNfcHRyKClcbisgICAgICAgIE9wYXF1ZTo6Y2FzdF9pbnRvKFx1MDAyNnNlbGYucGFnZSlcbiAgICAgfVxuIFxuICAgICAvLy8gR2V0IHRoZSBub2RlIGlkIGNvbnRhaW5pbmcgdGhpcyBwYWdlLlxuQEAgLTIwNiw2ICsxNDMsMjAgQEAgcHViIGZuIG5pZChcdTAwMjZzZWxmKSAtXHUwMDNlIGkzMiB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGFnZV90b19uaWQoc2VsZi5hc19wdHIoKSkgfVxuICAgICB9XG4gXG4rICAgIC8vLyBDcmVhdGUgYSBgXHUwMDI2UGFnZWAgZnJvbSBhIHJhdyBgc3RydWN0IHBhZ2VgIHBvaW50ZXIuXG4rICAgIC8vL1xuKyAgICAvLy8gIyBTYWZldHlcbisgICAgLy8vXG4rICAgIC8vLyBgcHRyYCBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkIHJlZmVyZW5jZSB3aXRoIGEgbGlmZXRpbWUgb2YgYCdhYC5cbisgICAgI1tpbmxpbmVdXG4rICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXdcdTAwM2MnYVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGFnZSkgLVx1MDAzZSBcdTAwMjYnYSBTZWxmIHtcbisgICAgICAgIC8vIElOVkFSSUFOVDogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIHJlZmVycyB0byBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAsIHNvXG4rICAgICAgICAvLyB0aGUgcmV0dXJuZWQgcmVmZXJlbmNlIHVwaG9sZHMgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBQYWdlYC5cbisgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgbm90IG51bGwgYW5kIGlzIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkXG4rICAgICAgICAvLyByZWZlcmVuY2UuXG4rICAgICAgICB1bnNhZmUgeyBcdTAwMjYqcHRyLmNhc3QoKSB9XG4rICAgIH1cbitcbiAgICAgLy8vIFJ1bnMgYSBwaWVjZSBvZiBjb2RlIHdpdGggdGhpcyBwYWdlIG1hcHBlZCB0byBhbiBhZGRyZXNzLlxuICAgICAvLy9cbiAgICAgLy8vIFRoZSBwYWdlIGlzIHVubWFwcGVkIHdoZW4gdGhpcyBjYWxsIHJldHVybnMuXG5AQCAtMzcyLDEwICszMjMsMTEgQEAgcHViIHVuc2FmZSBmbiBjb3B5X2Zyb21fdXNlcl9zbGljZV9yYXcoXG4gICAgIH1cbiB9XG4gXG4taW1wbCBEcm9wIGZvciBQYWdlIHtcbitpbXBsIE93bmFibGUgZm9yIFBhZ2Uge1xuICAgICAjW2lubGluZV1cbi0gICAgZm4gZHJvcChcdTAwMjZtdXQgc2VsZikge1xuLSAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWUgaXQuXG4tICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6X19mcmVlX3BhZ2VzKHNlbGYucGFnZS5hc19wdHIoKSwgMCkgfTtcbisgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZVxuKyAgICAgICAgLy8gaXQuIFNpbmNlIFBhZ2UgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSByYXcgcG9pbnRlciBkaXJlY3RseS5cbisgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXModGhpcy5hc19wdHIoKS5jYXN0KCksIDApIH07XG4gICAgIH1cbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzXG5pbmRleCA1MDcxY2FlNjU0M2ZkMi4uZWE5ZWY5OWNlY2IwNzYgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcbisrKyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuQEAgLTE5LDYgKzE5LDEwIEBAXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN0cjo6Q1N0cixcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gICAgIFRoaXNNb2R1bGUsIC8vXG4gfTtcbkBAIC00ODEsNyArNDg1LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBpbXBsXHUwMDNjJ2FcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXHUwMDNjJ2FcdTAwM2UgZm9yIERldmljZVx1MDAzY2RldmljZTo6Q29yZVx1MDAzYydhXHUwMDNlXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwY2lfZGV2X2dldChzZWxmLmFzX3JhdygpKSB9O1xuQEAgLTQ5Myw2ICs0OTcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZEZXZpY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuK1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5pbmRleCA5NzlhOTcxOGYxNTNkOC4uMDY3ZjY4Yjk5ZThjNWMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5AQCAtNyw3ICs3LDE0IEBAXG4gLy8hIEMgaGVhZGVyOiBbYGluY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaCkgYW5kXG4gLy8hIFtgaW5jbHVkZS9saW51eC9waWQuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWQuaClcbiBcbi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdHlwZXM6Ok9wYXF1ZX07XG4rdXNlIGNyYXRlOjp7XG4rICAgIGJpbmRpbmdzLFxuKyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLFxuKyAgICB0eXBlczo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbit9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwncyBgc3RydWN0IHBpZF9uYW1lc3BhY2VgLiBUaHJlYWQgc2FmZS5cbkBAIC00MSw3ICs0OCw3IEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9wdHJcdTAwM2MnYVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLVx1MDAzZSBcdTAwMjYnYSBTZWxmIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYFBpZE5hbWVzcGFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC01NSw2ICs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1BpZE5hbWVzcGFjZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NQaWROYW1lc3BhY2VcdTAwM2VgIGZyb21cbisvLyBhIGBcdTAwMjZQaWROYW1lc3BhY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fVxuK1xuIC8vIFNBRkVUWTpcbiAvLyAtIGBQaWROYW1lc3BhY2U6OmRlY19yZWZgIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLlxuIC8vIC0gSXQgaXMgb2theSB0byBzZW5kIG93bmVyc2hpcCBvZiBgUGlkTmFtZXNwYWNlYCBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuaW5kZXggOWIzNjJlMDQ5NWQzMjMuLjBiYTY3NjQ0NWIwNmQ3IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcbisrKyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG5AQCAtMjcsNiArMjcsMTAgQEBcbiAgICAgfSxcbiAgICAgb2YsXG4gICAgIHByZWx1ZGU6OiosXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtNTE4LDcgKzUyMiw3IEBAIHB1YiBmbiBvcHRpb25hbF9pcnFfYnlfbmFtZShcdTAwMjZzZWxmLCBuYW1lOiBcdTAwMjZDU3RyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0lycVJlcXVlc3RcdTAwM2MnX1x1MDAzZVx1MDAzZSB7XG4gaW1wbFx1MDAzYydhXHUwMDNlIGNyYXRlOjpkbWE6OkRldmljZVx1MDAzYydhXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NkZXZpY2U6OkNvcmVcdTAwM2MnYVx1MDAzZVx1MDAzZSB7fVxuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUzMCw2ICs1MzQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZEZXZpY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuK1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3B3bS5ycyBiL3J1c3Qva2VybmVsL3B3bS5yc1xuaW5kZXggNmM5ZDY2NzAwOWVmN2IuLjJkMWNkNzRkZDk4ZTFlIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcHdtLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9wd20ucnNcbkBAIC0xMyw3ICsxMywxMSBAQFxuICAgICBkZXZyZXMsXG4gICAgIGVycm9yOjp7c2VsZiwgdG9fcmVzdWx0fSxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBUmVmLFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXG4gfTtcbiB1c2UgY29yZTo6e1xuQEAgLTYyOSw3ICs2MzMsNyBAQCBwdWIgZm4gbmV3XHUwMDNjJ2FcdTAwM2UoXG4gfVxuIFxuIC8vIFNBRkVUWTogSW1wbGVtZW50cyByZWZjb3VudGluZyBmb3IgYENoaXBgIHVzaW5nIHRoZSBlbWJlZGRlZCBgc3RydWN0IGRldmljZWAuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge1xuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIFJlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBgc2VsZi4wLmdldCgpYCBwb2ludHMgdG8gYSB2YWxpZCBgcHdtX2NoaXBgIGJlY2F1c2UgYHNlbGZgIGV4aXN0cy5cbkBAIC02NDcsNiArNjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY0NoaXBcdTAwM2NUXHUwMDNlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0NoaXBcdTAwM2NUXHUwMDNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2Q2hpcFx1MDAzY1RcdTAwM2VgLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHt9XG4rXG4gLy8gU0FGRVRZOiBgQ2hpcGAgaXMgYSB3cmFwcGVyIGFyb3VuZCBgKm11dCBiaW5kaW5nczo6cHdtX2NoaXBgLiBUaGUgdW5kZXJseWluZyBDXG4gLy8gc3RydWN0dXJlJ3Mgc3RhdGUgaXMgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSBrZXJuZWwncyBkZXZpY2UgbW9kZWxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzIGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXG5pbmRleCBiNzIxYjJlMDBiOTg2Zi4uZTZmZmU3YzY1MGMzOWMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbisrKyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xuQEAgLTExLDcgKzExLDcgQEBcbiAvLyEgdW5kZXJseWluZyBvYmplY3QsIGJ1dCB0aGlzIHJlZmNvdW50IGlzIGludGVybmFsIHRvIHRoZSBvYmplY3QuIEl0IGVzc2VudGlhbGx5IGlzIGEgUnVzdFxuIC8vISBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGdldF9gIGFuZCBgcHV0X2AgcGF0dGVybiB1c2VkIGluIEMgZm9yIHJlZmVyZW5jZSBjb3VudGluZy5cbiAvLyFcbi0vLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmXHUwMDNjTXlUeXBlXHUwMDNlYF0sIGBNeVR5cGVgIG5lZWRzIHRvIGltcGxlbWVudCBbYEFsd2F5c1JlZkNvdW50ZWRgXS4gSXQgaXMgYSB0cmFpdFxuKy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcdTAwM2NNeVR5cGVcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XG4gLy8hIGZvciBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3Qgb2YgdGhlIGBNeVR5cGVgIHR5cGUuXG4gLy8hXG4gLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmNcbkBAIC0yMywyNiArMjMsMzUgQEBcbiAgICAgb3BzOjpEZXJlZixcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4rdXNlIGtlcm5lbDo6dHlwZXM6OntcbisgICAgT3duYWJsZVJlZkNvdW50ZWQsXG4rICAgIE93bmVkLCAvL1xuK307XG4gXG4tLy8vIFR5cGVzIHRoYXQgYXJlIF9hbHdheXNfIHJlZmVyZW5jZSBjb3VudGVkLlxuKy8vLyBUeXBlcyB0aGF0IGFyZSBpbnRlcm5hbGx5IHJlZmVyZW5jZSBjb3VudGVkLlxuIC8vL1xuIC8vLyBJdCBhbGxvd3Mgc3VjaCB0eXBlcyB0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSByZWYgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZnVuY3Rpb25zLlxuLS8vLyBBZGRpdGlvbmFsbHksIGl0IGFsbG93cyB1c2VycyB0byBjb252ZXJ0IGZyb20gYSBzaGFyZWQgcmVmZXJlbmNlIGBcdTAwMjZUYCB0byBhbiBvd25lZCByZWZlcmVuY2Vcbi0vLy8gW2BBUmVmXHUwMDNjVFx1MDAzZWBdLlxuIC8vL1xuIC8vLyBUaGlzIGlzIHVzdWFsbHkgaW1wbGVtZW50ZWQgYnkgd3JhcHBlcnMgdG8gZXhpc3Rpbmcgc3RydWN0dXJlcyBvbiB0aGUgQyBzaWRlIG9mIHRoZSBjb2RlLiBGb3JcbiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkXG4gLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuXG4gLy8vXG4rLy8vIE5vdGU6IEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXS4gSXQgcmVxdWlyZXMgYW5cbisvLy8gaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGFuZCBwcm92aWRlcyBvbmx5IHNoYXJlZCByZWZlcmVuY2VzLiBJZiB1bmlxdWUgcmVmZXJlbmNlcyBhcmUgcmVxdWlyZWRcbisvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW5cbisvLy8gW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdFxuKy8vLyBbYE93bmFibGVSZWZDb3VudGVkYF0gYWxsb3dzIHRvIGNvbnZlcnQgYmV0d2VlbiB1bmlxdWUgYW5kXG4rLy8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkgYW5kXG4rLy8vIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXSkuXG4rLy8vXG4gLy8vICMgU2FmZXR5XG4gLy8vXG4gLy8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCBrZWVwIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5XG4gLy8vIGF0IGxlYXN0IHVudGlsIG1hdGNoaW5nIGRlY3JlbWVudHMgYXJlIHBlcmZvcm1lZC5cbiAvLy9cbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBhbGwgaW5zdGFuY2VzIGFyZSByZWZlcmVuY2UtY291bnRlZC4gKE90aGVyd2lzZSB0aGV5XG4tLy8vIHdvbid0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdFxuLS8vLyBhbGl2ZS4pXG4tcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcbisvLy8gd29uJ3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0IGFsaXZlLilcbitwdWIgdW5zYWZlIHRyYWl0IFJlZkNvdW50ZWQge1xuICAgICAvLy8gSW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvYmplY3QuXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZik7XG4gXG5AQCAtNTUsMTEgKzY0LDI3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgd2FzIGEgcHJldmlvdXMgbWF0Y2hpbmcgaW5jcmVtZW50IHRvIHRoZSByZWZlcmVuY2UgY291bnQsXG4gICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heVxuICAgICAvLy8gcmVzdWx0IGluIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQpLCB1bmxlc3MgdGhlIGNhbGxlciBvd25zIGFub3RoZXIgaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudFxuLSAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzXG4tICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbisgICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscyBbYFJlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbiAgICAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSk7XG4gfVxuIFxuKy8vLyBBbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgdHlwZS5cbisvLy9cbisvLy8gSXQgYWxsb3dzIGRlcml2aW5nIGEgY291bnRlZCByZWZlcmVuY2UgW2BBUmVmXHUwMDNjVFx1MDAzZWBdIGZyb20gYSBgXHUwMDI2VGAuXG4rLy8vXG4rLy8vIFRoaXMgcHJvdmlkZXMgc29tZSBjb252ZW5pZW5jZSwgYnV0IGl0IGFsbG93cyBcImVzY2FwaW5nXCIgYm9ycm93IGNoZWNrcyBvbiBgXHUwMDI2VGAuIEFzIGl0XG4rLy8vIGNvbXBsaWNhdGVzIGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IGEgcmVmZXJlbmNlIHRvIFQgaXMgdW5pcXVlLCBpdCBpcyBvcHRpb25hbCB0byBwcm92aWRlIGZvclxuKy8vLyBbYFJlZkNvdW50ZWRgXSB0eXBlcy4gU2VlICpTYWZldHkqIGJlbG93LlxuKy8vL1xuKy8vLyAjIFNhZmV0eVxuKy8vL1xuKy8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBzYWZldHkgaW52YXJpYW50cyBhcmUgdmlvbGF0ZWQgYnkgdXBncmFkaW5nIGFuIGBcdTAwMjZUYCB0byBhblxuKy8vLyBbYEFSZWZcdTAwM2NUXHUwMDNlYF0uIEluIHBhcnRpY3VsYXIgdGhhdCBpbXBsaWVzIFtgQWx3YXlzUmVmQ291bnRlZGBdIGFuZCBbYGNyYXRlOjp0eXBlczo6T3duYWJsZWBdXG4rLy8vIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBmb3IgdGhlIHNhbWUgdHlwZSwgYXMgdGhpcyB3b3VsZCBhbGxvdyB2aW9sYXRpbmcgdGhlIHVuaXF1ZW5lc3MgZ3VhcmFudGVlXG4rLy8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZFx1MDAzY1RcdTAwM2VgXSBieSBkZXJlZmVyZW5jaW5nIGl0IGludG8gYW4gYFx1MDAyNlRgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbVxuKy8vLyB0aGF0LlxuK3B1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZDogUmVmQ291bnRlZCB7fVxuK1xuIC8vLyBBbiBvd25lZCByZWZlcmVuY2UgdG8gYW4gYWx3YXlzLXJlZmVyZW5jZS1jb3VudGVkIG9iamVjdC5cbiAvLy9cbiAvLy8gVGhlIG9iamVjdCdzIHJlZmVyZW5jZSBjb3VudCBpcyBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BBUmVmYF0gaXNcbkBAIC03MCw3ICs5NSw3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gLy8vXG4gLy8vIFRoZSBwb2ludGVyIHN0b3JlZCBpbiBgcHRyYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgW2BBUmVmYF0gaW5zdGFuY2UuIEluXG4gLy8vIHBhcnRpY3VsYXIsIHRoZSBbYEFSZWZgXSBpbnN0YW5jZSBvd25zIGFuIGluY3JlbWVudCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QncyByZWZlcmVuY2UgY291bnQuXG4tcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4rcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSB7XG4gICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4gICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY1RcdTAwM2UsXG4gfVxuQEAgLTc5LDE5ICsxMDQsMTkgQEAgcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4gLy8gaXQgZWZmZWN0aXZlbHkgbWVhbnMgc2hhcmluZyBgXHUwMDI2VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LCBpdCBuZWVkc1xuIC8vIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGFuIGBBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IHVsdGltYXRlbHkgYWNjZXNzIGBUYCB1c2luZyBhXG4gLy8gbXV0YWJsZSByZWZlcmVuY2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFx1MDAzZSBTZW5kIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXHUwMDNlIFNlbmQgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYFx1MDAyNkFSZWZcdTAwM2NUXHUwMDNlYCB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBgU3luY2BcbiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSxcbiAvLyBpdCBuZWVkcyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhIGBcdTAwMjZBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW5cbiAvLyBgQVJlZlx1MDAzY1RcdTAwM2VgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yXG4gLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgU3luYyArIFNlbmRcdTAwM2UgU3luYyBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFx1MDAzZSBTeW5jIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLlxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIEFSZWZcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBBUmVmXHUwMDNjVFx1MDAzZSB7XG4gICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFtgQVJlZmBdLlxuICAgICAvLy9cbiAgICAgLy8vIEl0IHRha2VzIG92ZXIgYW4gaW5jcmVtZW50IG9mIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuQEAgLTEyMCwxOSArMTQ1LDIxIEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbiAgICAgLy8vXG4gICAgIC8vLyBgYGBcbiAgICAgLy8vIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4tICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07XG4rICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XG4gICAgIC8vL1xuICAgICAvLy8gc3RydWN0IEVtcHR5IHt9XG4gICAgIC8vL1xuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXG4tICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7XG4rICAgIC8vLyAvLyBTQUZFVFk6IFRoZSBgUmVmQ291bnRlZGAgaW1wbGVtZW50YXRpb24gZm9yIGBFbXB0eWAgZG9lcyBub3QgY291bnQgcmVmZXJlbmNlcyBhbmQgbmV2ZXJcbisgICAgLy8vIC8vIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gVGh1cyB3ZSBjYW4gYWN0IGFzIG93bmluZyBhbiBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50IGZvclxuKyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLlxuKyAgICAvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRW1wdHkge1xuICAgICAvLy8gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge31cbiAgICAgLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZihfb2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge31cbiAgICAgLy8vIH1cbiAgICAgLy8vXG4gICAgIC8vLyBsZXQgbXV0IGRhdGEgPSBFbXB0eSB7fTtcbiAgICAgLy8vIGxldCBwdHIgPSBOb25OdWxsOjpcdTAwM2NFbXB0eVx1MDAzZTo6bmV3KFx1MDAyNm11dCBkYXRhKS51bndyYXAoKTtcbi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLlxuKyAgICAvLy8gLy8gU0FGRVRZOiBXZSBrZWVwIGBkYXRhYCBhcm91bmQgbG9uZ2VyIHRoYW4gdGhlIGBBUmVmYC5cbiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZlx1MDAzY0VtcHR5XHUwMDNlID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9O1xuICAgICAvLy8gbGV0IHJhd19wdHI6IE5vbk51bGxcdTAwM2NFbXB0eVx1MDAzZSA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTtcbiAgICAgLy8vXG5AQCAtMTQzLDcgKzE3MCw3IEBAIHB1YiBmbiBpbnRvX3JhdyhtZTogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBDbG9uZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICAgICAgc2VsZi5pbmNfcmVmKCk7XG4gICAgICAgICAvLyBTQUZFVFk6IFdlIGp1c3QgaW5jcmVtZW50ZWQgdGhlIHJlZmNvdW50IGFib3ZlLlxuQEAgLTE1MSw3ICsxNzgsNyBAQCBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIERlcmVmIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRGVyZWYgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBUO1xuIFxuICAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG5AQCAtMTY4LDcgKzE5NSwxNCBAQCBmbiBmcm9tKGI6IFx1MDAyNlQpIC1cdTAwM2UgU2VsZiB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFx1MDAzZSBGcm9tXHUwMDNjT3duZWRcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBmcm9tKGI6IE93bmVkXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbisgICAgICAgIFQ6OmludG9fc2hhcmVkKGIpXG4rICAgIH1cbit9XG4rXG4raW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UncmUgYWJvdXQgdG9cbiAgICAgICAgIC8vIGRlY3JlbWVudC5cbkBAIC0xNzgsMTkgKzIxMiwxOSBAQCBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjQVJlZlx1MDAzY1VcdTAwM2VcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCArIFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4tICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIFQ6IFJlZkNvdW50ZWQgKyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuKyAgICBVOiBSZWZDb3VudGVkLFxuIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZBUmVmXHUwMDNjVVx1MDAzZSkgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIFQ6OmVxKFx1MDAyNioqc2VsZiwgXHUwMDI2KipvdGhlcilcbiAgICAgfVxuIH1cbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCArIEVxXHUwMDNlIEVxIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkICsgRXFcdTAwM2UgRXEgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjXHUwMDI2J18gVVx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICsgUGFydGlhbEVxXHUwMDNjVVx1MDAzZSxcbisgICAgVDogUmVmQ291bnRlZCArIFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4ge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gZXEoXHUwMDI2c2VsZiwgb3RoZXI6IFx1MDAyNlx1MDAyNlUpIC1cdTAwM2UgYm9vbCB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdGFzay5ycyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcbmluZGV4IDM4MjczZjRlZWRiNTEzLi42MjU5NDMwYjBjYTMxOCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3Rhc2sucnNcbisrKyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcbkBAIC0xMCw3ICsxMCwxMiBAQFxuICAgICBwaWRfbmFtZXNwYWNlOjpQaWROYW1lc3BhY2UsXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OkFSZWYsXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbisgICAgdHlwZXM6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxuKyAgICAgICAgT3BhcXVlLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiB9O1xuIHVzZSBjb3JlOjp7XG4gICAgIG9wczo6RGVyZWYsXG5AQCAtMzQ3LDcgKzM1Miw3IEBAIHB1YiBmbiBncm91cF9sZWFkZXIoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZUYXNrIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBUYXNrYCBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgVGFzayB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0zNjEsNiArMzY2LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NUYXNrXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2VGFza2AuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7fVxuK1xuIGltcGwgUGFydGlhbEVxIGZvciBUYXNrIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZTZWxmKSAtXHUwMDNlIGJvb2wge1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3R5cGVzLnJzIGIvcnVzdC9rZXJuZWwvdHlwZXMucnNcbmluZGV4IGFjMzE2ZmQ3YjUzOGZlLi42YWE3NjA5NTJjYjYzNSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3R5cGVzLnJzXG4rKysgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xuQEAgLTE1LDYgKzE1LDE4IEBAXG4gcHViIG1vZCBmb3JfbHQ7XG4gcHViIHVzZSBmb3JfbHQ6OkZvckx0O1xuIFxuK3B1YiB1c2UgY3JhdGU6OntcbisgICAgb3duZWQ6OntcbisgICAgICAgIE93bmFibGUsXG4rICAgICAgICBPd25hYmxlUmVmQ291bnRlZCxcbisgICAgICAgIE93bmVkLCAvL1xuKyAgICB9LFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSwgLy9cbit9O1xuK1xuIC8vLyBVc2VkIHRvIHRyYW5zZmVyIG93bmVyc2hpcCB0byBhbmQgZnJvbSBmb3JlaWduIChub24tUnVzdCkgbGFuZ3VhZ2VzLlxuIC8vL1xuIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdXNiLnJzIGIvcnVzdC9rZXJuZWwvdXNiLnJzXG5pbmRleCA3YWZmMGM4MmQwYWZjMC4uNTkzNTBjNmIwZGYyYWQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC91c2IucnNcbisrKyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuQEAgLTE4LDcgKzE4LDEwIEBAXG4gICAgICAgICB0b19yZXN1bHQsIC8vXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4tICAgIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtMzkyLDcgKzM5NSw3IEBAIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNkRldmljZSB7XG4gfVxuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJbnRlcmZhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYEludGVyZmFjZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfaW50ZXJmYWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxuQEAgLTQwNiw2ICs0MDksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NJbnRlcmZhY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZJbnRlcmZhY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7fVxuK1xuIC8vIFNBRkVUWTogQSBgSW50ZXJmYWNlYCBpcyBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgYW5kIGNhbiBiZSByZWxlYXNlZCBmcm9tIGFueSB0aHJlYWQuXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgSW50ZXJmYWNlIHt9XG4gXG5AQCAtNDQzLDcgKzQ1MCw3IEBAIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OnVzYl9kZXZpY2Uge1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXG5AQCAtNDU3LDYgKzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkRldmljZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4rXG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG5pbmRleCA3ZTI1M2I2ZjI5OWNlMy4uNzc2NzNiOGVhNDVmYjEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC93b3JrcXVldWUucnNcbisrKyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xuQEAgLTE5Miw3ICsxOTIsNyBAQFxuICAgICBzeW5jOjp7XG4gICAgICAgICBhcmVmOjp7XG4gICAgICAgICAgICAgQVJlZixcbi0gICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuKyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgICAgICB9LFxuICAgICAgICAgQXJjLFxuICAgICAgICAgTG9ja0NsYXNzS2V5LCAvL1xuQEAgLTk1NCw3ICs5NTQsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIFBpblx1MDAzY0tCb3hcdTAwM2NUXHUwMDNlXHUwMDNlXG4gLy8gICAgIGltcGxlbWVudGF0aW9uIG9mIGBXb3JrSXRlbVBvaW50ZXJgIGZvciBgQVJlZlx1MDAzY1RcdTAwM2VgLlxuIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxuKyAgICBUOiBSZWZDb3VudGVkLFxuICAgICBUOiBXb3JrSXRlbVx1MDAzY0lELCBQb2ludGVyID0gU2VsZlx1MDAzZSxcbiAgICAgVDogSGFzV29ya1x1MDAzY1QsIElEXHUwMDNlLFxuIHtcbkBAIC05ODcsNyArOTg3LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFdvcmtJdGVtUG9pbnRlclx1MDAzY0lEXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIC8vIHJlcXVpcmVtZW50cyBvZiBgV29ya0l0ZW1Qb2ludGVyYC5cbiB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3V29ya0l0ZW1cdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxuKyAgICBUOiBSZWZDb3VudGVkLFxuICAgICBUOiBXb3JrSXRlbVx1MDAzY0lELCBQb2ludGVyID0gU2VsZlx1MDAzZSxcbiAgICAgVDogSGFzV29ya1x1MDAzY1QsIElEXHUwMDNlLFxuIHtcbkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc0RlbGF5ZWRXb3JrXHUwMDNjVCwgSURcdTAwM2UsXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIFQ6IFJlZkNvdW50ZWQsXG4ge1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjA2OjA0LjYxNTYyMDc0NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzg4Mzg4MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmFjdG9yaW5nIERlZXAgRGl2ZTogTm8gRnV6emluZyBOZWVkZWQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGludHJvZHVjaW5nIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgYW5kIHJlb3JnYW5pemluZyBob3cgcmVmZXJlbmNlIGNvdW50aW5nIHdvcmtzLiBJdCBzZWVtcyBsaWtlIGEgZnVuZGFtZW50YWwgcmVmYWN0b3Jpbmcgb2YgdGhlIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBqdXN0IGEgdHlwZSBzeXN0ZW0gc2h1ZmZsZSwgb3IgYXJlIHRoZXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb25zaWRlcj9cblxuSSBzZWUgdGhhdCBpdCdzIGludHJvZHVjaW5nIG5ldyB0eXBlcyBhbmQgdHJhaXRzIGluIGBydXN0L2tlcm5lbC9vd25lZC5yc2AgYW5kIGNoYW5naW5nIGhvdyBgQWx3YXlzUmVmQ291bnRlZGAgaXMgc3RydWN0dXJlZC4gSXQncyBhbHNvIG1vZGlmeWluZyBob3cgYFBhZ2VgIGlzIGhhbmRsZWQsIHVzaW5nIGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgIGluc3RlYWQgb2YgZGlyZWN0bHkgcmV0dXJuaW5nIGBQYWdlYCBmcm9tIGBhbGxvY19wYWdlYC4gVGhpcyBjaGFuZ2UgcmlwcGxlcyB0aHJvdWdoIHRvIHBsYWNlcyBsaWtlIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIgKGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNgKSwgYWRhcHRpbmcgdG8gdGhlIG5ldyB0eXBlLlxuXG5NeSBmb2N1cyBpcyBhbHdheXMgb24gbmV3IGZ1bmN0aW9uYWxpdHkgdGhhdCBjb3VsZCBiZSBhIGZ1enppbmcgdGFyZ2V0LiBBZnRlciBhIGNsb3NlIGxvb2ssIHRoZSBwYXRjaCBpcyBjb25maW5lZCB0byB0aGUgUnVzdCBhYnN0cmFjdGlvbnMgYW5kIGFkYXB0YXRpb25zIHRvIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIuIFRoZSBCaW5kZXIgZHJpdmVyIGNoYW5nZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZCB1cGRhdGVzIHRvIHVzZSB0aGUgbmV3IGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgIHR5cGUgc2lnbmF0dXJlLCB3aGljaCBpcyBtZXJlbHkgYSB3cmFwcGVyIGFyb3VuZCBhIGBOb25OdWxsXHUwMDNjVFx1MDAzZWAgYW5kIGNhbGxzIGBUOjpyZWxlYXNlYCBvbiBkcm9wLiBUaGlzIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiB3aGVyZSBgUGFnZWAgd2FzIGltcGxlbWVudGluZyBgRHJvcGAuXG5cbkknbSB2ZXJpZnlpbmcgaWYgdGhlcmUgYXJlIGFueSBuZXcgZnVuY3Rpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgZnV6emVkLiBJdCBhZGRzIG1ldGhvZHMgbGlrZSBgT3duZWQ6OmZyb21fcmF3YCwgYE93bmVkOjppbnRvX3Jhd2AsIGV0Yy4gVGhlc2UgYXJlIGFsbCBwYXJ0IG9mIHRoZSBSdXN0IGFic3RyYWN0aW9uIG1hY2hpbmVyeS4gVGhlcmUncyBubyBuZXcgQyBjb2RlIGV4cG9zZWQsIG5vIGNvbXBsZXggbG9naWMgaW50cm9kdWNlZC4gSXQncyBhbGwgYWJvdXQgcmVzaGFwaW5nIHR5cGVzLlxuXG5JJ20gY2hlY2tpbmcgaWYgdGhlcmUncyBhbnkgYWx0ZXJhdGlvbiB0byBiZWhhdmlvciBpbiBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYC4gSXQncyBqdXN0IHJlcGxhY2luZyBhIGZpZWxkIHR5cGUgKGBQYWdlYCB3aXRoIGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgKS4gU2luY2UgYm90aCBhcmUgZXNzZW50aWFsbHkgcG9pbnRlcnMgdW5kZXIgdGhlIGhvb2QsIHRoZSBtZW1vcnkgbGF5b3V0IGlzIGlkZW50aWNhbCwgYW5kIHNvIGlzIHRoZSBkcm9wIGJlaGF2aW9yLlxuXG5CYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCB0aGVyZSdzIG5vIHJlYXNvbiB0byBmdXp6IHRoaXMuIFRoaXMgaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zICh0eXBlcywgdHJhaXRzKSBhbmQgYWRhcHRhdGlvbiBvZiBleGlzdGluZyBjb2RlIHRvIHVzZSB0aGVtLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMsIG5ldyBzeXNjYWxscywgbmV3IGRyaXZlcnMsIG9yIGNoYW5nZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcgYHJ1c3Qva2VybmVsL2FsbG9jL2tib3gucnNgLCBhbmQgaXQncyBqdXN0IGEgaGVscGVyIG1ldGhvZCwgbm90aGluZyB0aGF0IGV4cGFuZHMgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG4qKldvcnRoRnV6emluZz1mYWxzZSoqIGJlY2F1c2UgdGhpcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgKGludHJvZHVjaW5nIGBPd25lZGAgYW5kIGBPd25hYmxlYCwgc3BsaXR0aW5nIGBBbHdheXNSZWZDb3VudGVkYCkgYW5kIGFkYXB0aW5nIGV4aXN0aW5nIGNvZGUgdG8gdXNlIHRoZW0sIHdpdGhvdXQgY2hhbmdpbmcgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwMTgsIk91dHB1dFRva2VucyI6MTIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjA2OjE3LjAwNDAxMzg3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIEl0IGludHJvZHVjZXMgYE93bmVkYCBhbmQgYE93bmFibGVgIHR5cGVzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCBhZGFwdHMgZXhpc3RpbmcgUnVzdCBjb2RlIChsaWtlIGBQYWdlYCBhbmQgdGhlIEFuZHJvaWQgQmluZGVyIGRyaXZlcikgdG8gdXNlIHRoZXNlIG5ldyB0eXBlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljLCBuZXcgZHJpdmVycywgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgYWRhcHRzIGV4aXN0aW5nIFJ1c3QgY29kZSAobGlrZSBgUGFnZWAgYW5kIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIpIHRvIHVzZSB0aGVzZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IGRyaXZlcnMsIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxwv96[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 21:59:07 +0000 UTC FinishedAt: 2026-06-26 22:06:17 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjA2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgYWRhcHRzIGV4aXN0aW5nIFJ1c3QgY29kZSAobGlrZSBgUGFnZWAgYW5kIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIpIHRvIHVzZSB0aGVzZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IGRyaXZlcnMsIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjA2PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNjY0MzBhNzEwMmVmNzRlOWQ0YjJlZDQyNDdkOGZmMTVmNWVhZjZlNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjA2OjAyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuaW5kZXggZTU0YTkwZTYyNDAyYTQuLjc5NDFlYjg1YjRlZjQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcbkBAIC0zMyw3ICYjNDM7MzMsNyBAQFxuICAgICBzeW5jOjp7YXJlZjo6QVJlZiwgTXV0ZXgsIFNwaW5Mb2NrfSxcbiAgICAgdGFzazo6UGlkLFxuICAgICB0cmFuc211dGU6OkZyb21CeXRlcyxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcbiYjNDM7ICAgIHR5cGVzOjp7T3BhcXVlLCBPd25lZH0sXG4gICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlcixcbiB9O1xuIFxuQEAgLTE5OCw3ICYjNDM7MTk4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgSW5uZXIge31cbiAjW3JlcHIoQyldXG4gc3RydWN0IFBhZ2VJbmZvIHtcbiAgICAgbHJ1OiBiaW5kaW5nczo6bGlzdF9oZWFkLFxuLSAgICBwYWdlOiBPcHRpb25cdTAwM2NQYWdlXHUwMDNlLFxuJiM0MzsgICAgcGFnZTogT3B0aW9uXHUwMDNjT3duZWRcdTAwM2NQYWdlXHUwMDNlXHUwMDNlLFxuICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsXG4gfVxuIFxuQEAgLTIwNiw3ICYjNDM7MjA2LDcgQEAgaW1wbCBQYWdlSW5mbyB7XG4gICAgIC8vLyAjIFNhZmV0eVxuICAgICAvLy9cbiAgICAgLy8vIFRoZSBjYWxsZXIgZW5zdXJlcyB0aGF0IHdyaXRpbmcgdG8gYG1lLnBhZ2VgIGlzIG9rLCBhbmQgdGhhdCB0aGUgcGFnZSBpcyBub3QgY3VycmVudGx5IHNldC5cbi0gICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBQYWdlKSB7XG4mIzQzOyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkXHUwMDNjUGFnZVx1MDAzZSkge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cbiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcbiBcbkBAIC0yMjksMTMgJiM0MzsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlXHUwMDNjJiMzOTthXHUwMDNlKG1lOiAqY29uc3QgUGFnZUluZm8pIC1cdTAwM2UgT3B0aW9uXHUwMDNjXHUwMDI2JiMzOTthIFBhZ2VcdTAwM2Uge1xuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBjb25zdCAoKm1lKS5wYWdlIH07XG4gXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIGZvciByZWFkaW5nLlxuLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH1cbiYjNDM7ICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfZGVyZWYoKSB9XG4gICAgIH1cbiBcbiAgICAgLy8vICMgU2FmZXR5XG4gICAgIC8vL1xuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2sgZm9yIHRoZSBkdXJhdGlvbiBvZiAmIzM5O2EuXG4tICAgIHVuc2FmZSBmbiB0YWtlX3BhZ2UobWU6ICptdXQgUGFnZUluZm8pIC1cdTAwM2UgT3B0aW9uXHUwMDNjUGFnZVx1MDAzZSB7XG4mIzQzOyAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtXHUwMDNlIE9wdGlvblx1MDAzY093bmVkXHUwMDNjUGFnZVx1MDAzZVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoaXMgcG9pbnRlciBvZmZzZXQgaXMgaW4gYm91bmRzLlxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xuIFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xuaW5kZXggY2Q0MjAzZjI3YWVkMDYuLmM3YjliMDY5Y2Y3NWRkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbkBAIC0xNjksNyAmIzQzOzE2OSw3IEBAIHVuc2FmZSBmbiByZWFsbG9jKFxuIH1cbiBcbiBpbXBsIFZtYWxsb2Mge1xuLSAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BwYWdlOjpCb3Jyb3dlZFBhZ2VgXS5cbiYjNDM7ICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2UuXG4gICAgIC8vL1xuICAgICAvLy8gIyBFeGFtcGxlc1xuICAgICAvLy9cbkBAIC0yMDIsMjAgJiM0MzsyMDIsMTcgQEAgaW1wbCBWbWFsbG9jIHtcbiAgICAgLy8vXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiAgICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgYCYjMzk7YWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZVx1MDAzYyYjMzk7YVx1MDAzZShwdHI6IE5vbk51bGxcdTAwM2N1OFx1MDAzZSkgLVx1MDAzZSBwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2Uge1xuJiM0MzsgICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXHUwMDNjJiMzOTthXHUwMDNlKHB0cjogTm9uTnVsbFx1MDAzY3U4XHUwMDNlKSAtXHUwMDNlIFx1MDAyNiYjMzk7YSBwYWdlOjpQYWdlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTtcbiBcbi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXJcbi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcbi1cbiAgICAgICAgIC8vIFNBRkVUWTpcbi0gICAgICAgIC8vIC0gYHBhZ2VgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAsIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2Zcbi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cbi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZlxuLSAgICAgICAgLy8gICBgJiMzOTthYC5cbi0gICAgICAgIHVuc2FmZSB7IHBhZ2U6OkJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuJiM0MzsgICAgICAgIC8vIC0gYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkLCBub24tbnVsbCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuJiM0MzsgICAgICAgIC8vICAgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb25cbiYjNDM7ICAgICAgICAvLyAgIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLlxuJiM0MzsgICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCwgYW5kIGhlbmNlIHRoZSBgc3RydWN0IHBhZ2VgLCBpc1xuJiM0MzsgICAgICAgIC8vICAgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYCYjMzk7YWAuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnBhZ2UuY2FzdCgpIH1cbiAgICAgfVxuIH1cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5pbmRleCAwMmZkYTNlYTVjYWU2Ni4uOGRjYzE2ZWQ4OTg5MzEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcbkBAIC05LDcgJiM0Mzs5LDcgQEBcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4gXG4tLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiYjNDM7Ly8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2VzIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiAvLy9cbiAvLy8gIyBHdWFyYW50ZWVzXG4gLy8vXG5AQCAtMjgsMTEgJiM0MzsyOCwxMSBAQCBwdWIgc3RydWN0IFZtYWxsb2NQYWdlSXRlclx1MDAzYyYjMzk7YVx1MDAzZSB7XG4gICAgIHNpemU6IHVzaXplLFxuICAgICAvLy8gVGhlIGN1cnJlbnQgcGFnZSBpbmRleCBvZiB0aGUgW2BJdGVyYXRvcmBdLlxuICAgICBpbmRleDogdXNpemUsXG4tICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY3BhZ2U6OkJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZVx1MDAzZSxcbiYjNDM7ICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY1x1MDAyNiYjMzk7YSBwYWdlOjpQYWdlXHUwMDNlLFxuIH1cbiBcbiBpbXBsXHUwMDNjJiMzOTthXHUwMDNlIEl0ZXJhdG9yIGZvciBWbWFsbG9jUGFnZUl0ZXJcdTAwM2MmIzM5O2FcdTAwM2Uge1xuLSAgICB0eXBlIEl0ZW0gPSBwYWdlOjpCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2U7XG4mIzQzOyAgICB0eXBlIEl0ZW0gPSBcdTAwMjYmIzM5O2EgcGFnZTo6UGFnZTtcbiBcbiAgICAgZm4gbmV4dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBPcHRpb25cdTAwM2NTZWxmOjpJdGVtXHUwMDNlIHtcbiAgICAgICAgIGxldCBvZmZzZXQgPSBzZWxmLmluZGV4LmNoZWNrZWRfbXVsKHBhZ2U6OlBBR0VfU0laRSk/O1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXG5pbmRleCAzNWQxZTAxNTg0OGRkYS4uZDUzNGU4YWRjZjdiMzMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXG5AQCAtMjExLDYgJiM0MzsyMTEsMTUgQEAgcHViIGZuIGxlYWtcdTAwM2MmIzM5O2FcdTAwM2UoYjogU2VsZikgLVx1MDAzZSBcdTAwMjYmIzM5O2EgbXV0IFQge1xuICAgICAgICAgLy8gd2hpY2ggcG9pbnRzIHRvIGFuIGluaXRpYWxpemVkIGluc3RhbmNlIG9mIGBUYC5cbiAgICAgICAgIHVuc2FmZSB7IFx1MDAyNm11dCAqQm94OjppbnRvX3JhdyhiKSB9XG4gICAgIH1cbiYjNDM7XG4mIzQzOyAgICAvLy8gQ29uc3VtZXMgdGhlIGBCb3hcdTAwM2NULEFcdTAwM2VgIGFuZCByZXR1cm5zIGEgYE5vbk51bGxcdTAwM2NUXHUwMDNlYC5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgcHViIGZuIGludG9fbm9uX251bGwoYjogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgS0JveDo6aW50b19yYXdgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQoU2VsZjo6aW50b19yYXcoYikpIH1cbiYjNDM7ICAgIH1cbiB9XG4gXG4gaW1wbFx1MDAzY1QsIEFcdTAwM2UgQm94XHUwMDNjTWF5YmVVbmluaXRcdTAwM2NUXHUwMDNlLCBBXHUwMDNlXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzIGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXG5pbmRleCBjNDI5MjhkNWEyMzkzZi4uODU0NTI1Mjg5YzhiNDMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuQEAgLTE5LDYgJiM0MzsxOSwxMCBAQFxuICAgICAgICAgdG9fcmVzdWx0LCAvL1xuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gICAgIHR5cGVzOjp7XG4gICAgICAgICBGb3JMdCxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxuQEAgLTM0NCw3ICYjNDM7MzQ4LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC0zNjMsNiAmIzQzOzM2NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG5pbmRleCBjZTNlMzBjODFjYjVlZC4uOGRhZDE1YWU0Y2ZiMGEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXG5AQCAtOSw3ICYjNDM7OSwxMSBAQFxuICAgICBibG9jazo6bXE6Ok9wZXJhdGlvbnMsXG4gICAgIGVycm9yOjpSZXN1bHQsXG4gICAgIHN5bmM6Ontcbi0gICAgICAgIGFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbiYjNDM7ICAgICAgICBhcmVmOjp7XG4mIzQzOyAgICAgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICAgICAgfSxcbiAgICAgICAgIGF0b21pYzo6UmVsYXhlZCxcbiAgICAgICAgIFJlZmNvdW50LFxuICAgICB9LFxuQEAgLTIyOSwxMSAmIzQzOzIzMywxMCBAQCB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU2VuZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiAvLyBtdXRhdGUgYHNlbGZgIGFyZSBpbnRlcm5hbGx5IHN5bmNocm9uaXplZGBcbiB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU3luYyBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiBcbi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXNcbi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBgQWx3YXlzUmVmQ291bnRlZGAgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50XG4tLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnRcbi0vLyBkZWNyZW1lbnQgaXMgZXhlY3V0ZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHtcbiYjNDM7Ly8gU0FGRVRZOiBBbGwgaW5zdGFuY2VzIG9mIGBSZXF1ZXN0XHUwMDNjVFx1MDAzZWAgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGBSZWZDb3VudGVkYFxuJiM0MzsvLyBlbnN1cmUgdGhhdCBpbmNyZW1lbnRzIHRvIHRoZSByZWYgY291bnQga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYVxuJiM0MzsvLyBtYXRjaGluZyByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgUmVmQ291bnRlZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIHNlbGYud3JhcHBlcl9yZWYoKS5yZWZjb3VudCgpLmluYygpO1xuICAgICB9XG5AQCAtMjU1LDMgJiM0MzsyNTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgICAgIH1cbiAgICAgfVxuIH1cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogV2UgY3VycmVudGx5IGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjUmVxdWVzdFx1MDAzZWBcbiYjNDM7Ly8gZnJvbSBhIGBcdTAwMjZSZXF1ZXN0YCAoYnV0IHRoaXMgd2lsbCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZSkuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2NyZWQucnMgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5pbmRleCBmZmExNTZiOWRmMzc3ZS4uYjE3NzM2YTlhZGNkNTggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5AQCAtOCw3ICYjNDM7OCwxNSBAQFxuIC8vIVxuIC8vISBSZWZlcmVuY2U6IFx1MDAzY2h0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL2h0bWwvbGF0ZXN0L3NlY3VyaXR5L2NyZWRlbnRpYWxzLmh0bWxcdTAwM2VcbiBcbi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdGFzazo6S3VpZCwgdHlwZXM6Ok9wYXF1ZX07XG4mIzQzO3VzZSBjcmF0ZTo6e1xuJiM0MzsgICAgYmluZGluZ3MsXG4mIzQzOyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLFxuJiM0MzsgICAgdGFzazo6S3VpZCxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBPcGFxdWUsIC8vXG4mIzQzOyAgICB9LCAvL1xuJiM0Mzt9O1xuIFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgY3JlZGAuXG4gLy8vXG5AQCAtNzYsNyAmIzQzOzg0LDcgQEAgcHViIGZuIGV1aWQoXHUwMDI2c2VsZikgLVx1MDAzZSBLdWlkIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBDcmVkZW50aWFsYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtOTAsMyAmIzQzOzk4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NDcmVkZW50aWFsXHUwMDNlKSB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cHV0X2NyZWQob2JqLmNhc3QoKS5hc19wdHIoKSkgfTtcbiAgICAgfVxuIH1cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NDcmVkZW50aWFsXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkNyZWRlbnRpYWxgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHt9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXG5pbmRleCA2NDVhZmM0OWEyN2Q2NC4uMmU5MGY2YTA2ZmQwNTkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xuQEAgLTgsOCAmIzQzOzgsMTIgQEBcbiAgICAgYmluZGluZ3MsXG4gICAgIGZtdCxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcbiAgICAgICAgIE9wYXF1ZSwgLy9cbiAgICAgfSwgLy9cbkBAIC00NDgsNyAmIzQzOzQ1Miw3IEBAIHB1YiBmbiBuYW1lKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2Q1N0ciB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmF3KCkpIH07XG5AQCAtNDYwLDYgJiM0Mzs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIC8vIFNBRkVUWTogQXMgYnkgdGhlIHR5cGUgaW52YXJpYW50IGBEZXZpY2VgIGNhbiBiZSBzZW50IHRvIGFueSB0aHJlYWQuXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgRGV2aWNlIHt9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG5pbmRleCA1YWVhZDgzNWZiYmMwMi4uY2VlN2UyNTAxMzY4OTkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5yc1xuQEAgLTE0LDcgJiM0MzsxNCwxMCBAQFxuICAgICBmbXQsXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN0cjo6e0NTdHIsIENTdHJpbmd9LFxuLSAgICBzeW5jOjphcmVmOjpBUmVmLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gfTtcbiBcbkBAIC0zNjAsNyAmIzQzOzM2Myw3IEBAIGZuIGZtdChcdTAwMjZzZWxmLCBmOiBcdTAwMjZtdXQgZm10OjpGb3JtYXR0ZXJcdTAwM2MmIzM5O19cdTAwM2UpIC1cdTAwM2UgZm10OjpSZXN1bHQge1xuIH1cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRndOb2RlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge1xuJiM0Mzt1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGVcbiAgICAgICAgIC8vIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuQEAgLTM3NCw2ICYjNDM7Mzc3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRndOb2RlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkZ3Tm9kZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZ3Tm9kZSB7fVxuJiM0MztcbiBlbnVtIE5vZGVcdTAwM2MmIzM5O2FcdTAwM2Uge1xuICAgICBCb3Jyb3dlZChcdTAwMjYmIzM5O2EgRndOb2RlKSxcbiAgICAgT3duZWQoQVJlZlx1MDAzY0Z3Tm9kZVx1MDAzZSksXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbmluZGV4IDQwM2ZjMzUzNTNjNzQwLi4zNjg3NDJhMjU4Mzc2OCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcbkBAIC0xNSw3ICYjNDM7MTUsOCBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gICAgIHdvcmtxdWV1ZTo6e1xuQEAgLTIyNyw3ICYjNDM7MjI4LDcgQEAgZm4gZGVyZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZTZWxmOjpUYXJnZXQge1xuIFxuIC8vIFNBRkVUWTogRFJNIGRldmljZSBvYmplY3RzIGFyZSBhbHdheXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIHRoZSBnZXQvcHV0IGZ1bmN0aW9uc1xuIC8vIHNhdGlzZnkgdGhlIHJlcXVpcmVtZW50cy5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge1xuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIFJlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZGV2X2dldChzZWxmLmFzX3JhdygpKSB9O1xuQEAgLTI0Miw2ICYjNDM7MjQzLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZEZXZpY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge31cbiYjNDM7XG4gaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2UgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IGBiaW5kaW5nczo6ZHJtX2RldmljZTo6ZGV2YCBpcyB2YWxpZCBhcyBsb25nIGFzIHRoZSBEUk0gZGV2aWNlIGl0c2VsZiBpcyB2YWxpZCxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5ycyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXG5pbmRleCAwMWI1YmQ0N2EzMzMyZC4uMzBkMzcxODU3OGZlOGMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbkBAIC0xNyw3ICYjNDM7MTcsNyBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuIH07XG5AQCAtMjksNyAmIzQzOzI5LDcgQEBcbiAjW2NmZyhDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUildXG4gcHViIG1vZCBzaG1lbTtcbiBcbi0vLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgQWx3YXlzUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuJiM0MzsvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuIC8vL1xuIC8vLyBTaW5jZSBhbGwgR0VNIG9iamVjdHMgdXNlIHRoZSBzYW1lIHJlZmNvdW50aW5nIHNjaGVtZS5cbiAjW21hY3JvX2V4cG9ydF1cbkBAIC00Miw3ICYjNDM7NDIsNyBAQCBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQ6aWRlbnQgKSwmIzQzO1x1MDAzZSApPyBmb3IgJHR5cGU6dHlcbiAgICAgICAgICk/XG4gICAgICkgPVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEFsbCBHRU0gb2JqZWN0cyBhcmUgcmVmY291bnRlZC5cbi0gICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwmIzQzO1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4mIzQzOyAgICAgICAgdW5zYWZlIGltcGwgJCggXHUwMDNjJCggJHRwYXJhbV9pZCApLCYjNDM7XHUwMDNlICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgJHR5cGVcbiAgICAgICAgIHdoZXJlXG4gICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiAgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksJiM0MzsgKT9cbkBAIC02MSw2ICYjNDM7NjEsMTQgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdF9wdXQob2JqKSB9O1xuICAgICAgICAgICAgIH1cbiAgICAgICAgIH1cbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzYyR0eXBlXHUwMDNlYCBmcm9tIGFcbiYjNDM7ICAgICAgICAvLyBgXHUwMDI2JHR5cGVgLlxuJiM0MzsgICAgICAgIHVuc2FmZSBpbXBsICQoIFx1MDAzYyQoICR0cGFyYW1faWQgKSwmIzQzO1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4mIzQzOyAgICAgICAgd2hlcmVcbiYjNDM7ICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcbiYjNDM7ICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCYjNDM7ICk/XG4mIzQzOyAgICAgICAge31cbiAgICAgfTtcbiB9XG4gI1tjZmdfYXR0cihub3QoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpLCBhbGxvdyh1bnVzZWQpKV1cbkBAIC05OCw3ICYjNDM7MTA2LDcgQEAgZm4gY2xvc2UoX29iajogXHUwMDI2XHUwMDNjU2VsZjo6RHJpdmVyIGFzIGRybTo6RHJpdmVyXHUwMDNlOjpPYmplY3QsIF9maWxlOiBcdTAwMjZEcml2ZXJGaWxlXHUwMDNjU2VsZlx1MDAzZSlcbiB9XG4gXG4gLy8vIFRyYWl0IHRoYXQgcmVwcmVzZW50cyBhIEdFTSBvYmplY3Qgc3VidHlwZVxuLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCAmIzQzOyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICYjNDM7IEFsd2F5c1JlZkNvdW50ZWQge1xuJiM0MztwdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgJiM0Mzsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCAmIzQzOyBSZWZDb3VudGVkIHtcbiAgICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHJhdyBgZHJtX2dlbV9vYmplY3RgIHN0cnVjdHVyZSwgd2hpY2ggbXVzdCBiZSB2YWxpZCBhcyBsb25nIGFzXG4gICAgIC8vLyB0aGlzIG93bmluZyBvYmplY3QgaXMgdmFsaWQuXG4gICAgIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0O1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG5pbmRleCAyM2VlNjg5YmQyNDAwNS4uNzIwZTU3NDE4MzU4ZGMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9mcy9maWxlLnJzXG5AQCAtMTIsOCAmIzQzOzEyLDE1IEBAXG4gICAgIGNyZWQ6OkNyZWRlbnRpYWwsXG4gICAgIGVycm9yOjp7Y29kZTo6KiwgdG9fcmVzdWx0LCBFcnJvciwgUmVzdWx0fSxcbiAgICAgZm10LFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBUmVmLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuJiM0MzsgICAgdHlwZXM6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE5vdFRocmVhZFNhZmUsXG4mIzQzOyAgICAgICAgT3BhcXVlLCAvL1xuJiM0MzsgICAgfSwgLy9cbiB9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG5AQCAtMTk3LDcgJiM0MzsyMDQsNyBAQCB1bnNhZmUgaW1wbCBTeW5jIGZvciBGaWxlIHt9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb25cbiAvLyBtYWtlcyBgQVJlZlx1MDAzY0ZpbGVcdTAwM2VgIG93biBhIG5vcm1hbCByZWZjb3VudC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGaWxlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRmlsZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0yMTIsNiAmIzQzOzIxOSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0ZpbGVcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0ZpbGVcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RmlsZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge31cbiYjNDM7XG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBmaWxlYC4gTm90IHRocmVhZCBzYWZlLlxuIC8vL1xuIC8vLyBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIGZpbGUgdGhhdCBpcyBub3Qga25vd24gdG8gYmUgc2FmZSB0byB0cmFuc2ZlciBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXG5AQCAtMjMzLDcgJiM0MzsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBMb2NhbEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjTG9jYWxGaWxlXHUwMDNlYCBvd24gYSBub3JtYWwgcmVmY291bnQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxuQEAgLTI0OSw2ICYjNDM7MjYwLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjTG9jYWxGaWxlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NMb2NhbEZpbGVcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2TG9jYWxGaWxlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHt9XG4mIzQzO1xuIGltcGwgTG9jYWxGaWxlIHtcbiAgICAgLy8vIENvbnN0cnVjdHMgYSBuZXcgYHN0cnVjdCBmaWxlYCB3cmFwcGVyIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuaW5kZXggNjI0Yjk3MWNhOGIwYjIuLjAyYjJjOTIyMGViMTFjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9pMmMucnNcbkBAIC0xOCw3ICYjNDM7MTgsOCBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXG4gfTtcbkBAIC00MjQsNyAmIzQzOzQyNSw3IEBAIHB1YiBmbiBnZXQoaW5kZXg6IGkzMikgLVx1MDAzZSBSZXN1bHRcdTAwM2NBUmVmXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoSTJjQWRhcHRlcik7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0FkYXB0ZXJgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfZ2V0X2FkYXB0ZXIoc2VsZi5pbmRleCgpKSB9O1xuQEAgLTQzNSw2ICYjNDM7NDM2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH1cbiAgICAgfVxuIH1cbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhblxuJiM0MzsvLyBgXHUwMDI2STJjQWRhcHRlcmAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge31cbiBcbiAvLy8gVGhlIGkyYyBib2FyZCBpbmZvIHJlcHJlc2VudGF0aW9uXG4gLy8vXG5AQCAtNTAwLDcgJiM0Mzs1MDQsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcdTAwM2NDdHhcdTAwM2UgZm9yIEkyY0NsaWVudFx1MDAzY0NcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNDbGllbnQpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJMmNDbGllbnRgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUxMSw2ICYjNDM7NTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9kZXZpY2UoXHUwMDI2cmF3IG11dCAoKm9iai5hc19yZWYoKS5hc19yYXcoKSkuZGV2KSB9XG4gICAgIH1cbiB9XG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYW5cbiYjNDM7Ly8gYFx1MDAyNkkyY0NsaWVudGAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fVxuIFxuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBJMmNDbGllbnRcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbGliLnJzIGIvcnVzdC9rZXJuZWwvbGliLnJzXG5pbmRleCA5NTEyYWY3MTU2ZGYyYS4uZWI1MjU2MjA0YTE3NDIgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9saWIucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2xpYi5yc1xuQEAgLTEwMSw2ICYjNDM7MTAxLDcgQEBcbiBwdWIgbW9kIG9mO1xuICNbY2ZnKENPTkZJR19QTV9PUFApXVxuIHB1YiBtb2Qgb3BwO1xuJiM0MztwdWIgbW9kIG93bmVkO1xuIHB1YiBtb2QgcGFnZTtcbiAjW2NmZyhDT05GSUdfUENJKV1cbiBwdWIgbW9kIHBjaTtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9tbS5ycyBiL3J1c3Qva2VybmVsL21tLnJzXG5pbmRleCA0NzY0ZDdiNjhmMmE3Zi4uODNlZDk0ZmNhMTRjYTIgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9tbS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbW0ucnNcbkBAIC0xMyw4ICYjNDM7MTMsMTUgQEBcbiBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICAgICAgTm90VGhyZWFkU2FmZSxcbiYjNDM7ICAgICAgICBPcGFxdWUsIC8vXG4mIzQzOyAgICB9LCAvL1xuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTU1LDcgJiM0Mzs2Miw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge31cbiBcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxuQEAgLTY5LDYgJiM0Mzs3Niw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY01tXHUwMDNlYCBmcm9tIGEgYFx1MDAyNk1tYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW0ge31cbiYjNDM7XG4gLy8vIEEgd3JhcHBlciBmb3IgdGhlIGtlcm5lbCYjMzk7cyBgc3RydWN0IG1tX3N0cnVjdGAuXG4gLy8vXG4gLy8vIFRoaXMgdHlwZSBpcyBsaWtlIFtgTW1gXSwgYnV0IHdpdGggbm9uLXplcm8gYG1tX3VzZXJzYC4gSXQgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGBtbV91c2Vyc2AgY2FuXG5AQCAtOTEsNyAmIzQzOzEwMSw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXIge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyIHt9XG4gXG4gLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtMTA1LDYgJiM0MzsxMTUsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1XaXRoVXNlclx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZNbVdpdGhVc2VyYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7fVxuJiM0MztcbiAvLyBNYWtlIGFsbCBgTW1gIG1ldGhvZHMgYXZhaWxhYmxlIG9uIGBNbVdpdGhVc2VyYC5cbiBpbXBsIERlcmVmIGZvciBNbVdpdGhVc2VyIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBNbTtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5ycyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzXG5pbmRleCBiOGQyZjA1MTIyNWM3My4uOGZiYzM5NmU0NjAyODEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbkBAIC0xMCw3ICYjNDM7MTAsMTEgQEBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4gICAgIG1tOjpNbVdpdGhVc2VyLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjpBbHdheXNSZWZDb3VudGVkLFxuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTM0LDcgJiM0MzszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cbkBAIC00OCw2ICYjNDM7NTIsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1XaXRoVXNlckFzeW5jXHUwMDNlYFxuJiM0MzsvLyBmcm9tIGEgYFx1MDAyNk1tV2l0aFVzZXJBc3luY2AuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuJiM0MztcbiAvLyBNYWtlIGFsbCBgTW1XaXRoVXNlcmAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJBc3luY2AuXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29wcC5ycyBiL3J1c3Qva2VybmVsL29wcC5yc1xuaW5kZXggNjJlNDQ2NzYxMjVkMTAuLmI4ZGI2YmRlZmQwNzcxIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvb3BwLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vcHAucnNcbkBAIC0xNiw4ICYjNDM7MTYsMTQgQEBcbiAgICAgZmZpOjp7Y19jaGFyLCBjX3Vsb25nfSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgc3RyOjpDU3RyaW5nLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjpPcGFxdWUsXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQVJlZixcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBPcGFxdWUsIC8vXG4mIzQzOyAgICB9LCAvL1xuIH07XG4gXG4gI1tjZmcoQ09ORklHX0NQVV9GUkVRKV1cbkBAIC0xMDQxLDcgJiM0MzsxMDQ3LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgT1BQIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgT1BQIHt9XG4gXG4gLy8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBbYE9QUGBdIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE9QUCB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE9QUCB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0xMDU1LDYgJiM0MzsxMDYxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjT1BQXHUwMDNlYCBmcm9tIGFuXG4mIzQzOy8vIGBcdTAwMjZPUFBgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge31cbiYjNDM7XG4gaW1wbCBPUFAge1xuICAgICAvLy8gQ3JlYXRlcyBhbiBvd25lZCByZWZlcmVuY2UgdG8gYSBbYE9QUGBdIGZyb20gYSB2YWxpZCBwb2ludGVyLlxuICAgICAvLy9cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vd25lZC5ycyBiL3J1c3Qva2VybmVsL293bmVkLnJzXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxuaW5kZXggMDAwMDAwMDAwMDAwMDAuLmFjYjYxMWYwODRmZjM1XG4tLS0gL2Rldi9udWxsXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xuQEAgLTAsMCAmIzQzOzEsMzczIEBAXG4mIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4mIzQzO1xuJiM0MzsvLyEgVW5pcXVlIG93bmVkIHBvaW50ZXIgdHlwZXMgZm9yIG9iamVjdHMgd2l0aCBjdXN0b20gZHJvcCBsb2dpYy5cbiYjNDM7Ly8hXG4mIzQzOy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0XG4mIzQzOy8vISBhcmUgb3duZWQgYnkgUnVzdCwgYnV0IG5lZWQgdG8gYmUgZnJlZWQgdGhyb3VnaCB0aGUgQyBBUEkuXG4mIzQzO1xuJiM0Mzt1c2UgY29yZTo6e1xuJiM0MzsgICAgbWVtOjpNYW51YWxseURyb3AsXG4mIzQzOyAgICBvcHM6OntcbiYjNDM7ICAgICAgICBEZXJlZixcbiYjNDM7ICAgICAgICBEZXJlZk11dCwgLy9cbiYjNDM7ICAgIH0sXG4mIzQzOyAgICBwaW46OlBpbixcbiYjNDM7ICAgIHB0cjo6Tm9uTnVsbCwgLy9cbiYjNDM7fTtcbiYjNDM7dXNlIGtlcm5lbDo6e1xuJiM0MzsgICAgc3luYzo6YXJlZjo6QVJlZixcbiYjNDM7ICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvL1xuJiM0Mzt9O1xuJiM0MztcbiYjNDM7dXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlO1xuJiM0MztcbiYjNDM7Ly8vIFR5cGVzIHRoYXQgc3BlY2lmeSB0aGVpciBvd24gd2F5IG9mIHBlcmZvcm1pbmcgYWxsb2NhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFR5cGljYWxseSwgdGhpcyB0cmFpdFxuJiM0MzsvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLlxuJiM0MzsvLy9cbiYjNDM7Ly8vIEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSByZWZlcmVuY2VkIHZpYSB0aGUgW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXSBwb2ludGVyIHR5cGUuXG4mIzQzOy8vLyAgLSBUaGlzIGlzIHVzZWZ1bCB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0byB0aWUgdGhlIGxpZmV0aW1lIG9mIGFuIG9iamVjdCByZWZlcmVuY2UgdG8gYW4gb3duZWRcbiYjNDM7Ly8vICAgIG9iamVjdCwgcmF0aGVyIHRoYW4gcGFzcyBhcm91bmQgYSBiYXJlIHJlZmVyZW5jZS5cbiYjNDM7Ly8vICAtIFtgT3duYWJsZWBdIHR5cGVzIGNhbiBkZWZpbmUgY3VzdG9tIGRyb3AgbG9naWMgdGhhdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBvd25lZCByZWZlcmVuY2VcbiYjNDM7Ly8vICAgIG9mIHR5cGUgW2BPd25lZFx1MDAzY19cdTAwM2VgXSBwb2ludGluZyB0byB0aGUgb2JqZWN0IGlzIGRyb3BwZWQuXG4mIzQzOy8vL1xuJiM0MzsvLy8gTm90ZTogVGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudGluZywgYmVjYXVzZSBpdFxuJiM0MzsvLy8gcmVwcmVzZW50cyBhIHVuaXF1ZSwgb3duZWQgcmVmZXJlbmNlLiBJZiByZWZlcmVuY2UgY291bnRpbmcgKG9uIHRoZSBSdXN0IHNpZGUpIGlzIHJlcXVpcmVkLFxuJiM0MzsvLy8gW2BSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkLiBbYE93bmFibGVSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIGNvbnZlcnNpb25cbiYjNDM7Ly8vIGJldHdlZW4gdW5pcXVlIGFuZCBzaGFyZWQgKHJlZmVyZW5jZSBjb3VudGVkKSBvd25lcnNoaXAgaXMgbmVlZGVkLlxuJiM0MzsvLy9cbiYjNDM7Ly8vICMgRXhhbXBsZXNcbiYjNDM7Ly8vXG4mIzQzOy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGggW2BPd25lZGBdIGxvb2tzIGxpa2VcbiYjNDM7Ly8vIHRoaXM6XG4mIzQzOy8vL1xuJiM0MzsvLy8gYGBgXG4mIzQzOy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxuJiM0MzsvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDtcbiYjNDM7Ly8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcbiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6c3luYzo6Z2xvYmFsX2xvY2s7XG4mIzQzOy8vLyAjIHVzZSBrZXJuZWw6OmFsbG9jOjp7ZmxhZ3MsIGtib3g6OktCb3gsIEFsbG9jRXJyb3J9O1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjp0eXBlczo6e093bmVkLCBPd25hYmxlfTtcbiYjNDM7Ly8vXG4mIzQzOy8vLyAvLyBMZXQmIzM5O3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLlxuJiM0MzsvLy8ga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jayEge1xuJiM0MzsvLy8gICAgIC8vIFNBRkVUWTogd2UgY2FsbCBgaW5pdCgpYCByaWdodCBiZWxvdywgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuXG4mIzQzOy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXhcdTAwM2N1c2l6ZVx1MDAzZSA9IDA7XG4mIzQzOy8vLyB9XG4mIzQzOy8vLyAvLyBTQUZFVFk6IFdlIGNhbGwgYGluaXQoKWAgb25seSBvbmNlLCBoZXJlLlxuJiM0MzsvLy8gdW5zYWZlIHsgRk9PX0FMTE9DX0NPVU5ULmluaXQoKSB9O1xuJiM0MzsvLy9cbiYjNDM7Ly8vIHN0cnVjdCBGb287XG4mIzQzOy8vL1xuJiM0MzsvLy8gaW1wbCBGb28ge1xuJiM0MzsvLy8gICAgIGZuIG5ldygpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbiYjNDM7Ly8vICAgICAgICAgLy8gV2UgYXJlIGp1c3QgdXNpbmcgYSBgS0JveGAgaGVyZSB0byBoYW5kbGUgdGhlIGFjdHVhbCBhbGxvY2F0aW9uLCBhcyBvdXIgYEZvb2AgaXNcbiYjNDM7Ly8vICAgICAgICAgLy8gbm90IGFjdHVhbGx5IGEgQy1hbGxvY2F0ZWQgb2JqZWN0LlxuJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6bmV3KFxuJiM0MzsvLy8gICAgICAgICAgICAgRm9vIHt9LFxuJiM0MzsvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXG4mIzQzOy8vLyAgICAgICAgICk/O1xuJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xuJiM0MzsvLy8gICAgICAgICAvLyBDb3VudCBuZXcgYWxsb2NhdGlvblxuJiM0MzsvLy8gICAgICAgICAqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSAmIzQzOz0gMTtcbiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOlxuJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuXG4mIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuXG4mIzQzOy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXG4mIzQzOy8vLyAgICAgfVxuJiM0MzsvLy8gfVxuJiM0MzsvLy9cbiYjNDM7Ly8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcbiYjNDM7Ly8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3hcdTAwM2NTZWxmXHUwMDNlYF0gaXMgc3RpbGwgYWxpdmUuIFdlIGNhbiBwYXNzIG93bmVyc2hpcCB0byB0aGUgW2BLQm94YF0sIGFzXG4mIzQzOy8vLyAgICAgICAgIC8vIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5cbiYjNDM7Ly8vICAgICAgICAgZHJvcCh1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9KTtcbiYjNDM7Ly8vICAgICAgICAgLy8gQ291bnQgcmVsZWFzZWQgYWxsb2NhdGlvblxuJiM0MzsvLy8gICAgICAgICAqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSAtPSAxO1xuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyB7XG4mIzQzOy8vLyAgICBsZXQgZm9vID0gRm9vOjpuZXcoKT87XG4mIzQzOy8vLyAgICBhc3NlcnQhKCpGT09fQUxMT0NfQ09VTlQubG9jaygpID09IDEpO1xuJiM0MzsvLy8gfVxuJiM0MzsvLy8gLy8gYGZvb2AgaXMgb3V0IG9mIHNjb3BlIG5vdywgc28gd2UgZXhwZWN0IG5vIGxpdmUgYWxsb2NhdGlvbnMuXG4mIzQzOy8vLyBhc3NlcnQhKCpGT09fQUxMT0NfQ09VTlQubG9jaygpID09IDApO1xuJiM0MzsvLy8gIyBPazo6XHUwMDNjKCksIEVycm9yXHUwMDNlKCgpKVxuJiM0MzsvLy8gYGBgXG4mIzQzO3B1YiB0cmFpdCBPd25hYmxlIHtcbiYjNDM7ICAgIC8vLyBUZWFyIGRvd24gdGhpcyBgT3duYWJsZWAuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBJbXBsZW1lbnRlcnMgb2YgYE93bmFibGVgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjbGVhbiB1cCB0aGUgdXNlIG9mIGBTZWxmYC4gVGhpcyBjYW5cbiYjNDM7ICAgIC8vLyBpbmNsdWRlIGZyZWVpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gIyBTYWZldHlcbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLFxuJiM0MzsgICAgLy8vIGFuZCB0aGF0IHRoaXMgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLiBgdGhpc2AgbXVzdCBub3QgYmUgdXNlZFxuJiM0MzsgICAgLy8vIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFzIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGZyZWVkLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gYHRoaXNgIGlzIHBpbm5lZCBhbmQgaW1wbGVtZW50ZXJzIG9mIHRoaXMgbWV0aG9kIG11c3Qgb2JzZXJ2ZSB0aGlzIGNvbnN0cmFpbnQuXG4mIzQzOyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSk7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8vLyBBIG11dGFibGUgcmVmZXJlbmNlIHRvIGFuIG93bmVkIGBUYC5cbiYjNDM7Ly8vXG4mIzQzOy8vLyBUaGUgW2BPd25hYmxlYF0gaXMgYXV0b21hdGljYWxseSBmcmVlZCBvciByZWxlYXNlZCB3aGVuIGFuIGluc3RhbmNlIG9mIFtgT3duZWRgXSBpc1xuJiM0MzsvLy8gZHJvcHBlZC5cbiYjNDM7Ly8vXG4mIzQzOy8vLyAjIEludmFyaWFudHNcbiYjNDM7Ly8vXG4mIzQzOy8vLyAtIFVudGlsIGBUOjpyZWxlYXNlYCBpcyBjYWxsZWQsIHRoaXMgYE93bmVkXHUwMDNjVFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXG4mIzQzOy8vLyAtIFRoZSBgVGAgdmFsdWUgaXMgcGlubmVkLlxuJiM0MztwdWIgc3RydWN0IE93bmVkXHUwMDNjVDogT3duYWJsZVx1MDAzZSB7XG4mIzQzOyAgICBwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlLFxuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBPd25lZFx1MDAzY1RcdTAwM2Uge1xuJiM0MzsgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BPd25lZGBdLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuXG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyAjIFNhZmV0eVxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0OlxuJiM0MzsgICAgLy8vIC0gYHB0cmAgcG9pbnRzIHRvIGEgdmFsaWQgaW5zdGFuY2Ugb2YgYFRgLlxuJiM0MzsgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZFx1MDAzY1RcdTAwM2VgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLlxuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4mIzQzOyAgICAgICAgLy8gSU5WQVJJQU5UOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnQgd2Ugc2F0aXNmeSB0aGUgZmlyc3QgaW52YXJpYW50IG9mIGBTZWxmYC5cbiYjNDM7ICAgICAgICAvLyBXZSB0cmVhdCBgVGAgYXMgcGlubmVkIGZyb20gbm93IG9uLlxuJiM0MzsgICAgICAgIFNlbGYgeyBwdHIgfVxuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgIC8vLyBDb25zdW1lcyB0aGUgW2BPd25lZGBdLCByZXR1cm5pbmcgYSByYXcgcG9pbnRlci5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgZHJvcCB0aGUgdW5kZXJseWluZyBgVGAuIFdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zLCBvd25lcnNoaXAgb2YgdGhlXG4mIzQzOyAgICAvLy8gdW5kZXJseWluZyBgVGAgaXMgd2l0aCB0aGUgY2FsbGVyLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gTm90ZSB0aGF0IHRoZSByZXR1cm5lZCBwb2ludGVyIGlzIHBpbm5lZC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtXHUwMDNlIE5vbk51bGxcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgICAgICBNYW51YWxseURyb3A6Om5ldyhtZSkucHRyXG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgLy8vIEdldCBhIHBpbm5lZCBtdXRhYmxlIHJlZmVyZW5jZSB0byB0aGUgZGF0YSBvd25lZCBieSB0aGlzIGBPd25lZFx1MDAzY1RcdTAwM2VgLlxuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBwdWIgZm4gYXNfcGluX211dChcdTAwMjZtdXQgc2VsZikgLVx1MDAzZSBQaW5cdTAwM2NcdTAwMjZtdXQgVFx1MDAzZSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcbiYjNDM7ICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cbiYjNDM7ICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9O1xuJiM0MztcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9XG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGFuIFtgT3duZWRcdTAwM2NUXHUwMDNlYF0gdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgW2BTZW5kYF0sXG4mIzQzOy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BPd25lZFx1MDAzY1RcdTAwM2VgXSBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgdGhlIGBUYC5cbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBPd25hYmxlICYjNDM7IFNlbmRcdTAwM2UgU2VuZCBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO1xuJiM0MzsvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBbYFx1MDAyNk93bmVkXHUwMDNjVFx1MDAzZWBdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU3luY2BdLFxuJiM0MzsvLyBiZWNhdXNlIG9mIHRoZSBvd25lcnNoaXAgaW52YXJpYW50LiBTZW5kaW5nIGFuIFtgXHUwMDI2T3duZWRcdTAwM2NUXHUwMDNlYF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgXHUwMDI2VGAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogT3duYWJsZSAmIzQzOyBTeW5jXHUwMDNlIFN5bmMgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7fVxuJiM0MztcbiYjNDM7aW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRGVyZWYgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICB0eXBlIFRhcmdldCA9IFQ7XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfVxuJiM0MzsgICAgfVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogT3duYWJsZSAmIzQzOyBVbnBpblx1MDAzZSBEZXJlZk11dCBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgZm4gZGVyZWZfbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5XG4mIzQzOyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfVxuJiM0MzsgICAgfVxuJiM0Mzt9XG4mIzQzO1xuJiM0MztpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBEcm9wIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBleGlzdGVuY2Ugb2YgYFx1MDAyNm11dCBzZWxmYCB3ZSBleGNsdXNpdmVseSBvd24gYHNlbGZgIGFuZCB0aGUgdW5kZXJseWluZyBgVGAuIEFzXG4mIzQzOyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07XG4mIzQzOyAgICB9XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8vIFNBRkVUWTogV2UgZGVyaXZlIHRoZSBwb2ludGVyIHRvIGBUYCBmcm9tIGEgdmFsaWQgYFRgLCBzbyB0aGUgcmV0dXJuZWRcbiYjNDM7Ly8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLlxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRm9yZWlnbk93bmFibGUgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICBjb25zdCBGT1JFSUdOX0FMSUdOOiB1c2l6ZSA9IGNvcmU6Om1lbTo6YWxpZ25fb2Y6Olx1MDAzY1RcdTAwM2UoKTtcbiYjNDM7XG4mIzQzOyAgICB0eXBlIEJvcnJvd2VkXHUwMDNjJiMzOTthXHUwMDNlXG4mIzQzOyAgICAgICAgPSBcdTAwMjYmIzM5O2EgVFxuJiM0MzsgICAgd2hlcmVcbiYjNDM7ICAgICAgICBTZWxmOiAmIzM5O2E7XG4mIzQzOyAgICB0eXBlIEJvcnJvd2VkTXV0XHUwMDNjJiMzOTthXHUwMDNlXG4mIzQzOyAgICAgICAgPSBQaW5cdTAwM2NcdTAwMjYmIzM5O2EgbXV0IFRcdTAwM2VcbiYjNDM7ICAgIHdoZXJlXG4mIzQzOyAgICAgICAgU2VsZjogJiMzOTthO1xuJiM0MztcbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgZm4gaW50b19mb3JlaWduKHNlbGYpIC1cdTAwM2UgKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkIHtcbiYjNDM7ICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpXG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICB1bnNhZmUgZm4gZnJvbV9mb3JlaWduKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXHUwMDNlIFNlbGYge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IGNvbnRyYWN0LCBgcHRyYCBjYW1lIGZyb20gYGludG9fZm9yZWlnbmAgYW5kIGNhbm5vdCBiZSBudWxsLlxuJiM0MzsgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHB0ci5jYXN0KCkpIH07XG4mIzQzO1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgd2FzIHJldHVybmVkIGJ5IGBpbnRvX2ZvcmVpZ25gLCB3aGljaCBnYXZlXG4mIzQzOyAgICAgICAgLy8gdXAgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiBhIHZhbGlkLCBwaW5uZWQgYFRgOyB3ZSByZXRha2UgdGhhdCBvd25lcnNoaXAgaGVyZS5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocHRyKSB9XG4mIzQzOyAgICB9XG4mIzQzO1xuJiM0MzsgICAgI1tpbmxpbmVdXG4mIzQzOyAgICB1bnNhZmUgZm4gYm9ycm93XHUwMDNjJiMzOTthXHUwMDNlKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXHUwMDNlIFNlbGY6OkJvcnJvd2VkXHUwMDNjJiMzOTthXHUwMDNlIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYVxuJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZSBmb3IgYCYjMzk7YWAuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnB0ci5jYXN0KCkgfVxuJiM0MzsgICAgfVxuJiM0MztcbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgdW5zYWZlIGZuIGJvcnJvd19tdXRcdTAwM2MmIzM5O2FcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZjo6Qm9ycm93ZWRNdXRcdTAwM2MmIzM5O2FcdTAwM2Uge1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhXG4mIzQzOyAgICAgICAgLy8gdW5pcXVlIHJlZmVyZW5jZSBmb3IgYCYjMzk7YWAuXG4mIzQzOyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgXHUwMDI2bXV0ICpwdHIuY2FzdCgpIH07XG4mIzQzO1xuJiM0MzsgICAgICAgIC8vIFNBRkVUWTogV2UgbmV2ZXIgbW92ZSBvdXQgb2YgaW5uZXIsIGFuZCB3ZSBkbyBub3QgaGFuZCBvdXQgbXV0YWJsZVxuJiM0MzsgICAgICAgIC8vIHJlZmVyZW5jZXMgd2hlbiBgVDogIVVucGluYC5cbiYjNDM7ICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQoaW5uZXIpIH1cbiYjNDM7ICAgIH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7Ly8vIEEgdHJhaXQgZm9yIG9iamVjdHMgdGhhdCBjYW4gYmUgd3JhcHBlZCBpbiBlaXRoZXIgb25lIG9mIHRoZSByZWZlcmVuY2UgdHlwZXMgW2BPd25lZGBdIGFuZFxuJiM0MzsvLy8gW2BBUmVmYF0uXG4mIzQzOy8vL1xuJiM0MzsvLy8gIyBFeGFtcGxlc1xuJiM0MzsvLy9cbiYjNDM7Ly8vIEEgbWluaW1hbCBleGFtcGxlIGltcGxlbWVudGF0aW9uIG9mIFtgT3duYWJsZVJlZkNvdW50ZWRgXSwgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoXG4mIzQzOy8vLyBbYEFSZWZgXSBhbmQgW2BPd25lZGBdIGxvb2tzIGxpa2UgdGhpczpcbiYjNDM7Ly8vXG4mIzQzOy8vLyBgYGBcbiYjNDM7Ly8vICMgIyFbZXhwZWN0KGNsaXBweTo6ZGlzYWxsb3dlZF9uYW1lcyldXG4mIzQzOy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsO1xuJiM0MzsvLy8gIyB1c2UgY29yZTo6cHRyOjpOb25OdWxsO1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTtcbiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9O1xuJiM0MzsvLy8gIyB1c2Uga2VybmVsOjp0eXBlczo6e093bmVkLCBPd25hYmxlLCBPd25hYmxlUmVmQ291bnRlZH07XG4mIzQzOy8vL1xuJiM0MzsvLy8gLy8gQW4gaW50ZXJuYWxseSByZWZjb3VudGVkIHN0cnVjdCBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy5cbiYjNDM7Ly8vIC8vXG4mIzQzOy8vLyAvLyAjIEludmFyaWFudHNcbiYjNDM7Ly8vIC8vXG4mIzQzOy8vLyAvLyAtIGByZWZjb3VudGAgaXMgYWx3YXlzIG5vbi16ZXJvIGZvciBhIHZhbGlkIG9iamVjdC5cbiYjNDM7Ly8vIC8vIC0gYHJlZmNvdW50YCBpcyBcdTAwM2UxIGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgUnVzdCByZWZlcmVuY2UgdG8gaXQuXG4mIzQzOy8vLyAvL1xuJiM0MzsvLy8gc3RydWN0IEZvbyB7XG4mIzQzOy8vLyAgICAgcmVmY291bnQ6IENlbGxcdTAwM2N1c2l6ZVx1MDAzZSxcbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyBpbXBsIEZvbyB7XG4mIzQzOy8vLyAgICAgZm4gbmV3KCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuJiM0MzsvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xuJiM0MzsvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXG4mIzQzOy8vLyAgICAgICAgIC8vIElOVkFSSUFOVDogV2UgaW5pdGlhbGl6ZSBgcmVmY291bnRgIHRvIDEsIHNhdGlzZnlpbmcgdGhlIGludmFyaWFudHMuXG4mIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXG4mIzQzOy8vLyAgICAgICAgICAgICBGb28ge1xuJiM0MzsvLy8gICAgICAgICAgICAgICAgIHJlZmNvdW50OiBDZWxsOjpuZXcoMSksXG4mIzQzOy8vLyAgICAgICAgICAgICB9LFxuJiM0MzsvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXG4mIzQzOy8vLyAgICAgICAgICk/O1xuJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xuJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6XG4mIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cbiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cbiYjNDM7Ly8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcbiYjNDM7Ly8vICAgICB9XG4mIzQzOy8vLyB9XG4mIzQzOy8vL1xuJiM0MzsvLy8gLy8gU0FGRVRZOiBXZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBlYWNoIHRpbWUgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBvbmx5IGZyZWVcbiYjNDM7Ly8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uXG4mIzQzOy8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBGb28ge1xuJiM0MzsvLy8gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuJiM0MzsvLy8gICAgICAgICBzZWxmLnJlZmNvdW50LnJlcGxhY2Uoc2VsZi5yZWZjb3VudC5nZXQoKSAmIzQzOyAxKTtcbiYjNDM7Ly8vICAgICB9XG4mIzQzOy8vL1xuJiM0MzsvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4mIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogQnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8sXG4mIzQzOy8vLyAgICAgICAgIC8vIGltcGx5aW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyB2YWxpZC5cbiYjNDM7Ly8vICAgICAgICAgbGV0IHJlZmNvdW50ID0gdW5zYWZlIHsgXHUwMDI2dGhpcy5hc19yZWYoKS5yZWZjb3VudCB9O1xuJiM0MzsvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxO1xuJiM0MzsvLy8gICAgICAgICBpZiBuZXdfcmVmY291bnQgPT0gMCB7XG4mIzQzOy8vLyAgICAgICAgICAgICAvLyBUaGUgYEZvb2Agd2lsbCBiZSBkcm9wcGVkIHdoZW4gYEtCb3hgIGdvZXMgb3V0IG9mIHNjb3BlLlxuJiM0MzsvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94XHUwMDNjRm9vXHUwMDNlYF0gaXMgc3RpbGwgYWxpdmUgYXMgdGhlIG9sZCByZWZjb3VudCBpcyAxLiBXZSBjYW4gcGFzc1xuJiM0MzsvLy8gICAgICAgICAgICAgLy8gb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSBhcyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sXG4mIzQzOy8vLyAgICAgICAgICAgICAvLyB0aGUgYFNlbGZgIHdpbGwgbm8gbG9uZ2VyIGJlIHVzZWQgYnkgdGhlIGNhbGxlci5cbiYjNDM7Ly8vICAgICAgICAgICAgIHVuc2FmZSB7IEtCb3g6OmZyb21fcmF3KHRoaXMuYXNfcHRyKCkpIH07XG4mIzQzOy8vLyAgICAgICAgIH0gZWxzZSB7XG4mIzQzOy8vLyAgICAgICAgICAgICByZWZjb3VudC5yZXBsYWNlKG5ld19yZWZjb3VudCk7XG4mIzQzOy8vLyAgICAgICAgIH1cbiYjNDM7Ly8vICAgICB9XG4mIzQzOy8vLyB9XG4mIzQzOy8vL1xuJiM0MzsvLy8gaW1wbCBPd25hYmxlUmVmQ291bnRlZCBmb3IgRm9vIHtcbiYjNDM7Ly8vICAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZlx1MDAzY1NlbGZcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlLCBBUmVmXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4mIzQzOy8vLyAgICAgICAgIGlmIHRoaXMucmVmY291bnQuZ2V0KCkgPT0gMSB7XG4mIzQzOy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBgRm9vYCBpcyBzdGlsbCBhbGl2ZSBhbmQgaGFzIG5vIG90aGVyIFJ1c3QgcmVmZXJlbmNlcyBhcyB0aGUgcmVmY291bnRcbiYjNDM7Ly8vICAgICAgICAgICAgIC8vIGlzIDEuXG4mIzQzOy8vLyAgICAgICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcoQVJlZjo6aW50b19yYXcodGhpcykpIH0pXG4mIzQzOy8vLyAgICAgICAgIH0gZWxzZSB7XG4mIzQzOy8vLyAgICAgICAgICAgICBFcnIodGhpcylcbiYjNDM7Ly8vICAgICAgICAgfVxuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyAgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIEFSZWZcdTAwM2NTZWxmXHUwMDNlIHtcbiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOiBBbiBgT3duZWRcdTAwM2NGb29cdTAwM2VgIGhvbGRzIHRoZSB1bmlxdWUgcmVmZXJlbmNlIChyZWZjb3VudCAxKSwgd2hpY2ggd2UgdHJhbnNmZXIgdG9cbiYjNDM7Ly8vICAgICAgICAgLy8gdGhlIG5ldyBgQVJlZmAuXG4mIzQzOy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfVxuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XG4mIzQzOy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOiBVc2luZyBgZGVjX3JlZigpYCBmcm9tIFtgUmVmQ291bnRlZGBdIHRvIHJlbGVhc2UgaXMgb2theSwgYXMgdGhlIHJlZmNvdW50IGlzXG4mIzQzOy8vLyAgICAgICAgIC8vIGFsd2F5cyAxIGZvciBhbiBbYE93bmVkXHUwMDNjRm9vXHUwMDNlYF0uXG4mIzQzOy8vLyAgICAgICAgIHVuc2FmZSB7IEZvbzo6ZGVjX3JlZih0aGlzKSB9O1xuJiM0MzsvLy8gICAgIH1cbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vXG4mIzQzOy8vLyBsZXQgZm9vID0gRm9vOjpuZXcoKT87XG4mIzQzOy8vLyBsZXQgZm9vID0gQVJlZjo6ZnJvbShmb28pO1xuJiM0MzsvLy8ge1xuJiM0MzsvLy8gICAgIGxldCBiYXIgPSBmb28uY2xvbmUoKTtcbiYjNDM7Ly8vICAgICBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShiYXIpLmlzX2VycigpKTtcbiYjNDM7Ly8vIH1cbiYjNDM7Ly8vIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGZvbykuaXNfb2soKSk7XG4mIzQzOy8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4mIzQzOy8vLyBgYGBcbiYjNDM7cHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICYjNDM7IE93bmFibGUgJiM0MzsgU2l6ZWQge1xuJiM0MzsgICAgLy8vIENoZWNrcyBpZiB0aGUgW2BBUmVmYF0gaXMgdW5pcXVlIGFuZCBjb252ZXJ0cyBpdCB0byBhbiBbYE93bmVkYF0gaWYgdGhhdCBpcyB0aGUgY2FzZS5cbiYjNDM7ICAgIC8vLyBPdGhlcndpc2UgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC5cbiYjNDM7ICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXHUwMDNjU2VsZlx1MDAzZSkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2UsIEFSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlO1xuJiM0MztcbiYjNDM7ICAgIC8vLyBDb252ZXJ0cyB0aGUgW2BPd25lZGBdIGludG8gYW4gW2BBUmVmYF0uXG4mIzQzOyAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZFx1MDAzY1NlbGZcdTAwM2UpIC1cdTAwM2UgQVJlZlx1MDAzY1NlbGZcdTAwM2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzO2ltcGxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFx1MDAzZSBUcnlGcm9tXHUwMDNjQVJlZlx1MDAzY1RcdTAwM2VcdTAwM2UgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4mIzQzOyAgICB0eXBlIEVycm9yID0gQVJlZlx1MDAzY1RcdTAwM2U7XG4mIzQzOyAgICAvLy8gVHJpZXMgdG8gY29udmVydCB0aGUgW2BBUmVmYF0gdG8gYW4gW2BPd25lZGBdIGJ5IGNhbGxpbmdcbiYjNDM7ICAgIC8vLyBbYHRyeV9mcm9tX3NoYXJlZCgpYF0oT3duYWJsZVJlZkNvdW50ZWQ6OnRyeV9mcm9tX3NoYXJlZCkuIEluIGNhc2UgdGhlIFtgQVJlZmBdIGlzIG5vdFxuJiM0MzsgICAgLy8vIHVuaXF1ZSwgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC5cbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgZm4gdHJ5X2Zyb20oYjogQVJlZlx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NUXHUwMDNlLCBTZWxmOjpFcnJvclx1MDAzZSB7XG4mIzQzOyAgICAgICAgVDo6dHJ5X2Zyb21fc2hhcmVkKGIpXG4mIzQzOyAgICB9XG4mIzQzO31cbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wYWdlLnJzIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xuaW5kZXggOGFmZmQ4MjYyODkxYmEuLmM4OGZkYTA5ZWFkNWFhIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xuQEAgLTEyLDE2ICYjNDM7MTIsMTYgQEBcbiAgICAgICAgIGNvZGU6OiosXG4gICAgICAgICBSZXN1bHQsIC8vXG4gICAgIH0sXG4mIzQzOyAgICB0eXBlczo6e1xuJiM0MzsgICAgICAgIE9wYXF1ZSxcbiYjNDM7ICAgICAgICBPd25hYmxlLFxuJiM0MzsgICAgICAgIE93bmVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLCAvL1xuIH07XG4tdXNlIGNvcmU6Ontcbi0gICAgbWFya2VyOjpQaGFudG9tRGF0YSxcbi0gICAgbWVtOjpNYW51YWxseURyb3AsXG4tICAgIG9wczo6RGVyZWYsXG4tICAgIHB0cjo6e1xuLSAgICAgICAgc2VsZixcbi0gICAgICAgIE5vbk51bGwsIC8vXG4tICAgIH0sIC8vXG4mIzQzO3VzZSBjb3JlOjpwdHI6OntcbiYjNDM7ICAgIHNlbGYsXG4mIzQzOyAgICBOb25OdWxsLCAvL1xuIH07XG4gXG4gLy8vIEEgYml0d2lzZSBzaGlmdCBmb3IgdGhlIHBhZ2Ugc2l6ZS5cbkBAIC02NSw5MyAmIzQzOzY1LDI5IEBAIHB1YiBjb25zdCBmbiBwYWdlX2FsaWduKGFkZHI6IHVzaXplKSAtXHUwMDNlIE9wdGlvblx1MDAzY3VzaXplXHUwMDNlIHtcbiAgICAgU29tZShzdW0gXHUwMDI2IFBBR0VfTUFTSylcbiB9XG4gXG4tLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS5cbi0vLy9cbi0vLy8gVGhpcyB0eXBlIHByb3ZpZGVzIGEgYm9ycm93ZWQgdmVyc2lvbiBvZiBhIFtgUGFnZWBdIHRoYXQgaXMgb3duZWQgYnkgc29tZSBvdGhlciBlbnRpdHksIGUuZy4gYVxuLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uXG4tLy8vXG4tLy8vICMgRXhhbXBsZVxuLS8vL1xuLS8vLyBgYGBcbi0vLy8gIyB1c2Uga2VybmVsOjp7YmluZGluZ3MsIHByZWx1ZGU6Oip9O1xuLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9O1xuLS8vLyAjIHVzZSBjb3JlOjp7bWVtOjpNYXliZVVuaW5pdCwgcHRyLCBwdHI6Ok5vbk51bGwgfTtcbi0vLy9cbi0vLy8gZm4gYm9ycm93X3BhZ2VcdTAwM2MmIzM5O2FcdTAwM2UodmJveDogXHUwMDI2JiMzOTthIG11dCBWQm94XHUwMDNjTWF5YmVVbmluaXRcdTAwM2NbdTg7IFBBR0VfU0laRV1cdTAwM2VcdTAwM2UpIC1cdTAwM2UgQm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0vLy8gICAgIGxldCBwdHIgPSBwdHI6OmZyb21fcmVmKFx1MDAyNioqdmJveCk7XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6XG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuXG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGBzZWxmYC5cbi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuLS8vLyB9XG4tLy8vXG4tLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6Olx1MDAzY1t1ODsgUEFHRV9TSVpFXVx1MDAzZTo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87XG4tLy8vIGxldCBwYWdlID0gYm9ycm93X3BhZ2UoXHUwMDI2bXV0IHZib3gpO1xuLS8vL1xuLS8vLyAvLyBTQUZFVFk6IFRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgcmVhZCBvciB3cml0ZSB0byB0aGlzIHBhZ2UuXG4tLy8vIHVuc2FmZSB7IHBhZ2UuZmlsbF96ZXJvX3JhdygwLCBQQUdFX1NJWkUpPyB9O1xuLS8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4tLy8vIGBgYFxuLS8vL1xuLS8vLyAjIEludmFyaWFudHNcbi0vLy9cbi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuXG4tLy8vXG4tLy8vIFtgVkJveGBdOiBrZXJuZWw6OmFsbG9jOjpWQm94XG4tLy8vIFtgVm1hbGxvY2BdOiBrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2Ncbi1wdWIgc3RydWN0IEJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZShNYW51YWxseURyb3BcdTAwM2NQYWdlXHUwMDNlLCBQaGFudG9tRGF0YVx1MDAzY1x1MDAyNiYjMzk7YSBQYWdlXHUwMDNlKTtcbi1cbi1pbXBsXHUwMDNjJiMzOTthXHUwMDNlIEJvcnJvd2VkUGFnZVx1MDAzYyYjMzk7YVx1MDAzZSB7XG4tICAgIC8vLyBDb25zdHJ1Y3RzIGEgW2BCb3Jyb3dlZFBhZ2VgXSBmcm9tIGEgcmF3IHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLlxuLSAgICAvLy9cbi0gICAgLy8vICMgU2FmZXR5XG4tICAgIC8vL1xuLSAgICAvLy8gLSBgcHRyYCBtdXN0IHBvaW50IHRvIGEgdmFsaWQgYGJpbmRpbmdzOjpwYWdlYC5cbi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4tICAgICAgICBsZXQgcGFnZSA9IFBhZ2UgeyBwYWdlOiBwdHIgfTtcbi1cbi0gICAgICAgIC8vIElOVkFSSUFOVDogVGhlIHNhZmV0eSByZXF1aXJlbWVudHMgZ3VhcmFudGVlIHRoYXQgYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWVcbi0gICAgICAgIC8vIGAmIzM5O2FgLlxuLSAgICAgICAgU2VsZihNYW51YWxseURyb3A6Om5ldyhwYWdlKSwgUGhhbnRvbURhdGEpXG4tICAgIH1cbi19XG4tXG4taW1wbFx1MDAzYyYjMzk7YVx1MDAzZSBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlXHUwMDNjJiMzOTthXHUwMDNlIHtcbi0gICAgdHlwZSBUYXJnZXQgPSBQYWdlO1xuLVxuLSAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4tICAgICAgICBcdTAwMjZzZWxmLjBcbi0gICAgfVxuLX1cbi1cbi0vLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gaW1wbGVtZW50YXRpb24gb2Zcbi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbiYjNDM7Ly8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMsIHN1Y2ggYXNcbiYjNDM7Ly8vIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxuIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHtcbiAgICAgLy8vIFRoZSBbYEl0ZXJhdG9yYF0gdHlwZSwgZS5nLiBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbi0gICAgdHlwZSBJdGVyXHUwMDNjJiMzOTthXHUwMDNlOiBJdGVyYXRvclx1MDAzY0l0ZW0gPSBCb3Jyb3dlZFBhZ2VcdTAwM2MmIzM5O2FcdTAwM2VcdTAwM2VcbiYjNDM7ICAgIHR5cGUgSXRlclx1MDAzYyYjMzk7YVx1MDAzZTogSXRlcmF0b3JcdTAwM2NJdGVtID0gXHUwMDI2JiMzOTthIFBhZ2VcdTAwM2VcbiAgICAgd2hlcmVcbiAgICAgICAgIFNlbGY6ICYjMzk7YTtcbiBcbi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuJiM0MzsgICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuICAgICBmbiBwYWdlX2l0ZXIoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgU2VsZjo6SXRlclx1MDAzYyYjMzk7X1x1MDAzZTtcbiB9XG4gXG4tLy8vIEEgcG9pbnRlciB0byBhIHBhZ2UgdGhhdCBvd25zIHRoZSBwYWdlIGFsbG9jYXRpb24uXG4mIzQzOy8vLyBBIGBzdHJ1Y3QgcGFnZWAuXG4mIzQzOy8vL1xuJiM0MzsvLy8gQSBgUGFnZWAgaXMgYWNjZXNzZWQgdGhyb3VnaCBhIHNoYXJlZCByZWZlcmVuY2Ugb3IgdGhyb3VnaCBhbiBvd25pbmcgW2BPd25lZFx1MDAzY1BhZ2VcdTAwM2VgXTsgdGhlIGxhdHRlclxuJiM0MzsvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuXG4gLy8vXG4gLy8vICMgSW52YXJpYW50c1xuIC8vL1xuLS8vLyBUaGUgcG9pbnRlciBpcyB2YWxpZCwgYW5kIGhhcyBvd25lcnNoaXAgb3ZlciB0aGUgcGFnZS5cbiYjNDM7Ly8vIFRoZSBgUGFnZWAgaXMgYmFja2VkIGJ5IGEgdmFsaWQgYHN0cnVjdCBwYWdlYC5cbiYjNDM7I1tyZXByKHRyYW5zcGFyZW50KV1cbiBwdWIgc3RydWN0IFBhZ2Uge1xuLSAgICBwYWdlOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UsXG4mIzQzOyAgICBwYWdlOiBPcGFxdWVcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSxcbiB9XG4gXG4gLy8gU0FGRVRZOiBQYWdlcyBoYXZlIG5vIGxvZ2ljIHRoYXQgcmVsaWVzIG9uIHRoZW0gc3RheWluZyBvbiBhIGdpdmVuIHRocmVhZCwgc28gbW92aW5nIHRoZW0gYWNyb3NzXG5AQCAtMTg1LDE5ICYjNDM7MTIxLDIwIEBAIGltcGwgUGFnZSB7XG4gICAgIC8vLyAjIE9rOjpcdTAwM2MoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvclx1MDAzZSgoKSlcbiAgICAgLy8vIGBgYFxuICAgICAjW2lubGluZV1cbi0gICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGYsIEFsbG9jRXJyb3JcdTAwM2Uge1xuJiM0MzsgICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQWxsb2NFcnJvclx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IERlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YgYGdmcF9mbGFnc2AsIHRoaXMgY2FsbCBtYXkgc2xlZXAuIE90aGVyIHRoYW4gdGhhdCwgaXRcbiAgICAgICAgIC8vIGlzIGFsd2F5cyBzYWZlIHRvIGNhbGwgdGhpcyBtZXRob2QuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjphbGxvY19wYWdlcyhmbGFncy5hc19yYXcoKSwgMCkgfTtcbiAgICAgICAgIGxldCBwYWdlID0gTm9uTnVsbDo6bmV3KHBhZ2UpLm9rX29yKEFsbG9jRXJyb3IpPztcbi0gICAgICAgIC8vIElOVkFSSUFOVDogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxuLSAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYFBhZ2VgIG9iamVjdC5cbi0gICAgICAgIE9rKFNlbGYgeyBwYWdlIH0pXG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XG4mIzQzOyAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYE93bmVkXHUwMDNjUGFnZVx1MDAzZWAgb2JqZWN0LlxuJiM0MzsgICAgICAgIC8vIFNpbmNlIGBQYWdlYCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHBvaW50ZXIgZGlyZWN0bHkuXG4mIzQzOyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KVxuICAgICB9XG4gXG4gICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuXG4gICAgIHB1YiBmbiBhc19wdHIoXHUwMDI2c2VsZikgLVx1MDAzZSAqbXV0IGJpbmRpbmdzOjpwYWdlIHtcbi0gICAgICAgIHNlbGYucGFnZS5hc19wdHIoKVxuJiM0MzsgICAgICAgIE9wYXF1ZTo6Y2FzdF9pbnRvKFx1MDAyNnNlbGYucGFnZSlcbiAgICAgfVxuIFxuICAgICAvLy8gR2V0IHRoZSBub2RlIGlkIGNvbnRhaW5pbmcgdGhpcyBwYWdlLlxuQEAgLTIwNiw2ICYjNDM7MTQzLDIwIEBAIHB1YiBmbiBuaWQoXHUwMDI2c2VsZikgLVx1MDAzZSBpMzIge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBhZ2VfdG9fbmlkKHNlbGYuYXNfcHRyKCkpIH1cbiAgICAgfVxuIFxuJiM0MzsgICAgLy8vIENyZWF0ZSBhIGBcdTAwMjZQYWdlYCBmcm9tIGEgcmF3IGBzdHJ1Y3QgcGFnZWAgcG9pbnRlci5cbiYjNDM7ICAgIC8vL1xuJiM0MzsgICAgLy8vICMgU2FmZXR5XG4mIzQzOyAgICAvLy9cbiYjNDM7ICAgIC8vLyBgcHRyYCBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkIHJlZmVyZW5jZSB3aXRoIGEgbGlmZXRpbWUgb2YgYCYjMzk7YWAuXG4mIzQzOyAgICAjW2lubGluZV1cbiYjNDM7ICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXdcdTAwM2MmIzM5O2FcdTAwM2UocHRyOiAqY29uc3QgYmluZGluZ3M6OnBhZ2UpIC1cdTAwM2UgXHUwMDI2JiMzOTthIFNlbGYge1xuJiM0MzsgICAgICAgIC8vIElOVkFSSUFOVDogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIHJlZmVycyB0byBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAsIHNvXG4mIzQzOyAgICAgICAgLy8gdGhlIHJldHVybmVkIHJlZmVyZW5jZSB1cGhvbGRzIHRoZSB0eXBlIGludmFyaWFudCBvZiBgUGFnZWAuXG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyBub3QgbnVsbCBhbmQgaXMgY29udmVydGlibGUgdG8gYSBzaGFyZWRcbiYjNDM7ICAgICAgICAvLyByZWZlcmVuY2UuXG4mIzQzOyAgICAgICAgdW5zYWZlIHsgXHUwMDI2KnB0ci5jYXN0KCkgfVxuJiM0MzsgICAgfVxuJiM0MztcbiAgICAgLy8vIFJ1bnMgYSBwaWVjZSBvZiBjb2RlIHdpdGggdGhpcyBwYWdlIG1hcHBlZCB0byBhbiBhZGRyZXNzLlxuICAgICAvLy9cbiAgICAgLy8vIFRoZSBwYWdlIGlzIHVubWFwcGVkIHdoZW4gdGhpcyBjYWxsIHJldHVybnMuXG5AQCAtMzcyLDEwICYjNDM7MzIzLDExIEBAIHB1YiB1bnNhZmUgZm4gY29weV9mcm9tX3VzZXJfc2xpY2VfcmF3KFxuICAgICB9XG4gfVxuIFxuLWltcGwgRHJvcCBmb3IgUGFnZSB7XG4mIzQzO2ltcGwgT3duYWJsZSBmb3IgUGFnZSB7XG4gICAgICNbaW5saW5lXVxuLSAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4tICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZSBpdC5cbi0gICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXMoc2VsZi5wYWdlLmFzX3B0cigpLCAwKSB9O1xuJiM0MzsgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWVcbiYjNDM7ICAgICAgICAvLyBpdC4gU2luY2UgUGFnZSBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHJhdyBwb2ludGVyIGRpcmVjdGx5LlxuJiM0MzsgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXModGhpcy5hc19wdHIoKS5jYXN0KCksIDApIH07XG4gICAgIH1cbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzXG5pbmRleCA1MDcxY2FlNjU0M2ZkMi4uZWE5ZWY5OWNlY2IwNzYgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuQEAgLTE5LDYgJiM0MzsxOSwxMCBAQFxuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OkNTdHIsXG4mIzQzOyAgICBzeW5jOjphcmVmOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgVGhpc01vZHVsZSwgLy9cbiB9O1xuQEAgLTQ4MSw3ICYjNDM7NDg1LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBpbXBsXHUwMDNjJiMzOTthXHUwMDNlIGNyYXRlOjpkbWE6OkRldmljZVx1MDAzYyYjMzk7YVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJiMzOTthXHUwMDNlXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGNpX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTtcbkBAIC00OTMsNiAmIzQzOzQ5NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuJiM0MzsvLyBgXHUwMDI2RGV2aWNlYC5cbiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4mIzQzO1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5pbmRleCA5NzlhOTcxOGYxNTNkOC4uMDY3ZjY4Yjk5ZThjNWMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5AQCAtNyw3ICYjNDM7NywxNCBAQFxuIC8vISBDIGhlYWRlcjogW2BpbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmgpIGFuZFxuIC8vISBbYGluY2x1ZGUvbGludXgvcGlkLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkLmgpXG4gXG4tdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHR5cGVzOjpPcGFxdWV9O1xuJiM0Mzt1c2UgY3JhdGU6OntcbiYjNDM7ICAgIGJpbmRpbmdzLFxuJiM0MzsgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCxcbiYjNDM7ICAgIHR5cGVzOjp7XG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBPcGFxdWUsIC8vXG4mIzQzOyAgICB9LCAvL1xuJiM0Mzt9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBwaWRfbmFtZXNwYWNlYC4gVGhyZWFkIHNhZmUuXG5AQCAtNDEsNyAmIzQzOzQ4LDcgQEAgcHViIHVuc2FmZSBmbiBmcm9tX3B0clx1MDAzYyYjMzk7YVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLVx1MDAzZSBcdTAwMjYmIzM5O2EgU2VsZiB7XG4gfVxuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBQaWROYW1lc3BhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxuQEAgLTU1LDYgJiM0Mzs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1BpZE5hbWVzcGFjZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjUGlkTmFtZXNwYWNlXHUwMDNlYCBmcm9tXG4mIzQzOy8vIGEgYFx1MDAyNlBpZE5hbWVzcGFjZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fVxuJiM0MztcbiAvLyBTQUZFVFk6XG4gLy8gLSBgUGlkTmFtZXNwYWNlOjpkZWNfcmVmYCBjYW4gYmUgY2FsbGVkIGZyb20gYW55IHRocmVhZC5cbiAvLyAtIEl0IGlzIG9rYXkgdG8gc2VuZCBvd25lcnNoaXAgb2YgYFBpZE5hbWVzcGFjZWAgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzIGIvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcbmluZGV4IDliMzYyZTA0OTVkMzIzLi4wYmE2NzY0NDViMDZkNyAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuQEAgLTI3LDYgJiM0MzsyNywxMCBAQFxuICAgICB9LFxuICAgICBvZixcbiAgICAgcHJlbHVkZTo6KixcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtNTE4LDcgJiM0Mzs1MjIsNyBAQCBwdWIgZm4gb3B0aW9uYWxfaXJxX2J5X25hbWUoXHUwMDI2c2VsZiwgbmFtZTogXHUwMDI2Q1N0cikgLVx1MDAzZSBSZXN1bHRcdTAwM2NJcnFSZXF1ZXN0XHUwMDNjJiMzOTtfXHUwMDNlXHUwMDNlIHtcbiBpbXBsXHUwMDNjJiMzOTthXHUwMDNlIGNyYXRlOjpkbWE6OkRldmljZVx1MDAzYyYjMzk7YVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjZGV2aWNlOjpDb3JlXHUwMDNjJiMzOTthXHUwMDNlXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUzMCw2ICYjNDM7NTM0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZEZXZpY2VgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbiYjNDM7XG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcHdtLnJzIGIvcnVzdC9rZXJuZWwvcHdtLnJzXG5pbmRleCA2YzlkNjY3MDA5ZWY3Yi4uMmQxY2Q3NGRkOThlMWUgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wd20ucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3B3bS5yc1xuQEAgLTEzLDcgJiM0MzsxMywxMSBAQFxuICAgICBkZXZyZXMsXG4gICAgIGVycm9yOjp7c2VsZiwgdG9fcmVzdWx0fSxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuJiM0MzsgICAgc3luYzo6YXJlZjo6e1xuJiM0MzsgICAgICAgIEFSZWYsXG4mIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy9cbiB9O1xuIHVzZSBjb3JlOjp7XG5AQCAtNjI5LDcgJiM0Mzs2MzMsNyBAQCBwdWIgZm4gbmV3XHUwMDNjJiMzOTthXHUwMDNlKFxuIH1cbiBcbiAvLyBTQUZFVFk6IEltcGxlbWVudHMgcmVmY291bnRpbmcgZm9yIGBDaGlwYCB1c2luZyB0aGUgZW1iZWRkZWQgYHN0cnVjdCBkZXZpY2VgLlxuLXVuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHtcbiYjNDM7dW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IGBzZWxmLjAuZ2V0KClgIHBvaW50cyB0byBhIHZhbGlkIGBwd21fY2hpcGAgYmVjYXVzZSBgc2VsZmAgZXhpc3RzLlxuQEAgLTY0Nyw2ICYjNDM7NjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY0NoaXBcdTAwM2NUXHUwMDNlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NDaGlwXHUwMDNjVFx1MDAzZVx1MDAzZWAgZnJvbSBhXG4mIzQzOy8vIGBcdTAwMjZDaGlwXHUwMDNjVFx1MDAzZWAuXG4mIzQzO3Vuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO1xuIC8vIFNBRkVUWTogYENoaXBgIGlzIGEgd3JhcHBlciBhcm91bmQgYCptdXQgYmluZGluZ3M6OnB3bV9jaGlwYC4gVGhlIHVuZGVybHlpbmcgQ1xuIC8vIHN0cnVjdHVyZSYjMzk7cyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCYjMzk7cyBkZXZpY2UgbW9kZWxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzIGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXG5pbmRleCBiNzIxYjJlMDBiOTg2Zi4uZTZmZmU3YzY1MGMzOWMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xuQEAgLTExLDcgJiM0MzsxMSw3IEBAXG4gLy8hIHVuZGVybHlpbmcgb2JqZWN0LCBidXQgdGhpcyByZWZjb3VudCBpcyBpbnRlcm5hbCB0byB0aGUgb2JqZWN0LiBJdCBlc3NlbnRpYWxseSBpcyBhIFJ1c3RcbiAvLyEgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBnZXRfYCBhbmQgYHB1dF9gIHBhdHRlcm4gdXNlZCBpbiBDIGZvciByZWZlcmVuY2UgY291bnRpbmcuXG4gLy8hXG4tLy8hIFRvIG1ha2UgdXNlIG9mIFtgQVJlZlx1MDAzY015VHlwZVx1MDAzZWBdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BBbHdheXNSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXRcbiYjNDM7Ly8hIFRvIG1ha2UgdXNlIG9mIFtgQVJlZlx1MDAzY015VHlwZVx1MDAzZWBdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXRcbiAvLyEgZm9yIGFjY2Vzc2luZyB0aGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IG9mIGFuIG9iamVjdCBvZiB0aGUgYE15VHlwZWAgdHlwZS5cbiAvLyFcbiAvLyEgW2BBcmNgXTogY3JhdGU6OnN5bmM6OkFyY1xuQEAgLTIzLDI2ICYjNDM7MjMsMzUgQEBcbiAgICAgb3BzOjpEZXJlZixcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4mIzQzO3VzZSBrZXJuZWw6OnR5cGVzOjp7XG4mIzQzOyAgICBPd25hYmxlUmVmQ291bnRlZCxcbiYjNDM7ICAgIE93bmVkLCAvL1xuJiM0Mzt9O1xuIFxuLS8vLyBUeXBlcyB0aGF0IGFyZSBfYWx3YXlzXyByZWZlcmVuY2UgY291bnRlZC5cbiYjNDM7Ly8vIFR5cGVzIHRoYXQgYXJlIGludGVybmFsbHkgcmVmZXJlbmNlIGNvdW50ZWQuXG4gLy8vXG4gLy8vIEl0IGFsbG93cyBzdWNoIHR5cGVzIHRvIGRlZmluZSB0aGVpciBvd24gY3VzdG9tIHJlZiBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBmdW5jdGlvbnMuXG4tLy8vIEFkZGl0aW9uYWxseSwgaXQgYWxsb3dzIHVzZXJzIHRvIGNvbnZlcnQgZnJvbSBhIHNoYXJlZCByZWZlcmVuY2UgYFx1MDAyNlRgIHRvIGFuIG93bmVkIHJlZmVyZW5jZVxuLS8vLyBbYEFSZWZcdTAwM2NUXHUwMDNlYF0uXG4gLy8vXG4gLy8vIFRoaXMgaXMgdXN1YWxseSBpbXBsZW1lbnRlZCBieSB3cmFwcGVycyB0byBleGlzdGluZyBzdHJ1Y3R1cmVzIG9uIHRoZSBDIHNpZGUgb2YgdGhlIGNvZGUuIEZvclxuIC8vLyBSdXN0IGNvZGUsIHRoZSByZWNvbW1lbmRhdGlvbiBpcyB0byB1c2UgW2BBcmNgXShjcmF0ZTo6c3luYzo6QXJjKSB0byBjcmVhdGUgcmVmZXJlbmNlLWNvdW50ZWRcbiAvLy8gaW5zdGFuY2VzIG9mIGEgdHlwZS5cbiAvLy9cbiYjNDM7Ly8vIE5vdGU6IEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXS4gSXQgcmVxdWlyZXMgYW5cbiYjNDM7Ly8vIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBhbmQgcHJvdmlkZXMgb25seSBzaGFyZWQgcmVmZXJlbmNlcy4gSWYgdW5pcXVlIHJlZmVyZW5jZXMgYXJlIHJlcXVpcmVkXG4mIzQzOy8vLyBbYE93bmFibGVgXShjcmF0ZTo6dHlwZXM6Ok93bmFibGUpIHNob3VsZCBiZSBpbXBsZW1lbnRlZCB3aGljaCBhbGxvd3MgdHlwZXMgdG8gYmUgd3JhcHBlZCBpbiBhblxuJiM0MzsvLy8gW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdFxuJiM0MzsvLy8gW2BPd25hYmxlUmVmQ291bnRlZGBdIGFsbG93cyB0byBjb252ZXJ0IGJldHdlZW4gdW5pcXVlIGFuZFxuJiM0MzsvLy8gc2hhcmVkIHJlZmVyZW5jZXMgKGkuZS4gW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKSBhbmRcbiYjNDM7Ly8vIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXSkuXG4mIzQzOy8vL1xuIC8vLyAjIFNhZmV0eVxuIC8vL1xuIC8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBpbmNyZW1lbnRzIHRvIHRoZSByZWZlcmVuY2UgY291bnQga2VlcCB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeVxuIC8vLyBhdCBsZWFzdCB1bnRpbCBtYXRjaGluZyBkZWNyZW1lbnRzIGFyZSBwZXJmb3JtZWQuXG4gLy8vXG4gLy8vIEltcGxlbWVudGVycyBtdXN0IGFsc28gZW5zdXJlIHRoYXQgYWxsIGluc3RhbmNlcyBhcmUgcmVmZXJlbmNlLWNvdW50ZWQuIChPdGhlcndpc2UgdGhleVxuLS8vLyB3b24mIzM5O3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BBbHdheXNSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0XG4tLy8vIGFsaXZlLilcbi1wdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xuJiM0MzsvLy8gd29uJiMzOTt0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdCBhbGl2ZS4pXG4mIzQzO3B1YiB1bnNhZmUgdHJhaXQgUmVmQ291bnRlZCB7XG4gICAgIC8vLyBJbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIG9iamVjdC5cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKTtcbiBcbkBAIC01NSwxMSAmIzQzOzY0LDI3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgd2FzIGEgcHJldmlvdXMgbWF0Y2hpbmcgaW5jcmVtZW50IHRvIHRoZSByZWZlcmVuY2UgY291bnQsXG4gICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heVxuICAgICAvLy8gcmVzdWx0IGluIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQpLCB1bmxlc3MgdGhlIGNhbGxlciBvd25zIGFub3RoZXIgaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudFxuLSAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzXG4tICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbiYjNDM7ICAgIC8vLyAoZS5nLiwgaXQgY2FsbHMgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0gdHdpY2UsIHRoZW4gY2FsbHMgW2BSZWZDb3VudGVkOjpkZWNfcmVmYF0gb25jZSkuXG4gICAgIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpO1xuIH1cbiBcbiYjNDM7Ly8vIEFsd2F5cyByZWZlcmVuY2UtY291bnRlZCB0eXBlLlxuJiM0MzsvLy9cbiYjNDM7Ly8vIEl0IGFsbG93cyBkZXJpdmluZyBhIGNvdW50ZWQgcmVmZXJlbmNlIFtgQVJlZlx1MDAzY1RcdTAwM2VgXSBmcm9tIGEgYFx1MDAyNlRgLlxuJiM0MzsvLy9cbiYjNDM7Ly8vIFRoaXMgcHJvdmlkZXMgc29tZSBjb252ZW5pZW5jZSwgYnV0IGl0IGFsbG93cyBcJiMzNDtlc2NhcGluZ1wmIzM0OyBib3Jyb3cgY2hlY2tzIG9uIGBcdTAwMjZUYC4gQXMgaXRcbiYjNDM7Ly8vIGNvbXBsaWNhdGVzIGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IGEgcmVmZXJlbmNlIHRvIFQgaXMgdW5pcXVlLCBpdCBpcyBvcHRpb25hbCB0byBwcm92aWRlIGZvclxuJiM0MzsvLy8gW2BSZWZDb3VudGVkYF0gdHlwZXMuIFNlZSAqU2FmZXR5KiBiZWxvdy5cbiYjNDM7Ly8vXG4mIzQzOy8vLyAjIFNhZmV0eVxuJiM0MzsvLy9cbiYjNDM7Ly8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IG5vIHNhZmV0eSBpbnZhcmlhbnRzIGFyZSB2aW9sYXRlZCBieSB1cGdyYWRpbmcgYW4gYFx1MDAyNlRgIHRvIGFuXG4mIzQzOy8vLyBbYEFSZWZcdTAwM2NUXHUwMDNlYF0uIEluIHBhcnRpY3VsYXIgdGhhdCBpbXBsaWVzIFtgQWx3YXlzUmVmQ291bnRlZGBdIGFuZCBbYGNyYXRlOjp0eXBlczo6T3duYWJsZWBdXG4mIzQzOy8vLyBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgZm9yIHRoZSBzYW1lIHR5cGUsIGFzIHRoaXMgd291bGQgYWxsb3cgdmlvbGF0aW5nIHRoZSB1bmlxdWVuZXNzIGd1YXJhbnRlZVxuJiM0MzsvLy8gb2YgW2BjcmF0ZTo6dHlwZXM6Ok93bmVkXHUwMDNjVFx1MDAzZWBdIGJ5IGRlcmVmZXJlbmNpbmcgaXQgaW50byBhbiBgXHUwMDI2VGAgYW5kIG9idGFpbmluZyBhbiBbYEFSZWZgXSBmcm9tXG4mIzQzOy8vLyB0aGF0LlxuJiM0MztwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQ6IFJlZkNvdW50ZWQge31cbiYjNDM7XG4gLy8vIEFuIG93bmVkIHJlZmVyZW5jZSB0byBhbiBhbHdheXMtcmVmZXJlbmNlLWNvdW50ZWQgb2JqZWN0LlxuIC8vL1xuIC8vLyBUaGUgb2JqZWN0JiMzOTtzIHJlZmVyZW5jZSBjb3VudCBpcyBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BBUmVmYF0gaXNcbkBAIC03MCw3ICYjNDM7OTUsNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xuIC8vL1xuIC8vLyBUaGUgcG9pbnRlciBzdG9yZWQgaW4gYHB0cmAgaXMgbm9uLW51bGwgYW5kIHZhbGlkIGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIFtgQVJlZmBdIGluc3RhbmNlLiBJblxuIC8vLyBwYXJ0aWN1bGFyLCB0aGUgW2BBUmVmYF0gaW5zdGFuY2Ugb3ducyBhbiBpbmNyZW1lbnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0JiMzOTtzIHJlZmVyZW5jZSBjb3VudC5cbi1wdWIgc3RydWN0IEFSZWZcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIHtcbiYjNDM7cHViIHN0cnVjdCBBUmVmXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSB7XG4gICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4gICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY1RcdTAwM2UsXG4gfVxuQEAgLTc5LDE5ICYjNDM7MTA0LDE5IEBAIHB1YiBzdHJ1Y3QgQVJlZlx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2Uge1xuIC8vIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSwgaXQgbmVlZHNcbiAvLyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhbiBgQVJlZlx1MDAzY1RcdTAwM2VgIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYVxuIC8vIG11dGFibGUgcmVmZXJlbmNlLCBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZFx1MDAzZSBTZW5kIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kXHUwMDNlIFNlbmQgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYFx1MDAyNkFSZWZcdTAwM2NUXHUwMDNlYCB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBgU3luY2BcbiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSxcbiAvLyBpdCBuZWVkcyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhIGBcdTAwMjZBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW5cbiAvLyBgQVJlZlx1MDAzY1RcdTAwM2VgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yXG4gLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFN5bmMgJiM0MzsgU2VuZFx1MDAzZSBTeW5jIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuJiM0Mzt1bnNhZmUgaW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kXHUwMDNlIFN5bmMgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gLy8gRXZlbiBpZiBgVGAgaXMgcGlubmVkLCBwb2ludGVycyB0byBgVGAgY2FuIHN0aWxsIG1vdmUuXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgVW5waW4gZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4mIzQzO2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYEFSZWZgXS5cbiAgICAgLy8vXG4gICAgIC8vLyBJdCB0YWtlcyBvdmVyIGFuIGluY3JlbWVudCBvZiB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbkBAIC0xMjAsMTkgJiM0MzsxNDUsMjEgQEAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGxcdTAwM2NUXHUwMDNlKSAtXHUwMDNlIFNlbGYge1xuICAgICAvLy9cbiAgICAgLy8vIGBgYFxuICAgICAvLy8gdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcbi0gICAgLy8vIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfTtcbiYjNDM7ICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XG4gICAgIC8vL1xuICAgICAvLy8gc3RydWN0IEVtcHR5IHt9XG4gICAgIC8vL1xuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXG4tICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7XG4mIzQzOyAgICAvLy8gLy8gU0FGRVRZOiBUaGUgYFJlZkNvdW50ZWRgIGltcGxlbWVudGF0aW9uIGZvciBgRW1wdHlgIGRvZXMgbm90IGNvdW50IHJlZmVyZW5jZXMgYW5kIG5ldmVyXG4mIzQzOyAgICAvLy8gLy8gZnJlZXMgdGhlIHVuZGVybHlpbmcgb2JqZWN0LiBUaHVzIHdlIGNhbiBhY3QgYXMgb3duaW5nIGFuIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnQgZm9yXG4mIzQzOyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLlxuJiM0MzsgICAgLy8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEVtcHR5IHtcbiAgICAgLy8vICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHt9XG4gICAgIC8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYoX29iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHt9XG4gICAgIC8vLyB9XG4gICAgIC8vL1xuICAgICAvLy8gbGV0IG11dCBkYXRhID0gRW1wdHkge307XG4gICAgIC8vLyBsZXQgcHRyID0gTm9uTnVsbDo6XHUwMDNjRW1wdHlcdTAwM2U6Om5ldyhcdTAwMjZtdXQgZGF0YSkudW53cmFwKCk7XG4tICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy5cbiYjNDM7ICAgIC8vLyAvLyBTQUZFVFk6IFdlIGtlZXAgYGRhdGFgIGFyb3VuZCBsb25nZXIgdGhhbiB0aGUgYEFSZWZgLlxuICAgICAvLy8gbGV0IGRhdGFfcmVmOiBBUmVmXHUwMDNjRW1wdHlcdTAwM2UgPSB1bnNhZmUgeyBBUmVmOjpmcm9tX3JhdyhwdHIpIH07XG4gICAgIC8vLyBsZXQgcmF3X3B0cjogTm9uTnVsbFx1MDAzY0VtcHR5XHUwMDNlID0gQVJlZjo6aW50b19yYXcoZGF0YV9yZWYpO1xuICAgICAvLy9cbkBAIC0xNDMsNyAmIzQzOzE3MCw3IEBAIHB1YiBmbiBpbnRvX3JhdyhtZTogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgZm4gY2xvbmUoXHUwMDI2c2VsZikgLVx1MDAzZSBTZWxmIHtcbiAgICAgICAgIHNlbGYuaW5jX3JlZigpO1xuICAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IGluY3JlbWVudGVkIHRoZSByZWZjb3VudCBhYm92ZS5cbkBAIC0xNTEsNyAmIzQzOzE3OCw3IEBAIGZuIGNsb25lKFx1MDAyNnNlbGYpIC1cdTAwM2UgU2VsZiB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgRGVyZWYgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRGVyZWYgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBUO1xuIFxuICAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG5AQCAtMTY4LDcgJiM0MzsxOTUsMTQgQEAgZm4gZnJvbShiOiBcdTAwMjZUKSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIERyb3AgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7aW1wbFx1MDAzY1Q6IE93bmFibGVSZWZDb3VudGVkXHUwMDNlIEZyb21cdTAwM2NPd25lZFx1MDAzY1RcdTAwM2VcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiYjNDM7ICAgICNbaW5saW5lXVxuJiM0MzsgICAgZm4gZnJvbShiOiBPd25lZFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4mIzQzOyAgICAgICAgVDo6aW50b19zaGFyZWQoYilcbiYjNDM7ICAgIH1cbiYjNDM7fVxuJiM0MztcbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UmIzM5O3JlIGFib3V0IHRvXG4gICAgICAgICAvLyBkZWNyZW1lbnQuXG5AQCAtMTc4LDE5ICYjNDM7MjEyLDE5IEBAIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbiBcbiBpbXBsXHUwMDNjVCwgVVx1MDAzZSBQYXJ0aWFsRXFcdTAwM2NBUmVmXHUwMDNjVVx1MDAzZVx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4tICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICBUOiBSZWZDb3VudGVkICYjNDM7IFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4mIzQzOyAgICBVOiBSZWZDb3VudGVkLFxuIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZBUmVmXHUwMDNjVVx1MDAzZSkgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIFQ6OmVxKFx1MDAyNioqc2VsZiwgXHUwMDI2KipvdGhlcilcbiAgICAgfVxuIH1cbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBFcVx1MDAzZSBFcSBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbiYjNDM7aW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgJiM0MzsgRXFcdTAwM2UgRXEgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjXHUwMDI2JiMzOTtfIFVcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuJiM0MzsgICAgVDogUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZcdTAwMjZVKSAtXHUwMDNlIGJvb2wge1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3Rhc2sucnMgYi9ydXN0L2tlcm5lbC90YXNrLnJzXG5pbmRleCAzODI3M2Y0ZWVkYjUxMy4uNjI1OTQzMGIwY2EzMTggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC90YXNrLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90YXNrLnJzXG5AQCAtMTAsNyAmIzQzOzEwLDEyIEBAXG4gICAgIHBpZF9uYW1lc3BhY2U6OlBpZE5hbWVzcGFjZSxcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgc3luYzo6YXJlZjo6QVJlZixcbi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LFxuJiM0MzsgICAgdHlwZXM6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE5vdFRocmVhZFNhZmUsXG4mIzQzOyAgICAgICAgT3BhcXVlLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuIH07XG4gdXNlIGNvcmU6OntcbiAgICAgb3BzOjpEZXJlZixcbkBAIC0zNDcsNyAmIzQzOzM1Miw3IEBAIHB1YiBmbiBncm91cF9sZWFkZXIoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZUYXNrIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBUYXNrYCBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFRhc2sge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMzYxLDYgJiM0MzszNjYsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4mIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NUYXNrXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNlRhc2tgLlxuJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHt9XG4mIzQzO1xuIGltcGwgUGFydGlhbEVxIGZvciBUYXNrIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZTZWxmKSAtXHUwMDNlIGJvb2wge1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3R5cGVzLnJzIGIvcnVzdC9rZXJuZWwvdHlwZXMucnNcbmluZGV4IGFjMzE2ZmQ3YjUzOGZlLi42YWE3NjA5NTJjYjYzNSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3R5cGVzLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xuQEAgLTE1LDYgJiM0MzsxNSwxOCBAQFxuIHB1YiBtb2QgZm9yX2x0O1xuIHB1YiB1c2UgZm9yX2x0OjpGb3JMdDtcbiBcbiYjNDM7cHViIHVzZSBjcmF0ZTo6e1xuJiM0MzsgICAgb3duZWQ6OntcbiYjNDM7ICAgICAgICBPd25hYmxlLFxuJiM0MzsgICAgICAgIE93bmFibGVSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIE93bmVkLCAvL1xuJiM0MzsgICAgfSxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LCAvL1xuJiM0Mzt9O1xuJiM0MztcbiAvLy8gVXNlZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgdG8gYW5kIGZyb20gZm9yZWlnbiAobm9uLVJ1c3QpIGxhbmd1YWdlcy5cbiAvLy9cbiAvLy8gT3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIGZyb20gUnVzdCB0byBhIGZvcmVpZ24gbGFuZ3VhZ2UgYnkgY2FsbGluZyBbYFNlbGY6OmludG9fZm9yZWlnbmBdIGFuZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuaW5kZXggN2FmZjBjODJkMGFmYzAuLjU5MzUwYzZiMGRmMmFkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvdXNiLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC91c2IucnNcbkBAIC0xOCw3ICYjNDM7MTgsMTAgQEBcbiAgICAgICAgIHRvX3Jlc3VsdCwgLy9cbiAgICAgfSxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgIHN5bmM6OmFyZWY6OntcbiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4mIzQzOyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtMzkyLDcgJiM0MzszOTUsNyBAQCBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZEZXZpY2Uge1xuIH1cbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSW50ZXJmYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgSW50ZXJmYWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9pbnRlcmZhY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXG5AQCAtNDA2LDYgJiM0Mzs0MDksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjSW50ZXJmYWNlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkludGVyZmFjZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7fVxuJiM0MztcbiAvLyBTQUZFVFk6IEEgYEludGVyZmFjZWAgaXMgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIGFuZCBjYW4gYmUgcmVsZWFzZWQgZnJvbSBhbnkgdGhyZWFkLlxuIHVuc2FmZSBpbXBsIFNlbmQgZm9yIEludGVyZmFjZSB7fVxuIFxuQEAgLTQ0Myw3ICYjNDM7NDUwLDcgQEAgZm4gYXNfcmF3KFx1MDAyNnNlbGYpIC1cdTAwM2UgKm11dCBiaW5kaW5nczo6dXNiX2RldmljZSB7XG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4mIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXG5AQCAtNDU3LDYgJiM0Mzs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbiYjNDM7Ly8gYFx1MDAyNkRldmljZWAuXG4mIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuJiM0MztcbiBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC93b3JrcXVldWUucnMgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnNcbmluZGV4IDdlMjUzYjZmMjk5Y2UzLi43NzY3M2I4ZWE0NWZiMSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG5AQCAtMTkyLDcgJiM0MzsxOTIsNyBAQFxuICAgICBzeW5jOjp7XG4gICAgICAgICBhcmVmOjp7XG4gICAgICAgICAgICAgQVJlZixcbi0gICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuJiM0MzsgICAgICAgICAgICBSZWZDb3VudGVkLCAvL1xuICAgICAgICAgfSxcbiAgICAgICAgIEFyYyxcbiAgICAgICAgIExvY2tDbGFzc0tleSwgLy9cbkBAIC05NTQsNyAmIzQzOzk1NCw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBSYXdEZWxheWVkV29ya0l0ZW1cdTAwM2NJRFx1MDAzZSBmb3IgUGluXHUwMDNjS0JveFx1MDAzY1RcdTAwM2VcdTAwM2VcbiAvLyAgICAgaW1wbGVtZW50YXRpb24gb2YgYFdvcmtJdGVtUG9pbnRlcmAgZm9yIGBBUmVmXHUwMDNjVFx1MDAzZWAuXG4gdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFdvcmtJdGVtUG9pbnRlclx1MDAzY0lEXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIHdoZXJlXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICBUOiBSZWZDb3VudGVkLFxuICAgICBUOiBXb3JrSXRlbVx1MDAzY0lELCBQb2ludGVyID0gU2VsZlx1MDAzZSxcbiAgICAgVDogSGFzV29ya1x1MDAzY1QsIElEXHUwMDNlLFxuIHtcbkBAIC05ODcsNyAmIzQzOzk4Nyw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiAvLyByZXF1aXJlbWVudHMgb2YgYFdvcmtJdGVtUG9pbnRlcmAuXG4gdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFJhd1dvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcbiYjNDM7ICAgIFQ6IFJlZkNvdW50ZWQsXG4gICAgIFQ6IFdvcmtJdGVtXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXHUwMDNlLFxuICAgICBUOiBIYXNXb3JrXHUwMDNjVCwgSURcdTAwM2UsXG4ge1xuQEAgLTEwMjAsNyAmIzQzOzEwMjAsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc0RlbGF5ZWRXb3JrXHUwMDNjVCwgSURcdTAwM2UsXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXG4mIzQzOyAgICBUOiBSZWZDb3VudGVkLFxuIHtcbiB9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6MDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIEl0IGludHJvZHVjZXMgYE93bmVkYCBhbmQgYE93bmFibGVgIHR5cGVzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCBhZGFwdHMgZXhpc3RpbmcgUnVzdCBjb2RlIChsaWtlIGBQYWdlYCBhbmQgdGhlIEFuZHJvaWQgQmluZGVyIGRyaXZlcikgdG8gdXNlIHRoZXNlIG5ldyB0eXBlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljLCBuZXcgZHJpdmVycywgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDY2NDMwYTcxMDJlZjc0ZTlkNGIyZWQ0MjQ3ZDhmZjE1ZjVlYWY2ZTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAyMjowNjowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycwppbmRleCBlNTRhOTBlNjI0MDJhNC4uNzk0MWViODViNGVmNDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnMKQEAgLTMzLDcgJiM0MzszMyw3IEBACiAgICAgc3luYzo6e2FyZWY6OkFSZWYsIE11dGV4LCBTcGluTG9ja30sCiAgICAgdGFzazo6UGlkLAogICAgIHRyYW5zbXV0ZTo6RnJvbUJ5dGVzLAotICAgIHR5cGVzOjpPcGFxdWUsCiYjNDM7ICAgIHR5cGVzOjp7T3BhcXVlLCBPd25lZH0sCiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLAogfTsKIApAQCAtMTk4LDcgJiM0MzsxOTgsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbm5lciB7fQogI1tyZXByKEMpXQogc3RydWN0IFBhZ2VJbmZvIHsKICAgICBscnU6IGJpbmRpbmdzOjpsaXN0X2hlYWQsCi0gICAgcGFnZTogT3B0aW9uJmx0O1BhZ2UmZ3Q7LAomIzQzOyAgICBwYWdlOiBPcHRpb24mbHQ7T3duZWQmbHQ7UGFnZSZndDsmZ3Q7LAogICAgIHJhbmdlOiAqY29uc3QgU2hyaW5rYWJsZVBhZ2VSYW5nZSwKIH0KIApAQCAtMjA2LDcgJiM0MzsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHsKICAgICAvLy8gIyBTYWZldHkKICAgICAvLy8KICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0LgotICAgIHVuc2FmZSBmbiBzZXRfcGFnZShtZTogKm11dCBQYWdlSW5mbywgcGFnZTogUGFnZSkgewomIzQzOyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkJmx0O1BhZ2UmZ3Q7KSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuCiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyAmYW1wO3JhdyBtdXQgKCptZSkucGFnZSB9OwogCkBAIC0yMjksMTMgJiM0MzsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlJmx0OyYjMzk7YSZndDsobWU6ICpjb25zdCBQYWdlSW5mbykgLSZndDsgT3B0aW9uJmx0OyZhbXA7JiMzOTthIFBhZ2UmZ3Q7IHsKICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7ICZhbXA7cmF3IGNvbnN0ICgqbWUpLnBhZ2UgfTsKIAogICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIGZvciByZWFkaW5nLgotICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfcmVmKCkgfQomIzQzOyAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX2RlcmVmKCkgfQogICAgIH0KIAogICAgIC8vLyAjIFNhZmV0eQogICAgIC8vLwogICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICYjMzk7YS4KLSAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtJmd0OyBPcHRpb24mbHQ7UGFnZSZndDsgewomIzQzOyAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtJmd0OyBPcHRpb24mbHQ7T3duZWQmbHQ7UGFnZSZndDsmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy4KICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7ICZhbXA7cmF3IG11dCAoKm1lKS5wYWdlIH07CiAKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycwppbmRleCBjZDQyMDNmMjdhZWQwNi4uYzdiOWIwNjljZjc1ZGQgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnMKQEAgLTE2OSw3ICYjNDM7MTY5LDcgQEAgdW5zYWZlIGZuIHJlYWxsb2MoCiB9CiAKIGltcGwgVm1hbGxvYyB7Ci0gICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgcGFnZTo6Qm9ycm93ZWRQYWdlYF0uCiYjNDM7ICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2UuCiAgICAgLy8vCiAgICAgLy8vICMgRXhhbXBsZXMKICAgICAvLy8KQEAgLTIwMiwyMCAmIzQzOzIwMiwxNyBAQCBpbXBsIFZtYWxsb2MgewogICAgIC8vLwogICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi4KICAgICAvLy8gLSBgcHRyYCBtdXN0IHJlbWFpbiB2YWxpZCBmb3IgdGhlIGVudGlyZSBkdXJhdGlvbiBvZiBgJiMzOTthYC4KLSAgICBwdWIgdW5zYWZlIGZuIHRvX3BhZ2UmbHQ7JiMzOTthJmd0OyhwdHI6IE5vbk51bGwmbHQ7dTgmZ3Q7KSAtJmd0OyBwYWdlOjpCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OyB7CiYjNDM7ICAgIHB1YiB1bnNhZmUgZm4gdG9fcGFnZSZsdDsmIzM5O2EmZ3Q7KHB0cjogTm9uTnVsbCZsdDt1OCZndDspIC0mZ3Q7ICZhbXA7JiMzOTthIHBhZ2U6OlBhZ2UgewogICAgICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LgogICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTsKIAotICAgICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZCBwb2ludGVyCi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuCi0gICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwYWdlKSB9OwotCiAgICAgICAgIC8vIFNBRkVUWToKLSAgICAgICAgLy8gLSBgcGFnZWAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZgotICAgICAgICAvLyAgIHRoaXMgZnVuY3Rpb24gYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYFZtYWxsb2NgIGFsbG9jYXRpb24uCi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZgotICAgICAgICAvLyAgIGAmIzM5O2FgLgotICAgICAgICB1bnNhZmUgeyBwYWdlOjpCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH0KJiM0MzsgICAgICAgIC8vIC0gYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkLCBub24tbnVsbCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZAomIzQzOyAgICAgICAgLy8gICBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnksIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbgomIzQzOyAgICAgICAgLy8gICBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi4KJiM0MzsgICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCwgYW5kIGhlbmNlIHRoZSBgc3RydWN0IHBhZ2VgLCBpcwomIzQzOyAgICAgICAgLy8gICB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZiBgJiMzOTthYC4KJiM0MzsgICAgICAgIHVuc2FmZSB7ICZhbXA7KnBhZ2UuY2FzdCgpIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzIGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnMKaW5kZXggMDJmZGEzZWE1Y2FlNjYuLjhkY2MxNmVkODk4OTMxIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5ycwpAQCAtOSw3ICYjNDM7OSw3IEBACiAgICAgcHRyOjpOb25OdWxsLCAvLwogfTsKIAotLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi4KJiM0MzsvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLgogLy8vCiAvLy8gIyBHdWFyYW50ZWVzCiAvLy8KQEAgLTI4LDExICYjNDM7MjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXImbHQ7JiMzOTthJmd0OyB7CiAgICAgc2l6ZTogdXNpemUsCiAgICAgLy8vIFRoZSBjdXJyZW50IHBhZ2UgaW5kZXggb2YgdGhlIFtgSXRlcmF0b3JgXS4KICAgICBpbmRleDogdXNpemUsCi0gICAgX3A6IFBoYW50b21EYXRhJmx0O3BhZ2U6OkJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7Jmd0OywKJiM0MzsgICAgX3A6IFBoYW50b21EYXRhJmx0OyZhbXA7JiMzOTthIHBhZ2U6OlBhZ2UmZ3Q7LAogfQogCiBpbXBsJmx0OyYjMzk7YSZndDsgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlciZsdDsmIzM5O2EmZ3Q7IHsKLSAgICB0eXBlIEl0ZW0gPSBwYWdlOjpCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OzsKJiM0MzsgICAgdHlwZSBJdGVtID0gJmFtcDsmIzM5O2EgcGFnZTo6UGFnZTsKIAogICAgIGZuIG5leHQoJmFtcDttdXQgc2VsZikgLSZndDsgT3B0aW9uJmx0O1NlbGY6Okl0ZW0mZ3Q7IHsKICAgICAgICAgbGV0IG9mZnNldCA9IHNlbGYuaW5kZXguY2hlY2tlZF9tdWwocGFnZTo6UEFHRV9TSVpFKT87CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5ycwppbmRleCAzNWQxZTAxNTg0OGRkYS4uZDUzNGU4YWRjZjdiMzMgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2FsbG9jL2tib3gucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5ycwpAQCAtMjExLDYgJiM0MzsyMTEsMTUgQEAgcHViIGZuIGxlYWsmbHQ7JiMzOTthJmd0OyhiOiBTZWxmKSAtJmd0OyAmYW1wOyYjMzk7YSBtdXQgVCB7CiAgICAgICAgIC8vIHdoaWNoIHBvaW50cyB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiBgVGAuCiAgICAgICAgIHVuc2FmZSB7ICZhbXA7bXV0ICpCb3g6OmludG9fcmF3KGIpIH0KICAgICB9CiYjNDM7CiYjNDM7ICAgIC8vLyBDb25zdW1lcyB0aGUgYEJveCZsdDtULEEmZ3Q7YCBhbmQgcmV0dXJucyBhIGBOb25OdWxsJmx0O1QmZ3Q7YC4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBMaWtlIFtgU2VsZjo6aW50b19yYXdgXSwgYnV0IHJldHVybnMgYSBgTm9uTnVsbGAuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBwdWIgZm4gaW50b19ub25fbnVsbChiOiBTZWxmKSAtJmd0OyBOb25OdWxsJmx0O1QmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogYEtCb3g6OmludG9fcmF3YCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlci4KJiM0MzsgICAgICAgIHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQoU2VsZjo6aW50b19yYXcoYikpIH0KJiM0MzsgICAgfQogfQogCiBpbXBsJmx0O1QsIEEmZ3Q7IEJveCZsdDtNYXliZVVuaW5pdCZsdDtUJmd0OywgQSZndDsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycwppbmRleCBjNDI5MjhkNWEyMzkzZi4uODU0NTI1Mjg5YzhiNDMgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnMKQEAgLTE5LDYgJiM0MzsxOSwxMCBAQAogICAgICAgICB0b19yZXN1bHQsIC8vCiAgICAgfSwKICAgICBwcmVsdWRlOjoqLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6ewogICAgICAgICBGb3JMdCwKICAgICAgICAgRm9yZWlnbk93bmFibGUsCkBAIC0zNDQsNyAmIzQzOzM0OCw3IEBAIHVuc2FmZSBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBkZXZpY2U6OkFzQnVzRGV2aWNlJmx0O0N0eCZndDsgZm9yIERldmljZSZsdDtDdHgmZ3Q7CiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpOwogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uCiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmVmKCkuYXNfcmF3KCkpIH07CkBAIC0zNjMsNiAmIzQzOzM2NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9CiYjNDM7CiBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7Jmd0OyBmb3IgRGV2aWNlJmx0O0N0eCZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5ycwppbmRleCBjZTNlMzBjODFjYjVlZC4uOGRhZDE1YWU0Y2ZiMGEgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5ycwpAQCAtOSw3ICYjNDM7OSwxMSBAQAogICAgIGJsb2NrOjptcTo6T3BlcmF0aW9ucywKICAgICBlcnJvcjo6UmVzdWx0LAogICAgIHN5bmM6OnsKLSAgICAgICAgYXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAomIzQzOyAgICAgICAgYXJlZjo6ewomIzQzOyAgICAgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICAgICAgfSwKICAgICAgICAgYXRvbWljOjpSZWxheGVkLAogICAgICAgICBSZWZjb3VudCwKICAgICB9LApAQCAtMjI5LDExICYjNDM7MjMzLDEwIEBAIHVuc2FmZSBpbXBsJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7IFNlbmQgZm9yIFJlcXVlc3QmbHQ7VCZndDsge30KIC8vIG11dGF0ZSBgc2VsZmAgYXJlIGludGVybmFsbHkgc3luY2hyb25pemVkYAogdW5zYWZlIGltcGwmbHQ7VDogT3BlcmF0aW9ucyZndDsgU3luYyBmb3IgUmVxdWVzdCZsdDtUJmd0OyB7fQogCi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3QmbHQ7VCZndDtgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpcwotLy8gaW1wbGVtZW50YXRpb24gb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudAotLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnQKLS8vIGRlY3JlbWVudCBpcyBleGVjdXRlZC4KLXVuc2FmZSBpbXBsJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3QmbHQ7VCZndDsgewomIzQzOy8vIFNBRkVUWTogQWxsIGluc3RhbmNlcyBvZiBgUmVxdWVzdCZsdDtUJmd0O2AgYXJlIHJlZmVyZW5jZSBjb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIGBSZWZDb3VudGVkYAomIzQzOy8vIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudCBrZWVwcyB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeSBhdCBsZWFzdCB1bnRpbCBhCiYjNDM7Ly8gbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpcyBleGVjdXRlZC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPcGVyYXRpb25zJmd0OyBSZWZDb3VudGVkIGZvciBSZXF1ZXN0Jmx0O1QmZ3Q7IHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICBzZWxmLndyYXBwZXJfcmVmKCkucmVmY291bnQoKS5pbmMoKTsKICAgICB9CkBAIC0yNTUsMyAmIzQzOzI1OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgICAgIH0KICAgICB9CiB9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7UmVxdWVzdCZndDtgCiYjNDM7Ly8gZnJvbSBhIGAmYW1wO1JlcXVlc3RgIChidXQgdGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlKS4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPcGVyYXRpb25zJmd0OyBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0Jmx0O1QmZ3Q7IHt9CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9jcmVkLnJzIGIvcnVzdC9rZXJuZWwvY3JlZC5ycwppbmRleCBmZmExNTZiOWRmMzc3ZS4uYjE3NzM2YTlhZGNkNTggMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2NyZWQucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvY3JlZC5ycwpAQCAtOCw3ICYjNDM7OCwxNSBAQAogLy8hCiAvLyEgUmVmZXJlbmNlOiAmbHQ7aHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3Qvc2VjdXJpdHkvY3JlZGVudGlhbHMuaHRtbCZndDsKIAotdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHRhc2s6Okt1aWQsIHR5cGVzOjpPcGFxdWV9OwomIzQzO3VzZSBjcmF0ZTo6ewomIzQzOyAgICBiaW5kaW5ncywKJiM0MzsgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCwKJiM0MzsgICAgdGFzazo6S3VpZCwKJiM0MzsgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBPcGFxdWUsIC8vCiYjNDM7ICAgIH0sIC8vCiYjNDM7fTsKIAogLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBjcmVkYC4KIC8vLwpAQCAtNzYsNyAmIzQzOzg0LDcgQEAgcHViIGZuIGV1aWQoJmFtcDtzZWxmKSAtJmd0OyBLdWlkIHsKIH0KIAogLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBDcmVkZW50aWFsYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uCkBAIC05MCwzICYjNDM7OTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbCZsdDtDcmVkZW50aWFsJmd0OykgewogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cHV0X2NyZWQob2JqLmNhc3QoKS5hc19wdHIoKSkgfTsKICAgICB9CiB9CiYjNDM7CiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtDcmVkZW50aWFsJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7Q3JlZGVudGlhbGAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7fQpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzCmluZGV4IDY0NWFmYzQ5YTI3ZDY0Li4yZTkwZjZhMDZmZDA1OSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RldmljZS5ycwpAQCAtOCw4ICYjNDM7OCwxMiBAQAogICAgIGJpbmRpbmdzLAogICAgIGZtdCwKICAgICBwcmVsdWRlOjoqLAotICAgIHN5bmM6OmFyZWY6OkFSZWYsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAogICAgICAgICBGb3JlaWduT3duYWJsZSwKICAgICAgICAgT3BhcXVlLCAvLwogICAgIH0sIC8vCkBAIC00NDgsNyAmIzQzOzQ1Miw3IEBAIHB1YiBmbiBuYW1lKCZhbXA7c2VsZikgLSZndDsgJmFtcDtDU3RyIHsKIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2UgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yYXcoKSkgfTsKQEAgLTQ2MCw2ICYjNDM7NDY0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtEZXZpY2UmZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtEZXZpY2VgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fQomIzQzOwogLy8gU0FGRVRZOiBBcyBieSB0aGUgdHlwZSBpbnZhcmlhbnQgYERldmljZWAgY2FuIGJlIHNlbnQgdG8gYW55IHRocmVhZC4KIHVuc2FmZSBpbXBsIFNlbmQgZm9yIERldmljZSB7fQogCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMKaW5kZXggNWFlYWQ4MzVmYmJjMDIuLmNlZTdlMjUwMTM2ODk5IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzCkBAIC0xNCw3ICYjNDM7MTQsMTAgQEAKICAgICBmbXQsCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSwKLSAgICBzeW5jOjphcmVmOjpBUmVmLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6T3BhcXVlLAogfTsKIApAQCAtMzYwLDcgJiM0MzszNjMsNyBAQCBmbiBmbXQoJmFtcDtzZWxmLCBmOiAmYW1wO211dCBmbXQ6OkZvcm1hdHRlciZsdDsmIzM5O18mZ3Q7KSAtJmd0OyBmbXQ6OlJlc3VsdCB7CiB9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBGd05vZGVgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHsKJiM0Mzt1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUKICAgICAgICAgLy8gcmVmY291bnQgaXMgbm9uLXplcm8uCkBAIC0zNzQsNiAmIzQzOzM3NywxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RndOb2RlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RndOb2RlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGd05vZGUge30KJiM0MzsKIGVudW0gTm9kZSZsdDsmIzM5O2EmZ3Q7IHsKICAgICBCb3Jyb3dlZCgmYW1wOyYjMzk7YSBGd05vZGUpLAogICAgIE93bmVkKEFSZWYmbHQ7RndOb2RlJmd0OyksCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycwppbmRleCA0MDNmYzM1MzUzYzc0MC4uMzY4NzQyYTI1ODM3NjggMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycwpAQCAtMTUsNyAmIzQzOzE1LDggQEAKICAgICBwcmVsdWRlOjoqLAogICAgIHN5bmM6OmFyZWY6OnsKICAgICAgICAgQVJlZiwKLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwogICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwKICAgICB3b3JrcXVldWU6OnsKQEAgLTIyNyw3ICYjNDM7MjI4LDcgQEAgZm4gZGVyZWYoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO1NlbGY6OlRhcmdldCB7CiAKIC8vIFNBRkVUWTogRFJNIGRldmljZSBvYmplY3RzIGFyZSBhbHdheXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIHRoZSBnZXQvcHV0IGZ1bmN0aW9ucwogLy8gc2F0aXNmeSB0aGUgcmVxdWlyZW1lbnRzLgotdW5zYWZlIGltcGwmbHQ7VDogZHJtOjpEcml2ZXImZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSZsdDtUJmd0OyB7CiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogZHJtOjpEcml2ZXImZ3Q7IFJlZkNvdW50ZWQgZm9yIERldmljZSZsdDtUJmd0OyB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLgogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZHJtX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTsKQEAgLTI0Miw2ICYjNDM7MjQzLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBkcm06OkRyaXZlciZndDsgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlJmx0O1QmZ3Q7IHt9CiYjNDM7CiBpbXBsJmx0O1Q6IGRybTo6RHJpdmVyJmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZndDsgZm9yIERldmljZSZsdDtUJmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSB7CiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLApkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMgYi9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5ycwppbmRleCAwMWI1YmQ0N2EzMzMyZC4uMzBkMzcxODU3OGZlOGMgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzCkBAIC0xNyw3ICYjNDM7MTcsNyBAQAogICAgIHByZWx1ZGU6OiosCiAgICAgc3luYzo6YXJlZjo6ewogICAgICAgICBBUmVmLAotICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvLwomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KICAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsCiB9OwpAQCAtMjksNyAmIzQzOzI5LDcgQEAKICNbY2ZnKENPTkZJR19SVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSKV0KIHB1YiBtb2Qgc2htZW07CiAKLS8vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgW2BBbHdheXNSZWZDb3VudGVkYF0gZm9yIGFueSBHRU0gb2JqZWN0IHR5cGUuCiYjNDM7Ly8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyBbYFJlZkNvdW50ZWRgXSBmb3IgYW55IEdFTSBvYmplY3QgdHlwZS4KIC8vLwogLy8vIFNpbmNlIGFsbCBHRU0gb2JqZWN0cyB1c2UgdGhlIHNhbWUgcmVmY291bnRpbmcgc2NoZW1lLgogI1ttYWNyb19leHBvcnRdCkBAIC00Miw3ICYjNDM7NDIsNyBAQCBpbXBsICQoICZsdDskKCAkdHBhcmFtX2lkOmlkZW50ICksJiM0MzsmZ3Q7ICk/IGZvciAkdHlwZTp0eQogICAgICAgICApPwogICAgICkgPSZndDsgewogICAgICAgICAvLyBTQUZFVFk6IEFsbCBHRU0gb2JqZWN0cyBhcmUgcmVmY291bnRlZC4KLSAgICAgICAgdW5zYWZlIGltcGwgJCggJmx0OyQoICR0cGFyYW1faWQgKSwmIzQzOyZndDsgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciAkdHlwZQomIzQzOyAgICAgICAgdW5zYWZlIGltcGwgJCggJmx0OyQoICR0cGFyYW1faWQgKSwmIzQzOyZndDsgKT8gJGNyYXRlOjpzeW5jOjphcmVmOjpSZWZDb3VudGVkIGZvciAkdHlwZQogICAgICAgICB3aGVyZQogICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCwKICAgICAgICAgICAgICQoICQoICRiaW5kX3BhcmFtIDogJGJpbmRfdHJhaXQgKSwmIzQzOyApPwpAQCAtNjEsNiAmIzQzOzYxLDE0IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiAgICAgICAgICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0X3B1dChvYmopIH07CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KJiM0MzsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7JHR5cGUmZ3Q7YCBmcm9tIGEKJiM0MzsgICAgICAgIC8vIGAmYW1wOyR0eXBlYC4KJiM0MzsgICAgICAgIHVuc2FmZSBpbXBsICQoICZsdDskKCAkdHBhcmFtX2lkICksJiM0MzsmZ3Q7ICk/ICRjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgJHR5cGUKJiM0MzsgICAgICAgIHdoZXJlCiYjNDM7ICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCwKJiM0MzsgICAgICAgICAgICAkKCAkKCAkYmluZF9wYXJhbSA6ICRiaW5kX3RyYWl0ICksJiM0MzsgKT8KJiM0MzsgICAgICAgIHt9CiAgICAgfTsKIH0KICNbY2ZnX2F0dHIobm90KENPTkZJR19SVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSKSwgYWxsb3codW51c2VkKSldCkBAIC05OCw3ICYjNDM7MTA2LDcgQEAgZm4gY2xvc2UoX29iajogJmFtcDsmbHQ7U2VsZjo6RHJpdmVyIGFzIGRybTo6RHJpdmVyJmd0Ozo6T2JqZWN0LCBfZmlsZTogJmFtcDtEcml2ZXJGaWxlJmx0O1NlbGYmZ3Q7KQogfQogCiAvLy8gVHJhaXQgdGhhdCByZXByZXNlbnRzIGEgR0VNIG9iamVjdCBzdWJ0eXBlCi1wdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgJiM0Mzsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCAmIzQzOyBBbHdheXNSZWZDb3VudGVkIHsKJiM0MztwdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgJiM0Mzsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCAmIzQzOyBSZWZDb3VudGVkIHsKICAgICAvLy8gUmV0dXJucyBhIHJlZmVyZW5jZSB0byB0aGUgcmF3IGBkcm1fZ2VtX29iamVjdGAgc3RydWN0dXJlLCB3aGljaCBtdXN0IGJlIHZhbGlkIGFzIGxvbmcgYXMKICAgICAvLy8gdGhpcyBvd25pbmcgb2JqZWN0IGlzIHZhbGlkLgogICAgIGZuIGFzX3JhdygmYW1wO3NlbGYpIC0mZ3Q7ICptdXQgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0OwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5ycyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMKaW5kZXggMjNlZTY4OWJkMjQwMDUuLjcyMGU1NzQxODM1OGRjIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnMKQEAgLTEyLDggJiM0MzsxMiwxNSBAQAogICAgIGNyZWQ6OkNyZWRlbnRpYWwsCiAgICAgZXJyb3I6Ontjb2RlOjoqLCB0b19yZXN1bHQsIEVycm9yLCBSZXN1bHR9LAogICAgIGZtdCwKLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sCi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKJiM0MzsgICAgdHlwZXM6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBOb3RUaHJlYWRTYWZlLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwogfTsKIHVzZSBjb3JlOjpwdHI7CiAKQEAgLTE5Nyw3ICYjNDM7MjA0LDcgQEAgdW5zYWZlIGltcGwgU3luYyBmb3IgRmlsZSB7fQogCiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvbgogLy8gbWFrZXMgYEFSZWYmbHQ7RmlsZSZndDtgIG93biBhIG5vcm1hbCByZWZjb3VudC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTIxMiw2ICYjNDM7MjE5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsJmx0O0ZpbGUmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtGaWxlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RmlsZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRmlsZSB7fQomIzQzOwogLy8vIFdyYXBzIHRoZSBrZXJuZWwmIzM5O3MgYHN0cnVjdCBmaWxlYC4gTm90IHRocmVhZCBzYWZlLgogLy8vCiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLgpAQCAtMjMzLDcgJiM0MzsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7CiAKIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgTG9jYWxGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb24KIC8vIG1ha2VzIGBBUmVmJmx0O0xvY2FsRmlsZSZndDtgIG93biBhIG5vcm1hbCByZWZjb3VudC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHsKICAgICAjW2lubGluZV0KICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uCkBAIC0yNDksNiAmIzQzOzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbCZsdDtMb2NhbEZpbGUmZ3Q7KSB7CiAgICAgfQogfQogCiYjNDM7Ly8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZiZsdDtMb2NhbEZpbGUmZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtMb2NhbEZpbGVgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fQomIzQzOwogaW1wbCBMb2NhbEZpbGUgewogICAgIC8vLyBDb25zdHJ1Y3RzIGEgbmV3IGBzdHJ1Y3QgZmlsZWAgd3JhcHBlciBmcm9tIGEgZmlsZSBkZXNjcmlwdG9yLgogICAgIC8vLwpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvaTJjLnJzIGIvcnVzdC9rZXJuZWwvaTJjLnJzCmluZGV4IDYyNGI5NzFjYThiMGIyLi4wMmIyYzkyMjBlYjExYyAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2kyYy5ycwpAQCAtMTgsNyAmIzQzOzE4LDggQEAKICAgICBwcmVsdWRlOjoqLAogICAgIHN5bmM6OmFyZWY6OnsKICAgICAgICAgQVJlZiwKLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwogICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy8KIH07CkBAIC00MjQsNyAmIzQzOzQyNSw3IEBAIHB1YiBmbiBnZXQoaW5kZXg6IGkzMikgLSZndDsgUmVzdWx0Jmx0O0FSZWYmbHQ7U2VsZiZndDsmZ3Q7IHsKIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKEkyY0FkYXB0ZXIpOwogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQWRhcHRlcmAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIgewogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby4KICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19nZXRfYWRhcHRlcihzZWxmLmluZGV4KCkpIH07CkBAIC00MzUsNiAmIzQzOzQzNiw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6aTJjX3B1dF9hZGFwdGVyKG9iai5hc19yZWYoKS5hc19yYXcoKSkgfQogICAgIH0KIH0KJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYW4KJiM0MzsvLyBgJmFtcDtJMmNBZGFwdGVyYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHt9CiAKIC8vLyBUaGUgaTJjIGJvYXJkIGluZm8gcmVwcmVzZW50YXRpb24KIC8vLwpAQCAtNTAwLDcgJiM0Mzs1MDQsNyBAQCB1bnNhZmUgaW1wbCZsdDtDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dCZndDsgZGV2aWNlOjpBc0J1c0RldmljZSZsdDtDdHgmZ3Q7IGZvciBJMmNDbGllbnQmbHQ7Qwoga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoSTJjQ2xpZW50KTsKIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0NsaWVudGAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQ2xpZW50IHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uCiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmVmKCkuYXNfcmF3KCkpIH07CkBAIC01MTEsNiAmIzQzOzUxNSw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cHV0X2RldmljZSgmYW1wO3JhdyBtdXQgKCpvYmouYXNfcmVmKCkuYXNfcmF3KCkpLmRldikgfQogICAgIH0KIH0KJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYW4KJiM0MzsvLyBgJmFtcDtJMmNDbGllbnRgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fQogCiBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7Jmd0OyBmb3IgSTJjQ2xpZW50Jmx0O0N0eCZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UmbHQ7Q3R4Jmd0OyB7CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9saWIucnMgYi9ydXN0L2tlcm5lbC9saWIucnMKaW5kZXggOTUxMmFmNzE1NmRmMmEuLmViNTI1NjIwNGExNzQyIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9saWIucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvbGliLnJzCkBAIC0xMDEsNiAmIzQzOzEwMSw3IEBACiBwdWIgbW9kIG9mOwogI1tjZmcoQ09ORklHX1BNX09QUCldCiBwdWIgbW9kIG9wcDsKJiM0MztwdWIgbW9kIG93bmVkOwogcHViIG1vZCBwYWdlOwogI1tjZmcoQ09ORklHX1BDSSldCiBwdWIgbW9kIHBjaTsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tLnJzIGIvcnVzdC9rZXJuZWwvbW0ucnMKaW5kZXggNDc2NGQ3YjY4ZjJhN2YuLjgzZWQ5NGZjYTE0Y2EyIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9tbS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9tbS5ycwpAQCAtMTMsOCAmIzQzOzEzLDE1IEBACiAKIHVzZSBjcmF0ZTo6ewogICAgIGJpbmRpbmdzLAotICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSwKLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE5vdFRocmVhZFNhZmUsCiYjNDM7ICAgICAgICBPcGFxdWUsIC8vCiYjNDM7ICAgIH0sIC8vCiB9OwogdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9OwogCkBAIC01NSw3ICYjNDM7NjIsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBNbSB7fQogdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge30KIAogLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW0gewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS4KQEAgLTY5LDYgJiM0Mzs3Niw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7TW0mZ3Q7YCBmcm9tIGEgYCZhbXA7TW1gLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tIHt9CiYjNDM7CiAvLy8gQSB3cmFwcGVyIGZvciB0aGUga2VybmVsJiMzOTtzIGBzdHJ1Y3QgbW1fc3RydWN0YC4KIC8vLwogLy8vIFRoaXMgdHlwZSBpcyBsaWtlIFtgTW1gXSwgYnV0IHdpdGggbm9uLXplcm8gYG1tX3VzZXJzYC4gSXQgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIGBtbV91c2Vyc2AgY2FuCkBAIC05MSw3ICYjNDM7MTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fQogdW5zYWZlIGltcGwgU3luYyBmb3IgTW1XaXRoVXNlciB7fQogCiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC4KLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS4KQEAgLTEwNSw2ICYjNDM7MTE1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7TW1XaXRoVXNlciZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO01tV2l0aFVzZXJgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge30KJiM0MzsKIC8vIE1ha2UgYWxsIGBNbWAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJgLgogaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlciB7CiAgICAgdHlwZSBUYXJnZXQgPSBNbTsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzIGIvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnMKaW5kZXggYjhkMmYwNTEyMjVjNzMuLjhmYmMzOTZlNDYwMjgxIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5ycwpAQCAtMTAsNyAmIzQzOzEwLDExIEBACiB1c2UgY3JhdGU6OnsKICAgICBiaW5kaW5ncywKICAgICBtbTo6TW1XaXRoVXNlciwKLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICB0eXBlczo6QWx3YXlzUmVmQ291bnRlZCwKIH07CiB1c2UgY29yZTo6e29wczo6RGVyZWYsIHB0cjo6Tm9uTnVsbH07CiAKQEAgLTM0LDcgJiM0MzszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fQogdW5zYWZlIGltcGwgU3luYyBmb3IgTW1XaXRoVXNlckFzeW5jIHt9CiAKIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlckFzeW5jIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS4KQEAgLTQ4LDYgJiM0Mzs1MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O01tV2l0aFVzZXJBc3luYyZndDtgCiYjNDM7Ly8gZnJvbSBhIGAmYW1wO01tV2l0aFVzZXJBc3luY2AuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlckFzeW5jIHt9CiYjNDM7CiAvLyBNYWtlIGFsbCBgTW1XaXRoVXNlcmAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJBc3luY2AuCiBpbXBsIERlcmVmIGZvciBNbVdpdGhVc2VyQXN5bmMgewogICAgIHR5cGUgVGFyZ2V0ID0gTW1XaXRoVXNlcjsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29wcC5ycyBiL3J1c3Qva2VybmVsL29wcC5ycwppbmRleCA2MmU0NDY3NjEyNWQxMC4uYjhkYjZiZGVmZDA3NzEgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL29wcC5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9vcHAucnMKQEAgLTE2LDggJiM0MzsxNiwxNCBAQAogICAgIGZmaTo6e2NfY2hhciwgY191bG9uZ30sCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OkNTdHJpbmcsCi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAotICAgIHR5cGVzOjpPcGFxdWUsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFSZWYsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE9wYXF1ZSwgLy8KJiM0MzsgICAgfSwgLy8KIH07CiAKICNbY2ZnKENPTkZJR19DUFVfRlJFUSldCkBAIC0xMDQxLDcgJiM0MzsxMDQ3LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgT1BQIHt9CiB1bnNhZmUgaW1wbCBTeW5jIGZvciBPUFAge30KIAogLy8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBbYE9QUGBdIGlzIGFsd2F5cyByZWZjb3VudGVkLgotdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHsKJiM0Mzt1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAgewogICAgICNbaW5saW5lXQogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKSB7CiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby4KQEAgLTEwNTUsNiAmIzQzOzEwNjEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O09QUCZndDtgIGZyb20gYW4KJiM0MzsvLyBgJmFtcDtPUFBgLgomIzQzO3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE9QUCB7fQomIzQzOwogaW1wbCBPUFAgewogICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuCiAgICAgLy8vCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vd25lZC5ycyBiL3J1c3Qva2VybmVsL293bmVkLnJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwLi5hY2I2MTFmMDg0ZmYzNQotLS0gL2Rldi9udWxsCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL293bmVkLnJzCkBAIC0wLDAgJiM0MzsxLDM3MyBAQAomIzQzOy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCiYjNDM7CiYjNDM7Ly8hIFVuaXF1ZSBvd25lZCBwb2ludGVyIHR5cGVzIGZvciBvYmplY3RzIHdpdGggY3VzdG9tIGRyb3AgbG9naWMuCiYjNDM7Ly8hCiYjNDM7Ly8hIFRoZXNlIHBvaW50ZXIgdHlwZXMgYXJlIHVzZWZ1bCBmb3IgQy1hbGxvY2F0ZWQgb2JqZWN0cyB3aGljaCBieSBBUEktY29udHJhY3QKJiM0MzsvLyEgYXJlIG93bmVkIGJ5IFJ1c3QsIGJ1dCBuZWVkIHRvIGJlIGZyZWVkIHRocm91Z2ggdGhlIEMgQVBJLgomIzQzOwomIzQzO3VzZSBjb3JlOjp7CiYjNDM7ICAgIG1lbTo6TWFudWFsbHlEcm9wLAomIzQzOyAgICBvcHM6OnsKJiM0MzsgICAgICAgIERlcmVmLAomIzQzOyAgICAgICAgRGVyZWZNdXQsIC8vCiYjNDM7ICAgIH0sCiYjNDM7ICAgIHBpbjo6UGluLAomIzQzOyAgICBwdHI6Ok5vbk51bGwsIC8vCiYjNDM7fTsKJiM0Mzt1c2Uga2VybmVsOjp7CiYjNDM7ICAgIHN5bmM6OmFyZWY6OkFSZWYsCiYjNDM7ICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvLwomIzQzO307CiYjNDM7CiYjNDM7dXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlOwomIzQzOwomIzQzOy8vLyBUeXBlcyB0aGF0IHNwZWNpZnkgdGhlaXIgb3duIHdheSBvZiBwZXJmb3JtaW5nIGFsbG9jYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUeXBpY2FsbHksIHRoaXMgdHJhaXQKJiM0MzsvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLgomIzQzOy8vLwomIzQzOy8vLyBJbXBsZW1lbnRpbmcgdGhpcyB0cmFpdCBhbGxvd3MgdHlwZXMgdG8gYmUgcmVmZXJlbmNlZCB2aWEgdGhlIFtgT3duZWQmbHQ7U2VsZiZndDtgXSBwb2ludGVyIHR5cGUuCiYjNDM7Ly8vICAtIFRoaXMgaXMgdXNlZnVsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHRpZSB0aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0IHJlZmVyZW5jZSB0byBhbiBvd25lZAomIzQzOy8vLyAgICBvYmplY3QsIHJhdGhlciB0aGFuIHBhc3MgYXJvdW5kIGEgYmFyZSByZWZlcmVuY2UuCiYjNDM7Ly8vICAtIFtgT3duYWJsZWBdIHR5cGVzIGNhbiBkZWZpbmUgY3VzdG9tIGRyb3AgbG9naWMgdGhhdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBvd25lZCByZWZlcmVuY2UKJiM0MzsvLy8gICAgb2YgdHlwZSBbYE93bmVkJmx0O18mZ3Q7YF0gcG9pbnRpbmcgdG8gdGhlIG9iamVjdCBpcyBkcm9wcGVkLgomIzQzOy8vLwomIzQzOy8vLyBOb3RlOiBUaGUgdW5kZXJseWluZyBvYmplY3QgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50aW5nLCBiZWNhdXNlIGl0CiYjNDM7Ly8vIHJlcHJlc2VudHMgYSB1bmlxdWUsIG93bmVkIHJlZmVyZW5jZS4gSWYgcmVmZXJlbmNlIGNvdW50aW5nIChvbiB0aGUgUnVzdCBzaWRlKSBpcyByZXF1aXJlZCwKJiM0MzsvLy8gW2BSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkLiBbYE93bmFibGVSZWZDb3VudGVkYF0gc2hvdWxkIGJlIGltcGxlbWVudGVkIGlmIGNvbnZlcnNpb24KJiM0MzsvLy8gYmV0d2VlbiB1bmlxdWUgYW5kIHNoYXJlZCAocmVmZXJlbmNlIGNvdW50ZWQpIG93bmVyc2hpcCBpcyBuZWVkZWQuCiYjNDM7Ly8vCiYjNDM7Ly8vICMgRXhhbXBsZXMKJiM0MzsvLy8KJiM0MzsvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoIFtgT3duZWRgXSBsb29rcyBsaWtlCiYjNDM7Ly8vIHRoaXM6CiYjNDM7Ly8vCiYjNDM7Ly8vIGBgYAomIzQzOy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXQomIzQzOy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsOwomIzQzOy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6c3luYzo6Z2xvYmFsX2xvY2s7CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZX07CiYjNDM7Ly8vCiYjNDM7Ly8vIC8vIExldCYjMzk7cyBjb3VudCB0aGUgYWxsb2NhdGlvbnMgdG8gc2VlIGlmIGZyZWVpbmcgd29ya3MuCiYjNDM7Ly8vIGtlcm5lbDo6c3luYzo6Z2xvYmFsX2xvY2shIHsKJiM0MzsvLy8gICAgIC8vIFNBRkVUWTogd2UgY2FsbCBgaW5pdCgpYCByaWdodCBiZWxvdywgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuCiYjNDM7Ly8vICAgICB1bnNhZmUodW5pbml0KSBzdGF0aWMgRk9PX0FMTE9DX0NPVU5UOiBNdXRleCZsdDt1c2l6ZSZndDsgPSAwOwomIzQzOy8vLyB9CiYjNDM7Ly8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuCiYjNDM7Ly8vIHVuc2FmZSB7IEZPT19BTExPQ19DT1VOVC5pbml0KCkgfTsKJiM0MzsvLy8KJiM0MzsvLy8gc3RydWN0IEZvbzsKJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBGb28gewomIzQzOy8vLyAgICAgZm4gbmV3KCkgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1NlbGYmZ3Q7Jmd0OyB7CiYjNDM7Ly8vICAgICAgICAgLy8gV2UgYXJlIGp1c3QgdXNpbmcgYSBgS0JveGAgaGVyZSB0byBoYW5kbGUgdGhlIGFjdHVhbCBhbGxvY2F0aW9uLCBhcyBvdXIgYEZvb2AgaXMKJiM0MzsvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuCiYjNDM7Ly8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldygKJiM0MzsvLy8gICAgICAgICAgICAgRm9vIHt9LAomIzQzOy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCwKJiM0MzsvLy8gICAgICAgICApPzsKJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpOwomIzQzOy8vLyAgICAgICAgIC8vIENvdW50IG5ldyBhbGxvY2F0aW9uCiYjNDM7Ly8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgJiM0Mzs9IDE7CiYjNDM7Ly8vICAgICAgICAgLy8gU0FGRVRZOgomIzQzOy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC4KJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBjYW4gdHJhbnNmZXIgdGhpcyBvd25lcnNoaXAgdG8gdGhlIGBmcm9tX3Jhd2AgbWV0aG9kLgomIzQzOy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pCiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBPd25hYmxlIGZvciBGb28gewomIzQzOy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbCZsdDtTZWxmJmd0OykgewomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveCZsdDtTZWxmJmd0O2BdIGlzIHN0aWxsIGFsaXZlLiBXZSBjYW4gcGFzcyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdLCBhcwomIzQzOy8vLyAgICAgICAgIC8vIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KJiM0MzsvLy8gICAgICAgICBkcm9wKHVuc2FmZSB7IEtCb3g6OmZyb21fcmF3KHRoaXMuYXNfcHRyKCkpIH0pOwomIzQzOy8vLyAgICAgICAgIC8vIENvdW50IHJlbGVhc2VkIGFsbG9jYXRpb24KJiM0MzsvLy8gICAgICAgICAqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSAtPSAxOwomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIHsKJiM0MzsvLy8gICAgbGV0IGZvbyA9IEZvbzo6bmV3KCk/OwomIzQzOy8vLyAgICBhc3NlcnQhKCpGT09fQUxMT0NfQ09VTlQubG9jaygpID09IDEpOwomIzQzOy8vLyB9CiYjNDM7Ly8vIC8vIGBmb29gIGlzIG91dCBvZiBzY29wZSBub3csIHNvIHdlIGV4cGVjdCBubyBsaXZlIGFsbG9jYXRpb25zLgomIzQzOy8vLyBhc3NlcnQhKCpGT09fQUxMT0NfQ09VTlQubG9jaygpID09IDApOwomIzQzOy8vLyAjIE9rOjombHQ7KCksIEVycm9yJmd0OygoKSkKJiM0MzsvLy8gYGBgCiYjNDM7cHViIHRyYWl0IE93bmFibGUgewomIzQzOyAgICAvLy8gVGVhciBkb3duIHRoaXMgYE93bmFibGVgLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIEltcGxlbWVudGVycyBvZiBgT3duYWJsZWAgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGNsZWFuIHVwIHRoZSB1c2Ugb2YgYFNlbGZgLiBUaGlzIGNhbgomIzQzOyAgICAvLy8gaW5jbHVkZSBmcmVlaW5nIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyAjIFNhZmV0eQomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLAomIzQzOyAgICAvLy8gYW5kIHRoYXQgdGhpcyBvd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIGByZWxlYXNlYCBtZXRob2QuIGB0aGlzYCBtdXN0IG5vdCBiZSB1c2VkCiYjNDM7ICAgIC8vLyBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kLCBhcyB0aGUgdW5kZXJseWluZyBvYmplY3QgbWF5IGhhdmUgYmVlbiBmcmVlZC4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBgdGhpc2AgaXMgcGlubmVkIGFuZCBpbXBsZW1lbnRlcnMgb2YgdGhpcyBtZXRob2QgbXVzdCBvYnNlcnZlIHRoaXMgY29uc3RyYWludC4KJiM0MzsgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbCZsdDtTZWxmJmd0Oyk7CiYjNDM7fQomIzQzOwomIzQzOy8vLyBBIG11dGFibGUgcmVmZXJlbmNlIHRvIGFuIG93bmVkIGBUYC4KJiM0MzsvLy8KJiM0MzsvLy8gVGhlIFtgT3duYWJsZWBdIGlzIGF1dG9tYXRpY2FsbHkgZnJlZWQgb3IgcmVsZWFzZWQgd2hlbiBhbiBpbnN0YW5jZSBvZiBbYE93bmVkYF0gaXMKJiM0MzsvLy8gZHJvcHBlZC4KJiM0MzsvLy8KJiM0MzsvLy8gIyBJbnZhcmlhbnRzCiYjNDM7Ly8vCiYjNDM7Ly8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWQmbHQ7VCZndDtgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLgomIzQzOy8vLyAtIFRoZSBgVGAgdmFsdWUgaXMgcGlubmVkLgomIzQzO3B1YiBzdHJ1Y3QgT3duZWQmbHQ7VDogT3duYWJsZSZndDsgewomIzQzOyAgICBwdHI6IE5vbk51bGwmbHQ7VCZndDssCiYjNDM7fQomIzQzOwomIzQzO2ltcGwmbHQ7VDogT3duYWJsZSZndDsgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYE93bmVkYF0uCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuCiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gIyBTYWZldHkKJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQ6CiYjNDM7ICAgIC8vLyAtIGBwdHJgIHBvaW50cyB0byBhIHZhbGlkIGluc3RhbmNlIG9mIGBUYC4KJiM0MzsgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZCZsdDtUJmd0O2AgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbCZsdDtUJmd0OykgLSZndDsgU2VsZiB7CiYjNDM7ICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLgomIzQzOyAgICAgICAgLy8gV2UgdHJlYXQgYFRgIGFzIHBpbm5lZCBmcm9tIG5vdyBvbi4KJiM0MzsgICAgICAgIFNlbGYgeyBwdHIgfQomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgIC8vLyBDb25zdW1lcyB0aGUgW2BPd25lZGBdLCByZXR1cm5pbmcgYSByYXcgcG9pbnRlci4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGRyb3AgdGhlIHVuZGVybHlpbmcgYFRgLiBXaGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgb3duZXJzaGlwIG9mIHRoZQomIzQzOyAgICAvLy8gdW5kZXJseWluZyBgVGAgaXMgd2l0aCB0aGUgY2FsbGVyLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgcG9pbnRlciBpcyBwaW5uZWQuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC0mZ3Q7IE5vbk51bGwmbHQ7VCZndDsgewomIzQzOyAgICAgICAgTWFudWFsbHlEcm9wOjpuZXcobWUpLnB0cgomIzQzOyAgICB9CiYjNDM7CiYjNDM7ICAgIC8vLyBHZXQgYSBwaW5uZWQgbXV0YWJsZSByZWZlcmVuY2UgdG8gdGhlIGRhdGEgb3duZWQgYnkgdGhpcyBgT3duZWQmbHQ7VCZndDtgLgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgcHViIGZuIGFzX3Bpbl9tdXQoJmFtcDttdXQgc2VsZikgLSZndDsgUGluJmx0OyZhbXA7bXV0IFQmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5CiYjNDM7ICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC4KJiM0MzsgICAgICAgIGxldCB1bnBpbm5lZCA9IHVuc2FmZSB7IHNlbGYucHRyLmFzX211dCgpIH07CiYjNDM7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuCiYjNDM7ICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQodW5waW5uZWQpIH0KJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MzsvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBhbiBbYE93bmVkJmx0O1QmZ3Q7YF0gdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgW2BTZW5kYF0sCiYjNDM7Ly8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYE93bmVkJmx0O1QmZ3Q7YF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgVGAuCiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogT3duYWJsZSAmIzQzOyBTZW5kJmd0OyBTZW5kIGZvciBPd25lZCZsdDtUJmd0OyB7fQomIzQzOwomIzQzOy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIFtgJmFtcDtPd25lZCZsdDtUJmd0O2BdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU3luY2BdLAomIzQzOy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2AmYW1wO093bmVkJmx0O1QmZ3Q7YF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgJmFtcDtUYC4KJiM0Mzt1bnNhZmUgaW1wbCZsdDtUOiBPd25hYmxlICYjNDM7IFN5bmMmZ3Q7IFN5bmMgZm9yIE93bmVkJmx0O1QmZ3Q7IHt9CiYjNDM7CiYjNDM7aW1wbCZsdDtUOiBPd25hYmxlJmd0OyBEZXJlZiBmb3IgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICB0eXBlIFRhcmdldCA9IFQ7CiYjNDM7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiBkZXJlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7U2VsZjo6VGFyZ2V0IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLgomIzQzOyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfQomIzQzOyAgICB9CiYjNDM7fQomIzQzOwomIzQzO2ltcGwmbHQ7VDogT3duYWJsZSAmIzQzOyBVbnBpbiZndDsgRGVyZWZNdXQgZm9yIE93bmVkJmx0O1QmZ3Q7IHsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIGZuIGRlcmVmX211dCgmYW1wO211dCBzZWxmKSAtJmd0OyAmYW1wO211dCBTZWxmOjpUYXJnZXQgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHkKJiM0MzsgICAgICAgIC8vIHJldHVybiBhIG11dGFibGUgcmVmZXJlbmNlIHRvIGl0LgomIzQzOyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfQomIzQzOyAgICB9CiYjNDM7fQomIzQzOwomIzQzO2ltcGwmbHQ7VDogT3duYWJsZSZndDsgRHJvcCBmb3IgT3duZWQmbHQ7VCZndDsgewomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgZm4gZHJvcCgmYW1wO211dCBzZWxmKSB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgJmFtcDttdXQgc2VsZmAgd2UgZXhjbHVzaXZlbHkgb3duIGBzZWxmYCBhbmQgdGhlIHVuZGVybHlpbmcgYFRgLiBBcwomIzQzOyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLgomIzQzOyAgICAgICAgdW5zYWZlIHsgVDo6cmVsZWFzZShzZWxmLnB0cikgfTsKJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MzsvLyBTQUZFVFk6IFdlIGRlcml2ZSB0aGUgcG9pbnRlciB0byBgVGAgZnJvbSBhIHZhbGlkIGBUYCwgc28gdGhlIHJldHVybmVkCiYjNDM7Ly8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLgomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IE93bmFibGUmZ3Q7IEZvcmVpZ25Pd25hYmxlIGZvciBPd25lZCZsdDtUJmd0OyB7CiYjNDM7ICAgIGNvbnN0IEZPUkVJR05fQUxJR046IHVzaXplID0gY29yZTo6bWVtOjphbGlnbl9vZjo6Jmx0O1QmZ3Q7KCk7CiYjNDM7CiYjNDM7ICAgIHR5cGUgQm9ycm93ZWQmbHQ7JiMzOTthJmd0OwomIzQzOyAgICAgICAgPSAmYW1wOyYjMzk7YSBUCiYjNDM7ICAgIHdoZXJlCiYjNDM7ICAgICAgICBTZWxmOiAmIzM5O2E7CiYjNDM7ICAgIHR5cGUgQm9ycm93ZWRNdXQmbHQ7JiMzOTthJmd0OwomIzQzOyAgICAgICAgPSBQaW4mbHQ7JmFtcDsmIzM5O2EgbXV0IFQmZ3Q7CiYjNDM7ICAgIHdoZXJlCiYjNDM7ICAgICAgICBTZWxmOiAmIzM5O2E7CiYjNDM7CiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLSZndDsgKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkIHsKJiM0MzsgICAgICAgIE93bmVkOjppbnRvX3JhdyhzZWxmKS5hc19wdHIoKS5jYXN0KCkKJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgdW5zYWZlIGZuIGZyb21fZm9yZWlnbihwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLSZndDsgU2VsZiB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgY2FtZSBmcm9tIGBpbnRvX2ZvcmVpZ25gIGFuZCBjYW5ub3QgYmUgbnVsbC4KJiM0MzsgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHB0ci5jYXN0KCkpIH07CiYjNDM7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIHdhcyByZXR1cm5lZCBieSBgaW50b19mb3JlaWduYCwgd2hpY2ggZ2F2ZQomIzQzOyAgICAgICAgLy8gdXAgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiBhIHZhbGlkLCBwaW5uZWQgYFRgOyB3ZSByZXRha2UgdGhhdCBvd25lcnNoaXAgaGVyZS4KJiM0MzsgICAgICAgIHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwdHIpIH0KJiM0MzsgICAgfQomIzQzOwomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgdW5zYWZlIGZuIGJvcnJvdyZsdDsmIzM5O2EmZ3Q7KHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtJmd0OyBTZWxmOjpCb3Jyb3dlZCZsdDsmIzM5O2EmZ3Q7IHsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhCiYjNDM7ICAgICAgICAvLyByZWZlcmVuY2UgZm9yIGAmIzM5O2FgLgomIzQzOyAgICAgICAgdW5zYWZlIHsgJmFtcDsqcHRyLmNhc3QoKSB9CiYjNDM7ICAgIH0KJiM0MzsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIHVuc2FmZSBmbiBib3Jyb3dfbXV0Jmx0OyYjMzk7YSZndDsocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC0mZ3Q7IFNlbGY6OkJvcnJvd2VkTXV0Jmx0OyYjMzk7YSZndDsgewomIzQzOyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGEKJiM0MzsgICAgICAgIC8vIHVuaXF1ZSByZWZlcmVuY2UgZm9yIGAmIzM5O2FgLgomIzQzOyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgJmFtcDttdXQgKnB0ci5jYXN0KCkgfTsKJiM0MzsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogV2UgbmV2ZXIgbW92ZSBvdXQgb2YgaW5uZXIsIGFuZCB3ZSBkbyBub3QgaGFuZCBvdXQgbXV0YWJsZQomIzQzOyAgICAgICAgLy8gcmVmZXJlbmNlcyB3aGVuIGBUOiAhVW5waW5gLgomIzQzOyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKGlubmVyKSB9CiYjNDM7ICAgIH0KJiM0Mzt9CiYjNDM7CiYjNDM7Ly8vIEEgdHJhaXQgZm9yIG9iamVjdHMgdGhhdCBjYW4gYmUgd3JhcHBlZCBpbiBlaXRoZXIgb25lIG9mIHRoZSByZWZlcmVuY2UgdHlwZXMgW2BPd25lZGBdIGFuZAomIzQzOy8vLyBbYEFSZWZgXS4KJiM0MzsvLy8KJiM0MzsvLy8gIyBFeGFtcGxlcwomIzQzOy8vLwomIzQzOy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVSZWZDb3VudGVkYF0sIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aAomIzQzOy8vLyBbYEFSZWZgXSBhbmQgW2BPd25lZGBdIGxvb2tzIGxpa2UgdGhpczoKJiM0MzsvLy8KJiM0MzsvLy8gYGBgCiYjNDM7Ly8vICMgIyFbZXhwZWN0KGNsaXBweTo6ZGlzYWxsb3dlZF9uYW1lcyldCiYjNDM7Ly8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7CiYjNDM7Ly8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDsKJiM0MzsvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTsKJiM0MzsvLy8gIyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07CiYjNDM7Ly8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZSwgT3duYWJsZVJlZkNvdW50ZWR9OwomIzQzOy8vLwomIzQzOy8vLyAvLyBBbiBpbnRlcm5hbGx5IHJlZmNvdW50ZWQgc3RydWN0IGZvciBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzLgomIzQzOy8vLyAvLwomIzQzOy8vLyAvLyAjIEludmFyaWFudHMKJiM0MzsvLy8gLy8KJiM0MzsvLy8gLy8gLSBgcmVmY291bnRgIGlzIGFsd2F5cyBub24temVybyBmb3IgYSB2YWxpZCBvYmplY3QuCiYjNDM7Ly8vIC8vIC0gYHJlZmNvdW50YCBpcyAmZ3Q7MSBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIFJ1c3QgcmVmZXJlbmNlIHRvIGl0LgomIzQzOy8vLyAvLwomIzQzOy8vLyBzdHJ1Y3QgRm9vIHsKJiM0MzsvLy8gICAgIHJlZmNvdW50OiBDZWxsJmx0O3VzaXplJmd0OywKJiM0MzsvLy8gfQomIzQzOy8vLwomIzQzOy8vLyBpbXBsIEZvbyB7CiYjNDM7Ly8vICAgICBmbiBuZXcoKSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7U2VsZiZndDsmZ3Q7IHsKJiM0MzsvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpcwomIzQzOy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC4KJiM0MzsvLy8gICAgICAgICAvLyBJTlZBUklBTlQ6IFdlIGluaXRpYWxpemUgYHJlZmNvdW50YCB0byAxLCBzYXRpc2Z5aW5nIHRoZSBpbnZhcmlhbnRzLgomIzQzOy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoCiYjNDM7Ly8vICAgICAgICAgICAgIEZvbyB7CiYjNDM7Ly8vICAgICAgICAgICAgICAgICByZWZjb3VudDogQ2VsbDo6bmV3KDEpLAomIzQzOy8vLyAgICAgICAgICAgICB9LAomIzQzOy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCwKJiM0MzsvLy8gICAgICAgICApPzsKJiM0MzsvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpOwomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWToKJiM0MzsvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuCiYjNDM7Ly8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC4KJiM0MzsvLy8gICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcocmVzdWx0KSB9KQomIzQzOy8vLyAgICAgfQomIzQzOy8vLyB9CiYjNDM7Ly8vCiYjNDM7Ly8vIC8vIFNBRkVUWTogV2UgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZWFjaCB0aW1lIHRoZSByZXNwZWN0aXZlIGZ1bmN0aW9uIGlzIGNhbGxlZCBhbmQgb25seSBmcmVlCiYjNDM7Ly8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uCiYjNDM7Ly8vIHVuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZvbyB7CiYjNDM7Ly8vICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewomIzQzOy8vLyAgICAgICAgIHNlbGYucmVmY291bnQucmVwbGFjZShzZWxmLnJlZmNvdW50LmdldCgpICYjNDM7IDEpOwomIzQzOy8vLyAgICAgfQomIzQzOy8vLwomIzQzOy8vLyAgICAgdW5zYWZlIGZuIGRlY19yZWYodGhpczogTm9uTnVsbCZsdDtTZWxmJmd0OykgewomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogQnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8sCiYjNDM7Ly8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLgomIzQzOy8vLyAgICAgICAgIGxldCByZWZjb3VudCA9IHVuc2FmZSB7ICZhbXA7dGhpcy5hc19yZWYoKS5yZWZjb3VudCB9OwomIzQzOy8vLyAgICAgICAgIGxldCBuZXdfcmVmY291bnQgPSByZWZjb3VudC5nZXQoKSAtIDE7CiYjNDM7Ly8vICAgICAgICAgaWYgbmV3X3JlZmNvdW50ID09IDAgewomIzQzOy8vLyAgICAgICAgICAgICAvLyBUaGUgYEZvb2Agd2lsbCBiZSBkcm9wcGVkIHdoZW4gYEtCb3hgIGdvZXMgb3V0IG9mIHNjb3BlLgomIzQzOy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBbYEtCb3gmbHQ7Rm9vJmd0O2BdIGlzIHN0aWxsIGFsaXZlIGFzIHRoZSBvbGQgcmVmY291bnQgaXMgMS4gV2UgY2FuIHBhc3MKJiM0MzsvLy8gICAgICAgICAgICAgLy8gb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSBhcyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sCiYjNDM7Ly8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLgomIzQzOy8vLyAgICAgICAgICAgICB1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9OwomIzQzOy8vLyAgICAgICAgIH0gZWxzZSB7CiYjNDM7Ly8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTsKJiM0MzsvLy8gICAgICAgICB9CiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBPd25hYmxlUmVmQ291bnRlZCBmb3IgRm9vIHsKJiM0MzsvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmJmx0O1NlbGYmZ3Q7KSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7U2VsZiZndDssIEFSZWYmbHQ7U2VsZiZndDsmZ3Q7IHsKJiM0MzsvLy8gICAgICAgICBpZiB0aGlzLnJlZmNvdW50LmdldCgpID09IDEgewomIzQzOy8vLyAgICAgICAgICAgICAvLyBTQUZFVFk6IFRoZSBgRm9vYCBpcyBzdGlsbCBhbGl2ZSBhbmQgaGFzIG5vIG90aGVyIFJ1c3QgcmVmZXJlbmNlcyBhcyB0aGUgcmVmY291bnQKJiM0MzsvLy8gICAgICAgICAgICAgLy8gaXMgMS4KJiM0MzsvLy8gICAgICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KEFSZWY6OmludG9fcmF3KHRoaXMpKSB9KQomIzQzOy8vLyAgICAgICAgIH0gZWxzZSB7CiYjNDM7Ly8vICAgICAgICAgICAgIEVycih0aGlzKQomIzQzOy8vLyAgICAgICAgIH0KJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8KJiM0MzsvLy8gICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkJmx0O1NlbGYmZ3Q7KSAtJmd0OyBBUmVmJmx0O1NlbGYmZ3Q7IHsKJiM0MzsvLy8gICAgICAgICAvLyBTQUZFVFk6IEFuIGBPd25lZCZsdDtGb28mZ3Q7YCBob2xkcyB0aGUgdW5pcXVlIHJlZmVyZW5jZSAocmVmY291bnQgMSksIHdoaWNoIHdlIHRyYW5zZmVyIHRvCiYjNDM7Ly8vICAgICAgICAgLy8gdGhlIG5ldyBgQVJlZmAuCiYjNDM7Ly8vICAgICAgICAgdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcoT3duZWQ6OmludG9fcmF3KHRoaXMpKSB9CiYjNDM7Ly8vICAgICB9CiYjNDM7Ly8vIH0KJiM0MzsvLy8KJiM0MzsvLy8gaW1wbCBPd25hYmxlIGZvciBGb28gewomIzQzOy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbCZsdDtTZWxmJmd0OykgewomIzQzOy8vLyAgICAgICAgIC8vIFNBRkVUWTogVXNpbmcgYGRlY19yZWYoKWAgZnJvbSBbYFJlZkNvdW50ZWRgXSB0byByZWxlYXNlIGlzIG9rYXksIGFzIHRoZSByZWZjb3VudCBpcwomIzQzOy8vLyAgICAgICAgIC8vIGFsd2F5cyAxIGZvciBhbiBbYE93bmVkJmx0O0ZvbyZndDtgXS4KJiM0MzsvLy8gICAgICAgICB1bnNhZmUgeyBGb286OmRlY19yZWYodGhpcykgfTsKJiM0MzsvLy8gICAgIH0KJiM0MzsvLy8gfQomIzQzOy8vLwomIzQzOy8vLyBsZXQgZm9vID0gRm9vOjpuZXcoKT87CiYjNDM7Ly8vIGxldCBmb28gPSBBUmVmOjpmcm9tKGZvbyk7CiYjNDM7Ly8vIHsKJiM0MzsvLy8gICAgIGxldCBiYXIgPSBmb28uY2xvbmUoKTsKJiM0MzsvLy8gICAgIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGJhcikuaXNfZXJyKCkpOwomIzQzOy8vLyB9CiYjNDM7Ly8vIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGZvbykuaXNfb2soKSk7CiYjNDM7Ly8vICMgT2s6OiZsdDsoKSwgRXJyb3ImZ3Q7KCgpKQomIzQzOy8vLyBgYGAKJiM0MztwdWIgdHJhaXQgT3duYWJsZVJlZkNvdW50ZWQ6IFJlZkNvdW50ZWQgJiM0MzsgT3duYWJsZSAmIzQzOyBTaXplZCB7CiYjNDM7ICAgIC8vLyBDaGVja3MgaWYgdGhlIFtgQVJlZmBdIGlzIHVuaXF1ZSBhbmQgY29udmVydHMgaXQgdG8gYW4gW2BPd25lZGBdIGlmIHRoYXQgaXMgdGhlIGNhc2UuCiYjNDM7ICAgIC8vLyBPdGhlcndpc2UgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC4KJiM0MzsgICAgZm4gdHJ5X2Zyb21fc2hhcmVkKHRoaXM6IEFSZWYmbHQ7U2VsZiZndDspIC0mZ3Q7IFJlc3VsdCZsdDtPd25lZCZsdDtTZWxmJmd0OywgQVJlZiZsdDtTZWxmJmd0OyZndDs7CiYjNDM7CiYjNDM7ICAgIC8vLyBDb252ZXJ0cyB0aGUgW2BPd25lZGBdIGludG8gYW4gW2BBUmVmYF0uCiYjNDM7ICAgIGZuIGludG9fc2hhcmVkKHRoaXM6IE93bmVkJmx0O1NlbGYmZ3Q7KSAtJmd0OyBBUmVmJmx0O1NlbGYmZ3Q7OwomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IE93bmFibGVSZWZDb3VudGVkJmd0OyBUcnlGcm9tJmx0O0FSZWYmbHQ7VCZndDsmZ3Q7IGZvciBPd25lZCZsdDtUJmd0OyB7CiYjNDM7ICAgIHR5cGUgRXJyb3IgPSBBUmVmJmx0O1QmZ3Q7OwomIzQzOyAgICAvLy8gVHJpZXMgdG8gY29udmVydCB0aGUgW2BBUmVmYF0gdG8gYW4gW2BPd25lZGBdIGJ5IGNhbGxpbmcKJiM0MzsgICAgLy8vIFtgdHJ5X2Zyb21fc2hhcmVkKClgXShPd25hYmxlUmVmQ291bnRlZDo6dHJ5X2Zyb21fc2hhcmVkKS4gSW4gY2FzZSB0aGUgW2BBUmVmYF0gaXMgbm90CiYjNDM7ICAgIC8vLyB1bmlxdWUsIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuCiYjNDM7ICAgICNbaW5saW5lXQomIzQzOyAgICBmbiB0cnlfZnJvbShiOiBBUmVmJmx0O1QmZ3Q7KSAtJmd0OyBSZXN1bHQmbHQ7T3duZWQmbHQ7VCZndDssIFNlbGY6OkVycm9yJmd0OyB7CiYjNDM7ICAgICAgICBUOjp0cnlfZnJvbV9zaGFyZWQoYikKJiM0MzsgICAgfQomIzQzO30KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BhZ2UucnMgYi9ydXN0L2tlcm5lbC9wYWdlLnJzCmluZGV4IDhhZmZkODI2Mjg5MWJhLi5jODhmZGEwOWVhZDVhYSAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvcGFnZS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wYWdlLnJzCkBAIC0xMiwxNiAmIzQzOzEyLDE2IEBACiAgICAgICAgIGNvZGU6OiosCiAgICAgICAgIFJlc3VsdCwgLy8KICAgICB9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgT3BhcXVlLAomIzQzOyAgICAgICAgT3duYWJsZSwKJiM0MzsgICAgICAgIE93bmVkLCAvLwomIzQzOyAgICB9LAogICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlciwgLy8KIH07Ci11c2UgY29yZTo6ewotICAgIG1hcmtlcjo6UGhhbnRvbURhdGEsCi0gICAgbWVtOjpNYW51YWxseURyb3AsCi0gICAgb3BzOjpEZXJlZiwKLSAgICBwdHI6OnsKLSAgICAgICAgc2VsZiwKLSAgICAgICAgTm9uTnVsbCwgLy8KLSAgICB9LCAvLwomIzQzO3VzZSBjb3JlOjpwdHI6OnsKJiM0MzsgICAgc2VsZiwKJiM0MzsgICAgTm9uTnVsbCwgLy8KIH07CiAKIC8vLyBBIGJpdHdpc2Ugc2hpZnQgZm9yIHRoZSBwYWdlIHNpemUuCkBAIC02NSw5MyAmIzQzOzY1LDI5IEBAIHB1YiBjb25zdCBmbiBwYWdlX2FsaWduKGFkZHI6IHVzaXplKSAtJmd0OyBPcHRpb24mbHQ7dXNpemUmZ3Q7IHsKICAgICBTb21lKHN1bSAmYW1wOyBQQUdFX01BU0spCiB9CiAKLS8vLyBSZXByZXNlbnRhdGlvbiBvZiBhIG5vbi1vd25pbmcgcmVmZXJlbmNlIHRvIGEgW2BQYWdlYF0uCi0vLy8KLS8vLyBUaGlzIHR5cGUgcHJvdmlkZXMgYSBib3Jyb3dlZCB2ZXJzaW9uIG9mIGEgW2BQYWdlYF0gdGhhdCBpcyBvd25lZCBieSBzb21lIG90aGVyIGVudGl0eSwgZS5nLiBhCi0vLy8gW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiBzdWNoIGFzIFtgVkJveGBdLgotLy8vCi0vLy8gIyBFeGFtcGxlCi0vLy8KLS8vLyBgYGAKLS8vLyAjIHVzZSBrZXJuZWw6OntiaW5kaW5ncywgcHJlbHVkZTo6Kn07Ci0vLy8gdXNlIGtlcm5lbDo6cGFnZTo6e0JvcnJvd2VkUGFnZSwgUGFnZSwgUEFHRV9TSVpFfTsKLS8vLyAjIHVzZSBjb3JlOjp7bWVtOjpNYXliZVVuaW5pdCwgcHRyLCBwdHI6Ok5vbk51bGwgfTsKLS8vLwotLy8vIGZuIGJvcnJvd19wYWdlJmx0OyYjMzk7YSZndDsodmJveDogJmFtcDsmIzM5O2EgbXV0IFZCb3gmbHQ7TWF5YmVVbmluaXQmbHQ7W3U4OyBQQUdFX1NJWkVdJmd0OyZndDspIC0mZ3Q7IEJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7IHsKLS8vLyAgICAgbGV0IHB0ciA9IHB0cjo6ZnJvbV9yZWYoJmFtcDsqKnZib3gpOwotLy8vCi0vLy8gICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuCi0vLy8gICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OnZtYWxsb2NfdG9fcGFnZShwdHIuY2FzdCgpKSB9OwotLy8vCi0vLy8gICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkCi0vLy8gICAgIC8vIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS4KLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07Ci0vLy8KLS8vLyAgICAgLy8gU0FGRVRZOgotLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuCi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYHNlbGZgLgotLy8vICAgICB1bnNhZmUgeyBCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH0KLS8vLyB9Ci0vLy8KLS8vLyBsZXQgbXV0IHZib3ggPSBWQm94OjombHQ7W3U4OyBQQUdFX1NJWkVdJmd0Ozo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87Ci0vLy8gbGV0IHBhZ2UgPSBib3Jyb3dfcGFnZSgmYW1wO211dCB2Ym94KTsKLS8vLwotLy8vIC8vIFNBRkVUWTogVGhlcmUgaXMgbm8gY29uY3VycmVudCByZWFkIG9yIHdyaXRlIHRvIHRoaXMgcGFnZS4KLS8vLyB1bnNhZmUgeyBwYWdlLmZpbGxfemVyb19yYXcoMCwgUEFHRV9TSVpFKT8gfTsKLS8vLyAjIE9rOjombHQ7KCksIEVycm9yJmd0OygoKSkKLS8vLyBgYGAKLS8vLwotLy8vICMgSW52YXJpYW50cwotLy8vCi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuCi0vLy8KLS8vLyBbYFZCb3hgXToga2VybmVsOjphbGxvYzo6VkJveAotLy8vIFtgVm1hbGxvY2BdOiBrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2MKLXB1YiBzdHJ1Y3QgQm9ycm93ZWRQYWdlJmx0OyYjMzk7YSZndDsoTWFudWFsbHlEcm9wJmx0O1BhZ2UmZ3Q7LCBQaGFudG9tRGF0YSZsdDsmYW1wOyYjMzk7YSBQYWdlJmd0Oyk7Ci0KLWltcGwmbHQ7JiMzOTthJmd0OyBCb3Jyb3dlZFBhZ2UmbHQ7JiMzOTthJmd0OyB7Ci0gICAgLy8vIENvbnN0cnVjdHMgYSBbYEJvcnJvd2VkUGFnZWBdIGZyb20gYSByYXcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuCi0gICAgLy8vCi0gICAgLy8vICMgU2FmZXR5Ci0gICAgLy8vCi0gICAgLy8vIC0gYHB0cmAgbXVzdCBwb2ludCB0byBhIHZhbGlkIGBiaW5kaW5nczo6cGFnZWAuCi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCYjMzk7YWAuCi0gICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyhwdHI6IE5vbk51bGwmbHQ7YmluZGluZ3M6OnBhZ2UmZ3Q7KSAtJmd0OyBTZWxmIHsKLSAgICAgICAgbGV0IHBhZ2UgPSBQYWdlIHsgcGFnZTogcHRyIH07Ci0KLSAgICAgICAgLy8gSU5WQVJJQU5UOiBUaGUgc2FmZXR5IHJlcXVpcmVtZW50cyBndWFyYW50ZWUgdGhhdCBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZQotICAgICAgICAvLyBgJiMzOTthYC4KLSAgICAgICAgU2VsZihNYW51YWxseURyb3A6Om5ldyhwYWdlKSwgUGhhbnRvbURhdGEpCi0gICAgfQotfQotCi1pbXBsJmx0OyYjMzk7YSZndDsgRGVyZWYgZm9yIEJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7IHsKLSAgICB0eXBlIFRhcmdldCA9IFBhZ2U7Ci0KLSAgICBmbiBkZXJlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7U2VsZjo6VGFyZ2V0IHsKLSAgICAgICAgJmFtcDtzZWxmLjAKLSAgICB9Ci19Ci0KLS8vLyBUcmFpdCB0byBiZSBpbXBsZW1lbnRlZCBieSB0eXBlcyB3aGljaCBwcm92aWRlIGFuIFtgSXRlcmF0b3JgXSBpbXBsZW1lbnRhdGlvbiBvZgotLy8vIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMsIHN1Y2ggYXMgW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuCiYjNDM7Ly8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMsIHN1Y2ggYXMKJiM0MzsvLy8gW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuCiBwdWIgdHJhaXQgQXNQYWdlSXRlciB7CiAgICAgLy8vIFRoZSBbYEl0ZXJhdG9yYF0gdHlwZSwgZS5nLiBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS4KLSAgICB0eXBlIEl0ZXImbHQ7JiMzOTthJmd0OzogSXRlcmF0b3ImbHQ7SXRlbSA9IEJvcnJvd2VkUGFnZSZsdDsmIzM5O2EmZ3Q7Jmd0OwomIzQzOyAgICB0eXBlIEl0ZXImbHQ7JiMzOTthJmd0OzogSXRlcmF0b3ImbHQ7SXRlbSA9ICZhbXA7JiMzOTthIFBhZ2UmZ3Q7CiAgICAgd2hlcmUKICAgICAgICAgU2VsZjogJiMzOTthOwogCi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLgomIzQzOyAgICAvLy8gUmV0dXJucyBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcyBvdmVyIGFsbCBwYWdlcyBvd25lZCBieSBgc2VsZmAuCiAgICAgZm4gcGFnZV9pdGVyKCZhbXA7bXV0IHNlbGYpIC0mZ3Q7IFNlbGY6Okl0ZXImbHQ7JiMzOTtfJmd0OzsKIH0KIAotLy8vIEEgcG9pbnRlciB0byBhIHBhZ2UgdGhhdCBvd25zIHRoZSBwYWdlIGFsbG9jYXRpb24uCiYjNDM7Ly8vIEEgYHN0cnVjdCBwYWdlYC4KJiM0MzsvLy8KJiM0MzsvLy8gQSBgUGFnZWAgaXMgYWNjZXNzZWQgdGhyb3VnaCBhIHNoYXJlZCByZWZlcmVuY2Ugb3IgdGhyb3VnaCBhbiBvd25pbmcgW2BPd25lZCZsdDtQYWdlJmd0O2BdOyB0aGUgbGF0dGVyCiYjNDM7Ly8vIGZyZWVzIHRoZSBwYWdlIGFsbG9jYXRpb24gd2hlbiBpdCBpcyBkcm9wcGVkLgogLy8vCiAvLy8gIyBJbnZhcmlhbnRzCiAvLy8KLS8vLyBUaGUgcG9pbnRlciBpcyB2YWxpZCwgYW5kIGhhcyBvd25lcnNoaXAgb3ZlciB0aGUgcGFnZS4KJiM0MzsvLy8gVGhlIGBQYWdlYCBpcyBiYWNrZWQgYnkgYSB2YWxpZCBgc3RydWN0IHBhZ2VgLgomIzQzOyNbcmVwcih0cmFuc3BhcmVudCldCiBwdWIgc3RydWN0IFBhZ2UgewotICAgIHBhZ2U6IE5vbk51bGwmbHQ7YmluZGluZ3M6OnBhZ2UmZ3Q7LAomIzQzOyAgICBwYWdlOiBPcGFxdWUmbHQ7YmluZGluZ3M6OnBhZ2UmZ3Q7LAogfQogCiAvLyBTQUZFVFk6IFBhZ2VzIGhhdmUgbm8gbG9naWMgdGhhdCByZWxpZXMgb24gdGhlbSBzdGF5aW5nIG9uIGEgZ2l2ZW4gdGhyZWFkLCBzbyBtb3ZpbmcgdGhlbSBhY3Jvc3MKQEAgLTE4NSwxOSAmIzQzOzEyMSwyMCBAQCBpbXBsIFBhZ2UgewogICAgIC8vLyAjIE9rOjombHQ7KCksIGtlcm5lbDo6YWxsb2M6OkFsbG9jRXJyb3ImZ3Q7KCgpKQogICAgIC8vLyBgYGAKICAgICAjW2lubGluZV0KLSAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC0mZ3Q7IFJlc3VsdCZsdDtTZWxmLCBBbGxvY0Vycm9yJmd0OyB7CiYjNDM7ICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLSZndDsgUmVzdWx0Jmx0O093bmVkJmx0O1NlbGYmZ3Q7LCBBbGxvY0Vycm9yJmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgZ2ZwX2ZsYWdzYCwgdGhpcyBjYWxsIG1heSBzbGVlcC4gT3RoZXIgdGhhbiB0aGF0LCBpdAogICAgICAgICAvLyBpcyBhbHdheXMgc2FmZSB0byBjYWxsIHRoaXMgbWV0aG9kLgogICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjphbGxvY19wYWdlcyhmbGFncy5hc19yYXcoKSwgMCkgfTsKICAgICAgICAgbGV0IHBhZ2UgPSBOb25OdWxsOjpuZXcocGFnZSkub2tfb3IoQWxsb2NFcnJvcik/OwotICAgICAgICAvLyBJTlZBUklBTlQ6IFdlIGp1c3Qgc3VjY2Vzc2Z1bGx5IGFsbG9jYXRlZCBhIHBhZ2UsIHNvIHdlIG5vdyBoYXZlIG93bmVyc2hpcCBvZiB0aGUgbmV3bHkKLSAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYFBhZ2VgIG9iamVjdC4KLSAgICAgICAgT2soU2VsZiB7IHBhZ2UgfSkKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseQomIzQzOyAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYE93bmVkJmx0O1BhZ2UmZ3Q7YCBvYmplY3QuCiYjNDM7ICAgICAgICAvLyBTaW5jZSBgUGFnZWAgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSBwb2ludGVyIGRpcmVjdGx5LgomIzQzOyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KQogICAgIH0KIAogICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuCiAgICAgcHViIGZuIGFzX3B0cigmYW1wO3NlbGYpIC0mZ3Q7ICptdXQgYmluZGluZ3M6OnBhZ2UgewotICAgICAgICBzZWxmLnBhZ2UuYXNfcHRyKCkKJiM0MzsgICAgICAgIE9wYXF1ZTo6Y2FzdF9pbnRvKCZhbXA7c2VsZi5wYWdlKQogICAgIH0KIAogICAgIC8vLyBHZXQgdGhlIG5vZGUgaWQgY29udGFpbmluZyB0aGlzIHBhZ2UuCkBAIC0yMDYsNiAmIzQzOzE0MywyMCBAQCBwdWIgZm4gbmlkKCZhbXA7c2VsZikgLSZndDsgaTMyIHsKICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBhZ2VfdG9fbmlkKHNlbGYuYXNfcHRyKCkpIH0KICAgICB9CiAKJiM0MzsgICAgLy8vIENyZWF0ZSBhIGAmYW1wO1BhZ2VgIGZyb20gYSByYXcgYHN0cnVjdCBwYWdlYCBwb2ludGVyLgomIzQzOyAgICAvLy8KJiM0MzsgICAgLy8vICMgU2FmZXR5CiYjNDM7ICAgIC8vLwomIzQzOyAgICAvLy8gYHB0cmAgbXVzdCBiZSBjb252ZXJ0aWJsZSB0byBhIHNoYXJlZCByZWZlcmVuY2Ugd2l0aCBhIGxpZmV0aW1lIG9mIGAmIzM5O2FgLgomIzQzOyAgICAjW2lubGluZV0KJiM0MzsgICAgcHViIHVuc2FmZSBmbiBmcm9tX3JhdyZsdDsmIzM5O2EmZ3Q7KHB0cjogKmNvbnN0IGJpbmRpbmdzOjpwYWdlKSAtJmd0OyAmYW1wOyYjMzk7YSBTZWxmIHsKJiM0MzsgICAgICAgIC8vIElOVkFSSUFOVDogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIHJlZmVycyB0byBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAsIHNvCiYjNDM7ICAgICAgICAvLyB0aGUgcmV0dXJuZWQgcmVmZXJlbmNlIHVwaG9sZHMgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBQYWdlYC4KJiM0MzsgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgbm90IG51bGwgYW5kIGlzIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkCiYjNDM7ICAgICAgICAvLyByZWZlcmVuY2UuCiYjNDM7ICAgICAgICB1bnNhZmUgeyAmYW1wOypwdHIuY2FzdCgpIH0KJiM0MzsgICAgfQomIzQzOwogICAgIC8vLyBSdW5zIGEgcGllY2Ugb2YgY29kZSB3aXRoIHRoaXMgcGFnZSBtYXBwZWQgdG8gYW4gYWRkcmVzcy4KICAgICAvLy8KICAgICAvLy8gVGhlIHBhZ2UgaXMgdW5tYXBwZWQgd2hlbiB0aGlzIGNhbGwgcmV0dXJucy4KQEAgLTM3MiwxMCAmIzQzOzMyMywxMSBAQCBwdWIgdW5zYWZlIGZuIGNvcHlfZnJvbV91c2VyX3NsaWNlX3JhdygKICAgICB9CiB9CiAKLWltcGwgRHJvcCBmb3IgUGFnZSB7CiYjNDM7aW1wbCBPd25hYmxlIGZvciBQYWdlIHsKICAgICAjW2lubGluZV0KLSAgICBmbiBkcm9wKCZhbXA7bXV0IHNlbGYpIHsKLSAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWUgaXQuCi0gICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXMoc2VsZi5wYWdlLmFzX3B0cigpLCAwKSB9OwomIzQzOyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7CiYjNDM7ICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWUKJiM0MzsgICAgICAgIC8vIGl0LiBTaW5jZSBQYWdlIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcmF3IHBvaW50ZXIgZGlyZWN0bHkuCiYjNDM7ICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6X19mcmVlX3BhZ2VzKHRoaXMuYXNfcHRyKCkuY2FzdCgpLCAwKSB9OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BjaS5ycyBiL3J1c3Qva2VybmVsL3BjaS5ycwppbmRleCA1MDcxY2FlNjU0M2ZkMi4uZWE5ZWY5OWNlY2IwNzYgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3BjaS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wY2kucnMKQEAgLTE5LDYgJiM0MzsxOSwxMCBAQAogICAgIH0sCiAgICAgcHJlbHVkZTo6KiwKICAgICBzdHI6OkNTdHIsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OnsKJiM0MzsgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogICAgIHR5cGVzOjpPcGFxdWUsCiAgICAgVGhpc01vZHVsZSwgLy8KIH07CkBAIC00ODEsNyAmIzQzOzQ4NSw3IEBAIHVuc2FmZSBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBkZXZpY2U6OkFzQnVzRGV2aWNlJmx0O0N0eCZndDsgZm9yIERldmljZSZsdDtDdHgmZ3Q7CiBpbXBsJmx0OyYjMzk7YSZndDsgY3JhdGU6OmRtYTo6RGV2aWNlJmx0OyYjMzk7YSZndDsgZm9yIERldmljZSZsdDtkZXZpY2U6OkNvcmUmbHQ7JiMzOTthJmd0OyZndDsge30KIAogLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC4KLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLgogICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGNpX2Rldl9nZXQoc2VsZi5hc19yYXcoKSkgfTsKQEAgLTQ5Myw2ICYjNDM7NDk3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzCmluZGV4IDk3OWE5NzE4ZjE1M2Q4Li4wNjdmNjhiOTllOGM1YyAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzCkBAIC03LDcgJiM0Mzs3LDE0IEBACiAvLyEgQyBoZWFkZXI6IFtgaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oKSBhbmQKIC8vISBbYGluY2x1ZGUvbGludXgvcGlkLmhgXShzcmN0cmVlL2luY2x1ZGUvbGludXgvcGlkLmgpCiAKLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0eXBlczo6T3BhcXVlfTsKJiM0Mzt1c2UgY3JhdGU6OnsKJiM0MzsgICAgYmluZGluZ3MsCiYjNDM7ICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsCiYjNDM7ICAgIHR5cGVzOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgT3BhcXVlLCAvLwomIzQzOyAgICB9LCAvLwomIzQzO307CiB1c2UgY29yZTo6cHRyOwogCiAvLy8gV3JhcHMgdGhlIGtlcm5lbCYjMzk7cyBgc3RydWN0IHBpZF9uYW1lc3BhY2VgLiBUaHJlYWQgc2FmZS4KQEAgLTQxLDcgJiM0Mzs0OCw3IEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9wdHImbHQ7JiMzOTthJmd0OyhwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLSZndDsgJmFtcDsmIzM5O2EgU2VsZiB7CiB9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBQaWROYW1lc3BhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLgpAQCAtNTUsNiAmIzQzOzYyLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsJmx0O1BpZE5hbWVzcGFjZSZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O1BpZE5hbWVzcGFjZSZndDtgIGZyb20KJiM0MzsvLyBhIGAmYW1wO1BpZE5hbWVzcGFjZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHt9CiYjNDM7CiAvLyBTQUZFVFk6CiAvLyAtIGBQaWROYW1lc3BhY2U6OmRlY19yZWZgIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLgogLy8gLSBJdCBpcyBva2F5IHRvIHNlbmQgb3duZXJzaGlwIG9mIGBQaWROYW1lc3BhY2VgIGFjcm9zcyB0aHJlYWQgYm91bmRhcmllcy4KZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzIGIvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMKaW5kZXggOWIzNjJlMDQ5NWQzMjMuLjBiYTY3NjQ0NWIwNmQ3IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5ycwpAQCAtMjcsNiAmIzQzOzI3LDEwIEBACiAgICAgfSwKICAgICBvZiwKICAgICBwcmVsdWRlOjoqLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6T3BhcXVlLAogICAgIFRoaXNNb2R1bGUsIC8vCiB9OwpAQCAtNTE4LDcgJiM0Mzs1MjIsNyBAQCBwdWIgZm4gb3B0aW9uYWxfaXJxX2J5X25hbWUoJmFtcDtzZWxmLCBuYW1lOiAmYW1wO0NTdHIpIC0mZ3Q7IFJlc3VsdCZsdDtJcnFSZXF1ZXN0Jmx0OyYjMzk7XyZndDsmZ3Q7IHsKIGltcGwmbHQ7JiMzOTthJmd0OyBjcmF0ZTo6ZG1hOjpEZXZpY2UmbHQ7JiMzOTthJmd0OyBmb3IgRGV2aWNlJmx0O2RldmljZTo6Q29yZSZsdDsmIzM5O2EmZ3Q7Jmd0OyB7fQogCiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLgotdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHsKICAgICBmbiBpbmNfcmVmKCZhbXA7c2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uCiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpnZXRfZGV2aWNlKHNlbGYuYXNfcmVmKCkuYXNfcmF3KCkpIH07CkBAIC01MzAsNiAmIzQzOzUzNCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O0RldmljZSZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0RldmljZWAuCiYjNDM7dW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9CiYjNDM7CiBpbXBsJmx0O0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0Jmd0OyBBc1JlZiZsdDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7Jmd0OyBmb3IgRGV2aWNlJmx0O0N0eCZndDsgewogICAgIGZuIGFzX3JlZigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7ZGV2aWNlOjpEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wd20ucnMgYi9ydXN0L2tlcm5lbC9wd20ucnMKaW5kZXggNmM5ZDY2NzAwOWVmN2IuLjJkMWNkNzRkZDk4ZTFlIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9wd20ucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvcHdtLnJzCkBAIC0xMyw3ICYjNDM7MTMsMTEgQEAKICAgICBkZXZyZXMsCiAgICAgZXJyb3I6OntzZWxmLCB0b19yZXN1bHR9LAogICAgIHByZWx1ZGU6OiosCi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBUmVmLAomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIFJlZkNvdW50ZWQsIC8vCiYjNDM7ICAgIH0sCiAgICAgdHlwZXM6Ok9wYXF1ZSwgLy8KIH07CiB1c2UgY29yZTo6ewpAQCAtNjI5LDcgJiM0Mzs2MzMsNyBAQCBwdWIgZm4gbmV3Jmx0OyYjMzk7YSZndDsoCiB9CiAKIC8vIFNBRkVUWTogSW1wbGVtZW50cyByZWZjb3VudGluZyBmb3IgYENoaXBgIHVzaW5nIHRoZSBlbWJlZGRlZCBgc3RydWN0IGRldmljZWAuCi11bnNhZmUgaW1wbCZsdDtUOiBQd21PcHMmZ3Q7IEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXAmbHQ7VCZndDsgewomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFB3bU9wcyZndDsgUmVmQ291bnRlZCBmb3IgQ2hpcCZsdDtUJmd0OyB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBgc2VsZi4wLmdldCgpYCBwb2ludHMgdG8gYSB2YWxpZCBgcHdtX2NoaXBgIGJlY2F1c2UgYHNlbGZgIGV4aXN0cy4KQEAgLTY0Nyw2ICYjNDM7NjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtDaGlwJmx0O1QmZ3Q7Jmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7Q2hpcCZsdDtUJmd0OyZndDtgIGZyb20gYQomIzQzOy8vIGAmYW1wO0NoaXAmbHQ7VCZndDtgLgomIzQzO3Vuc2FmZSBpbXBsJmx0O1Q6IFB3bU9wcyZndDsgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ2hpcCZsdDtUJmd0OyB7fQomIzQzOwogLy8gU0FGRVRZOiBgQ2hpcGAgaXMgYSB3cmFwcGVyIGFyb3VuZCBgKm11dCBiaW5kaW5nczo6cHdtX2NoaXBgLiBUaGUgdW5kZXJseWluZyBDCiAvLyBzdHJ1Y3R1cmUmIzM5O3Mgc3RhdGUgaXMgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSBrZXJuZWwmIzM5O3MgZGV2aWNlIG1vZGVsCiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMKaW5kZXggYjcyMWIyZTAwYjk4NmYuLmU2ZmZlN2M2NTBjMzljIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzCkBAIC0xMSw3ICYjNDM7MTEsNyBAQAogLy8hIHVuZGVybHlpbmcgb2JqZWN0LCBidXQgdGhpcyByZWZjb3VudCBpcyBpbnRlcm5hbCB0byB0aGUgb2JqZWN0LiBJdCBlc3NlbnRpYWxseSBpcyBhIFJ1c3QKIC8vISBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGdldF9gIGFuZCBgcHV0X2AgcGF0dGVybiB1c2VkIGluIEMgZm9yIHJlZmVyZW5jZSBjb3VudGluZy4KIC8vIQotLy8hIFRvIG1ha2UgdXNlIG9mIFtgQVJlZiZsdDtNeVR5cGUmZ3Q7YF0sIGBNeVR5cGVgIG5lZWRzIHRvIGltcGxlbWVudCBbYEFsd2F5c1JlZkNvdW50ZWRgXS4gSXQgaXMgYSB0cmFpdAomIzQzOy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWYmbHQ7TXlUeXBlJmd0O2BdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXQKIC8vISBmb3IgYWNjZXNzaW5nIHRoZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IG9mIHRoZSBgTXlUeXBlYCB0eXBlLgogLy8hCiAvLyEgW2BBcmNgXTogY3JhdGU6OnN5bmM6OkFyYwpAQCAtMjMsMjYgJiM0MzsyMywzNSBAQAogICAgIG9wczo6RGVyZWYsCiAgICAgcHRyOjpOb25OdWxsLCAvLwogfTsKJiM0Mzt1c2Uga2VybmVsOjp0eXBlczo6ewomIzQzOyAgICBPd25hYmxlUmVmQ291bnRlZCwKJiM0MzsgICAgT3duZWQsIC8vCiYjNDM7fTsKIAotLy8vIFR5cGVzIHRoYXQgYXJlIF9hbHdheXNfIHJlZmVyZW5jZSBjb3VudGVkLgomIzQzOy8vLyBUeXBlcyB0aGF0IGFyZSBpbnRlcm5hbGx5IHJlZmVyZW5jZSBjb3VudGVkLgogLy8vCiAvLy8gSXQgYWxsb3dzIHN1Y2ggdHlwZXMgdG8gZGVmaW5lIHRoZWlyIG93biBjdXN0b20gcmVmIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGZ1bmN0aW9ucy4KLS8vLyBBZGRpdGlvbmFsbHksIGl0IGFsbG93cyB1c2VycyB0byBjb252ZXJ0IGZyb20gYSBzaGFyZWQgcmVmZXJlbmNlIGAmYW1wO1RgIHRvIGFuIG93bmVkIHJlZmVyZW5jZQotLy8vIFtgQVJlZiZsdDtUJmd0O2BdLgogLy8vCiAvLy8gVGhpcyBpcyB1c3VhbGx5IGltcGxlbWVudGVkIGJ5IHdyYXBwZXJzIHRvIGV4aXN0aW5nIHN0cnVjdHVyZXMgb24gdGhlIEMgc2lkZSBvZiB0aGUgY29kZS4gRm9yCiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkCiAvLy8gaW5zdGFuY2VzIG9mIGEgdHlwZS4KIC8vLwomIzQzOy8vLyBOb3RlOiBJbXBsZW1lbnRpbmcgdGhpcyB0cmFpdCBhbGxvd3MgdHlwZXMgdG8gYmUgd3JhcHBlZCBpbiBhbiBbYEFSZWYmbHQ7U2VsZiZndDtgXS4gSXQgcmVxdWlyZXMgYW4KJiM0MzsvLy8gaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGFuZCBwcm92aWRlcyBvbmx5IHNoYXJlZCByZWZlcmVuY2VzLiBJZiB1bmlxdWUgcmVmZXJlbmNlcyBhcmUgcmVxdWlyZWQKJiM0MzsvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW4KJiM0MzsvLy8gW2BPd25lZCZsdDtTZWxmJmd0O2BdKGNyYXRlOjp0eXBlczo6T3duZWQpLiBJbXBsZW1lbnRpbmcgdGhlIHRyYWl0CiYjNDM7Ly8vIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBhbGxvd3MgdG8gY29udmVydCBiZXR3ZWVuIHVuaXF1ZSBhbmQKJiM0MzsvLy8gc2hhcmVkIHJlZmVyZW5jZXMgKGkuZS4gW2BPd25lZCZsdDtTZWxmJmd0O2BdKGNyYXRlOjp0eXBlczo6T3duZWQpIGFuZAomIzQzOy8vLyBbYEFSZWYmbHQ7U2VsZiZndDtgXSkuCiYjNDM7Ly8vCiAvLy8gIyBTYWZldHkKIC8vLwogLy8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCBrZWVwIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5CiAvLy8gYXQgbGVhc3QgdW50aWwgbWF0Y2hpbmcgZGVjcmVtZW50cyBhcmUgcGVyZm9ybWVkLgogLy8vCiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBhbGwgaW5zdGFuY2VzIGFyZSByZWZlcmVuY2UtY291bnRlZC4gKE90aGVyd2lzZSB0aGV5Ci0vLy8gd29uJiMzOTt0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdAotLy8vIGFsaXZlLikKLXB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7CiYjNDM7Ly8vIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGhvbm91ciB0aGUgcmVxdWlyZW1lbnQgdGhhdCBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSBrZWVwIHRoZSBvYmplY3QgYWxpdmUuKQomIzQzO3B1YiB1bnNhZmUgdHJhaXQgUmVmQ291bnRlZCB7CiAgICAgLy8vIEluY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBvbiB0aGUgb2JqZWN0LgogICAgIGZuIGluY19yZWYoJmFtcDtzZWxmKTsKIApAQCAtNTUsMTEgJiM0Mzs2NCwyNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQgewogICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgd2FzIGEgcHJldmlvdXMgbWF0Y2hpbmcgaW5jcmVtZW50IHRvIHRoZSByZWZlcmVuY2UgY291bnQsCiAgICAgLy8vIGFuZCB0aGF0IHRoZSBvYmplY3QgaXMgbm8gbG9uZ2VyIHVzZWQgYWZ0ZXIgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBkZWNyZW1lbnRlZCAoYXMgaXQgbWF5CiAgICAgLy8vIHJlc3VsdCBpbiB0aGUgb2JqZWN0IGJlaW5nIGZyZWVkKSwgdW5sZXNzIHRoZSBjYWxsZXIgb3ducyBhbm90aGVyIGluY3JlbWVudCBvbiB0aGUgcmVmY291bnQKLSAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzCi0gICAgLy8vIFtgQWx3YXlzUmVmQ291bnRlZDo6ZGVjX3JlZmBdIG9uY2UpLgomIzQzOyAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzIFtgUmVmQ291bnRlZDo6ZGVjX3JlZmBdIG9uY2UpLgogICAgIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0Oyk7CiB9CiAKJiM0MzsvLy8gQWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIHR5cGUuCiYjNDM7Ly8vCiYjNDM7Ly8vIEl0IGFsbG93cyBkZXJpdmluZyBhIGNvdW50ZWQgcmVmZXJlbmNlIFtgQVJlZiZsdDtUJmd0O2BdIGZyb20gYSBgJmFtcDtUYC4KJiM0MzsvLy8KJiM0MzsvLy8gVGhpcyBwcm92aWRlcyBzb21lIGNvbnZlbmllbmNlLCBidXQgaXQgYWxsb3dzICYjMzQ7ZXNjYXBpbmcmIzM0OyBib3Jyb3cgY2hlY2tzIG9uIGAmYW1wO1RgLiBBcyBpdAomIzQzOy8vLyBjb21wbGljYXRlcyBhdHRlbXB0cyB0byBlbnN1cmUgdGhhdCBhIHJlZmVyZW5jZSB0byBUIGlzIHVuaXF1ZSwgaXQgaXMgb3B0aW9uYWwgdG8gcHJvdmlkZSBmb3IKJiM0MzsvLy8gW2BSZWZDb3VudGVkYF0gdHlwZXMuIFNlZSAqU2FmZXR5KiBiZWxvdy4KJiM0MzsvLy8KJiM0MzsvLy8gIyBTYWZldHkKJiM0MzsvLy8KJiM0MzsvLy8gSW1wbGVtZW50ZXJzIG11c3QgZW5zdXJlIHRoYXQgbm8gc2FmZXR5IGludmFyaWFudHMgYXJlIHZpb2xhdGVkIGJ5IHVwZ3JhZGluZyBhbiBgJmFtcDtUYCB0byBhbgomIzQzOy8vLyBbYEFSZWYmbHQ7VCZndDtgXS4gSW4gcGFydGljdWxhciB0aGF0IGltcGxpZXMgW2BBbHdheXNSZWZDb3VudGVkYF0gYW5kIFtgY3JhdGU6OnR5cGVzOjpPd25hYmxlYF0KJiM0MzsvLy8gY2Fubm90IGJlIGltcGxlbWVudGVkIGZvciB0aGUgc2FtZSB0eXBlLCBhcyB0aGlzIHdvdWxkIGFsbG93IHZpb2xhdGluZyB0aGUgdW5pcXVlbmVzcyBndWFyYW50ZWUKJiM0MzsvLy8gb2YgW2BjcmF0ZTo6dHlwZXM6Ok93bmVkJmx0O1QmZ3Q7YF0gYnkgZGVyZWZlcmVuY2luZyBpdCBpbnRvIGFuIGAmYW1wO1RgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbQomIzQzOy8vLyB0aGF0LgomIzQzO3B1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZDogUmVmQ291bnRlZCB7fQomIzQzOwogLy8vIEFuIG93bmVkIHJlZmVyZW5jZSB0byBhbiBhbHdheXMtcmVmZXJlbmNlLWNvdW50ZWQgb2JqZWN0LgogLy8vCiAvLy8gVGhlIG9iamVjdCYjMzk7cyByZWZlcmVuY2UgY291bnQgaXMgYXV0b21hdGljYWxseSBkZWNyZW1lbnRlZCB3aGVuIGFuIGluc3RhbmNlIG9mIFtgQVJlZmBdIGlzCkBAIC03MCw3ICYjNDM7OTUsNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQgewogLy8vCiAvLy8gVGhlIHBvaW50ZXIgc3RvcmVkIGluIGBwdHJgIGlzIG5vbi1udWxsIGFuZCB2YWxpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBbYEFSZWZgXSBpbnN0YW5jZS4gSW4KIC8vLyBwYXJ0aWN1bGFyLCB0aGUgW2BBUmVmYF0gaW5zdGFuY2Ugb3ducyBhbiBpbmNyZW1lbnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0JiMzOTtzIHJlZmVyZW5jZSBjb3VudC4KLXB1YiBzdHJ1Y3QgQVJlZiZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyB7CiYjNDM7cHViIHN0cnVjdCBBUmVmJmx0O1Q6IFJlZkNvdW50ZWQmZ3Q7IHsKICAgICBwdHI6IE5vbk51bGwmbHQ7VCZndDssCiAgICAgX3A6IFBoYW50b21EYXRhJmx0O1QmZ3Q7LAogfQpAQCAtNzksMTkgJiM0MzsxMDQsMTkgQEAgcHViIHN0cnVjdCBBUmVmJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IHsKIC8vIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYCZhbXA7VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LCBpdCBuZWVkcwogLy8gYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYW4gYEFSZWYmbHQ7VCZndDtgIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYQogLy8gbXV0YWJsZSByZWZlcmVuY2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC4KLXVuc2FmZSBpbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kJmd0OyBTZW5kIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogUmVmQ291bnRlZCAmIzQzOyBTeW5jICYjNDM7IFNlbmQmZ3Q7IFNlbmQgZm9yIEFSZWYmbHQ7VCZndDsge30KIAogLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYCZhbXA7QVJlZiZsdDtUJmd0O2AgdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgYFN5bmNgCiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYCZhbXA7VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LAogLy8gaXQgbmVlZHMgYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYSBgJmFtcDtBUmVmJmx0O1QmZ3Q7YCBtYXkgY2xvbmUgaXQgYW5kIGdldCBhbgogLy8gYEFSZWYmbHQ7VCZndDtgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yCiAvLyBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC4KLXVuc2FmZSBpbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgU3luYyAmIzQzOyBTZW5kJmd0OyBTeW5jIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiYjNDM7dW5zYWZlIGltcGwmbHQ7VDogUmVmQ291bnRlZCAmIzQzOyBTeW5jICYjNDM7IFNlbmQmZ3Q7IFN5bmMgZm9yIEFSZWYmbHQ7VCZndDsge30KIAogLy8gRXZlbiBpZiBgVGAgaXMgcGlubmVkLCBwb2ludGVycyB0byBgVGAgY2FuIHN0aWxsIG1vdmUuCi1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IFVucGluIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiYjNDM7aW1wbCZsdDtUOiBSZWZDb3VudGVkJmd0OyBVbnBpbiBmb3IgQVJlZiZsdDtUJmd0OyB7fQogCi1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IEFSZWYmbHQ7VCZndDsgewomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCZndDsgQVJlZiZsdDtUJmd0OyB7CiAgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BBUmVmYF0uCiAgICAgLy8vCiAgICAgLy8vIEl0IHRha2VzIG92ZXIgYW4gaW5jcmVtZW50IG9mIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0LgpAQCAtMTIwLDE5ICYjNDM7MTQ1LDIxIEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsJmx0O1QmZ3Q7KSAtJmd0OyBTZWxmIHsKICAgICAvLy8KICAgICAvLy8gYGBgCiAgICAgLy8vIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7Ci0gICAgLy8vIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfTsKJiM0MzsgICAgLy8vIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBSZWZDb3VudGVkfTsKICAgICAvLy8KICAgICAvLy8gc3RydWN0IEVtcHR5IHt9CiAgICAgLy8vCi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLgotICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7CiYjNDM7ICAgIC8vLyAvLyBTQUZFVFk6IFRoZSBgUmVmQ291bnRlZGAgaW1wbGVtZW50YXRpb24gZm9yIGBFbXB0eWAgZG9lcyBub3QgY291bnQgcmVmZXJlbmNlcyBhbmQgbmV2ZXIKJiM0MzsgICAgLy8vIC8vIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gVGh1cyB3ZSBjYW4gYWN0IGFzIG93bmluZyBhbiBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50IGZvcgomIzQzOyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLgomIzQzOyAgICAvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRW1wdHkgewogICAgIC8vLyAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHt9CiAgICAgLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZihfb2JqOiBOb25OdWxsJmx0O1NlbGYmZ3Q7KSB7fQogICAgIC8vLyB9CiAgICAgLy8vCiAgICAgLy8vIGxldCBtdXQgZGF0YSA9IEVtcHR5IHt9OwogICAgIC8vLyBsZXQgcHRyID0gTm9uTnVsbDo6Jmx0O0VtcHR5Jmd0Ozo6bmV3KCZhbXA7bXV0IGRhdGEpLnVud3JhcCgpOwotICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy4KJiM0MzsgICAgLy8vIC8vIFNBRkVUWTogV2Uga2VlcCBgZGF0YWAgYXJvdW5kIGxvbmdlciB0aGFuIHRoZSBgQVJlZmAuCiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZiZsdDtFbXB0eSZndDsgPSB1bnNhZmUgeyBBUmVmOjpmcm9tX3JhdyhwdHIpIH07CiAgICAgLy8vIGxldCByYXdfcHRyOiBOb25OdWxsJmx0O0VtcHR5Jmd0OyA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTsKICAgICAvLy8KQEAgLTE0Myw3ICYjNDM7MTcwLDcgQEAgcHViIGZuIGludG9fcmF3KG1lOiBTZWxmKSAtJmd0OyBOb25OdWxsJmx0O1QmZ3Q7IHsKICAgICB9CiB9CiAKLWltcGwmbHQ7VDogQWx3YXlzUmVmQ291bnRlZCZndDsgQ2xvbmUgZm9yIEFSZWYmbHQ7VCZndDsgewomIzQzO2ltcGwmbHQ7VDogUmVmQ291bnRlZCZndDsgQ2xvbmUgZm9yIEFSZWYmbHQ7VCZndDsgewogICAgIGZuIGNsb25lKCZhbXA7c2VsZikgLSZndDsgU2VsZiB7CiAgICAgICAgIHNlbGYuaW5jX3JlZigpOwogICAgICAgICAvLyBTQUZFVFk6IFdlIGp1c3QgaW5jcmVtZW50ZWQgdGhlIHJlZmNvdW50IGFib3ZlLgpAQCAtMTUxLDcgJiM0MzsxNzgsNyBAQCBmbiBjbG9uZSgmYW1wO3NlbGYpIC0mZ3Q7IFNlbGYgewogICAgIH0KIH0KIAotaW1wbCZsdDtUOiBBbHdheXNSZWZDb3VudGVkJmd0OyBEZXJlZiBmb3IgQVJlZiZsdDtUJmd0OyB7CiYjNDM7aW1wbCZsdDtUOiBSZWZDb3VudGVkJmd0OyBEZXJlZiBmb3IgQVJlZiZsdDtUJmd0OyB7CiAgICAgdHlwZSBUYXJnZXQgPSBUOwogCiAgICAgZm4gZGVyZWYoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO1NlbGY6OlRhcmdldCB7CkBAIC0xNjgsNyAmIzQzOzE5NSwxNCBAQCBmbiBmcm9tKGI6ICZhbXA7VCkgLSZndDsgU2VsZiB7CiAgICAgfQogfQogCi1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQmZ3Q7IERyb3AgZm9yIEFSZWYmbHQ7VCZndDsgewomIzQzO2ltcGwmbHQ7VDogT3duYWJsZVJlZkNvdW50ZWQmZ3Q7IEZyb20mbHQ7T3duZWQmbHQ7VCZndDsmZ3Q7IGZvciBBUmVmJmx0O1QmZ3Q7IHsKJiM0MzsgICAgI1tpbmxpbmVdCiYjNDM7ICAgIGZuIGZyb20oYjogT3duZWQmbHQ7VCZndDspIC0mZ3Q7IFNlbGYgewomIzQzOyAgICAgICAgVDo6aW50b19zaGFyZWQoYikKJiM0MzsgICAgfQomIzQzO30KJiM0MzsKJiM0MztpbXBsJmx0O1Q6IFJlZkNvdW50ZWQmZ3Q7IERyb3AgZm9yIEFSZWYmbHQ7VCZndDsgewogICAgIGZuIGRyb3AoJmFtcDttdXQgc2VsZikgewogICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UmIzM5O3JlIGFib3V0IHRvCiAgICAgICAgIC8vIGRlY3JlbWVudC4KQEAgLTE3OCwxOSAmIzQzOzIxMiwxOSBAQCBmbiBkcm9wKCZhbXA7bXV0IHNlbGYpIHsKIAogaW1wbCZsdDtULCBVJmd0OyBQYXJ0aWFsRXEmbHQ7QVJlZiZsdDtVJmd0OyZndDsgZm9yIEFSZWYmbHQ7VCZndDsKIHdoZXJlCi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXEmbHQ7VSZndDssCi0gICAgVTogQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgVDogUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXEmbHQ7VSZndDssCiYjNDM7ICAgIFU6IFJlZkNvdW50ZWQsCiB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gZXEoJmFtcDtzZWxmLCBvdGhlcjogJmFtcDtBUmVmJmx0O1UmZ3Q7KSAtJmd0OyBib29sIHsKICAgICAgICAgVDo6ZXEoJmFtcDsqKnNlbGYsICZhbXA7KipvdGhlcikKICAgICB9CiB9Ci1pbXBsJmx0O1Q6IEFsd2F5c1JlZkNvdW50ZWQgJiM0MzsgRXEmZ3Q7IEVxIGZvciBBUmVmJmx0O1QmZ3Q7IHt9CiYjNDM7aW1wbCZsdDtUOiBSZWZDb3VudGVkICYjNDM7IEVxJmd0OyBFcSBmb3IgQVJlZiZsdDtUJmd0OyB7fQogCiBpbXBsJmx0O1QsIFUmZ3Q7IFBhcnRpYWxFcSZsdDsmYW1wOyYjMzk7XyBVJmd0OyBmb3IgQVJlZiZsdDtUJmd0Owogd2hlcmUKLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICYjNDM7IFBhcnRpYWxFcSZsdDtVJmd0OywKJiM0MzsgICAgVDogUmVmQ291bnRlZCAmIzQzOyBQYXJ0aWFsRXEmbHQ7VSZndDssCiB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gZXEoJmFtcDtzZWxmLCBvdGhlcjogJmFtcDsmYW1wO1UpIC0mZ3Q7IGJvb2wgewpkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdGFzay5ycyBiL3J1c3Qva2VybmVsL3Rhc2sucnMKaW5kZXggMzgyNzNmNGVlZGI1MTMuLjYyNTk0MzBiMGNhMzE4IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC90YXNrLnJzCiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL3Rhc2sucnMKQEAgLTEwLDcgJiM0MzsxMCwxMiBAQAogICAgIHBpZF9uYW1lc3BhY2U6OlBpZE5hbWVzcGFjZSwKICAgICBwcmVsdWRlOjoqLAogICAgIHN5bmM6OmFyZWY6OkFSZWYsCi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LAomIzQzOyAgICB0eXBlczo6ewomIzQzOyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE5vdFRocmVhZFNhZmUsCiYjNDM7ICAgICAgICBPcGFxdWUsCiYjNDM7ICAgICAgICBSZWZDb3VudGVkLCAvLwomIzQzOyAgICB9LAogfTsKIHVzZSBjb3JlOjp7CiAgICAgb3BzOjpEZXJlZiwKQEAgLTM0Nyw3ICYjNDM7MzUyLDcgQEAgcHViIGZuIGdyb3VwX2xlYWRlcigmYW1wO3NlbGYpIC0mZ3Q7ICZhbXA7VGFzayB7CiB9CiAKIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBgVGFza2AgaXMgYWx3YXlzIHJlZmNvdW50ZWQuCi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7CiYjNDM7dW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgVGFzayB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLgpAQCAtMzYxLDYgJiM0MzszNjYsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGwmbHQ7U2VsZiZndDspIHsKICAgICB9CiB9CiAKJiM0MzsvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmJmx0O1Rhc2smZ3Q7YCBmcm9tIGEKJiM0MzsvLyBgJmFtcDtUYXNrYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBUYXNrIHt9CiYjNDM7CiBpbXBsIFBhcnRpYWxFcSBmb3IgVGFzayB7CiAgICAgI1tpbmxpbmVdCiAgICAgZm4gZXEoJmFtcDtzZWxmLCBvdGhlcjogJmFtcDtTZWxmKSAtJmd0OyBib29sIHsKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3R5cGVzLnJzIGIvcnVzdC9rZXJuZWwvdHlwZXMucnMKaW5kZXggYWMzMTZmZDdiNTM4ZmUuLjZhYTc2MDk1MmNiNjM1IDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC90eXBlcy5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC90eXBlcy5ycwpAQCAtMTUsNiAmIzQzOzE1LDE4IEBACiBwdWIgbW9kIGZvcl9sdDsKIHB1YiB1c2UgZm9yX2x0OjpGb3JMdDsKIAomIzQzO3B1YiB1c2UgY3JhdGU6OnsKJiM0MzsgICAgb3duZWQ6OnsKJiM0MzsgICAgICAgIE93bmFibGUsCiYjNDM7ICAgICAgICBPd25hYmxlUmVmQ291bnRlZCwKJiM0MzsgICAgICAgIE93bmVkLCAvLwomIzQzOyAgICB9LAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwgLy8KJiM0Mzt9OwomIzQzOwogLy8vIFVzZWQgdG8gdHJhbnNmZXIgb3duZXJzaGlwIHRvIGFuZCBmcm9tIGZvcmVpZ24gKG5vbi1SdXN0KSBsYW5ndWFnZXMuCiAvLy8KIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kCmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC91c2IucnMgYi9ydXN0L2tlcm5lbC91c2IucnMKaW5kZXggN2FmZjBjODJkMGFmYzAuLjU5MzUwYzZiMGRmMmFkIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC91c2IucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvdXNiLnJzCkBAIC0xOCw3ICYjNDM7MTgsMTAgQEAKICAgICAgICAgdG9fcmVzdWx0LCAvLwogICAgIH0sCiAgICAgcHJlbHVkZTo6KiwKLSAgICBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICBzeW5jOjphcmVmOjp7CiYjNDM7ICAgICAgICBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICAgICAgUmVmQ291bnRlZCwgLy8KJiM0MzsgICAgfSwKICAgICB0eXBlczo6T3BhcXVlLAogICAgIFRoaXNNb2R1bGUsIC8vCiB9OwpAQCAtMzkyLDcgJiM0MzszOTUsNyBAQCBmbiBhc19yZWYoJmFtcDtzZWxmKSAtJmd0OyAmYW1wO0RldmljZSB7CiB9CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJbnRlcmZhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJbnRlcmZhY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgSW50ZXJmYWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWAKICAgICAgICAgLy8gcmV0dXJucyBhIHZhbGlkIGBzdHJ1Y3QgdXNiX2ludGVyZmFjZWAgcG9pbnRlciwgZm9yIHdoaWNoIHdlIHdpbGwKQEAgLTQwNiw2ICYjNDM7NDA5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7SW50ZXJmYWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7SW50ZXJmYWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge30KJiM0MzsKIC8vIFNBRkVUWTogQSBgSW50ZXJmYWNlYCBpcyBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgYW5kIGNhbiBiZSByZWxlYXNlZCBmcm9tIGFueSB0aHJlYWQuCiB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbnRlcmZhY2Uge30KIApAQCAtNDQzLDcgJiM0Mzs0NTAsNyBAQCBmbiBhc19yYXcoJmFtcDtzZWxmKSAtJmd0OyAqbXV0IGJpbmRpbmdzOjp1c2JfZGV2aWNlIHsKIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7CiAKIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuCi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2UgewomIzQzO3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7CiAgICAgZm4gaW5jX3JlZigmYW1wO3NlbGYpIHsKICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWAKICAgICAgICAgLy8gcmV0dXJucyBhIHZhbGlkIGBzdHJ1Y3QgdXNiX2RldmljZWAgcG9pbnRlciwgZm9yIHdoaWNoIHdlIHdpbGwKQEAgLTQ1Nyw2ICYjNDM7NDY0LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbCZsdDtTZWxmJmd0OykgewogICAgIH0KIH0KIAomIzQzOy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWYmbHQ7RGV2aWNlJmd0O2AgZnJvbSBhCiYjNDM7Ly8gYCZhbXA7RGV2aWNlYC4KJiM0Mzt1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge30KJiM0MzsKIGltcGwmbHQ7Q3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHQmZ3Q7IEFzUmVmJmx0O2RldmljZTo6RGV2aWNlJmx0O0N0eCZndDsmZ3Q7IGZvciBEZXZpY2UmbHQ7Q3R4Jmd0OyB7CiAgICAgZm4gYXNfcmVmKCZhbXA7c2VsZikgLSZndDsgJmFtcDtkZXZpY2U6OkRldmljZSZsdDtDdHgmZ3Q7IHsKICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWQKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycwppbmRleCA3ZTI1M2I2ZjI5OWNlMy4uNzc2NzNiOGVhNDVmYjEgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC93b3JrcXVldWUucnMKQEAgLTE5Miw3ICYjNDM7MTkyLDcgQEAKICAgICBzeW5jOjp7CiAgICAgICAgIGFyZWY6OnsKICAgICAgICAgICAgIEFSZWYsCi0gICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvLwomIzQzOyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vCiAgICAgICAgIH0sCiAgICAgICAgIEFyYywKICAgICAgICAgTG9ja0NsYXNzS2V5LCAvLwpAQCAtOTU0LDcgJiM0Mzs5NTQsNyBAQCB1bnNhZmUgaW1wbCZsdDtULCBjb25zdCBJRDogdTY0Jmd0OyBSYXdEZWxheWVkV29ya0l0ZW0mbHQ7SUQmZ3Q7IGZvciBQaW4mbHQ7S0JveCZsdDtUJmd0OyZndDsKIC8vICAgICBpbXBsZW1lbnRhdGlvbiBvZiBgV29ya0l0ZW1Qb2ludGVyYCBmb3IgYEFSZWYmbHQ7VCZndDtgLgogdW5zYWZlIGltcGwmbHQ7VCwgY29uc3QgSUQ6IHU2NCZndDsgV29ya0l0ZW1Qb2ludGVyJmx0O0lEJmd0OyBmb3IgQVJlZiZsdDtUJmd0Owogd2hlcmUKLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICBUOiBSZWZDb3VudGVkLAogICAgIFQ6IFdvcmtJdGVtJmx0O0lELCBQb2ludGVyID0gU2VsZiZndDssCiAgICAgVDogSGFzV29yayZsdDtULCBJRCZndDssCiB7CkBAIC05ODcsNyAmIzQzOzk4Nyw3IEBAIHVuc2FmZSBpbXBsJmx0O1QsIGNvbnN0IElEOiB1NjQmZ3Q7IFdvcmtJdGVtUG9pbnRlciZsdDtJRCZndDsgZm9yIEFSZWYmbHQ7VCZndDsKIC8vIHJlcXVpcmVtZW50cyBvZiBgV29ya0l0ZW1Qb2ludGVyYC4KIHVuc2FmZSBpbXBsJmx0O1QsIGNvbnN0IElEOiB1NjQmZ3Q7IFJhd1dvcmtJdGVtJmx0O0lEJmd0OyBmb3IgQVJlZiZsdDtUJmd0Owogd2hlcmUKLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICBUOiBSZWZDb3VudGVkLAogICAgIFQ6IFdvcmtJdGVtJmx0O0lELCBQb2ludGVyID0gU2VsZiZndDssCiAgICAgVDogSGFzV29yayZsdDtULCBJRCZndDssCiB7CkBAIC0xMDIwLDcgJiM0MzsxMDIwLDcgQEAgdW5zYWZlIGltcGwmbHQ7VCwgY29uc3QgSUQ6IHU2NCZndDsgUmF3RGVsYXllZFdvcmtJdGVtJmx0O0lEJmd0OyBmb3IgQVJlZiZsdDtUJmd0Owogd2hlcmUKICAgICBUOiBXb3JrSXRlbSZsdDtJRCwgUG9pbnRlciA9IFNlbGYmZ3Q7LAogICAgIFQ6IEhhc0RlbGF5ZWRXb3JrJmx0O1QsIElEJmd0OywKLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLAomIzQzOyAgICBUOiBSZWZDb3VudGVkLAogewogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjA2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMDE4CgkJCQkJCQlvdXRwdXQ6IDEyMAoJCQkJCQkJdGhvdWdodHM6IDEwMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUmVmYWN0b3JpbmcgRGVlcCBEaXZlOiBObyBGdXp6aW5nIE5lZWRlZCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBpbnRyb2R1Y2luZyBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHlwZXMsIGFuZCByZW9yZ2FuaXppbmcgaG93IHJlZmVyZW5jZSBjb3VudGluZyB3b3Jrcy4gSXQgc2VlbXMgbGlrZSBhIGZ1bmRhbWVudGFsIHJlZmFjdG9yaW5nIG9mIHRoZSBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGlzIHRoaXMganVzdCBhIHR5cGUgc3lzdGVtIHNodWZmbGUsIG9yIGFyZSB0aGVyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gY29uc2lkZXI/CgpJIHNlZSB0aGF0IGl0JiMzOTtzIGludHJvZHVjaW5nIG5ldyB0eXBlcyBhbmQgdHJhaXRzIGluIGBydXN0L2tlcm5lbC9vd25lZC5yc2AgYW5kIGNoYW5naW5nIGhvdyBgQWx3YXlzUmVmQ291bnRlZGAgaXMgc3RydWN0dXJlZC4gSXQmIzM5O3MgYWxzbyBtb2RpZnlpbmcgaG93IGBQYWdlYCBpcyBoYW5kbGVkLCB1c2luZyBgT3duZWQmbHQ7UGFnZSZndDtgIGluc3RlYWQgb2YgZGlyZWN0bHkgcmV0dXJuaW5nIGBQYWdlYCBmcm9tIGBhbGxvY19wYWdlYC4gVGhpcyBjaGFuZ2UgcmlwcGxlcyB0aHJvdWdoIHRvIHBsYWNlcyBsaWtlIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIgKGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNgKSwgYWRhcHRpbmcgdG8gdGhlIG5ldyB0eXBlLgoKTXkgZm9jdXMgaXMgYWx3YXlzIG9uIG5ldyBmdW5jdGlvbmFsaXR5IHRoYXQgY291bGQgYmUgYSBmdXp6aW5nIHRhcmdldC4gQWZ0ZXIgYSBjbG9zZSBsb29rLCB0aGUgcGF0Y2ggaXMgY29uZmluZWQgdG8gdGhlIFJ1c3QgYWJzdHJhY3Rpb25zIGFuZCBhZGFwdGF0aW9ucyB0byB0aGUgQW5kcm9pZCBCaW5kZXIgZHJpdmVyLiBUaGUgQmluZGVyIGRyaXZlciBjaGFuZ2VzIGFyZSBzdHJhaWdodGZvcndhcmQgdXBkYXRlcyB0byB1c2UgdGhlIG5ldyBgT3duZWQmbHQ7UGFnZSZndDtgIHR5cGUgc2lnbmF0dXJlLCB3aGljaCBpcyBtZXJlbHkgYSB3cmFwcGVyIGFyb3VuZCBhIGBOb25OdWxsJmx0O1QmZ3Q7YCBhbmQgY2FsbHMgYFQ6OnJlbGVhc2VgIG9uIGRyb3AuIFRoaXMgaXMgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gdGhlIHByZXZpb3VzIGltcGxlbWVudGF0aW9uIHdoZXJlIGBQYWdlYCB3YXMgaW1wbGVtZW50aW5nIGBEcm9wYC4KCkkmIzM5O20gdmVyaWZ5aW5nIGlmIHRoZXJlIGFyZSBhbnkgbmV3IGZ1bmN0aW9ucyB0aGF0IGNvdWxkIHBvdGVudGlhbGx5IGJlIGZ1enplZC4gSXQgYWRkcyBtZXRob2RzIGxpa2UgYE93bmVkOjpmcm9tX3Jhd2AsIGBPd25lZDo6aW50b19yYXdgLCBldGMuIFRoZXNlIGFyZSBhbGwgcGFydCBvZiB0aGUgUnVzdCBhYnN0cmFjdGlvbiBtYWNoaW5lcnkuIFRoZXJlJiMzOTtzIG5vIG5ldyBDIGNvZGUgZXhwb3NlZCwgbm8gY29tcGxleCBsb2dpYyBpbnRyb2R1Y2VkLiBJdCYjMzk7cyBhbGwgYWJvdXQgcmVzaGFwaW5nIHR5cGVzLgoKSSYjMzk7bSBjaGVja2luZyBpZiB0aGVyZSYjMzk7cyBhbnkgYWx0ZXJhdGlvbiB0byBiZWhhdmlvciBpbiBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYC4gSXQmIzM5O3MganVzdCByZXBsYWNpbmcgYSBmaWVsZCB0eXBlIChgUGFnZWAgd2l0aCBgT3duZWQmbHQ7UGFnZSZndDtgKS4gU2luY2UgYm90aCBhcmUgZXNzZW50aWFsbHkgcG9pbnRlcnMgdW5kZXIgdGhlIGhvb2QsIHRoZSBtZW1vcnkgbGF5b3V0IGlzIGlkZW50aWNhbCwgYW5kIHNvIGlzIHRoZSBkcm9wIGJlaGF2aW9yLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgdGhlcmUmIzM5O3Mgbm8gcmVhc29uIHRvIGZ1enogdGhpcy4gVGhpcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgKHR5cGVzLCB0cmFpdHMpIGFuZCBhZGFwdGF0aW9uIG9mIGV4aXN0aW5nIGNvZGUgdG8gdXNlIHRoZW0uIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IHN5c2NhbGxzLCBuZXcgZHJpdmVycywgb3IgY2hhbmdlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy4KCkkmIzM5O20gZG91YmxlLWNoZWNraW5nIGBydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzYCwgYW5kIGl0JiMzOTtzIGp1c3QgYSBoZWxwZXIgbWV0aG9kLCBub3RoaW5nIHRoYXQgZXhwYW5kcyB0aGUgYXR0YWNrIHN1cmZhY2UuCgoqKldvcnRoRnV6emluZz1mYWxzZSoqIGJlY2F1c2UgdGhpcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgKGludHJvZHVjaW5nIGBPd25lZGAgYW5kIGBPd25hYmxlYCwgc3BsaXR0aW5nIGBBbHdheXNSZWZDb3VudGVkYCkgYW5kIGFkYXB0aW5nIGV4aXN0aW5nIGNvZGUgdG8gdXNlIHRoZW0sIHdpdGhvdXQgY2hhbmdpbmcgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjowNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgYWRhcHRzIGV4aXN0aW5nIFJ1c3QgY29kZSAobGlrZSBgUGFnZWAgYW5kIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIpIHRvIHVzZSB0aGVzZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IGRyaXZlcnMsIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgaW4gdGhlIGtlcm5lbC4gSXQgaW50cm9kdWNlcyBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHlwZXMsIHNwbGl0cyBgQWx3YXlzUmVmQ291bnRlZGAgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYCwgYW5kIGFkYXB0cyBleGlzdGluZyBSdXN0IGNvZGUgKGxpa2UgYFBhZ2VgIGFuZCB0aGUgQW5kcm9pZCBCaW5kZXIgZHJpdmVyKSB0byB1c2UgdGhlc2UgbmV3IHR5cGVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMsIG5ldyBkcml2ZXJzLCBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCByZXF1aXJlcyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjA2OjAzLjczMTg1MDk0OFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMjcyMjI4MTQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgaW4gdGhlIGtlcm5lbC4gSXQgaW50cm9kdWNlcyBgT3duZWRgIGFuZCBgT3duYWJsZWAgdHlwZXMsIHNwbGl0cyBgQWx3YXlzUmVmQ291bnRlZGAgaW50byBgUmVmQ291bnRlZGAgYW5kIGBBbHdheXNSZWZDb3VudGVkYCwgYW5kIGFkYXB0cyBleGlzdGluZyBSdXN0IGNvZGUgKGxpa2UgYFBhZ2VgIGFuZCB0aGUgQW5kcm9pZCBCaW5kZXIgZHJpdmVyKSB0byB1c2UgdGhlc2UgbmV3IHR5cGVzLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMsIG5ldyBkcml2ZXJzLCBvciBhbHRlciB0aGUgZXhlY3V0aW9uIGZsb3cgaW4gYSB3YXkgdGhhdCByZXF1aXJlcyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6MDY6MDMuNzMxODYyNTU5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4ODI0MDUzNjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA2NjQzMGE3MTAyZWY3NGU5ZDRiMmVkNDI0N2Q4ZmYxNWY1ZWFmNmU2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjA2OjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xcbmluZGV4IGU1NGE5MGU2MjQwMmE0Li43OTQxZWI4NWI0ZWY0MyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcXG4rKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcXG5AQCAtMzMsNyArMzMsNyBAQFxcbiAgICAgc3luYzo6e2FyZWY6OkFSZWYsIE11dGV4LCBTcGluTG9ja30sXFxuICAgICB0YXNrOjpQaWQsXFxuICAgICB0cmFuc211dGU6OkZyb21CeXRlcyxcXG4tICAgIHR5cGVzOjpPcGFxdWUsXFxuKyAgICB0eXBlczo6e09wYXF1ZSwgT3duZWR9LFxcbiAgICAgdWFjY2Vzczo6VXNlclNsaWNlUmVhZGVyLFxcbiB9O1xcbiBcXG5AQCAtMTk4LDcgKzE5OCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIElubmVyIHt9XFxuICNbcmVwcihDKV1cXG4gc3RydWN0IFBhZ2VJbmZvIHtcXG4gICAgIGxydTogYmluZGluZ3M6Omxpc3RfaGVhZCxcXG4tICAgIHBhZ2U6IE9wdGlvblxcdTAwM2NQYWdlXFx1MDAzZSxcXG4rICAgIHBhZ2U6IE9wdGlvblxcdTAwM2NPd25lZFxcdTAwM2NQYWdlXFx1MDAzZVxcdTAwM2UsXFxuICAgICByYW5nZTogKmNvbnN0IFNocmlua2FibGVQYWdlUmFuZ2UsXFxuIH1cXG4gXFxuQEAgLTIwNiw3ICsyMDYsNyBAQCBpbXBsIFBhZ2VJbmZvIHtcXG4gICAgIC8vLyAjIFNhZmV0eVxcbiAgICAgLy8vXFxuICAgICAvLy8gVGhlIGNhbGxlciBlbnN1cmVzIHRoYXQgd3JpdGluZyB0byBgbWUucGFnZWAgaXMgb2ssIGFuZCB0aGF0IHRoZSBwYWdlIGlzIG5vdCBjdXJyZW50bHkgc2V0Llxcbi0gICAgdW5zYWZlIGZuIHNldF9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvLCBwYWdlOiBQYWdlKSB7XFxuKyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkXFx1MDAzY1BhZ2VcXHUwMDNlKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xcbiBcXG5AQCAtMjI5LDEzICsyMjksMTMgQEAgdW5zYWZlIGZuIGdldF9wYWdlXFx1MDAzYydhXFx1MDAzZShtZTogKmNvbnN0IFBhZ2VJbmZvKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjXFx1MDAyNidhIFBhZ2VcXHUwMDNlIHtcXG4gICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgXFx1MDAyNnJhdyBjb25zdCAoKm1lKS5wYWdlIH07XFxuIFxcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgZm9yIHJlYWRpbmcuXFxuLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH1cXG4rICAgICAgICB1bnNhZmUgeyAoKnB0cikuYXNfZGVyZWYoKSB9XFxuICAgICB9XFxuIFxcbiAgICAgLy8vICMgU2FmZXR5XFxuICAgICAvLy9cXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICdhLlxcbi0gICAgdW5zYWZlIGZuIHRha2VfcGFnZShtZTogKm11dCBQYWdlSW5mbykgLVxcdTAwM2UgT3B0aW9uXFx1MDAzY1BhZ2VcXHUwMDNlIHtcXG4rICAgIHVuc2FmZSBmbiB0YWtlX3BhZ2UobWU6ICptdXQgUGFnZUluZm8pIC1cXHUwMDNlIE9wdGlvblxcdTAwM2NPd25lZFxcdTAwM2NQYWdlXFx1MDAzZVxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhpcyBwb2ludGVyIG9mZnNldCBpcyBpbiBib3VuZHMuXFxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFxcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcXG4gXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xcbmluZGV4IGNkNDIwM2YyN2FlZDA2Li5jN2I5YjA2OWNmNzVkZCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcXG5AQCAtMTY5LDcgKzE2OSw3IEBAIHVuc2FmZSBmbiByZWFsbG9jKFxcbiB9XFxuIFxcbiBpbXBsIFZtYWxsb2Mge1xcbi0gICAgLy8vIENvbnZlcnQgYSBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbiB0byBhIFtgcGFnZTo6Qm9ycm93ZWRQYWdlYF0uXFxuKyAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BQYWdlYF0ocGFnZTo6UGFnZSkgcmVmZXJlbmNlLlxcbiAgICAgLy8vXFxuICAgICAvLy8gIyBFeGFtcGxlc1xcbiAgICAgLy8vXFxuQEAgLTIwMiwyMCArMjAyLDE3IEBAIGltcGwgVm1hbGxvYyB7XFxuICAgICAvLy9cXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgcmVtYWluIHZhbGlkIGZvciB0aGUgZW50aXJlIGR1cmF0aW9uIG9mIGAnYWAuXFxuLSAgICBwdWIgdW5zYWZlIGZuIHRvX3BhZ2VcXHUwMDNjJ2FcXHUwMDNlKHB0cjogTm9uTnVsbFxcdTAwM2N1OFxcdTAwM2UpIC1cXHUwMDNlIHBhZ2U6OkJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2Uge1xcbisgICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXFx1MDAzYydhXFx1MDAzZShwdHI6IE5vbk51bGxcXHUwMDNjdThcXHUwMDNlKSAtXFx1MDAzZSBcXHUwMDI2J2EgcGFnZTo6UGFnZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeS5cXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTtcXG4gXFxuLSAgICAgICAgLy8gU0FGRVRZOiBgdm1hbGxvY190b19wYWdlYCByZXR1cm5zIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWQgcG9pbnRlclxcbi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuXFxuLSAgICAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07XFxuLVxcbiAgICAgICAgIC8vIFNBRkVUWTpcXG4tICAgICAgICAvLyAtIGBwYWdlYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mXFxuLSAgICAgICAgLy8gICB0aGlzIGZ1bmN0aW9uIGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBWbWFsbG9jYCBhbGxvY2F0aW9uLlxcbi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZlxcbi0gICAgICAgIC8vICAgYCdhYC5cXG4tICAgICAgICB1bnNhZmUgeyBwYWdlOjpCb3Jyb3dlZFBhZ2U6OmZyb21fcmF3KHBhZ2UpIH1cXG4rICAgICAgICAvLyAtIGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCwgbm9uLW51bGwgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWRcXG4rICAgICAgICAvLyAgIHBvaW50ZXIgdG8gYFZtYWxsb2NgIG1lbW9yeSwgZ2l2ZW4gdGhhdCBieSB0aGUgc2FmZXR5IHJlcXVpcmVtZW50cyBvZiB0aGlzIGZ1bmN0aW9uXFxuKyAgICAgICAgLy8gICBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cXG4rICAgICAgICAvLyAtIEJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb24gYHB0cmAsIGFuZCBoZW5jZSB0aGUgYHN0cnVjdCBwYWdlYCwgaXNcXG4rICAgICAgICAvLyAgIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGAnYWAuXFxuKyAgICAgICAgdW5zYWZlIHsgXFx1MDAyNipwYWdlLmNhc3QoKSB9XFxuICAgICB9XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzIGIvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcXG5pbmRleCAwMmZkYTNlYTVjYWU2Ni4uOGRjYzE2ZWQ4OTg5MzEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5yc1xcbkBAIC05LDcgKzksNyBAQFxcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xcbiB9O1xcbiBcXG4tLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cXG4rLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYFBhZ2VgXShwYWdlOjpQYWdlKSByZWZlcmVuY2VzIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cXG4gLy8vXFxuIC8vLyAjIEd1YXJhbnRlZXNcXG4gLy8vXFxuQEAgLTI4LDExICsyOCwxMSBAQCBwdWIgc3RydWN0IFZtYWxsb2NQYWdlSXRlclxcdTAwM2MnYVxcdTAwM2Uge1xcbiAgICAgc2l6ZTogdXNpemUsXFxuICAgICAvLy8gVGhlIGN1cnJlbnQgcGFnZSBpbmRleCBvZiB0aGUgW2BJdGVyYXRvcmBdLlxcbiAgICAgaW5kZXg6IHVzaXplLFxcbi0gICAgX3A6IFBoYW50b21EYXRhXFx1MDAzY3BhZ2U6OkJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlLFxcbisgICAgX3A6IFBoYW50b21EYXRhXFx1MDAzY1xcdTAwMjYnYSBwYWdlOjpQYWdlXFx1MDAzZSxcXG4gfVxcbiBcXG4gaW1wbFxcdTAwM2MnYVxcdTAwM2UgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlclxcdTAwM2MnYVxcdTAwM2Uge1xcbi0gICAgdHlwZSBJdGVtID0gcGFnZTo6Qm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZTtcXG4rICAgIHR5cGUgSXRlbSA9IFxcdTAwMjYnYSBwYWdlOjpQYWdlO1xcbiBcXG4gICAgIGZuIG5leHQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBPcHRpb25cXHUwMDNjU2VsZjo6SXRlbVxcdTAwM2Uge1xcbiAgICAgICAgIGxldCBvZmZzZXQgPSBzZWxmLmluZGV4LmNoZWNrZWRfbXVsKHBhZ2U6OlBBR0VfU0laRSk/O1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xcbmluZGV4IDM1ZDFlMDE1ODQ4ZGRhLi5kNTM0ZThhZGNmN2IzMyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xcbkBAIC0yMTEsNiArMjExLDE1IEBAIHB1YiBmbiBsZWFrXFx1MDAzYydhXFx1MDAzZShiOiBTZWxmKSAtXFx1MDAzZSBcXHUwMDI2J2EgbXV0IFQge1xcbiAgICAgICAgIC8vIHdoaWNoIHBvaW50cyB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiBgVGAuXFxuICAgICAgICAgdW5zYWZlIHsgXFx1MDAyNm11dCAqQm94OjppbnRvX3JhdyhiKSB9XFxuICAgICB9XFxuK1xcbisgICAgLy8vIENvbnN1bWVzIHRoZSBgQm94XFx1MDAzY1QsQVxcdTAwM2VgIGFuZCByZXR1cm5zIGEgYE5vbk51bGxcXHUwMDNjVFxcdTAwM2VgLlxcbisgICAgLy8vXFxuKyAgICAvLy8gTGlrZSBbYFNlbGY6OmludG9fcmF3YF0sIGJ1dCByZXR1cm5zIGEgYE5vbk51bGxgLlxcbisgICAgI1tpbmxpbmVdXFxuKyAgICBwdWIgZm4gaW50b19ub25fbnVsbChiOiBTZWxmKSAtXFx1MDAzZSBOb25OdWxsXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IGBLQm94OjppbnRvX3Jhd2AgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIuXFxuKyAgICAgICAgdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChTZWxmOjppbnRvX3JhdyhiKSkgfVxcbisgICAgfVxcbiB9XFxuIFxcbiBpbXBsXFx1MDAzY1QsIEFcXHUwMDNlIEJveFxcdTAwM2NNYXliZVVuaW5pdFxcdTAwM2NUXFx1MDAzZSwgQVxcdTAwM2VcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzIGIvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXFxuaW5kZXggYzQyOTI4ZDVhMjM5M2YuLjg1NDUyNTI4OWM4YjQzIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xcbkBAIC0xOSw2ICsxOSwxMCBAQFxcbiAgICAgICAgIHRvX3Jlc3VsdCwgLy9cXG4gICAgIH0sXFxuICAgICBwcmVsdWRlOjoqLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6e1xcbiAgICAgICAgIEZvckx0LFxcbiAgICAgICAgIEZvcmVpZ25Pd25hYmxlLFxcbkBAIC0zNDQsNyArMzQ4LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xcbkBAIC0zNjMsNiArMzY3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkRldmljZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZVxcdTAwM2UgZm9yIERldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXFxuaW5kZXggY2UzZTMwYzgxY2I1ZWQuLjhkYWQxNWFlNGNmYjBhIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL3JlcXVlc3QucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzXFxuQEAgLTksNyArOSwxMSBAQFxcbiAgICAgYmxvY2s6Om1xOjpPcGVyYXRpb25zLFxcbiAgICAgZXJyb3I6OlJlc3VsdCxcXG4gICAgIHN5bmM6OntcXG4tICAgICAgICBhcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuKyAgICAgICAgYXJlZjo6e1xcbisgICAgICAgICAgICBBUmVmLFxcbisgICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgICAgIH0sXFxuICAgICAgICAgYXRvbWljOjpSZWxheGVkLFxcbiAgICAgICAgIFJlZmNvdW50LFxcbiAgICAgfSxcXG5AQCAtMjI5LDExICsyMzMsMTAgQEAgdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgU2VuZCBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7fVxcbiAvLyBtdXRhdGUgYHNlbGZgIGFyZSBpbnRlcm5hbGx5IHN5bmNocm9uaXplZGBcXG4gdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgU3luYyBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7fVxcbiBcXG4tLy8gU0FGRVRZOiBBbGwgaW5zdGFuY2VzIG9mIGBSZXF1ZXN0XFx1MDAzY1RcXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXNcXG4tLy8gaW1wbGVtZW50YXRpb24gb2YgYEFsd2F5c1JlZkNvdW50ZWRgIGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZiBjb3VudFxcbi0vLyBrZWVwcyB0aGUgb2JqZWN0IGFsaXZlIGluIG1lbW9yeSBhdCBsZWFzdCB1bnRpbCBhIG1hdGNoaW5nIHJlZmVyZW5jZSBjb3VudFxcbi0vLyBkZWNyZW1lbnQgaXMgZXhlY3V0ZWQuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IE9wZXJhdGlvbnNcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3RcXHUwMDNjVFxcdTAwM2Uge1xcbisvLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcXHUwMDNjVFxcdTAwM2VgIGFyZSByZWZlcmVuY2UgY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBgUmVmQ291bnRlZGBcXG4rLy8gZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50IGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGFcXG4rLy8gbWF0Y2hpbmcgcmVmZXJlbmNlIGNvdW50IGRlY3JlbWVudCBpcyBleGVjdXRlZC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgUmVmQ291bnRlZCBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgc2VsZi53cmFwcGVyX3JlZigpLnJlZmNvdW50KCkuaW5jKCk7XFxuICAgICB9XFxuQEAgLTI1NSwzICsyNTgsNyBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgICAgIH1cXG4gICAgIH1cXG4gfVxcbitcXG4rLy8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjUmVxdWVzdFxcdTAwM2VgXFxuKy8vIGZyb20gYSBgXFx1MDAyNlJlcXVlc3RgIChidXQgdGhpcyB3aWxsIGNoYW5nZSBpbiB0aGUgZnV0dXJlKS5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgUmVxdWVzdFxcdTAwM2NUXFx1MDAzZSB7fVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9jcmVkLnJzIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xcbmluZGV4IGZmYTE1NmI5ZGYzNzdlLi5iMTc3MzZhOWFkY2Q1OCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvY3JlZC5yc1xcbkBAIC04LDcgKzgsMTUgQEBcXG4gLy8hXFxuIC8vISBSZWZlcmVuY2U6IFxcdTAwM2NodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9odG1sL2xhdGVzdC9zZWN1cml0eS9jcmVkZW50aWFscy5odG1sXFx1MDAzZVxcbiBcXG4tdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHRhc2s6Okt1aWQsIHR5cGVzOjpPcGFxdWV9O1xcbit1c2UgY3JhdGU6OntcXG4rICAgIGJpbmRpbmdzLFxcbisgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCxcXG4rICAgIHRhc2s6Okt1aWQsXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgT3BhcXVlLCAvL1xcbisgICAgfSwgLy9cXG4rfTtcXG4gXFxuIC8vLyBXcmFwcyB0aGUga2VybmVsJ3MgYHN0cnVjdCBjcmVkYC5cXG4gLy8vXFxuQEAgLTc2LDcgKzg0LDcgQEAgcHViIGZuIGV1aWQoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIEt1aWQge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYENyZWRlbnRpYWxgIGlzIGFsd2F5cyByZWYtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIENyZWRlbnRpYWwge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC05MCwzICs5OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXFx1MDAzY0NyZWRlbnRpYWxcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9jcmVkKG9iai5jYXN0KCkuYXNfcHRyKCkpIH07XFxuICAgICB9XFxuIH1cXG4rXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjQ3JlZGVudGlhbFxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkNyZWRlbnRpYWxgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHt9XFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xcbmluZGV4IDY0NWFmYzQ5YTI3ZDY0Li4yZTkwZjZhMDZmZDA1OSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9kZXZpY2UucnNcXG5AQCAtOCw4ICs4LDEyIEBAXFxuICAgICBiaW5kaW5ncyxcXG4gICAgIGZtdCxcXG4gICAgIHByZWx1ZGU6OiosXFxuLSAgICBzeW5jOjphcmVmOjpBUmVmLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFSZWYsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuICAgICAgICAgRm9yZWlnbk93bmFibGUsXFxuICAgICAgICAgT3BhcXVlLCAvL1xcbiAgICAgfSwgLy9cXG5AQCAtNDQ4LDcgKzQ1Miw3IEBAIHB1YiBmbiBuYW1lKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2Q1N0ciB7XFxuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yYXcoKSkgfTtcXG5AQCAtNDYwLDYgKzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkRldmljZWAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxcbitcXG4gLy8gU0FGRVRZOiBBcyBieSB0aGUgdHlwZSBpbnZhcmlhbnQgYERldmljZWAgY2FuIGJlIHNlbnQgdG8gYW55IHRocmVhZC5cXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgRGV2aWNlIHt9XFxuIFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcXG5pbmRleCA1YWVhZDgzNWZiYmMwMi4uY2VlN2UyNTAxMzY4OTkgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXFxuQEAgLTE0LDcgKzE0LDEwIEBAXFxuICAgICBmbXQsXFxuICAgICBwcmVsdWRlOjoqLFxcbiAgICAgc3RyOjp7Q1N0ciwgQ1N0cmluZ30sXFxuLSAgICBzeW5jOjphcmVmOjpBUmVmLFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFSZWYsXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiB9O1xcbiBcXG5AQCAtMzYwLDcgKzM2Myw3IEBAIGZuIGZtdChcXHUwMDI2c2VsZiwgZjogXFx1MDAyNm11dCBmbXQ6OkZvcm1hdHRlclxcdTAwM2MnX1xcdTAwM2UpIC1cXHUwMDNlIGZtdDo6UmVzdWx0IHtcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEZ3Tm9kZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIEZ3Tm9kZSB7XFxuK3Vuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpSZWZDb3VudGVkIGZvciBGd05vZGUge1xcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZVxcbiAgICAgICAgIC8vIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxcbkBAIC0zNzQsNiArMzc3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRndOb2RlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RndOb2RlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHt9XFxuK1xcbiBlbnVtIE5vZGVcXHUwMDNjJ2FcXHUwMDNlIHtcXG4gICAgIEJvcnJvd2VkKFxcdTAwMjYnYSBGd05vZGUpLFxcbiAgICAgT3duZWQoQVJlZlxcdTAwM2NGd05vZGVcXHUwMDNlKSxcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5ycyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcXG5pbmRleCA0MDNmYzM1MzUzYzc0MC4uMzY4NzQyYTI1ODM3NjggMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2RybS9kZXZpY2UucnNcXG5AQCAtMTUsNyArMTUsOCBAQFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN5bmM6OmFyZWY6OntcXG4gICAgICAgICBBUmVmLFxcbi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbiAgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuICAgICB3b3JrcXVldWU6OntcXG5AQCAtMjI3LDcgKzIyOCw3IEBAIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG4gXFxuIC8vIFNBRkVUWTogRFJNIGRldmljZSBvYmplY3RzIGFyZSBhbHdheXMgcmVmZXJlbmNlIGNvdW50ZWQgYW5kIHRoZSBnZXQvcHV0IGZ1bmN0aW9uc1xcbiAvLyBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IGRybTo6RHJpdmVyXFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2VcXHUwMDNjVFxcdTAwM2Uge1xcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBkcm06OkRyaXZlclxcdTAwM2UgUmVmQ291bnRlZCBmb3IgRGV2aWNlXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTI0Miw2ICsyNDMsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogZHJtOjpEcml2ZXJcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZVxcdTAwM2NUXFx1MDAzZSB7fVxcbitcXG4gaW1wbFxcdTAwM2NUOiBkcm06OkRyaXZlclxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2Uge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYGJpbmRpbmdzOjpkcm1fZGV2aWNlOjpkZXZgIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIERSTSBkZXZpY2UgaXRzZWxmIGlzIHZhbGlkLFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5ycyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXFxuaW5kZXggMDFiNWJkNDdhMzMzMmQuLjMwZDM3MTg1NzhmZThjIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcXG5AQCAtMTcsNyArMTcsNyBAQFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN5bmM6OmFyZWY6OntcXG4gICAgICAgICBBUmVmLFxcbi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4gICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLFxcbiB9O1xcbkBAIC0yOSw3ICsyOSw3IEBAXFxuICNbY2ZnKENPTkZJR19SVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSKV1cXG4gcHViIG1vZCBzaG1lbTtcXG4gXFxuLS8vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgW2BBbHdheXNSZWZDb3VudGVkYF0gZm9yIGFueSBHRU0gb2JqZWN0IHR5cGUuXFxuKy8vLyBBIG1hY3JvIGZvciBpbXBsZW1lbnRpbmcgW2BSZWZDb3VudGVkYF0gZm9yIGFueSBHRU0gb2JqZWN0IHR5cGUuXFxuIC8vL1xcbiAvLy8gU2luY2UgYWxsIEdFTSBvYmplY3RzIHVzZSB0aGUgc2FtZSByZWZjb3VudGluZyBzY2hlbWUuXFxuICNbbWFjcm9fZXhwb3J0XVxcbkBAIC00Miw3ICs0Miw3IEBAIGltcGwgJCggXFx1MDAzYyQoICR0cGFyYW1faWQ6aWRlbnQgKSwrXFx1MDAzZSApPyBmb3IgJHR5cGU6dHlcXG4gICAgICAgICApP1xcbiAgICAgKSA9XFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBBbGwgR0VNIG9iamVjdHMgYXJlIHJlZmNvdW50ZWQuXFxuLSAgICAgICAgdW5zYWZlIGltcGwgJCggXFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXFx1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXFxuKyAgICAgICAgdW5zYWZlIGltcGwgJCggXFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXFx1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yICR0eXBlXFxuICAgICAgICAgd2hlcmVcXG4gICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcXG4gICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCsgKT9cXG5AQCAtNjEsNiArNjEsMTQgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgICAgICAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdF9wdXQob2JqKSB9O1xcbiAgICAgICAgICAgICB9XFxuICAgICAgICAgfVxcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzYyR0eXBlXFx1MDAzZWAgZnJvbSBhXFxuKyAgICAgICAgLy8gYFxcdTAwMjYkdHlwZWAuXFxuKyAgICAgICAgdW5zYWZlIGltcGwgJCggXFx1MDAzYyQoICR0cGFyYW1faWQgKSwrXFx1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXFxuKyAgICAgICAgd2hlcmVcXG4rICAgICAgICAgICAgU2VsZjogSW50b0dFTU9iamVjdCxcXG4rICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCsgKT9cXG4rICAgICAgICB7fVxcbiAgICAgfTtcXG4gfVxcbiAjW2NmZ19hdHRyKG5vdChDT05GSUdfUlVTVF9EUk1fR0VNX1NITUVNX0hFTFBFUiksIGFsbG93KHVudXNlZCkpXVxcbkBAIC05OCw3ICsxMDYsNyBAQCBmbiBjbG9zZShfb2JqOiBcXHUwMDI2XFx1MDAzY1NlbGY6OkRyaXZlciBhcyBkcm06OkRyaXZlclxcdTAwM2U6Ok9iamVjdCwgX2ZpbGU6IFxcdTAwMjZEcml2ZXJGaWxlXFx1MDAzY1NlbGZcXHUwMDNlKVxcbiB9XFxuIFxcbiAvLy8gVHJhaXQgdGhhdCByZXByZXNlbnRzIGEgR0VNIG9iamVjdCBzdWJ0eXBlXFxuLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCArIHN1cGVyOjpwcml2YXRlOjpTZWFsZWQgKyBBbHdheXNSZWZDb3VudGVkIHtcXG4rcHViIHRyYWl0IEludG9HRU1PYmplY3Q6IFNpemVkICsgc3VwZXI6OnByaXZhdGU6OlNlYWxlZCArIFJlZkNvdW50ZWQge1xcbiAgICAgLy8vIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIHJhdyBgZHJtX2dlbV9vYmplY3RgIHN0cnVjdHVyZSwgd2hpY2ggbXVzdCBiZSB2YWxpZCBhcyBsb25nIGFzXFxuICAgICAvLy8gdGhpcyBvd25pbmcgb2JqZWN0IGlzIHZhbGlkLlxcbiAgICAgZm4gYXNfcmF3KFxcdTAwMjZzZWxmKSAtXFx1MDAzZSAqbXV0IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdDtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5ycyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnNcXG5pbmRleCAyM2VlNjg5YmQyNDAwNS4uNzIwZTU3NDE4MzU4ZGMgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2ZzL2ZpbGUucnNcXG5AQCAtMTIsOCArMTIsMTUgQEBcXG4gICAgIGNyZWQ6OkNyZWRlbnRpYWwsXFxuICAgICBlcnJvcjo6e2NvZGU6OiosIHRvX3Jlc3VsdCwgRXJyb3IsIFJlc3VsdH0sXFxuICAgICBmbXQsXFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxcbisgICAgICAgIE9wYXF1ZSwgLy9cXG4rICAgIH0sIC8vXFxuIH07XFxuIHVzZSBjb3JlOjpwdHI7XFxuIFxcbkBAIC0xOTcsNyArMjA0LDcgQEAgdW5zYWZlIGltcGwgU3luYyBmb3IgRmlsZSB7fVxcbiBcXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBGaWxlYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb25cXG4gLy8gbWFrZXMgYEFSZWZcXHUwMDNjRmlsZVxcdTAwM2VgIG93biBhIG5vcm1hbCByZWZjb3VudC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRmlsZSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC0yMTIsNiArMjE5LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXFx1MDAzY0ZpbGVcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRmlsZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkZpbGVgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBGaWxlIHt9XFxuK1xcbiAvLy8gV3JhcHMgdGhlIGtlcm5lbCdzIGBzdHJ1Y3QgZmlsZWAuIE5vdCB0aHJlYWQgc2FmZS5cXG4gLy8vXFxuIC8vLyBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIGZpbGUgdGhhdCBpcyBub3Qga25vd24gdG8gYmUgc2FmZSB0byB0cmFuc2ZlciBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXFxuQEAgLTIzMyw3ICsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7XFxuIFxcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYExvY2FsRmlsZWAgaXMgYWx3YXlzIHJlZi1jb3VudGVkLiBUaGlzIGltcGxlbWVudGF0aW9uXFxuIC8vIG1ha2VzIGBBUmVmXFx1MDAzY0xvY2FsRmlsZVxcdTAwM2VgIG93biBhIG5vcm1hbCByZWZjb3VudC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cXG5AQCAtMjQ5LDYgKzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NMb2NhbEZpbGVcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjTG9jYWxGaWxlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2TG9jYWxGaWxlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHt9XFxuK1xcbiBpbXBsIExvY2FsRmlsZSB7XFxuICAgICAvLy8gQ29uc3RydWN0cyBhIG5ldyBgc3RydWN0IGZpbGVgIHdyYXBwZXIgZnJvbSBhIGZpbGUgZGVzY3JpcHRvci5cXG4gICAgIC8vL1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9pMmMucnMgYi9ydXN0L2tlcm5lbC9pMmMucnNcXG5pbmRleCA2MjRiOTcxY2E4YjBiMi4uMDJiMmM5MjIwZWIxMWMgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvaTJjLnJzXFxuQEAgLTE4LDcgKzE4LDggQEBcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzeW5jOjphcmVmOjp7XFxuICAgICAgICAgQVJlZixcXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4gICAgIH0sXFxuICAgICB0eXBlczo6T3BhcXVlLCAvL1xcbiB9O1xcbkBAIC00MjQsNyArNDI1LDcgQEAgcHViIGZuIGdldChpbmRleDogaTMyKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjQVJlZlxcdTAwM2NTZWxmXFx1MDAzZVxcdTAwM2Uge1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTtcXG4gXFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJMmNBZGFwdGVyYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7XFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxcbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjppMmNfZ2V0X2FkYXB0ZXIoc2VsZi5pbmRleCgpKSB9O1xcbkBAIC00MzUsNiArNDM2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH1cXG4gICAgIH1cXG4gfVxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY0RldmljZVxcdTAwM2VgIGZyb20gYW5cXG4rLy8gYFxcdTAwMjZJMmNBZGFwdGVyYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSTJjQWRhcHRlciB7fVxcbiBcXG4gLy8vIFRoZSBpMmMgYm9hcmQgaW5mbyByZXByZXNlbnRhdGlvblxcbiAvLy9cXG5AQCAtNTAwLDcgKzUwNCw3IEBAIHVuc2FmZSBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2UgZm9yIEkyY0NsaWVudFxcdTAwM2NDXFxuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKEkyY0NsaWVudCk7XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQ2xpZW50YCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNDbGllbnQge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJMmNDbGllbnQge1xcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xcbkBAIC01MTEsNiArNTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9kZXZpY2UoXFx1MDAyNnJhdyBtdXQgKCpvYmouYXNfcmVmKCkuYXNfcmF3KCkpLmRldikgfVxcbiAgICAgfVxcbiB9XFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhblxcbisvLyBgXFx1MDAyNkkyY0NsaWVudGAuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fVxcbiBcXG4gaW1wbFxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFxcdTAwM2UgQXNSZWZcXHUwMDNjZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZVxcdTAwM2UgZm9yIEkyY0NsaWVudFxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgIGZuIGFzX3JlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNmRldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9saWIucnMgYi9ydXN0L2tlcm5lbC9saWIucnNcXG5pbmRleCA5NTEyYWY3MTU2ZGYyYS4uZWI1MjU2MjA0YTE3NDIgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvbGliLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvbGliLnJzXFxuQEAgLTEwMSw2ICsxMDEsNyBAQFxcbiBwdWIgbW9kIG9mO1xcbiAjW2NmZyhDT05GSUdfUE1fT1BQKV1cXG4gcHViIG1vZCBvcHA7XFxuK3B1YiBtb2Qgb3duZWQ7XFxuIHB1YiBtb2QgcGFnZTtcXG4gI1tjZmcoQ09ORklHX1BDSSldXFxuIHB1YiBtb2QgcGNpO1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9tbS5ycyBiL3J1c3Qva2VybmVsL21tLnJzXFxuaW5kZXggNDc2NGQ3YjY4ZjJhN2YuLjgzZWQ5NGZjYTE0Y2EyIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL21tLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvbW0ucnNcXG5AQCAtMTMsOCArMTMsMTUgQEBcXG4gXFxuIHVzZSBjcmF0ZTo6e1xcbiAgICAgYmluZGluZ3MsXFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXFxuLSAgICB0eXBlczo6e05vdFRocmVhZFNhZmUsIE9wYXF1ZX0sXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxcbisgICAgICAgIE9wYXF1ZSwgLy9cXG4rICAgIH0sIC8vXFxuIH07XFxuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcXG4gXFxuQEAgLTU1LDcgKzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge31cXG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW0ge31cXG4gXFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbSB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cXG5AQCAtNjksNiArNzYsOSBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NNbVxcdTAwM2VgIGZyb20gYSBgXFx1MDAyNk1tYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW0ge31cXG4rXFxuIC8vLyBBIHdyYXBwZXIgZm9yIHRoZSBrZXJuZWwncyBgc3RydWN0IG1tX3N0cnVjdGAuXFxuIC8vL1xcbiAvLy8gVGhpcyB0eXBlIGlzIGxpa2UgW2BNbWBdLCBidXQgd2l0aCBub24temVybyBgbW1fdXNlcnNgLiBJdCBjYW4gb25seSBiZSB1c2VkIHdoZW4gYG1tX3VzZXJzYCBjYW5cXG5AQCAtOTEsNyArMTAxLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlciB7fVxcbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbVdpdGhVc2VyIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHRoaXMgdHlwZSBpcyBhbHdheXMgcmVmY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxcbkBAIC0xMDUsNiArMTE1LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY01tV2l0aFVzZXJcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZNbVdpdGhVc2VyYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlciB7fVxcbitcXG4gLy8gTWFrZSBhbGwgYE1tYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlcmAuXFxuIGltcGwgRGVyZWYgZm9yIE1tV2l0aFVzZXIge1xcbiAgICAgdHlwZSBUYXJnZXQgPSBNbTtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnMgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xcbmluZGV4IGI4ZDJmMDUxMjI1YzczLi44ZmJjMzk2ZTQ2MDI4MSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xcbisrKyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzXFxuQEAgLTEwLDcgKzEwLDExIEBAXFxuIHVzZSBjcmF0ZTo6e1xcbiAgICAgYmluZGluZ3MsXFxuICAgICBtbTo6TW1XaXRoVXNlcixcXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBUmVmLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbisgICAgdHlwZXM6OkFsd2F5c1JlZkNvdW50ZWQsXFxuIH07XFxuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcXG4gXFxuQEAgLTM0LDcgKzM4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW1XaXRoVXNlckFzeW5jIHt9XFxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxcbiBcXG4gLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB0aGlzIHR5cGUgaXMgYWx3YXlzIHJlZmNvdW50ZWQuXFxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XFxuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXFxuQEAgLTQ4LDYgKzUyLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY01tV2l0aFVzZXJBc3luY1xcdTAwM2VgXFxuKy8vIGZyb20gYSBgXFx1MDAyNk1tV2l0aFVzZXJBc3luY2AuXFxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxcbitcXG4gLy8gTWFrZSBhbGwgYE1tV2l0aFVzZXJgIG1ldGhvZHMgYXZhaWxhYmxlIG9uIGBNbVdpdGhVc2VyQXN5bmNgLlxcbiBpbXBsIERlcmVmIGZvciBNbVdpdGhVc2VyQXN5bmMge1xcbiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyO1xcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9vcHAucnMgYi9ydXN0L2tlcm5lbC9vcHAucnNcXG5pbmRleCA2MmU0NDY3NjEyNWQxMC4uYjhkYjZiZGVmZDA3NzEgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvb3BwLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvb3BwLnJzXFxuQEAgLTE2LDggKzE2LDE0IEBAXFxuICAgICBmZmk6OntjX2NoYXIsIGNfdWxvbmd9LFxcbiAgICAgcHJlbHVkZTo6KixcXG4gICAgIHN0cjo6Q1N0cmluZyxcXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcXG4tICAgIHR5cGVzOjpPcGFxdWUsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQVJlZixcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBPcGFxdWUsIC8vXFxuKyAgICB9LCAvL1xcbiB9O1xcbiBcXG4gI1tjZmcoQ09ORklHX0NQVV9GUkVRKV1cXG5AQCAtMTA0MSw3ICsxMDQ3LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgT1BQIHt9XFxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE9QUCB7fVxcbiBcXG4gLy8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCBbYE9QUGBdIGlzIGFsd2F5cyByZWZjb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC0xMDU1LDYgKzEwNjEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NPUFBcXHUwMDNlYCBmcm9tIGFuXFxuKy8vIGBcXHUwMDI2T1BQYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHt9XFxuK1xcbiBpbXBsIE9QUCB7XFxuICAgICAvLy8gQ3JlYXRlcyBhbiBvd25lZCByZWZlcmVuY2UgdG8gYSBbYE9QUGBdIGZyb20gYSB2YWxpZCBwb2ludGVyLlxcbiAgICAgLy8vXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL293bmVkLnJzIGIvcnVzdC9rZXJuZWwvb3duZWQucnNcXG5uZXcgZmlsZSBtb2RlIDEwMDY0NFxcbmluZGV4IDAwMDAwMDAwMDAwMDAwLi5hY2I2MTFmMDg0ZmYzNVxcbi0tLSAvZGV2L251bGxcXG4rKysgYi9ydXN0L2tlcm5lbC9vd25lZC5yc1xcbkBAIC0wLDAgKzEsMzczIEBAXFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuK1xcbisvLyEgVW5pcXVlIG93bmVkIHBvaW50ZXIgdHlwZXMgZm9yIG9iamVjdHMgd2l0aCBjdXN0b20gZHJvcCBsb2dpYy5cXG4rLy8hXFxuKy8vISBUaGVzZSBwb2ludGVyIHR5cGVzIGFyZSB1c2VmdWwgZm9yIEMtYWxsb2NhdGVkIG9iamVjdHMgd2hpY2ggYnkgQVBJLWNvbnRyYWN0XFxuKy8vISBhcmUgb3duZWQgYnkgUnVzdCwgYnV0IG5lZWQgdG8gYmUgZnJlZWQgdGhyb3VnaCB0aGUgQyBBUEkuXFxuK1xcbit1c2UgY29yZTo6e1xcbisgICAgbWVtOjpNYW51YWxseURyb3AsXFxuKyAgICBvcHM6OntcXG4rICAgICAgICBEZXJlZixcXG4rICAgICAgICBEZXJlZk11dCwgLy9cXG4rICAgIH0sXFxuKyAgICBwaW46OlBpbixcXG4rICAgIHB0cjo6Tm9uTnVsbCwgLy9cXG4rfTtcXG4rdXNlIGtlcm5lbDo6e1xcbisgICAgc3luYzo6YXJlZjo6QVJlZixcXG4rICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvL1xcbit9O1xcbitcXG4rdXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlO1xcbitcXG4rLy8vIFR5cGVzIHRoYXQgc3BlY2lmeSB0aGVpciBvd24gd2F5IG9mIHBlcmZvcm1pbmcgYWxsb2NhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFR5cGljYWxseSwgdGhpcyB0cmFpdFxcbisvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLlxcbisvLy9cXG4rLy8vIEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSByZWZlcmVuY2VkIHZpYSB0aGUgW2BPd25lZFxcdTAwM2NTZWxmXFx1MDAzZWBdIHBvaW50ZXIgdHlwZS5cXG4rLy8vICAtIFRoaXMgaXMgdXNlZnVsIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIHRpZSB0aGUgbGlmZXRpbWUgb2YgYW4gb2JqZWN0IHJlZmVyZW5jZSB0byBhbiBvd25lZFxcbisvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLlxcbisvLy8gIC0gW2BPd25hYmxlYF0gdHlwZXMgY2FuIGRlZmluZSBjdXN0b20gZHJvcCBsb2dpYyB0aGF0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIG93bmVkIHJlZmVyZW5jZVxcbisvLy8gICAgb2YgdHlwZSBbYE93bmVkXFx1MDAzY19cXHUwMDNlYF0gcG9pbnRpbmcgdG8gdGhlIG9iamVjdCBpcyBkcm9wcGVkLlxcbisvLy9cXG4rLy8vIE5vdGU6IFRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnRpbmcsIGJlY2F1c2UgaXRcXG4rLy8vIHJlcHJlc2VudHMgYSB1bmlxdWUsIG93bmVkIHJlZmVyZW5jZS4gSWYgcmVmZXJlbmNlIGNvdW50aW5nIChvbiB0aGUgUnVzdCBzaWRlKSBpcyByZXF1aXJlZCxcXG4rLy8vIFtgUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZC4gW2BPd25hYmxlUmVmQ291bnRlZGBdIHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpZiBjb252ZXJzaW9uXFxuKy8vLyBiZXR3ZWVuIHVuaXF1ZSBhbmQgc2hhcmVkIChyZWZlcmVuY2UgY291bnRlZCkgb3duZXJzaGlwIGlzIG5lZWRlZC5cXG4rLy8vXFxuKy8vLyAjIEV4YW1wbGVzXFxuKy8vL1xcbisvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlYF0gYW5kIGl0cyB1c2FnZSB3aXRoIFtgT3duZWRgXSBsb29rcyBsaWtlXFxuKy8vLyB0aGlzOlxcbisvLy9cXG4rLy8vIGBgYFxcbisvLy8gIyAjIVtleHBlY3QoY2xpcHB5OjpkaXNhbGxvd2VkX25hbWVzKV1cXG4rLy8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7XFxuKy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XFxuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrO1xcbisvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTtcXG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZX07XFxuKy8vL1xcbisvLy8gLy8gTGV0J3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLlxcbisvLy8ga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jayEge1xcbisvLy8gICAgIC8vIFNBRkVUWTogd2UgY2FsbCBgaW5pdCgpYCByaWdodCBiZWxvdywgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UuXFxuKy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXhcXHUwMDNjdXNpemVcXHUwMDNlID0gMDtcXG4rLy8vIH1cXG4rLy8vIC8vIFNBRkVUWTogV2UgY2FsbCBgaW5pdCgpYCBvbmx5IG9uY2UsIGhlcmUuXFxuKy8vLyB1bnNhZmUgeyBGT09fQUxMT0NfQ09VTlQuaW5pdCgpIH07XFxuKy8vL1xcbisvLy8gc3RydWN0IEZvbztcXG4rLy8vXFxuKy8vLyBpbXBsIEZvbyB7XFxuKy8vLyAgICAgZm4gbmV3KCkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZSB7XFxuKy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXFxuKy8vLyAgICAgICAgIC8vIG5vdCBhY3R1YWxseSBhIEMtYWxsb2NhdGVkIG9iamVjdC5cXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcXG4rLy8vICAgICAgICAgICAgIEZvbyB7fSxcXG4rLy8vICAgICAgICAgICAgIGZsYWdzOjpHRlBfS0VSTkVMLFxcbisvLy8gICAgICAgICApPztcXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6OmludG9fbm9uX251bGwocmVzdWx0KTtcXG4rLy8vICAgICAgICAgLy8gQ291bnQgbmV3IGFsbG9jYXRpb25cXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgKz0gMTtcXG4rLy8vICAgICAgICAgLy8gU0FGRVRZOlxcbisvLy8gICAgICAgICAvLyAgLSBXZSBqdXN0IGFsbG9jYXRlZCB0aGUgYFNlbGZgLCB0aHVzIGl0IGlzIHZhbGlkIGFuZCB3ZSBvd24gaXQuXFxuKy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuXFxuKy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXFxuKy8vLyAgICAgfVxcbisvLy8gfVxcbisvLy9cXG4rLy8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcXG4rLy8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFxcdTAwM2NTZWxmXFx1MDAzZWBdIGlzIHN0aWxsIGFsaXZlLiBXZSBjYW4gcGFzcyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdLCBhc1xcbisvLy8gICAgICAgICAvLyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXFxuKy8vLyAgICAgICAgIGRyb3AodW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfSk7XFxuKy8vLyAgICAgICAgIC8vIENvdW50IHJlbGVhc2VkIGFsbG9jYXRpb25cXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgLT0gMTtcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8ge1xcbisvLy8gICAgbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xcbisvLy8gICAgYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAxKTtcXG4rLy8vIH1cXG4rLy8vIC8vIGBmb29gIGlzIG91dCBvZiBzY29wZSBub3csIHNvIHdlIGV4cGVjdCBubyBsaXZlIGFsbG9jYXRpb25zLlxcbisvLy8gYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAwKTtcXG4rLy8vICMgT2s6OlxcdTAwM2MoKSwgRXJyb3JcXHUwMDNlKCgpKVxcbisvLy8gYGBgXFxuK3B1YiB0cmFpdCBPd25hYmxlIHtcXG4rICAgIC8vLyBUZWFyIGRvd24gdGhpcyBgT3duYWJsZWAuXFxuKyAgICAvLy9cXG4rICAgIC8vLyBJbXBsZW1lbnRlcnMgb2YgYE93bmFibGVgIGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBjbGVhbiB1cCB0aGUgdXNlIG9mIGBTZWxmYC4gVGhpcyBjYW5cXG4rICAgIC8vLyBpbmNsdWRlIGZyZWVpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxcbisgICAgLy8vXFxuKyAgICAvLy8gIyBTYWZldHlcXG4rICAgIC8vL1xcbisgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdCB0aGV5IGhhdmUgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiB0aGUgYFNlbGZgIHBvaW50ZWQgdG8gYnkgYHRoaXNgLFxcbisgICAgLy8vIGFuZCB0aGF0IHRoaXMgb3duZXJzaGlwIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLiBgdGhpc2AgbXVzdCBub3QgYmUgdXNlZFxcbisgICAgLy8vIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFzIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGZyZWVkLlxcbisgICAgLy8vXFxuKyAgICAvLy8gYHRoaXNgIGlzIHBpbm5lZCBhbmQgaW1wbGVtZW50ZXJzIG9mIHRoaXMgbWV0aG9kIG11c3Qgb2JzZXJ2ZSB0aGlzIGNvbnN0cmFpbnQuXFxuKyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKTtcXG4rfVxcbitcXG4rLy8vIEEgbXV0YWJsZSByZWZlcmVuY2UgdG8gYW4gb3duZWQgYFRgLlxcbisvLy9cXG4rLy8vIFRoZSBbYE93bmFibGVgXSBpcyBhdXRvbWF0aWNhbGx5IGZyZWVkIG9yIHJlbGVhc2VkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BPd25lZGBdIGlzXFxuKy8vLyBkcm9wcGVkLlxcbisvLy9cXG4rLy8vICMgSW52YXJpYW50c1xcbisvLy9cXG4rLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWRcXHUwMDNjVFxcdTAwM2VgIGV4Y2x1c2l2ZWx5IG93bnMgdGhlIHVuZGVybHlpbmcgYFRgLlxcbisvLy8gLSBUaGUgYFRgIHZhbHVlIGlzIHBpbm5lZC5cXG4rcHViIHN0cnVjdCBPd25lZFxcdTAwM2NUOiBPd25hYmxlXFx1MDAzZSB7XFxuKyAgICBwdHI6IE5vbk51bGxcXHUwMDNjVFxcdTAwM2UsXFxuK31cXG4rXFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVxcdTAwM2UgT3duZWRcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgLy8vIENyZWF0ZXMgYSBuZXcgaW5zdGFuY2Ugb2YgW2BPd25lZGBdLlxcbisgICAgLy8vXFxuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiB0YWtlcyBvdmVyIG93bmVyc2hpcCBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICAvLy9cXG4rICAgIC8vLyAjIFNhZmV0eVxcbisgICAgLy8vXFxuKyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0OlxcbisgICAgLy8vIC0gYHB0cmAgcG9pbnRzIHRvIGEgdmFsaWQgaW5zdGFuY2Ugb2YgYFRgLlxcbisgICAgLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhlIHJldHVybmVkIGBPd25lZFxcdTAwM2NUXFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXFx1MDAzY1RcXHUwMDNlKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLlxcbisgICAgICAgIC8vIFdlIHRyZWF0IGBUYCBhcyBwaW5uZWQgZnJvbSBub3cgb24uXFxuKyAgICAgICAgU2VsZiB7IHB0ciB9XFxuKyAgICB9XFxuK1xcbisgICAgLy8vIENvbnN1bWVzIHRoZSBbYE93bmVkYF0sIHJldHVybmluZyBhIHJhdyBwb2ludGVyLlxcbisgICAgLy8vXFxuKyAgICAvLy8gVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBkcm9wIHRoZSB1bmRlcmx5aW5nIGBUYC4gV2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIG93bmVyc2hpcCBvZiB0aGVcXG4rICAgIC8vLyB1bmRlcmx5aW5nIGBUYCBpcyB3aXRoIHRoZSBjYWxsZXIuXFxuKyAgICAvLy9cXG4rICAgIC8vLyBOb3RlIHRoYXQgdGhlIHJldHVybmVkIHBvaW50ZXIgaXMgcGlubmVkLlxcbisgICAgI1tpbmxpbmVdXFxuKyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cXHUwMDNlIE5vbk51bGxcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgICAgIE1hbnVhbGx5RHJvcDo6bmV3KG1lKS5wdHJcXG4rICAgIH1cXG4rXFxuKyAgICAvLy8gR2V0IGEgcGlubmVkIG11dGFibGUgcmVmZXJlbmNlIHRvIHRoZSBkYXRhIG93bmVkIGJ5IHRoaXMgYE93bmVkXFx1MDAzY1RcXHUwMDNlYC5cXG4rICAgICNbaW5saW5lXVxcbisgICAgcHViIGZuIGFzX3Bpbl9tdXQoXFx1MDAyNm11dCBzZWxmKSAtXFx1MDAzZSBQaW5cXHUwMDNjXFx1MDAyNm11dCBUXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQsIGFuZCB0aGF0IHdlIGNhbiBzYWZlbHlcXG4rICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cXG4rICAgICAgICBsZXQgdW5waW5uZWQgPSB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuXFxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKHVucGlubmVkKSB9XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIGFuIFtgT3duZWRcXHUwMDNjVFxcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFNlbmRgXSxcXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYE93bmVkXFx1MDAzY1RcXHUwMDNlYF0gaXMgZXF1aXZhbGVudCB0byBzZW5kaW5nIHRoZSBgVGAuXFxuK3Vuc2FmZSBpbXBsXFx1MDAzY1Q6IE93bmFibGUgKyBTZW5kXFx1MDAzZSBTZW5kIGZvciBPd25lZFxcdTAwM2NUXFx1MDAzZSB7fVxcbitcXG4rLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgW2BcXHUwMDI2T3duZWRcXHUwMDNjVFxcdTAwM2VgXSB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBbYFN5bmNgXSxcXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYFxcdTAwMjZPd25lZFxcdTAwM2NUXFx1MDAzZWBdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFxcdTAwMjZUYC5cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogT3duYWJsZSArIFN5bmNcXHUwMDNlIFN5bmMgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHt9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGVcXHUwMDNlIERlcmVmIGZvciBPd25lZFxcdTAwM2NUXFx1MDAzZSB7XFxuKyAgICB0eXBlIFRhcmdldCA9IFQ7XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBkZXJlZihcXHUwMDI2c2VsZikgLVxcdTAwM2UgXFx1MDAyNlNlbGY6OlRhcmdldCB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IHRoZSBvYmplY3QgaXMgdmFsaWQuXFxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGUgKyBVbnBpblxcdTAwM2UgRGVyZWZNdXQgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZGVyZWZfbXV0KFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgXFx1MDAyNm11dCBTZWxmOjpUYXJnZXQge1xcbisgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5XFxuKyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXFxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfbXV0KCkgfVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IE93bmFibGVcXHUwMDNlIERyb3AgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgICNbaW5saW5lXVxcbisgICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGV4aXN0ZW5jZSBvZiBgXFx1MDAyNm11dCBzZWxmYCB3ZSBleGNsdXNpdmVseSBvd24gYHNlbGZgIGFuZCB0aGUgdW5kZXJseWluZyBgVGAuIEFzXFxuKyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLlxcbisgICAgICAgIHVuc2FmZSB7IFQ6OnJlbGVhc2Uoc2VsZi5wdHIpIH07XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vIFNBRkVUWTogV2UgZGVyaXZlIHRoZSBwb2ludGVyIHRvIGBUYCBmcm9tIGEgdmFsaWQgYFRgLCBzbyB0aGUgcmV0dXJuZWRcXG4rLy8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBPd25hYmxlXFx1MDAzZSBGb3JlaWduT3duYWJsZSBmb3IgT3duZWRcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgY29uc3QgRk9SRUlHTl9BTElHTjogdXNpemUgPSBjb3JlOjptZW06OmFsaWduX29mOjpcXHUwMDNjVFxcdTAwM2UoKTtcXG4rXFxuKyAgICB0eXBlIEJvcnJvd2VkXFx1MDAzYydhXFx1MDAzZVxcbisgICAgICAgID0gXFx1MDAyNidhIFRcXG4rICAgIHdoZXJlXFxuKyAgICAgICAgU2VsZjogJ2E7XFxuKyAgICB0eXBlIEJvcnJvd2VkTXV0XFx1MDAzYydhXFx1MDAzZVxcbisgICAgICAgID0gUGluXFx1MDAzY1xcdTAwMjYnYSBtdXQgVFxcdTAwM2VcXG4rICAgIHdoZXJlXFxuKyAgICAgICAgU2VsZjogJ2E7XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBpbnRvX2ZvcmVpZ24oc2VsZikgLVxcdTAwM2UgKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkIHtcXG4rICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpXFxuKyAgICB9XFxuK1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICB1bnNhZmUgZm4gZnJvbV9mb3JlaWduKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgY2FtZSBmcm9tIGBpbnRvX2ZvcmVpZ25gIGFuZCBjYW5ub3QgYmUgbnVsbC5cXG4rICAgICAgICBsZXQgcHRyID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwdHIuY2FzdCgpKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIHdhcyByZXR1cm5lZCBieSBgaW50b19mb3JlaWduYCwgd2hpY2ggZ2F2ZVxcbisgICAgICAgIC8vIHVwIGV4Y2x1c2l2ZSBvd25lcnNoaXAgb2YgYSB2YWxpZCwgcGlubmVkIGBUYDsgd2UgcmV0YWtlIHRoYXQgb3duZXJzaGlwIGhlcmUuXFxuKyAgICAgICAgdW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHB0cikgfVxcbisgICAgfVxcbitcXG4rICAgICNbaW5saW5lXVxcbisgICAgdW5zYWZlIGZuIGJvcnJvd1xcdTAwM2MnYVxcdTAwM2UocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cXHUwMDNlIFNlbGY6OkJvcnJvd2VkXFx1MDAzYydhXFx1MDAzZSB7XFxuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGFcXG4rICAgICAgICAvLyByZWZlcmVuY2UgZm9yIGAnYWAuXFxuKyAgICAgICAgdW5zYWZlIHsgXFx1MDAyNipwdHIuY2FzdCgpIH1cXG4rICAgIH1cXG4rXFxuKyAgICAjW2lubGluZV1cXG4rICAgIHVuc2FmZSBmbiBib3Jyb3dfbXV0XFx1MDAzYydhXFx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVxcdTAwM2UgU2VsZjo6Qm9ycm93ZWRNdXRcXHUwMDNjJ2FcXHUwMDNlIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIGlzIHZhbGlkIGZvciB1c2UgYXMgYVxcbisgICAgICAgIC8vIHVuaXF1ZSByZWZlcmVuY2UgZm9yIGAnYWAuXFxuKyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgXFx1MDAyNm11dCAqcHRyLmNhc3QoKSB9O1xcbitcXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIG5ldmVyIG1vdmUgb3V0IG9mIGlubmVyLCBhbmQgd2UgZG8gbm90IGhhbmQgb3V0IG11dGFibGVcXG4rICAgICAgICAvLyByZWZlcmVuY2VzIHdoZW4gYFQ6ICFVbnBpbmAuXFxuKyAgICAgICAgdW5zYWZlIHsgUGluOjpuZXdfdW5jaGVja2VkKGlubmVyKSB9XFxuKyAgICB9XFxuK31cXG4rXFxuKy8vLyBBIHRyYWl0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHdyYXBwZWQgaW4gZWl0aGVyIG9uZSBvZiB0aGUgcmVmZXJlbmNlIHR5cGVzIFtgT3duZWRgXSBhbmRcXG4rLy8vIFtgQVJlZmBdLlxcbisvLy9cXG4rLy8vICMgRXhhbXBsZXNcXG4rLy8vXFxuKy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVSZWZDb3VudGVkYF0sIFtgT3duYWJsZWBdIGFuZCBpdHMgdXNhZ2Ugd2l0aFxcbisvLy8gW2BBUmVmYF0gYW5kIFtgT3duZWRgXSBsb29rcyBsaWtlIHRoaXM6XFxuKy8vL1xcbisvLy8gYGBgXFxuKy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxcbisvLy8gIyB1c2UgY29yZTo6Y2VsbDo6Q2VsbDtcXG4rLy8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcXG4rLy8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XFxuKy8vLyAjIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBSZWZDb3VudGVkfTtcXG4rLy8vICMgdXNlIGtlcm5lbDo6dHlwZXM6OntPd25lZCwgT3duYWJsZSwgT3duYWJsZVJlZkNvdW50ZWR9O1xcbisvLy9cXG4rLy8vIC8vIEFuIGludGVybmFsbHkgcmVmY291bnRlZCBzdHJ1Y3QgZm9yIGRlbW9uc3RyYXRpb24gcHVycG9zZXMuXFxuKy8vLyAvL1xcbisvLy8gLy8gIyBJbnZhcmlhbnRzXFxuKy8vLyAvL1xcbisvLy8gLy8gLSBgcmVmY291bnRgIGlzIGFsd2F5cyBub24temVybyBmb3IgYSB2YWxpZCBvYmplY3QuXFxuKy8vLyAvLyAtIGByZWZjb3VudGAgaXMgXFx1MDAzZTEgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBSdXN0IHJlZmVyZW5jZSB0byBpdC5cXG4rLy8vIC8vXFxuKy8vLyBzdHJ1Y3QgRm9vIHtcXG4rLy8vICAgICByZWZjb3VudDogQ2VsbFxcdTAwM2N1c2l6ZVxcdTAwM2UsXFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gaW1wbCBGb28ge1xcbisvLy8gICAgIGZuIG5ldygpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NTZWxmXFx1MDAzZVxcdTAwM2Uge1xcbisvLy8gICAgICAgICAvLyBXZSBhcmUganVzdCB1c2luZyBhIGBLQm94YCBoZXJlIHRvIGhhbmRsZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24sIGFzIG91ciBgRm9vYCBpc1xcbisvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXFxuKy8vLyAgICAgICAgIC8vIElOVkFSSUFOVDogV2UgaW5pdGlhbGl6ZSBgcmVmY291bnRgIHRvIDEsIHNhdGlzZnlpbmcgdGhlIGludmFyaWFudHMuXFxuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjpuZXcoXFxuKy8vLyAgICAgICAgICAgICBGb28ge1xcbisvLy8gICAgICAgICAgICAgICAgIHJlZmNvdW50OiBDZWxsOjpuZXcoMSksXFxuKy8vLyAgICAgICAgICAgICB9LFxcbisvLy8gICAgICAgICAgICAgZmxhZ3M6OkdGUF9LRVJORUwsXFxuKy8vLyAgICAgICAgICk/O1xcbisvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xcbisvLy8gICAgICAgICAvLyBTQUZFVFk6XFxuKy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cXG4rLy8vICAgICAgICAgLy8gIC0gV2UgY2FuIHRyYW5zZmVyIHRoaXMgb3duZXJzaGlwIHRvIHRoZSBgZnJvbV9yYXdgIG1ldGhvZC5cXG4rLy8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gLy8gU0FGRVRZOiBXZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBlYWNoIHRpbWUgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBvbmx5IGZyZWVcXG4rLy8vIC8vIHRoZSBgRm9vYCB3aGVuIHRoZSByZWZjb3VudCByZWFjaGVzIHplcm8uXFxuKy8vLyB1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBGb28ge1xcbisvLy8gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4rLy8vICAgICAgICAgc2VsZi5yZWZjb3VudC5yZXBsYWNlKHNlbGYucmVmY291bnQuZ2V0KCkgKyAxKTtcXG4rLy8vICAgICB9XFxuKy8vL1xcbisvLy8gICAgIHVuc2FmZSBmbiBkZWNfcmVmKHRoaXM6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4rLy8vICAgICAgICAgLy8gU0FGRVRZOiBCeSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24sIHRoZSByZWZjb3VudCBpcyBub24temVybyxcXG4rLy8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLlxcbisvLy8gICAgICAgICBsZXQgcmVmY291bnQgPSB1bnNhZmUgeyBcXHUwMDI2dGhpcy5hc19yZWYoKS5yZWZjb3VudCB9O1xcbisvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxO1xcbisvLy8gICAgICAgICBpZiBuZXdfcmVmY291bnQgPT0gMCB7XFxuKy8vLyAgICAgICAgICAgICAvLyBUaGUgYEZvb2Agd2lsbCBiZSBkcm9wcGVkIHdoZW4gYEtCb3hgIGdvZXMgb3V0IG9mIHNjb3BlLlxcbisvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94XFx1MDAzY0Zvb1xcdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZSBhcyB0aGUgb2xkIHJlZmNvdW50IGlzIDEuIFdlIGNhbiBwYXNzXFxuKy8vLyAgICAgICAgICAgICAvLyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdIGFzIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbixcXG4rLy8vICAgICAgICAgICAgIC8vIHRoZSBgU2VsZmAgd2lsbCBubyBsb25nZXIgYmUgdXNlZCBieSB0aGUgY2FsbGVyLlxcbisvLy8gICAgICAgICAgICAgdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcy5hc19wdHIoKSkgfTtcXG4rLy8vICAgICAgICAgfSBlbHNlIHtcXG4rLy8vICAgICAgICAgICAgIHJlZmNvdW50LnJlcGxhY2UobmV3X3JlZmNvdW50KTtcXG4rLy8vICAgICAgICAgfVxcbisvLy8gICAgIH1cXG4rLy8vIH1cXG4rLy8vXFxuKy8vLyBpbXBsIE93bmFibGVSZWZDb3VudGVkIGZvciBGb28ge1xcbisvLy8gICAgIGZuIHRyeV9mcm9tX3NoYXJlZCh0aGlzOiBBUmVmXFx1MDAzY1NlbGZcXHUwMDNlKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjT3duZWRcXHUwMDNjU2VsZlxcdTAwM2UsIEFSZWZcXHUwMDNjU2VsZlxcdTAwM2VcXHUwMDNlIHtcXG4rLy8vICAgICAgICAgaWYgdGhpcy5yZWZjb3VudC5nZXQoKSA9PSAxIHtcXG4rLy8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIGBGb29gIGlzIHN0aWxsIGFsaXZlIGFuZCBoYXMgbm8gb3RoZXIgUnVzdCByZWZlcmVuY2VzIGFzIHRoZSByZWZjb3VudFxcbisvLy8gICAgICAgICAgICAgLy8gaXMgMS5cXG4rLy8vICAgICAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhBUmVmOjppbnRvX3Jhdyh0aGlzKSkgfSlcXG4rLy8vICAgICAgICAgfSBlbHNlIHtcXG4rLy8vICAgICAgICAgICAgIEVycih0aGlzKVxcbisvLy8gICAgICAgICB9XFxuKy8vLyAgICAgfVxcbisvLy9cXG4rLy8vICAgICBmbiBpbnRvX3NoYXJlZCh0aGlzOiBPd25lZFxcdTAwM2NTZWxmXFx1MDAzZSkgLVxcdTAwM2UgQVJlZlxcdTAwM2NTZWxmXFx1MDAzZSB7XFxuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogQW4gYE93bmVkXFx1MDAzY0Zvb1xcdTAwM2VgIGhvbGRzIHRoZSB1bmlxdWUgcmVmZXJlbmNlIChyZWZjb3VudCAxKSwgd2hpY2ggd2UgdHJhbnNmZXIgdG9cXG4rLy8vICAgICAgICAgLy8gdGhlIG5ldyBgQVJlZmAuXFxuKy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfVxcbisvLy8gICAgIH1cXG4rLy8vIH1cXG4rLy8vXFxuKy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XFxuKy8vLyAgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IFVzaW5nIGBkZWNfcmVmKClgIGZyb20gW2BSZWZDb3VudGVkYF0gdG8gcmVsZWFzZSBpcyBva2F5LCBhcyB0aGUgcmVmY291bnQgaXNcXG4rLy8vICAgICAgICAgLy8gYWx3YXlzIDEgZm9yIGFuIFtgT3duZWRcXHUwMDNjRm9vXFx1MDAzZWBdLlxcbisvLy8gICAgICAgICB1bnNhZmUgeyBGb286OmRlY19yZWYodGhpcykgfTtcXG4rLy8vICAgICB9XFxuKy8vLyB9XFxuKy8vL1xcbisvLy8gbGV0IGZvbyA9IEZvbzo6bmV3KCk/O1xcbisvLy8gbGV0IGZvbyA9IEFSZWY6OmZyb20oZm9vKTtcXG4rLy8vIHtcXG4rLy8vICAgICBsZXQgYmFyID0gZm9vLmNsb25lKCk7XFxuKy8vLyAgICAgYXNzZXJ0IShPd25lZDo6dHJ5X2Zyb20oYmFyKS5pc19lcnIoKSk7XFxuKy8vLyB9XFxuKy8vLyBhc3NlcnQhKE93bmVkOjp0cnlfZnJvbShmb28pLmlzX29rKCkpO1xcbisvLy8gIyBPazo6XFx1MDAzYygpLCBFcnJvclxcdTAwM2UoKCkpXFxuKy8vLyBgYGBcXG4rcHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICsgT3duYWJsZSArIFNpemVkIHtcXG4rICAgIC8vLyBDaGVja3MgaWYgdGhlIFtgQVJlZmBdIGlzIHVuaXF1ZSBhbmQgY29udmVydHMgaXQgdG8gYW4gW2BPd25lZGBdIGlmIHRoYXQgaXMgdGhlIGNhc2UuXFxuKyAgICAvLy8gT3RoZXJ3aXNlIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZlxcdTAwM2NTZWxmXFx1MDAzZSkgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlLCBBUmVmXFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZTtcXG4rXFxuKyAgICAvLy8gQ29udmVydHMgdGhlIFtgT3duZWRgXSBpbnRvIGFuIFtgQVJlZmBdLlxcbisgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcXHUwMDNjU2VsZlxcdTAwM2UpIC1cXHUwMDNlIEFSZWZcXHUwMDNjU2VsZlxcdTAwM2U7XFxuK31cXG4rXFxuK2ltcGxcXHUwMDNjVDogT3duYWJsZVJlZkNvdW50ZWRcXHUwMDNlIFRyeUZyb21cXHUwMDNjQVJlZlxcdTAwM2NUXFx1MDAzZVxcdTAwM2UgZm9yIE93bmVkXFx1MDAzY1RcXHUwMDNlIHtcXG4rICAgIHR5cGUgRXJyb3IgPSBBUmVmXFx1MDAzY1RcXHUwMDNlO1xcbisgICAgLy8vIFRyaWVzIHRvIGNvbnZlcnQgdGhlIFtgQVJlZmBdIHRvIGFuIFtgT3duZWRgXSBieSBjYWxsaW5nXFxuKyAgICAvLy8gW2B0cnlfZnJvbV9zaGFyZWQoKWBdKE93bmFibGVSZWZDb3VudGVkOjp0cnlfZnJvbV9zaGFyZWQpLiBJbiBjYXNlIHRoZSBbYEFSZWZgXSBpcyBub3RcXG4rICAgIC8vLyB1bmlxdWUsIGl0IHJldHVybnMgYWdhaW4gYW4gW2BBUmVmYF0gdG8gdGhlIHNhbWUgdW5kZXJseWluZyBvYmplY3QuXFxuKyAgICAjW2lubGluZV1cXG4rICAgIGZuIHRyeV9mcm9tKGI6IEFSZWZcXHUwMDNjVFxcdTAwM2UpIC1cXHUwMDNlIFJlc3VsdFxcdTAwM2NPd25lZFxcdTAwM2NUXFx1MDAzZSwgU2VsZjo6RXJyb3JcXHUwMDNlIHtcXG4rICAgICAgICBUOjp0cnlfZnJvbV9zaGFyZWQoYilcXG4rICAgIH1cXG4rfVxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wYWdlLnJzIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xcbmluZGV4IDhhZmZkODI2Mjg5MWJhLi5jODhmZGEwOWVhZDVhYSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9wYWdlLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvcGFnZS5yc1xcbkBAIC0xMiwxNiArMTIsMTYgQEBcXG4gICAgICAgICBjb2RlOjoqLFxcbiAgICAgICAgIFJlc3VsdCwgLy9cXG4gICAgIH0sXFxuKyAgICB0eXBlczo6e1xcbisgICAgICAgIE9wYXF1ZSxcXG4rICAgICAgICBPd25hYmxlLFxcbisgICAgICAgIE93bmVkLCAvL1xcbisgICAgfSxcXG4gICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlciwgLy9cXG4gfTtcXG4tdXNlIGNvcmU6OntcXG4tICAgIG1hcmtlcjo6UGhhbnRvbURhdGEsXFxuLSAgICBtZW06Ok1hbnVhbGx5RHJvcCxcXG4tICAgIG9wczo6RGVyZWYsXFxuLSAgICBwdHI6OntcXG4tICAgICAgICBzZWxmLFxcbi0gICAgICAgIE5vbk51bGwsIC8vXFxuLSAgICB9LCAvL1xcbit1c2UgY29yZTo6cHRyOjp7XFxuKyAgICBzZWxmLFxcbisgICAgTm9uTnVsbCwgLy9cXG4gfTtcXG4gXFxuIC8vLyBBIGJpdHdpc2Ugc2hpZnQgZm9yIHRoZSBwYWdlIHNpemUuXFxuQEAgLTY1LDkzICs2NSwyOSBAQCBwdWIgY29uc3QgZm4gcGFnZV9hbGlnbihhZGRyOiB1c2l6ZSkgLVxcdTAwM2UgT3B0aW9uXFx1MDAzY3VzaXplXFx1MDAzZSB7XFxuICAgICBTb21lKHN1bSBcXHUwMDI2IFBBR0VfTUFTSylcXG4gfVxcbiBcXG4tLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS5cXG4tLy8vXFxuLS8vLyBUaGlzIHR5cGUgcHJvdmlkZXMgYSBib3Jyb3dlZCB2ZXJzaW9uIG9mIGEgW2BQYWdlYF0gdGhhdCBpcyBvd25lZCBieSBzb21lIG90aGVyIGVudGl0eSwgZS5nLiBhXFxuLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uXFxuLS8vL1xcbi0vLy8gIyBFeGFtcGxlXFxuLS8vL1xcbi0vLy8gYGBgXFxuLS8vLyAjIHVzZSBrZXJuZWw6OntiaW5kaW5ncywgcHJlbHVkZTo6Kn07XFxuLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9O1xcbi0vLy8gIyB1c2UgY29yZTo6e21lbTo6TWF5YmVVbmluaXQsIHB0ciwgcHRyOjpOb25OdWxsIH07XFxuLS8vL1xcbi0vLy8gZm4gYm9ycm93X3BhZ2VcXHUwMDNjJ2FcXHUwMDNlKHZib3g6IFxcdTAwMjYnYSBtdXQgVkJveFxcdTAwM2NNYXliZVVuaW5pdFxcdTAwM2NbdTg7IFBBR0VfU0laRV1cXHUwMDNlXFx1MDAzZSkgLVxcdTAwM2UgQm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZSB7XFxuLS8vLyAgICAgbGV0IHB0ciA9IHB0cjo6ZnJvbV9yZWYoXFx1MDAyNioqdmJveCk7XFxuLS8vL1xcbi0vLy8gICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXFxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07XFxuLS8vL1xcbi0vLy8gICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkXFxuLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5Llxcbi0vLy8gICAgIGxldCBwYWdlID0gdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChwYWdlKSB9O1xcbi0vLy9cXG4tLy8vICAgICAvLyBTQUZFVFk6XFxuLS8vLyAgICAgLy8gLSBgc2VsZi4wYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgLlxcbi0vLy8gICAgIC8vIC0gYHNlbGYuMGAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYHNlbGZgLlxcbi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxcbi0vLy8gfVxcbi0vLy9cXG4tLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6OlxcdTAwM2NbdTg7IFBBR0VfU0laRV1cXHUwMDNlOjpuZXdfdW5pbml0KEdGUF9LRVJORUwpPztcXG4tLy8vIGxldCBwYWdlID0gYm9ycm93X3BhZ2UoXFx1MDAyNm11dCB2Ym94KTtcXG4tLy8vXFxuLS8vLyAvLyBTQUZFVFk6IFRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgcmVhZCBvciB3cml0ZSB0byB0aGlzIHBhZ2UuXFxuLS8vLyB1bnNhZmUgeyBwYWdlLmZpbGxfemVyb19yYXcoMCwgUEFHRV9TSVpFKT8gfTtcXG4tLy8vICMgT2s6OlxcdTAwM2MoKSwgRXJyb3JcXHUwMDNlKCgpKVxcbi0vLy8gYGBgXFxuLS8vL1xcbi0vLy8gIyBJbnZhcmlhbnRzXFxuLS8vL1xcbi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCdhYC5cXG4tLy8vXFxuLS8vLyBbYFZCb3hgXToga2VybmVsOjphbGxvYzo6VkJveFxcbi0vLy8gW2BWbWFsbG9jYF06IGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1xcbi1wdWIgc3RydWN0IEJvcnJvd2VkUGFnZVxcdTAwM2MnYVxcdTAwM2UoTWFudWFsbHlEcm9wXFx1MDAzY1BhZ2VcXHUwMDNlLCBQaGFudG9tRGF0YVxcdTAwM2NcXHUwMDI2J2EgUGFnZVxcdTAwM2UpO1xcbi1cXG4taW1wbFxcdTAwM2MnYVxcdTAwM2UgQm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZSB7XFxuLSAgICAvLy8gQ29uc3RydWN0cyBhIFtgQm9ycm93ZWRQYWdlYF0gZnJvbSBhIHJhdyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC5cXG4tICAgIC8vL1xcbi0gICAgLy8vICMgU2FmZXR5XFxuLSAgICAvLy9cXG4tICAgIC8vLyAtIGBwdHJgIG11c3QgcG9pbnQgdG8gYSB2YWxpZCBgYmluZGluZ3M6OnBhZ2VgLlxcbi0gICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCdhYC5cXG4tICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXFx1MDAzY2JpbmRpbmdzOjpwYWdlXFx1MDAzZSkgLVxcdTAwM2UgU2VsZiB7XFxuLSAgICAgICAgbGV0IHBhZ2UgPSBQYWdlIHsgcGFnZTogcHRyIH07XFxuLVxcbi0gICAgICAgIC8vIElOVkFSSUFOVDogVGhlIHNhZmV0eSByZXF1aXJlbWVudHMgZ3VhcmFudGVlIHRoYXQgYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWVcXG4tICAgICAgICAvLyBgJ2FgLlxcbi0gICAgICAgIFNlbGYoTWFudWFsbHlEcm9wOjpuZXcocGFnZSksIFBoYW50b21EYXRhKVxcbi0gICAgfVxcbi19XFxuLVxcbi1pbXBsXFx1MDAzYydhXFx1MDAzZSBEZXJlZiBmb3IgQm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZSB7XFxuLSAgICB0eXBlIFRhcmdldCA9IFBhZ2U7XFxuLVxcbi0gICAgZm4gZGVyZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZTZWxmOjpUYXJnZXQge1xcbi0gICAgICAgIFxcdTAwMjZzZWxmLjBcXG4tICAgIH1cXG4tfVxcbi1cXG4tLy8vIFRyYWl0IHRvIGJlIGltcGxlbWVudGVkIGJ5IHR5cGVzIHdoaWNoIHByb3ZpZGUgYW4gW2BJdGVyYXRvcmBdIGltcGxlbWVudGF0aW9uIG9mXFxuLS8vLyBbYEJvcnJvd2VkUGFnZWBdIGl0ZW1zLCBzdWNoIGFzIFtgVm1hbGxvY1BhZ2VJdGVyYF0oa2VybmVsOjphbGxvYzo6YWxsb2NhdG9yOjpWbWFsbG9jUGFnZUl0ZXIpLlxcbisvLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcywgc3VjaCBhc1xcbisvLy8gW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuXFxuIHB1YiB0cmFpdCBBc1BhZ2VJdGVyIHtcXG4gICAgIC8vLyBUaGUgW2BJdGVyYXRvcmBdIHR5cGUsIGUuZy4gW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuXFxuLSAgICB0eXBlIEl0ZXJcXHUwMDNjJ2FcXHUwMDNlOiBJdGVyYXRvclxcdTAwM2NJdGVtID0gQm9ycm93ZWRQYWdlXFx1MDAzYydhXFx1MDAzZVxcdTAwM2VcXG4rICAgIHR5cGUgSXRlclxcdTAwM2MnYVxcdTAwM2U6IEl0ZXJhdG9yXFx1MDAzY0l0ZW0gPSBcXHUwMDI2J2EgUGFnZVxcdTAwM2VcXG4gICAgIHdoZXJlXFxuICAgICAgICAgU2VsZjogJ2E7XFxuIFxcbi0gICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgQm9ycm93ZWRQYWdlYF0gaXRlbXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxcbisgICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxcbiAgICAgZm4gcGFnZV9pdGVyKFxcdTAwMjZtdXQgc2VsZikgLVxcdTAwM2UgU2VsZjo6SXRlclxcdTAwM2MnX1xcdTAwM2U7XFxuIH1cXG4gXFxuLS8vLyBBIHBvaW50ZXIgdG8gYSBwYWdlIHRoYXQgb3ducyB0aGUgcGFnZSBhbGxvY2F0aW9uLlxcbisvLy8gQSBgc3RydWN0IHBhZ2VgLlxcbisvLy9cXG4rLy8vIEEgYFBhZ2VgIGlzIGFjY2Vzc2VkIHRocm91Z2ggYSBzaGFyZWQgcmVmZXJlbmNlIG9yIHRocm91Z2ggYW4gb3duaW5nIFtgT3duZWRcXHUwMDNjUGFnZVxcdTAwM2VgXTsgdGhlIGxhdHRlclxcbisvLy8gZnJlZXMgdGhlIHBhZ2UgYWxsb2NhdGlvbiB3aGVuIGl0IGlzIGRyb3BwZWQuXFxuIC8vL1xcbiAvLy8gIyBJbnZhcmlhbnRzXFxuIC8vL1xcbi0vLy8gVGhlIHBvaW50ZXIgaXMgdmFsaWQsIGFuZCBoYXMgb3duZXJzaGlwIG92ZXIgdGhlIHBhZ2UuXFxuKy8vLyBUaGUgYFBhZ2VgIGlzIGJhY2tlZCBieSBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAuXFxuKyNbcmVwcih0cmFuc3BhcmVudCldXFxuIHB1YiBzdHJ1Y3QgUGFnZSB7XFxuLSAgICBwYWdlOiBOb25OdWxsXFx1MDAzY2JpbmRpbmdzOjpwYWdlXFx1MDAzZSxcXG4rICAgIHBhZ2U6IE9wYXF1ZVxcdTAwM2NiaW5kaW5nczo6cGFnZVxcdTAwM2UsXFxuIH1cXG4gXFxuIC8vIFNBRkVUWTogUGFnZXMgaGF2ZSBubyBsb2dpYyB0aGF0IHJlbGllcyBvbiB0aGVtIHN0YXlpbmcgb24gYSBnaXZlbiB0aHJlYWQsIHNvIG1vdmluZyB0aGVtIGFjcm9zc1xcbkBAIC0xODUsMTkgKzEyMSwyMCBAQCBpbXBsIFBhZ2Uge1xcbiAgICAgLy8vICMgT2s6OlxcdTAwM2MoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvclxcdTAwM2UoKCkpXFxuICAgICAvLy8gYGBgXFxuICAgICAjW2lubGluZV1cXG4tICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1NlbGYsIEFsbG9jRXJyb3JcXHUwMDNlIHtcXG4rICAgIHB1YiBmbiBhbGxvY19wYWdlKGZsYWdzOiBGbGFncykgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY093bmVkXFx1MDAzY1NlbGZcXHUwMDNlLCBBbGxvY0Vycm9yXFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBEZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mIGBnZnBfZmxhZ3NgLCB0aGlzIGNhbGwgbWF5IHNsZWVwLiBPdGhlciB0aGFuIHRoYXQsIGl0XFxuICAgICAgICAgLy8gaXMgYWx3YXlzIHNhZmUgdG8gY2FsbCB0aGlzIG1ldGhvZC5cXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjphbGxvY19wYWdlcyhmbGFncy5hc19yYXcoKSwgMCkgfTtcXG4gICAgICAgICBsZXQgcGFnZSA9IE5vbk51bGw6Om5ldyhwYWdlKS5va19vcihBbGxvY0Vycm9yKT87XFxuLSAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XFxuLSAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYFBhZ2VgIG9iamVjdC5cXG4tICAgICAgICBPayhTZWxmIHsgcGFnZSB9KVxcbisgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxcbisgICAgICAgIC8vIGFsbG9jYXRlZCBwYWdlLiBXZSB0cmFuc2ZlciB0aGF0IG93bmVyc2hpcCB0byB0aGUgbmV3IGBPd25lZFxcdTAwM2NQYWdlXFx1MDAzZWAgb2JqZWN0LlxcbisgICAgICAgIC8vIFNpbmNlIGBQYWdlYCBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHBvaW50ZXIgZGlyZWN0bHkuXFxuKyAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHBhZ2UuY2FzdCgpKSB9KVxcbiAgICAgfVxcbiBcXG4gICAgIC8vLyBSZXR1cm5zIGEgcmF3IHBvaW50ZXIgdG8gdGhlIHBhZ2UuXFxuICAgICBwdWIgZm4gYXNfcHRyKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSAqbXV0IGJpbmRpbmdzOjpwYWdlIHtcXG4tICAgICAgICBzZWxmLnBhZ2UuYXNfcHRyKClcXG4rICAgICAgICBPcGFxdWU6OmNhc3RfaW50byhcXHUwMDI2c2VsZi5wYWdlKVxcbiAgICAgfVxcbiBcXG4gICAgIC8vLyBHZXQgdGhlIG5vZGUgaWQgY29udGFpbmluZyB0aGlzIHBhZ2UuXFxuQEAgLTIwNiw2ICsxNDMsMjAgQEAgcHViIGZuIG5pZChcXHUwMDI2c2VsZikgLVxcdTAwM2UgaTMyIHtcXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGFnZV90b19uaWQoc2VsZi5hc19wdHIoKSkgfVxcbiAgICAgfVxcbiBcXG4rICAgIC8vLyBDcmVhdGUgYSBgXFx1MDAyNlBhZ2VgIGZyb20gYSByYXcgYHN0cnVjdCBwYWdlYCBwb2ludGVyLlxcbisgICAgLy8vXFxuKyAgICAvLy8gIyBTYWZldHlcXG4rICAgIC8vL1xcbisgICAgLy8vIGBwdHJgIG11c3QgYmUgY29udmVydGlibGUgdG8gYSBzaGFyZWQgcmVmZXJlbmNlIHdpdGggYSBsaWZldGltZSBvZiBgJ2FgLlxcbisgICAgI1tpbmxpbmVdXFxuKyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3XFx1MDAzYydhXFx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGFnZSkgLVxcdTAwM2UgXFx1MDAyNidhIFNlbGYge1xcbisgICAgICAgIC8vIElOVkFSSUFOVDogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIHJlZmVycyB0byBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAsIHNvXFxuKyAgICAgICAgLy8gdGhlIHJldHVybmVkIHJlZmVyZW5jZSB1cGhvbGRzIHRoZSB0eXBlIGludmFyaWFudCBvZiBgUGFnZWAuXFxuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyBub3QgbnVsbCBhbmQgaXMgY29udmVydGlibGUgdG8gYSBzaGFyZWRcXG4rICAgICAgICAvLyByZWZlcmVuY2UuXFxuKyAgICAgICAgdW5zYWZlIHsgXFx1MDAyNipwdHIuY2FzdCgpIH1cXG4rICAgIH1cXG4rXFxuICAgICAvLy8gUnVucyBhIHBpZWNlIG9mIGNvZGUgd2l0aCB0aGlzIHBhZ2UgbWFwcGVkIHRvIGFuIGFkZHJlc3MuXFxuICAgICAvLy9cXG4gICAgIC8vLyBUaGUgcGFnZSBpcyB1bm1hcHBlZCB3aGVuIHRoaXMgY2FsbCByZXR1cm5zLlxcbkBAIC0zNzIsMTAgKzMyMywxMSBAQCBwdWIgdW5zYWZlIGZuIGNvcHlfZnJvbV91c2VyX3NsaWNlX3JhdyhcXG4gICAgIH1cXG4gfVxcbiBcXG4taW1wbCBEcm9wIGZvciBQYWdlIHtcXG4raW1wbCBPd25hYmxlIGZvciBQYWdlIHtcXG4gICAgICNbaW5saW5lXVxcbi0gICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG4tICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZSBpdC5cXG4tICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6X19mcmVlX3BhZ2VzKHNlbGYucGFnZS5hc19wdHIoKSwgMCkgfTtcXG4rICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWVcXG4rICAgICAgICAvLyBpdC4gU2luY2UgUGFnZSBpcyB0cmFuc3BhcmVudCwgd2UgY2FuIGNhc3QgdGhlIHJhdyBwb2ludGVyIGRpcmVjdGx5LlxcbisgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXModGhpcy5hc19wdHIoKS5jYXN0KCksIDApIH07XFxuICAgICB9XFxuIH1cXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzXFxuaW5kZXggNTA3MWNhZTY1NDNmZDIuLmVhOWVmOTljZWNiMDc2IDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3BjaS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BjaS5yc1xcbkBAIC0xOSw2ICsxOSwxMCBAQFxcbiAgICAgfSxcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzdHI6OkNTdHIsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuICAgICBUaGlzTW9kdWxlLCAvL1xcbiB9O1xcbkBAIC00ODEsNyArNDg1LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIGRldmljZTo6QXNCdXNEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXG4gaW1wbFxcdTAwM2MnYVxcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXFx1MDAzYydhXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY2RldmljZTo6Q29yZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnBjaV9kZXZfZ2V0KHNlbGYuYXNfcmF3KCkpIH07XFxuQEAgLTQ5Myw2ICs0OTcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XFxuK1xcbiBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBBc1JlZlxcdTAwM2NkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5ycyBiL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcXG5pbmRleCA5NzlhOTcxOGYxNTNkOC4uMDY3ZjY4Yjk5ZThjNWMgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcGlkX25hbWVzcGFjZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnNcXG5AQCAtNyw3ICs3LDE0IEBAXFxuIC8vISBDIGhlYWRlcjogW2BpbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWRfbmFtZXNwYWNlLmgpIGFuZFxcbiAvLyEgW2BpbmNsdWRlL2xpbnV4L3BpZC5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZC5oKVxcbiBcXG4tdXNlIGNyYXRlOjp7YmluZGluZ3MsIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsIHR5cGVzOjpPcGFxdWV9O1xcbit1c2UgY3JhdGU6OntcXG4rICAgIGJpbmRpbmdzLFxcbisgICAgc3luYzo6YXJlZjo6UmVmQ291bnRlZCxcXG4rICAgIHR5cGVzOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBPcGFxdWUsIC8vXFxuKyAgICB9LCAvL1xcbit9O1xcbiB1c2UgY29yZTo6cHRyO1xcbiBcXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwncyBgc3RydWN0IHBpZF9uYW1lc3BhY2VgLiBUaHJlYWQgc2FmZS5cXG5AQCAtNDEsNyArNDgsNyBAQCBwdWIgdW5zYWZlIGZuIGZyb21fcHRyXFx1MDAzYydhXFx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLVxcdTAwM2UgXFx1MDAyNidhIFNlbGYge1xcbiB9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgUGlkTmFtZXNwYWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBtZWFucyB0aGF0IHRoZSByZWZjb3VudCBpcyBub256ZXJvLlxcbkBAIC01NSw2ICs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NQaWROYW1lc3BhY2VcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjUGlkTmFtZXNwYWNlXFx1MDAzZWAgZnJvbVxcbisvLyBhIGBcXHUwMDI2UGlkTmFtZXNwYWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgUGlkTmFtZXNwYWNlIHt9XFxuK1xcbiAvLyBTQUZFVFk6XFxuIC8vIC0gYFBpZE5hbWVzcGFjZTo6ZGVjX3JlZmAgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuXFxuIC8vIC0gSXQgaXMgb2theSB0byBzZW5kIG93bmVyc2hpcCBvZiBgUGlkTmFtZXNwYWNlYCBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzIGIvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcXG5pbmRleCA5YjM2MmUwNDk1ZDMyMy4uMGJhNjc2NDQ1YjA2ZDcgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xcbkBAIC0yNyw2ICsyNywxMCBAQFxcbiAgICAgfSxcXG4gICAgIG9mLFxcbiAgICAgcHJlbHVkZTo6KixcXG4rICAgIHN5bmM6OmFyZWY6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcXG4gICAgIFRoaXNNb2R1bGUsIC8vXFxuIH07XFxuQEAgLTUxOCw3ICs1MjIsNyBAQCBwdWIgZm4gb3B0aW9uYWxfaXJxX2J5X25hbWUoXFx1MDAyNnNlbGYsIG5hbWU6IFxcdTAwMjZDU3RyKSAtXFx1MDAzZSBSZXN1bHRcXHUwMDNjSXJxUmVxdWVzdFxcdTAwM2MnX1xcdTAwM2VcXHUwMDNlIHtcXG4gaW1wbFxcdTAwM2MnYVxcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXFx1MDAzYydhXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY2RldmljZTo6Q29yZVxcdTAwM2MnYVxcdTAwM2VcXHUwMDNlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxcbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXFxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcXG5AQCAtNTMwLDYgKzUzNCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcXHUwMDNjU2VsZlxcdTAwM2UpIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlxcdTAwM2NEZXZpY2VcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZEZXZpY2VgLlxcbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cXG4rXFxuIGltcGxcXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcXHUwMDNlIEFzUmVmXFx1MDAzY2RldmljZTo6RGV2aWNlXFx1MDAzY0N0eFxcdTAwM2VcXHUwMDNlIGZvciBEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICBmbiBhc19yZWYoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9wd20ucnMgYi9ydXN0L2tlcm5lbC9wd20ucnNcXG5pbmRleCA2YzlkNjY3MDA5ZWY3Yi4uMmQxY2Q3NGRkOThlMWUgMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvcHdtLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvcHdtLnJzXFxuQEAgLTEzLDcgKzEzLDExIEBAXFxuICAgICBkZXZyZXMsXFxuICAgICBlcnJvcjo6e3NlbGYsIHRvX3Jlc3VsdH0sXFxuICAgICBwcmVsdWRlOjoqLFxcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFSZWYsXFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXFxuIH07XFxuIHVzZSBjb3JlOjp7XFxuQEAgLTYyOSw3ICs2MzMsNyBAQCBwdWIgZm4gbmV3XFx1MDAzYydhXFx1MDAzZShcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbXBsZW1lbnRzIHJlZmNvdW50aW5nIGZvciBgQ2hpcGAgdXNpbmcgdGhlIGVtYmVkZGVkIGBzdHJ1Y3QgZGV2aWNlYC5cXG4tdW5zYWZlIGltcGxcXHUwMDNjVDogUHdtT3BzXFx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBDaGlwXFx1MDAzY1RcXHUwMDNlIHtcXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogUHdtT3BzXFx1MDAzZSBSZWZDb3VudGVkIGZvciBDaGlwXFx1MDAzY1RcXHUwMDNlIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogYHNlbGYuMC5nZXQoKWAgcG9pbnRzIHRvIGEgdmFsaWQgYHB3bV9jaGlwYCBiZWNhdXNlIGBzZWxmYCBleGlzdHMuXFxuQEAgLTY0Nyw2ICs2NTEsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY0NoaXBcXHUwMDNjVFxcdTAwM2VcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjQ2hpcFxcdTAwM2NUXFx1MDAzZVxcdTAwM2VgIGZyb20gYVxcbisvLyBgXFx1MDAyNkNoaXBcXHUwMDNjVFxcdTAwM2VgLlxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBQd21PcHNcXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcXHUwMDNjVFxcdTAwM2Uge31cXG4rXFxuIC8vIFNBRkVUWTogYENoaXBgIGlzIGEgd3JhcHBlciBhcm91bmQgYCptdXQgYmluZGluZ3M6OnB3bV9jaGlwYC4gVGhlIHVuZGVybHlpbmcgQ1xcbiAvLyBzdHJ1Y3R1cmUncyBzdGF0ZSBpcyBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIGtlcm5lbCdzIGRldmljZSBtb2RlbFxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5ycyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xcbmluZGV4IGI3MjFiMmUwMGI5ODZmLi5lNmZmZTdjNjUwYzM5YyAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcXG4rKysgYi9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcXG5AQCAtMTEsNyArMTEsNyBAQFxcbiAvLyEgdW5kZXJseWluZyBvYmplY3QsIGJ1dCB0aGlzIHJlZmNvdW50IGlzIGludGVybmFsIHRvIHRoZSBvYmplY3QuIEl0IGVzc2VudGlhbGx5IGlzIGEgUnVzdFxcbiAvLyEgaW1wbGVtZW50YXRpb24gb2YgdGhlIGBnZXRfYCBhbmQgYHB1dF9gIHBhdHRlcm4gdXNlZCBpbiBDIGZvciByZWZlcmVuY2UgY291bnRpbmcuXFxuIC8vIVxcbi0vLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmXFx1MDAzY015VHlwZVxcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgQWx3YXlzUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XFxuKy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcXHUwMDNjTXlUeXBlXFx1MDAzZWBdLCBgTXlUeXBlYCBuZWVkcyB0byBpbXBsZW1lbnQgW2BSZWZDb3VudGVkYF0uIEl0IGlzIGEgdHJhaXRcXG4gLy8hIGZvciBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3Qgb2YgdGhlIGBNeVR5cGVgIHR5cGUuXFxuIC8vIVxcbiAvLyEgW2BBcmNgXTogY3JhdGU6OnN5bmM6OkFyY1xcbkBAIC0yMywyNiArMjMsMzUgQEBcXG4gICAgIG9wczo6RGVyZWYsXFxuICAgICBwdHI6Ok5vbk51bGwsIC8vXFxuIH07XFxuK3VzZSBrZXJuZWw6OnR5cGVzOjp7XFxuKyAgICBPd25hYmxlUmVmQ291bnRlZCxcXG4rICAgIE93bmVkLCAvL1xcbit9O1xcbiBcXG4tLy8vIFR5cGVzIHRoYXQgYXJlIF9hbHdheXNfIHJlZmVyZW5jZSBjb3VudGVkLlxcbisvLy8gVHlwZXMgdGhhdCBhcmUgaW50ZXJuYWxseSByZWZlcmVuY2UgY291bnRlZC5cXG4gLy8vXFxuIC8vLyBJdCBhbGxvd3Mgc3VjaCB0eXBlcyB0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSByZWYgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZnVuY3Rpb25zLlxcbi0vLy8gQWRkaXRpb25hbGx5LCBpdCBhbGxvd3MgdXNlcnMgdG8gY29udmVydCBmcm9tIGEgc2hhcmVkIHJlZmVyZW5jZSBgXFx1MDAyNlRgIHRvIGFuIG93bmVkIHJlZmVyZW5jZVxcbi0vLy8gW2BBUmVmXFx1MDAzY1RcXHUwMDNlYF0uXFxuIC8vL1xcbiAvLy8gVGhpcyBpcyB1c3VhbGx5IGltcGxlbWVudGVkIGJ5IHdyYXBwZXJzIHRvIGV4aXN0aW5nIHN0cnVjdHVyZXMgb24gdGhlIEMgc2lkZSBvZiB0aGUgY29kZS4gRm9yXFxuIC8vLyBSdXN0IGNvZGUsIHRoZSByZWNvbW1lbmRhdGlvbiBpcyB0byB1c2UgW2BBcmNgXShjcmF0ZTo6c3luYzo6QXJjKSB0byBjcmVhdGUgcmVmZXJlbmNlLWNvdW50ZWRcXG4gLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuXFxuIC8vL1xcbisvLy8gTm90ZTogSW1wbGVtZW50aW5nIHRoaXMgdHJhaXQgYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW4gW2BBUmVmXFx1MDAzY1NlbGZcXHUwMDNlYF0uIEl0IHJlcXVpcmVzIGFuXFxuKy8vLyBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgYW5kIHByb3ZpZGVzIG9ubHkgc2hhcmVkIHJlZmVyZW5jZXMuIElmIHVuaXF1ZSByZWZlcmVuY2VzIGFyZSByZXF1aXJlZFxcbisvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW5cXG4rLy8vIFtgT3duZWRcXHUwMDNjU2VsZlxcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdFxcbisvLy8gW2BPd25hYmxlUmVmQ291bnRlZGBdIGFsbG93cyB0byBjb252ZXJ0IGJldHdlZW4gdW5pcXVlIGFuZFxcbisvLy8gc2hhcmVkIHJlZmVyZW5jZXMgKGkuZS4gW2BPd25lZFxcdTAwM2NTZWxmXFx1MDAzZWBdKGNyYXRlOjp0eXBlczo6T3duZWQpIGFuZFxcbisvLy8gW2BBUmVmXFx1MDAzY1NlbGZcXHUwMDNlYF0pLlxcbisvLy9cXG4gLy8vICMgU2FmZXR5XFxuIC8vL1xcbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmZXJlbmNlIGNvdW50IGtlZXAgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnlcXG4gLy8vIGF0IGxlYXN0IHVudGlsIG1hdGNoaW5nIGRlY3JlbWVudHMgYXJlIHBlcmZvcm1lZC5cXG4gLy8vXFxuIC8vLyBJbXBsZW1lbnRlcnMgbXVzdCBhbHNvIGVuc3VyZSB0aGF0IGFsbCBpbnN0YW5jZXMgYXJlIHJlZmVyZW5jZS1jb3VudGVkLiAoT3RoZXJ3aXNlIHRoZXlcXG4tLy8vIHdvbid0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdFxcbi0vLy8gYWxpdmUuKVxcbi1wdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xcbisvLy8gd29uJ3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0IGFsaXZlLilcXG4rcHViIHVuc2FmZSB0cmFpdCBSZWZDb3VudGVkIHtcXG4gICAgIC8vLyBJbmNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIG9iamVjdC5cXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpO1xcbiBcXG5AQCAtNTUsMTEgKzY0LDI3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XFxuICAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXJlIHdhcyBhIHByZXZpb3VzIG1hdGNoaW5nIGluY3JlbWVudCB0byB0aGUgcmVmZXJlbmNlIGNvdW50LFxcbiAgICAgLy8vIGFuZCB0aGF0IHRoZSBvYmplY3QgaXMgbm8gbG9uZ2VyIHVzZWQgYWZ0ZXIgaXRzIHJlZmVyZW5jZSBjb3VudCBpcyBkZWNyZW1lbnRlZCAoYXMgaXQgbWF5XFxuICAgICAvLy8gcmVzdWx0IGluIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQpLCB1bmxlc3MgdGhlIGNhbGxlciBvd25zIGFub3RoZXIgaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudFxcbi0gICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxsc1xcbi0gICAgLy8vIFtgQWx3YXlzUmVmQ291bnRlZDo6ZGVjX3JlZmBdIG9uY2UpLlxcbisgICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscyBbYFJlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cXG4gICAgIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSk7XFxuIH1cXG4gXFxuKy8vLyBBbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgdHlwZS5cXG4rLy8vXFxuKy8vLyBJdCBhbGxvd3MgZGVyaXZpbmcgYSBjb3VudGVkIHJlZmVyZW5jZSBbYEFSZWZcXHUwMDNjVFxcdTAwM2VgXSBmcm9tIGEgYFxcdTAwMjZUYC5cXG4rLy8vXFxuKy8vLyBUaGlzIHByb3ZpZGVzIHNvbWUgY29udmVuaWVuY2UsIGJ1dCBpdCBhbGxvd3MgXFxcImVzY2FwaW5nXFxcIiBib3Jyb3cgY2hlY2tzIG9uIGBcXHUwMDI2VGAuIEFzIGl0XFxuKy8vLyBjb21wbGljYXRlcyBhdHRlbXB0cyB0byBlbnN1cmUgdGhhdCBhIHJlZmVyZW5jZSB0byBUIGlzIHVuaXF1ZSwgaXQgaXMgb3B0aW9uYWwgdG8gcHJvdmlkZSBmb3JcXG4rLy8vIFtgUmVmQ291bnRlZGBdIHR5cGVzLiBTZWUgKlNhZmV0eSogYmVsb3cuXFxuKy8vL1xcbisvLy8gIyBTYWZldHlcXG4rLy8vXFxuKy8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBzYWZldHkgaW52YXJpYW50cyBhcmUgdmlvbGF0ZWQgYnkgdXBncmFkaW5nIGFuIGBcXHUwMDI2VGAgdG8gYW5cXG4rLy8vIFtgQVJlZlxcdTAwM2NUXFx1MDAzZWBdLiBJbiBwYXJ0aWN1bGFyIHRoYXQgaW1wbGllcyBbYEFsd2F5c1JlZkNvdW50ZWRgXSBhbmQgW2BjcmF0ZTo6dHlwZXM6Ok93bmFibGVgXVxcbisvLy8gY2Fubm90IGJlIGltcGxlbWVudGVkIGZvciB0aGUgc2FtZSB0eXBlLCBhcyB0aGlzIHdvdWxkIGFsbG93IHZpb2xhdGluZyB0aGUgdW5pcXVlbmVzcyBndWFyYW50ZWVcXG4rLy8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZFxcdTAwM2NUXFx1MDAzZWBdIGJ5IGRlcmVmZXJlbmNpbmcgaXQgaW50byBhbiBgXFx1MDAyNlRgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbVxcbisvLy8gdGhhdC5cXG4rcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkOiBSZWZDb3VudGVkIHt9XFxuK1xcbiAvLy8gQW4gb3duZWQgcmVmZXJlbmNlIHRvIGFuIGFsd2F5cy1yZWZlcmVuY2UtY291bnRlZCBvYmplY3QuXFxuIC8vL1xcbiAvLy8gVGhlIG9iamVjdCdzIHJlZmVyZW5jZSBjb3VudCBpcyBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BBUmVmYF0gaXNcXG5AQCAtNzAsNyArOTUsNyBAQCBwdWIgdW5zYWZlIHRyYWl0IEFsd2F5c1JlZkNvdW50ZWQge1xcbiAvLy9cXG4gLy8vIFRoZSBwb2ludGVyIHN0b3JlZCBpbiBgcHRyYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgW2BBUmVmYF0gaW5zdGFuY2UuIEluXFxuIC8vLyBwYXJ0aWN1bGFyLCB0aGUgW2BBUmVmYF0gaW5zdGFuY2Ugb3ducyBhbiBpbmNyZW1lbnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0J3MgcmVmZXJlbmNlIGNvdW50Llxcbi1wdWIgc3RydWN0IEFSZWZcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFxcdTAwM2Uge1xcbitwdWIgc3RydWN0IEFSZWZcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2Uge1xcbiAgICAgcHRyOiBOb25OdWxsXFx1MDAzY1RcXHUwMDNlLFxcbiAgICAgX3A6IFBoYW50b21EYXRhXFx1MDAzY1RcXHUwMDNlLFxcbiB9XFxuQEAgLTc5LDE5ICsxMDQsMTkgQEAgcHViIHN0cnVjdCBBUmVmXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIHtcXG4gLy8gaXQgZWZmZWN0aXZlbHkgbWVhbnMgc2hhcmluZyBgXFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSwgaXQgbmVlZHNcXG4gLy8gYFRgIHRvIGJlIGBTZW5kYCBiZWNhdXNlIGFueSB0aHJlYWQgdGhhdCBoYXMgYW4gYEFSZWZcXHUwMDNjVFxcdTAwM2VgIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYVxcbiAvLyBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yIGV4YW1wbGUsIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8gYW5kIGBUYCBpcyBkcm9wcGVkLlxcbi11bnNhZmUgaW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgU3luYyArIFNlbmRcXHUwMDNlIFNlbmQgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4rdW5zYWZlIGltcGxcXHUwMDNjVDogUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXFx1MDAzZSBTZW5kIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbiAvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBgXFx1MDAyNkFSZWZcXHUwMDNjVFxcdTAwM2VgIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIGBTeW5jYFxcbiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFxcdTAwMjZUYCAod2hpY2ggaXMgc2FmZSBiZWNhdXNlIGBUYCBpcyBgU3luY2ApOyBhZGRpdGlvbmFsbHksXFxuIC8vIGl0IG5lZWRzIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGEgYFxcdTAwMjZBUmVmXFx1MDAzY1RcXHUwMDNlYCBtYXkgY2xvbmUgaXQgYW5kIGdldCBhblxcbiAvLyBgQVJlZlxcdTAwM2NUXFx1MDAzZWAgb24gdGhhdCB0aHJlYWQsIHNvIHRoZSB0aHJlYWQgbWF5IHVsdGltYXRlbHkgYWNjZXNzIGBUYCB1c2luZyBhIG11dGFibGUgcmVmZXJlbmNlLCBmb3JcXG4gLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXFxuLXVuc2FmZSBpbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFxcdTAwM2UgU3luYyBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7fVxcbit1bnNhZmUgaW1wbFxcdTAwM2NUOiBSZWZDb3VudGVkICsgU3luYyArIFNlbmRcXHUwMDNlIFN5bmMgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4gXFxuIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLlxcbi1pbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIFVucGluIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2UgVW5waW4gZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4gXFxuLWltcGxcXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFxcdTAwM2UgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2UgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuICAgICAvLy8gQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBbYEFSZWZgXS5cXG4gICAgIC8vL1xcbiAgICAgLy8vIEl0IHRha2VzIG92ZXIgYW4gaW5jcmVtZW50IG9mIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxcbkBAIC0xMjAsMTkgKzE0NSwyMSBAQCBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbFxcdTAwM2NUXFx1MDAzZSkgLVxcdTAwM2UgU2VsZiB7XFxuICAgICAvLy9cXG4gICAgIC8vLyBgYGBcXG4gICAgIC8vLyB1c2UgY29yZTo6cHRyOjpOb25OdWxsO1xcbi0gICAgLy8vIHVzZSBrZXJuZWw6OnN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfTtcXG4rICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XFxuICAgICAvLy9cXG4gICAgIC8vLyBzdHJ1Y3QgRW1wdHkge31cXG4gICAgIC8vL1xcbi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLlxcbi0gICAgLy8vIHVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEVtcHR5IHtcXG4rICAgIC8vLyAvLyBTQUZFVFk6IFRoZSBgUmVmQ291bnRlZGAgaW1wbGVtZW50YXRpb24gZm9yIGBFbXB0eWAgZG9lcyBub3QgY291bnQgcmVmZXJlbmNlcyBhbmQgbmV2ZXJcXG4rICAgIC8vLyAvLyBmcmVlcyB0aGUgdW5kZXJseWluZyBvYmplY3QuIFRodXMgd2UgY2FuIGFjdCBhcyBvd25pbmcgYW4gaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudCBmb3JcXG4rICAgIC8vLyAvLyB0aGUgb2JqZWN0IHRoYXQgd2UgcGFzcyB0byB0aGUgbmV3bHkgY3JlYXRlZCBgQVJlZmAuXFxuKyAgICAvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRW1wdHkge1xcbiAgICAgLy8vICAgICBmbiBpbmNfcmVmKFxcdTAwMjZzZWxmKSB7fVxcbiAgICAgLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZihfb2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7fVxcbiAgICAgLy8vIH1cXG4gICAgIC8vL1xcbiAgICAgLy8vIGxldCBtdXQgZGF0YSA9IEVtcHR5IHt9O1xcbiAgICAgLy8vIGxldCBwdHIgPSBOb25OdWxsOjpcXHUwMDNjRW1wdHlcXHUwMDNlOjpuZXcoXFx1MDAyNm11dCBkYXRhKS51bndyYXAoKTtcXG4tICAgIC8vLyAjIC8vIFNBRkVUWTogVE9ETy5cXG4rICAgIC8vLyAvLyBTQUZFVFk6IFdlIGtlZXAgYGRhdGFgIGFyb3VuZCBsb25nZXIgdGhhbiB0aGUgYEFSZWZgLlxcbiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZlxcdTAwM2NFbXB0eVxcdTAwM2UgPSB1bnNhZmUgeyBBUmVmOjpmcm9tX3JhdyhwdHIpIH07XFxuICAgICAvLy8gbGV0IHJhd19wdHI6IE5vbk51bGxcXHUwMDNjRW1wdHlcXHUwMDNlID0gQVJlZjo6aW50b19yYXcoZGF0YV9yZWYpO1xcbiAgICAgLy8vXFxuQEAgLTE0Myw3ICsxNzAsNyBAQCBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cXHUwMDNlIE5vbk51bGxcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgfVxcbiB9XFxuIFxcbi1pbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcXHUwMDNlIENsb25lIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBSZWZDb3VudGVkXFx1MDAzZSBDbG9uZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuICAgICBmbiBjbG9uZShcXHUwMDI2c2VsZikgLVxcdTAwM2UgU2VsZiB7XFxuICAgICAgICAgc2VsZi5pbmNfcmVmKCk7XFxuICAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IGluY3JlbWVudGVkIHRoZSByZWZjb3VudCBhYm92ZS5cXG5AQCAtMTUxLDcgKzE3OCw3IEBAIGZuIGNsb25lKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBTZWxmIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSBEZXJlZiBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZSB7XFxuK2ltcGxcXHUwMDNjVDogUmVmQ291bnRlZFxcdTAwM2UgRGVyZWYgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgdHlwZSBUYXJnZXQgPSBUO1xcbiBcXG4gICAgIGZuIGRlcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2U2VsZjo6VGFyZ2V0IHtcXG5AQCAtMTY4LDcgKzE5NSwxNCBAQCBmbiBmcm9tKGI6IFxcdTAwMjZUKSAtXFx1MDAzZSBTZWxmIHtcXG4gICAgIH1cXG4gfVxcbiBcXG4taW1wbFxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXFx1MDAzZSBEcm9wIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHtcXG4raW1wbFxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFxcdTAwM2UgRnJvbVxcdTAwM2NPd25lZFxcdTAwM2NUXFx1MDAzZVxcdTAwM2UgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbisgICAgI1tpbmxpbmVdXFxuKyAgICBmbiBmcm9tKGI6IE93bmVkXFx1MDAzY1RcXHUwMDNlKSAtXFx1MDAzZSBTZWxmIHtcXG4rICAgICAgICBUOjppbnRvX3NoYXJlZChiKVxcbisgICAgfVxcbit9XFxuK1xcbitpbXBsXFx1MDAzY1Q6IFJlZkNvdW50ZWRcXHUwMDNlIERyb3AgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge1xcbiAgICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UncmUgYWJvdXQgdG9cXG4gICAgICAgICAvLyBkZWNyZW1lbnQuXFxuQEAgLTE3OCwxOSArMjEyLDE5IEBAIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuIFxcbiBpbXBsXFx1MDAzY1QsIFVcXHUwMDNlIFBhcnRpYWxFcVxcdTAwM2NBUmVmXFx1MDAzY1VcXHUwMDNlXFx1MDAzZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZVxcbiB3aGVyZVxcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCArIFBhcnRpYWxFcVxcdTAwM2NVXFx1MDAzZSxcXG4tICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICBUOiBSZWZDb3VudGVkICsgUGFydGlhbEVxXFx1MDAzY1VcXHUwMDNlLFxcbisgICAgVTogUmVmQ291bnRlZCxcXG4ge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBlcShcXHUwMDI2c2VsZiwgb3RoZXI6IFxcdTAwMjZBUmVmXFx1MDAzY1VcXHUwMDNlKSAtXFx1MDAzZSBib29sIHtcXG4gICAgICAgICBUOjplcShcXHUwMDI2KipzZWxmLCBcXHUwMDI2KipvdGhlcilcXG4gICAgIH1cXG4gfVxcbi1pbXBsXFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgKyBFcVxcdTAwM2UgRXEgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2Uge31cXG4raW1wbFxcdTAwM2NUOiBSZWZDb3VudGVkICsgRXFcXHUwMDNlIEVxIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlIHt9XFxuIFxcbiBpbXBsXFx1MDAzY1QsIFVcXHUwMDNlIFBhcnRpYWxFcVxcdTAwM2NcXHUwMDI2J18gVVxcdTAwM2UgZm9yIEFSZWZcXHUwMDNjVFxcdTAwM2VcXG4gd2hlcmVcXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQgKyBQYXJ0aWFsRXFcXHUwMDNjVVxcdTAwM2UsXFxuKyAgICBUOiBSZWZDb3VudGVkICsgUGFydGlhbEVxXFx1MDAzY1VcXHUwMDNlLFxcbiB7XFxuICAgICAjW2lubGluZV1cXG4gICAgIGZuIGVxKFxcdTAwMjZzZWxmLCBvdGhlcjogXFx1MDAyNlxcdTAwMjZVKSAtXFx1MDAzZSBib29sIHtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdGFzay5ycyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcXG5pbmRleCAzODI3M2Y0ZWVkYjUxMy4uNjI1OTQzMGIwY2EzMTggMTAwNjQ0XFxuLS0tIGEvcnVzdC9rZXJuZWwvdGFzay5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcXG5AQCAtMTAsNyArMTAsMTIgQEBcXG4gICAgIHBpZF9uYW1lc3BhY2U6OlBpZE5hbWVzcGFjZSxcXG4gICAgIHByZWx1ZGU6OiosXFxuICAgICBzeW5jOjphcmVmOjpBUmVmLFxcbi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LFxcbisgICAgdHlwZXM6OntcXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgICAgIE5vdFRocmVhZFNhZmUsXFxuKyAgICAgICAgT3BhcXVlLFxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuKyAgICB9LFxcbiB9O1xcbiB1c2UgY29yZTo6e1xcbiAgICAgb3BzOjpEZXJlZixcXG5AQCAtMzQ3LDcgKzM1Miw3IEBAIHB1YiBmbiBncm91cF9sZWFkZXIoXFx1MDAyNnNlbGYpIC1cXHUwMDNlIFxcdTAwMjZUYXNrIHtcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBUYXNrYCBpcyBhbHdheXMgcmVmY291bnRlZC5cXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIFRhc2sge1xcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBUYXNrIHtcXG4gICAgICNbaW5saW5lXVxcbiAgICAgZm4gaW5jX3JlZihcXHUwMDI2c2VsZikge1xcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cXG5AQCAtMzYxLDYgKzM2NiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFxcdTAwM2NTZWxmXFx1MDAzZSkge1xcbiAgICAgfVxcbiB9XFxuIFxcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXFx1MDAzY1Rhc2tcXHUwMDNlYCBmcm9tIGFcXG4rLy8gYFxcdTAwMjZUYXNrYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7fVxcbitcXG4gaW1wbCBQYXJ0aWFsRXEgZm9yIFRhc2sge1xcbiAgICAgI1tpbmxpbmVdXFxuICAgICBmbiBlcShcXHUwMDI2c2VsZiwgb3RoZXI6IFxcdTAwMjZTZWxmKSAtXFx1MDAzZSBib29sIHtcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdHlwZXMucnMgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xcbmluZGV4IGFjMzE2ZmQ3YjUzOGZlLi42YWE3NjA5NTJjYjYzNSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC90eXBlcy5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3R5cGVzLnJzXFxuQEAgLTE1LDYgKzE1LDE4IEBAXFxuIHB1YiBtb2QgZm9yX2x0O1xcbiBwdWIgdXNlIGZvcl9sdDo6Rm9yTHQ7XFxuIFxcbitwdWIgdXNlIGNyYXRlOjp7XFxuKyAgICBvd25lZDo6e1xcbisgICAgICAgIE93bmFibGUsXFxuKyAgICAgICAgT3duYWJsZVJlZkNvdW50ZWQsXFxuKyAgICAgICAgT3duZWQsIC8vXFxuKyAgICB9LFxcbisgICAgc3luYzo6YXJlZjo6e1xcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cXG4rICAgIH0sIC8vXFxuK307XFxuK1xcbiAvLy8gVXNlZCB0byB0cmFuc2ZlciBvd25lcnNoaXAgdG8gYW5kIGZyb20gZm9yZWlnbiAobm9uLVJ1c3QpIGxhbmd1YWdlcy5cXG4gLy8vXFxuIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3VzYi5ycyBiL3J1c3Qva2VybmVsL3VzYi5yc1xcbmluZGV4IDdhZmYwYzgyZDBhZmMwLi41OTM1MGM2YjBkZjJhZCAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC91c2IucnNcXG4rKysgYi9ydXN0L2tlcm5lbC91c2IucnNcXG5AQCAtMTgsNyArMTgsMTAgQEBcXG4gICAgICAgICB0b19yZXN1bHQsIC8vXFxuICAgICB9LFxcbiAgICAgcHJlbHVkZTo6KixcXG4tICAgIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICBzeW5jOjphcmVmOjp7XFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xcbisgICAgfSxcXG4gICAgIHR5cGVzOjpPcGFxdWUsXFxuICAgICBUaGlzTW9kdWxlLCAvL1xcbiB9O1xcbkBAIC0zOTIsNyArMzk1LDcgQEAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2RGV2aWNlIHtcXG4gfVxcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEludGVyZmFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBpbnZhcmlhbnRzIG9mIGBJbnRlcmZhY2VgIGd1YXJhbnRlZSB0aGF0IGBzZWxmLmFzX3JhdygpYFxcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9pbnRlcmZhY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXFxuQEAgLTQwNiw2ICs0MDksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjSW50ZXJmYWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2SW50ZXJmYWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHt9XFxuK1xcbiAvLyBTQUZFVFk6IEEgYEludGVyZmFjZWAgaXMgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkIGFuZCBjYW4gYmUgcmVsZWFzZWQgZnJvbSBhbnkgdGhyZWFkLlxcbiB1bnNhZmUgaW1wbCBTZW5kIGZvciBJbnRlcmZhY2Uge31cXG4gXFxuQEAgLTQ0Myw3ICs0NTAsNyBAQCBmbiBhc19yYXcoXFx1MDAyNnNlbGYpIC1cXHUwMDNlICptdXQgYmluZGluZ3M6OnVzYl9kZXZpY2Uge1xcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xcbiBcXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcXG4gICAgIGZuIGluY19yZWYoXFx1MDAyNnNlbGYpIHtcXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBpbnZhcmlhbnRzIG9mIGBEZXZpY2VgIGd1YXJhbnRlZSB0aGF0IGBzZWxmLmFzX3JhdygpYFxcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXFxuQEAgLTQ1Nyw2ICs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXFx1MDAzY1NlbGZcXHUwMDNlKSB7XFxuICAgICB9XFxuIH1cXG4gXFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcXHUwMDNjRGV2aWNlXFx1MDAzZWAgZnJvbSBhXFxuKy8vIGBcXHUwMDI2RGV2aWNlYC5cXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XFxuK1xcbiBpbXBsXFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XFx1MDAzZSBBc1JlZlxcdTAwM2NkZXZpY2U6OkRldmljZVxcdTAwM2NDdHhcXHUwMDNlXFx1MDAzZSBmb3IgRGV2aWNlXFx1MDAzY0N0eFxcdTAwM2Uge1xcbiAgICAgZm4gYXNfcmVmKFxcdTAwMjZzZWxmKSAtXFx1MDAzZSBcXHUwMDI2ZGV2aWNlOjpEZXZpY2VcXHUwMDNjQ3R4XFx1MDAzZSB7XFxuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXFxuaW5kZXggN2UyNTNiNmYyOTljZTMuLjc3NjczYjhlYTQ1ZmIxIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xcbisrKyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xcbkBAIC0xOTIsNyArMTkyLDcgQEBcXG4gICAgIHN5bmM6OntcXG4gICAgICAgICBhcmVmOjp7XFxuICAgICAgICAgICAgIEFSZWYsXFxuLSAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXFxuKyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXFxuICAgICAgICAgfSxcXG4gICAgICAgICBBcmMsXFxuICAgICAgICAgTG9ja0NsYXNzS2V5LCAvL1xcbkBAIC05NTQsNyArOTU0LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFxcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXFx1MDAzY0lEXFx1MDAzZSBmb3IgUGluXFx1MDAzY0tCb3hcXHUwMDNjVFxcdTAwM2VcXHUwMDNlXFxuIC8vICAgICBpbXBsZW1lbnRhdGlvbiBvZiBgV29ya0l0ZW1Qb2ludGVyYCBmb3IgYEFSZWZcXHUwMDNjVFxcdTAwM2VgLlxcbiB1bnNhZmUgaW1wbFxcdTAwM2NULCBjb25zdCBJRDogdTY0XFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcXHUwMDNjSURcXHUwMDNlIGZvciBBUmVmXFx1MDAzY1RcXHUwMDNlXFxuIHdoZXJlXFxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxcbisgICAgVDogUmVmQ291bnRlZCxcXG4gICAgIFQ6IFdvcmtJdGVtXFx1MDAzY0lELCBQb2ludGVyID0gU2VsZlxcdTAwM2UsXFxuICAgICBUOiBIYXNXb3JrXFx1MDAzY1QsIElEXFx1MDAzZSxcXG4ge1xcbkBAIC05ODcsNyArOTg3LDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFxcdTAwM2UgV29ya0l0ZW1Qb2ludGVyXFx1MDAzY0lEXFx1MDAzZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZVxcbiAvLyByZXF1aXJlbWVudHMgb2YgYFdvcmtJdGVtUG9pbnRlcmAuXFxuIHVuc2FmZSBpbXBsXFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcXHUwMDNlIFJhd1dvcmtJdGVtXFx1MDAzY0lEXFx1MDAzZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZVxcbiB3aGVyZVxcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCxcXG4rICAgIFQ6IFJlZkNvdW50ZWQsXFxuICAgICBUOiBXb3JrSXRlbVxcdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcXHUwMDNlLFxcbiAgICAgVDogSGFzV29ya1xcdTAwM2NULCBJRFxcdTAwM2UsXFxuIHtcXG5AQCAtMTAyMCw3ICsxMDIwLDcgQEAgdW5zYWZlIGltcGxcXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFxcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXFx1MDAzY0lEXFx1MDAzZSBmb3IgQVJlZlxcdTAwM2NUXFx1MDAzZVxcbiB3aGVyZVxcbiAgICAgVDogV29ya0l0ZW1cXHUwMDNjSUQsIFBvaW50ZXIgPSBTZWxmXFx1MDAzZSxcXG4gICAgIFQ6IEhhc0RlbGF5ZWRXb3JrXFx1MDAzY1QsIElEXFx1MDAzZSxcXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXFxuKyAgICBUOiBSZWZDb3VudGVkLFxcbiB7XFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjA2OjA0LjYxNTYxNjUxNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTIzODg0NTAyOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgYWRhcHRzIGV4aXN0aW5nIFJ1c3QgY29kZSAobGlrZSBgUGFnZWAgYW5kIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIpIHRvIHVzZSB0aGVzZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IGRyaXZlcnMsIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDY2NDMwYTcxMDJlZjc0ZTlkNGIyZWQ0MjQ3ZDhmZjE1ZjVlYWY2ZTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMjowNjowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5ycyBiL2RyaXZlcnMvYW5kcm9pZC9iaW5kZXIvcGFnZV9yYW5nZS5yc1xuaW5kZXggZTU0YTkwZTYyNDAyYTQuLjc5NDFlYjg1YjRlZjQzIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzXG4rKysgYi9kcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNcbkBAIC0zMyw3ICszMyw3IEBAXG4gICAgIHN5bmM6OnthcmVmOjpBUmVmLCBNdXRleCwgU3BpbkxvY2t9LFxuICAgICB0YXNrOjpQaWQsXG4gICAgIHRyYW5zbXV0ZTo6RnJvbUJ5dGVzLFxuLSAgICB0eXBlczo6T3BhcXVlLFxuKyAgICB0eXBlczo6e09wYXF1ZSwgT3duZWR9LFxuICAgICB1YWNjZXNzOjpVc2VyU2xpY2VSZWFkZXIsXG4gfTtcbiBcbkBAIC0xOTgsNyArMTk4LDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgSW5uZXIge31cbiAjW3JlcHIoQyldXG4gc3RydWN0IFBhZ2VJbmZvIHtcbiAgICAgbHJ1OiBiaW5kaW5nczo6bGlzdF9oZWFkLFxuLSAgICBwYWdlOiBPcHRpb25cdTAwM2NQYWdlXHUwMDNlLFxuKyAgICBwYWdlOiBPcHRpb25cdTAwM2NPd25lZFx1MDAzY1BhZ2VcdTAwM2VcdTAwM2UsXG4gICAgIHJhbmdlOiAqY29uc3QgU2hyaW5rYWJsZVBhZ2VSYW5nZSxcbiB9XG4gXG5AQCAtMjA2LDcgKzIwNiw3IEBAIGltcGwgUGFnZUluZm8ge1xuICAgICAvLy8gIyBTYWZldHlcbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvaywgYW5kIHRoYXQgdGhlIHBhZ2UgaXMgbm90IGN1cnJlbnRseSBzZXQuXG4tICAgIHVuc2FmZSBmbiBzZXRfcGFnZShtZTogKm11dCBQYWdlSW5mbywgcGFnZTogUGFnZSkge1xuKyAgICB1bnNhZmUgZm4gc2V0X3BhZ2UobWU6ICptdXQgUGFnZUluZm8sIHBhZ2U6IE93bmVkXHUwMDNjUGFnZVx1MDAzZSkge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGlzIHBvaW50ZXIgb2Zmc2V0IGlzIGluIGJvdW5kcy5cbiAgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBcdTAwMjZyYXcgbXV0ICgqbWUpLnBhZ2UgfTtcbiBcbkBAIC0yMjksMTMgKzIyOSwxMyBAQCB1bnNhZmUgZm4gZ2V0X3BhZ2VcdTAwM2MnYVx1MDAzZShtZTogKmNvbnN0IFBhZ2VJbmZvKSAtXHUwMDNlIE9wdGlvblx1MDAzY1x1MDAyNidhIFBhZ2VcdTAwM2Uge1xuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBjb25zdCAoKm1lKS5wYWdlIH07XG4gXG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIGZvciByZWFkaW5nLlxuLSAgICAgICAgdW5zYWZlIHsgKCpwdHIpLmFzX3JlZigpIH1cbisgICAgICAgIHVuc2FmZSB7ICgqcHRyKS5hc19kZXJlZigpIH1cbiAgICAgfVxuIFxuICAgICAvLy8gIyBTYWZldHlcbiAgICAgLy8vXG4gICAgIC8vLyBUaGUgY2FsbGVyIGVuc3VyZXMgdGhhdCB3cml0aW5nIHRvIGBtZS5wYWdlYCBpcyBvayBmb3IgdGhlIGR1cmF0aW9uIG9mICdhLlxuLSAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtXHUwMDNlIE9wdGlvblx1MDAzY1BhZ2VcdTAwM2Uge1xuKyAgICB1bnNhZmUgZm4gdGFrZV9wYWdlKG1lOiAqbXV0IFBhZ2VJbmZvKSAtXHUwMDNlIE9wdGlvblx1MDAzY093bmVkXHUwMDNjUGFnZVx1MDAzZVx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoaXMgcG9pbnRlciBvZmZzZXQgaXMgaW4gYm91bmRzLlxuICAgICAgICAgbGV0IHB0ciA9IHVuc2FmZSB7IFx1MDAyNnJhdyBtdXQgKCptZSkucGFnZSB9O1xuIFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5ycyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci5yc1xuaW5kZXggY2Q0MjAzZjI3YWVkMDYuLmM3YjliMDY5Y2Y3NWRkIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IucnNcbkBAIC0xNjksNyArMTY5LDcgQEAgdW5zYWZlIGZuIHJlYWxsb2MoXG4gfVxuIFxuIGltcGwgVm1hbGxvYyB7XG4tICAgIC8vLyBDb252ZXJ0IGEgcG9pbnRlciB0byBhIFtgVm1hbGxvY2BdIGFsbG9jYXRpb24gdG8gYSBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdLlxuKyAgICAvLy8gQ29udmVydCBhIHBvaW50ZXIgdG8gYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHRvIGEgW2BQYWdlYF0ocGFnZTo6UGFnZSkgcmVmZXJlbmNlLlxuICAgICAvLy9cbiAgICAgLy8vICMgRXhhbXBsZXNcbiAgICAgLy8vXG5AQCAtMjAyLDIwICsyMDIsMTcgQEAgaW1wbCBWbWFsbG9jIHtcbiAgICAgLy8vXG4gICAgIC8vLyAtIGBwdHJgIG11c3QgYmUgYSB2YWxpZCBwb2ludGVyIHRvIGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbiAgICAgLy8vIC0gYHB0cmAgbXVzdCByZW1haW4gdmFsaWQgZm9yIHRoZSBlbnRpcmUgZHVyYXRpb24gb2YgYCdhYC5cbi0gICAgcHViIHVuc2FmZSBmbiB0b19wYWdlXHUwMDNjJ2FcdTAwM2UocHRyOiBOb25OdWxsXHUwMDNjdThcdTAwM2UpIC1cdTAwM2UgcGFnZTo6Qm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2Uge1xuKyAgICBwdWIgdW5zYWZlIGZuIHRvX3BhZ2VcdTAwM2MnYVx1MDAzZShwdHI6IE5vbk51bGxcdTAwM2N1OFx1MDAzZSkgLVx1MDAzZSBcdTAwMjYnYSBwYWdlOjpQYWdlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4gICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IGJpbmRpbmdzOjp2bWFsbG9jX3RvX3BhZ2UocHRyLmFzX3B0cigpLmNhc3QoKSkgfTtcbiBcbi0gICAgICAgIC8vIFNBRkVUWTogYHZtYWxsb2NfdG9fcGFnZWAgcmV0dXJucyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgc3RydWN0IHBhZ2VgIGZvciBhIHZhbGlkIHBvaW50ZXJcbi0gICAgICAgIC8vIHRvIGBWbWFsbG9jYCBtZW1vcnkuXG4tICAgICAgICBsZXQgcGFnZSA9IHVuc2FmZSB7IE5vbk51bGw6Om5ld191bmNoZWNrZWQocGFnZSkgfTtcbi1cbiAgICAgICAgIC8vIFNBRkVUWTpcbi0gICAgICAgIC8vIC0gYHBhZ2VgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAsIGdpdmVuIHRoYXQgYnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2Zcbi0gICAgICAgIC8vICAgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyBhIHZhbGlkIHBvaW50ZXIgdG8gYSBgVm1hbGxvY2AgYWxsb2NhdGlvbi5cbi0gICAgICAgIC8vIC0gQnkgdGhlIHNhZmV0eSByZXF1aXJlbWVudHMgb2YgdGhpcyBmdW5jdGlvbiBgcHRyYCBpcyB2YWxpZCBmb3IgdGhlIGVudGlyZSBsaWZldGltZSBvZlxuLSAgICAgICAgLy8gICBgJ2FgLlxuLSAgICAgICAgdW5zYWZlIHsgcGFnZTo6Qm9ycm93ZWRQYWdlOjpmcm9tX3JhdyhwYWdlKSB9XG4rICAgICAgICAvLyAtIGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCwgbm9uLW51bGwgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgZm9yIGEgdmFsaWRcbisgICAgICAgIC8vICAgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LCBnaXZlbiB0aGF0IGJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb25cbisgICAgICAgIC8vICAgYHB0cmAgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYFZtYWxsb2NgIGFsbG9jYXRpb24uXG4rICAgICAgICAvLyAtIEJ5IHRoZSBzYWZldHkgcmVxdWlyZW1lbnRzIG9mIHRoaXMgZnVuY3Rpb24gYHB0cmAsIGFuZCBoZW5jZSB0aGUgYHN0cnVjdCBwYWdlYCwgaXNcbisgICAgICAgIC8vICAgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgb2YgYCdhYC5cbisgICAgICAgIHVuc2FmZSB7IFx1MDAyNipwYWdlLmNhc3QoKSB9XG4gICAgIH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnMgYi9ydXN0L2tlcm5lbC9hbGxvYy9hbGxvY2F0b3IvaXRlci5yc1xuaW5kZXggMDJmZGEzZWE1Y2FlNjYuLjhkY2MxNmVkODk4OTMxIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2MvYWxsb2NhdG9yL2l0ZXIucnNcbisrKyBiL3J1c3Qva2VybmVsL2FsbG9jL2FsbG9jYXRvci9pdGVyLnJzXG5AQCAtOSw3ICs5LDcgQEBcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4gXG4tLy8vIEFuIFtgSXRlcmF0b3JgXSBvZiBbYHBhZ2U6OkJvcnJvd2VkUGFnZWBdIGl0ZW1zIG93bmVkIGJ5IGEgW2BWbWFsbG9jYF0gYWxsb2NhdGlvbi5cbisvLy8gQW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdKHBhZ2U6OlBhZ2UpIHJlZmVyZW5jZXMgb3duZWQgYnkgYSBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uLlxuIC8vL1xuIC8vLyAjIEd1YXJhbnRlZXNcbiAvLy9cbkBAIC0yOCwxMSArMjgsMTEgQEAgcHViIHN0cnVjdCBWbWFsbG9jUGFnZUl0ZXJcdTAwM2MnYVx1MDAzZSB7XG4gICAgIHNpemU6IHVzaXplLFxuICAgICAvLy8gVGhlIGN1cnJlbnQgcGFnZSBpbmRleCBvZiB0aGUgW2BJdGVyYXRvcmBdLlxuICAgICBpbmRleDogdXNpemUsXG4tICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY3BhZ2U6OkJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlXHUwMDNlLFxuKyAgICBfcDogUGhhbnRvbURhdGFcdTAwM2NcdTAwMjYnYSBwYWdlOjpQYWdlXHUwMDNlLFxuIH1cbiBcbiBpbXBsXHUwMDNjJ2FcdTAwM2UgSXRlcmF0b3IgZm9yIFZtYWxsb2NQYWdlSXRlclx1MDAzYydhXHUwMDNlIHtcbi0gICAgdHlwZSBJdGVtID0gcGFnZTo6Qm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2U7XG4rICAgIHR5cGUgSXRlbSA9IFx1MDAyNidhIHBhZ2U6OlBhZ2U7XG4gXG4gICAgIGZuIG5leHQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgT3B0aW9uXHUwMDNjU2VsZjo6SXRlbVx1MDAzZSB7XG4gICAgICAgICBsZXQgb2Zmc2V0ID0gc2VsZi5pbmRleC5jaGVja2VkX211bChwYWdlOjpQQUdFX1NJWkUpPztcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9hbGxvYy9rYm94LnJzIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuaW5kZXggMzVkMWUwMTU4NDhkZGEuLmQ1MzRlOGFkY2Y3YjMzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYWxsb2Mva2JveC5yc1xuQEAgLTIxMSw2ICsyMTEsMTUgQEAgcHViIGZuIGxlYWtcdTAwM2MnYVx1MDAzZShiOiBTZWxmKSAtXHUwMDNlIFx1MDAyNidhIG11dCBUIHtcbiAgICAgICAgIC8vIHdoaWNoIHBvaW50cyB0byBhbiBpbml0aWFsaXplZCBpbnN0YW5jZSBvZiBgVGAuXG4gICAgICAgICB1bnNhZmUgeyBcdTAwMjZtdXQgKkJveDo6aW50b19yYXcoYikgfVxuICAgICB9XG4rXG4rICAgIC8vLyBDb25zdW1lcyB0aGUgYEJveFx1MDAzY1QsQVx1MDAzZWAgYW5kIHJldHVybnMgYSBgTm9uTnVsbFx1MDAzY1RcdTAwM2VgLlxuKyAgICAvLy9cbisgICAgLy8vIExpa2UgW2BTZWxmOjppbnRvX3Jhd2BdLCBidXQgcmV0dXJucyBhIGBOb25OdWxsYC5cbisgICAgI1tpbmxpbmVdXG4rICAgIHB1YiBmbiBpbnRvX25vbl9udWxsKGI6IFNlbGYpIC1cdTAwM2UgTm9uTnVsbFx1MDAzY1RcdTAwM2Uge1xuKyAgICAgICAgLy8gU0FGRVRZOiBgS0JveDo6aW50b19yYXdgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyLlxuKyAgICAgICAgdW5zYWZlIHsgTm9uTnVsbDo6bmV3X3VuY2hlY2tlZChTZWxmOjppbnRvX3JhdyhiKSkgfVxuKyAgICB9XG4gfVxuIFxuIGltcGxcdTAwM2NULCBBXHUwMDNlIEJveFx1MDAzY01heWJlVW5pbml0XHUwMDNjVFx1MDAzZSwgQVx1MDAzZVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5ycyBiL3J1c3Qva2VybmVsL2F1eGlsaWFyeS5yc1xuaW5kZXggYzQyOTI4ZDVhMjM5M2YuLjg1NDUyNTI4OWM4YjQzIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYXV4aWxpYXJ5LnJzXG4rKysgYi9ydXN0L2tlcm5lbC9hdXhpbGlhcnkucnNcbkBAIC0xOSw2ICsxOSwxMCBAQFxuICAgICAgICAgdG9fcmVzdWx0LCAvL1xuICAgICB9LFxuICAgICBwcmVsdWRlOjoqLFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6OntcbiAgICAgICAgIEZvckx0LFxuICAgICAgICAgRm9yZWlnbk93bmFibGUsXG5AQCAtMzQ0LDcgKzM0OCw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgZGV2aWNlOjpBc0J1c0RldmljZVx1MDAzY0N0eFx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlXG4ga2VybmVsOjppbXBsX2RldmljZV9jb250ZXh0X2ludG9fYXJlZiEoRGV2aWNlKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgRGV2aWNlYCBhcmUgYWx3YXlzIHJlZmVyZW5jZS1jb3VudGVkLlxuLXVuc2FmZSBpbXBsIGNyYXRlOjpzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC0zNjMsNiArMzY3LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2RGV2aWNlYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge31cbitcbiBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgQXNSZWZcdTAwM2NkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZVx1MDAzZSBmb3IgRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnQgb2YgYFNlbGZgLCBgc2VsZi5hc19yYXcoKWAgaXMgYSBwb2ludGVyIHRvIGEgdmFsaWRcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9yZXF1ZXN0LnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuaW5kZXggY2UzZTMwYzgxY2I1ZWQuLjhkYWQxNWFlNGNmYjBhIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvcmVxdWVzdC5yc1xuQEAgLTksNyArOSwxMSBAQFxuICAgICBibG9jazo6bXE6Ok9wZXJhdGlvbnMsXG4gICAgIGVycm9yOjpSZXN1bHQsXG4gICAgIHN5bmM6Ontcbi0gICAgICAgIGFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbisgICAgICAgIGFyZWY6OntcbisgICAgICAgICAgICBBUmVmLFxuKyAgICAgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgICAgIH0sXG4gICAgICAgICBhdG9taWM6OlJlbGF4ZWQsXG4gICAgICAgICBSZWZjb3VudCxcbiAgICAgfSxcbkBAIC0yMjksMTEgKzIzMywxMCBAQCB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU2VuZCBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiAvLyBtdXRhdGUgYHNlbGZgIGFyZSBpbnRlcm5hbGx5IHN5bmNocm9uaXplZGBcbiB1bnNhZmUgaW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgU3luYyBmb3IgUmVxdWVzdFx1MDAzY1RcdTAwM2Uge31cbiBcbi0vLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXNcbi0vLyBpbXBsZW1lbnRhdGlvbiBvZiBgQWx3YXlzUmVmQ291bnRlZGAgZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50XG4tLy8ga2VlcHMgdGhlIG9iamVjdCBhbGl2ZSBpbiBtZW1vcnkgYXQgbGVhc3QgdW50aWwgYSBtYXRjaGluZyByZWZlcmVuY2UgY291bnRcbi0vLyBkZWNyZW1lbnQgaXMgZXhlY3V0ZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFJlcXVlc3RcdTAwM2NUXHUwMDNlIHtcbisvLyBTQUZFVFk6IEFsbCBpbnN0YW5jZXMgb2YgYFJlcXVlc3RcdTAwM2NUXHUwMDNlYCBhcmUgcmVmZXJlbmNlIGNvdW50ZWQuIFRoaXMgaW1wbGVtZW50YXRpb24gb2YgYFJlZkNvdW50ZWRgXG4rLy8gZW5zdXJlIHRoYXQgaW5jcmVtZW50cyB0byB0aGUgcmVmIGNvdW50IGtlZXBzIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5IGF0IGxlYXN0IHVudGlsIGFcbisvLyBtYXRjaGluZyByZWZlcmVuY2UgY291bnQgZGVjcmVtZW50IGlzIGV4ZWN1dGVkLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgc2VsZi53cmFwcGVyX3JlZigpLnJlZmNvdW50KCkuaW5jKCk7XG4gICAgIH1cbkBAIC0yNTUsMyArMjU4LDcgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBjb3JlOjpwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgICAgICB9XG4gICAgIH1cbiB9XG4rXG4rLy8gU0FGRVRZOiBXZSBjdXJyZW50bHkgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NSZXF1ZXN0XHUwMDNlYFxuKy8vIGZyb20gYSBgXHUwMDI2UmVxdWVzdGAgKGJ1dCB0aGlzIHdpbGwgY2hhbmdlIGluIHRoZSBmdXR1cmUpLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBSZXF1ZXN0XHUwMDNjVFx1MDAzZSB7fVxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2NyZWQucnMgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5pbmRleCBmZmExNTZiOWRmMzc3ZS4uYjE3NzM2YTlhZGNkNTggMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9jcmVkLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9jcmVkLnJzXG5AQCAtOCw3ICs4LDE1IEBAXG4gLy8hXG4gLy8hIFJlZmVyZW5jZTogXHUwMDNjaHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3Qvc2VjdXJpdHkvY3JlZGVudGlhbHMuaHRtbFx1MDAzZVxuIFxuLXVzZSBjcmF0ZTo6e2JpbmRpbmdzLCBzeW5jOjphcmVmOjpBbHdheXNSZWZDb3VudGVkLCB0YXNrOjpLdWlkLCB0eXBlczo6T3BhcXVlfTtcbit1c2UgY3JhdGU6OntcbisgICAgYmluZGluZ3MsXG4rICAgIHN5bmM6OmFyZWY6OlJlZkNvdW50ZWQsXG4rICAgIHRhc2s6Okt1aWQsXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgT3BhcXVlLCAvL1xuKyAgICB9LCAvL1xuK307XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwncyBgc3RydWN0IGNyZWRgLlxuIC8vL1xuQEAgLTc2LDcgKzg0LDcgQEAgcHViIGZuIGV1aWQoXHUwMDI2c2VsZikgLVx1MDAzZSBLdWlkIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBDcmVkZW50aWFsYCBpcyBhbHdheXMgcmVmLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgQ3JlZGVudGlhbCB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC05MCwzICs5OCw3IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogY29yZTo6cHRyOjpOb25OdWxsXHUwMDNjQ3JlZGVudGlhbFx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9jcmVkKG9iai5jYXN0KCkuYXNfcHRyKCkpIH07XG4gICAgIH1cbiB9XG4rXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0NyZWRlbnRpYWxcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZDcmVkZW50aWFsYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBDcmVkZW50aWFsIHt9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZGV2aWNlLnJzXG5pbmRleCA2NDVhZmM0OWEyN2Q2NC4uMmU5MGY2YTA2ZmQwNTkgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9kZXZpY2UucnNcbisrKyBiL3J1c3Qva2VybmVsL2RldmljZS5yc1xuQEAgLTgsOCArOCwxMiBAQFxuICAgICBiaW5kaW5ncyxcbiAgICAgZm10LFxuICAgICBwcmVsdWRlOjoqLFxuLSAgICBzeW5jOjphcmVmOjpBUmVmLFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBUmVmLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiAgICAgdHlwZXM6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4gICAgICAgICBGb3JlaWduT3duYWJsZSxcbiAgICAgICAgIE9wYXF1ZSwgLy9cbiAgICAgfSwgLy9cbkBAIC00NDgsNyArNDUyLDcgQEAgcHViIGZuIG5hbWUoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZDU3RyIHtcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShEZXZpY2UpO1xuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JhdygpKSB9O1xuQEAgLTQ2MCw2ICs0NjQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkRldmljZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4rXG4gLy8gU0FGRVRZOiBBcyBieSB0aGUgdHlwZSBpbnZhcmlhbnQgYERldmljZWAgY2FuIGJlIHNlbnQgdG8gYW55IHRocmVhZC5cbiB1bnNhZmUgaW1wbCBTZW5kIGZvciBEZXZpY2Uge31cbiBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnMgYi9ydXN0L2tlcm5lbC9kZXZpY2UvcHJvcGVydHkucnNcbmluZGV4IDVhZWFkODM1ZmJiYzAyLi5jZWU3ZTI1MDEzNjg5OSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2RldmljZS9wcm9wZXJ0eS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZGV2aWNlL3Byb3BlcnR5LnJzXG5AQCAtMTQsNyArMTQsMTAgQEBcbiAgICAgZm10LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OntDU3RyLCBDU3RyaW5nfSxcbi0gICAgc3luYzo6YXJlZjo6QVJlZixcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gfTtcbiBcbkBAIC0zNjAsNyArMzYzLDcgQEAgZm4gZm10KFx1MDAyNnNlbGYsIGY6IFx1MDAyNm11dCBmbXQ6OkZvcm1hdHRlclx1MDAzYydfXHUwMDNlKSAtXHUwMDNlIGZtdDo6UmVzdWx0IHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEZ3Tm9kZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbit1bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6UmVmQ291bnRlZCBmb3IgRndOb2RlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGVcbiAgICAgICAgIC8vIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuQEAgLTM3NCw2ICszNzcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBwdHI6Ok5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0Z3Tm9kZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkZ3Tm9kZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRndOb2RlIHt9XG4rXG4gZW51bSBOb2RlXHUwMDNjJ2FcdTAwM2Uge1xuICAgICBCb3Jyb3dlZChcdTAwMjYnYSBGd05vZGUpLFxuICAgICBPd25lZChBUmVmXHUwMDNjRndOb2RlXHUwMDNlKSxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9kcm0vZGV2aWNlLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuaW5kZXggNDAzZmMzNTM1M2M3NDAuLjM2ODc0MmEyNTgzNzY4IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZHJtL2RldmljZS5yc1xuQEAgLTE1LDcgKzE1LDggQEBcbiAgICAgcHJlbHVkZTo6KixcbiAgICAgc3luYzo6YXJlZjo6e1xuICAgICAgICAgQVJlZixcbi0gICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsIC8vXG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbiAgICAgfSxcbiAgICAgdHlwZXM6Ok9wYXF1ZSxcbiAgICAgd29ya3F1ZXVlOjp7XG5AQCAtMjI3LDcgKzIyOCw3IEBAIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbiBcbiAvLyBTQUZFVFk6IERSTSBkZXZpY2Ugb2JqZWN0cyBhcmUgYWx3YXlzIHJlZmVyZW5jZSBjb3VudGVkIGFuZCB0aGUgZ2V0L3B1dCBmdW5jdGlvbnNcbiAvLyBzYXRpc2Z5IHRoZSByZXF1aXJlbWVudHMuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBkcm06OkRyaXZlclx1MDAzZSBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2VcdTAwM2NUXHUwMDNlIHtcbit1bnNhZmUgaW1wbFx1MDAzY1Q6IGRybTo6RHJpdmVyXHUwMDNlIFJlZkNvdW50ZWQgZm9yIERldmljZVx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkcm1fZGV2X2dldChzZWxmLmFzX3JhdygpKSB9O1xuQEAgLTI0Miw2ICsyNDMsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZEZXZpY2VgLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogZHJtOjpEcml2ZXJcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlXHUwMDNjVFx1MDAzZSB7fVxuK1xuIGltcGxcdTAwM2NUOiBkcm06OkRyaXZlclx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NUXHUwMDNlIHtcbiAgICAgZm4gYXNfcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2ZGV2aWNlOjpEZXZpY2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBgYmluZGluZ3M6OmRybV9kZXZpY2U6OmRldmAgaXMgdmFsaWQgYXMgbG9uZyBhcyB0aGUgRFJNIGRldmljZSBpdHNlbGYgaXMgdmFsaWQsXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnMgYi9ydXN0L2tlcm5lbC9kcm0vZ2VtL21vZC5yc1xuaW5kZXggMDFiNWJkNDdhMzMzMmQuLjMwZDM3MTg1NzhmZThjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZHJtL2dlbS9tb2QucnNcbisrKyBiL3J1c3Qva2VybmVsL2RybS9nZW0vbW9kLnJzXG5AQCAtMTcsNyArMTcsNyBAQFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzeW5jOjphcmVmOjp7XG4gICAgICAgICBBUmVmLFxuLSAgICAgICAgQWx3YXlzUmVmQ291bnRlZCwgLy9cbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gfTtcbkBAIC0yOSw3ICsyOSw3IEBAXG4gI1tjZmcoQ09ORklHX1JVU1RfRFJNX0dFTV9TSE1FTV9IRUxQRVIpXVxuIHB1YiBtb2Qgc2htZW07XG4gXG4tLy8vIEEgbWFjcm8gZm9yIGltcGxlbWVudGluZyBbYEFsd2F5c1JlZkNvdW50ZWRgXSBmb3IgYW55IEdFTSBvYmplY3QgdHlwZS5cbisvLy8gQSBtYWNybyBmb3IgaW1wbGVtZW50aW5nIFtgUmVmQ291bnRlZGBdIGZvciBhbnkgR0VNIG9iamVjdCB0eXBlLlxuIC8vL1xuIC8vLyBTaW5jZSBhbGwgR0VNIG9iamVjdHMgdXNlIHRoZSBzYW1lIHJlZmNvdW50aW5nIHNjaGVtZS5cbiAjW21hY3JvX2V4cG9ydF1cbkBAIC00Miw3ICs0Miw3IEBAIGltcGwgJCggXHUwMDNjJCggJHRwYXJhbV9pZDppZGVudCApLCtcdTAwM2UgKT8gZm9yICR0eXBlOnR5XG4gICAgICAgICApP1xuICAgICApID1cdTAwM2Uge1xuICAgICAgICAgLy8gU0FGRVRZOiBBbGwgR0VNIG9iamVjdHMgYXJlIHJlZmNvdW50ZWQuXG4tICAgICAgICB1bnNhZmUgaW1wbCAkKCBcdTAwM2MkKCAkdHBhcmFtX2lkICksK1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4rICAgICAgICB1bnNhZmUgaW1wbCAkKCBcdTAwM2MkKCAkdHBhcmFtX2lkICksK1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OlJlZkNvdW50ZWQgZm9yICR0eXBlXG4gICAgICAgICB3aGVyZVxuICAgICAgICAgICAgIFNlbGY6IEludG9HRU1PYmplY3QsXG4gICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCsgKT9cbkBAIC02MSw2ICs2MSwxNCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IGNvcmU6OnB0cjo6Tm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgICAgICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRybV9nZW1fb2JqZWN0X3B1dChvYmopIH07XG4gICAgICAgICAgICAgfVxuICAgICAgICAgfVxuK1xuKyAgICAgICAgLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzYyR0eXBlXHUwMDNlYCBmcm9tIGFcbisgICAgICAgIC8vIGBcdTAwMjYkdHlwZWAuXG4rICAgICAgICB1bnNhZmUgaW1wbCAkKCBcdTAwM2MkKCAkdHBhcmFtX2lkICksK1x1MDAzZSApPyAkY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yICR0eXBlXG4rICAgICAgICB3aGVyZVxuKyAgICAgICAgICAgIFNlbGY6IEludG9HRU1PYmplY3QsXG4rICAgICAgICAgICAgJCggJCggJGJpbmRfcGFyYW0gOiAkYmluZF90cmFpdCApLCsgKT9cbisgICAgICAgIHt9XG4gICAgIH07XG4gfVxuICNbY2ZnX2F0dHIobm90KENPTkZJR19SVVNUX0RSTV9HRU1fU0hNRU1fSEVMUEVSKSwgYWxsb3codW51c2VkKSldXG5AQCAtOTgsNyArMTA2LDcgQEAgZm4gY2xvc2UoX29iajogXHUwMDI2XHUwMDNjU2VsZjo6RHJpdmVyIGFzIGRybTo6RHJpdmVyXHUwMDNlOjpPYmplY3QsIF9maWxlOiBcdTAwMjZEcml2ZXJGaWxlXHUwMDNjU2VsZlx1MDAzZSlcbiB9XG4gXG4gLy8vIFRyYWl0IHRoYXQgcmVwcmVzZW50cyBhIEdFTSBvYmplY3Qgc3VidHlwZVxuLXB1YiB0cmFpdCBJbnRvR0VNT2JqZWN0OiBTaXplZCArIHN1cGVyOjpwcml2YXRlOjpTZWFsZWQgKyBBbHdheXNSZWZDb3VudGVkIHtcbitwdWIgdHJhaXQgSW50b0dFTU9iamVjdDogU2l6ZWQgKyBzdXBlcjo6cHJpdmF0ZTo6U2VhbGVkICsgUmVmQ291bnRlZCB7XG4gICAgIC8vLyBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSByYXcgYGRybV9nZW1fb2JqZWN0YCBzdHJ1Y3R1cmUsIHdoaWNoIG11c3QgYmUgdmFsaWQgYXMgbG9uZyBhc1xuICAgICAvLy8gdGhpcyBvd25pbmcgb2JqZWN0IGlzIHZhbGlkLlxuICAgICBmbiBhc19yYXcoXHUwMDI2c2VsZikgLVx1MDAzZSAqbXV0IGJpbmRpbmdzOjpkcm1fZ2VtX29iamVjdDtcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9mcy9maWxlLnJzIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuaW5kZXggMjNlZTY4OWJkMjQwMDUuLjcyMGU1NzQxODM1OGRjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuKysrIGIvcnVzdC9rZXJuZWwvZnMvZmlsZS5yc1xuQEAgLTEyLDggKzEyLDE1IEBAXG4gICAgIGNyZWQ6OkNyZWRlbnRpYWwsXG4gICAgIGVycm9yOjp7Y29kZTo6KiwgdG9fcmVzdWx0LCBFcnJvciwgUmVzdWx0fSxcbiAgICAgZm10LFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgTm90VGhyZWFkU2FmZSxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbiB9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG5AQCAtMTk3LDcgKzIwNCw3IEBAIHVuc2FmZSBpbXBsIFN5bmMgZm9yIEZpbGUge31cbiBcbiAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgYEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjRmlsZVx1MDAzZWAgb3duIGEgbm9ybWFsIHJlZmNvdW50LlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjEyLDYgKzIxOSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0ZpbGVcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRmlsZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkZpbGVgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEZpbGUge31cbitcbiAvLy8gV3JhcHMgdGhlIGtlcm5lbCdzIGBzdHJ1Y3QgZmlsZWAuIE5vdCB0aHJlYWQgc2FmZS5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBmaWxlIHRoYXQgaXMgbm90IGtub3duIHRvIGJlIHNhZmUgdG8gdHJhbnNmZXIgYWNyb3NzIHRocmVhZCBib3VuZGFyaWVzLlxuQEAgLTIzMyw3ICsyNDQsNyBAQCBwdWIgc3RydWN0IExvY2FsRmlsZSB7XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBMb2NhbEZpbGVgIGlzIGFsd2F5cyByZWYtY291bnRlZC4gVGhpcyBpbXBsZW1lbnRhdGlvblxuIC8vIG1ha2VzIGBBUmVmXHUwMDNjTG9jYWxGaWxlXHUwMDNlYCBvd24gYSBub3JtYWwgcmVmY291bnQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgTG9jYWxGaWxlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBMb2NhbEZpbGUge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMjQ5LDYgKzI2MCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY0xvY2FsRmlsZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NMb2NhbEZpbGVcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZMb2NhbEZpbGVgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIExvY2FsRmlsZSB7fVxuK1xuIGltcGwgTG9jYWxGaWxlIHtcbiAgICAgLy8vIENvbnN0cnVjdHMgYSBuZXcgYHN0cnVjdCBmaWxlYCB3cmFwcGVyIGZyb20gYSBmaWxlIGRlc2NyaXB0b3IuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2kyYy5ycyBiL3J1c3Qva2VybmVsL2kyYy5yc1xuaW5kZXggNjI0Yjk3MWNhOGIwYjIuLjAyYjJjOTIyMGViMTFjIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvaTJjLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9pMmMucnNcbkBAIC0xOCw3ICsxOCw4IEBAXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OntcbiAgICAgICAgIEFSZWYsXG4tICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXG4gfTtcbkBAIC00MjQsNyArNDI1LDcgQEAgcHViIGZuIGdldChpbmRleDogaTMyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0FSZWZcdTAwM2NTZWxmXHUwMDNlXHUwMDNlIHtcbiBrZXJuZWw6OmltcGxfZGV2aWNlX2NvbnRleHRfaW50b19hcmVmIShJMmNBZGFwdGVyKTtcbiBcbiAvLyBTQUZFVFk6IEluc3RhbmNlcyBvZiBgSTJjQWRhcHRlcmAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJMmNBZGFwdGVyIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6aTJjX2dldF9hZGFwdGVyKHNlbGYuaW5kZXgoKSkgfTtcbkBAIC00MzUsNiArNDM2LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmkyY19wdXRfYWRhcHRlcihvYmouYXNfcmVmKCkuYXNfcmF3KCkpIH1cbiAgICAgfVxuIH1cbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjRGV2aWNlXHUwMDNlYCBmcm9tIGFuXG4rLy8gYFx1MDAyNkkyY0FkYXB0ZXJgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0FkYXB0ZXIge31cbiBcbiAvLy8gVGhlIGkyYyBib2FyZCBpbmZvIHJlcHJlc2VudGF0aW9uXG4gLy8vXG5AQCAtNTAwLDcgKzUwNCw3IEBAIHVuc2FmZSBpbXBsXHUwMDNjQ3R4OiBkZXZpY2U6OkRldmljZUNvbnRleHRcdTAwM2UgZGV2aWNlOjpBc0J1c0RldmljZVx1MDAzY0N0eFx1MDAzZSBmb3IgSTJjQ2xpZW50XHUwMDNjQ1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKEkyY0NsaWVudCk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYEkyY0NsaWVudGAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBJMmNDbGllbnQge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgZXhpc3RlbmNlIG9mIGEgc2hhcmVkIHJlZmVyZW5jZSBndWFyYW50ZWVzIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbi16ZXJvLlxuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmdldF9kZXZpY2Uoc2VsZi5hc19yZWYoKS5hc19yYXcoKSkgfTtcbkBAIC01MTEsNiArNTE1LDkgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OnB1dF9kZXZpY2UoXHUwMDI2cmF3IG11dCAoKm9iai5hc19yZWYoKS5hc19yYXcoKSkuZGV2KSB9XG4gICAgIH1cbiB9XG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhblxuKy8vIGBcdTAwMjZJMmNDbGllbnRgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEkyY0NsaWVudCB7fVxuIFxuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBJMmNDbGllbnRcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbGliLnJzIGIvcnVzdC9rZXJuZWwvbGliLnJzXG5pbmRleCA5NTEyYWY3MTU2ZGYyYS4uZWI1MjU2MjA0YTE3NDIgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9saWIucnNcbisrKyBiL3J1c3Qva2VybmVsL2xpYi5yc1xuQEAgLTEwMSw2ICsxMDEsNyBAQFxuIHB1YiBtb2Qgb2Y7XG4gI1tjZmcoQ09ORklHX1BNX09QUCldXG4gcHViIG1vZCBvcHA7XG4rcHViIG1vZCBvd25lZDtcbiBwdWIgbW9kIHBhZ2U7XG4gI1tjZmcoQ09ORklHX1BDSSldXG4gcHViIG1vZCBwY2k7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0ucnMgYi9ydXN0L2tlcm5lbC9tbS5yc1xuaW5kZXggNDc2NGQ3YjY4ZjJhN2YuLjgzZWQ5NGZjYTE0Y2EyIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbW0ucnNcbisrKyBiL3J1c3Qva2VybmVsL21tLnJzXG5AQCAtMTMsOCArMTMsMTUgQEBcbiBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbi0gICAgdHlwZXM6OntOb3RUaHJlYWRTYWZlLCBPcGFxdWV9LFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBUmVmLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbisgICAgdHlwZXM6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxuKyAgICAgICAgT3BhcXVlLCAvL1xuKyAgICB9LCAvL1xuIH07XG4gdXNlIGNvcmU6OntvcHM6OkRlcmVmLCBwdHI6Ok5vbk51bGx9O1xuIFxuQEAgLTU1LDcgKzYyLDcgQEAgdW5zYWZlIGltcGwgU2VuZCBmb3IgTW0ge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBNbSB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBNbSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIHBvaW50ZXIgaXMgdmFsaWQgc2luY2Ugc2VsZiBpcyBhIHJlZmVyZW5jZS5cbkBAIC02OSw2ICs3Niw5IEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1cdTAwM2VgIGZyb20gYSBgXHUwMDI2TW1gLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tIHt9XG4rXG4gLy8vIEEgd3JhcHBlciBmb3IgdGhlIGtlcm5lbCdzIGBzdHJ1Y3QgbW1fc3RydWN0YC5cbiAvLy9cbiAvLy8gVGhpcyB0eXBlIGlzIGxpa2UgW2BNbWBdLCBidXQgd2l0aCBub24temVybyBgbW1fdXNlcnNgLiBJdCBjYW4gb25seSBiZSB1c2VkIHdoZW4gYG1tX3VzZXJzYCBjYW5cbkBAIC05MSw3ICsxMDEsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBNbVdpdGhVc2VyIHt9XG4gdW5zYWZlIGltcGwgU3luYyBmb3IgTW1XaXRoVXNlciB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXIge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBwb2ludGVyIGlzIHZhbGlkIHNpbmNlIHNlbGYgaXMgYSByZWZlcmVuY2UuXG5AQCAtMTA1LDYgKzExNSwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY01tV2l0aFVzZXJcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZNbVdpdGhVc2VyYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyIHt9XG4rXG4gLy8gTWFrZSBhbGwgYE1tYCBtZXRob2RzIGF2YWlsYWJsZSBvbiBgTW1XaXRoVXNlcmAuXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlciB7XG4gICAgIHR5cGUgVGFyZ2V0ID0gTW07XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnMgYi9ydXN0L2tlcm5lbC9tbS9tbXB1dF9hc3luYy5yc1xuaW5kZXggYjhkMmYwNTEyMjVjNzMuLjhmYmMzOTZlNDYwMjgxIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvbW0vbW1wdXRfYXN5bmMucnNcbisrKyBiL3J1c3Qva2VybmVsL21tL21tcHV0X2FzeW5jLnJzXG5AQCAtMTAsNyArMTAsMTEgQEBcbiB1c2UgY3JhdGU6OntcbiAgICAgYmluZGluZ3MsXG4gICAgIG1tOjpNbVdpdGhVc2VyLFxuLSAgICBzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH0sXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFSZWYsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuKyAgICB0eXBlczo6QWx3YXlzUmVmQ291bnRlZCxcbiB9O1xuIHVzZSBjb3JlOjp7b3BzOjpEZXJlZiwgcHRyOjpOb25OdWxsfTtcbiBcbkBAIC0zNCw3ICszOCw3IEBAIHVuc2FmZSBpbXBsIFNlbmQgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIHVuc2FmZSBpbXBsIFN5bmMgZm9yIE1tV2l0aFVzZXJBc3luYyB7fVxuIFxuIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50cywgdGhpcyB0eXBlIGlzIGFsd2F5cyByZWZjb3VudGVkLlxuLXVuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIE1tV2l0aFVzZXJBc3luYyB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgcG9pbnRlciBpcyB2YWxpZCBzaW5jZSBzZWxmIGlzIGEgcmVmZXJlbmNlLlxuQEAgLTQ4LDYgKzUyLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbiAgICAgfVxuIH1cbiBcbisvLyBTQUZFVFk6IFdlIGRvIG5vdCBpbXBsZW1lbnQgYE93bmFibGVgLCB0aHVzIGl0IGlzIG9rYXkgdG8gb2J0YWluIGFuIGBBUmVmXHUwMDNjTW1XaXRoVXNlckFzeW5jXHUwMDNlYFxuKy8vIGZyb20gYSBgXHUwMDI2TW1XaXRoVXNlckFzeW5jYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBNbVdpdGhVc2VyQXN5bmMge31cbitcbiAvLyBNYWtlIGFsbCBgTW1XaXRoVXNlcmAgbWV0aG9kcyBhdmFpbGFibGUgb24gYE1tV2l0aFVzZXJBc3luY2AuXG4gaW1wbCBEZXJlZiBmb3IgTW1XaXRoVXNlckFzeW5jIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBNbVdpdGhVc2VyO1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL29wcC5ycyBiL3J1c3Qva2VybmVsL29wcC5yc1xuaW5kZXggNjJlNDQ2NzYxMjVkMTAuLmI4ZGI2YmRlZmQwNzcxIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvb3BwLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9vcHAucnNcbkBAIC0xNiw4ICsxNiwxNCBAQFxuICAgICBmZmk6OntjX2NoYXIsIGNfdWxvbmd9LFxuICAgICBwcmVsdWRlOjoqLFxuICAgICBzdHI6OkNTdHJpbmcsXG4tICAgIHN5bmM6OmFyZWY6OntBUmVmLCBBbHdheXNSZWZDb3VudGVkfSxcbi0gICAgdHlwZXM6Ok9wYXF1ZSxcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQVJlZixcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgT3BhcXVlLCAvL1xuKyAgICB9LCAvL1xuIH07XG4gXG4gI1tjZmcoQ09ORklHX0NQVV9GUkVRKV1cbkBAIC0xMDQxLDcgKzEwNDcsNyBAQCB1bnNhZmUgaW1wbCBTZW5kIGZvciBPUFAge31cbiB1bnNhZmUgaW1wbCBTeW5jIGZvciBPUFAge31cbiBcbiAvLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IFtgT1BQYF0gaXMgYWx3YXlzIHJlZmNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgT1BQIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBPUFAge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIG1lYW5zIHRoYXQgdGhlIHJlZmNvdW50IGlzIG5vbnplcm8uXG5AQCAtMTA1NSw2ICsxMDYxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NPUFBcdTAwM2VgIGZyb20gYW5cbisvLyBgXHUwMDI2T1BQYC5cbit1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBPUFAge31cbitcbiBpbXBsIE9QUCB7XG4gICAgIC8vLyBDcmVhdGVzIGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIFtgT1BQYF0gZnJvbSBhIHZhbGlkIHBvaW50ZXIuXG4gICAgIC8vL1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL293bmVkLnJzIGIvcnVzdC9rZXJuZWwvb3duZWQucnNcbm5ldyBmaWxlIG1vZGUgMTAwNjQ0XG5pbmRleCAwMDAwMDAwMDAwMDAwMC4uYWNiNjExZjA4NGZmMzVcbi0tLSAvZGV2L251bGxcbisrKyBiL3J1c3Qva2VybmVsL293bmVkLnJzXG5AQCAtMCwwICsxLDM3MyBAQFxuKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4rXG4rLy8hIFVuaXF1ZSBvd25lZCBwb2ludGVyIHR5cGVzIGZvciBvYmplY3RzIHdpdGggY3VzdG9tIGRyb3AgbG9naWMuXG4rLy8hXG4rLy8hIFRoZXNlIHBvaW50ZXIgdHlwZXMgYXJlIHVzZWZ1bCBmb3IgQy1hbGxvY2F0ZWQgb2JqZWN0cyB3aGljaCBieSBBUEktY29udHJhY3RcbisvLyEgYXJlIG93bmVkIGJ5IFJ1c3QsIGJ1dCBuZWVkIHRvIGJlIGZyZWVkIHRocm91Z2ggdGhlIEMgQVBJLlxuK1xuK3VzZSBjb3JlOjp7XG4rICAgIG1lbTo6TWFudWFsbHlEcm9wLFxuKyAgICBvcHM6OntcbisgICAgICAgIERlcmVmLFxuKyAgICAgICAgRGVyZWZNdXQsIC8vXG4rICAgIH0sXG4rICAgIHBpbjo6UGluLFxuKyAgICBwdHI6Ok5vbk51bGwsIC8vXG4rfTtcbit1c2Uga2VybmVsOjp7XG4rICAgIHN5bmM6OmFyZWY6OkFSZWYsXG4rICAgIHR5cGVzOjpSZWZDb3VudGVkLCAvL1xuK307XG4rXG4rdXNlIGtlcm5lbDo6dHlwZXM6OkZvcmVpZ25Pd25hYmxlO1xuK1xuKy8vLyBUeXBlcyB0aGF0IHNwZWNpZnkgdGhlaXIgb3duIHdheSBvZiBwZXJmb3JtaW5nIGFsbG9jYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUeXBpY2FsbHksIHRoaXMgdHJhaXRcbisvLy8gaXMgaW1wbGVtZW50ZWQgb24gdHlwZXMgZnJvbSB0aGUgQyBzaWRlLlxuKy8vL1xuKy8vLyBJbXBsZW1lbnRpbmcgdGhpcyB0cmFpdCBhbGxvd3MgdHlwZXMgdG8gYmUgcmVmZXJlbmNlZCB2aWEgdGhlIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0gcG9pbnRlciB0eXBlLlxuKy8vLyAgLSBUaGlzIGlzIHVzZWZ1bCB3aGVuIGl0IGlzIGRlc2lyYWJsZSB0byB0aWUgdGhlIGxpZmV0aW1lIG9mIGFuIG9iamVjdCByZWZlcmVuY2UgdG8gYW4gb3duZWRcbisvLy8gICAgb2JqZWN0LCByYXRoZXIgdGhhbiBwYXNzIGFyb3VuZCBhIGJhcmUgcmVmZXJlbmNlLlxuKy8vLyAgLSBbYE93bmFibGVgXSB0eXBlcyBjYW4gZGVmaW5lIGN1c3RvbSBkcm9wIGxvZ2ljIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgb3duZWQgcmVmZXJlbmNlXG4rLy8vICAgIG9mIHR5cGUgW2BPd25lZFx1MDAzY19cdTAwM2VgXSBwb2ludGluZyB0byB0aGUgb2JqZWN0IGlzIGRyb3BwZWQuXG4rLy8vXG4rLy8vIE5vdGU6IFRoZSB1bmRlcmx5aW5nIG9iamVjdCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSBpbnRlcm5hbCByZWZlcmVuY2UgY291bnRpbmcsIGJlY2F1c2UgaXRcbisvLy8gcmVwcmVzZW50cyBhIHVuaXF1ZSwgb3duZWQgcmVmZXJlbmNlLiBJZiByZWZlcmVuY2UgY291bnRpbmcgKG9uIHRoZSBSdXN0IHNpZGUpIGlzIHJlcXVpcmVkLFxuKy8vLyBbYFJlZkNvdW50ZWRgXSBzaG91bGQgYmUgaW1wbGVtZW50ZWQuIFtgT3duYWJsZVJlZkNvdW50ZWRgXSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgaWYgY29udmVyc2lvblxuKy8vLyBiZXR3ZWVuIHVuaXF1ZSBhbmQgc2hhcmVkIChyZWZlcmVuY2UgY291bnRlZCkgb3duZXJzaGlwIGlzIG5lZWRlZC5cbisvLy9cbisvLy8gIyBFeGFtcGxlc1xuKy8vL1xuKy8vLyBBIG1pbmltYWwgZXhhbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGggW2BPd25lZGBdIGxvb2tzIGxpa2VcbisvLy8gdGhpczpcbisvLy9cbisvLy8gYGBgXG4rLy8vICMgIyFbZXhwZWN0KGNsaXBweTo6ZGlzYWxsb3dlZF9uYW1lcyldXG4rLy8vICMgdXNlIGNvcmU6OmNlbGw6OkNlbGw7XG4rLy8vICMgdXNlIGNvcmU6OnB0cjo6Tm9uTnVsbDtcbisvLy8gIyB1c2Uga2VybmVsOjpzeW5jOjpnbG9iYWxfbG9jaztcbisvLy8gIyB1c2Uga2VybmVsOjphbGxvYzo6e2ZsYWdzLCBrYm94OjpLQm94LCBBbGxvY0Vycm9yfTtcbisvLy8gIyB1c2Uga2VybmVsOjp0eXBlczo6e093bmVkLCBPd25hYmxlfTtcbisvLy9cbisvLy8gLy8gTGV0J3MgY291bnQgdGhlIGFsbG9jYXRpb25zIHRvIHNlZSBpZiBmcmVlaW5nIHdvcmtzLlxuKy8vLyBrZXJuZWw6OnN5bmM6Omdsb2JhbF9sb2NrISB7XG4rLy8vICAgICAvLyBTQUZFVFk6IHdlIGNhbGwgYGluaXQoKWAgcmlnaHQgYmVsb3csIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlLlxuKy8vLyAgICAgdW5zYWZlKHVuaW5pdCkgc3RhdGljIEZPT19BTExPQ19DT1VOVDogTXV0ZXhcdTAwM2N1c2l6ZVx1MDAzZSA9IDA7XG4rLy8vIH1cbisvLy8gLy8gU0FGRVRZOiBXZSBjYWxsIGBpbml0KClgIG9ubHkgb25jZSwgaGVyZS5cbisvLy8gdW5zYWZlIHsgRk9PX0FMTE9DX0NPVU5ULmluaXQoKSB9O1xuKy8vL1xuKy8vLyBzdHJ1Y3QgRm9vO1xuKy8vL1xuKy8vLyBpbXBsIEZvbyB7XG4rLy8vICAgICBmbiBuZXcoKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZVx1MDAzZSB7XG4rLy8vICAgICAgICAgLy8gV2UgYXJlIGp1c3QgdXNpbmcgYSBgS0JveGAgaGVyZSB0byBoYW5kbGUgdGhlIGFjdHVhbCBhbGxvY2F0aW9uLCBhcyBvdXIgYEZvb2AgaXNcbisvLy8gICAgICAgICAvLyBub3QgYWN0dWFsbHkgYSBDLWFsbG9jYXRlZCBvYmplY3QuXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcbisvLy8gICAgICAgICAgICAgRm9vIHt9LFxuKy8vLyAgICAgICAgICAgICBmbGFnczo6R0ZQX0tFUk5FTCxcbisvLy8gICAgICAgICApPztcbisvLy8gICAgICAgICBsZXQgcmVzdWx0ID0gS0JveDo6aW50b19ub25fbnVsbChyZXN1bHQpO1xuKy8vLyAgICAgICAgIC8vIENvdW50IG5ldyBhbGxvY2F0aW9uXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgKz0gMTtcbisvLy8gICAgICAgICAvLyBTQUZFVFk6XG4rLy8vICAgICAgICAgLy8gIC0gV2UganVzdCBhbGxvY2F0ZWQgdGhlIGBTZWxmYCwgdGh1cyBpdCBpcyB2YWxpZCBhbmQgd2Ugb3duIGl0LlxuKy8vLyAgICAgICAgIC8vICAtIFdlIGNhbiB0cmFuc2ZlciB0aGlzIG93bmVyc2hpcCB0byB0aGUgYGZyb21fcmF3YCBtZXRob2QuXG4rLy8vICAgICAgICAgT2sodW5zYWZlIHsgT3duZWQ6OmZyb21fcmF3KHJlc3VsdCkgfSlcbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyBpbXBsIE93bmFibGUgZm9yIEZvbyB7XG4rLy8vICAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogVGhlIFtgS0JveFx1MDAzY1NlbGZcdTAwM2VgXSBpcyBzdGlsbCBhbGl2ZS4gV2UgY2FuIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBbYEtCb3hgXSwgYXNcbisvLy8gICAgICAgICAvLyBieSByZXF1aXJlbWVudCBvbiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uXG4rLy8vICAgICAgICAgZHJvcCh1bnNhZmUgeyBLQm94Ojpmcm9tX3Jhdyh0aGlzLmFzX3B0cigpKSB9KTtcbisvLy8gICAgICAgICAvLyBDb3VudCByZWxlYXNlZCBhbGxvY2F0aW9uXG4rLy8vICAgICAgICAgKkZPT19BTExPQ19DT1VOVC5sb2NrKCkgLT0gMTtcbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyB7XG4rLy8vICAgIGxldCBmb28gPSBGb286Om5ldygpPztcbisvLy8gICAgYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAxKTtcbisvLy8gfVxuKy8vLyAvLyBgZm9vYCBpcyBvdXQgb2Ygc2NvcGUgbm93LCBzbyB3ZSBleHBlY3Qgbm8gbGl2ZSBhbGxvY2F0aW9ucy5cbisvLy8gYXNzZXJ0ISgqRk9PX0FMTE9DX0NPVU5ULmxvY2soKSA9PSAwKTtcbisvLy8gIyBPazo6XHUwMDNjKCksIEVycm9yXHUwMDNlKCgpKVxuKy8vLyBgYGBcbitwdWIgdHJhaXQgT3duYWJsZSB7XG4rICAgIC8vLyBUZWFyIGRvd24gdGhpcyBgT3duYWJsZWAuXG4rICAgIC8vL1xuKyAgICAvLy8gSW1wbGVtZW50ZXJzIG9mIGBPd25hYmxlYCBjYW4gdXNlIHRoaXMgZnVuY3Rpb24gdG8gY2xlYW4gdXAgdGhlIHVzZSBvZiBgU2VsZmAuIFRoaXMgY2FuXG4rICAgIC8vLyBpbmNsdWRlIGZyZWVpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuKyAgICAvLy9cbisgICAgLy8vICMgU2FmZXR5XG4rICAgIC8vL1xuKyAgICAvLy8gQ2FsbGVycyBtdXN0IGVuc3VyZSB0aGF0IHRoZXkgaGF2ZSBleGNsdXNpdmUgb3duZXJzaGlwIG9mIHRoZSBgU2VsZmAgcG9pbnRlZCB0byBieSBgdGhpc2AsXG4rICAgIC8vLyBhbmQgdGhhdCB0aGlzIG93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgYHJlbGVhc2VgIG1ldGhvZC4gYHRoaXNgIG11c3Qgbm90IGJlIHVzZWRcbisgICAgLy8vIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFzIHRoZSB1bmRlcmx5aW5nIG9iamVjdCBtYXkgaGF2ZSBiZWVuIGZyZWVkLlxuKyAgICAvLy9cbisgICAgLy8vIGB0aGlzYCBpcyBwaW5uZWQgYW5kIGltcGxlbWVudGVycyBvZiB0aGlzIG1ldGhvZCBtdXN0IG9ic2VydmUgdGhpcyBjb25zdHJhaW50LlxuKyAgICB1bnNhZmUgZm4gcmVsZWFzZSh0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSk7XG4rfVxuK1xuKy8vLyBBIG11dGFibGUgcmVmZXJlbmNlIHRvIGFuIG93bmVkIGBUYC5cbisvLy9cbisvLy8gVGhlIFtgT3duYWJsZWBdIGlzIGF1dG9tYXRpY2FsbHkgZnJlZWQgb3IgcmVsZWFzZWQgd2hlbiBhbiBpbnN0YW5jZSBvZiBbYE93bmVkYF0gaXNcbisvLy8gZHJvcHBlZC5cbisvLy9cbisvLy8gIyBJbnZhcmlhbnRzXG4rLy8vXG4rLy8vIC0gVW50aWwgYFQ6OnJlbGVhc2VgIGlzIGNhbGxlZCwgdGhpcyBgT3duZWRcdTAwM2NUXHUwMDNlYCBleGNsdXNpdmVseSBvd25zIHRoZSB1bmRlcmx5aW5nIGBUYC5cbisvLy8gLSBUaGUgYFRgIHZhbHVlIGlzIHBpbm5lZC5cbitwdWIgc3RydWN0IE93bmVkXHUwMDNjVDogT3duYWJsZVx1MDAzZSB7XG4rICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4rfVxuK1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlXHUwMDNlIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFtgT3duZWRgXS5cbisgICAgLy8vXG4rICAgIC8vLyBUaGlzIGZ1bmN0aW9uIHRha2VzIG92ZXIgb3duZXJzaGlwIG9mIHRoZSB1bmRlcmx5aW5nIG9iamVjdC5cbisgICAgLy8vXG4rICAgIC8vLyAjIFNhZmV0eVxuKyAgICAvLy9cbisgICAgLy8vIENhbGxlcnMgbXVzdCBlbnN1cmUgdGhhdDpcbisgICAgLy8vIC0gYHB0cmAgcG9pbnRzIHRvIGEgdmFsaWQgaW5zdGFuY2Ugb2YgYFRgLlxuKyAgICAvLy8gLSBVbnRpbCBgVDo6cmVsZWFzZWAgaXMgY2FsbGVkLCB0aGUgcmV0dXJuZWQgYE93bmVkXHUwMDNjVFx1MDAzZWAgZXhjbHVzaXZlbHkgb3ducyB0aGUgdW5kZXJseWluZyBgVGAuXG4rICAgICNbaW5saW5lXVxuKyAgICBwdWIgdW5zYWZlIGZuIGZyb21fcmF3KHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4rICAgICAgICAvLyBJTlZBUklBTlQ6IEJ5IGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudCB3ZSBzYXRpc2Z5IHRoZSBmaXJzdCBpbnZhcmlhbnQgb2YgYFNlbGZgLlxuKyAgICAgICAgLy8gV2UgdHJlYXQgYFRgIGFzIHBpbm5lZCBmcm9tIG5vdyBvbi5cbisgICAgICAgIFNlbGYgeyBwdHIgfVxuKyAgICB9XG4rXG4rICAgIC8vLyBDb25zdW1lcyB0aGUgW2BPd25lZGBdLCByZXR1cm5pbmcgYSByYXcgcG9pbnRlci5cbisgICAgLy8vXG4rICAgIC8vLyBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGRyb3AgdGhlIHVuZGVybHlpbmcgYFRgLiBXaGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucywgb3duZXJzaGlwIG9mIHRoZVxuKyAgICAvLy8gdW5kZXJseWluZyBgVGAgaXMgd2l0aCB0aGUgY2FsbGVyLlxuKyAgICAvLy9cbisgICAgLy8vIE5vdGUgdGhhdCB0aGUgcmV0dXJuZWQgcG9pbnRlciBpcyBwaW5uZWQuXG4rICAgICNbaW5saW5lXVxuKyAgICBwdWIgZm4gaW50b19yYXcobWU6IFNlbGYpIC1cdTAwM2UgTm9uTnVsbFx1MDAzY1RcdTAwM2Uge1xuKyAgICAgICAgTWFudWFsbHlEcm9wOjpuZXcobWUpLnB0clxuKyAgICB9XG4rXG4rICAgIC8vLyBHZXQgYSBwaW5uZWQgbXV0YWJsZSByZWZlcmVuY2UgdG8gdGhlIGRhdGEgb3duZWQgYnkgdGhpcyBgT3duZWRcdTAwM2NUXHUwMDNlYC5cbisgICAgI1tpbmxpbmVdXG4rICAgIHB1YiBmbiBhc19waW5fbXV0KFx1MDAyNm11dCBzZWxmKSAtXHUwMDNlIFBpblx1MDAzY1x1MDAyNm11dCBUXHUwMDNlIHtcbisgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLCBhbmQgdGhhdCB3ZSBjYW4gc2FmZWx5XG4rICAgICAgICAvLyByZXR1cm4gYSBtdXRhYmxlIHJlZmVyZW5jZSB0byBpdC5cbisgICAgICAgIGxldCB1bnBpbm5lZCA9IHVuc2FmZSB7IHNlbGYucHRyLmFzX211dCgpIH07XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IGBUYCBpcyBwaW5uZWQuXG4rICAgICAgICB1bnNhZmUgeyBQaW46Om5ld191bmNoZWNrZWQodW5waW5uZWQpIH1cbisgICAgfVxuK31cbitcbisvLyBTQUZFVFk6IEl0IGlzIHNhZmUgdG8gc2VuZCBhbiBbYE93bmVkXHUwMDNjVFx1MDAzZWBdIHRvIGFub3RoZXIgdGhyZWFkIHdoZW4gdGhlIHVuZGVybHlpbmcgYFRgIGlzIFtgU2VuZGBdLFxuKy8vIGJlY2F1c2Ugb2YgdGhlIG93bmVyc2hpcCBpbnZhcmlhbnQuIFNlbmRpbmcgYW4gW2BPd25lZFx1MDAzY1RcdTAwM2VgXSBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgdGhlIGBUYC5cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IE93bmFibGUgKyBTZW5kXHUwMDNlIFNlbmQgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7fVxuK1xuKy8vIFNBRkVUWTogSXQgaXMgc2FmZSB0byBzZW5kIFtgXHUwMDI2T3duZWRcdTAwM2NUXHUwMDNlYF0gdG8gYW5vdGhlciB0aHJlYWQgd2hlbiB0aGUgdW5kZXJseWluZyBgVGAgaXMgW2BTeW5jYF0sXG4rLy8gYmVjYXVzZSBvZiB0aGUgb3duZXJzaGlwIGludmFyaWFudC4gU2VuZGluZyBhbiBbYFx1MDAyNk93bmVkXHUwMDNjVFx1MDAzZWBdIGlzIGVxdWl2YWxlbnQgdG8gc2VuZGluZyB0aGUgYFx1MDAyNlRgLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3duYWJsZSArIFN5bmNcdTAwM2UgU3luYyBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHt9XG4rXG4raW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRGVyZWYgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgIHR5cGUgVGFyZ2V0ID0gVDtcbitcbisgICAgI1tpbmxpbmVdXG4rICAgIGZuIGRlcmVmKFx1MDAyNnNlbGYpIC1cdTAwM2UgXHUwMDI2U2VsZjo6VGFyZ2V0IHtcbisgICAgICAgIC8vIFNBRkVUWTogVGhlIHR5cGUgaW52YXJpYW50cyBndWFyYW50ZWUgdGhhdCB0aGUgb2JqZWN0IGlzIHZhbGlkLlxuKyAgICAgICAgdW5zYWZlIHsgc2VsZi5wdHIuYXNfcmVmKCkgfVxuKyAgICB9XG4rfVxuK1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlICsgVW5waW5cdTAwM2UgRGVyZWZNdXQgZm9yIE93bmVkXHUwMDNjVFx1MDAzZSB7XG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBkZXJlZl9tdXQoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgXHUwMDI2bXV0IFNlbGY6OlRhcmdldCB7XG4rICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIG9iamVjdCBpcyB2YWxpZCwgYW5kIHRoYXQgd2UgY2FuIHNhZmVseVxuKyAgICAgICAgLy8gcmV0dXJuIGEgbXV0YWJsZSByZWZlcmVuY2UgdG8gaXQuXG4rICAgICAgICB1bnNhZmUgeyBzZWxmLnB0ci5hc19tdXQoKSB9XG4rICAgIH1cbit9XG4rXG4raW1wbFx1MDAzY1Q6IE93bmFibGVcdTAwM2UgRHJvcCBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbisgICAgI1tpbmxpbmVdXG4rICAgIGZuIGRyb3AoXHUwMDI2bXV0IHNlbGYpIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgZXhpc3RlbmNlIG9mIGBcdTAwMjZtdXQgc2VsZmAgd2UgZXhjbHVzaXZlbHkgb3duIGBzZWxmYCBhbmQgdGhlIHVuZGVybHlpbmcgYFRgLiBBc1xuKyAgICAgICAgLy8gd2UgYXJlIGRyb3BwaW5nIGBzZWxmYCwgd2UgY2FuIHRyYW5zZmVyIG93bmVyc2hpcCBvZiB0aGUgYFRgIHRvIHRoZSBgcmVsZWFzZWAgbWV0aG9kLlxuKyAgICAgICAgdW5zYWZlIHsgVDo6cmVsZWFzZShzZWxmLnB0cikgfTtcbisgICAgfVxuK31cbitcbisvLyBTQUZFVFk6IFdlIGRlcml2ZSB0aGUgcG9pbnRlciB0byBgVGAgZnJvbSBhIHZhbGlkIGBUYCwgc28gdGhlIHJldHVybmVkXG4rLy8gcG9pbnRlciBzYXRpc2Z5IGFsaWdubWVudCByZXF1aXJlbWVudHMgb2YgYFRgLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogT3duYWJsZVx1MDAzZSBGb3JlaWduT3duYWJsZSBmb3IgT3duZWRcdTAwM2NUXHUwMDNlIHtcbisgICAgY29uc3QgRk9SRUlHTl9BTElHTjogdXNpemUgPSBjb3JlOjptZW06OmFsaWduX29mOjpcdTAwM2NUXHUwMDNlKCk7XG4rXG4rICAgIHR5cGUgQm9ycm93ZWRcdTAwM2MnYVx1MDAzZVxuKyAgICAgICAgPSBcdTAwMjYnYSBUXG4rICAgIHdoZXJlXG4rICAgICAgICBTZWxmOiAnYTtcbisgICAgdHlwZSBCb3Jyb3dlZE11dFx1MDAzYydhXHUwMDNlXG4rICAgICAgICA9IFBpblx1MDAzY1x1MDAyNidhIG11dCBUXHUwMDNlXG4rICAgIHdoZXJlXG4rICAgICAgICBTZWxmOiAnYTtcbitcbisgICAgI1tpbmxpbmVdXG4rICAgIGZuIGludG9fZm9yZWlnbihzZWxmKSAtXHUwMDNlICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCB7XG4rICAgICAgICBPd25lZDo6aW50b19yYXcoc2VsZikuYXNfcHRyKCkuY2FzdCgpXG4rICAgIH1cbitcbisgICAgI1tpbmxpbmVdXG4rICAgIHVuc2FmZSBmbiBmcm9tX2ZvcmVpZ24ocHRyOiAqbXV0IGtlcm5lbDo6ZmZpOjpjX3ZvaWQpIC1cdTAwM2UgU2VsZiB7XG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IGZ1bmN0aW9uIHNhZmV0eSBjb250cmFjdCwgYHB0cmAgY2FtZSBmcm9tIGBpbnRvX2ZvcmVpZ25gIGFuZCBjYW5ub3QgYmUgbnVsbC5cbisgICAgICAgIGxldCBwdHIgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHB0ci5jYXN0KCkpIH07XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSBmdW5jdGlvbiBzYWZldHkgY29udHJhY3QsIGBwdHJgIHdhcyByZXR1cm5lZCBieSBgaW50b19mb3JlaWduYCwgd2hpY2ggZ2F2ZVxuKyAgICAgICAgLy8gdXAgZXhjbHVzaXZlIG93bmVyc2hpcCBvZiBhIHZhbGlkLCBwaW5uZWQgYFRgOyB3ZSByZXRha2UgdGhhdCBvd25lcnNoaXAgaGVyZS5cbisgICAgICAgIHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwdHIpIH1cbisgICAgfVxuK1xuKyAgICAjW2lubGluZV1cbisgICAgdW5zYWZlIGZuIGJvcnJvd1x1MDAzYydhXHUwMDNlKHB0cjogKm11dCBrZXJuZWw6OmZmaTo6Y192b2lkKSAtXHUwMDNlIFNlbGY6OkJvcnJvd2VkXHUwMDNjJ2FcdTAwM2Uge1xuKyAgICAgICAgLy8gU0FGRVRZOiBCeSBmdW5jdGlvbiBzYWZldHkgcmVxdWlyZW1lbnRzLCBgcHRyYCBpcyB2YWxpZCBmb3IgdXNlIGFzIGFcbisgICAgICAgIC8vIHJlZmVyZW5jZSBmb3IgYCdhYC5cbisgICAgICAgIHVuc2FmZSB7IFx1MDAyNipwdHIuY2FzdCgpIH1cbisgICAgfVxuK1xuKyAgICAjW2lubGluZV1cbisgICAgdW5zYWZlIGZuIGJvcnJvd19tdXRcdTAwM2MnYVx1MDAzZShwdHI6ICptdXQga2VybmVsOjpmZmk6OmNfdm9pZCkgLVx1MDAzZSBTZWxmOjpCb3Jyb3dlZE11dFx1MDAzYydhXHUwMDNlIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgdmFsaWQgZm9yIHVzZSBhcyBhXG4rICAgICAgICAvLyB1bmlxdWUgcmVmZXJlbmNlIGZvciBgJ2FgLlxuKyAgICAgICAgbGV0IGlubmVyID0gdW5zYWZlIHsgXHUwMDI2bXV0ICpwdHIuY2FzdCgpIH07XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IFdlIG5ldmVyIG1vdmUgb3V0IG9mIGlubmVyLCBhbmQgd2UgZG8gbm90IGhhbmQgb3V0IG11dGFibGVcbisgICAgICAgIC8vIHJlZmVyZW5jZXMgd2hlbiBgVDogIVVucGluYC5cbisgICAgICAgIHVuc2FmZSB7IFBpbjo6bmV3X3VuY2hlY2tlZChpbm5lcikgfVxuKyAgICB9XG4rfVxuK1xuKy8vLyBBIHRyYWl0IGZvciBvYmplY3RzIHRoYXQgY2FuIGJlIHdyYXBwZWQgaW4gZWl0aGVyIG9uZSBvZiB0aGUgcmVmZXJlbmNlIHR5cGVzIFtgT3duZWRgXSBhbmRcbisvLy8gW2BBUmVmYF0uXG4rLy8vXG4rLy8vICMgRXhhbXBsZXNcbisvLy9cbisvLy8gQSBtaW5pbWFsIGV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgW2BPd25hYmxlUmVmQ291bnRlZGBdLCBbYE93bmFibGVgXSBhbmQgaXRzIHVzYWdlIHdpdGhcbisvLy8gW2BBUmVmYF0gYW5kIFtgT3duZWRgXSBsb29rcyBsaWtlIHRoaXM6XG4rLy8vXG4rLy8vIGBgYFxuKy8vLyAjICMhW2V4cGVjdChjbGlwcHk6OmRpc2FsbG93ZWRfbmFtZXMpXVxuKy8vLyAjIHVzZSBjb3JlOjpjZWxsOjpDZWxsO1xuKy8vLyAjIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4rLy8vICMgdXNlIGtlcm5lbDo6YWxsb2M6OntmbGFncywga2JveDo6S0JveCwgQWxsb2NFcnJvcn07XG4rLy8vICMgdXNlIGtlcm5lbDo6c3luYzo6YXJlZjo6e0FSZWYsIFJlZkNvdW50ZWR9O1xuKy8vLyAjIHVzZSBrZXJuZWw6OnR5cGVzOjp7T3duZWQsIE93bmFibGUsIE93bmFibGVSZWZDb3VudGVkfTtcbisvLy9cbisvLy8gLy8gQW4gaW50ZXJuYWxseSByZWZjb3VudGVkIHN0cnVjdCBmb3IgZGVtb25zdHJhdGlvbiBwdXJwb3Nlcy5cbisvLy8gLy9cbisvLy8gLy8gIyBJbnZhcmlhbnRzXG4rLy8vIC8vXG4rLy8vIC8vIC0gYHJlZmNvdW50YCBpcyBhbHdheXMgbm9uLXplcm8gZm9yIGEgdmFsaWQgb2JqZWN0LlxuKy8vLyAvLyAtIGByZWZjb3VudGAgaXMgXHUwMDNlMSBpZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIFJ1c3QgcmVmZXJlbmNlIHRvIGl0LlxuKy8vLyAvL1xuKy8vLyBzdHJ1Y3QgRm9vIHtcbisvLy8gICAgIHJlZmNvdW50OiBDZWxsXHUwMDNjdXNpemVcdTAwM2UsXG4rLy8vIH1cbisvLy9cbisvLy8gaW1wbCBGb28ge1xuKy8vLyAgICAgZm4gbmV3KCkgLVx1MDAzZSBSZXN1bHRcdTAwM2NPd25lZFx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuKy8vLyAgICAgICAgIC8vIFdlIGFyZSBqdXN0IHVzaW5nIGEgYEtCb3hgIGhlcmUgdG8gaGFuZGxlIHRoZSBhY3R1YWwgYWxsb2NhdGlvbiwgYXMgb3VyIGBGb29gIGlzXG4rLy8vICAgICAgICAgLy8gbm90IGFjdHVhbGx5IGEgQy1hbGxvY2F0ZWQgb2JqZWN0LlxuKy8vLyAgICAgICAgIC8vIElOVkFSSUFOVDogV2UgaW5pdGlhbGl6ZSBgcmVmY291bnRgIHRvIDEsIHNhdGlzZnlpbmcgdGhlIGludmFyaWFudHMuXG4rLy8vICAgICAgICAgbGV0IHJlc3VsdCA9IEtCb3g6Om5ldyhcbisvLy8gICAgICAgICAgICAgRm9vIHtcbisvLy8gICAgICAgICAgICAgICAgIHJlZmNvdW50OiBDZWxsOjpuZXcoMSksXG4rLy8vICAgICAgICAgICAgIH0sXG4rLy8vICAgICAgICAgICAgIGZsYWdzOjpHRlBfS0VSTkVMLFxuKy8vLyAgICAgICAgICk/O1xuKy8vLyAgICAgICAgIGxldCByZXN1bHQgPSBLQm94OjppbnRvX25vbl9udWxsKHJlc3VsdCk7XG4rLy8vICAgICAgICAgLy8gU0FGRVRZOlxuKy8vLyAgICAgICAgIC8vICAtIFdlIGp1c3QgYWxsb2NhdGVkIHRoZSBgU2VsZmAsIHRodXMgaXQgaXMgdmFsaWQgYW5kIHdlIG93biBpdC5cbisvLy8gICAgICAgICAvLyAgLSBXZSBjYW4gdHJhbnNmZXIgdGhpcyBvd25lcnNoaXAgdG8gdGhlIGBmcm9tX3Jhd2AgbWV0aG9kLlxuKy8vLyAgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhyZXN1bHQpIH0pXG4rLy8vICAgICB9XG4rLy8vIH1cbisvLy9cbisvLy8gLy8gU0FGRVRZOiBXZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCBlYWNoIHRpbWUgdGhlIHJlc3BlY3RpdmUgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBvbmx5IGZyZWVcbisvLy8gLy8gdGhlIGBGb29gIHdoZW4gdGhlIHJlZmNvdW50IHJlYWNoZXMgemVyby5cbisvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRm9vIHtcbisvLy8gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuKy8vLyAgICAgICAgIHNlbGYucmVmY291bnQucmVwbGFjZShzZWxmLnJlZmNvdW50LmdldCgpICsgMSk7XG4rLy8vICAgICB9XG4rLy8vXG4rLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZih0aGlzOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuKy8vLyAgICAgICAgIC8vIFNBRkVUWTogQnkgcmVxdWlyZW1lbnQgb24gY2FsbGluZyB0aGlzIGZ1bmN0aW9uLCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8sXG4rLy8vICAgICAgICAgLy8gaW1wbHlpbmcgdGhlIHVuZGVybHlpbmcgb2JqZWN0IGlzIHZhbGlkLlxuKy8vLyAgICAgICAgIGxldCByZWZjb3VudCA9IHVuc2FmZSB7IFx1MDAyNnRoaXMuYXNfcmVmKCkucmVmY291bnQgfTtcbisvLy8gICAgICAgICBsZXQgbmV3X3JlZmNvdW50ID0gcmVmY291bnQuZ2V0KCkgLSAxO1xuKy8vLyAgICAgICAgIGlmIG5ld19yZWZjb3VudCA9PSAwIHtcbisvLy8gICAgICAgICAgICAgLy8gVGhlIGBGb29gIHdpbGwgYmUgZHJvcHBlZCB3aGVuIGBLQm94YCBnb2VzIG91dCBvZiBzY29wZS5cbisvLy8gICAgICAgICAgICAgLy8gU0FGRVRZOiBUaGUgW2BLQm94XHUwMDNjRm9vXHUwMDNlYF0gaXMgc3RpbGwgYWxpdmUgYXMgdGhlIG9sZCByZWZjb3VudCBpcyAxLiBXZSBjYW4gcGFzc1xuKy8vLyAgICAgICAgICAgICAvLyBvd25lcnNoaXAgdG8gdGhlIFtgS0JveGBdIGFzIGJ5IHJlcXVpcmVtZW50IG9uIGNhbGxpbmcgdGhpcyBmdW5jdGlvbixcbisvLy8gICAgICAgICAgICAgLy8gdGhlIGBTZWxmYCB3aWxsIG5vIGxvbmdlciBiZSB1c2VkIGJ5IHRoZSBjYWxsZXIuXG4rLy8vICAgICAgICAgICAgIHVuc2FmZSB7IEtCb3g6OmZyb21fcmF3KHRoaXMuYXNfcHRyKCkpIH07XG4rLy8vICAgICAgICAgfSBlbHNlIHtcbisvLy8gICAgICAgICAgICAgcmVmY291bnQucmVwbGFjZShuZXdfcmVmY291bnQpO1xuKy8vLyAgICAgICAgIH1cbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyBpbXBsIE93bmFibGVSZWZDb3VudGVkIGZvciBGb28ge1xuKy8vLyAgICAgZm4gdHJ5X2Zyb21fc2hhcmVkKHRoaXM6IEFSZWZcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjU2VsZlx1MDAzZSwgQVJlZlx1MDAzY1NlbGZcdTAwM2VcdTAwM2Uge1xuKy8vLyAgICAgICAgIGlmIHRoaXMucmVmY291bnQuZ2V0KCkgPT0gMSB7XG4rLy8vICAgICAgICAgICAgIC8vIFNBRkVUWTogVGhlIGBGb29gIGlzIHN0aWxsIGFsaXZlIGFuZCBoYXMgbm8gb3RoZXIgUnVzdCByZWZlcmVuY2VzIGFzIHRoZSByZWZjb3VudFxuKy8vLyAgICAgICAgICAgICAvLyBpcyAxLlxuKy8vLyAgICAgICAgICAgICBPayh1bnNhZmUgeyBPd25lZDo6ZnJvbV9yYXcoQVJlZjo6aW50b19yYXcodGhpcykpIH0pXG4rLy8vICAgICAgICAgfSBlbHNlIHtcbisvLy8gICAgICAgICAgICAgRXJyKHRoaXMpXG4rLy8vICAgICAgICAgfVxuKy8vLyAgICAgfVxuKy8vL1xuKy8vLyAgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIEFSZWZcdTAwM2NTZWxmXHUwMDNlIHtcbisvLy8gICAgICAgICAvLyBTQUZFVFk6IEFuIGBPd25lZFx1MDAzY0Zvb1x1MDAzZWAgaG9sZHMgdGhlIHVuaXF1ZSByZWZlcmVuY2UgKHJlZmNvdW50IDEpLCB3aGljaCB3ZSB0cmFuc2ZlciB0b1xuKy8vLyAgICAgICAgIC8vIHRoZSBuZXcgYEFSZWZgLlxuKy8vLyAgICAgICAgIHVuc2FmZSB7IEFSZWY6OmZyb21fcmF3KE93bmVkOjppbnRvX3Jhdyh0aGlzKSkgfVxuKy8vLyAgICAgfVxuKy8vLyB9XG4rLy8vXG4rLy8vIGltcGwgT3duYWJsZSBmb3IgRm9vIHtcbisvLy8gICAgIHVuc2FmZSBmbiByZWxlYXNlKHRoaXM6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4rLy8vICAgICAgICAgLy8gU0FGRVRZOiBVc2luZyBgZGVjX3JlZigpYCBmcm9tIFtgUmVmQ291bnRlZGBdIHRvIHJlbGVhc2UgaXMgb2theSwgYXMgdGhlIHJlZmNvdW50IGlzXG4rLy8vICAgICAgICAgLy8gYWx3YXlzIDEgZm9yIGFuIFtgT3duZWRcdTAwM2NGb29cdTAwM2VgXS5cbisvLy8gICAgICAgICB1bnNhZmUgeyBGb286OmRlY19yZWYodGhpcykgfTtcbisvLy8gICAgIH1cbisvLy8gfVxuKy8vL1xuKy8vLyBsZXQgZm9vID0gRm9vOjpuZXcoKT87XG4rLy8vIGxldCBmb28gPSBBUmVmOjpmcm9tKGZvbyk7XG4rLy8vIHtcbisvLy8gICAgIGxldCBiYXIgPSBmb28uY2xvbmUoKTtcbisvLy8gICAgIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGJhcikuaXNfZXJyKCkpO1xuKy8vLyB9XG4rLy8vIGFzc2VydCEoT3duZWQ6OnRyeV9mcm9tKGZvbykuaXNfb2soKSk7XG4rLy8vICMgT2s6Olx1MDAzYygpLCBFcnJvclx1MDAzZSgoKSlcbisvLy8gYGBgXG4rcHViIHRyYWl0IE93bmFibGVSZWZDb3VudGVkOiBSZWZDb3VudGVkICsgT3duYWJsZSArIFNpemVkIHtcbisgICAgLy8vIENoZWNrcyBpZiB0aGUgW2BBUmVmYF0gaXMgdW5pcXVlIGFuZCBjb252ZXJ0cyBpdCB0byBhbiBbYE93bmVkYF0gaWYgdGhhdCBpcyB0aGUgY2FzZS5cbisgICAgLy8vIE90aGVyd2lzZSBpdCByZXR1cm5zIGFnYWluIGFuIFtgQVJlZmBdIHRvIHRoZSBzYW1lIHVuZGVybHlpbmcgb2JqZWN0LlxuKyAgICBmbiB0cnlfZnJvbV9zaGFyZWQodGhpczogQVJlZlx1MDAzY1NlbGZcdTAwM2UpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlLCBBUmVmXHUwMDNjU2VsZlx1MDAzZVx1MDAzZTtcbitcbisgICAgLy8vIENvbnZlcnRzIHRoZSBbYE93bmVkYF0gaW50byBhbiBbYEFSZWZgXS5cbisgICAgZm4gaW50b19zaGFyZWQodGhpczogT3duZWRcdTAwM2NTZWxmXHUwMDNlKSAtXHUwMDNlIEFSZWZcdTAwM2NTZWxmXHUwMDNlO1xuK31cbitcbitpbXBsXHUwMDNjVDogT3duYWJsZVJlZkNvdW50ZWRcdTAwM2UgVHJ5RnJvbVx1MDAzY0FSZWZcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBPd25lZFx1MDAzY1RcdTAwM2Uge1xuKyAgICB0eXBlIEVycm9yID0gQVJlZlx1MDAzY1RcdTAwM2U7XG4rICAgIC8vLyBUcmllcyB0byBjb252ZXJ0IHRoZSBbYEFSZWZgXSB0byBhbiBbYE93bmVkYF0gYnkgY2FsbGluZ1xuKyAgICAvLy8gW2B0cnlfZnJvbV9zaGFyZWQoKWBdKE93bmFibGVSZWZDb3VudGVkOjp0cnlfZnJvbV9zaGFyZWQpLiBJbiBjYXNlIHRoZSBbYEFSZWZgXSBpcyBub3RcbisgICAgLy8vIHVuaXF1ZSwgaXQgcmV0dXJucyBhZ2FpbiBhbiBbYEFSZWZgXSB0byB0aGUgc2FtZSB1bmRlcmx5aW5nIG9iamVjdC5cbisgICAgI1tpbmxpbmVdXG4rICAgIGZuIHRyeV9mcm9tKGI6IEFSZWZcdTAwM2NUXHUwMDNlKSAtXHUwMDNlIFJlc3VsdFx1MDAzY093bmVkXHUwMDNjVFx1MDAzZSwgU2VsZjo6RXJyb3JcdTAwM2Uge1xuKyAgICAgICAgVDo6dHJ5X2Zyb21fc2hhcmVkKGIpXG4rICAgIH1cbit9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGFnZS5ycyBiL3J1c3Qva2VybmVsL3BhZ2UucnNcbmluZGV4IDhhZmZkODI2Mjg5MWJhLi5jODhmZGEwOWVhZDVhYSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3BhZ2UucnNcbisrKyBiL3J1c3Qva2VybmVsL3BhZ2UucnNcbkBAIC0xMiwxNiArMTIsMTYgQEBcbiAgICAgICAgIGNvZGU6OiosXG4gICAgICAgICBSZXN1bHQsIC8vXG4gICAgIH0sXG4rICAgIHR5cGVzOjp7XG4rICAgICAgICBPcGFxdWUsXG4rICAgICAgICBPd25hYmxlLFxuKyAgICAgICAgT3duZWQsIC8vXG4rICAgIH0sXG4gICAgIHVhY2Nlc3M6OlVzZXJTbGljZVJlYWRlciwgLy9cbiB9O1xuLXVzZSBjb3JlOjp7XG4tICAgIG1hcmtlcjo6UGhhbnRvbURhdGEsXG4tICAgIG1lbTo6TWFudWFsbHlEcm9wLFxuLSAgICBvcHM6OkRlcmVmLFxuLSAgICBwdHI6Ontcbi0gICAgICAgIHNlbGYsXG4tICAgICAgICBOb25OdWxsLCAvL1xuLSAgICB9LCAvL1xuK3VzZSBjb3JlOjpwdHI6OntcbisgICAgc2VsZixcbisgICAgTm9uTnVsbCwgLy9cbiB9O1xuIFxuIC8vLyBBIGJpdHdpc2Ugc2hpZnQgZm9yIHRoZSBwYWdlIHNpemUuXG5AQCAtNjUsOTMgKzY1LDI5IEBAIHB1YiBjb25zdCBmbiBwYWdlX2FsaWduKGFkZHI6IHVzaXplKSAtXHUwMDNlIE9wdGlvblx1MDAzY3VzaXplXHUwMDNlIHtcbiAgICAgU29tZShzdW0gXHUwMDI2IFBBR0VfTUFTSylcbiB9XG4gXG4tLy8vIFJlcHJlc2VudGF0aW9uIG9mIGEgbm9uLW93bmluZyByZWZlcmVuY2UgdG8gYSBbYFBhZ2VgXS5cbi0vLy9cbi0vLy8gVGhpcyB0eXBlIHByb3ZpZGVzIGEgYm9ycm93ZWQgdmVyc2lvbiBvZiBhIFtgUGFnZWBdIHRoYXQgaXMgb3duZWQgYnkgc29tZSBvdGhlciBlbnRpdHksIGUuZy4gYVxuLS8vLyBbYFZtYWxsb2NgXSBhbGxvY2F0aW9uIHN1Y2ggYXMgW2BWQm94YF0uXG4tLy8vXG4tLy8vICMgRXhhbXBsZVxuLS8vL1xuLS8vLyBgYGBcbi0vLy8gIyB1c2Uga2VybmVsOjp7YmluZGluZ3MsIHByZWx1ZGU6Oip9O1xuLS8vLyB1c2Uga2VybmVsOjpwYWdlOjp7Qm9ycm93ZWRQYWdlLCBQYWdlLCBQQUdFX1NJWkV9O1xuLS8vLyAjIHVzZSBjb3JlOjp7bWVtOjpNYXliZVVuaW5pdCwgcHRyLCBwdHI6Ok5vbk51bGwgfTtcbi0vLy9cbi0vLy8gZm4gYm9ycm93X3BhZ2VcdTAwM2MnYVx1MDAzZSh2Ym94OiBcdTAwMjYnYSBtdXQgVkJveFx1MDAzY01heWJlVW5pbml0XHUwMDNjW3U4OyBQQUdFX1NJWkVdXHUwMDNlXHUwMDNlKSAtXHUwMDNlIEJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlIHtcbi0vLy8gICAgIGxldCBwdHIgPSBwdHI6OmZyb21fcmVmKFx1MDAyNioqdmJveCk7XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGBwdHJgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBiaW5kaW5nczo6dm1hbGxvY190b19wYWdlKHB0ci5jYXN0KCkpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6IGB2bWFsbG9jX3RvX3BhZ2VgIHJldHVybnMgYSB2YWxpZCBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYCBmb3IgYSB2YWxpZFxuLS8vLyAgICAgLy8gcG9pbnRlciB0byBgVm1hbGxvY2AgbWVtb3J5LlxuLS8vLyAgICAgbGV0IHBhZ2UgPSB1bnNhZmUgeyBOb25OdWxsOjpuZXdfdW5jaGVja2VkKHBhZ2UpIH07XG4tLy8vXG4tLy8vICAgICAvLyBTQUZFVFk6XG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIGEgdmFsaWQgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAuXG4tLy8vICAgICAvLyAtIGBzZWxmLjBgIGlzIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIG9mIGBzZWxmYC5cbi0vLy8gICAgIHVuc2FmZSB7IEJvcnJvd2VkUGFnZTo6ZnJvbV9yYXcocGFnZSkgfVxuLS8vLyB9XG4tLy8vXG4tLy8vIGxldCBtdXQgdmJveCA9IFZCb3g6Olx1MDAzY1t1ODsgUEFHRV9TSVpFXVx1MDAzZTo6bmV3X3VuaW5pdChHRlBfS0VSTkVMKT87XG4tLy8vIGxldCBwYWdlID0gYm9ycm93X3BhZ2UoXHUwMDI2bXV0IHZib3gpO1xuLS8vL1xuLS8vLyAvLyBTQUZFVFk6IFRoZXJlIGlzIG5vIGNvbmN1cnJlbnQgcmVhZCBvciB3cml0ZSB0byB0aGlzIHBhZ2UuXG4tLy8vIHVuc2FmZSB7IHBhZ2UuZmlsbF96ZXJvX3JhdygwLCBQQUdFX1NJWkUpPyB9O1xuLS8vLyAjIE9rOjpcdTAwM2MoKSwgRXJyb3JcdTAwM2UoKCkpXG4tLy8vIGBgYFxuLS8vL1xuLS8vLyAjIEludmFyaWFudHNcbi0vLy9cbi0vLy8gVGhlIGJvcnJvd2VkIHVuZGVybHlpbmcgcG9pbnRlciB0byBhIGBzdHJ1Y3QgcGFnZWAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWUgYCdhYC5cbi0vLy9cbi0vLy8gW2BWQm94YF06IGtlcm5lbDo6YWxsb2M6OlZCb3hcbi0vLy8gW2BWbWFsbG9jYF06IGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1xuLXB1YiBzdHJ1Y3QgQm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2UoTWFudWFsbHlEcm9wXHUwMDNjUGFnZVx1MDAzZSwgUGhhbnRvbURhdGFcdTAwM2NcdTAwMjYnYSBQYWdlXHUwMDNlKTtcbi1cbi1pbXBsXHUwMDNjJ2FcdTAwM2UgQm9ycm93ZWRQYWdlXHUwMDNjJ2FcdTAwM2Uge1xuLSAgICAvLy8gQ29uc3RydWN0cyBhIFtgQm9ycm93ZWRQYWdlYF0gZnJvbSBhIHJhdyBwb2ludGVyIHRvIGEgYHN0cnVjdCBwYWdlYC5cbi0gICAgLy8vXG4tICAgIC8vLyAjIFNhZmV0eVxuLSAgICAvLy9cbi0gICAgLy8vIC0gYHB0cmAgbXVzdCBwb2ludCB0byBhIHZhbGlkIGBiaW5kaW5nczo6cGFnZWAuXG4tICAgIC8vLyAtIGBwdHJgIG11c3QgcmVtYWluIHZhbGlkIGZvciB0aGUgZW50aXJlIGxpZmV0aW1lIGAnYWAuXG4tICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UpIC1cdTAwM2UgU2VsZiB7XG4tICAgICAgICBsZXQgcGFnZSA9IFBhZ2UgeyBwYWdlOiBwdHIgfTtcbi1cbi0gICAgICAgIC8vIElOVkFSSUFOVDogVGhlIHNhZmV0eSByZXF1aXJlbWVudHMgZ3VhcmFudGVlIHRoYXQgYHB0cmAgaXMgdmFsaWQgZm9yIHRoZSBlbnRpcmUgbGlmZXRpbWVcbi0gICAgICAgIC8vIGAnYWAuXG4tICAgICAgICBTZWxmKE1hbnVhbGx5RHJvcDo6bmV3KHBhZ2UpLCBQaGFudG9tRGF0YSlcbi0gICAgfVxuLX1cbi1cbi1pbXBsXHUwMDNjJ2FcdTAwM2UgRGVyZWYgZm9yIEJvcnJvd2VkUGFnZVx1MDAzYydhXHUwMDNlIHtcbi0gICAgdHlwZSBUYXJnZXQgPSBQYWdlO1xuLVxuLSAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG4tICAgICAgICBcdTAwMjZzZWxmLjBcbi0gICAgfVxuLX1cbi1cbi0vLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gaW1wbGVtZW50YXRpb24gb2Zcbi0vLy8gW2BCb3Jyb3dlZFBhZ2VgXSBpdGVtcywgc3VjaCBhcyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbisvLy8gVHJhaXQgdG8gYmUgaW1wbGVtZW50ZWQgYnkgdHlwZXMgd2hpY2ggcHJvdmlkZSBhbiBbYEl0ZXJhdG9yYF0gb2YgW2BQYWdlYF0gcmVmZXJlbmNlcywgc3VjaCBhc1xuKy8vLyBbYFZtYWxsb2NQYWdlSXRlcmBdKGtlcm5lbDo6YWxsb2M6OmFsbG9jYXRvcjo6Vm1hbGxvY1BhZ2VJdGVyKS5cbiBwdWIgdHJhaXQgQXNQYWdlSXRlciB7XG4gICAgIC8vLyBUaGUgW2BJdGVyYXRvcmBdIHR5cGUsIGUuZy4gW2BWbWFsbG9jUGFnZUl0ZXJgXShrZXJuZWw6OmFsbG9jOjphbGxvY2F0b3I6OlZtYWxsb2NQYWdlSXRlcikuXG4tICAgIHR5cGUgSXRlclx1MDAzYydhXHUwMDNlOiBJdGVyYXRvclx1MDAzY0l0ZW0gPSBCb3Jyb3dlZFBhZ2VcdTAwM2MnYVx1MDAzZVx1MDAzZVxuKyAgICB0eXBlIEl0ZXJcdTAwM2MnYVx1MDAzZTogSXRlcmF0b3JcdTAwM2NJdGVtID0gXHUwMDI2J2EgUGFnZVx1MDAzZVxuICAgICB3aGVyZVxuICAgICAgICAgU2VsZjogJ2E7XG4gXG4tICAgIC8vLyBSZXR1cm5zIGFuIFtgSXRlcmF0b3JgXSBvZiBbYEJvcnJvd2VkUGFnZWBdIGl0ZW1zIG92ZXIgYWxsIHBhZ2VzIG93bmVkIGJ5IGBzZWxmYC5cbisgICAgLy8vIFJldHVybnMgYW4gW2BJdGVyYXRvcmBdIG9mIFtgUGFnZWBdIHJlZmVyZW5jZXMgb3ZlciBhbGwgcGFnZXMgb3duZWQgYnkgYHNlbGZgLlxuICAgICBmbiBwYWdlX2l0ZXIoXHUwMDI2bXV0IHNlbGYpIC1cdTAwM2UgU2VsZjo6SXRlclx1MDAzYydfXHUwMDNlO1xuIH1cbiBcbi0vLy8gQSBwb2ludGVyIHRvIGEgcGFnZSB0aGF0IG93bnMgdGhlIHBhZ2UgYWxsb2NhdGlvbi5cbisvLy8gQSBgc3RydWN0IHBhZ2VgLlxuKy8vL1xuKy8vLyBBIGBQYWdlYCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEgc2hhcmVkIHJlZmVyZW5jZSBvciB0aHJvdWdoIGFuIG93bmluZyBbYE93bmVkXHUwMDNjUGFnZVx1MDAzZWBdOyB0aGUgbGF0dGVyXG4rLy8vIGZyZWVzIHRoZSBwYWdlIGFsbG9jYXRpb24gd2hlbiBpdCBpcyBkcm9wcGVkLlxuIC8vL1xuIC8vLyAjIEludmFyaWFudHNcbiAvLy9cbi0vLy8gVGhlIHBvaW50ZXIgaXMgdmFsaWQsIGFuZCBoYXMgb3duZXJzaGlwIG92ZXIgdGhlIHBhZ2UuXG4rLy8vIFRoZSBgUGFnZWAgaXMgYmFja2VkIGJ5IGEgdmFsaWQgYHN0cnVjdCBwYWdlYC5cbisjW3JlcHIodHJhbnNwYXJlbnQpXVxuIHB1YiBzdHJ1Y3QgUGFnZSB7XG4tICAgIHBhZ2U6IE5vbk51bGxcdTAwM2NiaW5kaW5nczo6cGFnZVx1MDAzZSxcbisgICAgcGFnZTogT3BhcXVlXHUwMDNjYmluZGluZ3M6OnBhZ2VcdTAwM2UsXG4gfVxuIFxuIC8vIFNBRkVUWTogUGFnZXMgaGF2ZSBubyBsb2dpYyB0aGF0IHJlbGllcyBvbiB0aGVtIHN0YXlpbmcgb24gYSBnaXZlbiB0aHJlYWQsIHNvIG1vdmluZyB0aGVtIGFjcm9zc1xuQEAgLTE4NSwxOSArMTIxLDIwIEBAIGltcGwgUGFnZSB7XG4gICAgIC8vLyAjIE9rOjpcdTAwM2MoKSwga2VybmVsOjphbGxvYzo6QWxsb2NFcnJvclx1MDAzZSgoKSlcbiAgICAgLy8vIGBgYFxuICAgICAjW2lubGluZV1cbi0gICAgcHViIGZuIGFsbG9jX3BhZ2UoZmxhZ3M6IEZsYWdzKSAtXHUwMDNlIFJlc3VsdFx1MDAzY1NlbGYsIEFsbG9jRXJyb3JcdTAwM2Uge1xuKyAgICBwdWIgZm4gYWxsb2NfcGFnZShmbGFnczogRmxhZ3MpIC1cdTAwM2UgUmVzdWx0XHUwMDNjT3duZWRcdTAwM2NTZWxmXHUwMDNlLCBBbGxvY0Vycm9yXHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogRGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBgZ2ZwX2ZsYWdzYCwgdGhpcyBjYWxsIG1heSBzbGVlcC4gT3RoZXIgdGhhbiB0aGF0LCBpdFxuICAgICAgICAgLy8gaXMgYWx3YXlzIHNhZmUgdG8gY2FsbCB0aGlzIG1ldGhvZC5cbiAgICAgICAgIGxldCBwYWdlID0gdW5zYWZlIHsgYmluZGluZ3M6OmFsbG9jX3BhZ2VzKGZsYWdzLmFzX3JhdygpLCAwKSB9O1xuICAgICAgICAgbGV0IHBhZ2UgPSBOb25OdWxsOjpuZXcocGFnZSkub2tfb3IoQWxsb2NFcnJvcik/O1xuLSAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBqdXN0IHN1Y2Nlc3NmdWxseSBhbGxvY2F0ZWQgYSBwYWdlLCBzbyB3ZSBub3cgaGF2ZSBvd25lcnNoaXAgb2YgdGhlIG5ld2x5XG4tICAgICAgICAvLyBhbGxvY2F0ZWQgcGFnZS4gV2UgdHJhbnNmZXIgdGhhdCBvd25lcnNoaXAgdG8gdGhlIG5ldyBgUGFnZWAgb2JqZWN0LlxuLSAgICAgICAgT2soU2VsZiB7IHBhZ2UgfSlcbisgICAgICAgIC8vIFNBRkVUWTogV2UganVzdCBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkIGEgcGFnZSwgc28gd2Ugbm93IGhhdmUgb3duZXJzaGlwIG9mIHRoZSBuZXdseVxuKyAgICAgICAgLy8gYWxsb2NhdGVkIHBhZ2UuIFdlIHRyYW5zZmVyIHRoYXQgb3duZXJzaGlwIHRvIHRoZSBuZXcgYE93bmVkXHUwMDNjUGFnZVx1MDAzZWAgb2JqZWN0LlxuKyAgICAgICAgLy8gU2luY2UgYFBhZ2VgIGlzIHRyYW5zcGFyZW50LCB3ZSBjYW4gY2FzdCB0aGUgcG9pbnRlciBkaXJlY3RseS5cbisgICAgICAgIE9rKHVuc2FmZSB7IE93bmVkOjpmcm9tX3JhdyhwYWdlLmNhc3QoKSkgfSlcbiAgICAgfVxuIFxuICAgICAvLy8gUmV0dXJucyBhIHJhdyBwb2ludGVyIHRvIHRoZSBwYWdlLlxuICAgICBwdWIgZm4gYXNfcHRyKFx1MDAyNnNlbGYpIC1cdTAwM2UgKm11dCBiaW5kaW5nczo6cGFnZSB7XG4tICAgICAgICBzZWxmLnBhZ2UuYXNfcHRyKClcbisgICAgICAgIE9wYXF1ZTo6Y2FzdF9pbnRvKFx1MDAyNnNlbGYucGFnZSlcbiAgICAgfVxuIFxuICAgICAvLy8gR2V0IHRoZSBub2RlIGlkIGNvbnRhaW5pbmcgdGhpcyBwYWdlLlxuQEAgLTIwNiw2ICsxNDMsMjAgQEAgcHViIGZuIG5pZChcdTAwMjZzZWxmKSAtXHUwMDNlIGkzMiB7XG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6cGFnZV90b19uaWQoc2VsZi5hc19wdHIoKSkgfVxuICAgICB9XG4gXG4rICAgIC8vLyBDcmVhdGUgYSBgXHUwMDI2UGFnZWAgZnJvbSBhIHJhdyBgc3RydWN0IHBhZ2VgIHBvaW50ZXIuXG4rICAgIC8vL1xuKyAgICAvLy8gIyBTYWZldHlcbisgICAgLy8vXG4rICAgIC8vLyBgcHRyYCBtdXN0IGJlIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkIHJlZmVyZW5jZSB3aXRoIGEgbGlmZXRpbWUgb2YgYCdhYC5cbisgICAgI1tpbmxpbmVdXG4rICAgIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXdcdTAwM2MnYVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGFnZSkgLVx1MDAzZSBcdTAwMjYnYSBTZWxmIHtcbisgICAgICAgIC8vIElOVkFSSUFOVDogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIGBwdHJgIHJlZmVycyB0byBhIHZhbGlkIGBzdHJ1Y3QgcGFnZWAsIHNvXG4rICAgICAgICAvLyB0aGUgcmV0dXJuZWQgcmVmZXJlbmNlIHVwaG9sZHMgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBQYWdlYC5cbisgICAgICAgIC8vIFNBRkVUWTogQnkgZnVuY3Rpb24gc2FmZXR5IHJlcXVpcmVtZW50cywgYHB0cmAgaXMgbm90IG51bGwgYW5kIGlzIGNvbnZlcnRpYmxlIHRvIGEgc2hhcmVkXG4rICAgICAgICAvLyByZWZlcmVuY2UuXG4rICAgICAgICB1bnNhZmUgeyBcdTAwMjYqcHRyLmNhc3QoKSB9XG4rICAgIH1cbitcbiAgICAgLy8vIFJ1bnMgYSBwaWVjZSBvZiBjb2RlIHdpdGggdGhpcyBwYWdlIG1hcHBlZCB0byBhbiBhZGRyZXNzLlxuICAgICAvLy9cbiAgICAgLy8vIFRoZSBwYWdlIGlzIHVubWFwcGVkIHdoZW4gdGhpcyBjYWxsIHJldHVybnMuXG5AQCAtMzcyLDEwICszMjMsMTEgQEAgcHViIHVuc2FmZSBmbiBjb3B5X2Zyb21fdXNlcl9zbGljZV9yYXcoXG4gICAgIH1cbiB9XG4gXG4taW1wbCBEcm9wIGZvciBQYWdlIHtcbitpbXBsIE93bmFibGUgZm9yIFBhZ2Uge1xuICAgICAjW2lubGluZV1cbi0gICAgZm4gZHJvcChcdTAwMjZtdXQgc2VsZikge1xuLSAgICAgICAgLy8gU0FGRVRZOiBCeSB0aGUgdHlwZSBpbnZhcmlhbnRzLCB3ZSBoYXZlIG93bmVyc2hpcCBvZiB0aGUgcGFnZSBhbmQgY2FuIGZyZWUgaXQuXG4tICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6X19mcmVlX3BhZ2VzKHNlbGYucGFnZS5hc19wdHIoKSwgMCkgfTtcbisgICAgdW5zYWZlIGZuIHJlbGVhc2UodGhpczogTm9uTnVsbFx1MDAzY1NlbGZcdTAwM2UpIHtcbisgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIGZ1bmN0aW9uIHNhZmV0eSByZXF1aXJlbWVudHMsIHdlIGhhdmUgb3duZXJzaGlwIG9mIHRoZSBwYWdlIGFuZCBjYW4gZnJlZVxuKyAgICAgICAgLy8gaXQuIFNpbmNlIFBhZ2UgaXMgdHJhbnNwYXJlbnQsIHdlIGNhbiBjYXN0IHRoZSByYXcgcG9pbnRlciBkaXJlY3RseS5cbisgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpfX2ZyZWVfcGFnZXModGhpcy5hc19wdHIoKS5jYXN0KCksIDApIH07XG4gICAgIH1cbiB9XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGNpLnJzIGIvcnVzdC9rZXJuZWwvcGNpLnJzXG5pbmRleCA1MDcxY2FlNjU0M2ZkMi4uZWE5ZWY5OWNlY2IwNzYgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9wY2kucnNcbisrKyBiL3J1c3Qva2VybmVsL3BjaS5yc1xuQEAgLTE5LDYgKzE5LDEwIEBAXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN0cjo6Q1N0cixcbisgICAgc3luYzo6YXJlZjo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsXG4gICAgIFRoaXNNb2R1bGUsIC8vXG4gfTtcbkBAIC00ODEsNyArNDg1LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBkZXZpY2U6OkFzQnVzRGV2aWNlXHUwMDNjQ3R4XHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2VcbiBpbXBsXHUwMDNjJ2FcdTAwM2UgY3JhdGU6OmRtYTo6RGV2aWNlXHUwMDNjJ2FcdTAwM2UgZm9yIERldmljZVx1MDAzY2RldmljZTo6Q29yZVx1MDAzYydhXHUwMDNlXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgZ3VhcmFudGVlcyB0aGF0IHRoZSByZWZjb3VudCBpcyBub24temVyby5cbiAgICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpwY2lfZGV2X2dldChzZWxmLmFzX3JhdygpKSB9O1xuQEAgLTQ5Myw2ICs0OTcsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZEZXZpY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuK1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3BpZF9uYW1lc3BhY2UucnMgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5pbmRleCA5NzlhOTcxOGYxNTNkOC4uMDY3ZjY4Yjk5ZThjNWMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9waWRfbmFtZXNwYWNlLnJzXG5AQCAtNyw3ICs3LDE0IEBAXG4gLy8hIEMgaGVhZGVyOiBbYGluY2x1ZGUvbGludXgvcGlkX25hbWVzcGFjZS5oYF0oc3JjdHJlZS9pbmNsdWRlL2xpbnV4L3BpZF9uYW1lc3BhY2UuaCkgYW5kXG4gLy8hIFtgaW5jbHVkZS9saW51eC9waWQuaGBdKHNyY3RyZWUvaW5jbHVkZS9saW51eC9waWQuaClcbiBcbi11c2UgY3JhdGU6OntiaW5kaW5ncywgc3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCwgdHlwZXM6Ok9wYXF1ZX07XG4rdXNlIGNyYXRlOjp7XG4rICAgIGJpbmRpbmdzLFxuKyAgICBzeW5jOjphcmVmOjpSZWZDb3VudGVkLFxuKyAgICB0eXBlczo6e1xuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIE9wYXF1ZSwgLy9cbisgICAgfSwgLy9cbit9O1xuIHVzZSBjb3JlOjpwdHI7XG4gXG4gLy8vIFdyYXBzIHRoZSBrZXJuZWwncyBgc3RydWN0IHBpZF9uYW1lc3BhY2VgLiBUaHJlYWQgc2FmZS5cbkBAIC00MSw3ICs0OCw3IEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9wdHJcdTAwM2MnYVx1MDAzZShwdHI6ICpjb25zdCBiaW5kaW5nczo6cGlkX25hbWVzcGFjZSkgLVx1MDAzZSBcdTAwMjYnYSBTZWxmIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYFBpZE5hbWVzcGFjZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBQaWROYW1lc3BhY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC01NSw2ICs2MiwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IHB0cjo6Tm9uTnVsbFx1MDAzY1BpZE5hbWVzcGFjZVx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NQaWROYW1lc3BhY2VcdTAwM2VgIGZyb21cbisvLyBhIGBcdTAwMjZQaWROYW1lc3BhY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIFBpZE5hbWVzcGFjZSB7fVxuK1xuIC8vIFNBRkVUWTpcbiAvLyAtIGBQaWROYW1lc3BhY2U6OmRlY19yZWZgIGNhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkLlxuIC8vIC0gSXQgaXMgb2theSB0byBzZW5kIG93bmVyc2hpcCBvZiBgUGlkTmFtZXNwYWNlYCBhY3Jvc3MgdGhyZWFkIGJvdW5kYXJpZXMuXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnMgYi9ydXN0L2tlcm5lbC9wbGF0Zm9ybS5yc1xuaW5kZXggOWIzNjJlMDQ5NWQzMjMuLjBiYTY3NjQ0NWIwNmQ3IDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcGxhdGZvcm0ucnNcbisrKyBiL3J1c3Qva2VybmVsL3BsYXRmb3JtLnJzXG5AQCAtMjcsNiArMjcsMTAgQEBcbiAgICAgfSxcbiAgICAgb2YsXG4gICAgIHByZWx1ZGU6OiosXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtNTE4LDcgKzUyMiw3IEBAIHB1YiBmbiBvcHRpb25hbF9pcnFfYnlfbmFtZShcdTAwMjZzZWxmLCBuYW1lOiBcdTAwMjZDU3RyKSAtXHUwMDNlIFJlc3VsdFx1MDAzY0lycVJlcXVlc3RcdTAwM2MnX1x1MDAzZVx1MDAzZSB7XG4gaW1wbFx1MDAzYydhXHUwMDNlIGNyYXRlOjpkbWE6OkRldmljZVx1MDAzYydhXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NkZXZpY2U6OkNvcmVcdTAwM2MnYVx1MDAzZVx1MDAzZSB7fVxuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBEZXZpY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgY3JhdGU6OnN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRGV2aWNlIHtcbiAgICAgZm4gaW5jX3JlZihcdTAwMjZzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSBleGlzdGVuY2Ugb2YgYSBzaGFyZWQgcmVmZXJlbmNlIGd1YXJhbnRlZXMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uLXplcm8uXG4gICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6Z2V0X2RldmljZShzZWxmLmFzX3JlZigpLmFzX3JhdygpKSB9O1xuQEAgLTUzMCw2ICs1MzQsMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NEZXZpY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZEZXZpY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIERldmljZSB7fVxuK1xuIGltcGxcdTAwM2NDdHg6IGRldmljZTo6RGV2aWNlQ29udGV4dFx1MDAzZSBBc1JlZlx1MDAzY2RldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlXHUwMDNlIGZvciBEZXZpY2VcdTAwM2NDdHhcdTAwM2Uge1xuICAgICBmbiBhc19yZWYoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZkZXZpY2U6OkRldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgICAgICAvLyBTQUZFVFk6IEJ5IHRoZSB0eXBlIGludmFyaWFudCBvZiBgU2VsZmAsIGBzZWxmLmFzX3JhdygpYCBpcyBhIHBvaW50ZXIgdG8gYSB2YWxpZFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3B3bS5ycyBiL3J1c3Qva2VybmVsL3B3bS5yc1xuaW5kZXggNmM5ZDY2NzAwOWVmN2IuLjJkMWNkNzRkZDk4ZTFlIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvcHdtLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9wd20ucnNcbkBAIC0xMyw3ICsxMywxMSBAQFxuICAgICBkZXZyZXMsXG4gICAgIGVycm9yOjp7c2VsZiwgdG9fcmVzdWx0fSxcbiAgICAgcHJlbHVkZTo6Kixcbi0gICAgc3luYzo6YXJlZjo6e0FSZWYsIEFsd2F5c1JlZkNvdW50ZWR9LFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBUmVmLFxuKyAgICAgICAgQWx3YXlzUmVmQ291bnRlZCxcbisgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4rICAgIH0sXG4gICAgIHR5cGVzOjpPcGFxdWUsIC8vXG4gfTtcbiB1c2UgY29yZTo6e1xuQEAgLTYyOSw3ICs2MzMsNyBAQCBwdWIgZm4gbmV3XHUwMDNjJ2FcdTAwM2UoXG4gfVxuIFxuIC8vIFNBRkVUWTogSW1wbGVtZW50cyByZWZjb3VudGluZyBmb3IgYENoaXBgIHVzaW5nIHRoZSBlbWJlZGRlZCBgc3RydWN0IGRldmljZWAuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBQd21PcHNcdTAwM2UgQWx3YXlzUmVmQ291bnRlZCBmb3IgQ2hpcFx1MDAzY1RcdTAwM2Uge1xuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIFJlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBgc2VsZi4wLmdldCgpYCBwb2ludHMgdG8gYSB2YWxpZCBgcHdtX2NoaXBgIGJlY2F1c2UgYHNlbGZgIGV4aXN0cy5cbkBAIC02NDcsNiArNjUxLDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogTm9uTnVsbFx1MDAzY0NoaXBcdTAwM2NUXHUwMDNlXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0NoaXBcdTAwM2NUXHUwMDNlXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2Q2hpcFx1MDAzY1RcdTAwM2VgLlxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUHdtT3BzXHUwMDNlIEFsd2F5c1JlZkNvdW50ZWQgZm9yIENoaXBcdTAwM2NUXHUwMDNlIHt9XG4rXG4gLy8gU0FGRVRZOiBgQ2hpcGAgaXMgYSB3cmFwcGVyIGFyb3VuZCBgKm11dCBiaW5kaW5nczo6cHdtX2NoaXBgLiBUaGUgdW5kZXJseWluZyBDXG4gLy8gc3RydWN0dXJlJ3Mgc3RhdGUgaXMgbWFuYWdlZCBhbmQgc3luY2hyb25pemVkIGJ5IHRoZSBrZXJuZWwncyBkZXZpY2UgbW9kZWxcbiAvLyBhbmQgUFdNIGNvcmUgbG9ja2luZyBtZWNoYW5pc21zLiBUaGVyZWZvcmUsIGl0IGlzIHNhZmUgdG8gbW92ZSB0aGUgYENoaXBgXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzIGIvcnVzdC9rZXJuZWwvc3luYy9hcmVmLnJzXG5pbmRleCBiNzIxYjJlMDBiOTg2Zi4uZTZmZmU3YzY1MGMzOWMgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9zeW5jL2FyZWYucnNcbisrKyBiL3J1c3Qva2VybmVsL3N5bmMvYXJlZi5yc1xuQEAgLTExLDcgKzExLDcgQEBcbiAvLyEgdW5kZXJseWluZyBvYmplY3QsIGJ1dCB0aGlzIHJlZmNvdW50IGlzIGludGVybmFsIHRvIHRoZSBvYmplY3QuIEl0IGVzc2VudGlhbGx5IGlzIGEgUnVzdFxuIC8vISBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGdldF9gIGFuZCBgcHV0X2AgcGF0dGVybiB1c2VkIGluIEMgZm9yIHJlZmVyZW5jZSBjb3VudGluZy5cbiAvLyFcbi0vLyEgVG8gbWFrZSB1c2Ugb2YgW2BBUmVmXHUwMDNjTXlUeXBlXHUwMDNlYF0sIGBNeVR5cGVgIG5lZWRzIHRvIGltcGxlbWVudCBbYEFsd2F5c1JlZkNvdW50ZWRgXS4gSXQgaXMgYSB0cmFpdFxuKy8vISBUbyBtYWtlIHVzZSBvZiBbYEFSZWZcdTAwM2NNeVR5cGVcdTAwM2VgXSwgYE15VHlwZWAgbmVlZHMgdG8gaW1wbGVtZW50IFtgUmVmQ291bnRlZGBdLiBJdCBpcyBhIHRyYWl0XG4gLy8hIGZvciBhY2Nlc3NpbmcgdGhlIGludGVybmFsIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3Qgb2YgdGhlIGBNeVR5cGVgIHR5cGUuXG4gLy8hXG4gLy8hIFtgQXJjYF06IGNyYXRlOjpzeW5jOjpBcmNcbkBAIC0yMywyNiArMjMsMzUgQEBcbiAgICAgb3BzOjpEZXJlZixcbiAgICAgcHRyOjpOb25OdWxsLCAvL1xuIH07XG4rdXNlIGtlcm5lbDo6dHlwZXM6OntcbisgICAgT3duYWJsZVJlZkNvdW50ZWQsXG4rICAgIE93bmVkLCAvL1xuK307XG4gXG4tLy8vIFR5cGVzIHRoYXQgYXJlIF9hbHdheXNfIHJlZmVyZW5jZSBjb3VudGVkLlxuKy8vLyBUeXBlcyB0aGF0IGFyZSBpbnRlcm5hbGx5IHJlZmVyZW5jZSBjb3VudGVkLlxuIC8vL1xuIC8vLyBJdCBhbGxvd3Mgc3VjaCB0eXBlcyB0byBkZWZpbmUgdGhlaXIgb3duIGN1c3RvbSByZWYgaW5jcmVtZW50IGFuZCBkZWNyZW1lbnQgZnVuY3Rpb25zLlxuLS8vLyBBZGRpdGlvbmFsbHksIGl0IGFsbG93cyB1c2VycyB0byBjb252ZXJ0IGZyb20gYSBzaGFyZWQgcmVmZXJlbmNlIGBcdTAwMjZUYCB0byBhbiBvd25lZCByZWZlcmVuY2Vcbi0vLy8gW2BBUmVmXHUwMDNjVFx1MDAzZWBdLlxuIC8vL1xuIC8vLyBUaGlzIGlzIHVzdWFsbHkgaW1wbGVtZW50ZWQgYnkgd3JhcHBlcnMgdG8gZXhpc3Rpbmcgc3RydWN0dXJlcyBvbiB0aGUgQyBzaWRlIG9mIHRoZSBjb2RlLiBGb3JcbiAvLy8gUnVzdCBjb2RlLCB0aGUgcmVjb21tZW5kYXRpb24gaXMgdG8gdXNlIFtgQXJjYF0oY3JhdGU6OnN5bmM6OkFyYykgdG8gY3JlYXRlIHJlZmVyZW5jZS1jb3VudGVkXG4gLy8vIGluc3RhbmNlcyBvZiBhIHR5cGUuXG4gLy8vXG4rLy8vIE5vdGU6IEltcGxlbWVudGluZyB0aGlzIHRyYWl0IGFsbG93cyB0eXBlcyB0byBiZSB3cmFwcGVkIGluIGFuIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXS4gSXQgcmVxdWlyZXMgYW5cbisvLy8gaW50ZXJuYWwgcmVmZXJlbmNlIGNvdW50IGFuZCBwcm92aWRlcyBvbmx5IHNoYXJlZCByZWZlcmVuY2VzLiBJZiB1bmlxdWUgcmVmZXJlbmNlcyBhcmUgcmVxdWlyZWRcbisvLy8gW2BPd25hYmxlYF0oY3JhdGU6OnR5cGVzOjpPd25hYmxlKSBzaG91bGQgYmUgaW1wbGVtZW50ZWQgd2hpY2ggYWxsb3dzIHR5cGVzIHRvIGJlIHdyYXBwZWQgaW4gYW5cbisvLy8gW2BPd25lZFx1MDAzY1NlbGZcdTAwM2VgXShjcmF0ZTo6dHlwZXM6Ok93bmVkKS4gSW1wbGVtZW50aW5nIHRoZSB0cmFpdFxuKy8vLyBbYE93bmFibGVSZWZDb3VudGVkYF0gYWxsb3dzIHRvIGNvbnZlcnQgYmV0d2VlbiB1bmlxdWUgYW5kXG4rLy8vIHNoYXJlZCByZWZlcmVuY2VzIChpLmUuIFtgT3duZWRcdTAwM2NTZWxmXHUwMDNlYF0oY3JhdGU6OnR5cGVzOjpPd25lZCkgYW5kXG4rLy8vIFtgQVJlZlx1MDAzY1NlbGZcdTAwM2VgXSkuXG4rLy8vXG4gLy8vICMgU2FmZXR5XG4gLy8vXG4gLy8vIEltcGxlbWVudGVycyBtdXN0IGVuc3VyZSB0aGF0IGluY3JlbWVudHMgdG8gdGhlIHJlZmVyZW5jZSBjb3VudCBrZWVwIHRoZSBvYmplY3QgYWxpdmUgaW4gbWVtb3J5XG4gLy8vIGF0IGxlYXN0IHVudGlsIG1hdGNoaW5nIGRlY3JlbWVudHMgYXJlIHBlcmZvcm1lZC5cbiAvLy9cbiAvLy8gSW1wbGVtZW50ZXJzIG11c3QgYWxzbyBlbnN1cmUgdGhhdCBhbGwgaW5zdGFuY2VzIGFyZSByZWZlcmVuY2UtY291bnRlZC4gKE90aGVyd2lzZSB0aGV5XG4tLy8vIHdvbid0IGJlIGFibGUgdG8gaG9ub3VyIHRoZSByZXF1aXJlbWVudCB0aGF0IFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIGtlZXAgdGhlIG9iamVjdFxuLS8vLyBhbGl2ZS4pXG4tcHViIHVuc2FmZSB0cmFpdCBBbHdheXNSZWZDb3VudGVkIHtcbisvLy8gd29uJ3QgYmUgYWJsZSB0byBob25vdXIgdGhlIHJlcXVpcmVtZW50IHRoYXQgW2BSZWZDb3VudGVkOjppbmNfcmVmYF0ga2VlcCB0aGUgb2JqZWN0IGFsaXZlLilcbitwdWIgdW5zYWZlIHRyYWl0IFJlZkNvdW50ZWQge1xuICAgICAvLy8gSW5jcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBvYmplY3QuXG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZik7XG4gXG5AQCAtNTUsMTEgKzY0LDI3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gICAgIC8vLyBDYWxsZXJzIG11c3QgZW5zdXJlIHRoYXQgdGhlcmUgd2FzIGEgcHJldmlvdXMgbWF0Y2hpbmcgaW5jcmVtZW50IHRvIHRoZSByZWZlcmVuY2UgY291bnQsXG4gICAgIC8vLyBhbmQgdGhhdCB0aGUgb2JqZWN0IGlzIG5vIGxvbmdlciB1c2VkIGFmdGVyIGl0cyByZWZlcmVuY2UgY291bnQgaXMgZGVjcmVtZW50ZWQgKGFzIGl0IG1heVxuICAgICAvLy8gcmVzdWx0IGluIHRoZSBvYmplY3QgYmVpbmcgZnJlZWQpLCB1bmxlc3MgdGhlIGNhbGxlciBvd25zIGFub3RoZXIgaW5jcmVtZW50IG9uIHRoZSByZWZjb3VudFxuLSAgICAvLy8gKGUuZy4sIGl0IGNhbGxzIFtgQWx3YXlzUmVmQ291bnRlZDo6aW5jX3JlZmBdIHR3aWNlLCB0aGVuIGNhbGxzXG4tICAgIC8vLyBbYEFsd2F5c1JlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbisgICAgLy8vIChlLmcuLCBpdCBjYWxscyBbYFJlZkNvdW50ZWQ6OmluY19yZWZgXSB0d2ljZSwgdGhlbiBjYWxscyBbYFJlZkNvdW50ZWQ6OmRlY19yZWZgXSBvbmNlKS5cbiAgICAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSk7XG4gfVxuIFxuKy8vLyBBbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgdHlwZS5cbisvLy9cbisvLy8gSXQgYWxsb3dzIGRlcml2aW5nIGEgY291bnRlZCByZWZlcmVuY2UgW2BBUmVmXHUwMDNjVFx1MDAzZWBdIGZyb20gYSBgXHUwMDI2VGAuXG4rLy8vXG4rLy8vIFRoaXMgcHJvdmlkZXMgc29tZSBjb252ZW5pZW5jZSwgYnV0IGl0IGFsbG93cyBcImVzY2FwaW5nXCIgYm9ycm93IGNoZWNrcyBvbiBgXHUwMDI2VGAuIEFzIGl0XG4rLy8vIGNvbXBsaWNhdGVzIGF0dGVtcHRzIHRvIGVuc3VyZSB0aGF0IGEgcmVmZXJlbmNlIHRvIFQgaXMgdW5pcXVlLCBpdCBpcyBvcHRpb25hbCB0byBwcm92aWRlIGZvclxuKy8vLyBbYFJlZkNvdW50ZWRgXSB0eXBlcy4gU2VlICpTYWZldHkqIGJlbG93LlxuKy8vL1xuKy8vLyAjIFNhZmV0eVxuKy8vL1xuKy8vLyBJbXBsZW1lbnRlcnMgbXVzdCBlbnN1cmUgdGhhdCBubyBzYWZldHkgaW52YXJpYW50cyBhcmUgdmlvbGF0ZWQgYnkgdXBncmFkaW5nIGFuIGBcdTAwMjZUYCB0byBhblxuKy8vLyBbYEFSZWZcdTAwM2NUXHUwMDNlYF0uIEluIHBhcnRpY3VsYXIgdGhhdCBpbXBsaWVzIFtgQWx3YXlzUmVmQ291bnRlZGBdIGFuZCBbYGNyYXRlOjp0eXBlczo6T3duYWJsZWBdXG4rLy8vIGNhbm5vdCBiZSBpbXBsZW1lbnRlZCBmb3IgdGhlIHNhbWUgdHlwZSwgYXMgdGhpcyB3b3VsZCBhbGxvdyB2aW9sYXRpbmcgdGhlIHVuaXF1ZW5lc3MgZ3VhcmFudGVlXG4rLy8vIG9mIFtgY3JhdGU6OnR5cGVzOjpPd25lZFx1MDAzY1RcdTAwM2VgXSBieSBkZXJlZmVyZW5jaW5nIGl0IGludG8gYW4gYFx1MDAyNlRgIGFuZCBvYnRhaW5pbmcgYW4gW2BBUmVmYF0gZnJvbVxuKy8vLyB0aGF0LlxuK3B1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZDogUmVmQ291bnRlZCB7fVxuK1xuIC8vLyBBbiBvd25lZCByZWZlcmVuY2UgdG8gYW4gYWx3YXlzLXJlZmVyZW5jZS1jb3VudGVkIG9iamVjdC5cbiAvLy9cbiAvLy8gVGhlIG9iamVjdCdzIHJlZmVyZW5jZSBjb3VudCBpcyBhdXRvbWF0aWNhbGx5IGRlY3JlbWVudGVkIHdoZW4gYW4gaW5zdGFuY2Ugb2YgW2BBUmVmYF0gaXNcbkBAIC03MCw3ICs5NSw3IEBAIHB1YiB1bnNhZmUgdHJhaXQgQWx3YXlzUmVmQ291bnRlZCB7XG4gLy8vXG4gLy8vIFRoZSBwb2ludGVyIHN0b3JlZCBpbiBgcHRyYCBpcyBub24tbnVsbCBhbmQgdmFsaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgW2BBUmVmYF0gaW5zdGFuY2UuIEluXG4gLy8vIHBhcnRpY3VsYXIsIHRoZSBbYEFSZWZgXSBpbnN0YW5jZSBvd25zIGFuIGluY3JlbWVudCBvbiB0aGUgdW5kZXJseWluZyBvYmplY3QncyByZWZlcmVuY2UgY291bnQuXG4tcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4rcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSB7XG4gICAgIHB0cjogTm9uTnVsbFx1MDAzY1RcdTAwM2UsXG4gICAgIF9wOiBQaGFudG9tRGF0YVx1MDAzY1RcdTAwM2UsXG4gfVxuQEAgLTc5LDE5ICsxMDQsMTkgQEAgcHViIHN0cnVjdCBBUmVmXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZFx1MDAzZSB7XG4gLy8gaXQgZWZmZWN0aXZlbHkgbWVhbnMgc2hhcmluZyBgXHUwMDI2VGAgKHdoaWNoIGlzIHNhZmUgYmVjYXVzZSBgVGAgaXMgYFN5bmNgKTsgYWRkaXRpb25hbGx5LCBpdCBuZWVkc1xuIC8vIGBUYCB0byBiZSBgU2VuZGAgYmVjYXVzZSBhbnkgdGhyZWFkIHRoYXQgaGFzIGFuIGBBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IHVsdGltYXRlbHkgYWNjZXNzIGBUYCB1c2luZyBhXG4gLy8gbXV0YWJsZSByZWZlcmVuY2UsIGZvciBleGFtcGxlLCB3aGVuIHRoZSByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvIGFuZCBgVGAgaXMgZHJvcHBlZC5cbi11bnNhZmUgaW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFx1MDAzZSBTZW5kIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK3Vuc2FmZSBpbXBsXHUwMDNjVDogUmVmQ291bnRlZCArIFN5bmMgKyBTZW5kXHUwMDNlIFNlbmQgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gLy8gU0FGRVRZOiBJdCBpcyBzYWZlIHRvIHNlbmQgYFx1MDAyNkFSZWZcdTAwM2NUXHUwMDNlYCB0byBhbm90aGVyIHRocmVhZCB3aGVuIHRoZSB1bmRlcmx5aW5nIGBUYCBpcyBgU3luY2BcbiAvLyBiZWNhdXNlIGl0IGVmZmVjdGl2ZWx5IG1lYW5zIHNoYXJpbmcgYFx1MDAyNlRgICh3aGljaCBpcyBzYWZlIGJlY2F1c2UgYFRgIGlzIGBTeW5jYCk7IGFkZGl0aW9uYWxseSxcbiAvLyBpdCBuZWVkcyBgVGAgdG8gYmUgYFNlbmRgIGJlY2F1c2UgYW55IHRocmVhZCB0aGF0IGhhcyBhIGBcdTAwMjZBUmVmXHUwMDNjVFx1MDAzZWAgbWF5IGNsb25lIGl0IGFuZCBnZXQgYW5cbiAvLyBgQVJlZlx1MDAzY1RcdTAwM2VgIG9uIHRoYXQgdGhyZWFkLCBzbyB0aGUgdGhyZWFkIG1heSB1bHRpbWF0ZWx5IGFjY2VzcyBgVGAgdXNpbmcgYSBtdXRhYmxlIHJlZmVyZW5jZSwgZm9yXG4gLy8gZXhhbXBsZSwgd2hlbiB0aGUgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVybyBhbmQgYFRgIGlzIGRyb3BwZWQuXG4tdW5zYWZlIGltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkICsgU3luYyArIFNlbmRcdTAwM2UgU3luYyBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge31cbit1bnNhZmUgaW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWQgKyBTeW5jICsgU2VuZFx1MDAzZSBTeW5jIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuIC8vIEV2ZW4gaWYgYFRgIGlzIHBpbm5lZCwgcG9pbnRlcnMgdG8gYFRgIGNhbiBzdGlsbCBtb3ZlLlxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkXHUwMDNlIFVucGluIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIEFSZWZcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBBUmVmXHUwMDNjVFx1MDAzZSB7XG4gICAgIC8vLyBDcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIFtgQVJlZmBdLlxuICAgICAvLy9cbiAgICAgLy8vIEl0IHRha2VzIG92ZXIgYW4gaW5jcmVtZW50IG9mIHRoZSByZWZlcmVuY2UgY291bnQgb24gdGhlIHVuZGVybHlpbmcgb2JqZWN0LlxuQEAgLTEyMCwxOSArMTQ1LDIxIEBAIHB1YiB1bnNhZmUgZm4gZnJvbV9yYXcocHRyOiBOb25OdWxsXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbiAgICAgLy8vXG4gICAgIC8vLyBgYGBcbiAgICAgLy8vIHVzZSBjb3JlOjpwdHI6Ok5vbk51bGw7XG4tICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgQWx3YXlzUmVmQ291bnRlZH07XG4rICAgIC8vLyB1c2Uga2VybmVsOjpzeW5jOjphcmVmOjp7QVJlZiwgUmVmQ291bnRlZH07XG4gICAgIC8vL1xuICAgICAvLy8gc3RydWN0IEVtcHR5IHt9XG4gICAgIC8vL1xuLSAgICAvLy8gIyAvLyBTQUZFVFk6IFRPRE8uXG4tICAgIC8vLyB1bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBFbXB0eSB7XG4rICAgIC8vLyAvLyBTQUZFVFk6IFRoZSBgUmVmQ291bnRlZGAgaW1wbGVtZW50YXRpb24gZm9yIGBFbXB0eWAgZG9lcyBub3QgY291bnQgcmVmZXJlbmNlcyBhbmQgbmV2ZXJcbisgICAgLy8vIC8vIGZyZWVzIHRoZSB1bmRlcmx5aW5nIG9iamVjdC4gVGh1cyB3ZSBjYW4gYWN0IGFzIG93bmluZyBhbiBpbmNyZW1lbnQgb24gdGhlIHJlZmNvdW50IGZvclxuKyAgICAvLy8gLy8gdGhlIG9iamVjdCB0aGF0IHdlIHBhc3MgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgYEFSZWZgLlxuKyAgICAvLy8gdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgRW1wdHkge1xuICAgICAvLy8gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge31cbiAgICAgLy8vICAgICB1bnNhZmUgZm4gZGVjX3JlZihfb2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge31cbiAgICAgLy8vIH1cbiAgICAgLy8vXG4gICAgIC8vLyBsZXQgbXV0IGRhdGEgPSBFbXB0eSB7fTtcbiAgICAgLy8vIGxldCBwdHIgPSBOb25OdWxsOjpcdTAwM2NFbXB0eVx1MDAzZTo6bmV3KFx1MDAyNm11dCBkYXRhKS51bndyYXAoKTtcbi0gICAgLy8vICMgLy8gU0FGRVRZOiBUT0RPLlxuKyAgICAvLy8gLy8gU0FGRVRZOiBXZSBrZWVwIGBkYXRhYCBhcm91bmQgbG9uZ2VyIHRoYW4gdGhlIGBBUmVmYC5cbiAgICAgLy8vIGxldCBkYXRhX3JlZjogQVJlZlx1MDAzY0VtcHR5XHUwMDNlID0gdW5zYWZlIHsgQVJlZjo6ZnJvbV9yYXcocHRyKSB9O1xuICAgICAvLy8gbGV0IHJhd19wdHI6IE5vbk51bGxcdTAwM2NFbXB0eVx1MDAzZSA9IEFSZWY6OmludG9fcmF3KGRhdGFfcmVmKTtcbiAgICAgLy8vXG5AQCAtMTQzLDcgKzE3MCw3IEBAIHB1YiBmbiBpbnRvX3JhdyhtZTogU2VsZikgLVx1MDAzZSBOb25OdWxsXHUwMDNjVFx1MDAzZSB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgQ2xvbmUgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbitpbXBsXHUwMDNjVDogUmVmQ291bnRlZFx1MDAzZSBDbG9uZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICAgICAgc2VsZi5pbmNfcmVmKCk7XG4gICAgICAgICAvLyBTQUZFVFk6IFdlIGp1c3QgaW5jcmVtZW50ZWQgdGhlIHJlZmNvdW50IGFib3ZlLlxuQEAgLTE1MSw3ICsxNzgsNyBAQCBmbiBjbG9uZShcdTAwMjZzZWxmKSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gfVxuIFxuLWltcGxcdTAwM2NUOiBBbHdheXNSZWZDb3VudGVkXHUwMDNlIERlcmVmIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4raW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRGVyZWYgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHtcbiAgICAgdHlwZSBUYXJnZXQgPSBUO1xuIFxuICAgICBmbiBkZXJlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNlNlbGY6OlRhcmdldCB7XG5AQCAtMTY4LDcgKzE5NSwxNCBAQCBmbiBmcm9tKGI6IFx1MDAyNlQpIC1cdTAwM2UgU2VsZiB7XG4gICAgIH1cbiB9XG4gXG4taW1wbFx1MDAzY1Q6IEFsd2F5c1JlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuK2ltcGxcdTAwM2NUOiBPd25hYmxlUmVmQ291bnRlZFx1MDAzZSBGcm9tXHUwMDNjT3duZWRcdTAwM2NUXHUwMDNlXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7XG4rICAgICNbaW5saW5lXVxuKyAgICBmbiBmcm9tKGI6IE93bmVkXHUwMDNjVFx1MDAzZSkgLVx1MDAzZSBTZWxmIHtcbisgICAgICAgIFQ6OmludG9fc2hhcmVkKGIpXG4rICAgIH1cbit9XG4rXG4raW1wbFx1MDAzY1Q6IFJlZkNvdW50ZWRcdTAwM2UgRHJvcCBmb3IgQVJlZlx1MDAzY1RcdTAwM2Uge1xuICAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gICAgICAgICAvLyBTQUZFVFk6IFRoZSB0eXBlIGludmFyaWFudHMgZ3VhcmFudGVlIHRoYXQgdGhlIGBBUmVmYCBvd25zIHRoZSByZWZlcmVuY2Ugd2UncmUgYWJvdXQgdG9cbiAgICAgICAgIC8vIGRlY3JlbWVudC5cbkBAIC0xNzgsMTkgKzIxMiwxOSBAQCBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjQVJlZlx1MDAzY1VcdTAwM2VcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbi0gICAgVDogQWx3YXlzUmVmQ291bnRlZCArIFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4tICAgIFU6IEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIFQ6IFJlZkNvdW50ZWQgKyBQYXJ0aWFsRXFcdTAwM2NVXHUwMDNlLFxuKyAgICBVOiBSZWZDb3VudGVkLFxuIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZBUmVmXHUwMDNjVVx1MDAzZSkgLVx1MDAzZSBib29sIHtcbiAgICAgICAgIFQ6OmVxKFx1MDAyNioqc2VsZiwgXHUwMDI2KipvdGhlcilcbiAgICAgfVxuIH1cbi1pbXBsXHUwMDNjVDogQWx3YXlzUmVmQ291bnRlZCArIEVxXHUwMDNlIEVxIGZvciBBUmVmXHUwMDNjVFx1MDAzZSB7fVxuK2ltcGxcdTAwM2NUOiBSZWZDb3VudGVkICsgRXFcdTAwM2UgRXEgZm9yIEFSZWZcdTAwM2NUXHUwMDNlIHt9XG4gXG4gaW1wbFx1MDAzY1QsIFVcdTAwM2UgUGFydGlhbEVxXHUwMDNjXHUwMDI2J18gVVx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkICsgUGFydGlhbEVxXHUwMDNjVVx1MDAzZSxcbisgICAgVDogUmVmQ291bnRlZCArIFBhcnRpYWxFcVx1MDAzY1VcdTAwM2UsXG4ge1xuICAgICAjW2lubGluZV1cbiAgICAgZm4gZXEoXHUwMDI2c2VsZiwgb3RoZXI6IFx1MDAyNlx1MDAyNlUpIC1cdTAwM2UgYm9vbCB7XG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdGFzay5ycyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcbmluZGV4IDM4MjczZjRlZWRiNTEzLi42MjU5NDMwYjBjYTMxOCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3Rhc2sucnNcbisrKyBiL3J1c3Qva2VybmVsL3Rhc2sucnNcbkBAIC0xMCw3ICsxMCwxMiBAQFxuICAgICBwaWRfbmFtZXNwYWNlOjpQaWROYW1lc3BhY2UsXG4gICAgIHByZWx1ZGU6OiosXG4gICAgIHN5bmM6OmFyZWY6OkFSZWYsXG4tICAgIHR5cGVzOjp7Tm90VGhyZWFkU2FmZSwgT3BhcXVlfSxcbisgICAgdHlwZXM6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBOb3RUaHJlYWRTYWZlLFxuKyAgICAgICAgT3BhcXVlLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSxcbiB9O1xuIHVzZSBjb3JlOjp7XG4gICAgIG9wczo6RGVyZWYsXG5AQCAtMzQ3LDcgKzM1Miw3IEBAIHB1YiBmbiBncm91cF9sZWFkZXIoXHUwMDI2c2VsZikgLVx1MDAzZSBcdTAwMjZUYXNrIHtcbiB9XG4gXG4gLy8gU0FGRVRZOiBUaGUgdHlwZSBpbnZhcmlhbnRzIGd1YXJhbnRlZSB0aGF0IGBUYXNrYCBpcyBhbHdheXMgcmVmY291bnRlZC5cbi11bnNhZmUgaW1wbCBjcmF0ZTo6c3luYzo6YXJlZjo6QWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7XG4rdW5zYWZlIGltcGwgUmVmQ291bnRlZCBmb3IgVGFzayB7XG4gICAgICNbaW5saW5lXVxuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGV4aXN0ZW5jZSBvZiBhIHNoYXJlZCByZWZlcmVuY2UgbWVhbnMgdGhhdCB0aGUgcmVmY291bnQgaXMgbm9uemVyby5cbkBAIC0zNjEsNiArMzY2LDEwIEBAIHVuc2FmZSBmbiBkZWNfcmVmKG9iajogcHRyOjpOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NUYXNrXHUwMDNlYCBmcm9tIGFcbisvLyBgXHUwMDI2VGFza2AuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgVGFzayB7fVxuK1xuIGltcGwgUGFydGlhbEVxIGZvciBUYXNrIHtcbiAgICAgI1tpbmxpbmVdXG4gICAgIGZuIGVxKFx1MDAyNnNlbGYsIG90aGVyOiBcdTAwMjZTZWxmKSAtXHUwMDNlIGJvb2wge1xuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL3R5cGVzLnJzIGIvcnVzdC9rZXJuZWwvdHlwZXMucnNcbmluZGV4IGFjMzE2ZmQ3YjUzOGZlLi42YWE3NjA5NTJjYjYzNSAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL3R5cGVzLnJzXG4rKysgYi9ydXN0L2tlcm5lbC90eXBlcy5yc1xuQEAgLTE1LDYgKzE1LDE4IEBAXG4gcHViIG1vZCBmb3JfbHQ7XG4gcHViIHVzZSBmb3JfbHQ6OkZvckx0O1xuIFxuK3B1YiB1c2UgY3JhdGU6OntcbisgICAgb3duZWQ6OntcbisgICAgICAgIE93bmFibGUsXG4rICAgICAgICBPd25hYmxlUmVmQ291bnRlZCxcbisgICAgICAgIE93bmVkLCAvL1xuKyAgICB9LFxuKyAgICBzeW5jOjphcmVmOjp7XG4rICAgICAgICBBbHdheXNSZWZDb3VudGVkLFxuKyAgICAgICAgUmVmQ291bnRlZCwgLy9cbisgICAgfSwgLy9cbit9O1xuK1xuIC8vLyBVc2VkIHRvIHRyYW5zZmVyIG93bmVyc2hpcCB0byBhbmQgZnJvbSBmb3JlaWduIChub24tUnVzdCkgbGFuZ3VhZ2VzLlxuIC8vL1xuIC8vLyBPd25lcnNoaXAgaXMgdHJhbnNmZXJyZWQgZnJvbSBSdXN0IHRvIGEgZm9yZWlnbiBsYW5ndWFnZSBieSBjYWxsaW5nIFtgU2VsZjo6aW50b19mb3JlaWduYF0gYW5kXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvdXNiLnJzIGIvcnVzdC9rZXJuZWwvdXNiLnJzXG5pbmRleCA3YWZmMGM4MmQwYWZjMC4uNTkzNTBjNmIwZGYyYWQgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC91c2IucnNcbisrKyBiL3J1c3Qva2VybmVsL3VzYi5yc1xuQEAgLTE4LDcgKzE4LDEwIEBAXG4gICAgICAgICB0b19yZXN1bHQsIC8vXG4gICAgIH0sXG4gICAgIHByZWx1ZGU6OiosXG4tICAgIHN5bmM6OmFyZWY6OkFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIHN5bmM6OmFyZWY6OntcbisgICAgICAgIEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgICAgICBSZWZDb3VudGVkLCAvL1xuKyAgICB9LFxuICAgICB0eXBlczo6T3BhcXVlLFxuICAgICBUaGlzTW9kdWxlLCAvL1xuIH07XG5AQCAtMzkyLDcgKzM5NSw3IEBAIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNkRldmljZSB7XG4gfVxuIFxuIC8vIFNBRkVUWTogSW5zdGFuY2VzIG9mIGBJbnRlcmZhY2VgIGFyZSBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQuXG4tdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgSW50ZXJmYWNlIHtcbit1bnNhZmUgaW1wbCBSZWZDb3VudGVkIGZvciBJbnRlcmZhY2Uge1xuICAgICBmbiBpbmNfcmVmKFx1MDAyNnNlbGYpIHtcbiAgICAgICAgIC8vIFNBRkVUWTogVGhlIGludmFyaWFudHMgb2YgYEludGVyZmFjZWAgZ3VhcmFudGVlIHRoYXQgYHNlbGYuYXNfcmF3KClgXG4gICAgICAgICAvLyByZXR1cm5zIGEgdmFsaWQgYHN0cnVjdCB1c2JfaW50ZXJmYWNlYCBwb2ludGVyLCBmb3Igd2hpY2ggd2Ugd2lsbFxuQEAgLTQwNiw2ICs0MDksMTAgQEAgdW5zYWZlIGZuIGRlY19yZWYob2JqOiBOb25OdWxsXHUwMDNjU2VsZlx1MDAzZSkge1xuICAgICB9XG4gfVxuIFxuKy8vIFNBRkVUWTogV2UgZG8gbm90IGltcGxlbWVudCBgT3duYWJsZWAsIHRodXMgaXQgaXMgb2theSB0byBvYnRhaW4gYW4gYEFSZWZcdTAwM2NJbnRlcmZhY2VcdTAwM2VgIGZyb20gYVxuKy8vIGBcdTAwMjZJbnRlcmZhY2VgLlxuK3Vuc2FmZSBpbXBsIEFsd2F5c1JlZkNvdW50ZWQgZm9yIEludGVyZmFjZSB7fVxuK1xuIC8vIFNBRkVUWTogQSBgSW50ZXJmYWNlYCBpcyBhbHdheXMgcmVmZXJlbmNlLWNvdW50ZWQgYW5kIGNhbiBiZSByZWxlYXNlZCBmcm9tIGFueSB0aHJlYWQuXG4gdW5zYWZlIGltcGwgU2VuZCBmb3IgSW50ZXJmYWNlIHt9XG4gXG5AQCAtNDQzLDcgKzQ1MCw3IEBAIGZuIGFzX3JhdyhcdTAwMjZzZWxmKSAtXHUwMDNlICptdXQgYmluZGluZ3M6OnVzYl9kZXZpY2Uge1xuIGtlcm5lbDo6aW1wbF9kZXZpY2VfY29udGV4dF9pbnRvX2FyZWYhKERldmljZSk7XG4gXG4gLy8gU0FGRVRZOiBJbnN0YW5jZXMgb2YgYERldmljZWAgYXJlIGFsd2F5cyByZWZlcmVuY2UtY291bnRlZC5cbi11bnNhZmUgaW1wbCBBbHdheXNSZWZDb3VudGVkIGZvciBEZXZpY2Uge1xuK3Vuc2FmZSBpbXBsIFJlZkNvdW50ZWQgZm9yIERldmljZSB7XG4gICAgIGZuIGluY19yZWYoXHUwMDI2c2VsZikge1xuICAgICAgICAgLy8gU0FGRVRZOiBUaGUgaW52YXJpYW50cyBvZiBgRGV2aWNlYCBndWFyYW50ZWUgdGhhdCBgc2VsZi5hc19yYXcoKWBcbiAgICAgICAgIC8vIHJldHVybnMgYSB2YWxpZCBgc3RydWN0IHVzYl9kZXZpY2VgIHBvaW50ZXIsIGZvciB3aGljaCB3ZSB3aWxsXG5AQCAtNDU3LDYgKzQ2NCwxMCBAQCB1bnNhZmUgZm4gZGVjX3JlZihvYmo6IE5vbk51bGxcdTAwM2NTZWxmXHUwMDNlKSB7XG4gICAgIH1cbiB9XG4gXG4rLy8gU0FGRVRZOiBXZSBkbyBub3QgaW1wbGVtZW50IGBPd25hYmxlYCwgdGh1cyBpdCBpcyBva2F5IHRvIG9idGFpbiBhbiBgQVJlZlx1MDAzY0RldmljZVx1MDAzZWAgZnJvbSBhXG4rLy8gYFx1MDAyNkRldmljZWAuXG4rdW5zYWZlIGltcGwgQWx3YXlzUmVmQ291bnRlZCBmb3IgRGV2aWNlIHt9XG4rXG4gaW1wbFx1MDAzY0N0eDogZGV2aWNlOjpEZXZpY2VDb250ZXh0XHUwMDNlIEFzUmVmXHUwMDNjZGV2aWNlOjpEZXZpY2VcdTAwM2NDdHhcdTAwM2VcdTAwM2UgZm9yIERldmljZVx1MDAzY0N0eFx1MDAzZSB7XG4gICAgIGZuIGFzX3JlZihcdTAwMjZzZWxmKSAtXHUwMDNlIFx1MDAyNmRldmljZTo6RGV2aWNlXHUwMDNjQ3R4XHUwMDNlIHtcbiAgICAgICAgIC8vIFNBRkVUWTogQnkgdGhlIHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuYXNfcmF3KClgIGlzIGEgcG9pbnRlciB0byBhIHZhbGlkXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzIGIvcnVzdC9rZXJuZWwvd29ya3F1ZXVlLnJzXG5pbmRleCA3ZTI1M2I2ZjI5OWNlMy4uNzc2NzNiOGVhNDVmYjEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC93b3JrcXVldWUucnNcbisrKyBiL3J1c3Qva2VybmVsL3dvcmtxdWV1ZS5yc1xuQEAgLTE5Miw3ICsxOTIsNyBAQFxuICAgICBzeW5jOjp7XG4gICAgICAgICBhcmVmOjp7XG4gICAgICAgICAgICAgQVJlZixcbi0gICAgICAgICAgICBBbHdheXNSZWZDb3VudGVkLCAvL1xuKyAgICAgICAgICAgIFJlZkNvdW50ZWQsIC8vXG4gICAgICAgICB9LFxuICAgICAgICAgQXJjLFxuICAgICAgICAgTG9ja0NsYXNzS2V5LCAvL1xuQEAgLTk1NCw3ICs5NTQsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIFBpblx1MDAzY0tCb3hcdTAwM2NUXHUwMDNlXHUwMDNlXG4gLy8gICAgIGltcGxlbWVudGF0aW9uIG9mIGBXb3JrSXRlbVBvaW50ZXJgIGZvciBgQVJlZlx1MDAzY1RcdTAwM2VgLlxuIHVuc2FmZSBpbXBsXHUwMDNjVCwgY29uc3QgSUQ6IHU2NFx1MDAzZSBXb3JrSXRlbVBvaW50ZXJcdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxuKyAgICBUOiBSZWZDb3VudGVkLFxuICAgICBUOiBXb3JrSXRlbVx1MDAzY0lELCBQb2ludGVyID0gU2VsZlx1MDAzZSxcbiAgICAgVDogSGFzV29ya1x1MDAzY1QsIElEXHUwMDNlLFxuIHtcbkBAIC05ODcsNyArOTg3LDcgQEAgdW5zYWZlIGltcGxcdTAwM2NULCBjb25zdCBJRDogdTY0XHUwMDNlIFdvcmtJdGVtUG9pbnRlclx1MDAzY0lEXHUwMDNlIGZvciBBUmVmXHUwMDNjVFx1MDAzZVxuIC8vIHJlcXVpcmVtZW50cyBvZiBgV29ya0l0ZW1Qb2ludGVyYC5cbiB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3V29ya0l0ZW1cdTAwM2NJRFx1MDAzZSBmb3IgQVJlZlx1MDAzY1RcdTAwM2VcbiB3aGVyZVxuLSAgICBUOiBBbHdheXNSZWZDb3VudGVkLFxuKyAgICBUOiBSZWZDb3VudGVkLFxuICAgICBUOiBXb3JrSXRlbVx1MDAzY0lELCBQb2ludGVyID0gU2VsZlx1MDAzZSxcbiAgICAgVDogSGFzV29ya1x1MDAzY1QsIElEXHUwMDNlLFxuIHtcbkBAIC0xMDIwLDcgKzEwMjAsNyBAQCB1bnNhZmUgaW1wbFx1MDAzY1QsIGNvbnN0IElEOiB1NjRcdTAwM2UgUmF3RGVsYXllZFdvcmtJdGVtXHUwMDNjSURcdTAwM2UgZm9yIEFSZWZcdTAwM2NUXHUwMDNlXG4gd2hlcmVcbiAgICAgVDogV29ya0l0ZW1cdTAwM2NJRCwgUG9pbnRlciA9IFNlbGZcdTAwM2UsXG4gICAgIFQ6IEhhc0RlbGF5ZWRXb3JrXHUwMDNjVCwgSURcdTAwM2UsXG4tICAgIFQ6IEFsd2F5c1JlZkNvdW50ZWQsXG4rICAgIFQ6IFJlZkNvdW50ZWQsXG4ge1xuIH1cbiBcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjA2OjA0LjYxNTYyMDc0NVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzg4Mzg4MDIwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlJlZmFjdG9yaW5nIERlZXAgRGl2ZTogTm8gRnV6emluZyBOZWVkZWQqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIGludHJvZHVjaW5nIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgYW5kIHJlb3JnYW5pemluZyBob3cgcmVmZXJlbmNlIGNvdW50aW5nIHdvcmtzLiBJdCBzZWVtcyBsaWtlIGEgZnVuZGFtZW50YWwgcmVmYWN0b3Jpbmcgb2YgdGhlIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIE15IGluaXRpYWwgdGhvdWdodCBpcywgaXMgdGhpcyBqdXN0IGEgdHlwZSBzeXN0ZW0gc2h1ZmZsZSwgb3IgYXJlIHRoZXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byBjb25zaWRlcj9cblxuSSBzZWUgdGhhdCBpdCdzIGludHJvZHVjaW5nIG5ldyB0eXBlcyBhbmQgdHJhaXRzIGluIGBydXN0L2tlcm5lbC9vd25lZC5yc2AgYW5kIGNoYW5naW5nIGhvdyBgQWx3YXlzUmVmQ291bnRlZGAgaXMgc3RydWN0dXJlZC4gSXQncyBhbHNvIG1vZGlmeWluZyBob3cgYFBhZ2VgIGlzIGhhbmRsZWQsIHVzaW5nIGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgIGluc3RlYWQgb2YgZGlyZWN0bHkgcmV0dXJuaW5nIGBQYWdlYCBmcm9tIGBhbGxvY19wYWdlYC4gVGhpcyBjaGFuZ2UgcmlwcGxlcyB0aHJvdWdoIHRvIHBsYWNlcyBsaWtlIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIgKGBkcml2ZXJzL2FuZHJvaWQvYmluZGVyL3BhZ2VfcmFuZ2UucnNgKSwgYWRhcHRpbmcgdG8gdGhlIG5ldyB0eXBlLlxuXG5NeSBmb2N1cyBpcyBhbHdheXMgb24gbmV3IGZ1bmN0aW9uYWxpdHkgdGhhdCBjb3VsZCBiZSBhIGZ1enppbmcgdGFyZ2V0LiBBZnRlciBhIGNsb3NlIGxvb2ssIHRoZSBwYXRjaCBpcyBjb25maW5lZCB0byB0aGUgUnVzdCBhYnN0cmFjdGlvbnMgYW5kIGFkYXB0YXRpb25zIHRvIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIuIFRoZSBCaW5kZXIgZHJpdmVyIGNoYW5nZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZCB1cGRhdGVzIHRvIHVzZSB0aGUgbmV3IGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgIHR5cGUgc2lnbmF0dXJlLCB3aGljaCBpcyBtZXJlbHkgYSB3cmFwcGVyIGFyb3VuZCBhIGBOb25OdWxsXHUwMDNjVFx1MDAzZWAgYW5kIGNhbGxzIGBUOjpyZWxlYXNlYCBvbiBkcm9wLiBUaGlzIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiB3aGVyZSBgUGFnZWAgd2FzIGltcGxlbWVudGluZyBgRHJvcGAuXG5cbkknbSB2ZXJpZnlpbmcgaWYgdGhlcmUgYXJlIGFueSBuZXcgZnVuY3Rpb25zIHRoYXQgY291bGQgcG90ZW50aWFsbHkgYmUgZnV6emVkLiBJdCBhZGRzIG1ldGhvZHMgbGlrZSBgT3duZWQ6OmZyb21fcmF3YCwgYE93bmVkOjppbnRvX3Jhd2AsIGV0Yy4gVGhlc2UgYXJlIGFsbCBwYXJ0IG9mIHRoZSBSdXN0IGFic3RyYWN0aW9uIG1hY2hpbmVyeS4gVGhlcmUncyBubyBuZXcgQyBjb2RlIGV4cG9zZWQsIG5vIGNvbXBsZXggbG9naWMgaW50cm9kdWNlZC4gSXQncyBhbGwgYWJvdXQgcmVzaGFwaW5nIHR5cGVzLlxuXG5JJ20gY2hlY2tpbmcgaWYgdGhlcmUncyBhbnkgYWx0ZXJhdGlvbiB0byBiZWhhdmlvciBpbiBgZHJpdmVycy9hbmRyb2lkL2JpbmRlci9wYWdlX3JhbmdlLnJzYC4gSXQncyBqdXN0IHJlcGxhY2luZyBhIGZpZWxkIHR5cGUgKGBQYWdlYCB3aXRoIGBPd25lZFx1MDAzY1BhZ2VcdTAwM2VgKS4gU2luY2UgYm90aCBhcmUgZXNzZW50aWFsbHkgcG9pbnRlcnMgdW5kZXIgdGhlIGhvb2QsIHRoZSBtZW1vcnkgbGF5b3V0IGlzIGlkZW50aWNhbCwgYW5kIHNvIGlzIHRoZSBkcm9wIGJlaGF2aW9yLlxuXG5CYXNlZCBvbiB0aGlzIGFuYWx5c2lzLCB0aGVyZSdzIG5vIHJlYXNvbiB0byBmdXp6IHRoaXMuIFRoaXMgaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zICh0eXBlcywgdHJhaXRzKSBhbmQgYWRhcHRhdGlvbiBvZiBleGlzdGluZyBjb2RlIHRvIHVzZSB0aGVtLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMsIG5ldyBzeXNjYWxscywgbmV3IGRyaXZlcnMsIG9yIGNoYW5nZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXG5cbkknbSBkb3VibGUtY2hlY2tpbmcgYHJ1c3Qva2VybmVsL2FsbG9jL2tib3gucnNgLCBhbmQgaXQncyBqdXN0IGEgaGVscGVyIG1ldGhvZCwgbm90aGluZyB0aGF0IGV4cGFuZHMgdGhlIGF0dGFjayBzdXJmYWNlLlxuXG4qKldvcnRoRnV6emluZz1mYWxzZSoqIGJlY2F1c2UgdGhpcyBpcyBhIHB1cmUgcmVmYWN0b3Jpbmcgb2YgUnVzdCBhYnN0cmFjdGlvbnMgKGludHJvZHVjaW5nIGBPd25lZGAgYW5kIGBPd25hYmxlYCwgc3BsaXR0aW5nIGBBbHdheXNSZWZDb3VudGVkYCkgYW5kIGFkYXB0aW5nIGV4aXN0aW5nIGNvZGUgdG8gdXNlIHRoZW0sIHdpdGhvdXQgY2hhbmdpbmcgZnVuY3Rpb25hbCBleGVjdXRpb24gZmxvdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMwMTgsIk91dHB1dFRva2VucyI6MTIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjA2OjE3LjAwNDAxMzg3NVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk1NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBwdXJlIHJlZmFjdG9yaW5nIG9mIFJ1c3QgYWJzdHJhY3Rpb25zIGluIHRoZSBrZXJuZWwuIEl0IGludHJvZHVjZXMgYE93bmVkYCBhbmQgYE93bmFibGVgIHR5cGVzLCBzcGxpdHMgYEFsd2F5c1JlZkNvdW50ZWRgIGludG8gYFJlZkNvdW50ZWRgIGFuZCBgQWx3YXlzUmVmQ291bnRlZGAsIGFuZCBhZGFwdHMgZXhpc3RpbmcgUnVzdCBjb2RlIChsaWtlIGBQYWdlYCBhbmQgdGhlIEFuZHJvaWQgQmluZGVyIGRyaXZlcikgdG8gdXNlIHRoZXNlIG5ldyB0eXBlcy4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljLCBuZXcgZHJpdmVycywgb3IgYWx0ZXIgdGhlIGV4ZWN1dGlvbiBmbG93IGluIGEgd2F5IHRoYXQgcmVxdWlyZXMgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZSByZWZhY3RvcmluZyBvZiBSdXN0IGFic3RyYWN0aW9ucyBpbiB0aGUga2VybmVsLiBJdCBpbnRyb2R1Y2VzIGBPd25lZGAgYW5kIGBPd25hYmxlYCB0eXBlcywgc3BsaXRzIGBBbHdheXNSZWZDb3VudGVkYCBpbnRvIGBSZWZDb3VudGVkYCBhbmQgYEFsd2F5c1JlZkNvdW50ZWRgLCBhbmQgYWRhcHRzIGV4aXN0aW5nIFJ1c3QgY29kZSAobGlrZSBgUGFnZWAgYW5kIHRoZSBBbmRyb2lkIEJpbmRlciBkcml2ZXIpIHRvIHVzZSB0aGVzZSBuZXcgdHlwZXMuIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYywgbmV3IGRyaXZlcnMsIG9yIGFsdGVyIHRoZSBleGVjdXRpb24gZmxvdyBpbiBhIHdheSB0aGF0IHJlcXVpcmVzIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowxwv96[1] Phase: Running StartedAt: 2026-06-26 22:06:27 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowxwv96[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-06-26 22:06:27 +0000 UTC FinishedAt: 2026-06-26 22:06:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}