Name: series-workflowqmwhp Phase: Failed StartedAt: 2026-08-31 09:30:51 +0000 UTC FinishedAt: 2026-08-31 10:30:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmwhp[0] Phase: Succeeded StartedAt: 2026-08-31 09:30:51 +0000 UTC FinishedAt: 2026-08-31 10:30:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmwhp[0].run-triage Phase: Succeeded StartedAt: 2026-08-31 09:30:51 +0000 UTC FinishedAt: 2026-08-31 10:30:15 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDEwOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpU2lsaWNvbiBBQ0MgVkZJTyBQQ0kgZHJpdmVyIChkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jKSwgd2hpY2ggcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBQQ0llIGhhcmR3YXJlIChTRUMsIEhQUkUsIFpJUCkgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDEwOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWRhMmM2NjdjNTdhZDhiMDNkNjI3Zjg3MTVhNGZkMmQzNDc0ODYxNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDEwOjI3OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jXG5pbmRleCA4NjM2MmVjNDI0YTUwLi40ZjEyY2FiOTY1NDVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xuQEAgLTExNTQsOSAmIzQzOzExNTQsMTQgQEAgc3RhdGljIHZvaWQgaGlzaV9hY2NfdmZfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4ge1xuIFx0c3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlICpoaXNpX2FjY192ZGV2ID0gaGlzaV9hY2NfZHJ2ZGF0YShwZGV2KTtcbiBcdHN0cnVjdCBoaXNpX3FtICpxbSA9IGhpc2lfYWNjX3ZkZXYtXHUwMDNlcGZfcW07XG4tXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZxbS1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiBcdHUzMiBkZWxheSA9IDA7XG4gXG4mIzQzO1x0aWYgKCFxbSB8fCAhcW0tXHUwMDNlaW9fYmFzZSkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O1BGIFFNIG5vdCBhdmFpbGFibGUgZm9yIHJlc2V0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogQWxsIHJlc2V0IHJlcXVlc3RzIG5lZWQgdG8gYmUgcXVldWVkIGZvciBwcm9jZXNzaW5nICovXG4gXHR3aGlsZSAodGVzdF9hbmRfc2V0X2JpdChRTV9SRVNFVFRJTkcsIFx1MDAyNnFtLVx1MDAzZW1pc2NfY3RsKSkge1xuIFx0XHRtc2xlZXAoMSk7XG5AQCAtMTE3NCw4ICYjNDM7MTE3OSwxNCBAQCBzdGF0aWMgdm9pZCBoaXNpX2FjY192Zl9wY2lfYWVyX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYgPSBoaXNpX2FjY19kcnZkYXRhKHBkZXYpO1xuIFx0c3RydWN0IGhpc2lfcW0gKnFtID0gaGlzaV9hY2NfdmRldi1cdTAwM2VwZl9xbTtcbiBcbi1cdGlmIChoaXNpX2FjY192ZGV2LVx1MDAzZXNldF9yZXNldF9mbGFnKVxuLVx0XHRjbGVhcl9iaXQoUU1fUkVTRVRUSU5HLCBcdTAwMjZxbS1cdTAwM2VtaXNjX2N0bCk7XG4mIzQzO1x0aWYgKGhpc2lfYWNjX3ZkZXYtXHUwMDNlc2V0X3Jlc2V0X2ZsYWcpIHtcbiYjNDM7XHRcdGlmIChxbSBcdTAwMjZcdTAwMjYgcW0tXHUwMDNlaW9fYmFzZSkge1xuJiM0MztcdFx0XHRjbGVhcl9iaXQoUU1fUkVTRVRUSU5HLCBcdTAwMjZxbS1cdTAwM2VtaXNjX2N0bCk7XG4mIzQzO1x0XHRcdGhpc2lfYWNjX3ZkZXYtXHUwMDNlc2V0X3Jlc2V0X2ZsYWcgPSBmYWxzZTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1BGIFFNIG5vdCBhdmFpbGFibGUgZm9yIHJlc2V0IGRvbmVcXG5cJiMzNDspO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiBcbiBcdGlmICghaGlzaV9hY2NfdmRldi1cdTAwM2Vjb3JlX2RldmljZS52ZGV2Lm1pZ19vcHMpXG4gXHRcdHJldHVybjtcbkBAIC0xMTk5LDYgJiM0MzsxMjEwLDIzIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZfcW1faW5pdChzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYpXG4gXHRlbHNlXG4gXHRcdGhpc2lfYWNjX3ZkZXYtXHUwMDNlZHJ2X21vZGUgPSBIV19BQ0NfTUlHX1ZGX0NUUkw7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBPbiBWRl9DVFJMIGhhcmR3YXJlLCBCQVIyIGhvbGRzIDMyS0IgZnVuY3Rpb25hbCAmIzQzOyAzMktCXG4mIzQzO1x0ICogbWlncmF0aW9uIHJlZ2lzdGVycy4gV2hlbiB0aGUgaG9zdCBwYWdlIGV4Y2VlZHMgMzJLQiwgdGhlXG4mIzQzO1x0ICogdHdvIHNoYXJlIG9uZSBwaHlzaWNhbCBwYWdlIGFuZCBjYW5ub3QgYmUgaXNvbGF0ZWQgYnkgbW1hcC5cbiYjNDM7XHQgKiBSZWplY3QgdGhlIG9wZW4gc28gUUVNVSBmYWlscyBjbGVhbmx5IGF0IHN0YXJ0dXAuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGhpc2lfYWNjX3ZkZXYtXHUwMDNlZHJ2X21vZGUgPT0gSFdfQUNDX01JR19WRl9DVFJMKSB7XG4mIzQzO1x0XHRyZXNvdXJjZV9zaXplX3QgZnVuY19sZW4gPVxuJiM0MztcdFx0XHRwY2lfcmVzb3VyY2VfbGVuKHZmX2RldiwgVkZJT19QQ0lfQkFSMl9SRUdJT05fSU5ERVgpIFx1MDAzZVx1MDAzZSAxO1xuJiM0MztcbiYjNDM7XHRcdGlmIChmdW5jX2xlbiBcdTAwM2MgUEFHRV9TSVpFKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2dmZfZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHRcJiMzNDttaWdyYXRpb24gbm90IHN1cHBvcnRlZCBvbiA2NEtCIHBhZ2VzIHdpdGggUU1fSFdfVjNcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKGhpc2lfYWNjX3ZkZXYtXHUwMDNlZHJ2X21vZGUgPT0gSFdfQUNDX01JR19QRl9DVFJMKSB7XG4gXHRcdC8qXG4gXHRcdCAqIE9uIGhhcmR3YXJlIHBsYXRmb3JtcyBncmVhdGVyIHRoYW4gUU1fSFdfVjMsIHRoZSBtaWdyYXRpb24gZnVuY3Rpb25cbkBAIC0xNTY1LDYgJiM0MzsxNTkzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoY29yZV92ZGV2LVx1MDAzZWRldik7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XG4gXG4mIzQzO1x0aWYgKCFwZl9xbSkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7UEYgZHJpdmVyIG5vdCBsb2FkZWQsIGNhbm5vdCBlbmFibGUgbWlncmF0aW9uXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRoaXNpX2FjY192ZGV2LVx1MDAzZXZmX2lkID0gcGNpX2lvdl92Zl9pZChwZGV2KSAmIzQzOyAxO1xuIFx0aGlzaV9hY2NfdmRldi1cdTAwM2VwZl9xbSA9IHBmX3FtO1xuIFx0aGlzaV9hY2NfdmRldi1cdTAwM2V2Zl9kZXYgPSBwZGV2O1xuQEAgLTE2NzAsMTMgJiM0MzsxNzAzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlXG4gXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXY7XG4gXHRjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzICpvcHMgPSBcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9vcHM7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcGZfcW07XG4tXHRpbnQgdmZfaWQ7XG4gXHRpbnQgcmV0O1xuIFxuIFx0cGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XG4gXHRpZiAocGZfcW0gXHUwMDI2XHUwMDI2IHBmX3FtLVx1MDAzZXZlciBcdTAwM2U9IFFNX0hXX1YzKSB7XG4tXHRcdHZmX2lkID0gcGNpX2lvdl92Zl9pZChwZGV2KTtcbi1cdFx0aWYgKHZmX2lkIFx1MDAzZT0gMClcbiYjNDM7XHRcdGlmIChwZGV2LVx1MDAzZWlzX3ZpcnRmbilcbiBcdFx0XHRvcHMgPSBcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9taWdybl9vcHM7XG4gXHRcdGVsc2VcbiBcdFx0XHRwY2lfd2FybihwZGV2LCBcJiMzNDttaWdyYXRpb24gc3VwcG9ydCBmYWlsZWQsIGNvbnRpbnVlIHdpdGggZ2VuZXJpYyBpbnRlcmZhY2VcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDEwOjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaVNpbGljb24gQUNDIFZGSU8gUENJIGRyaXZlciAoZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYyksIHdoaWNoIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBIaVNpbGljb24gYWNjZWxlcmF0b3IgUENJZSBoYXJkd2FyZSAoU0VDLCBIUFJFLCBaSVApIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFkYTJjNjY3YzU3YWQ4YjAzZDYyN2Y4NzE1YTRmZDJkMzQ3NDg2MTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAxMDoyNzoyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jCmluZGV4IDg2MzYyZWM0MjRhNTAuLjRmMTJjYWI5NjU0NWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYwpAQCAtMTE1NCw5ICYjNDM7MTE1NCwxNCBAQCBzdGF0aWMgdm9pZCBoaXNpX2FjY192Zl9wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKIAlzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYgPSBoaXNpX2FjY19kcnZkYXRhKHBkZXYpOwogCXN0cnVjdCBoaXNpX3FtICpxbSA9IGhpc2lfYWNjX3ZkZXYtJmd0O3BmX3FtOwotCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cW0tJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiAJdTMyIGRlbGF5ID0gMDsKIAomIzQzOwlpZiAoIXFtIHx8ICFxbS0mZ3Q7aW9fYmFzZSkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7UEYgUU0gbm90IGF2YWlsYWJsZSBmb3IgcmVzZXRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCS8qIEFsbCByZXNldCByZXF1ZXN0cyBuZWVkIHRvIGJlIHF1ZXVlZCBmb3IgcHJvY2Vzc2luZyAqLwogCXdoaWxlICh0ZXN0X2FuZF9zZXRfYml0KFFNX1JFU0VUVElORywgJmFtcDtxbS0mZ3Q7bWlzY19jdGwpKSB7CiAJCW1zbGVlcCgxKTsKQEAgLTExNzQsOCAmIzQzOzExNzksMTQgQEAgc3RhdGljIHZvaWQgaGlzaV9hY2NfdmZfcGNpX2Flcl9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSAqaGlzaV9hY2NfdmRldiA9IGhpc2lfYWNjX2RydmRhdGEocGRldik7CiAJc3RydWN0IGhpc2lfcW0gKnFtID0gaGlzaV9hY2NfdmRldi0mZ3Q7cGZfcW07CiAKLQlpZiAoaGlzaV9hY2NfdmRldi0mZ3Q7c2V0X3Jlc2V0X2ZsYWcpCi0JCWNsZWFyX2JpdChRTV9SRVNFVFRJTkcsICZhbXA7cW0tJmd0O21pc2NfY3RsKTsKJiM0MzsJaWYgKGhpc2lfYWNjX3ZkZXYtJmd0O3NldF9yZXNldF9mbGFnKSB7CiYjNDM7CQlpZiAocW0gJmFtcDsmYW1wOyBxbS0mZ3Q7aW9fYmFzZSkgewomIzQzOwkJCWNsZWFyX2JpdChRTV9SRVNFVFRJTkcsICZhbXA7cW0tJmd0O21pc2NfY3RsKTsKJiM0MzsJCQloaXNpX2FjY192ZGV2LSZndDtzZXRfcmVzZXRfZmxhZyA9IGZhbHNlOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlkZXZfZXJyKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmIzM0O1BGIFFNIG5vdCBhdmFpbGFibGUgZm9yIHJlc2V0IGRvbmVcbiYjMzQ7KTsKJiM0MzsJCX0KJiM0MzsJfQogCiAJaWYgKCFoaXNpX2FjY192ZGV2LSZndDtjb3JlX2RldmljZS52ZGV2Lm1pZ19vcHMpCiAJCXJldHVybjsKQEAgLTExOTksNiAmIzQzOzEyMTAsMjMgQEAgc3RhdGljIGludCBoaXNpX2FjY192Zl9xbV9pbml0KHN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSAqaGlzaV9hY2NfdmRldikKIAllbHNlCiAJCWhpc2lfYWNjX3ZkZXYtJmd0O2Rydl9tb2RlID0gSFdfQUNDX01JR19WRl9DVFJMOwogCiYjNDM7CS8qCiYjNDM7CSAqIE9uIFZGX0NUUkwgaGFyZHdhcmUsIEJBUjIgaG9sZHMgMzJLQiBmdW5jdGlvbmFsICYjNDM7IDMyS0IKJiM0MzsJICogbWlncmF0aW9uIHJlZ2lzdGVycy4gV2hlbiB0aGUgaG9zdCBwYWdlIGV4Y2VlZHMgMzJLQiwgdGhlCiYjNDM7CSAqIHR3byBzaGFyZSBvbmUgcGh5c2ljYWwgcGFnZSBhbmQgY2Fubm90IGJlIGlzb2xhdGVkIGJ5IG1tYXAuCiYjNDM7CSAqIFJlamVjdCB0aGUgb3BlbiBzbyBRRU1VIGZhaWxzIGNsZWFubHkgYXQgc3RhcnR1cC4KJiM0MzsJICovCiYjNDM7CWlmIChoaXNpX2FjY192ZGV2LSZndDtkcnZfbW9kZSA9PSBIV19BQ0NfTUlHX1ZGX0NUUkwpIHsKJiM0MzsJCXJlc291cmNlX3NpemVfdCBmdW5jX2xlbiA9CiYjNDM7CQkJcGNpX3Jlc291cmNlX2xlbih2Zl9kZXYsIFZGSU9fUENJX0JBUjJfUkVHSU9OX0lOREVYKSAmZ3Q7Jmd0OyAxOwomIzQzOwomIzQzOwkJaWYgKGZ1bmNfbGVuICZsdDsgUEFHRV9TSVpFKSB7CiYjNDM7CQkJZGV2X2VycigmYW1wO3ZmX2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCQkmIzM0O21pZ3JhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIDY0S0IgcGFnZXMgd2l0aCBRTV9IV19WM1xuJiMzNDspOwomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiAJaWYgKGhpc2lfYWNjX3ZkZXYtJmd0O2Rydl9tb2RlID09IEhXX0FDQ19NSUdfUEZfQ1RSTCkgewogCQkvKgogCQkgKiBPbiBoYXJkd2FyZSBwbGF0Zm9ybXMgZ3JlYXRlciB0aGFuIFFNX0hXX1YzLCB0aGUgbWlncmF0aW9uIGZ1bmN0aW9uCkBAIC0xNTY1LDYgJiM0MzsxNTkzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpCiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGNvcmVfdmRldi0mZ3Q7ZGV2KTsKIAlzdHJ1Y3QgaGlzaV9xbSAqcGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7CiAKJiM0MzsJaWYgKCFwZl9xbSkgewomIzQzOwkJZGV2X2VycigmYW1wO3BkZXYtJmd0O2RldiwgJiMzNDtQRiBkcml2ZXIgbm90IGxvYWRlZCwgY2Fubm90IGVuYWJsZSBtaWdyYXRpb25cbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwl9CiYjNDM7CiAJaGlzaV9hY2NfdmRldi0mZ3Q7dmZfaWQgPSBwY2lfaW92X3ZmX2lkKHBkZXYpICYjNDM7IDE7CiAJaGlzaV9hY2NfdmRldi0mZ3Q7cGZfcW0gPSBwZl9xbTsKIAloaXNpX2FjY192ZGV2LSZndDt2Zl9kZXYgPSBwZGV2OwpAQCAtMTY3MCwxMyAmIzQzOzE3MDMsMTEgQEAgc3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2UKIAlzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXY7CiAJY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyAqb3BzID0gJmFtcDtoaXNpX2FjY192ZmlvX3BjaV9vcHM7CiAJc3RydWN0IGhpc2lfcW0gKnBmX3FtOwotCWludCB2Zl9pZDsKIAlpbnQgcmV0OwogCiAJcGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7CiAJaWYgKHBmX3FtICZhbXA7JmFtcDsgcGZfcW0tJmd0O3ZlciAmZ3Q7PSBRTV9IV19WMykgewotCQl2Zl9pZCA9IHBjaV9pb3ZfdmZfaWQocGRldik7Ci0JCWlmICh2Zl9pZCAmZ3Q7PSAwKQomIzQzOwkJaWYgKHBkZXYtJmd0O2lzX3ZpcnRmbikKIAkJCW9wcyA9ICZhbXA7aGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzOwogCQllbHNlCiAJCQlwY2lfd2FybihwZGV2LCAmIzM0O21pZ3JhdGlvbiBzdXBwb3J0IGZhaWxlZCwgY29udGludWUgd2l0aCBnZW5lcmljIGludGVyZmFjZVxuJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzgxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGhpc2lfYWNjX3ZmaW9fcGNpLmNgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhIGRyaXZlciBmb3IgYWN0dWFsIEhpc2lsaWNvbiBhY2NlbGVyYXRvciBoYXJkd2FyZSwgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgZW11bGF0ZWQgb3IgZW5jb3VudGVyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBUaGF0JiMzOTtzIHRoZSBmaXJzdCBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiBJIG5lZWQuCgpUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQsIEkmIzM5O2xsIGp1bXAgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gQ2hlY2tpbmcgZm9yIGBoaXNpX2FjY192ZmlvX3BjaWAgd2lsbCBob3BlZnVsbHkgZ2l2ZSBtZSBzb21lIGNsdWVzIGFib3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgdGllZCB0byBhIHBhcnRpY3VsYXIgSGlzaWxpY29uIGNoaXAsIG9yIGlmIGl0IGhhcyBicm9hZGVyIGFwcGxpY2FiaWxpdHkuCgpJZiBLY29uZmlnIGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHByb3ZpZGUgdGhlIGFuc3dlcnMsIEkmIzM5O2xsIHJlYWNoIGZvciBgZ2l0IGdyZXBgIHRvIHNlZSBpZiBJIGNhbiBmaW5kIGZ1cnRoZXIgbWVudGlvbnMgb2YgdGhlIGRyaXZlciBhbmQgaXRzIHJlbGF0ZWQgaGFyZHdhcmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcGlucG9pbnQgdGhlIHByZWNpc2UgaGFyZHdhcmUgdGhlIHBhdGNoIGludGVyYWN0cyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDEwOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hJU0lfQUNDX1ZGSU9fUENJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX0lTTV9WRklPX1BDSSkgICAgICAgICAgICYjNDM7PSBpc20vXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTE1LVxuZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfSElTSV9BQ0NfVkZJT19QQ0kpICYjNDM7PSBoaXNpbGljb24vXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTE3LVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWc6Mjpjb25maWcgSElTSV9BQ0NfVkZJT19QQ0lcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgSGlTaWxpY29uIEFDQyBQQ0kgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ISVNJX0FDQ19WRklPX1BDSSkgJiM0Mzs9IGhpc2ktYWNjLXZmaW8tcGNpLm9cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL01ha2VmaWxlLTMtaGlzaS1hY2MtdmZpby1wY2kteSA6PSBoaXNpX2FjY192ZmlvX3BjaS5vXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC0zLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaDo0OiNpZm5kZWYgSElTSV9BQ0NfVkZJT19QQ0lfSFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaDo1OiNkZWZpbmUgSElTSV9BQ0NfVkZJT19QQ0lfSFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC02LVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmg9MTI5PXN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC0xNjQtfTtcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmg6MTY1OiNlbmRpZiAvKiBISVNJX0FDQ19WRklPX1BDSV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTA6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBmaWxlcywgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEhpU2lsaWNvbiBWRklPIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgSGlTaWxpY29uIFZGSU8gaW1wbGVtZW50YXRpb24uIEZpcnN0LCBJJiMzOTtsbCBncmFiIGBkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlIGVuYWJsZW1lbnRzLCBhbmQgcGVyaGFwcyBzb21lIGRldmljZSBJRCBibGFja2xpc3Rpbmcgb3Igd2hpdGVsaXN0aW5nIHNwZWNpZmljIHRvIEhpU2lsaWNvbiYjMzk7cyBQQ0kgZGV2aWNlcy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgKmNvbmZpZ3VyYWJsZSogdmVyc3VzIHdoYXQmIzM5O3MgKmFsd2F5cyogcHJlc2VudCBpbiB0aGVpciBkZXNpZ24uIFRoZSBLY29uZmlnIHdpbGwgaGVscCBjbGFyaWZ5IHRoZSBkZXNpZ24mIzM5O3Mgc2NvcGUgYW5kIHN1cHBvcnRlZCBmZWF0dXJlcyBhdCBhIGhpZ2ggbGV2ZWwuCgpOZXh0LCBJJiMzOTtsbCBvcGVuIGBkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jYC4gVGhlIGBoaXNpX2FjY2AgcHJlZml4IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHRoaXMgaXMgbGlrZWx5IHRoZSBjb3JlIGRyaXZlciBmaWxlIGZvciBzb21lIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBkZXZpY2UsIHdoaWNoIGlzIHByb2JhYmx5IHdoYXQgdGhleSYjMzk7cmUgdmlydHVhbGl6aW5nIHRocm91Z2ggVkZJTy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igc2V2ZXJhbCBrZXkgdGhpbmdzIGhlcmU6IGhvdyB0aGUgZGV2aWNlIGlzIGluaXRpYWxpemVkIGFuZCByZWdpc3RlcmVkIHdpdGhpbiB0aGUgVkZJTyBmcmFtZXdvcmssIHRoZSBzcGVjaWZpYyBkZXZpY2UgSURzIGl0JiMzOTtzIGhhbmRsaW5nLCBhbnkgaW50ZXJydXB0IGhhbmRsaW5nIHN0cmF0ZWdpZXMgdGhleSYjMzk7cmUgZW1wbG95aW5nIChNU0ksIE1TSS1YLCBsZWdhY3kgaW50ZXJydXB0cyksIGFuZCwgY3JpdGljYWxseSwgaG93IHRoZXkmIzM5O3JlIG1hcHBpbmcgYW5kIG1hbmFnaW5nIGRldmljZSBtZW1vcnkgcmVnaW9ucyBmb3IgZ3Vlc3QgYWNjZXNzLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhleSYjMzk7dmUgaGFuZGxlZCB0aGUgSU9NTVUgc2V0dXAsIGlmIHRoZXkmIzM5O3JlIHVzaW5nIGFueSBjdXN0b20gRE1BIG1hcHBpbmcgcm91dGluZXMsIGFuZCB3aGV0aGVyIHRoZXkgYXJlIGltcGxlbWVudGluZyBhbnkgY3VzdG9tIGRldmljZS1zcGVjaWZpYyBwcm90ZWN0aW9uIG1lY2hhbmlzbXMgdG8gZW5zdXJlIHNlY3VyZSBndWVzdCBhY2Nlc3MuIEkmIzM5O2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHNwZWNpZmljIHRvIHRoZWlyIGhhcmR3YXJlIGFyY2hpdGVjdHVyZTsgcGVyaGFwcyBzb21lIGNsZXZlciByZWdpc3RlciB0cmlja3Mgb3IgbWVtb3J5IG1hcHBpbmcgc3RyYXRlZ2llcy4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGRlYnVnZ2luZyBjb2RlIHRvby4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHlvdSBmaW5kIHRoZSByZWFsLXdvcmxkIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGFueSBwb3RlbnRpYWwgZ290Y2hhcy4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGtlZW4gdG8gaWRlbnRpZnkgYW55IGFyZWFzIHdoZXJlIHRoZWlyIFZGSU8gaW1wbGVtZW50YXRpb24gZGV2aWF0ZXMgZnJvbSB0aGUgdXBzdHJlYW0gVkZJTyBzdGFuZGFyZHMgb3IgY29udmVudGlvbnMuIFRoYXQgd291bGQgYmUgYSByZWQgZmxhZyB0aGF0IHJlcXVpcmVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgSElTSV9BQ0NfVkZJT19QQ0lcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgSGlTaWxpY29uIEFDQyBQQ0kgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBBUk02NCB8fCAoQ09NUElMRV9URVNUIFx1MDAyNlx1MDAyNiA2NEJJVClcbiAgIDU6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICAgNjpcdFx0ZGVwZW5kcyBvbiBDUllQVE9fREVWX0hJU0lfUU1cbiAgIDc6XHRcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX0hQUkVcbiAgIDg6XHRcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX1NFQzJcbiAgIDk6XHRcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX1pJUFxuICAxMDpcdFx0c2VsZWN0IFZGSU9fUENJX0NPUkVcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgVGhpcyBwcm92aWRlcyBnZW5lcmljIFBDSSBzdXBwb3J0IGZvciBIaVNpbGljb24gQUNDIGRldmljZXNcbiAgMTM6XHRcdCAgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDk0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlBDSSBEZXZpY2UgSUQgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIGdvYWwgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIFBDSSBkZXZpY2UgSURzIHJlbGF0ZWQgdG8gYGhpc2lfYWNjX3ZmaW9fcGNpYC4gVGhpcyBzdWdnZXN0cyBhIGZvY3VzIG9uIHRoZSBoYXJkd2FyZSBsZXZlbCwgbGlrZWx5IHRpZWQgdG8gYSBzcGVjaWZpYyB2ZW5kb3IgKEhpc2kpIGFuZCBhaW1pbmcgdG8gaW50ZXJmYWNlIHdpdGggYSBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgc2V0dXAuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3Igc3BlY2lmaWMgSURzIHRoYXQgaWRlbnRpZnkgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIFRoaXMgbGlrZWx5IG1lYW5zIGV4YW1pbmluZyB0aGUgcmVsZXZhbnQga2VybmVsIG1vZHVsZXMgb3IgY29uZmlndXJhdGlvbiBmaWxlcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIHJlY29nbml6aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZGV2aWNlLiBVbHRpbWF0ZWx5LCBJJiMzOTttIGFpbWluZyB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBQQ0kgZGV2aWNlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggYGhpc2lfYWNjX3ZmaW9fcGNpYCBhbmQgbGlrZWx5LCB3aGVyZSBpbiB0aGUgc3lzdGVtIHRoaXMgSUQgaXMgZGVmaW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFfHBjaV9kZXZpY2VfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNjk1PXN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmX2RlYnVnZnNfZXhpdChzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNzAwLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNzAxOnN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTcwMi17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNzM0PXN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3NDItXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE3NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3RhYmxlW10gPSB7XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3NDQtXHR7IFBDSV9EUklWRVJfT1ZFUlJJREVfREVWSUNFX1ZGSU8oUENJX1ZFTkRPUl9JRF9IVUFXRUksIFBDSV9ERVZJQ0VfSURfSFVBV0VJX1NFQ19WRikgfSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3NDktXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE3NTA6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGhpc2lfYWNjX3ZmaW9fcGNpX3RhYmxlKTtcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTc1MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODcxCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRldmljZSBTdXBwb3J0IFZlcmlmaWNhdGlvbioqCgpPa2F5LCBsZXQgbWUgdGFrZSBhIGxvb2sgYXQgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgaW4gdGVybXMgb2Ygc3VwcG9ydGVkIGhhcmR3YXJlLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgb3ZlcnJpZGVzIHNwZWNpZmljYWxseSBmb3IgVmlydHVhbCBGdW5jdGlvbiAoVkYpIGRldmljZXMsIGFuZCBpdCYjMzk7cyB2ZW5kb3Igc3BlY2lmaWMuIFRoZSBjb2RlIGxpc3RzIHRocmVlIGRldmljZXM6IHRoZSBIdWF3ZWkgU0VDIFZGLCB0aGUgSHVhd2VpIEhQUkUgVkYsIGFuZCB0aGUgSHVhd2VpIFpJUCBWRi4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0LiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBoYW5kbGVkLiBMZXQgbWUgZGl2ZSBpbnRvIGBoaXNpX2FjY192ZmlvX3BjaS5jYCwgc3BlY2lmaWNhbGx5IGxpbmVzIDE3NDAgdGhyb3VnaCAxNzYwLiBJIG5lZWQgdG8gc2VlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBob3cgdGhlc2UgZGV2aWNlIG92ZXJyaWRlcyBhcmUgc2V0IHVwIHdpdGhpbiB0aGUgVkZJTyBmcmFtZXdvcmsuIFVuZGVyc3RhbmRpbmcgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGNvbnRleHQgb24gd2hlcmUgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzQwOlx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2aGlzaV9hY2NfdmRldi1cdTAwM2Vjb3JlX2RldmljZS52ZGV2KTtcbjE3NDE6XHR9XG4xNzQyOlx0XG4xNzQzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3RhYmxlW10gPSB7XG4xNzQ0Olx0XHR7IFBDSV9EUklWRVJfT1ZFUlJJREVfREVWSUNFX1ZGSU8oUENJX1ZFTkRPUl9JRF9IVUFXRUksIFBDSV9ERVZJQ0VfSURfSFVBV0VJX1NFQ19WRikgfSxcbjE3NDU6XHRcdHsgUENJX0RSSVZFUl9PVkVSUklERV9ERVZJQ0VfVkZJTyhQQ0lfVkVORE9SX0lEX0hVQVdFSSwgUENJX0RFVklDRV9JRF9IVUFXRUlfSFBSRV9WRikgfSxcbjE3NDY6XHRcdHsgUENJX0RSSVZFUl9PVkVSUklERV9ERVZJQ0VfVkZJTyhQQ0lfVkVORE9SX0lEX0hVQVdFSSwgUENJX0RFVklDRV9JRF9IVUFXRUlfWklQX1ZGKSB9LFxuMTc0NzpcdFx0eyB9XG4xNzQ4Olx0fTtcbjE3NDk6XHRcbjE3NTA6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaGlzaV9hY2NfdmZpb19wY2lfdGFibGUpO1xuMTc1MTpcdFxuMTc1MjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGhpc2lfYWNjX3ZmX2Vycl9oYW5kbGVycyA9IHtcbjE3NTM6XHRcdC5yZXNldF9wcmVwYXJlID0gaGlzaV9hY2NfdmZfcGNpX3Jlc2V0X3ByZXBhcmUsXG4xNzU0Olx0XHQucmVzZXRfZG9uZSA9IGhpc2lfYWNjX3ZmX3BjaV9hZXJfcmVzZXRfZG9uZSxcbjE3NTU6XHRcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcbjE3NTY6XHR9O1xuMTc1NzpcdFxuMTc1ODpcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBoaXNpX2FjY192ZmlvX3BjaV9kcml2ZXIgPSB7XG4xNzU5Olx0XHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxuMTc2MDpcdFx0LmlkX3RhYmxlID0gaGlzaV9hY2NfdmZpb19wY2lfdGFibGUsXG4xNzYxOlx0XHQucHJvYmUgPSBoaXNpX2FjY192ZmlvX3BjaV9wcm9iZSxcbjE3NjI6XHRcdC5yZW1vdmUgPSBoaXNpX2FjY192ZmlvX3BjaV9yZW1vdmUsXG4xNzYzOlx0XHQuZXJyX2hhbmRsZXIgPSBcdTAwMjZoaXNpX2FjY192Zl9lcnJfaGFuZGxlcnMsXG4xNzY0Olx0XHQuZHJpdmVyX21hbmFnZWRfZG1hID0gdHJ1ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTA6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgwMAoJCQkJCQkJb3V0cHV0OiAxMDUKCQkJCQkJCXRob3VnaHRzOiA0NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGhpc2lfYWNjX3ZmaW9fcGNpYCBEcml2ZXIgYW5kIGl0cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBwYXRjaCwgZGVhbGluZyB3aXRoIHRoZSBgaGlzaV9hY2NfdmZpb19wY2lgIGRyaXZlciBmb3IgSGlTaWxpY29uIEFDQyBkZXZpY2VzIChzcGVjaWZpY2FsbHkgU0VDLCBIUFJFLCBhbmQgWklQIGFjY2VsZXJhdGlvbiksIGlzICpub3QqIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gVGhpcyBkcml2ZXIgaXMgdmVyeSBjbGVhcmx5IHZlbmRvci1zcGVjaWZpYyBhbmQgaGFyZHdhcmUtZGVwZW5kZW50LCByZXF1aXJpbmcgYWN0dWFsIEh1YXdlaS9IaVNpbGljb24gUENJZSBjYXJkcyBvciB0aGUgS3VucGVuZyBTb0MuIFRoYXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnLgoKTm93LCBsZXQmIzM5O3Mgd2FsayB0aHJvdWdoIHRoZSBjcml0ZXJpYS4gVGhlIGd1aWRlbGluZSBzcGVjaWZpY2FsbHkgZmxhZ3MgY29kZSB0aGF0ICpyZXF1aXJlcyogcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgbm90IGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgZHJpdmVyIGFic29sdXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBJdCYjMzk7cyBub3QgZGVzaWduZWQgdG8gZnVuY3Rpb24gd2l0aG91dCB0aGUgc3BlY2lmaWMgSGlTaWxpY29uIGhhcmR3YXJlLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGRyaXZlciBmb3IgVkZJTywgd2hpY2ggaXMgYWJvdXQgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcy4gVGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHJlYWxpc3RpY2FsbHkgZnV6eiB0aGlzIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgb3IgZXZlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgc2VlbXMgdGhhdCBhbnkgY29kZSBwYXRocyB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIHJlYWNoLgoKU28sICpXb3J0aEZ1enppbmcqIGlzIGRlZmluaXRlbHkgKmZhbHNlKiBoZXJlLiBUaGVyZSYjMzk7cyBubyBwb2ludCBpbiB0cnlpbmcgdG8gZnV6eiBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBhIHZlcnkgc3BlY2lmaWMgcGh5c2ljYWwgc2V0dXAsIHRoYXQmIzM5O3Mgbm90IGVhc2lseSBvYnRhaW5hYmxlLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgbWV0YWRhdGE6CiogICAqV29ydGhGdXp6aW5nKjogRmFsc2UuIENoZWNrLgoqICAgKkVuYWJsZUNvbmZpZ3MqOiBFbXB0eS4gQ29ycmVjdCwgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZC4KKiAgICpGb2N1c1N5bWJvbHMqOiBFbXB0eS4gTWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBzY29wZS4KKiAgICpSZWFzb25pbmcqOiBDb25maXJtZWQuIFRoZSBwYXRjaCBpcyB0aWVkIHRvIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciB0aGF0JiMzOTtzIGluaGVyZW50bHkgdGllZCB0byBwaHlzaWNhbCBIaVNpbGljb24gaGFyZHdhcmUsIGFuZCB3aWxsIG5vdCBmdW5jdGlvbiBpbnNpZGUgYW55IGNvbW1vbiB2aXJ0dWFsaXphdGlvbiwgc3VjaCBhcyBRRU1VLgoKQWxyaWdodCwgSSYjMzk7bSBzYXRpc2ZpZWQuIEl0JiMzOTtzIGEgY2xlYXIgJiMzNDtubyYjMzQ7IG9uIHRoaXMgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaVNpbGljb24gQUNDIFZGSU8gUENJIGRyaXZlciAoZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYyksIHdoaWNoIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBIaVNpbGljb24gYWNjZWxlcmF0b3IgUENJZSBoYXJkd2FyZSAoU0VDLCBIUFJFLCBaSVApIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpU2lsaWNvbiBBQ0MgVkZJTyBQQ0kgZHJpdmVyIChkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jKSwgd2hpY2ggcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBQQ0llIGhhcmR3YXJlIChTRUMsIEhQUkUsIFpJUCkgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjc6MjYuNzk0MzMzNjc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2ODEzNDExNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpU2lsaWNvbiBBQ0MgVkZJTyBQQ0kgZHJpdmVyIChkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jKSwgd2hpY2ggcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBQQ0llIGhhcmR3YXJlIChTRUMsIEhQUkUsIFpJUCkgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxMDoyNzoyNi43OTQzMzg3MDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODY4NjY3ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhZGEyYzY2N2M1N2FkOGIwM2Q2MjdmODcxNWE0ZmQyZDM0NzQ4NjE2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDEwOjI3OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jXFxuaW5kZXggODYzNjJlYzQyNGE1MC4uNGYxMmNhYjk2NTQ1ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jXFxuKysrIGIvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xcbkBAIC0xMTU0LDkgKzExNTQsMTQgQEAgc3RhdGljIHZvaWQgaGlzaV9hY2NfdmZfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlICpoaXNpX2FjY192ZGV2ID0gaGlzaV9hY2NfZHJ2ZGF0YShwZGV2KTtcXG4gXFx0c3RydWN0IGhpc2lfcW0gKnFtID0gaGlzaV9hY2NfdmRldi1cXHUwMDNlcGZfcW07XFxuLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZxbS1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiBcXHR1MzIgZGVsYXkgPSAwO1xcbiBcXG4rXFx0aWYgKCFxbSB8fCAhcW0tXFx1MDAzZWlvX2Jhc2UpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJQRiBRTSBub3QgYXZhaWxhYmxlIGZvciByZXNldFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0LyogQWxsIHJlc2V0IHJlcXVlc3RzIG5lZWQgdG8gYmUgcXVldWVkIGZvciBwcm9jZXNzaW5nICovXFxuIFxcdHdoaWxlICh0ZXN0X2FuZF9zZXRfYml0KFFNX1JFU0VUVElORywgXFx1MDAyNnFtLVxcdTAwM2VtaXNjX2N0bCkpIHtcXG4gXFx0XFx0bXNsZWVwKDEpO1xcbkBAIC0xMTc0LDggKzExNzksMTQgQEAgc3RhdGljIHZvaWQgaGlzaV9hY2NfdmZfcGNpX2Flcl9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYgPSBoaXNpX2FjY19kcnZkYXRhKHBkZXYpO1xcbiBcXHRzdHJ1Y3QgaGlzaV9xbSAqcW0gPSBoaXNpX2FjY192ZGV2LVxcdTAwM2VwZl9xbTtcXG4gXFxuLVxcdGlmIChoaXNpX2FjY192ZGV2LVxcdTAwM2VzZXRfcmVzZXRfZmxhZylcXG4tXFx0XFx0Y2xlYXJfYml0KFFNX1JFU0VUVElORywgXFx1MDAyNnFtLVxcdTAwM2VtaXNjX2N0bCk7XFxuK1xcdGlmIChoaXNpX2FjY192ZGV2LVxcdTAwM2VzZXRfcmVzZXRfZmxhZykge1xcbitcXHRcXHRpZiAocW0gXFx1MDAyNlxcdTAwMjYgcW0tXFx1MDAzZWlvX2Jhc2UpIHtcXG4rXFx0XFx0XFx0Y2xlYXJfYml0KFFNX1JFU0VUVElORywgXFx1MDAyNnFtLVxcdTAwM2VtaXNjX2N0bCk7XFxuK1xcdFxcdFxcdGhpc2lfYWNjX3ZkZXYtXFx1MDAzZXNldF9yZXNldF9mbGFnID0gZmFsc2U7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIlBGIFFNIG5vdCBhdmFpbGFibGUgZm9yIHJlc2V0IGRvbmVcXFxcblxcXCIpO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4gXFxuIFxcdGlmICghaGlzaV9hY2NfdmRldi1cXHUwMDNlY29yZV9kZXZpY2UudmRldi5taWdfb3BzKVxcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTExOTksNiArMTIxMCwyMyBAQCBzdGF0aWMgaW50IGhpc2lfYWNjX3ZmX3FtX2luaXQoc3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlICpoaXNpX2FjY192ZGV2KVxcbiBcXHRlbHNlXFxuIFxcdFxcdGhpc2lfYWNjX3ZkZXYtXFx1MDAzZWRydl9tb2RlID0gSFdfQUNDX01JR19WRl9DVFJMO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogT24gVkZfQ1RSTCBoYXJkd2FyZSwgQkFSMiBob2xkcyAzMktCIGZ1bmN0aW9uYWwgKyAzMktCXFxuK1xcdCAqIG1pZ3JhdGlvbiByZWdpc3RlcnMuIFdoZW4gdGhlIGhvc3QgcGFnZSBleGNlZWRzIDMyS0IsIHRoZVxcbitcXHQgKiB0d28gc2hhcmUgb25lIHBoeXNpY2FsIHBhZ2UgYW5kIGNhbm5vdCBiZSBpc29sYXRlZCBieSBtbWFwLlxcbitcXHQgKiBSZWplY3QgdGhlIG9wZW4gc28gUUVNVSBmYWlscyBjbGVhbmx5IGF0IHN0YXJ0dXAuXFxuK1xcdCAqL1xcbitcXHRpZiAoaGlzaV9hY2NfdmRldi1cXHUwMDNlZHJ2X21vZGUgPT0gSFdfQUNDX01JR19WRl9DVFJMKSB7XFxuK1xcdFxcdHJlc291cmNlX3NpemVfdCBmdW5jX2xlbiA9XFxuK1xcdFxcdFxcdHBjaV9yZXNvdXJjZV9sZW4odmZfZGV2LCBWRklPX1BDSV9CQVIyX1JFR0lPTl9JTkRFWCkgXFx1MDAzZVxcdTAwM2UgMTtcXG4rXFxuK1xcdFxcdGlmIChmdW5jX2xlbiBcXHUwMDNjIFBBR0VfU0laRSkge1xcbitcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZ2Zl9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFxcIm1pZ3JhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIDY0S0IgcGFnZXMgd2l0aCBRTV9IV19WM1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChoaXNpX2FjY192ZGV2LVxcdTAwM2VkcnZfbW9kZSA9PSBIV19BQ0NfTUlHX1BGX0NUUkwpIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogT24gaGFyZHdhcmUgcGxhdGZvcm1zIGdyZWF0ZXIgdGhhbiBRTV9IV19WMywgdGhlIG1pZ3JhdGlvbiBmdW5jdGlvblxcbkBAIC0xNTY1LDYgKzE1OTMsMTEgQEAgc3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9taWdybl9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gXFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4gXFx0c3RydWN0IGhpc2lfcW0gKnBmX3FtID0gaGlzaV9hY2NfZ2V0X3BmX3FtKHBkZXYpO1xcbiBcXG4rXFx0aWYgKCFwZl9xbSkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJQRiBkcml2ZXIgbm90IGxvYWRlZCwgY2Fubm90IGVuYWJsZSBtaWdyYXRpb25cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFx0fVxcbitcXG4gXFx0aGlzaV9hY2NfdmRldi1cXHUwMDNldmZfaWQgPSBwY2lfaW92X3ZmX2lkKHBkZXYpICsgMTtcXG4gXFx0aGlzaV9hY2NfdmRldi1cXHUwMDNlcGZfcW0gPSBwZl9xbTtcXG4gXFx0aGlzaV9hY2NfdmRldi1cXHUwMDNldmZfZGV2ID0gcGRldjtcXG5AQCAtMTY3MCwxMyArMTcwMywxMSBAQCBzdGF0aWMgaW50IGhpc2lfYWNjX3ZmaW9fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZVxcbiBcXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXY7XFxuIFxcdGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgKm9wcyA9IFxcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9vcHM7XFxuIFxcdHN0cnVjdCBoaXNpX3FtICpwZl9xbTtcXG4tXFx0aW50IHZmX2lkO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0cGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XFxuIFxcdGlmIChwZl9xbSBcXHUwMDI2XFx1MDAyNiBwZl9xbS1cXHUwMDNldmVyIFxcdTAwM2U9IFFNX0hXX1YzKSB7XFxuLVxcdFxcdHZmX2lkID0gcGNpX2lvdl92Zl9pZChwZGV2KTtcXG4tXFx0XFx0aWYgKHZmX2lkIFxcdTAwM2U9IDApXFxuK1xcdFxcdGlmIChwZGV2LVxcdTAwM2Vpc192aXJ0Zm4pXFxuIFxcdFxcdFxcdG9wcyA9IFxcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9taWdybl9vcHM7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0cGNpX3dhcm4ocGRldiwgXFxcIm1pZ3JhdGlvbiBzdXBwb3J0IGZhaWxlZCwgY29udGludWUgd2l0aCBnZW5lcmljIGludGVyZmFjZVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI3OjI4LjI4MjIyMTI4NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTQ1MzI1NTEwNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlTaWxpY29uIEFDQyBWRklPIFBDSSBkcml2ZXIgKGRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMpLCB3aGljaCByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgSGlTaWxpY29uIGFjY2VsZXJhdG9yIFBDSWUgaGFyZHdhcmUgKFNFQywgSFBSRSwgWklQKSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFkYTJjNjY3YzU3YWQ4YjAzZDYyN2Y4NzE1YTRmZDJkMzQ3NDg2MTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxMDoyNzoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jXG5pbmRleCA4NjM2MmVjNDI0YTUwLi40ZjEyY2FiOTY1NDVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xuKysrIGIvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xuQEAgLTExNTQsOSArMTE1NCwxNCBAQCBzdGF0aWMgdm9pZCBoaXNpX2FjY192Zl9wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiB7XG4gXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYgPSBoaXNpX2FjY19kcnZkYXRhKHBkZXYpO1xuIFx0c3RydWN0IGhpc2lfcW0gKnFtID0gaGlzaV9hY2NfdmRldi1cdTAwM2VwZl9xbTtcbi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnFtLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXHR1MzIgZGVsYXkgPSAwO1xuIFxuK1x0aWYgKCFxbSB8fCAhcW0tXHUwMDNlaW9fYmFzZSkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJQRiBRTSBub3QgYXZhaWxhYmxlIGZvciByZXNldFxcblwiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0LyogQWxsIHJlc2V0IHJlcXVlc3RzIG5lZWQgdG8gYmUgcXVldWVkIGZvciBwcm9jZXNzaW5nICovXG4gXHR3aGlsZSAodGVzdF9hbmRfc2V0X2JpdChRTV9SRVNFVFRJTkcsIFx1MDAyNnFtLVx1MDAzZW1pc2NfY3RsKSkge1xuIFx0XHRtc2xlZXAoMSk7XG5AQCAtMTE3NCw4ICsxMTc5LDE0IEBAIHN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmX3BjaV9hZXJfcmVzZXRfZG9uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdHN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSAqaGlzaV9hY2NfdmRldiA9IGhpc2lfYWNjX2RydmRhdGEocGRldik7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcW0gPSBoaXNpX2FjY192ZGV2LVx1MDAzZXBmX3FtO1xuIFxuLVx0aWYgKGhpc2lfYWNjX3ZkZXYtXHUwMDNlc2V0X3Jlc2V0X2ZsYWcpXG4tXHRcdGNsZWFyX2JpdChRTV9SRVNFVFRJTkcsIFx1MDAyNnFtLVx1MDAzZW1pc2NfY3RsKTtcbitcdGlmIChoaXNpX2FjY192ZGV2LVx1MDAzZXNldF9yZXNldF9mbGFnKSB7XG4rXHRcdGlmIChxbSBcdTAwMjZcdTAwMjYgcW0tXHUwMDNlaW9fYmFzZSkge1xuK1x0XHRcdGNsZWFyX2JpdChRTV9SRVNFVFRJTkcsIFx1MDAyNnFtLVx1MDAzZW1pc2NfY3RsKTtcbitcdFx0XHRoaXNpX2FjY192ZGV2LVx1MDAzZXNldF9yZXNldF9mbGFnID0gZmFsc2U7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCJQRiBRTSBub3QgYXZhaWxhYmxlIGZvciByZXNldCBkb25lXFxuXCIpO1xuK1x0XHR9XG4rXHR9XG4gXG4gXHRpZiAoIWhpc2lfYWNjX3ZkZXYtXHUwMDNlY29yZV9kZXZpY2UudmRldi5taWdfb3BzKVxuIFx0XHRyZXR1cm47XG5AQCAtMTE5OSw2ICsxMjEwLDIzIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZfcW1faW5pdChzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYpXG4gXHRlbHNlXG4gXHRcdGhpc2lfYWNjX3ZkZXYtXHUwMDNlZHJ2X21vZGUgPSBIV19BQ0NfTUlHX1ZGX0NUUkw7XG4gXG4rXHQvKlxuK1x0ICogT24gVkZfQ1RSTCBoYXJkd2FyZSwgQkFSMiBob2xkcyAzMktCIGZ1bmN0aW9uYWwgKyAzMktCXG4rXHQgKiBtaWdyYXRpb24gcmVnaXN0ZXJzLiBXaGVuIHRoZSBob3N0IHBhZ2UgZXhjZWVkcyAzMktCLCB0aGVcbitcdCAqIHR3byBzaGFyZSBvbmUgcGh5c2ljYWwgcGFnZSBhbmQgY2Fubm90IGJlIGlzb2xhdGVkIGJ5IG1tYXAuXG4rXHQgKiBSZWplY3QgdGhlIG9wZW4gc28gUUVNVSBmYWlscyBjbGVhbmx5IGF0IHN0YXJ0dXAuXG4rXHQgKi9cbitcdGlmIChoaXNpX2FjY192ZGV2LVx1MDAzZWRydl9tb2RlID09IEhXX0FDQ19NSUdfVkZfQ1RSTCkge1xuK1x0XHRyZXNvdXJjZV9zaXplX3QgZnVuY19sZW4gPVxuK1x0XHRcdHBjaV9yZXNvdXJjZV9sZW4odmZfZGV2LCBWRklPX1BDSV9CQVIyX1JFR0lPTl9JTkRFWCkgXHUwMDNlXHUwMDNlIDE7XG4rXG4rXHRcdGlmIChmdW5jX2xlbiBcdTAwM2MgUEFHRV9TSVpFKSB7XG4rXHRcdFx0ZGV2X2VycihcdTAwMjZ2Zl9kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFx0XCJtaWdyYXRpb24gbm90IHN1cHBvcnRlZCBvbiA2NEtCIHBhZ2VzIHdpdGggUU1fSFdfVjNcXG5cIik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcdH1cbitcbiBcdGlmIChoaXNpX2FjY192ZGV2LVx1MDAzZWRydl9tb2RlID09IEhXX0FDQ19NSUdfUEZfQ1RSTCkge1xuIFx0XHQvKlxuIFx0XHQgKiBPbiBoYXJkd2FyZSBwbGF0Zm9ybXMgZ3JlYXRlciB0aGFuIFFNX0hXX1YzLCB0aGUgbWlncmF0aW9uIGZ1bmN0aW9uXG5AQCAtMTU2NSw2ICsxNTkzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoY29yZV92ZGV2LVx1MDAzZWRldik7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XG4gXG4rXHRpZiAoIXBmX3FtKSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiUEYgZHJpdmVyIG5vdCBsb2FkZWQsIGNhbm5vdCBlbmFibGUgbWlncmF0aW9uXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcdH1cbitcbiBcdGhpc2lfYWNjX3ZkZXYtXHUwMDNldmZfaWQgPSBwY2lfaW92X3ZmX2lkKHBkZXYpICsgMTtcbiBcdGhpc2lfYWNjX3ZkZXYtXHUwMDNlcGZfcW0gPSBwZl9xbTtcbiBcdGhpc2lfYWNjX3ZkZXYtXHUwMDNldmZfZGV2ID0gcGRldjtcbkBAIC0xNjcwLDEzICsxNzAzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlXG4gXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXY7XG4gXHRjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzICpvcHMgPSBcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9vcHM7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcGZfcW07XG4tXHRpbnQgdmZfaWQ7XG4gXHRpbnQgcmV0O1xuIFxuIFx0cGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XG4gXHRpZiAocGZfcW0gXHUwMDI2XHUwMDI2IHBmX3FtLVx1MDAzZXZlciBcdTAwM2U9IFFNX0hXX1YzKSB7XG4tXHRcdHZmX2lkID0gcGNpX2lvdl92Zl9pZChwZGV2KTtcbi1cdFx0aWYgKHZmX2lkIFx1MDAzZT0gMClcbitcdFx0aWYgKHBkZXYtXHUwMDNlaXNfdmlydGZuKVxuIFx0XHRcdG9wcyA9IFx1MDAyNmhpc2lfYWNjX3ZmaW9fcGNpX21pZ3JuX29wcztcbiBcdFx0ZWxzZVxuIFx0XHRcdHBjaV93YXJuKHBkZXYsIFwibWlncmF0aW9uIHN1cHBvcnQgZmFpbGVkLCBjb250aW51ZSB3aXRoIGdlbmVyaWMgaW50ZXJmYWNlXFxuXCIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjc6MjguMjgyMjI0MTk1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjgyOTAyMzY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBoaXNpX2FjY192ZmlvX3BjaS5jYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhIGRyaXZlciBmb3IgYWN0dWFsIEhpc2lsaWNvbiBhY2NlbGVyYXRvciBoYXJkd2FyZSwgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgZW11bGF0ZWQgb3IgZW5jb3VudGVyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBUaGF0J3MgdGhlIGZpcnN0IGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uIEkgbmVlZC5cblxuVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50LCBJJ2xsIGp1bXAgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gQ2hlY2tpbmcgZm9yIGBoaXNpX2FjY192ZmlvX3BjaWAgd2lsbCBob3BlZnVsbHkgZ2l2ZSBtZSBzb21lIGNsdWVzIGFib3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgdGllZCB0byBhIHBhcnRpY3VsYXIgSGlzaWxpY29uIGNoaXAsIG9yIGlmIGl0IGhhcyBicm9hZGVyIGFwcGxpY2FiaWxpdHkuXG5cbklmIEtjb25maWcgZG9lc24ndCBpbW1lZGlhdGVseSBwcm92aWRlIHRoZSBhbnN3ZXJzLCBJJ2xsIHJlYWNoIGZvciBgZ2l0IGdyZXBgIHRvIHNlZSBpZiBJIGNhbiBmaW5kIGZ1cnRoZXIgbWVudGlvbnMgb2YgdGhlIGRyaXZlciBhbmQgaXRzIHJlbGF0ZWQgaGFyZHdhcmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcGlucG9pbnQgdGhlIHByZWNpc2UgaGFyZHdhcmUgdGhlIHBhdGNoIGludGVyYWN0cyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzgxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjc6MzUuMTExMjUwNDk3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTg5ODE4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSElTSV9BQ0NfVkZJT19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfSVNNX1ZGSU9fUENJKSAgICAgICAgICAgKz0gaXNtL1xcbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGUtMTUtXFxuZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfSElTSV9BQ0NfVkZJT19QQ0kpICs9IGhpc2lsaWNvbi9cXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTE3LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWc6Mjpjb25maWcgSElTSV9BQ0NfVkZJT19QQ0lcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgSGlTaWxpY29uIEFDQyBQQ0kgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfSElTSV9BQ0NfVkZJT19QQ0kpICs9IGhpc2ktYWNjLXZmaW8tcGNpLm9cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9NYWtlZmlsZS0zLWhpc2ktYWNjLXZmaW8tcGNpLXkgOj0gaGlzaV9hY2NfdmZpb19wY2kub1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC0zLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmg6NDojaWZuZGVmIEhJU0lfQUNDX1ZGSU9fUENJX0hcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5oOjU6I2RlZmluZSBISVNJX0FDQ19WRklPX1BDSV9IXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC02LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaD0xMjk9c3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmgtMTY0LX07XFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaDoxNjU6I2VuZGlmIC8qIEhJU0lfQUNDX1ZGSU9fUENJX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjc6MzcuMzMwMjQxNDEyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTg4Mzg2NjY2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgZmlsZXMsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEhpU2lsaWNvbiBWRklPIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBIaVNpbGljb24gVkZJTyBpbXBsZW1lbnRhdGlvbi4gRmlyc3QsIEknbGwgZ3JhYiBgZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBtb2R1bGUgZGVwZW5kZW5jaWVzLCBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZSBlbmFibGVtZW50cywgYW5kIHBlcmhhcHMgc29tZSBkZXZpY2UgSUQgYmxhY2tsaXN0aW5nIG9yIHdoaXRlbGlzdGluZyBzcGVjaWZpYyB0byBIaVNpbGljb24ncyBQQ0kgZGV2aWNlcy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpjb25maWd1cmFibGUqIHZlcnN1cyB3aGF0J3MgKmFsd2F5cyogcHJlc2VudCBpbiB0aGVpciBkZXNpZ24uIFRoZSBLY29uZmlnIHdpbGwgaGVscCBjbGFyaWZ5IHRoZSBkZXNpZ24ncyBzY29wZSBhbmQgc3VwcG9ydGVkIGZlYXR1cmVzIGF0IGEgaGlnaCBsZXZlbC5cblxuTmV4dCwgSSdsbCBvcGVuIGBkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jYC4gVGhlIGBoaXNpX2FjY2AgcHJlZml4IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHRoaXMgaXMgbGlrZWx5IHRoZSBjb3JlIGRyaXZlciBmaWxlIGZvciBzb21lIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBkZXZpY2UsIHdoaWNoIGlzIHByb2JhYmx5IHdoYXQgdGhleSdyZSB2aXJ0dWFsaXppbmcgdGhyb3VnaCBWRklPLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHNldmVyYWwga2V5IHRoaW5ncyBoZXJlOiBob3cgdGhlIGRldmljZSBpcyBpbml0aWFsaXplZCBhbmQgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLCB0aGUgc3BlY2lmaWMgZGV2aWNlIElEcyBpdCdzIGhhbmRsaW5nLCBhbnkgaW50ZXJydXB0IGhhbmRsaW5nIHN0cmF0ZWdpZXMgdGhleSdyZSBlbXBsb3lpbmcgKE1TSSwgTVNJLVgsIGxlZ2FjeSBpbnRlcnJ1cHRzKSwgYW5kLCBjcml0aWNhbGx5LCBob3cgdGhleSdyZSBtYXBwaW5nIGFuZCBtYW5hZ2luZyBkZXZpY2UgbWVtb3J5IHJlZ2lvbnMgZm9yIGd1ZXN0IGFjY2Vzcy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhleSd2ZSBoYW5kbGVkIHRoZSBJT01NVSBzZXR1cCwgaWYgdGhleSdyZSB1c2luZyBhbnkgY3VzdG9tIERNQSBtYXBwaW5nIHJvdXRpbmVzLCBhbmQgd2hldGhlciB0aGV5IGFyZSBpbXBsZW1lbnRpbmcgYW55IGN1c3RvbSBkZXZpY2Utc3BlY2lmaWMgcHJvdGVjdGlvbiBtZWNoYW5pc21zIHRvIGVuc3VyZSBzZWN1cmUgZ3Vlc3QgYWNjZXNzLiBJJ2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHNwZWNpZmljIHRvIHRoZWlyIGhhcmR3YXJlIGFyY2hpdGVjdHVyZTsgcGVyaGFwcyBzb21lIGNsZXZlciByZWdpc3RlciB0cmlja3Mgb3IgbWVtb3J5IG1hcHBpbmcgc3RyYXRlZ2llcy4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgZGVidWdnaW5nIGNvZGUgdG9vLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB5b3UgZmluZCB0aGUgcmVhbC13b3JsZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBhbnkgcG90ZW50aWFsIGdvdGNoYXMuIEknbGwgYmUgcGFydGljdWxhcmx5IGtlZW4gdG8gaWRlbnRpZnkgYW55IGFyZWFzIHdoZXJlIHRoZWlyIFZGSU8gaW1wbGVtZW50YXRpb24gZGV2aWF0ZXMgZnJvbSB0aGUgdXBzdHJlYW0gVkZJTyBzdGFuZGFyZHMgb3IgY29udmVudGlvbnMuIFRoYXQgd291bGQgYmUgYSByZWQgZmxhZyB0aGF0IHJlcXVpcmVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMyNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI4OjM2LjE2ODkxMTE0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBISVNJX0FDQ19WRklPX1BDSVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgSGlTaWxpY29uIEFDQyBQQ0kgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQVJNNjQgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiA2NEJJVClcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUENJX01TSVxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBDUllQVE9fREVWX0hJU0lfUU1cXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX0hQUkVcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX1NFQzJcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX1pJUFxcbiAgMTA6XFx0XFx0c2VsZWN0IFZGSU9fUENJX0NPUkVcXG4gIDExOlxcdFxcdGhlbHBcXG4gIDEyOlxcdFxcdCAgVGhpcyBwcm92aWRlcyBnZW5lcmljIFBDSSBzdXBwb3J0IGZvciBIaVNpbGljb24gQUNDIGRldmljZXNcXG4gIDEzOlxcdFxcdCAgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI4OjM2LjE2ODk5NjAxNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNTA4ODQxODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqUENJIERldmljZSBJRCBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIGdvYWwgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIFBDSSBkZXZpY2UgSURzIHJlbGF0ZWQgdG8gYGhpc2lfYWNjX3ZmaW9fcGNpYC4gVGhpcyBzdWdnZXN0cyBhIGZvY3VzIG9uIHRoZSBoYXJkd2FyZSBsZXZlbCwgbGlrZWx5IHRpZWQgdG8gYSBzcGVjaWZpYyB2ZW5kb3IgKEhpc2kpIGFuZCBhaW1pbmcgdG8gaW50ZXJmYWNlIHdpdGggYSBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgc2V0dXAuIEknbGwgbmVlZCB0byBsb29rIGZvciBzcGVjaWZpYyBJRHMgdGhhdCBpZGVudGlmeSB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gVGhpcyBsaWtlbHkgbWVhbnMgZXhhbWluaW5nIHRoZSByZWxldmFudCBrZXJuZWwgbW9kdWxlcyBvciBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgcmVjb2duaXppbmcgYW5kIGludGVyYWN0aW5nIHdpdGggdGhpcyBkZXZpY2UuIFVsdGltYXRlbHksIEknbSBhaW1pbmcgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgUENJIGRldmljZSBzaWduYXR1cmUgYXNzb2NpYXRlZCB3aXRoIGBoaXNpX2FjY192ZmlvX3BjaWAgYW5kIGxpa2VseSwgd2hlcmUgaW4gdGhlIHN5c3RlbSB0aGlzIElEIGlzIGRlZmluZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwOTQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI5OjA2LjY3Nzg0MTczNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM3MjI1MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEV8cGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNjk1PXN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmX2RlYnVnZnNfZXhpdChzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3MDAtXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNzAxOnN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3MDIte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNzM0PXN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTc0Mi1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE3NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3RhYmxlW10gPSB7XFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNzQ0LVxcdHsgUENJX0RSSVZFUl9PVkVSUklERV9ERVZJQ0VfVkZJTyhQQ0lfVkVORE9SX0lEX0hVQVdFSSwgUENJX0RFVklDRV9JRF9IVUFXRUlfU0VDX1ZGKSB9LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNzQ5LVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTc1MDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaGlzaV9hY2NfdmZpb19wY2lfdGFibGUpO1xcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTc1MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjk6MDguMTE1MDcxMzkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc2NzY3OTg0NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGV2aWNlIFN1cHBvcnQgVmVyaWZpY2F0aW9uKipcblxuT2theSwgbGV0IG1lIHRha2UgYSBsb29rIGF0IHdoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUgaW4gdGVybXMgb2Ygc3VwcG9ydGVkIGhhcmR3YXJlLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgb3ZlcnJpZGVzIHNwZWNpZmljYWxseSBmb3IgVmlydHVhbCBGdW5jdGlvbiAoVkYpIGRldmljZXMsIGFuZCBpdCdzIHZlbmRvciBzcGVjaWZpYy4gVGhlIGNvZGUgbGlzdHMgdGhyZWUgZGV2aWNlczogdGhlIEh1YXdlaSBTRUMgVkYsIHRoZSBIdWF3ZWkgSFBSRSBWRiwgYW5kIHRoZSBIdWF3ZWkgWklQIFZGLiBUaGF0J3MgYSBzb2xpZCBzdGFydC4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlc2UgZGV2aWNlcyBhcmUgaGFuZGxlZC4gTGV0IG1lIGRpdmUgaW50byBgaGlzaV9hY2NfdmZpb19wY2kuY2AsIHNwZWNpZmljYWxseSBsaW5lcyAxNzQwIHRocm91Z2ggMTc2MC4gSSBuZWVkIHRvIHNlZSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgaG93IHRoZXNlIGRldmljZSBvdmVycmlkZXMgYXJlIHNldCB1cCB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLiBVbmRlcnN0YW5kaW5nIHRoaXMgcGFydGljdWxhciBmaWxlIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBjb250ZXh0IG9uIHdoZXJlIHRvIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzEsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjk6MjUuNzkxODcyMTY1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTc0MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTc0MDpcXHRcXHR2ZmlvX3B1dF9kZXZpY2UoXFx1MDAyNmhpc2lfYWNjX3ZkZXYtXFx1MDAzZWNvcmVfZGV2aWNlLnZkZXYpO1xcbjE3NDE6XFx0fVxcbjE3NDI6XFx0XFxuMTc0MzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaGlzaV9hY2NfdmZpb19wY2lfdGFibGVbXSA9IHtcXG4xNzQ0OlxcdFxcdHsgUENJX0RSSVZFUl9PVkVSUklERV9ERVZJQ0VfVkZJTyhQQ0lfVkVORE9SX0lEX0hVQVdFSSwgUENJX0RFVklDRV9JRF9IVUFXRUlfU0VDX1ZGKSB9LFxcbjE3NDU6XFx0XFx0eyBQQ0lfRFJJVkVSX09WRVJSSURFX0RFVklDRV9WRklPKFBDSV9WRU5ET1JfSURfSFVBV0VJLCBQQ0lfREVWSUNFX0lEX0hVQVdFSV9IUFJFX1ZGKSB9LFxcbjE3NDY6XFx0XFx0eyBQQ0lfRFJJVkVSX09WRVJSSURFX0RFVklDRV9WRklPKFBDSV9WRU5ET1JfSURfSFVBV0VJLCBQQ0lfREVWSUNFX0lEX0hVQVdFSV9aSVBfVkYpIH0sXFxuMTc0NzpcXHRcXHR7IH1cXG4xNzQ4OlxcdH07XFxuMTc0OTpcXHRcXG4xNzUwOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBoaXNpX2FjY192ZmlvX3BjaV90YWJsZSk7XFxuMTc1MTpcXHRcXG4xNzUyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGhpc2lfYWNjX3ZmX2Vycl9oYW5kbGVycyA9IHtcXG4xNzUzOlxcdFxcdC5yZXNldF9wcmVwYXJlID0gaGlzaV9hY2NfdmZfcGNpX3Jlc2V0X3ByZXBhcmUsXFxuMTc1NDpcXHRcXHQucmVzZXRfZG9uZSA9IGhpc2lfYWNjX3ZmX3BjaV9hZXJfcmVzZXRfZG9uZSxcXG4xNzU1OlxcdFxcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcXG4xNzU2OlxcdH07XFxuMTc1NzpcXHRcXG4xNzU4OlxcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBoaXNpX2FjY192ZmlvX3BjaV9kcml2ZXIgPSB7XFxuMTc1OTpcXHRcXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbjE3NjA6XFx0XFx0LmlkX3RhYmxlID0gaGlzaV9hY2NfdmZpb19wY2lfdGFibGUsXFxuMTc2MTpcXHRcXHQucHJvYmUgPSBoaXNpX2FjY192ZmlvX3BjaV9wcm9iZSxcXG4xNzYyOlxcdFxcdC5yZW1vdmUgPSBoaXNpX2FjY192ZmlvX3BjaV9yZW1vdmUsXFxuMTc2MzpcXHRcXHQuZXJyX2hhbmRsZXIgPSBcXHUwMDI2aGlzaV9hY2NfdmZfZXJyX2hhbmRsZXJzLFxcbjE3NjQ6XFx0XFx0LmRyaXZlcl9tYW5hZ2VkX2RtYSA9IHRydWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI5OjI1Ljc5MTk3MjU4NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzgxNTczNDAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgaGlzaV9hY2NfdmZpb19wY2lgIERyaXZlciBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBwYXRjaCwgZGVhbGluZyB3aXRoIHRoZSBgaGlzaV9hY2NfdmZpb19wY2lgIGRyaXZlciBmb3IgSGlTaWxpY29uIEFDQyBkZXZpY2VzIChzcGVjaWZpY2FsbHkgU0VDLCBIUFJFLCBhbmQgWklQIGFjY2VsZXJhdGlvbiksIGlzICpub3QqIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gVGhpcyBkcml2ZXIgaXMgdmVyeSBjbGVhcmx5IHZlbmRvci1zcGVjaWZpYyBhbmQgaGFyZHdhcmUtZGVwZW5kZW50LCByZXF1aXJpbmcgYWN0dWFsIEh1YXdlaS9IaVNpbGljb24gUENJZSBjYXJkcyBvciB0aGUgS3VucGVuZyBTb0MuIFRoYXQncyBhIGh1Z2UgcmVkIGZsYWcuXG5cbk5vdywgbGV0J3Mgd2FsayB0aHJvdWdoIHRoZSBjcml0ZXJpYS4gVGhlIGd1aWRlbGluZSBzcGVjaWZpY2FsbHkgZmxhZ3MgY29kZSB0aGF0ICpyZXF1aXJlcyogcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgbm90IGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgZHJpdmVyIGFic29sdXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBJdCdzIG5vdCBkZXNpZ25lZCB0byBmdW5jdGlvbiB3aXRob3V0IHRoZSBzcGVjaWZpYyBIaVNpbGljb24gaGFyZHdhcmUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBkcml2ZXIgZm9yIFZGSU8sIHdoaWNoIGlzIGFib3V0IGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MuIFRoZXJlJ3Mgbm8gd2F5IHRvIHJlYWxpc3RpY2FsbHkgZnV6eiB0aGlzIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgb3IgZXZlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgc2VlbXMgdGhhdCBhbnkgY29kZSBwYXRocyB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIHJlYWNoLlxuXG5TbywgKldvcnRoRnV6emluZyogaXMgZGVmaW5pdGVseSAqZmFsc2UqIGhlcmUuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gdHJ5aW5nIHRvIGZ1enogc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYSB2ZXJ5IHNwZWNpZmljIHBoeXNpY2FsIHNldHVwLCB0aGF0J3Mgbm90IGVhc2lseSBvYnRhaW5hYmxlLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIG1ldGFkYXRhOlxuKiAgICpXb3J0aEZ1enppbmcqOiBGYWxzZS4gQ2hlY2suXG4qICAgKkVuYWJsZUNvbmZpZ3MqOiBFbXB0eS4gQ29ycmVjdCwgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZC5cbiogICAqRm9jdXNTeW1ib2xzKjogRW1wdHkuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgc2NvcGUuXG4qICAgKlJlYXNvbmluZyo6IENvbmZpcm1lZC4gVGhlIHBhdGNoIGlzIHRpZWQgdG8gYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIHRoYXQncyBpbmhlcmVudGx5IHRpZWQgdG8gcGh5c2ljYWwgSGlTaWxpY29uIGhhcmR3YXJlLCBhbmQgd2lsbCBub3QgZnVuY3Rpb24gaW5zaWRlIGFueSBjb21tb24gdmlydHVhbGl6YXRpb24sIHN1Y2ggYXMgUUVNVS5cblxuQWxyaWdodCwgSSdtIHNhdGlzZmllZC4gSXQncyBhIGNsZWFyIFwibm9cIiBvbiB0aGlzIG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgwMCwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxMDoyOTo1My42MDc3MDkzMjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlTaWxpY29uIEFDQyBWRklPIFBDSSBkcml2ZXIgKGRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMpLCB3aGljaCByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgSGlTaWxpY29uIGFjY2VsZXJhdG9yIFBDSWUgaGFyZHdhcmUgKFNFQywgSFBSRSwgWklQKSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaVNpbGljb24gQUNDIFZGSU8gUENJIGRyaXZlciAoZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYyksIHdoaWNoIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBIaVNpbGljb24gYWNjZWxlcmF0b3IgUENJZSBoYXJkd2FyZSAoU0VDLCBIUFJFLCBaSVApIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjk6NTMuNjA3NzMzOTU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowqmwhp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-31 09:30:51 +0000 UTC FinishedAt: 2026-08-31 10:29:54 +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+CgkJCTx0ZD4yMDI2LzA4LzMxIDEwOjI3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpU2lsaWNvbiBBQ0MgVkZJTyBQQ0kgZHJpdmVyIChkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jKSwgd2hpY2ggcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBQQ0llIGhhcmR3YXJlIChTRUMsIEhQUkUsIFpJUCkgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDEwOjI3PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYWRhMmM2NjdjNTdhZDhiMDNkNjI3Zjg3MTVhNGZkMmQzNDc0ODYxNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMxIDEwOjI3OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jXG5pbmRleCA4NjM2MmVjNDI0YTUwLi40ZjEyY2FiOTY1NDVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xuQEAgLTExNTQsOSAmIzQzOzExNTQsMTQgQEAgc3RhdGljIHZvaWQgaGlzaV9hY2NfdmZfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4ge1xuIFx0c3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlICpoaXNpX2FjY192ZGV2ID0gaGlzaV9hY2NfZHJ2ZGF0YShwZGV2KTtcbiBcdHN0cnVjdCBoaXNpX3FtICpxbSA9IGhpc2lfYWNjX3ZkZXYtXHUwMDNlcGZfcW07XG4tXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZxbS1cdTAwM2VwZGV2LVx1MDAzZWRldjtcbiYjNDM7XHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcdTAwMjZwZGV2LVx1MDAzZWRldjtcbiBcdHUzMiBkZWxheSA9IDA7XG4gXG4mIzQzO1x0aWYgKCFxbSB8fCAhcW0tXHUwMDNlaW9fYmFzZSkge1xuJiM0MztcdFx0ZGV2X2VycihkZXYsIFwmIzM0O1BGIFFNIG5vdCBhdmFpbGFibGUgZm9yIHJlc2V0XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0LyogQWxsIHJlc2V0IHJlcXVlc3RzIG5lZWQgdG8gYmUgcXVldWVkIGZvciBwcm9jZXNzaW5nICovXG4gXHR3aGlsZSAodGVzdF9hbmRfc2V0X2JpdChRTV9SRVNFVFRJTkcsIFx1MDAyNnFtLVx1MDAzZW1pc2NfY3RsKSkge1xuIFx0XHRtc2xlZXAoMSk7XG5AQCAtMTE3NCw4ICYjNDM7MTE3OSwxNCBAQCBzdGF0aWMgdm9pZCBoaXNpX2FjY192Zl9wY2lfYWVyX3Jlc2V0X2RvbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG4gXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYgPSBoaXNpX2FjY19kcnZkYXRhKHBkZXYpO1xuIFx0c3RydWN0IGhpc2lfcW0gKnFtID0gaGlzaV9hY2NfdmRldi1cdTAwM2VwZl9xbTtcbiBcbi1cdGlmIChoaXNpX2FjY192ZGV2LVx1MDAzZXNldF9yZXNldF9mbGFnKVxuLVx0XHRjbGVhcl9iaXQoUU1fUkVTRVRUSU5HLCBcdTAwMjZxbS1cdTAwM2VtaXNjX2N0bCk7XG4mIzQzO1x0aWYgKGhpc2lfYWNjX3ZkZXYtXHUwMDNlc2V0X3Jlc2V0X2ZsYWcpIHtcbiYjNDM7XHRcdGlmIChxbSBcdTAwMjZcdTAwMjYgcW0tXHUwMDNlaW9fYmFzZSkge1xuJiM0MztcdFx0XHRjbGVhcl9iaXQoUU1fUkVTRVRUSU5HLCBcdTAwMjZxbS1cdTAwM2VtaXNjX2N0bCk7XG4mIzQzO1x0XHRcdGhpc2lfYWNjX3ZkZXYtXHUwMDNlc2V0X3Jlc2V0X2ZsYWcgPSBmYWxzZTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0O1BGIFFNIG5vdCBhdmFpbGFibGUgZm9yIHJlc2V0IGRvbmVcXG5cJiMzNDspO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiBcbiBcdGlmICghaGlzaV9hY2NfdmRldi1cdTAwM2Vjb3JlX2RldmljZS52ZGV2Lm1pZ19vcHMpXG4gXHRcdHJldHVybjtcbkBAIC0xMTk5LDYgJiM0MzsxMjEwLDIzIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZfcW1faW5pdChzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYpXG4gXHRlbHNlXG4gXHRcdGhpc2lfYWNjX3ZkZXYtXHUwMDNlZHJ2X21vZGUgPSBIV19BQ0NfTUlHX1ZGX0NUUkw7XG4gXG4mIzQzO1x0LypcbiYjNDM7XHQgKiBPbiBWRl9DVFJMIGhhcmR3YXJlLCBCQVIyIGhvbGRzIDMyS0IgZnVuY3Rpb25hbCAmIzQzOyAzMktCXG4mIzQzO1x0ICogbWlncmF0aW9uIHJlZ2lzdGVycy4gV2hlbiB0aGUgaG9zdCBwYWdlIGV4Y2VlZHMgMzJLQiwgdGhlXG4mIzQzO1x0ICogdHdvIHNoYXJlIG9uZSBwaHlzaWNhbCBwYWdlIGFuZCBjYW5ub3QgYmUgaXNvbGF0ZWQgYnkgbW1hcC5cbiYjNDM7XHQgKiBSZWplY3QgdGhlIG9wZW4gc28gUUVNVSBmYWlscyBjbGVhbmx5IGF0IHN0YXJ0dXAuXG4mIzQzO1x0ICovXG4mIzQzO1x0aWYgKGhpc2lfYWNjX3ZkZXYtXHUwMDNlZHJ2X21vZGUgPT0gSFdfQUNDX01JR19WRl9DVFJMKSB7XG4mIzQzO1x0XHRyZXNvdXJjZV9zaXplX3QgZnVuY19sZW4gPVxuJiM0MztcdFx0XHRwY2lfcmVzb3VyY2VfbGVuKHZmX2RldiwgVkZJT19QQ0lfQkFSMl9SRUdJT05fSU5ERVgpIFx1MDAzZVx1MDAzZSAxO1xuJiM0MztcbiYjNDM7XHRcdGlmIChmdW5jX2xlbiBcdTAwM2MgUEFHRV9TSVpFKSB7XG4mIzQzO1x0XHRcdGRldl9lcnIoXHUwMDI2dmZfZGV2LVx1MDAzZWRldixcbiYjNDM7XHRcdFx0XHRcJiMzNDttaWdyYXRpb24gbm90IHN1cHBvcnRlZCBvbiA2NEtCIHBhZ2VzIHdpdGggUU1fSFdfVjNcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHRcdH1cbiYjNDM7XHR9XG4mIzQzO1xuIFx0aWYgKGhpc2lfYWNjX3ZkZXYtXHUwMDNlZHJ2X21vZGUgPT0gSFdfQUNDX01JR19QRl9DVFJMKSB7XG4gXHRcdC8qXG4gXHRcdCAqIE9uIGhhcmR3YXJlIHBsYXRmb3JtcyBncmVhdGVyIHRoYW4gUU1fSFdfVjMsIHRoZSBtaWdyYXRpb24gZnVuY3Rpb25cbkBAIC0xNTY1LDYgJiM0MzsxNTkzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoY29yZV92ZGV2LVx1MDAzZWRldik7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XG4gXG4mIzQzO1x0aWYgKCFwZl9xbSkge1xuJiM0MztcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCYjMzQ7UEYgZHJpdmVyIG5vdCBsb2FkZWQsIGNhbm5vdCBlbmFibGUgbWlncmF0aW9uXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdHJldHVybiAtRU5PREVWO1xuJiM0MztcdH1cbiYjNDM7XG4gXHRoaXNpX2FjY192ZGV2LVx1MDAzZXZmX2lkID0gcGNpX2lvdl92Zl9pZChwZGV2KSAmIzQzOyAxO1xuIFx0aGlzaV9hY2NfdmRldi1cdTAwM2VwZl9xbSA9IHBmX3FtO1xuIFx0aGlzaV9hY2NfdmRldi1cdTAwM2V2Zl9kZXYgPSBwZGV2O1xuQEAgLTE2NzAsMTMgJiM0MzsxNzAzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlXG4gXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXY7XG4gXHRjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzICpvcHMgPSBcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9vcHM7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcGZfcW07XG4tXHRpbnQgdmZfaWQ7XG4gXHRpbnQgcmV0O1xuIFxuIFx0cGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XG4gXHRpZiAocGZfcW0gXHUwMDI2XHUwMDI2IHBmX3FtLVx1MDAzZXZlciBcdTAwM2U9IFFNX0hXX1YzKSB7XG4tXHRcdHZmX2lkID0gcGNpX2lvdl92Zl9pZChwZGV2KTtcbi1cdFx0aWYgKHZmX2lkIFx1MDAzZT0gMClcbiYjNDM7XHRcdGlmIChwZGV2LVx1MDAzZWlzX3ZpcnRmbilcbiBcdFx0XHRvcHMgPSBcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9taWdybl9vcHM7XG4gXHRcdGVsc2VcbiBcdFx0XHRwY2lfd2FybihwZGV2LCBcJiMzNDttaWdyYXRpb24gc3VwcG9ydCBmYWlsZWQsIGNvbnRpbnVlIHdpdGggZ2VuZXJpYyBpbnRlcmZhY2VcXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDEwOjI3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaVNpbGljb24gQUNDIFZGSU8gUENJIGRyaXZlciAoZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYyksIHdoaWNoIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBIaVNpbGljb24gYWNjZWxlcmF0b3IgUENJZSBoYXJkd2FyZSAoU0VDLCBIUFJFLCBaSVApIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFkYTJjNjY3YzU3YWQ4YjAzZDYyN2Y4NzE1YTRmZDJkMzQ3NDg2MTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEF1ZyAzMSAxMDoyNzoyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jCmluZGV4IDg2MzYyZWM0MjRhNTAuLjRmMTJjYWI5NjU0NWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYwpAQCAtMTE1NCw5ICYjNDM7MTE1NCwxNCBAQCBzdGF0aWMgdm9pZCBoaXNpX2FjY192Zl9wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldikKIHsKIAlzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYgPSBoaXNpX2FjY19kcnZkYXRhKHBkZXYpOwogCXN0cnVjdCBoaXNpX3FtICpxbSA9IGhpc2lfYWNjX3ZkZXYtJmd0O3BmX3FtOwotCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZhbXA7cW0tJmd0O3BkZXYtJmd0O2RldjsKJiM0MzsJc3RydWN0IGRldmljZSAqZGV2ID0gJmFtcDtwZGV2LSZndDtkZXY7CiAJdTMyIGRlbGF5ID0gMDsKIAomIzQzOwlpZiAoIXFtIHx8ICFxbS0mZ3Q7aW9fYmFzZSkgewomIzQzOwkJZGV2X2VycihkZXYsICYjMzQ7UEYgUU0gbm90IGF2YWlsYWJsZSBmb3IgcmVzZXRcbiYjMzQ7KTsKJiM0MzsJCXJldHVybjsKJiM0MzsJfQomIzQzOwogCS8qIEFsbCByZXNldCByZXF1ZXN0cyBuZWVkIHRvIGJlIHF1ZXVlZCBmb3IgcHJvY2Vzc2luZyAqLwogCXdoaWxlICh0ZXN0X2FuZF9zZXRfYml0KFFNX1JFU0VUVElORywgJmFtcDtxbS0mZ3Q7bWlzY19jdGwpKSB7CiAJCW1zbGVlcCgxKTsKQEAgLTExNzQsOCAmIzQzOzExNzksMTQgQEAgc3RhdGljIHZvaWQgaGlzaV9hY2NfdmZfcGNpX2Flcl9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KQogCXN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSAqaGlzaV9hY2NfdmRldiA9IGhpc2lfYWNjX2RydmRhdGEocGRldik7CiAJc3RydWN0IGhpc2lfcW0gKnFtID0gaGlzaV9hY2NfdmRldi0mZ3Q7cGZfcW07CiAKLQlpZiAoaGlzaV9hY2NfdmRldi0mZ3Q7c2V0X3Jlc2V0X2ZsYWcpCi0JCWNsZWFyX2JpdChRTV9SRVNFVFRJTkcsICZhbXA7cW0tJmd0O21pc2NfY3RsKTsKJiM0MzsJaWYgKGhpc2lfYWNjX3ZkZXYtJmd0O3NldF9yZXNldF9mbGFnKSB7CiYjNDM7CQlpZiAocW0gJmFtcDsmYW1wOyBxbS0mZ3Q7aW9fYmFzZSkgewomIzQzOwkJCWNsZWFyX2JpdChRTV9SRVNFVFRJTkcsICZhbXA7cW0tJmd0O21pc2NfY3RsKTsKJiM0MzsJCQloaXNpX2FjY192ZGV2LSZndDtzZXRfcmVzZXRfZmxhZyA9IGZhbHNlOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlkZXZfZXJyKCZhbXA7cGRldi0mZ3Q7ZGV2LCAmIzM0O1BGIFFNIG5vdCBhdmFpbGFibGUgZm9yIHJlc2V0IGRvbmVcbiYjMzQ7KTsKJiM0MzsJCX0KJiM0MzsJfQogCiAJaWYgKCFoaXNpX2FjY192ZGV2LSZndDtjb3JlX2RldmljZS52ZGV2Lm1pZ19vcHMpCiAJCXJldHVybjsKQEAgLTExOTksNiAmIzQzOzEyMTAsMjMgQEAgc3RhdGljIGludCBoaXNpX2FjY192Zl9xbV9pbml0KHN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSAqaGlzaV9hY2NfdmRldikKIAllbHNlCiAJCWhpc2lfYWNjX3ZkZXYtJmd0O2Rydl9tb2RlID0gSFdfQUNDX01JR19WRl9DVFJMOwogCiYjNDM7CS8qCiYjNDM7CSAqIE9uIFZGX0NUUkwgaGFyZHdhcmUsIEJBUjIgaG9sZHMgMzJLQiBmdW5jdGlvbmFsICYjNDM7IDMyS0IKJiM0MzsJICogbWlncmF0aW9uIHJlZ2lzdGVycy4gV2hlbiB0aGUgaG9zdCBwYWdlIGV4Y2VlZHMgMzJLQiwgdGhlCiYjNDM7CSAqIHR3byBzaGFyZSBvbmUgcGh5c2ljYWwgcGFnZSBhbmQgY2Fubm90IGJlIGlzb2xhdGVkIGJ5IG1tYXAuCiYjNDM7CSAqIFJlamVjdCB0aGUgb3BlbiBzbyBRRU1VIGZhaWxzIGNsZWFubHkgYXQgc3RhcnR1cC4KJiM0MzsJICovCiYjNDM7CWlmIChoaXNpX2FjY192ZGV2LSZndDtkcnZfbW9kZSA9PSBIV19BQ0NfTUlHX1ZGX0NUUkwpIHsKJiM0MzsJCXJlc291cmNlX3NpemVfdCBmdW5jX2xlbiA9CiYjNDM7CQkJcGNpX3Jlc291cmNlX2xlbih2Zl9kZXYsIFZGSU9fUENJX0JBUjJfUkVHSU9OX0lOREVYKSAmZ3Q7Jmd0OyAxOwomIzQzOwomIzQzOwkJaWYgKGZ1bmNfbGVuICZsdDsgUEFHRV9TSVpFKSB7CiYjNDM7CQkJZGV2X2VycigmYW1wO3ZmX2Rldi0mZ3Q7ZGV2LAomIzQzOwkJCQkmIzM0O21pZ3JhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIDY0S0IgcGFnZXMgd2l0aCBRTV9IV19WM1xuJiMzNDspOwomIzQzOwkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJfQomIzQzOwl9CiYjNDM7CiAJaWYgKGhpc2lfYWNjX3ZkZXYtJmd0O2Rydl9tb2RlID09IEhXX0FDQ19NSUdfUEZfQ1RSTCkgewogCQkvKgogCQkgKiBPbiBoYXJkd2FyZSBwbGF0Zm9ybXMgZ3JlYXRlciB0aGFuIFFNX0hXX1YzLCB0aGUgbWlncmF0aW9uIGZ1bmN0aW9uCkBAIC0xNTY1LDYgJiM0MzsxNTkzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpCiAJc3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGNvcmVfdmRldi0mZ3Q7ZGV2KTsKIAlzdHJ1Y3QgaGlzaV9xbSAqcGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7CiAKJiM0MzsJaWYgKCFwZl9xbSkgewomIzQzOwkJZGV2X2VycigmYW1wO3BkZXYtJmd0O2RldiwgJiMzNDtQRiBkcml2ZXIgbm90IGxvYWRlZCwgY2Fubm90IGVuYWJsZSBtaWdyYXRpb25cbiYjMzQ7KTsKJiM0MzsJCXJldHVybiAtRU5PREVWOwomIzQzOwl9CiYjNDM7CiAJaGlzaV9hY2NfdmRldi0mZ3Q7dmZfaWQgPSBwY2lfaW92X3ZmX2lkKHBkZXYpICYjNDM7IDE7CiAJaGlzaV9hY2NfdmRldi0mZ3Q7cGZfcW0gPSBwZl9xbTsKIAloaXNpX2FjY192ZGV2LSZndDt2Zl9kZXYgPSBwZGV2OwpAQCAtMTY3MCwxMyAmIzQzOzE3MDMsMTEgQEAgc3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2UKIAlzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXY7CiAJY29uc3Qgc3RydWN0IHZmaW9fZGV2aWNlX29wcyAqb3BzID0gJmFtcDtoaXNpX2FjY192ZmlvX3BjaV9vcHM7CiAJc3RydWN0IGhpc2lfcW0gKnBmX3FtOwotCWludCB2Zl9pZDsKIAlpbnQgcmV0OwogCiAJcGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7CiAJaWYgKHBmX3FtICZhbXA7JmFtcDsgcGZfcW0tJmd0O3ZlciAmZ3Q7PSBRTV9IV19WMykgewotCQl2Zl9pZCA9IHBjaV9pb3ZfdmZfaWQocGRldik7Ci0JCWlmICh2Zl9pZCAmZ3Q7PSAwKQomIzQzOwkJaWYgKHBkZXYtJmd0O2lzX3ZpcnRmbikKIAkJCW9wcyA9ICZhbXA7aGlzaV9hY2NfdmZpb19wY2lfbWlncm5fb3BzOwogCQllbHNlCiAJCQlwY2lfd2FybihwZGV2LCAmIzM0O21pZ3JhdGlvbiBzdXBwb3J0IGZhaWxlZCwgY29udGludWUgd2l0aCBnZW5lcmljIGludGVyZmFjZVxuJiMzNDspOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzgxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgYGhpc2lfYWNjX3ZmaW9fcGNpLmNgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhIGRyaXZlciBmb3IgYWN0dWFsIEhpc2lsaWNvbiBhY2NlbGVyYXRvciBoYXJkd2FyZSwgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgZW11bGF0ZWQgb3IgZW5jb3VudGVyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBUaGF0JiMzOTtzIHRoZSBmaXJzdCBjcml0aWNhbCBwaWVjZSBvZiBpbmZvcm1hdGlvbiBJIG5lZWQuCgpUbyBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQsIEkmIzM5O2xsIGp1bXAgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gQ2hlY2tpbmcgZm9yIGBoaXNpX2FjY192ZmlvX3BjaWAgd2lsbCBob3BlZnVsbHkgZ2l2ZSBtZSBzb21lIGNsdWVzIGFib3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgdGllZCB0byBhIHBhcnRpY3VsYXIgSGlzaWxpY29uIGNoaXAsIG9yIGlmIGl0IGhhcyBicm9hZGVyIGFwcGxpY2FiaWxpdHkuCgpJZiBLY29uZmlnIGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHByb3ZpZGUgdGhlIGFuc3dlcnMsIEkmIzM5O2xsIHJlYWNoIGZvciBgZ2l0IGdyZXBgIHRvIHNlZSBpZiBJIGNhbiBmaW5kIGZ1cnRoZXIgbWVudGlvbnMgb2YgdGhlIGRyaXZlciBhbmQgaXRzIHJlbGF0ZWQgaGFyZHdhcmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcGlucG9pbnQgdGhlIHByZWNpc2UgaGFyZHdhcmUgdGhlIHBhdGNoIGludGVyYWN0cyB3aXRoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMxIDEwOjI3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0hJU0lfQUNDX1ZGSU9fUENJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGU9MTQ9b2JqLSQoQ09ORklHX0lTTV9WRklPX1BDSSkgICAgICAgICAgICYjNDM7PSBpc20vXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTE1LVxuZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfSElTSV9BQ0NfVkZJT19QQ0kpICYjNDM7PSBoaXNpbGljb24vXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTE3LVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWc6Mjpjb25maWcgSElTSV9BQ0NfVkZJT19QQ0lcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgSGlTaWxpY29uIEFDQyBQQ0kgZGV2aWNlc1wmIzM0O1xuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ISVNJX0FDQ19WRklPX1BDSSkgJiM0Mzs9IGhpc2ktYWNjLXZmaW8tcGNpLm9cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL01ha2VmaWxlLTMtaGlzaS1hY2MtdmZpby1wY2kteSA6PSBoaXNpX2FjY192ZmlvX3BjaS5vXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC0zLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaDo0OiNpZm5kZWYgSElTSV9BQ0NfVkZJT19QQ0lfSFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaDo1OiNkZWZpbmUgSElTSV9BQ0NfVkZJT19QQ0lfSFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC02LVxuLS1cbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmg9MTI5PXN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSB7XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC0xNjQtfTtcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmg6MTY1OiNlbmRpZiAvKiBISVNJX0FDQ19WRklPX1BDSV9IICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTA6Mjc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDMyNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBmaWxlcywgZnJhbWVkIGFzIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEhpU2lsaWNvbiBWRklPIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoaXMgSGlTaWxpY29uIFZGSU8gaW1wbGVtZW50YXRpb24uIEZpcnN0LCBJJiMzOTtsbCBncmFiIGBkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IG1vZHVsZSBkZXBlbmRlbmNpZXMsIGFueSBzcGVjaWZpYyBoYXJkd2FyZSBmZWF0dXJlIGVuYWJsZW1lbnRzLCBhbmQgcGVyaGFwcyBzb21lIGRldmljZSBJRCBibGFja2xpc3Rpbmcgb3Igd2hpdGVsaXN0aW5nIHNwZWNpZmljIHRvIEhpU2lsaWNvbiYjMzk7cyBQQ0kgZGV2aWNlcy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgKmNvbmZpZ3VyYWJsZSogdmVyc3VzIHdoYXQmIzM5O3MgKmFsd2F5cyogcHJlc2VudCBpbiB0aGVpciBkZXNpZ24uIFRoZSBLY29uZmlnIHdpbGwgaGVscCBjbGFyaWZ5IHRoZSBkZXNpZ24mIzM5O3Mgc2NvcGUgYW5kIHN1cHBvcnRlZCBmZWF0dXJlcyBhdCBhIGhpZ2ggbGV2ZWwuCgpOZXh0LCBJJiMzOTtsbCBvcGVuIGBkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jYC4gVGhlIGBoaXNpX2FjY2AgcHJlZml4IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHRoaXMgaXMgbGlrZWx5IHRoZSBjb3JlIGRyaXZlciBmaWxlIGZvciBzb21lIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBkZXZpY2UsIHdoaWNoIGlzIHByb2JhYmx5IHdoYXQgdGhleSYjMzk7cmUgdmlydHVhbGl6aW5nIHRocm91Z2ggVkZJTy4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igc2V2ZXJhbCBrZXkgdGhpbmdzIGhlcmU6IGhvdyB0aGUgZGV2aWNlIGlzIGluaXRpYWxpemVkIGFuZCByZWdpc3RlcmVkIHdpdGhpbiB0aGUgVkZJTyBmcmFtZXdvcmssIHRoZSBzcGVjaWZpYyBkZXZpY2UgSURzIGl0JiMzOTtzIGhhbmRsaW5nLCBhbnkgaW50ZXJydXB0IGhhbmRsaW5nIHN0cmF0ZWdpZXMgdGhleSYjMzk7cmUgZW1wbG95aW5nIChNU0ksIE1TSS1YLCBsZWdhY3kgaW50ZXJydXB0cyksIGFuZCwgY3JpdGljYWxseSwgaG93IHRoZXkmIzM5O3JlIG1hcHBpbmcgYW5kIG1hbmFnaW5nIGRldmljZSBtZW1vcnkgcmVnaW9ucyBmb3IgZ3Vlc3QgYWNjZXNzLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgdGhleSYjMzk7dmUgaGFuZGxlZCB0aGUgSU9NTVUgc2V0dXAsIGlmIHRoZXkmIzM5O3JlIHVzaW5nIGFueSBjdXN0b20gRE1BIG1hcHBpbmcgcm91dGluZXMsIGFuZCB3aGV0aGVyIHRoZXkgYXJlIGltcGxlbWVudGluZyBhbnkgY3VzdG9tIGRldmljZS1zcGVjaWZpYyBwcm90ZWN0aW9uIG1lY2hhbmlzbXMgdG8gZW5zdXJlIHNlY3VyZSBndWVzdCBhY2Nlc3MuIEkmIzM5O2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHNwZWNpZmljIHRvIHRoZWlyIGhhcmR3YXJlIGFyY2hpdGVjdHVyZTsgcGVyaGFwcyBzb21lIGNsZXZlciByZWdpc3RlciB0cmlja3Mgb3IgbWVtb3J5IG1hcHBpbmcgc3RyYXRlZ2llcy4gSSYjMzk7bGwgcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIGRlYnVnZ2luZyBjb2RlIHRvby4gVGhhdCYjMzk7cyB1c3VhbGx5IHdoZXJlIHlvdSBmaW5kIHRoZSByZWFsLXdvcmxkIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGFueSBwb3RlbnRpYWwgZ290Y2hhcy4gSSYjMzk7bGwgYmUgcGFydGljdWxhcmx5IGtlZW4gdG8gaWRlbnRpZnkgYW55IGFyZWFzIHdoZXJlIHRoZWlyIFZGSU8gaW1wbGVtZW50YXRpb24gZGV2aWF0ZXMgZnJvbSB0aGUgdXBzdHJlYW0gVkZJTyBzdGFuZGFyZHMgb3IgY29udmVudGlvbnMuIFRoYXQgd291bGQgYmUgYSByZWQgZmxhZyB0aGF0IHJlcXVpcmVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgSElTSV9BQ0NfVkZJT19QQ0lcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1ZGSU8gc3VwcG9ydCBmb3IgSGlTaWxpY29uIEFDQyBQQ0kgZGV2aWNlc1wmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBBUk02NCB8fCAoQ09NUElMRV9URVNUIFx1MDAyNlx1MDAyNiA2NEJJVClcbiAgIDU6XHRcdGRlcGVuZHMgb24gUENJX01TSVxuICAgNjpcdFx0ZGVwZW5kcyBvbiBDUllQVE9fREVWX0hJU0lfUU1cbiAgIDc6XHRcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX0hQUkVcbiAgIDg6XHRcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX1NFQzJcbiAgIDk6XHRcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX1pJUFxuICAxMDpcdFx0c2VsZWN0IFZGSU9fUENJX0NPUkVcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgVGhpcyBwcm92aWRlcyBnZW5lcmljIFBDSSBzdXBwb3J0IGZvciBIaVNpbGljb24gQUNDIGRldmljZXNcbiAgMTM6XHRcdCAgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxuICAxNDpcdFxuICAxNTpcdFx0ICBJZiB5b3UgZG9uJiMzOTt0IGtub3cgd2hhdCB0byBkbyBoZXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDk0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKlBDSSBEZXZpY2UgSUQgSW52ZXN0aWdhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIGdvYWwgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIFBDSSBkZXZpY2UgSURzIHJlbGF0ZWQgdG8gYGhpc2lfYWNjX3ZmaW9fcGNpYC4gVGhpcyBzdWdnZXN0cyBhIGZvY3VzIG9uIHRoZSBoYXJkd2FyZSBsZXZlbCwgbGlrZWx5IHRpZWQgdG8gYSBzcGVjaWZpYyB2ZW5kb3IgKEhpc2kpIGFuZCBhaW1pbmcgdG8gaW50ZXJmYWNlIHdpdGggYSBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgc2V0dXAuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBmb3Igc3BlY2lmaWMgSURzIHRoYXQgaWRlbnRpZnkgdGhpcyBwYXJ0aWN1bGFyIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb24uIFRoaXMgbGlrZWx5IG1lYW5zIGV4YW1pbmluZyB0aGUgcmVsZXZhbnQga2VybmVsIG1vZHVsZXMgb3IgY29uZmlndXJhdGlvbiBmaWxlcyB0byB1bmRlcnN0YW5kIGhvdyB0aGUgc3lzdGVtIGlzIHJlY29nbml6aW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZGV2aWNlLiBVbHRpbWF0ZWx5LCBJJiMzOTttIGFpbWluZyB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBQQ0kgZGV2aWNlIHNpZ25hdHVyZSBhc3NvY2lhdGVkIHdpdGggYGhpc2lfYWNjX3ZmaW9fcGNpYCBhbmQgbGlrZWx5LCB3aGVyZSBpbiB0aGUgc3lzdGVtIHRoaXMgSUQgaXMgZGVmaW5lZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFfHBjaV9kZXZpY2VfaWQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNjk1PXN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmX2RlYnVnZnNfZXhpdChzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYpXG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNzAwLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNzAxOnN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTcwMi17XG4tLVxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNzM0PXN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3NDItXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE3NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3RhYmxlW10gPSB7XG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3NDQtXHR7IFBDSV9EUklWRVJfT1ZFUlJJREVfREVWSUNFX1ZGSU8oUENJX1ZFTkRPUl9JRF9IVUFXRUksIFBDSV9ERVZJQ0VfSURfSFVBV0VJX1NFQ19WRikgfSxcbi0tXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3NDktXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE3NTA6TU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIGhpc2lfYWNjX3ZmaW9fcGNpX3RhYmxlKTtcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTc1MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODcxCgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRldmljZSBTdXBwb3J0IFZlcmlmaWNhdGlvbioqCgpPa2F5LCBsZXQgbWUgdGFrZSBhIGxvb2sgYXQgd2hhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGhlcmUgaW4gdGVybXMgb2Ygc3VwcG9ydGVkIGhhcmR3YXJlLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgb3ZlcnJpZGVzIHNwZWNpZmljYWxseSBmb3IgVmlydHVhbCBGdW5jdGlvbiAoVkYpIGRldmljZXMsIGFuZCBpdCYjMzk7cyB2ZW5kb3Igc3BlY2lmaWMuIFRoZSBjb2RlIGxpc3RzIHRocmVlIGRldmljZXM6IHRoZSBIdWF3ZWkgU0VDIFZGLCB0aGUgSHVhd2VpIEhQUkUgVkYsIGFuZCB0aGUgSHVhd2VpIFpJUCBWRi4gVGhhdCYjMzk7cyBhIHNvbGlkIHN0YXJ0LiBJIG5lZWQgdG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBoYW5kbGVkLiBMZXQgbWUgZGl2ZSBpbnRvIGBoaXNpX2FjY192ZmlvX3BjaS5jYCwgc3BlY2lmaWNhbGx5IGxpbmVzIDE3NDAgdGhyb3VnaCAxNzYwLiBJIG5lZWQgdG8gc2VlIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gZGV0YWlscyBvZiBob3cgdGhlc2UgZGV2aWNlIG92ZXJyaWRlcyBhcmUgc2V0IHVwIHdpdGhpbiB0aGUgVkZJTyBmcmFtZXdvcmsuIFVuZGVyc3RhbmRpbmcgdGhpcyBwYXJ0aWN1bGFyIGZpbGUgd2lsbCBnaXZlIG1lIGEgcHJvcGVyIGNvbnRleHQgb24gd2hlcmUgdG8gcHJvY2VlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTA6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTc0MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxNzQwOlx0XHR2ZmlvX3B1dF9kZXZpY2UoXHUwMDI2aGlzaV9hY2NfdmRldi1cdTAwM2Vjb3JlX2RldmljZS52ZGV2KTtcbjE3NDE6XHR9XG4xNzQyOlx0XG4xNzQzOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3RhYmxlW10gPSB7XG4xNzQ0Olx0XHR7IFBDSV9EUklWRVJfT1ZFUlJJREVfREVWSUNFX1ZGSU8oUENJX1ZFTkRPUl9JRF9IVUFXRUksIFBDSV9ERVZJQ0VfSURfSFVBV0VJX1NFQ19WRikgfSxcbjE3NDU6XHRcdHsgUENJX0RSSVZFUl9PVkVSUklERV9ERVZJQ0VfVkZJTyhQQ0lfVkVORE9SX0lEX0hVQVdFSSwgUENJX0RFVklDRV9JRF9IVUFXRUlfSFBSRV9WRikgfSxcbjE3NDY6XHRcdHsgUENJX0RSSVZFUl9PVkVSUklERV9ERVZJQ0VfVkZJTyhQQ0lfVkVORE9SX0lEX0hVQVdFSSwgUENJX0RFVklDRV9JRF9IVUFXRUlfWklQX1ZGKSB9LFxuMTc0NzpcdFx0eyB9XG4xNzQ4Olx0fTtcbjE3NDk6XHRcbjE3NTA6XHRNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaGlzaV9hY2NfdmZpb19wY2lfdGFibGUpO1xuMTc1MTpcdFxuMTc1MjpcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGhpc2lfYWNjX3ZmX2Vycl9oYW5kbGVycyA9IHtcbjE3NTM6XHRcdC5yZXNldF9wcmVwYXJlID0gaGlzaV9hY2NfdmZfcGNpX3Jlc2V0X3ByZXBhcmUsXG4xNzU0Olx0XHQucmVzZXRfZG9uZSA9IGhpc2lfYWNjX3ZmX3BjaV9hZXJfcmVzZXRfZG9uZSxcbjE3NTU6XHRcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcbjE3NTY6XHR9O1xuMTc1NzpcdFxuMTc1ODpcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBoaXNpX2FjY192ZmlvX3BjaV9kcml2ZXIgPSB7XG4xNzU5Olx0XHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxuMTc2MDpcdFx0LmlkX3RhYmxlID0gaGlzaV9hY2NfdmZpb19wY2lfdGFibGUsXG4xNzYxOlx0XHQucHJvYmUgPSBoaXNpX2FjY192ZmlvX3BjaV9wcm9iZSxcbjE3NjI6XHRcdC5yZW1vdmUgPSBoaXNpX2FjY192ZmlvX3BjaV9yZW1vdmUsXG4xNzYzOlx0XHQuZXJyX2hhbmRsZXIgPSBcdTAwMjZoaXNpX2FjY192Zl9lcnJfaGFuZGxlcnMsXG4xNzY0Olx0XHQuZHJpdmVyX21hbmFnZWRfZG1hID0gdHJ1ZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzEgMTA6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgwMAoJCQkJCQkJb3V0cHV0OiAxMDUKCQkJCQkJCXRob3VnaHRzOiA0NjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGhpc2lfYWNjX3ZmaW9fcGNpYCBEcml2ZXIgYW5kIGl0cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBwYXRjaCwgZGVhbGluZyB3aXRoIHRoZSBgaGlzaV9hY2NfdmZpb19wY2lgIGRyaXZlciBmb3IgSGlTaWxpY29uIEFDQyBkZXZpY2VzIChzcGVjaWZpY2FsbHkgU0VDLCBIUFJFLCBhbmQgWklQIGFjY2VsZXJhdGlvbiksIGlzICpub3QqIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gVGhpcyBkcml2ZXIgaXMgdmVyeSBjbGVhcmx5IHZlbmRvci1zcGVjaWZpYyBhbmQgaGFyZHdhcmUtZGVwZW5kZW50LCByZXF1aXJpbmcgYWN0dWFsIEh1YXdlaS9IaVNpbGljb24gUENJZSBjYXJkcyBvciB0aGUgS3VucGVuZyBTb0MuIFRoYXQmIzM5O3MgYSBodWdlIHJlZCBmbGFnLgoKTm93LCBsZXQmIzM5O3Mgd2FsayB0aHJvdWdoIHRoZSBjcml0ZXJpYS4gVGhlIGd1aWRlbGluZSBzcGVjaWZpY2FsbHkgZmxhZ3MgY29kZSB0aGF0ICpyZXF1aXJlcyogcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgbm90IGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgZHJpdmVyIGFic29sdXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBJdCYjMzk7cyBub3QgZGVzaWduZWQgdG8gZnVuY3Rpb24gd2l0aG91dCB0aGUgc3BlY2lmaWMgSGlTaWxpY29uIGhhcmR3YXJlLiBXZSYjMzk7cmUgdGFsa2luZyBhYm91dCBhIGRyaXZlciBmb3IgVkZJTywgd2hpY2ggaXMgYWJvdXQgZGlyZWN0IGhhcmR3YXJlIGFjY2Vzcy4gVGhlcmUmIzM5O3Mgbm8gd2F5IHRvIHJlYWxpc3RpY2FsbHkgZnV6eiB0aGlzIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgb3IgZXZlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgc2VlbXMgdGhhdCBhbnkgY29kZSBwYXRocyB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIHJlYWNoLgoKU28sICpXb3J0aEZ1enppbmcqIGlzIGRlZmluaXRlbHkgKmZhbHNlKiBoZXJlLiBUaGVyZSYjMzk7cyBubyBwb2ludCBpbiB0cnlpbmcgdG8gZnV6eiBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBhIHZlcnkgc3BlY2lmaWMgcGh5c2ljYWwgc2V0dXAsIHRoYXQmIzM5O3Mgbm90IGVhc2lseSBvYnRhaW5hYmxlLgoKTm93LCBsZXQmIzM5O3MgY29uZmlybSB0aGUgbWV0YWRhdGE6CiogICAqV29ydGhGdXp6aW5nKjogRmFsc2UuIENoZWNrLgoqICAgKkVuYWJsZUNvbmZpZ3MqOiBFbXB0eS4gQ29ycmVjdCwgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZC4KKiAgICpGb2N1c1N5bWJvbHMqOiBFbXB0eS4gTWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBzY29wZS4KKiAgICpSZWFzb25pbmcqOiBDb25maXJtZWQuIFRoZSBwYXRjaCBpcyB0aWVkIHRvIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciB0aGF0JiMzOTtzIGluaGVyZW50bHkgdGllZCB0byBwaHlzaWNhbCBIaVNpbGljb24gaGFyZHdhcmUsIGFuZCB3aWxsIG5vdCBmdW5jdGlvbiBpbnNpZGUgYW55IGNvbW1vbiB2aXJ0dWFsaXphdGlvbiwgc3VjaCBhcyBRRU1VLgoKQWxyaWdodCwgSSYjMzk7bSBzYXRpc2ZpZWQuIEl0JiMzOTtzIGEgY2xlYXIgJiMzNDtubyYjMzQ7IG9uIHRoaXMgb25lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaVNpbGljb24gQUNDIFZGSU8gUENJIGRyaXZlciAoZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYyksIHdoaWNoIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBIaVNpbGljb24gYWNjZWxlcmF0b3IgUENJZSBoYXJkd2FyZSAoU0VDLCBIUFJFLCBaSVApIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpU2lsaWNvbiBBQ0MgVkZJTyBQQ0kgZHJpdmVyIChkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jKSwgd2hpY2ggcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBQQ0llIGhhcmR3YXJlIChTRUMsIEhQUkUsIFpJUCkgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMSAxMDoyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjc6MjYuNzk0MzMzNjc4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2ODEzNDExNzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEhpU2lsaWNvbiBBQ0MgVkZJTyBQQ0kgZHJpdmVyIChkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jKSwgd2hpY2ggcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIHBoeXNpY2FsIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBQQ0llIGhhcmR3YXJlIChTRUMsIEhQUkUsIFpJUCkgbm90IHByZXNlbnQgb3IgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxMDoyNzoyNi43OTQzMzg3MDhaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0ODY4NjY3ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhZGEyYzY2N2M1N2FkOGIwM2Q2MjdmODcxNWE0ZmQyZDM0NzQ4NjE2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBNb24gQXVnIDMxIDEwOjI3OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jXFxuaW5kZXggODYzNjJlYzQyNGE1MC4uNGYxMmNhYjk2NTQ1ZSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jXFxuKysrIGIvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xcbkBAIC0xMTU0LDkgKzExNTQsMTQgQEAgc3RhdGljIHZvaWQgaGlzaV9hY2NfdmZfcGNpX3Jlc2V0X3ByZXBhcmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuIHtcXG4gXFx0c3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlICpoaXNpX2FjY192ZGV2ID0gaGlzaV9hY2NfZHJ2ZGF0YShwZGV2KTtcXG4gXFx0c3RydWN0IGhpc2lfcW0gKnFtID0gaGlzaV9hY2NfdmRldi1cXHUwMDNlcGZfcW07XFxuLVxcdHN0cnVjdCBkZXZpY2UgKmRldiA9IFxcdTAwMjZxbS1cXHUwMDNlcGRldi1cXHUwMDNlZGV2O1xcbitcXHRzdHJ1Y3QgZGV2aWNlICpkZXYgPSBcXHUwMDI2cGRldi1cXHUwMDNlZGV2O1xcbiBcXHR1MzIgZGVsYXkgPSAwO1xcbiBcXG4rXFx0aWYgKCFxbSB8fCAhcW0tXFx1MDAzZWlvX2Jhc2UpIHtcXG4rXFx0XFx0ZGV2X2VycihkZXYsIFxcXCJQRiBRTSBub3QgYXZhaWxhYmxlIGZvciByZXNldFxcXFxuXFxcIik7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXG4gXFx0LyogQWxsIHJlc2V0IHJlcXVlc3RzIG5lZWQgdG8gYmUgcXVldWVkIGZvciBwcm9jZXNzaW5nICovXFxuIFxcdHdoaWxlICh0ZXN0X2FuZF9zZXRfYml0KFFNX1JFU0VUVElORywgXFx1MDAyNnFtLVxcdTAwM2VtaXNjX2N0bCkpIHtcXG4gXFx0XFx0bXNsZWVwKDEpO1xcbkBAIC0xMTc0LDggKzExNzksMTQgQEAgc3RhdGljIHZvaWQgaGlzaV9hY2NfdmZfcGNpX2Flcl9yZXNldF9kb25lKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbiBcXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYgPSBoaXNpX2FjY19kcnZkYXRhKHBkZXYpO1xcbiBcXHRzdHJ1Y3QgaGlzaV9xbSAqcW0gPSBoaXNpX2FjY192ZGV2LVxcdTAwM2VwZl9xbTtcXG4gXFxuLVxcdGlmIChoaXNpX2FjY192ZGV2LVxcdTAwM2VzZXRfcmVzZXRfZmxhZylcXG4tXFx0XFx0Y2xlYXJfYml0KFFNX1JFU0VUVElORywgXFx1MDAyNnFtLVxcdTAwM2VtaXNjX2N0bCk7XFxuK1xcdGlmIChoaXNpX2FjY192ZGV2LVxcdTAwM2VzZXRfcmVzZXRfZmxhZykge1xcbitcXHRcXHRpZiAocW0gXFx1MDAyNlxcdTAwMjYgcW0tXFx1MDAzZWlvX2Jhc2UpIHtcXG4rXFx0XFx0XFx0Y2xlYXJfYml0KFFNX1JFU0VUVElORywgXFx1MDAyNnFtLVxcdTAwM2VtaXNjX2N0bCk7XFxuK1xcdFxcdFxcdGhpc2lfYWNjX3ZkZXYtXFx1MDAzZXNldF9yZXNldF9mbGFnID0gZmFsc2U7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdGRldl9lcnIoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcIlBGIFFNIG5vdCBhdmFpbGFibGUgZm9yIHJlc2V0IGRvbmVcXFxcblxcXCIpO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4gXFxuIFxcdGlmICghaGlzaV9hY2NfdmRldi1cXHUwMDNlY29yZV9kZXZpY2UudmRldi5taWdfb3BzKVxcbiBcXHRcXHRyZXR1cm47XFxuQEAgLTExOTksNiArMTIxMCwyMyBAQCBzdGF0aWMgaW50IGhpc2lfYWNjX3ZmX3FtX2luaXQoc3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlICpoaXNpX2FjY192ZGV2KVxcbiBcXHRlbHNlXFxuIFxcdFxcdGhpc2lfYWNjX3ZkZXYtXFx1MDAzZWRydl9tb2RlID0gSFdfQUNDX01JR19WRl9DVFJMO1xcbiBcXG4rXFx0LypcXG4rXFx0ICogT24gVkZfQ1RSTCBoYXJkd2FyZSwgQkFSMiBob2xkcyAzMktCIGZ1bmN0aW9uYWwgKyAzMktCXFxuK1xcdCAqIG1pZ3JhdGlvbiByZWdpc3RlcnMuIFdoZW4gdGhlIGhvc3QgcGFnZSBleGNlZWRzIDMyS0IsIHRoZVxcbitcXHQgKiB0d28gc2hhcmUgb25lIHBoeXNpY2FsIHBhZ2UgYW5kIGNhbm5vdCBiZSBpc29sYXRlZCBieSBtbWFwLlxcbitcXHQgKiBSZWplY3QgdGhlIG9wZW4gc28gUUVNVSBmYWlscyBjbGVhbmx5IGF0IHN0YXJ0dXAuXFxuK1xcdCAqL1xcbitcXHRpZiAoaGlzaV9hY2NfdmRldi1cXHUwMDNlZHJ2X21vZGUgPT0gSFdfQUNDX01JR19WRl9DVFJMKSB7XFxuK1xcdFxcdHJlc291cmNlX3NpemVfdCBmdW5jX2xlbiA9XFxuK1xcdFxcdFxcdHBjaV9yZXNvdXJjZV9sZW4odmZfZGV2LCBWRklPX1BDSV9CQVIyX1JFR0lPTl9JTkRFWCkgXFx1MDAzZVxcdTAwM2UgMTtcXG4rXFxuK1xcdFxcdGlmIChmdW5jX2xlbiBcXHUwMDNjIFBBR0VfU0laRSkge1xcbitcXHRcXHRcXHRkZXZfZXJyKFxcdTAwMjZ2Zl9kZXYtXFx1MDAzZWRldixcXG4rXFx0XFx0XFx0XFx0XFxcIm1pZ3JhdGlvbiBub3Qgc3VwcG9ydGVkIG9uIDY0S0IgcGFnZXMgd2l0aCBRTV9IV19WM1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdGlmIChoaXNpX2FjY192ZGV2LVxcdTAwM2VkcnZfbW9kZSA9PSBIV19BQ0NfTUlHX1BGX0NUUkwpIHtcXG4gXFx0XFx0LypcXG4gXFx0XFx0ICogT24gaGFyZHdhcmUgcGxhdGZvcm1zIGdyZWF0ZXIgdGhhbiBRTV9IV19WMywgdGhlIG1pZ3JhdGlvbiBmdW5jdGlvblxcbkBAIC0xNTY1LDYgKzE1OTMsMTEgQEAgc3RhdGljIGludCBoaXNpX2FjY192ZmlvX3BjaV9taWdybl9pbml0X2RldihzdHJ1Y3QgdmZpb19kZXZpY2UgKmNvcmVfdmRldilcXG4gXFx0c3RydWN0IHBjaV9kZXYgKnBkZXYgPSB0b19wY2lfZGV2KGNvcmVfdmRldi1cXHUwMDNlZGV2KTtcXG4gXFx0c3RydWN0IGhpc2lfcW0gKnBmX3FtID0gaGlzaV9hY2NfZ2V0X3BmX3FtKHBkZXYpO1xcbiBcXG4rXFx0aWYgKCFwZl9xbSkge1xcbitcXHRcXHRkZXZfZXJyKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCJQRiBkcml2ZXIgbm90IGxvYWRlZCwgY2Fubm90IGVuYWJsZSBtaWdyYXRpb25cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4rXFx0fVxcbitcXG4gXFx0aGlzaV9hY2NfdmRldi1cXHUwMDNldmZfaWQgPSBwY2lfaW92X3ZmX2lkKHBkZXYpICsgMTtcXG4gXFx0aGlzaV9hY2NfdmRldi1cXHUwMDNlcGZfcW0gPSBwZl9xbTtcXG4gXFx0aGlzaV9hY2NfdmRldi1cXHUwMDNldmZfZGV2ID0gcGRldjtcXG5AQCAtMTY3MCwxMyArMTcwMywxMSBAQCBzdGF0aWMgaW50IGhpc2lfYWNjX3ZmaW9fcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZVxcbiBcXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXY7XFxuIFxcdGNvbnN0IHN0cnVjdCB2ZmlvX2RldmljZV9vcHMgKm9wcyA9IFxcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9vcHM7XFxuIFxcdHN0cnVjdCBoaXNpX3FtICpwZl9xbTtcXG4tXFx0aW50IHZmX2lkO1xcbiBcXHRpbnQgcmV0O1xcbiBcXG4gXFx0cGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XFxuIFxcdGlmIChwZl9xbSBcXHUwMDI2XFx1MDAyNiBwZl9xbS1cXHUwMDNldmVyIFxcdTAwM2U9IFFNX0hXX1YzKSB7XFxuLVxcdFxcdHZmX2lkID0gcGNpX2lvdl92Zl9pZChwZGV2KTtcXG4tXFx0XFx0aWYgKHZmX2lkIFxcdTAwM2U9IDApXFxuK1xcdFxcdGlmIChwZGV2LVxcdTAwM2Vpc192aXJ0Zm4pXFxuIFxcdFxcdFxcdG9wcyA9IFxcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9taWdybl9vcHM7XFxuIFxcdFxcdGVsc2VcXG4gXFx0XFx0XFx0cGNpX3dhcm4ocGRldiwgXFxcIm1pZ3JhdGlvbiBzdXBwb3J0IGZhaWxlZCwgY29udGludWUgd2l0aCBnZW5lcmljIGludGVyZmFjZVxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI3OjI4LjI4MjIyMTI4NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MTQ1MzI1NTEwNzMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlTaWxpY29uIEFDQyBWRklPIFBDSSBkcml2ZXIgKGRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMpLCB3aGljaCByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgSGlTaWxpY29uIGFjY2VsZXJhdG9yIFBDSWUgaGFyZHdhcmUgKFNFQywgSFBSRSwgWklQKSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGFkYTJjNjY3YzU3YWQ4YjAzZDYyN2Y4NzE1YTRmZDJkMzQ3NDg2MTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzMSAxMDoyNzoyNCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMgYi9kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jXG5pbmRleCA4NjM2MmVjNDI0YTUwLi40ZjEyY2FiOTY1NDVlIDEwMDY0NFxuLS0tIGEvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xuKysrIGIvZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuY1xuQEAgLTExNTQsOSArMTE1NCwxNCBAQCBzdGF0aWMgdm9pZCBoaXNpX2FjY192Zl9wY2lfcmVzZXRfcHJlcGFyZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiB7XG4gXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYgPSBoaXNpX2FjY19kcnZkYXRhKHBkZXYpO1xuIFx0c3RydWN0IGhpc2lfcW0gKnFtID0gaGlzaV9hY2NfdmRldi1cdTAwM2VwZl9xbTtcbi1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnFtLVx1MDAzZXBkZXYtXHUwMDNlZGV2O1xuK1x0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2cGRldi1cdTAwM2VkZXY7XG4gXHR1MzIgZGVsYXkgPSAwO1xuIFxuK1x0aWYgKCFxbSB8fCAhcW0tXHUwMDNlaW9fYmFzZSkge1xuK1x0XHRkZXZfZXJyKGRldiwgXCJQRiBRTSBub3QgYXZhaWxhYmxlIGZvciByZXNldFxcblwiKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1xuIFx0LyogQWxsIHJlc2V0IHJlcXVlc3RzIG5lZWQgdG8gYmUgcXVldWVkIGZvciBwcm9jZXNzaW5nICovXG4gXHR3aGlsZSAodGVzdF9hbmRfc2V0X2JpdChRTV9SRVNFVFRJTkcsIFx1MDAyNnFtLVx1MDAzZW1pc2NfY3RsKSkge1xuIFx0XHRtc2xlZXAoMSk7XG5AQCAtMTE3NCw4ICsxMTc5LDE0IEBAIHN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmX3BjaV9hZXJfcmVzZXRfZG9uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiBcdHN0cnVjdCBoaXNpX2FjY192Zl9jb3JlX2RldmljZSAqaGlzaV9hY2NfdmRldiA9IGhpc2lfYWNjX2RydmRhdGEocGRldik7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcW0gPSBoaXNpX2FjY192ZGV2LVx1MDAzZXBmX3FtO1xuIFxuLVx0aWYgKGhpc2lfYWNjX3ZkZXYtXHUwMDNlc2V0X3Jlc2V0X2ZsYWcpXG4tXHRcdGNsZWFyX2JpdChRTV9SRVNFVFRJTkcsIFx1MDAyNnFtLVx1MDAzZW1pc2NfY3RsKTtcbitcdGlmIChoaXNpX2FjY192ZGV2LVx1MDAzZXNldF9yZXNldF9mbGFnKSB7XG4rXHRcdGlmIChxbSBcdTAwMjZcdTAwMjYgcW0tXHUwMDNlaW9fYmFzZSkge1xuK1x0XHRcdGNsZWFyX2JpdChRTV9SRVNFVFRJTkcsIFx1MDAyNnFtLVx1MDAzZW1pc2NfY3RsKTtcbitcdFx0XHRoaXNpX2FjY192ZGV2LVx1MDAzZXNldF9yZXNldF9mbGFnID0gZmFsc2U7XG4rXHRcdH0gZWxzZSB7XG4rXHRcdFx0ZGV2X2VycihcdTAwMjZwZGV2LVx1MDAzZWRldiwgXCJQRiBRTSBub3QgYXZhaWxhYmxlIGZvciByZXNldCBkb25lXFxuXCIpO1xuK1x0XHR9XG4rXHR9XG4gXG4gXHRpZiAoIWhpc2lfYWNjX3ZkZXYtXHUwMDNlY29yZV9kZXZpY2UudmRldi5taWdfb3BzKVxuIFx0XHRyZXR1cm47XG5AQCAtMTE5OSw2ICsxMjEwLDIzIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZfcW1faW5pdChzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYpXG4gXHRlbHNlXG4gXHRcdGhpc2lfYWNjX3ZkZXYtXHUwMDNlZHJ2X21vZGUgPSBIV19BQ0NfTUlHX1ZGX0NUUkw7XG4gXG4rXHQvKlxuK1x0ICogT24gVkZfQ1RSTCBoYXJkd2FyZSwgQkFSMiBob2xkcyAzMktCIGZ1bmN0aW9uYWwgKyAzMktCXG4rXHQgKiBtaWdyYXRpb24gcmVnaXN0ZXJzLiBXaGVuIHRoZSBob3N0IHBhZ2UgZXhjZWVkcyAzMktCLCB0aGVcbitcdCAqIHR3byBzaGFyZSBvbmUgcGh5c2ljYWwgcGFnZSBhbmQgY2Fubm90IGJlIGlzb2xhdGVkIGJ5IG1tYXAuXG4rXHQgKiBSZWplY3QgdGhlIG9wZW4gc28gUUVNVSBmYWlscyBjbGVhbmx5IGF0IHN0YXJ0dXAuXG4rXHQgKi9cbitcdGlmIChoaXNpX2FjY192ZGV2LVx1MDAzZWRydl9tb2RlID09IEhXX0FDQ19NSUdfVkZfQ1RSTCkge1xuK1x0XHRyZXNvdXJjZV9zaXplX3QgZnVuY19sZW4gPVxuK1x0XHRcdHBjaV9yZXNvdXJjZV9sZW4odmZfZGV2LCBWRklPX1BDSV9CQVIyX1JFR0lPTl9JTkRFWCkgXHUwMDNlXHUwMDNlIDE7XG4rXG4rXHRcdGlmIChmdW5jX2xlbiBcdTAwM2MgUEFHRV9TSVpFKSB7XG4rXHRcdFx0ZGV2X2VycihcdTAwMjZ2Zl9kZXYtXHUwMDNlZGV2LFxuK1x0XHRcdFx0XCJtaWdyYXRpb24gbm90IHN1cHBvcnRlZCBvbiA2NEtCIHBhZ2VzIHdpdGggUU1fSFdfVjNcXG5cIik7XG4rXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHRcdH1cbitcdH1cbitcbiBcdGlmIChoaXNpX2FjY192ZGV2LVx1MDAzZWRydl9tb2RlID09IEhXX0FDQ19NSUdfUEZfQ1RSTCkge1xuIFx0XHQvKlxuIFx0XHQgKiBPbiBoYXJkd2FyZSBwbGF0Zm9ybXMgZ3JlYXRlciB0aGFuIFFNX0hXX1YzLCB0aGUgbWlncmF0aW9uIGZ1bmN0aW9uXG5AQCAtMTU2NSw2ICsxNTkzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfbWlncm5faW5pdF9kZXYoc3RydWN0IHZmaW9fZGV2aWNlICpjb3JlX3ZkZXYpXG4gXHRzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoY29yZV92ZGV2LVx1MDAzZWRldik7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XG4gXG4rXHRpZiAoIXBmX3FtKSB7XG4rXHRcdGRldl9lcnIoXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwiUEYgZHJpdmVyIG5vdCBsb2FkZWQsIGNhbm5vdCBlbmFibGUgbWlncmF0aW9uXFxuXCIpO1xuK1x0XHRyZXR1cm4gLUVOT0RFVjtcbitcdH1cbitcbiBcdGhpc2lfYWNjX3ZkZXYtXHUwMDNldmZfaWQgPSBwY2lfaW92X3ZmX2lkKHBkZXYpICsgMTtcbiBcdGhpc2lfYWNjX3ZkZXYtXHUwMDNlcGZfcW0gPSBwZl9xbTtcbiBcdGhpc2lfYWNjX3ZkZXYtXHUwMDNldmZfZGV2ID0gcGRldjtcbkBAIC0xNjcwLDEzICsxNzAzLDExIEBAIHN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlXG4gXHRzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXY7XG4gXHRjb25zdCBzdHJ1Y3QgdmZpb19kZXZpY2Vfb3BzICpvcHMgPSBcdTAwMjZoaXNpX2FjY192ZmlvX3BjaV9vcHM7XG4gXHRzdHJ1Y3QgaGlzaV9xbSAqcGZfcW07XG4tXHRpbnQgdmZfaWQ7XG4gXHRpbnQgcmV0O1xuIFxuIFx0cGZfcW0gPSBoaXNpX2FjY19nZXRfcGZfcW0ocGRldik7XG4gXHRpZiAocGZfcW0gXHUwMDI2XHUwMDI2IHBmX3FtLVx1MDAzZXZlciBcdTAwM2U9IFFNX0hXX1YzKSB7XG4tXHRcdHZmX2lkID0gcGNpX2lvdl92Zl9pZChwZGV2KTtcbi1cdFx0aWYgKHZmX2lkIFx1MDAzZT0gMClcbitcdFx0aWYgKHBkZXYtXHUwMDNlaXNfdmlydGZuKVxuIFx0XHRcdG9wcyA9IFx1MDAyNmhpc2lfYWNjX3ZmaW9fcGNpX21pZ3JuX29wcztcbiBcdFx0ZWxzZVxuIFx0XHRcdHBjaV93YXJuKHBkZXYsIFwibWlncmF0aW9uIHN1cHBvcnQgZmFpbGVkLCBjb250aW51ZSB3aXRoIGdlbmVyaWMgaW50ZXJmYWNlXFxuXCIpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjc6MjguMjgyMjI0MTk1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NjgyOTAyMzY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBoaXNpX2FjY192ZmlvX3BjaS5jYCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIGNoYW5nZS4gSXMgdGhpcyBhIGRyaXZlciBmb3IgYWN0dWFsIEhpc2lsaWNvbiBhY2NlbGVyYXRvciBoYXJkd2FyZSwgb3IgaXMgaXQgc29tZXRoaW5nIHRoYXQgY291bGQgYmUgZW11bGF0ZWQgb3IgZW5jb3VudGVyZWQgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lPyBUaGF0J3MgdGhlIGZpcnN0IGNyaXRpY2FsIHBpZWNlIG9mIGluZm9ybWF0aW9uIEkgbmVlZC5cblxuVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgdGFyZ2V0IGVudmlyb25tZW50LCBJJ2xsIGp1bXAgaW50byB0aGUgS2NvbmZpZyBmaWxlcy4gQ2hlY2tpbmcgZm9yIGBoaXNpX2FjY192ZmlvX3BjaWAgd2lsbCBob3BlZnVsbHkgZ2l2ZSBtZSBzb21lIGNsdWVzIGFib3V0IHRoZSBzcGVjaWZpYyBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IGlmIHRoaXMgaXMgdGllZCB0byBhIHBhcnRpY3VsYXIgSGlzaWxpY29uIGNoaXAsIG9yIGlmIGl0IGhhcyBicm9hZGVyIGFwcGxpY2FiaWxpdHkuXG5cbklmIEtjb25maWcgZG9lc24ndCBpbW1lZGlhdGVseSBwcm92aWRlIHRoZSBhbnN3ZXJzLCBJJ2xsIHJlYWNoIGZvciBgZ2l0IGdyZXBgIHRvIHNlZSBpZiBJIGNhbiBmaW5kIGZ1cnRoZXIgbWVudGlvbnMgb2YgdGhlIGRyaXZlciBhbmQgaXRzIHJlbGF0ZWQgaGFyZHdhcmUgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlIHRyZWUuIFRoaXMgc2hvdWxkIGhlbHAgbWUgcGlucG9pbnQgdGhlIHByZWNpc2UgaGFyZHdhcmUgdGhlIHBhdGNoIGludGVyYWN0cyB3aXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzgxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjc6MzUuMTExMjUwNDk3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTg5ODE4MzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSElTSV9BQ0NfVkZJT19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZT0xND1vYmotJChDT05GSUdfSVNNX1ZGSU9fUENJKSAgICAgICAgICAgKz0gaXNtL1xcbmRyaXZlcnMvdmZpby9wY2kvTWFrZWZpbGUtMTUtXFxuZHJpdmVycy92ZmlvL3BjaS9NYWtlZmlsZToxNjpvYmotJChDT05GSUdfSElTSV9BQ0NfVkZJT19QQ0kpICs9IGhpc2lsaWNvbi9cXG5kcml2ZXJzL3ZmaW8vcGNpL01ha2VmaWxlLTE3LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWc6Mjpjb25maWcgSElTSV9BQ0NfVkZJT19QQ0lcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgSGlTaWxpY29uIEFDQyBQQ0kgZGV2aWNlc1xcXCJcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vTWFrZWZpbGU6MjpvYmotJChDT05GSUdfSElTSV9BQ0NfVkZJT19QQ0kpICs9IGhpc2ktYWNjLXZmaW8tcGNpLm9cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9NYWtlZmlsZS0zLWhpc2ktYWNjLXZmaW8tcGNpLXkgOj0gaGlzaV9hY2NfdmZpb19wY2kub1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC0zLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmg6NDojaWZuZGVmIEhJU0lfQUNDX1ZGSU9fUENJX0hcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5oOjU6I2RlZmluZSBISVNJX0FDQ19WRklPX1BDSV9IXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaC02LVxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaD0xMjk9c3RydWN0IGhpc2lfYWNjX3ZmX2NvcmVfZGV2aWNlIHtcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmgtMTY0LX07XFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuaDoxNjU6I2VuZGlmIC8qIEhJU0lfQUNDX1ZGSU9fUENJX0ggKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjc6MzcuMzMwMjQxNDEyWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTg4Mzg2NjY2NzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhbmFseXNpcyBvZiB0aGUgcHJvdmlkZWQgZmlsZXMsIGZyYW1lZCBhcyBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEhpU2lsaWNvbiBWRklPIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBIaVNpbGljb24gVkZJTyBpbXBsZW1lbnRhdGlvbi4gRmlyc3QsIEknbGwgZ3JhYiBgZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vS2NvbmZpZ2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLiBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBtb2R1bGUgZGVwZW5kZW5jaWVzLCBhbnkgc3BlY2lmaWMgaGFyZHdhcmUgZmVhdHVyZSBlbmFibGVtZW50cywgYW5kIHBlcmhhcHMgc29tZSBkZXZpY2UgSUQgYmxhY2tsaXN0aW5nIG9yIHdoaXRlbGlzdGluZyBzcGVjaWZpYyB0byBIaVNpbGljb24ncyBQQ0kgZGV2aWNlcy4gSSdsbCBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpjb25maWd1cmFibGUqIHZlcnN1cyB3aGF0J3MgKmFsd2F5cyogcHJlc2VudCBpbiB0aGVpciBkZXNpZ24uIFRoZSBLY29uZmlnIHdpbGwgaGVscCBjbGFyaWZ5IHRoZSBkZXNpZ24ncyBzY29wZSBhbmQgc3VwcG9ydGVkIGZlYXR1cmVzIGF0IGEgaGlnaCBsZXZlbC5cblxuTmV4dCwgSSdsbCBvcGVuIGBkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jYC4gVGhlIGBoaXNpX2FjY2AgcHJlZml4IGltbWVkaWF0ZWx5IHN1Z2dlc3RzIHRoaXMgaXMgbGlrZWx5IHRoZSBjb3JlIGRyaXZlciBmaWxlIGZvciBzb21lIEhpU2lsaWNvbiBhY2NlbGVyYXRvciBkZXZpY2UsIHdoaWNoIGlzIHByb2JhYmx5IHdoYXQgdGhleSdyZSB2aXJ0dWFsaXppbmcgdGhyb3VnaCBWRklPLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHNldmVyYWwga2V5IHRoaW5ncyBoZXJlOiBob3cgdGhlIGRldmljZSBpcyBpbml0aWFsaXplZCBhbmQgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLCB0aGUgc3BlY2lmaWMgZGV2aWNlIElEcyBpdCdzIGhhbmRsaW5nLCBhbnkgaW50ZXJydXB0IGhhbmRsaW5nIHN0cmF0ZWdpZXMgdGhleSdyZSBlbXBsb3lpbmcgKE1TSSwgTVNJLVgsIGxlZ2FjeSBpbnRlcnJ1cHRzKSwgYW5kLCBjcml0aWNhbGx5LCBob3cgdGhleSdyZSBtYXBwaW5nIGFuZCBtYW5hZ2luZyBkZXZpY2UgbWVtb3J5IHJlZ2lvbnMgZm9yIGd1ZXN0IGFjY2Vzcy4gSSdsbCBuZWVkIHRvIHNlZSBob3cgdGhleSd2ZSBoYW5kbGVkIHRoZSBJT01NVSBzZXR1cCwgaWYgdGhleSdyZSB1c2luZyBhbnkgY3VzdG9tIERNQSBtYXBwaW5nIHJvdXRpbmVzLCBhbmQgd2hldGhlciB0aGV5IGFyZSBpbXBsZW1lbnRpbmcgYW55IGN1c3RvbSBkZXZpY2Utc3BlY2lmaWMgcHJvdGVjdGlvbiBtZWNoYW5pc21zIHRvIGVuc3VyZSBzZWN1cmUgZ3Vlc3QgYWNjZXNzLiBJJ2xsIGFsc28gYmUgd2F0Y2hpbmcgZm9yIGFueSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIHNwZWNpZmljIHRvIHRoZWlyIGhhcmR3YXJlIGFyY2hpdGVjdHVyZTsgcGVyaGFwcyBzb21lIGNsZXZlciByZWdpc3RlciB0cmlja3Mgb3IgbWVtb3J5IG1hcHBpbmcgc3RyYXRlZ2llcy4gSSdsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgZGVidWdnaW5nIGNvZGUgdG9vLiBUaGF0J3MgdXN1YWxseSB3aGVyZSB5b3UgZmluZCB0aGUgcmVhbC13b3JsZCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIGFuZCBhbnkgcG90ZW50aWFsIGdvdGNoYXMuIEknbGwgYmUgcGFydGljdWxhcmx5IGtlZW4gdG8gaWRlbnRpZnkgYW55IGFyZWFzIHdoZXJlIHRoZWlyIFZGSU8gaW1wbGVtZW50YXRpb24gZGV2aWF0ZXMgZnJvbSB0aGUgdXBzdHJlYW0gVkZJTyBzdGFuZGFyZHMgb3IgY29udmVudGlvbnMuIFRoYXQgd291bGQgYmUgYSByZWQgZmxhZyB0aGF0IHJlcXVpcmVzIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDMyNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI4OjM2LjE2ODkxMTE0NloiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdGNvbmZpZyBISVNJX0FDQ19WRklPX1BDSVxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIlZGSU8gc3VwcG9ydCBmb3IgSGlTaWxpY29uIEFDQyBQQ0kgZGV2aWNlc1xcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gQVJNNjQgfHwgKENPTVBJTEVfVEVTVCBcXHUwMDI2XFx1MDAyNiA2NEJJVClcXG4gICA1OlxcdFxcdGRlcGVuZHMgb24gUENJX01TSVxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBDUllQVE9fREVWX0hJU0lfUU1cXG4gICA3OlxcdFxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX0hQUkVcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX1NFQzJcXG4gICA5OlxcdFxcdGRlcGVuZHMgb24gQ1JZUFRPX0RFVl9ISVNJX1pJUFxcbiAgMTA6XFx0XFx0c2VsZWN0IFZGSU9fUENJX0NPUkVcXG4gIDExOlxcdFxcdGhlbHBcXG4gIDEyOlxcdFxcdCAgVGhpcyBwcm92aWRlcyBnZW5lcmljIFBDSSBzdXBwb3J0IGZvciBIaVNpbGljb24gQUNDIGRldmljZXNcXG4gIDEzOlxcdFxcdCAgdXNpbmcgdGhlIFZGSU8gZnJhbWV3b3JrLlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgIElmIHlvdSBkb24ndCBrbm93IHdoYXQgdG8gZG8gaGVyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI4OjM2LjE2ODk5NjAxNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMwNTA4ODQxODYwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqUENJIERldmljZSBJRCBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBpbml0aWFsIGdvYWwgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDogSSBuZWVkIHRvIHNjcnV0aW5pemUgdGhlIFBDSSBkZXZpY2UgSURzIHJlbGF0ZWQgdG8gYGhpc2lfYWNjX3ZmaW9fcGNpYC4gVGhpcyBzdWdnZXN0cyBhIGZvY3VzIG9uIHRoZSBoYXJkd2FyZSBsZXZlbCwgbGlrZWx5IHRpZWQgdG8gYSBzcGVjaWZpYyB2ZW5kb3IgKEhpc2kpIGFuZCBhaW1pbmcgdG8gaW50ZXJmYWNlIHdpdGggYSBWRklPIChWaXJ0dWFsIEZ1bmN0aW9uIEkvTykgc2V0dXAuIEknbGwgbmVlZCB0byBsb29rIGZvciBzcGVjaWZpYyBJRHMgdGhhdCBpZGVudGlmeSB0aGlzIHBhcnRpY3VsYXIgaGFyZHdhcmUgY29uZmlndXJhdGlvbi4gVGhpcyBsaWtlbHkgbWVhbnMgZXhhbWluaW5nIHRoZSByZWxldmFudCBrZXJuZWwgbW9kdWxlcyBvciBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBzeXN0ZW0gaXMgcmVjb2duaXppbmcgYW5kIGludGVyYWN0aW5nIHdpdGggdGhpcyBkZXZpY2UuIFVsdGltYXRlbHksIEknbSBhaW1pbmcgdG8gdW5kZXJzdGFuZCB0aGUgZXhhY3QgUENJIGRldmljZSBzaWduYXR1cmUgYXNzb2NpYXRlZCB3aXRoIGBoaXNpX2FjY192ZmlvX3BjaWAgYW5kIGxpa2VseSwgd2hlcmUgaW4gdGhlIHN5c3RlbSB0aGlzIElEIGlzIGRlZmluZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwOTQsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI5OjA2LjY3Nzg0MTczNloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDM3MjI1MzY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk1PRFVMRV9ERVZJQ0VfVEFCTEV8cGNpX2RldmljZV9pZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNjk1PXN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmX2RlYnVnZnNfZXhpdChzdHJ1Y3QgaGlzaV9hY2NfdmZfY29yZV9kZXZpY2UgKmhpc2lfYWNjX3ZkZXYpXFxuLS1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3MDAtXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYzoxNzAxOnN0YXRpYyBpbnQgaGlzaV9hY2NfdmZpb19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jLTE3MDIte1xcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYz0xNzM0PXN0YXRpYyB2b2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTc0Mi1cXG5kcml2ZXJzL3ZmaW8vcGNpL2hpc2lsaWNvbi9oaXNpX2FjY192ZmlvX3BjaS5jOjE3NDM6c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIGhpc2lfYWNjX3ZmaW9fcGNpX3RhYmxlW10gPSB7XFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNzQ0LVxcdHsgUENJX0RSSVZFUl9PVkVSUklERV9ERVZJQ0VfVkZJTyhQQ0lfVkVORE9SX0lEX0hVQVdFSSwgUENJX0RFVklDRV9JRF9IVUFXRUlfU0VDX1ZGKSB9LFxcbi0tXFxuZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYy0xNzQ5LVxcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmM6MTc1MDpNT0RVTEVfREVWSUNFX1RBQkxFKHBjaSwgaGlzaV9hY2NfdmZpb19wY2lfdGFibGUpO1xcbmRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMtMTc1MS1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjk6MDguMTE1MDcxMzkzWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTc2NzY3OTg0NjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGV2aWNlIFN1cHBvcnQgVmVyaWZpY2F0aW9uKipcblxuT2theSwgbGV0IG1lIHRha2UgYSBsb29rIGF0IHdoYXQgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUgaW4gdGVybXMgb2Ygc3VwcG9ydGVkIGhhcmR3YXJlLiBJdCBsb29rcyBsaWtlIHdlIGhhdmUgb3ZlcnJpZGVzIHNwZWNpZmljYWxseSBmb3IgVmlydHVhbCBGdW5jdGlvbiAoVkYpIGRldmljZXMsIGFuZCBpdCdzIHZlbmRvciBzcGVjaWZpYy4gVGhlIGNvZGUgbGlzdHMgdGhyZWUgZGV2aWNlczogdGhlIEh1YXdlaSBTRUMgVkYsIHRoZSBIdWF3ZWkgSFBSRSBWRiwgYW5kIHRoZSBIdWF3ZWkgWklQIFZGLiBUaGF0J3MgYSBzb2xpZCBzdGFydC4gSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlc2UgZGV2aWNlcyBhcmUgaGFuZGxlZC4gTGV0IG1lIGRpdmUgaW50byBgaGlzaV9hY2NfdmZpb19wY2kuY2AsIHNwZWNpZmljYWxseSBsaW5lcyAxNzQwIHRocm91Z2ggMTc2MC4gSSBuZWVkIHRvIHNlZSB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgaG93IHRoZXNlIGRldmljZSBvdmVycmlkZXMgYXJlIHNldCB1cCB3aXRoaW4gdGhlIFZGSU8gZnJhbWV3b3JrLiBVbmRlcnN0YW5kaW5nIHRoaXMgcGFydGljdWxhciBmaWxlIHdpbGwgZ2l2ZSBtZSBhIHByb3BlciBjb250ZXh0IG9uIHdoZXJlIHRvIHByb2NlZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU4NzEsIk91dHB1dFRva2VucyI6NTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjk6MjUuNzkxODcyMTY1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MzUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTc0MCxcbiAgXCJMaW5lQ291bnRcIjogMjVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTc0MDpcXHRcXHR2ZmlvX3B1dF9kZXZpY2UoXFx1MDAyNmhpc2lfYWNjX3ZkZXYtXFx1MDAzZWNvcmVfZGV2aWNlLnZkZXYpO1xcbjE3NDE6XFx0fVxcbjE3NDI6XFx0XFxuMTc0MzpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgaGlzaV9hY2NfdmZpb19wY2lfdGFibGVbXSA9IHtcXG4xNzQ0OlxcdFxcdHsgUENJX0RSSVZFUl9PVkVSUklERV9ERVZJQ0VfVkZJTyhQQ0lfVkVORE9SX0lEX0hVQVdFSSwgUENJX0RFVklDRV9JRF9IVUFXRUlfU0VDX1ZGKSB9LFxcbjE3NDU6XFx0XFx0eyBQQ0lfRFJJVkVSX09WRVJSSURFX0RFVklDRV9WRklPKFBDSV9WRU5ET1JfSURfSFVBV0VJLCBQQ0lfREVWSUNFX0lEX0hVQVdFSV9IUFJFX1ZGKSB9LFxcbjE3NDY6XFx0XFx0eyBQQ0lfRFJJVkVSX09WRVJSSURFX0RFVklDRV9WRklPKFBDSV9WRU5ET1JfSURfSFVBV0VJLCBQQ0lfREVWSUNFX0lEX0hVQVdFSV9aSVBfVkYpIH0sXFxuMTc0NzpcXHRcXHR7IH1cXG4xNzQ4OlxcdH07XFxuMTc0OTpcXHRcXG4xNzUwOlxcdE1PRFVMRV9ERVZJQ0VfVEFCTEUocGNpLCBoaXNpX2FjY192ZmlvX3BjaV90YWJsZSk7XFxuMTc1MTpcXHRcXG4xNzUyOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2Vycm9yX2hhbmRsZXJzIGhpc2lfYWNjX3ZmX2Vycl9oYW5kbGVycyA9IHtcXG4xNzUzOlxcdFxcdC5yZXNldF9wcmVwYXJlID0gaGlzaV9hY2NfdmZfcGNpX3Jlc2V0X3ByZXBhcmUsXFxuMTc1NDpcXHRcXHQucmVzZXRfZG9uZSA9IGhpc2lfYWNjX3ZmX3BjaV9hZXJfcmVzZXRfZG9uZSxcXG4xNzU1OlxcdFxcdC5lcnJvcl9kZXRlY3RlZCA9IHZmaW9fcGNpX2NvcmVfYWVyX2Vycl9kZXRlY3RlZCxcXG4xNzU2OlxcdH07XFxuMTc1NzpcXHRcXG4xNzU4OlxcdHN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBoaXNpX2FjY192ZmlvX3BjaV9kcml2ZXIgPSB7XFxuMTc1OTpcXHRcXHQubmFtZSA9IEtCVUlMRF9NT0ROQU1FLFxcbjE3NjA6XFx0XFx0LmlkX3RhYmxlID0gaGlzaV9hY2NfdmZpb19wY2lfdGFibGUsXFxuMTc2MTpcXHRcXHQucHJvYmUgPSBoaXNpX2FjY192ZmlvX3BjaV9wcm9iZSxcXG4xNzYyOlxcdFxcdC5yZW1vdmUgPSBoaXNpX2FjY192ZmlvX3BjaV9yZW1vdmUsXFxuMTc2MzpcXHRcXHQuZXJyX2hhbmRsZXIgPSBcXHUwMDI2aGlzaV9hY2NfdmZfZXJyX2hhbmRsZXJzLFxcbjE3NjQ6XFx0XFx0LmRyaXZlcl9tYW5hZ2VkX2RtYSA9IHRydWUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMxVDEwOjI5OjI1Ljc5MTk3MjU4NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNzgxNTczNDAxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgaGlzaV9hY2NfdmZpb19wY2lgIERyaXZlciBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRoYXQgdGhpcyBwYXRjaCwgZGVhbGluZyB3aXRoIHRoZSBgaGlzaV9hY2NfdmZpb19wY2lgIGRyaXZlciBmb3IgSGlTaWxpY29uIEFDQyBkZXZpY2VzIChzcGVjaWZpY2FsbHkgU0VDLCBIUFJFLCBhbmQgWklQIGFjY2VsZXJhdGlvbiksIGlzICpub3QqIGEgZ29vZCBjYW5kaWRhdGUgZm9yIGZ1enppbmcgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudC4gVGhpcyBkcml2ZXIgaXMgdmVyeSBjbGVhcmx5IHZlbmRvci1zcGVjaWZpYyBhbmQgaGFyZHdhcmUtZGVwZW5kZW50LCByZXF1aXJpbmcgYWN0dWFsIEh1YXdlaS9IaVNpbGljb24gUENJZSBjYXJkcyBvciB0aGUgS3VucGVuZyBTb0MuIFRoYXQncyBhIGh1Z2UgcmVkIGZsYWcuXG5cbk5vdywgbGV0J3Mgd2FsayB0aHJvdWdoIHRoZSBjcml0ZXJpYS4gVGhlIGd1aWRlbGluZSBzcGVjaWZpY2FsbHkgZmxhZ3MgY29kZSB0aGF0ICpyZXF1aXJlcyogcGh5c2ljYWwgUENJZSBoYXJkd2FyZSwgbm90IGVtdWxhdGVkIGluIFFFTVUuIFRoaXMgZHJpdmVyIGFic29sdXRlbHkgZmFsbHMgaW50byB0aGF0IGNhdGVnb3J5LiBJdCdzIG5vdCBkZXNpZ25lZCB0byBmdW5jdGlvbiB3aXRob3V0IHRoZSBzcGVjaWZpYyBIaVNpbGljb24gaGFyZHdhcmUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgYSBkcml2ZXIgZm9yIFZGSU8sIHdoaWNoIGlzIGFib3V0IGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MuIFRoZXJlJ3Mgbm8gd2F5IHRvIHJlYWxpc3RpY2FsbHkgZnV6eiB0aGlzIGluIGEgdHlwaWNhbCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgb3IgZXZlbiB1c2luZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4gSXQgc2VlbXMgdGhhdCBhbnkgY29kZSBwYXRocyB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIHJlYWNoLlxuXG5TbywgKldvcnRoRnV6emluZyogaXMgZGVmaW5pdGVseSAqZmFsc2UqIGhlcmUuIFRoZXJlJ3Mgbm8gcG9pbnQgaW4gdHJ5aW5nIHRvIGZ1enogc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgYSB2ZXJ5IHNwZWNpZmljIHBoeXNpY2FsIHNldHVwLCB0aGF0J3Mgbm90IGVhc2lseSBvYnRhaW5hYmxlLlxuXG5Ob3csIGxldCdzIGNvbmZpcm0gdGhlIG1ldGFkYXRhOlxuKiAgICpXb3J0aEZ1enppbmcqOiBGYWxzZS4gQ2hlY2suXG4qICAgKkVuYWJsZUNvbmZpZ3MqOiBFbXB0eS4gQ29ycmVjdCwgbm8gc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYXJlIG5lZWRlZC5cbiogICAqRm9jdXNTeW1ib2xzKjogRW1wdHkuIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGUgc2NvcGUuXG4qICAgKlJlYXNvbmluZyo6IENvbmZpcm1lZC4gVGhlIHBhdGNoIGlzIHRpZWQgdG8gYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIHRoYXQncyBpbmhlcmVudGx5IHRpZWQgdG8gcGh5c2ljYWwgSGlTaWxpY29uIGhhcmR3YXJlLCBhbmQgd2lsbCBub3QgZnVuY3Rpb24gaW5zaWRlIGFueSBjb21tb24gdmlydHVhbGl6YXRpb24sIHN1Y2ggYXMgUUVNVS5cblxuQWxyaWdodCwgSSdtIHNhdGlzZmllZC4gSXQncyBhIGNsZWFyIFwibm9cIiBvbiB0aGlzIG9uZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjgwMCwiT3V0cHV0VG9rZW5zIjoxMDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMVQxMDoyOTo1My42MDc3MDkzMjdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSGlTaWxpY29uIEFDQyBWRklPIFBDSSBkcml2ZXIgKGRyaXZlcnMvdmZpby9wY2kvaGlzaWxpY29uL2hpc2lfYWNjX3ZmaW9fcGNpLmMpLCB3aGljaCByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgcGh5c2ljYWwgSGlTaWxpY29uIGFjY2VsZXJhdG9yIFBDSWUgaGFyZHdhcmUgKFNFQywgSFBSRSwgWklQKSBub3QgcHJlc2VudCBvciBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBIaVNpbGljb24gQUNDIFZGSU8gUENJIGRyaXZlciAoZHJpdmVycy92ZmlvL3BjaS9oaXNpbGljb24vaGlzaV9hY2NfdmZpb19wY2kuYyksIHdoaWNoIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBwaHlzaWNhbCBIaVNpbGljb24gYWNjZWxlcmF0b3IgUENJZSBoYXJkd2FyZSAoU0VDLCBIUFJFLCBaSVApIG5vdCBwcmVzZW50IG9yIGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzFUMTA6Mjk6NTMuNjA3NzMzOTU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowqmwhp[1] Phase: Running StartedAt: 2026-08-31 10:30:15 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowqmwhp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-31 10:30:15 +0000 UTC FinishedAt: 2026-08-31 10:30:19 +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,}