Name: series-workflow7bcw2 Phase: Failed StartedAt: 2026-09-01 07:04:57 +0000 UTC FinishedAt: 2026-09-01 08:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bcw2[0] Phase: Succeeded StartedAt: 2026-09-01 07:04:57 +0000 UTC FinishedAt: 2026-09-01 08:06:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bcw2[0].run-triage Phase: Succeeded StartedAt: 2026-09-01 07:04:57 +0000 UTC FinishedAt: 2026-09-01 08:06:48 +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+CgkJCTx0ZD4yMDI2LzA5LzAxIDA3OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgKG90eDJfZG1hX2FsbG9jX2NvaGVyZW50L3FtZW1fYWxsb2MpIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgLyBDTjEwSyBoYXJkd2FyZSAoUENJZSBkZXZpY2VzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAobGlrZSBHQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA3OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWRlNzgwODAxZWNiYTgwNDQ5OTQ2MjkyMzViMGIwYjBjMzE1ZDNmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDc6NTg6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaFxuaW5kZXggNzc5NDEzYTM4M2I3NC4uMDYxZGQ5MDdmN2ZhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaFxuQEAgLTcsNiAmIzQzOzcsMTEgQEBcbiAjaWZuZGVmIENPTU1PTl9IXG4gI2RlZmluZSBDT01NT05fSFxuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXAtb3BzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuJiM0MztcbiAjaW5jbHVkZSBcJiMzNDtydnVfc3RydWN0LmhcJiMzNDtcbiBcbiAjZGVmaW5lIE9UWDJfQUxJR05cdFx0XHQxMjggIC8qIEFsaWduIHRvIGNhY2hlbGluZSAqL1xuQEAgLTQ0LDYgJiM0Mzs0OSw4MyBAQCBzdHJ1Y3QgcW1lbSB7XG4gXHR1MzJcdFx0cXNpemU7XG4gfTtcbiBcbiYjNDM7LyogQnVkZHktYmFja2VkIGNvaGVyZW50IERNQSBhbGxvYyAoT3B0aW9uIDMpOiBwYWdlcyBmcm9tIF9fZ2V0X2ZyZWVfcGFnZXMoKSxcbiYjNDM7ICogRE1BLXJlYWNoYWJsZSBSQU0gdmlhIGRtYV9jb2hlcmVudF9vaygpLCBhbmQgYnVzL1NNTVUgbWFwcGluZ3MgdmlhXG4mIzQzOyAqIGRtYV9tYXBfcGh5cygpIC1cdTAwM2UgaW9tbXVfZG1hX21hcF9waHlzKCkgLVx1MDAzZSBpb21tdV9tYXAoKSBvbiBTTU1VIHN5c3RlbXMuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTXHRETUFfQVRUUl9SRVFVSVJFX0NPSEVSRU5UXG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgb3R4Ml9kbWFfcGh5c19pbl9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwgcGh5c19hZGRyX3QgcGFkZHIsXG4mIzQzO1x0XHRcdFx0XHQgc2l6ZV90IHNpemUpXG4mIzQzO3tcbiYjNDM7XHR1NjQgbWFzayA9IGRtYV9nZXRfbWFzayhkZXYpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcGFkZHIgJiM0Mzsgc2l6ZSAtIDEgXHUwMDNjPSBtYXNrO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgKm90eDJfZG1hX2FsbG9jX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsXG4mIzQzO1x0XHRcdFx0XHQgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZ2ZwKVxuJiM0Mzt7XG4mIzQzO1x0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4mIzQzO1x0cGh5c19hZGRyX3QgcGFkZHI7XG4mIzQzO1x0dm9pZCAqdmFkZHI7XG4mIzQzO1x0Z2ZwX3QgYWxsb2NfZ2ZwO1xuJiM0MztcbiYjNDM7XHRpZiAoIWRldiB8fCAhZG1hX2hhbmRsZSB8fCAhc2l6ZSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHRpZiAoIWRldl9pc19kbWFfY29oZXJlbnQoZGV2KSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcbiYjNDM7XHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbiYjNDM7XHRpZiAob3JkZXIgXHUwMDNlIE1BWF9QQUdFX09SREVSKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuJiM0MztcdGFsbG9jX2dmcCA9IChnZnAgXHUwMDI2IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSkgfFxuJiM0MztcdFx0X19HRlBfWkVSTyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9SRUNMQUlNO1xuJiM0MztcbiYjNDM7XHR2YWRkciA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlcyhhbGxvY19nZnAsIG9yZGVyKTtcbiYjNDM7XHR3aGlsZSAodmFkZHIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgICFvdHgyX2RtYV9waHlzX2luX21hc2soZGV2LCBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKHZhZGRyKSksIHNpemUpKSB7XG4mIzQzO1x0XHRmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7XG4mIzQzO1x0XHRpZiAoYWxsb2NfZ2ZwIFx1MDAyNiBHRlBfRE1BMzIpXG4mIzQzO1x0XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdFx0YWxsb2NfZ2ZwIHw9IEdGUF9ETUEzMjtcbiYjNDM7XHRcdHZhZGRyID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2VzKGFsbG9jX2dmcCwgb3JkZXIpO1xuJiM0MztcdH1cbiYjNDM7XHRpZiAoIXZhZGRyKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuJiM0MztcdHBhZGRyID0gcGFnZV90b19waHlzKHZpcnRfdG9fcGFnZSh2YWRkcikpO1xuJiM0MztcdGRtYV9hZGRyID0gZG1hX21hcF9waHlzKGRldiwgcGFkZHIsIHNpemUsIERNQV9CSURJUkVDVElPTkFMLFxuJiM0MztcdFx0XHRcdE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTKTtcbiYjNDM7XHRpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfYWRkcikpIHtcbiYjNDM7XHRcdGZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTtcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0KmRtYV9oYW5kbGUgPSBkbWFfYWRkcjtcbiYjNDM7XHRyZXR1cm4gdmFkZHI7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBvdHgyX2RtYV9mcmVlX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsXG4mIzQzO1x0XHRcdFx0XHQgIHZvaWQgKnZhZGRyLCBkbWFfYWRkcl90IGRtYV9oYW5kbGUpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4mIzQzO1xuJiM0MztcdGlmICghZGV2IHx8ICF2YWRkcilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XG4mIzQzO1x0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XG4mIzQzO1xuJiM0MztcdGRtYV91bm1hcF9waHlzKGRldiwgZG1hX2hhbmRsZSwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwsXG4mIzQzO1x0XHQgICAgICAgT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlMpO1xuJiM0MztcdGZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW5saW5lIGludCBxbWVtX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKipxLFxuIFx0XHRcdCAgICAgaW50IHFzaXplLCBpbnQgZW50cnlfc3opXG4ge1xuQEAgLTYwLDggJiM0MzsxNDIsOCBAQCBzdGF0aWMgaW5saW5lIGludCBxbWVtX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKipxLFxuIFxuIFx0cW1lbS1cdTAwM2VlbnRyeV9zeiA9IGVudHJ5X3N6O1xuIFx0cW1lbS1cdTAwM2VhbGxvY19zeiA9IChxc2l6ZSAqIGVudHJ5X3N6KSAmIzQzOyBPVFgyX0FMSUdOO1xuLVx0cW1lbS1cdTAwM2ViYXNlID0gZG1hX2FsbG9jX2F0dHJzKGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeiwgXHUwMDI2cW1lbS1cdTAwM2Vpb3ZhLFxuLVx0XHRcdFx0ICAgICBHRlBfS0VSTkVMLCBETUFfQVRUUl9GT1JDRV9DT05USUdVT1VTKTtcbiYjNDM7XHRxbWVtLVx1MDAzZWJhc2UgPSBvdHgyX2RtYV9hbGxvY19jb2hlcmVudChkZXYsIHFtZW0tXHUwMDNlYWxsb2Nfc3osIFx1MDAyNnFtZW0tXHUwMDNlaW92YSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXFtZW0tXHUwMDNlYmFzZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtODAsMTAgJiM0MzsxNjIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcW1lbV9mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKnFtZW0pXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChxbWVtLVx1MDAzZWJhc2UpXG4tXHRcdGRtYV9mcmVlX2F0dHJzKGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeixcbi1cdFx0XHQgICAgICAgcW1lbS1cdTAwM2ViYXNlIC0gcW1lbS1cdTAwM2VhbGlnbixcbi1cdFx0XHQgICAgICAgcW1lbS1cdTAwM2Vpb3ZhIC0gcW1lbS1cdTAwM2VhbGlnbixcbi1cdFx0XHQgICAgICAgRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUyk7XG4mIzQzO1x0XHRvdHgyX2RtYV9mcmVlX2NvaGVyZW50KGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeixcbiYjNDM7XHRcdFx0XHQgICAgICAgcW1lbS1cdTAwM2ViYXNlIC0gcW1lbS1cdTAwM2VhbGlnbixcbiYjNDM7XHRcdFx0XHQgICAgICAgcW1lbS1cdTAwM2Vpb3ZhIC0gcW1lbS1cdTAwM2VhbGlnbik7XG4gXHRkZXZtX2tmcmVlKGRldiwgcW1lbSk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA3OjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIChvdHgyX2RtYV9hbGxvY19jb2hlcmVudC9xbWVtX2FsbG9jKSB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIC8gQ04xMEsgaGFyZHdhcmUgKFBDSWUgZGV2aWNlcykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFkZTc4MDgwMWVjYmE4MDQ0OTk0NjI5MjM1YjBiMGIwYzMxNWQzZjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxIDA3OjU4OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaAppbmRleCA3Nzk0MTNhMzgzYjc0Li4wNjFkZDkwN2Y3ZmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaApAQCAtNyw2ICYjNDM7NywxMSBAQAogI2lmbmRlZiBDT01NT05fSAogI2RlZmluZSBDT01NT05fSAogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RtYS1tYXBwaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RtYS1tYXAtb3BzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2dmcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tbS5oJmd0OwomIzQzOwogI2luY2x1ZGUgJiMzNDtydnVfc3RydWN0LmgmIzM0OwogCiAjZGVmaW5lIE9UWDJfQUxJR04JCQkxMjggIC8qIEFsaWduIHRvIGNhY2hlbGluZSAqLwpAQCAtNDQsNiAmIzQzOzQ5LDgzIEBAIHN0cnVjdCBxbWVtIHsKIAl1MzIJCXFzaXplOwogfTsKIAomIzQzOy8qIEJ1ZGR5LWJhY2tlZCBjb2hlcmVudCBETUEgYWxsb2MgKE9wdGlvbiAzKTogcGFnZXMgZnJvbSBfX2dldF9mcmVlX3BhZ2VzKCksCiYjNDM7ICogRE1BLXJlYWNoYWJsZSBSQU0gdmlhIGRtYV9jb2hlcmVudF9vaygpLCBhbmQgYnVzL1NNTVUgbWFwcGluZ3MgdmlhCiYjNDM7ICogZG1hX21hcF9waHlzKCkgLSZndDsgaW9tbXVfZG1hX21hcF9waHlzKCkgLSZndDsgaW9tbXVfbWFwKCkgb24gU01NVSBzeXN0ZW1zLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlMJRE1BX0FUVFJfUkVRVUlSRV9DT0hFUkVOVAomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBvdHgyX2RtYV9waHlzX2luX21hc2soc3RydWN0IGRldmljZSAqZGV2LCBwaHlzX2FkZHJfdCBwYWRkciwKJiM0MzsJCQkJCSBzaXplX3Qgc2l6ZSkKJiM0Mzt7CiYjNDM7CXU2NCBtYXNrID0gZG1hX2dldF9tYXNrKGRldik7CiYjNDM7CiYjNDM7CXJldHVybiBwYWRkciAmIzQzOyBzaXplIC0gMSAmbHQ7PSBtYXNrOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgKm90eDJfZG1hX2FsbG9jX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsCiYjNDM7CQkJCQkgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZ2ZwKQomIzQzO3sKJiM0MzsJZG1hX2FkZHJfdCBkbWFfYWRkcjsKJiM0MzsJdW5zaWduZWQgaW50IG9yZGVyOwomIzQzOwlwaHlzX2FkZHJfdCBwYWRkcjsKJiM0MzsJdm9pZCAqdmFkZHI7CiYjNDM7CWdmcF90IGFsbG9jX2dmcDsKJiM0MzsKJiM0MzsJaWYgKCFkZXYgfHwgIWRtYV9oYW5kbGUgfHwgIXNpemUpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJaWYgKCFkZXZfaXNfZG1hX2NvaGVyZW50KGRldikpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7CiYjNDM7CW9yZGVyID0gZ2V0X29yZGVyKHNpemUpOwomIzQzOwlpZiAob3JkZXIgJmd0OyBNQVhfUEFHRV9PUkRFUikKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwlhbGxvY19nZnAgPSAoZ2ZwICZhbXA7IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSkgfAomIzQzOwkJX19HRlBfWkVSTyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9SRUNMQUlNOwomIzQzOwomIzQzOwl2YWRkciA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlcyhhbGxvY19nZnAsIG9yZGVyKTsKJiM0MzsJd2hpbGUgKHZhZGRyICZhbXA7JmFtcDsKJiM0MzsJICAgICAgICFvdHgyX2RtYV9waHlzX2luX21hc2soZGV2LCBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKHZhZGRyKSksIHNpemUpKSB7CiYjNDM7CQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7CiYjNDM7CQlpZiAoYWxsb2NfZ2ZwICZhbXA7IEdGUF9ETUEzMikKJiM0MzsJCQlyZXR1cm4gTlVMTDsKJiM0MzsJCWFsbG9jX2dmcCB8PSBHRlBfRE1BMzI7CiYjNDM7CQl2YWRkciA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlcyhhbGxvY19nZnAsIG9yZGVyKTsKJiM0MzsJfQomIzQzOwlpZiAoIXZhZGRyKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CXBhZGRyID0gcGFnZV90b19waHlzKHZpcnRfdG9fcGFnZSh2YWRkcikpOwomIzQzOwlkbWFfYWRkciA9IGRtYV9tYXBfcGh5cyhkZXYsIHBhZGRyLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCwKJiM0MzsJCQkJT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlMpOwomIzQzOwlpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfYWRkcikpIHsKJiM0MzsJCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTsKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpkbWFfaGFuZGxlID0gZG1hX2FkZHI7CiYjNDM7CXJldHVybiB2YWRkcjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB2b2lkIG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwKJiM0MzsJCQkJCSAgdm9pZCAqdmFkZHIsIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBvcmRlcjsKJiM0MzsKJiM0MzsJaWYgKCFkZXYgfHwgIXZhZGRyKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlzaXplID0gUEFHRV9BTElHTihzaXplKTsKJiM0MzsJb3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7CiYjNDM7CiYjNDM7CWRtYV91bm1hcF9waHlzKGRldiwgZG1hX2hhbmRsZSwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwsCiYjNDM7CQkgICAgICAgT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlMpOwomIzQzOwlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSBpbnQgcW1lbV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBxbWVtICoqcSwKIAkJCSAgICAgaW50IHFzaXplLCBpbnQgZW50cnlfc3opCiB7CkBAIC02MCw4ICYjNDM7MTQyLDggQEAgc3RhdGljIGlubGluZSBpbnQgcW1lbV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBxbWVtICoqcSwKIAogCXFtZW0tJmd0O2VudHJ5X3N6ID0gZW50cnlfc3o7CiAJcW1lbS0mZ3Q7YWxsb2Nfc3ogPSAocXNpemUgKiBlbnRyeV9zeikgJiM0MzsgT1RYMl9BTElHTjsKLQlxbWVtLSZndDtiYXNlID0gZG1hX2FsbG9jX2F0dHJzKGRldiwgcW1lbS0mZ3Q7YWxsb2Nfc3osICZhbXA7cW1lbS0mZ3Q7aW92YSwKLQkJCQkgICAgIEdGUF9LRVJORUwsIERNQV9BVFRSX0ZPUkNFX0NPTlRJR1VPVVMpOwomIzQzOwlxbWVtLSZndDtiYXNlID0gb3R4Ml9kbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBxbWVtLSZndDthbGxvY19zeiwgJmFtcDtxbWVtLSZndDtpb3ZhLAomIzQzOwkJCQkJICAgICBHRlBfS0VSTkVMKTsKIAlpZiAoIXFtZW0tJmd0O2Jhc2UpCiAJCXJldHVybiAtRU5PTUVNOwogCkBAIC04MCwxMCAmIzQzOzE2Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxbWVtX2ZyZWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcW1lbSAqcW1lbSkKIAkJcmV0dXJuOwogCiAJaWYgKHFtZW0tJmd0O2Jhc2UpCi0JCWRtYV9mcmVlX2F0dHJzKGRldiwgcW1lbS0mZ3Q7YWxsb2Nfc3osCi0JCQkgICAgICAgcW1lbS0mZ3Q7YmFzZSAtIHFtZW0tJmd0O2FsaWduLAotCQkJICAgICAgIHFtZW0tJmd0O2lvdmEgLSBxbWVtLSZndDthbGlnbiwKLQkJCSAgICAgICBETUFfQVRUUl9GT1JDRV9DT05USUdVT1VTKTsKJiM0MzsJCW90eDJfZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBxbWVtLSZndDthbGxvY19zeiwKJiM0MzsJCQkJICAgICAgIHFtZW0tJmd0O2Jhc2UgLSBxbWVtLSZndDthbGlnbiwKJiM0MzsJCQkJICAgICAgIHFtZW0tJmd0O2lvdmEgLSBxbWVtLSZndDthbGlnbik7CiAJZGV2bV9rZnJlZShkZXYsIHFtZW0pOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaGAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBPY3Rlb25UWDIsIGEgTWFydmVsbCBuZXR3b3JrIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgUlZVIChSZXNvdXJjZSBWaXJ0dWFsaXphdGlvbiBVbml0KSBhbmQgQUYgKEFkbWluIEZ1bmN0aW9uKSBhc3BlY3RzIG9mIHRoYXQgU29DLiBHb3QgaXQuIE5vdywgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGUgT2N0ZW9uVFgyIGlzIHJlYWxseSBhYm91dCwgYmV5b25kIHRoZSBiYXNpYyBkZXNjcmlwdGlvbi4KCkkmIzM5O2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgS2NvbmZpZyBhbmQgc2VlIHdoZXJlIHRoaXMgZHJpdmVyIGlzIHVzZWQuIENvbnRleHQgaXMga2V5LCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdpZGVseSB0aGlzIGNvbXBvbmVudCBpcyBkZXBsb3llZCBhbmQgY29uZmlndXJlZC4gVGhpcyBzaG91bGQgdGVsbCBtZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGhlIG92ZXJhbGwgcHVycG9zZSBvZiB0aGlzIHBhdGNoLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgcGF0Y2ggY291bGQgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwNzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtPQ1RFT05UWDImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo2OmNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy03LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMTpcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMi1cdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MjI9Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVx0Ym9vbCBcJiMzNDtEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoyNDpcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzE6Y29uZmlnIE9DVEVPTlRYMl9QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzM6XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzQtXHRzZWxlY3QgTkVUX0RFVkxJTktcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NTpjb25maWcgT0NURU9OVFgyX1ZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ3Olx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz01MT1jb25maWcgUlZVX0VTV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNTItXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjUzOlx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNTQtXHRkZWZhdWx0IG1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICYjNDM7PSBhZi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgJiM0Mzs9IGFmL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSAmIzQzOz0gbmljL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlPTY9Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICYjNDM7PSBydnVfbWJveC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICYjNDM7PSBydnVfYWYub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGUtOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2d4X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYzo2NzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9DR1gpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy02OC1cdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9DTjEwS19SUE0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTUtIC8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaDoxNjojZGVmaW5lXHRQQ0lfREVWSURfT0NURU9OVFgyX0NHWFx0XHQweEEwNTlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xNTQ9REVGSU5FX1NIT1dfQVRUUklCVVRFKG5wY19tY2FtX2xheW91dCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE1NjojZGVmaW5lIF9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVx0XHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSAjIyBfZm9wcyA9IHtcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTY1OiNkZWZpbmUgREVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUoX19uYW1lLCBfX3NpemUpXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY2LXN0YXRpYyBpbnQgX19uYW1lICMjIF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzAtfVx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNzE6X19PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfRk9QUyhfX25hbWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xODE9c3RhdGljIGludCBucGNfbWNhbV9kc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQyLSNkZWZpbmUgVE9UQUxfU1ogKE1BWF9OVU1fQkFOS1MgKiBNQVhfTlVNX1NVQl9CQU5LUyAqIE1BWF9TVUJCQU5LX0RFUFRIICogNjQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MjQzOkRFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKG5wY19tY2FtX2RzdGF0cywgVE9UQUxfU1opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0yNDU9c3RhdGljIGludCBucGNfbWNhbV9taXNtYXRjaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODQtLyogXCYjMzQ7JXVcXHQlZFxcdCV1XFxuXCYjMzQ7IG5lZWRzIGxlc3MgdGhhbiA2NCBjaGFyYWN0ZXJzIHRvIHByaW50LiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI4NTpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9taXNtYXRjaCwgVE9UQUxfU1opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjIxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9QVFBcdFx0XHQweEEwMENcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTIyLSNkZWZpbmUgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85OHh4X1BUUFx0XHQweEIxMDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yNy0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE9fUFRQXHQweEI2MDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjI4OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SU1RcdFx0XHQweEEwODVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI5LSNkZWZpbmUgUENJX0RFVklEX0NOMTBLX1BUUFx0XHRcdDB4QTA5RVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTA6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5MS1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTItXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTM6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NC1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTUtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTZYWF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTY6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Ny1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTgtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTk6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMC1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDEtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE5fUFRQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjAyOlx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDMtXHRcdFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA0LVx0XHRcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk1TU1fUFRQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjA1Olx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDYtXHRcdFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ1Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ2LVx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz05Mjc9c3RhdGljIHZvaWQgcnZ1X2dldF9sYmtfYnVmc2l6ZShzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTMzLVx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6OTM0Olx0XHRcdCAgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLLCBwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTkzNS1cdGlmICghcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNDQ3PWludCBydnVfZ2V0X251bV9sYmtfY2hhbnModm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MzQ1MzpcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9MQkssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDU0LVx0XHRcdCAgICAgIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNDojZGVmaW5lXHRQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlx0XHQweEEwNjVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI1OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXHRcdFx0MHhBMDYxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC0yNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYz0zOTI9c3RhdGljIHZvaWQgcnZ1X2xia19zZXRfY2hhbm5lbHMoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jLTQxNS1cdFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmM6NDE2Olx0XHRcdFx0ICAgICAgUENJX0RFVklEX09DVEVPTlRYMl9MQkssIHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE3LVx0XHRpZiAoIXBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYz0yODAwPXN0YXRpYyB2b2lkIHJ2dV9kYmdfbnBhX2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgxOS0vKiBQZXItbG1hYyBDR1ggZGVidWdmcyBmaWxlcyBuZWVkIGJvdGggUlZVIGFuZCBDR1ggaGFuZGxlOyBpbm9kZS1cdTAwM2VpX3ByaXZhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MjgyMDogKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODIxLSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgJiM0Mzs9IHJ2dV9uaWNwZi5vIG90eDJfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICYjNDM7PSBydnVfbmljdmYubyBvdHgyX3B0cC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICYjNDM7PSBydnVfcmVwLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Mi0vKiBQQ0kgZGV2aWNlIElEcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDM6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9QRiAgICAgICAgICAgICAgMHhBMDYzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXHRcdDB4QTA2NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXHRcdDB4QTBGOFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFx0XHQweEEwRjdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1OTk6XHRyZXR1cm4gKHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MDAtXHRcdChwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfUlZVX1JFUCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NjE3Olx0cmV0dXJuIHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYxOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYz0zNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml9wZl9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYzozNzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTM4LVx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jPTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBvdHgyX3ZmX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjIzOlx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzoyNDpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTI2LVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDc6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU4OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgTWVtb3J5IEFsbG9jYXRpb24gYW5kIERyaXZlciBEZXBlbmRlbmN5KioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIHRob3NlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uczogYHFtZW1fYWxsb2NgIGFuZCBgcW1lbV9mcmVlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRoZWlyIGluZmx1ZW5jZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBkcml2ZXIgZGlyZWN0b3J5IC0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AuICBUaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYmVpbmcgaGFuZGxlZCBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIG5ldHdvcmsgZHJpdmVyLCBhbmQgaG93IGl04oCZcyBiZWluZyBkZWFsbG9jYXRlZC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgY2F0Y2hpbmcgYW55IHBvdGVudGlhbCBtZW1vcnkgbGVha3Mgb3IgaW5lZmZpY2llbmNpZXMuIEFsc28sIHVuZGVyc3RhbmRpbmcgKndobyogaXMgdXNpbmcgdGhlIGFsbG9jYXRvciB3aWxsIGhlbHAgZGVmaW5lIHRoZSBzY29wZSBvZiBwb3RlbnRpYWwgY29kZSBjaGFuZ2VzIGlmIG5lY2Vzc2FyeS4KCkJleW9uZCB0aG9zZSBmdW5jdGlvbiBjYWxscywgSSYjMzk7bGwgYWxzbyBiZSBzZWFyY2hpbmcgZm9yIGluc3RhbmNlcyBvZiBgY29tbW9uLmhgIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gT2Z0ZW4gdGhpcyBoZWFkZXIgd2lsbCBpbmNsdWRlIGRlZmluaXRpb25zIHJlcXVpcmVkIGJ5IGNvZGUgdXNpbmcgdGhlc2UgZnVuY3Rpb25zLCBvciBpbiBzb21lIGNhc2VzIGV2ZW4gKmRlZmluZSogdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGBjb21tb24uaGAgaXMgdXNlZCB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIHRvIGRlZmluZSB0aGUgZGVwZW5kZW5jeSBncmFwaCBvZiB0aGUgb3RoZXIgZmlsZXMgaW4gdGhlIHNhbWUgZHJpdmVyIGRpcmVjdG9yeSwgYW5kIHBvc3NpYmx5IGV4dGVybmFsIGRyaXZlciBmaWxlcy4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggZHJpdmVyIGNvZGUsIGFzIGl0IHNldHMgdGhlIGNvbnRleHQuIFRoaXMgc3RlcCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgb2YgcXVpY2tseSBnZXR0aW5nIGEgaGlnaCBsZXZlbCBvZiB0aGUgZHJpdmVyJiMzOTtzIGlubmVyIHdvcmtpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA4OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FtZW1fYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM9MjY4PXN0YXRpYyBpbnQgcnZ1X2FsbG9jX21ib3hfbWVtb3J5KHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtMjg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6Mjg4Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZtYm94X2FkZHIsIG5kZXZzLCBtYm94X3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtMjg5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYz00MDg9aW50IHJ2dV9hbGxvY19jaW50X3FpbnRfbWVtKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9wZnZmICpwZnZmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTQyNy1cdGh3Y3R4X3NpemUgPSAxVUwgXHUwMDNjXHUwMDNjICgoY3R4X2NmZyBcdTAwM2VcdTAwM2UgMjQpIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6NDI4Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZwZnZmLVx1MDAzZWNxX2ludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYy00MjktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTQzOC1cdGh3Y3R4X3NpemUgPSAxVUwgXHUwMDNjXHUwMDNjICgoY3R4X2NmZyBcdTAwM2VcdTAwM2UgMjApIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6NDM5Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZwZnZmLVx1MDAzZW5peF9xaW50c19jdHgsIHFpbnRzLCBod2N0eF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTQ0MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmg9MTEzPXN0YXRpYyBpbmxpbmUgdm9pZCBvdHgyX2RtYV9mcmVlX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmgtMTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmg6MTI5OnN0YXRpYyBpbmxpbmUgaW50IHFtZW1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcW1lbSAqKnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaC0xMzAtXHRcdFx0ICAgICBpbnQgcXNpemUsIGludCBlbnRyeV9zeilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0xMjM2PWludCBydnVfYXFfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgYWRtaW5fcXVldWUgKiphZF9xdWV1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xMjQ3LVx0LyogQWxsb2MgbWVtb3J5IGZvciBpbnN0cnVjdGlvbnMgaS5lIEFRICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzoxMjQ4Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZhcS1cdTAwM2VpbnN0LCBxc2l6ZSwgaW5zdF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTEyNDktXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI1NC1cdC8qIEFsbG9jIG1lbW9yeSBmb3IgcmVzdWx0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MTI1NTpcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2YXEtXHUwMDNlcmVzLCBxc2l6ZSwgcmVzX3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI1Ni1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9OTQ0PXN0YXRpYyBpbnQgbml4bGZfcnNzX2N0eF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTk1Ny1cdC8qIEFsbG9jIE5JWCBSU1MgSFcgY29udGV4dCBtZW1vcnkgYW5kIGNvbmZpZyB0aGUgYmFzZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjk1ODpcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2cGZ2Zi1cdTAwM2Vyc3NfY3R4LCBudW1faW5kaWNlcywgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtOTU5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MTUxMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNTg2LVx0aHdjdHhfc2l6ZSA9IDFVTCBcdTAwM2NcdTAwM2MgKChjdHhfY2ZnIFx1MDAzZVx1MDAzZSA0KSBcdTAwMjYgMHhGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNTg3Olx0cmMgPSBxbWVtX2FsbG9jKHJ2dS1cdTAwM2VkZXYsIFx1MDAyNnBmdmYtXHUwMDNlcnFfY3R4LCByZXEtXHUwMDNlcnFfY250LCBod2N0eF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNTg4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNjA1LVx0aHdjdHhfc2l6ZSA9IDFVTCBcdTAwM2NcdTAwM2MgKGN0eF9jZmcgXHUwMDI2IDB4Rik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTYwNjpcdHJjID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZwZnZmLVx1MDAzZXNxX2N0eCwgcmVxLVx1MDAzZXNxX2NudCwgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTYwNy1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTYyMy1cdGh3Y3R4X3NpemUgPSAxVUwgXHUwMDNjXHUwMDNjICgoY3R4X2NmZyBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4Rik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTYyNDpcdHJjID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZwZnZmLVx1MDAzZWNxX2N0eCwgcmVxLVx1MDAzZWNxX2NudCwgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTYyNS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTY1MS1cdGh3Y3R4X3NpemUgPSAxVUwgXHUwMDNjXHUwMDNjICgoY3R4X2NmZyBcdTAwM2VcdTAwM2UgMjQpIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjE2NTI6XHRyYyA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2cGZ2Zi1cdTAwM2VjcV9pbnRzX2N0eCwgcWludHMsIGh3Y3R4X3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NTMtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NjUtXHRod2N0eF9zaXplID0gMVVMIFx1MDAzY1x1MDAzYyAoKGN0eF9jZmcgXHUwMDNlXHUwMDNlIDIwKSBcdTAwMjYgMHhGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNjY2Olx0cmMgPSBxbWVtX2FsbG9jKHJ2dS1cdTAwM2VkZXYsIFx1MDAyNnBmdmYtXHUwMDNlbml4X3FpbnRzX2N0eCwgcWludHMsIGh3Y3R4X3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NjctXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM3MjI9c3RhdGljIGludCBuaXhfc2V0dXBfbWNhc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3Qgbml4X2h3ICpuaXhfaHcsIGludCBibGthZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNzQ1LVx0LyogQWxsb2MgbWVtb3J5IGZvciBtdWx0aWNhc3QvbWlycm9yIHJlcGxpY2F0aW9uIGVudHJpZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNzQ2Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZtY2FzdC1cdTAwM2VtY2VfY3R4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM3NDctXHRcdFx0IG1jYXN0LVx1MDAzZW1jZV9jb3VudGVyW05JWF9NQ0FTVF9JTkdSRVNTXS5tYXgsIHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNzYyLVx0c2l6ZSA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTUNfTUlSUk9SX0NPTlNUKSBcdTAwMjYgMHhGRkZGO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjM3NjM6XHRlcnIgPSBxbWVtX2FsbG9jKHJ2dS1cdTAwM2VkZXYsIFx1MDAyNm1jYXN0LVx1MDAzZW1jYXN0X2J1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNzY0LVx0XHRcdCAoOFVMIFx1MDAzY1x1MDAzYyBNQ19CVUZfQ05UKSwgc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jPTMyNz1pbnQgcnZ1X21ib3hfaGFuZGxlcl9ucGFfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zNjYtXHRod2N0eF9zaXplID0gMVVMIFx1MDAzY1x1MDAzYyAoY3R4X2NmZyBcdTAwMjYgMHhGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYzozNjc6XHRlcnIgPSBxbWVtX2FsbG9jKHJ2dS1cdTAwM2VkZXYsIFx1MDAyNnBmdmYtXHUwMDNlYXVyYV9jdHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzY4LVx0XHRcdCBOUEFfQVVSQV9DT1VOVChyZXEtXHUwMDNlYXVyYV9zeiksIGh3Y3R4X3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zNzgtXHRod2N0eF9zaXplID0gMVVMIFx1MDAzY1x1MDAzYyAoKGN0eF9jZmcgXHUwMDNlXHUwMDNlIDQpIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jOjM3OTpcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2cGZ2Zi1cdTAwM2Vwb29sX2N0eCwgcmVxLVx1MDAzZW5yX3Bvb2xzLCBod2N0eF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zOTMtXHRod2N0eF9zaXplID0gMVVMIFx1MDAzY1x1MDAzYyAoKGN0eF9jZmcgXHUwMDNlXHUwMDNlIDgpIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jOjM5NDpcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2cGZ2Zi1cdTAwM2VucGFfcWludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzk1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuYz00Mz1pbnQgY24xMGtfbG10c3RfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmMtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuYzo2NjpcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cdTAwM2VkZXYsIFx1MDAyNnBmdmYtXHUwMDNlZHluY19sbXQsIHBmdmYtXHUwMDNldG90X2xtdF9saW5lcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jLTY3LVx0XHRcdCBMTVRfTElORV9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGtfaXBzZWMuYz02NjY9c3RhdGljIGludCBjbjEwa19pcHNlY19vdXRiX2FkZF9zdGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEwa19pcHNlYy5jLTY4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEwa19pcHNlYy5jOjY4MTpcdGVyciA9IHFtZW1fYWxsb2MocGYtXHUwMDNlZGV2LCBcdTAwMjZzYV9pbmZvLCBwZi1cdTAwM2VpcHNlYy5zYV9zaXplLCBPVFgyX0FMSUdOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEwa19pcHNlYy5jLTY4Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMjBrLmM9NTIwPXN0YXRpYyBpbnQgY24yMGtfYXVyYV9hcV9pbml0KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGF1cmFfaWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMjBrLmMtNTMzLVx0aWYgKCFwb29sLVx1MDAzZWZjX2FkZHIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjIway5jOjUzNDpcdFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVx1MDAzZWRldiwgXHUwMDI2cG9vbC1cdTAwM2VmY19hZGRyLCAxLCBPVFgyX0FMSUdOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjIway5jLTUzNS1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYz01OTc9c3RhdGljIGludCBjbjIwa19wb29sX2FxX2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmLCB1MTYgcG9vbF9pZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYy02MDctXHQvKiBBbGxvYyBtZW1vcnkgZm9yIHN0YWNrIHdoaWNoIGlzIHVzZWQgdG8gc3RvcmUgYnVmZmVyIHBvaW50ZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYzo2MDg6XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZwb29sLVx1MDAzZXN0YWNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMjBrLmMtNjA5LVx0XHRcdCBzdGFja19wYWdlcywgcGZ2Zi1cdTAwM2Vody5zdGFja19wZ19ieXRlcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM9OTYxPWludCBvdHgyX3NxX2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmLCB1MTYgcWlkeCwgdTE2IHNxYl9hdXJhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTk3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjk3NDpcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cdTAwM2VkZXYsIFx1MDAyNnNxLVx1MDAzZXNxZSwgMSwgc3EtXHUwMDNlc3FlX3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtOTc1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05OTEtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjk5MjpcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cdTAwM2VkZXYsIFx1MDAyNnNxLVx1MDAzZXNxZV9yaW5nLCBxc2V0LVx1MDAzZXNxZV9jbnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05OTMtXHRcdFx0IHNxLVx1MDAzZXNxZV9zaXplICogMik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtOTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM6OTk3Olx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVx1MDAzZWRldiwgXHUwMDI2c3EtXHUwMDNlY3B0X3Jlc3AsIHFzZXQtXHUwMDNlc3FlX2NudCwgNjQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtOTk4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMDAxLVx0aWYgKHFpZHggXHUwMDNjIHBmdmYtXHUwMDNlaHcudHhfcXVldWVzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxMDAyOlx0XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZzcS1cdTAwM2V0c29faGRycywgcXNldC1cdTAwM2VzcWVfY250LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtMTAwMy1cdFx0XHRcdCBUU09fSEVBREVSX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwMTMtXHRpZiAocGZ2Zi1cdTAwM2VwdHAgXHUwMDI2XHUwMDI2IHFpZHggXHUwMDNjIHBmdmYtXHUwMDNlaHcudHhfcXVldWVzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxMDE0Olx0XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZzcS1cdTAwM2V0aW1lc3RhbXBzLCBxc2V0LVx1MDAzZXNxZV9jbnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMDE1LVx0XHRcdFx0IHNpemVvZigqc3EtXHUwMDNldGltZXN0YW1wcykpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jPTEwNTE9aW50IG90eDJfY3FfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBxaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwOTktXHQvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIENRRXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjExMDA6XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZjcS1cdTAwM2VjcWUsIGNxLVx1MDAzZWNxZV9jbnQsIGNxLVx1MDAzZWNxZV9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTExMDEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jPTEzNzY9aW50IG90eDJfYXVyYV9hcV9pbml0KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGF1cmFfaWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtMTM4OC1cdGlmICghcG9vbC1cdTAwM2VmY19hZGRyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxMzg5Olx0XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZwb29sLVx1MDAzZWZjX2FkZHIsIDEsIE9UWDJfQUxJR04pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtMTM5MC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYz0xNDYwPWludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTE0NzAtXHQvKiBBbGxvYyBtZW1vcnkgZm9yIHN0YWNrIHdoaWNoIGlzIHVzZWQgdG8gc3RvcmUgYnVmZmVyIHBvaW50ZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxNDcxOlx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVx1MDAzZWRldiwgXHUwMDI2cG9vbC1cdTAwM2VzdGFjayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTE0NzItXHRcdFx0IHN0YWNrX3BhZ2VzLCBwZnZmLVx1MDAzZWh3LnN0YWNrX3BnX2J5dGVzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTU3OT1zdGF0aWMgdm9pZCAqY24yMGtfcGZ2Zl9tYm94X2FsbG9jKHN0cnVjdCBvdHgyX25pYyAqcGYsIGludCBudW12ZnMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjU4NDpcdGVyciA9IHFtZW1fYWxsb2MoXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFx1MDAyNm1ib3hfYWRkciwgbnVtdmZzLCBNQk9YX1NJWkUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy01ODUtXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDg6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNDYKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogMTA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogTWFydmVsbCBPY3Rlb25UWDIgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGlmIHRoZSBwYXRjaCB0b3VjaGVzIGNvZGUgdGhhdCYjMzk7cyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlbiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGF0IG1lYW5zIGZvY3VzaW5nIG9uIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4KCk15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgKHNwZWNpZmljYWxseSBgT0NURU9OVFgyX0FGYCwgYE9DVEVPTlRYMl9QRmAsIGBPQ1RFT05UWDJfVkZgKS4gSSBrbm93IHRoaXMgaXMgb2Z0ZW4gdXNlZCBpbiBTbWFydE5JQyBvciBTb0MgYXBwbGljYXRpb25zLCB3aGljaCBpcyBhIHJlZCBmbGFnLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9gLgoKQSBxdWljayBjaGVjayBvZiB0aGUgYEtjb25maWdgIGNvbmZpcm1zIGl0OiAmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsJiMzNDsgJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyLCYjMzQ7IGFuZCAmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlci4mIzM0OyBTb3VuZHMgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgYWxyaWdodC4gTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHRob3NlIGRldmljZSBJRHMuLi4gIFl1cCwgVmVuZG9yIElEIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgKDB4MTc3ZCkuIEFuZCB0aGUgZGV2aWNlIElEcyBwb2ludCB0byB0aGUgYE9DVEVPTlRYMmAgc2VyaWVzIOKAkyBgUlZVX0FGYCwgYENHWGAsIGBMQktgLCBgUlZVX1BGYCwgYW5kIGBSVlVfVkZgLiBUaGVzZSBhcmUgZGVmaW5pdGVseSBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgKGFuZCBDTjEwSyAvIENOMjBLKSBuZXR3b3JrIHByb2Nlc3NpbmcgdW5pdCAvIFNtYXJ0TklDIC8gU29DIFBDSWUgZGV2aWNlcy4KCk9rYXksIHRoaXMgaXMgcHJldHR5IGNvbmNsdXNpdmUuIFN0YW5kYXJkIFFFTVUgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIHRoZXNlIGRldmljZXMuIFRoZXkgcmVxdWlyZSB0aGUgYWN0dWFsIHBoeXNpY2FsIENhdml1bS9NYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSwgb3Igc2ltaWxhciBzaWxpY29uIGxpa2UgQ045eHh4L0NOMTB4eHgvQ04yMHh4eC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXJlIGFyZSBubyBnZW5lcmljIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBtb2RlbHMgd2l0aGluIFFFTVUuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGd1aWRlbGluZSBhZ2FpbjogJiMzNDstIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBNYXJ2ZWxsIE9jdGVvblRYMiwgaW4gdGhpcyBjYXNlLCBmaXRzIHRoYXQgZGVmaW5pdGlvbiBwZXJmZWN0bHkuCgpOb3cgZm9yIHRoZSBwYXRjaCBpdHNlbGYuIEl0IG1vZGlmaWVkIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaGAuIEl0IGFkZGVkIGBvdHgyX2RtYV9waHlzX2luX21hc2tgLCBgb3R4Ml9kbWFfYWxsb2NfY29oZXJlbnRgLCBgb3R4Ml9kbWFfZnJlZV9jb2hlcmVudGAsIGFuZCByZXBsYWNlZCBjYWxscyB0byBgZG1hX2FsbG9jX2F0dHJzYCBhbmQgYGRtYV9mcmVlX2F0dHJzYCB3aXRoIGBvdHgyX2RtYV9hbGxvY19jb2hlcmVudGAgYW5kIGBvdHgyX2RtYV9mcmVlX2NvaGVyZW50YC4gQWxsIHRoZSBjaGFuZ2VzIGFyZSAqc3RyaWN0bHkqIGNvbnRhaW5lZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2AuCgpUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIGNvZGUgcGF0aCBmb3Igc3RhbmRhcmQgUUVNVSAvIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBpcyBjbGVhcmx5IHVucmVhY2hhYmxlIHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZS4KClRodXMsIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBhbmQgYXBwbHlpbmcgdGhlIGluc3RydWN0aW9ucyBkaXJlY3RseSwgSSBhbSBzZXR0aW5nOgoKMS4gIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgCjIuICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBjb2RlIChNYXJ2ZWxsIE9jdGVvblRYMikgZm9yIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3Igc2ltaWxhciB2aXJ0dWFsIGVudmlyb25tZW50cy4KMy4gIGBGb2N1c1N5bWJvbHNgOiBgW11gCjQuICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAKClJlYWR5IHRvIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgKG90eDJfZG1hX2FsbG9jX2NvaGVyZW50L3FtZW1fYWxsb2MpIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgLyBDTjEwSyBoYXJkd2FyZSAoUENJZSBkZXZpY2VzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAobGlrZSBHQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyAob3R4Ml9kbWFfYWxsb2NfY29oZXJlbnQvcW1lbV9hbGxvYykgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIENhdml1bS9NYXJ2ZWxsIE9jdGVvblRYMiAvIENOMTBLIGhhcmR3YXJlIChQQ0llIGRldmljZXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDg6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDA3OjU4OjM0LjE4MjEyNDQ1MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzAwMjQyNzUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIChvdHgyX2RtYV9hbGxvY19jb2hlcmVudC9xbWVtX2FsbG9jKSB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIC8gQ04xMEsgaGFyZHdhcmUgKFBDSWUgZGV2aWNlcykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDc6NTg6MzQuMTgyMTI5NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NzcyNjMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFkZTc4MDgwMWVjYmE4MDQ0OTk0NjI5MjM1YjBiMGIwYzMxNWQzZjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMSAwNzo1ODozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXFxuaW5kZXggNzc5NDEzYTM4M2I3NC4uMDYxZGQ5MDdmN2ZhNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXFxuQEAgLTcsNiArNywxMSBAQFxcbiAjaWZuZGVmIENPTU1PTl9IXFxuICNkZWZpbmUgQ09NTU9OX0hcXG4gXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1hLW1hcC1vcHMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dmcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4rXFxuICNpbmNsdWRlIFxcXCJydnVfc3RydWN0LmhcXFwiXFxuIFxcbiAjZGVmaW5lIE9UWDJfQUxJR05cXHRcXHRcXHQxMjggIC8qIEFsaWduIHRvIGNhY2hlbGluZSAqL1xcbkBAIC00NCw2ICs0OSw4MyBAQCBzdHJ1Y3QgcW1lbSB7XFxuIFxcdHUzMlxcdFxcdHFzaXplO1xcbiB9O1xcbiBcXG4rLyogQnVkZHktYmFja2VkIGNvaGVyZW50IERNQSBhbGxvYyAoT3B0aW9uIDMpOiBwYWdlcyBmcm9tIF9fZ2V0X2ZyZWVfcGFnZXMoKSxcXG4rICogRE1BLXJlYWNoYWJsZSBSQU0gdmlhIGRtYV9jb2hlcmVudF9vaygpLCBhbmQgYnVzL1NNTVUgbWFwcGluZ3MgdmlhXFxuKyAqIGRtYV9tYXBfcGh5cygpIC1cXHUwMDNlIGlvbW11X2RtYV9tYXBfcGh5cygpIC1cXHUwMDNlIGlvbW11X21hcCgpIG9uIFNNTVUgc3lzdGVtcy5cXG4rICovXFxuKyNkZWZpbmUgT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlNcXHRETUFfQVRUUl9SRVFVSVJFX0NPSEVSRU5UXFxuK1xcbitzdGF0aWMgaW5saW5lIGJvb2wgb3R4Ml9kbWFfcGh5c19pbl9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwgcGh5c19hZGRyX3QgcGFkZHIsXFxuK1xcdFxcdFxcdFxcdFxcdCBzaXplX3Qgc2l6ZSlcXG4re1xcbitcXHR1NjQgbWFzayA9IGRtYV9nZXRfbWFzayhkZXYpO1xcbitcXG4rXFx0cmV0dXJuIHBhZGRyICsgc2l6ZSAtIDEgXFx1MDAzYz0gbWFzaztcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSB2b2lkICpvdHgyX2RtYV9hbGxvY19jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZ2ZwKVxcbit7XFxuK1xcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XFxuK1xcdHVuc2lnbmVkIGludCBvcmRlcjtcXG4rXFx0cGh5c19hZGRyX3QgcGFkZHI7XFxuK1xcdHZvaWQgKnZhZGRyO1xcbitcXHRnZnBfdCBhbGxvY19nZnA7XFxuK1xcbitcXHRpZiAoIWRldiB8fCAhZG1hX2hhbmRsZSB8fCAhc2l6ZSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRpZiAoIWRldl9pc19kbWFfY29oZXJlbnQoZGV2KSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcXG4rXFx0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XFxuK1xcdGlmIChvcmRlciBcXHUwMDNlIE1BWF9QQUdFX09SREVSKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuK1xcdGFsbG9jX2dmcCA9IChnZnAgXFx1MDAyNiB+KF9fR0ZQX0RNQSB8IF9fR0ZQX0RNQTMyIHwgX19HRlBfSElHSE1FTSkpIHxcXG4rXFx0XFx0X19HRlBfWkVSTyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9SRUNMQUlNO1xcbitcXG4rXFx0dmFkZHIgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZXMoYWxsb2NfZ2ZwLCBvcmRlcik7XFxuK1xcdHdoaWxlICh2YWRkciBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgIW90eDJfZG1hX3BoeXNfaW5fbWFzayhkZXYsIHBhZ2VfdG9fcGh5cyh2aXJ0X3RvX3BhZ2UodmFkZHIpKSwgc2l6ZSkpIHtcXG4rXFx0XFx0ZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyl2YWRkciwgb3JkZXIpO1xcbitcXHRcXHRpZiAoYWxsb2NfZ2ZwIFxcdTAwMjYgR0ZQX0RNQTMyKVxcbitcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0XFx0YWxsb2NfZ2ZwIHw9IEdGUF9ETUEzMjtcXG4rXFx0XFx0dmFkZHIgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZXMoYWxsb2NfZ2ZwLCBvcmRlcik7XFxuK1xcdH1cXG4rXFx0aWYgKCF2YWRkcilcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRwYWRkciA9IHBhZ2VfdG9fcGh5cyh2aXJ0X3RvX3BhZ2UodmFkZHIpKTtcXG4rXFx0ZG1hX2FkZHIgPSBkbWFfbWFwX3BoeXMoZGV2LCBwYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwsXFxuK1xcdFxcdFxcdFxcdE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTKTtcXG4rXFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKGRldiwgZG1hX2FkZHIpKSB7XFxuK1xcdFxcdGZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTtcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4rXFxuK1xcdCpkbWFfaGFuZGxlID0gZG1hX2FkZHI7XFxuK1xcdHJldHVybiB2YWRkcjtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSB2b2lkIG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBvcmRlcjtcXG4rXFxuK1xcdGlmICghZGV2IHx8ICF2YWRkcilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XFxuK1xcdG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xcbitcXG4rXFx0ZG1hX3VubWFwX3BoeXMoZGV2LCBkbWFfaGFuZGxlLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCxcXG4rXFx0XFx0ICAgICAgIE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTKTtcXG4rXFx0ZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyl2YWRkciwgb3JkZXIpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lIGludCBxbWVtX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKipxLFxcbiBcXHRcXHRcXHQgICAgIGludCBxc2l6ZSwgaW50IGVudHJ5X3N6KVxcbiB7XFxuQEAgLTYwLDggKzE0Miw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHFtZW1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcW1lbSAqKnEsXFxuIFxcbiBcXHRxbWVtLVxcdTAwM2VlbnRyeV9zeiA9IGVudHJ5X3N6O1xcbiBcXHRxbWVtLVxcdTAwM2VhbGxvY19zeiA9IChxc2l6ZSAqIGVudHJ5X3N6KSArIE9UWDJfQUxJR047XFxuLVxcdHFtZW0tXFx1MDAzZWJhc2UgPSBkbWFfYWxsb2NfYXR0cnMoZGV2LCBxbWVtLVxcdTAwM2VhbGxvY19zeiwgXFx1MDAyNnFtZW0tXFx1MDAzZWlvdmEsXFxuLVxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTCwgRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUyk7XFxuK1xcdHFtZW0tXFx1MDAzZWJhc2UgPSBvdHgyX2RtYV9hbGxvY19jb2hlcmVudChkZXYsIHFtZW0tXFx1MDAzZWFsbG9jX3N6LCBcXHUwMDI2cW1lbS1cXHUwMDNlaW92YSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFxbWVtLVxcdTAwM2ViYXNlKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTgwLDEwICsxNjIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcW1lbV9mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKnFtZW0pXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmIChxbWVtLVxcdTAwM2ViYXNlKVxcbi1cXHRcXHRkbWFfZnJlZV9hdHRycyhkZXYsIHFtZW0tXFx1MDAzZWFsbG9jX3N6LFxcbi1cXHRcXHRcXHQgICAgICAgcW1lbS1cXHUwMDNlYmFzZSAtIHFtZW0tXFx1MDAzZWFsaWduLFxcbi1cXHRcXHRcXHQgICAgICAgcW1lbS1cXHUwMDNlaW92YSAtIHFtZW0tXFx1MDAzZWFsaWduLFxcbi1cXHRcXHRcXHQgICAgICAgRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUyk7XFxuK1xcdFxcdG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBxbWVtLVxcdTAwM2VhbGxvY19zeixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHFtZW0tXFx1MDAzZWJhc2UgLSBxbWVtLVxcdTAwM2VhbGlnbixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHFtZW0tXFx1MDAzZWlvdmEgLSBxbWVtLVxcdTAwM2VhbGlnbik7XFxuIFxcdGRldm1fa2ZyZWUoZGV2LCBxbWVtKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDc6NTg6MzUuODgwNDcwOTQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0ODEzMDQwNjYwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIChvdHgyX2RtYV9hbGxvY19jb2hlcmVudC9xbWVtX2FsbG9jKSB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIC8gQ04xMEsgaGFyZHdhcmUgKFBDSWUgZGV2aWNlcykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWRlNzgwODAxZWNiYTgwNDQ5OTQ2MjkyMzViMGIwYjBjMzE1ZDNmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDc6NTg6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXG5pbmRleCA3Nzk0MTNhMzgzYjc0Li4wNjFkZDkwN2Y3ZmE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXG5AQCAtNyw2ICs3LDExIEBAXG4gI2lmbmRlZiBDT01NT05fSFxuICNkZWZpbmUgQ09NTU9OX0hcbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZG1hLW1hcC1vcHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dmcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuK1xuICNpbmNsdWRlIFwicnZ1X3N0cnVjdC5oXCJcbiBcbiAjZGVmaW5lIE9UWDJfQUxJR05cdFx0XHQxMjggIC8qIEFsaWduIHRvIGNhY2hlbGluZSAqL1xuQEAgLTQ0LDYgKzQ5LDgzIEBAIHN0cnVjdCBxbWVtIHtcbiBcdHUzMlx0XHRxc2l6ZTtcbiB9O1xuIFxuKy8qIEJ1ZGR5LWJhY2tlZCBjb2hlcmVudCBETUEgYWxsb2MgKE9wdGlvbiAzKTogcGFnZXMgZnJvbSBfX2dldF9mcmVlX3BhZ2VzKCksXG4rICogRE1BLXJlYWNoYWJsZSBSQU0gdmlhIGRtYV9jb2hlcmVudF9vaygpLCBhbmQgYnVzL1NNTVUgbWFwcGluZ3MgdmlhXG4rICogZG1hX21hcF9waHlzKCkgLVx1MDAzZSBpb21tdV9kbWFfbWFwX3BoeXMoKSAtXHUwMDNlIGlvbW11X21hcCgpIG9uIFNNTVUgc3lzdGVtcy5cbisgKi9cbisjZGVmaW5lIE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTXHRETUFfQVRUUl9SRVFVSVJFX0NPSEVSRU5UXG4rXG4rc3RhdGljIGlubGluZSBib29sIG90eDJfZG1hX3BoeXNfaW5fbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYsIHBoeXNfYWRkcl90IHBhZGRyLFxuK1x0XHRcdFx0XHQgc2l6ZV90IHNpemUpXG4re1xuK1x0dTY0IG1hc2sgPSBkbWFfZ2V0X21hc2soZGV2KTtcbitcbitcdHJldHVybiBwYWRkciArIHNpemUgLSAxIFx1MDAzYz0gbWFzaztcbit9XG4rXG4rc3RhdGljIGlubGluZSB2b2lkICpvdHgyX2RtYV9hbGxvY19jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLFxuK1x0XHRcdFx0XHQgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZ2ZwKVxuK3tcbitcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4rXHRwaHlzX2FkZHJfdCBwYWRkcjtcbitcdHZvaWQgKnZhZGRyO1xuK1x0Z2ZwX3QgYWxsb2NfZ2ZwO1xuK1xuK1x0aWYgKCFkZXYgfHwgIWRtYV9oYW5kbGUgfHwgIXNpemUpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0aWYgKCFkZXZfaXNfZG1hX2NvaGVyZW50KGRldikpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XG4rXHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbitcdGlmIChvcmRlciBcdTAwM2UgTUFYX1BBR0VfT1JERVIpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0YWxsb2NfZ2ZwID0gKGdmcCBcdTAwMjYgfihfX0dGUF9ETUEgfCBfX0dGUF9ETUEzMiB8IF9fR0ZQX0hJR0hNRU0pKSB8XG4rXHRcdF9fR0ZQX1pFUk8gfCBfX0dGUF9DT01QIHwgX19HRlBfUkVDTEFJTTtcbitcbitcdHZhZGRyID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2VzKGFsbG9jX2dmcCwgb3JkZXIpO1xuK1x0d2hpbGUgKHZhZGRyIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgICFvdHgyX2RtYV9waHlzX2luX21hc2soZGV2LCBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKHZhZGRyKSksIHNpemUpKSB7XG4rXHRcdGZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTtcbitcdFx0aWYgKGFsbG9jX2dmcCBcdTAwMjYgR0ZQX0RNQTMyKVxuK1x0XHRcdHJldHVybiBOVUxMO1xuK1x0XHRhbGxvY19nZnAgfD0gR0ZQX0RNQTMyO1xuK1x0XHR2YWRkciA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlcyhhbGxvY19nZnAsIG9yZGVyKTtcbitcdH1cbitcdGlmICghdmFkZHIpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0cGFkZHIgPSBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKHZhZGRyKSk7XG4rXHRkbWFfYWRkciA9IGRtYV9tYXBfcGh5cyhkZXYsIHBhZGRyLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCxcbitcdFx0XHRcdE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTKTtcbitcdGlmIChkbWFfbWFwcGluZ19lcnJvcihkZXYsIGRtYV9hZGRyKSkge1xuK1x0XHRmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7XG4rXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuK1xuK1x0KmRtYV9oYW5kbGUgPSBkbWFfYWRkcjtcbitcdHJldHVybiB2YWRkcjtcbit9XG4rXG4rc3RhdGljIGlubGluZSB2b2lkIG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSxcbitcdFx0XHRcdFx0ICB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKVxuK3tcbitcdHVuc2lnbmVkIGludCBvcmRlcjtcbitcbitcdGlmICghZGV2IHx8ICF2YWRkcilcbitcdFx0cmV0dXJuO1xuK1xuK1x0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XG4rXHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbitcbitcdGRtYV91bm1hcF9waHlzKGRldiwgZG1hX2hhbmRsZSwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwsXG4rXHRcdCAgICAgICBPVFgyX0RNQV9DT0hFUkVOVF9BVFRSUyk7XG4rXHRmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgaW50IHFtZW1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcW1lbSAqKnEsXG4gXHRcdFx0ICAgICBpbnQgcXNpemUsIGludCBlbnRyeV9zeilcbiB7XG5AQCAtNjAsOCArMTQyLDggQEAgc3RhdGljIGlubGluZSBpbnQgcW1lbV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBxbWVtICoqcSxcbiBcbiBcdHFtZW0tXHUwMDNlZW50cnlfc3ogPSBlbnRyeV9zejtcbiBcdHFtZW0tXHUwMDNlYWxsb2Nfc3ogPSAocXNpemUgKiBlbnRyeV9zeikgKyBPVFgyX0FMSUdOO1xuLVx0cW1lbS1cdTAwM2ViYXNlID0gZG1hX2FsbG9jX2F0dHJzKGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeiwgXHUwMDI2cW1lbS1cdTAwM2Vpb3ZhLFxuLVx0XHRcdFx0ICAgICBHRlBfS0VSTkVMLCBETUFfQVRUUl9GT1JDRV9DT05USUdVT1VTKTtcbitcdHFtZW0tXHUwMDNlYmFzZSA9IG90eDJfZG1hX2FsbG9jX2NvaGVyZW50KGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeiwgXHUwMDI2cW1lbS1cdTAwM2Vpb3ZhLFxuK1x0XHRcdFx0XHQgICAgIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFxbWVtLVx1MDAzZWJhc2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTgwLDEwICsxNjIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcW1lbV9mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKnFtZW0pXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChxbWVtLVx1MDAzZWJhc2UpXG4tXHRcdGRtYV9mcmVlX2F0dHJzKGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeixcbi1cdFx0XHQgICAgICAgcW1lbS1cdTAwM2ViYXNlIC0gcW1lbS1cdTAwM2VhbGlnbixcbi1cdFx0XHQgICAgICAgcW1lbS1cdTAwM2Vpb3ZhIC0gcW1lbS1cdTAwM2VhbGlnbixcbi1cdFx0XHQgICAgICAgRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUyk7XG4rXHRcdG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBxbWVtLVx1MDAzZWFsbG9jX3N6LFxuK1x0XHRcdFx0ICAgICAgIHFtZW0tXHUwMDNlYmFzZSAtIHFtZW0tXHUwMDNlYWxpZ24sXG4rXHRcdFx0XHQgICAgICAgcW1lbS1cdTAwM2Vpb3ZhIC0gcW1lbS1cdTAwM2VhbGlnbik7XG4gXHRkZXZtX2tmcmVlKGRldiwgcW1lbSk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDc6NTg6MzUuODgwNDcyMjkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzUxMTI5MzI2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoLiBJdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaGAuIFJpZ2h0LCB0aGF0J3MgdGhlIE9jdGVvblRYMiwgYSBNYXJ2ZWxsIG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHRoZSBSVlUgKFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQpIGFuZCBBRiAoQWRtaW4gRnVuY3Rpb24pIGFzcGVjdHMgb2YgdGhhdCBTb0MuIEdvdCBpdC4gTm93LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoZSBPY3Rlb25UWDIgaXMgcmVhbGx5IGFib3V0LCBiZXlvbmQgdGhlIGJhc2ljIGRlc2NyaXB0aW9uLlxuXG5JJ2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgS2NvbmZpZyBhbmQgc2VlIHdoZXJlIHRoaXMgZHJpdmVyIGlzIHVzZWQuIENvbnRleHQgaXMga2V5LCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdpZGVseSB0aGlzIGNvbXBvbmVudCBpcyBkZXBsb3llZCBhbmQgY29uZmlndXJlZC4gVGhpcyBzaG91bGQgdGVsbCBtZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGhlIG92ZXJhbGwgcHVycG9zZSBvZiB0aGlzIHBhdGNoLiBMZXQncyBzZWUgaWYgdGhpcyBwYXRjaCBjb3VsZCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDU0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDc6NTk6NTAuOTkzNDA3NjgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MDM4MTAzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJPQ1RFT05UWDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjExOlxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTItXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTIyPWNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMjMtXFx0Ym9vbCBcXFwiRGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoyNDpcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMjUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzE6Y29uZmlnIE9DVEVPTlRYMl9QRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMzpcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ1OmNvbmZpZyBPQ1RFT05UWDJfVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NzpcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz01MT1jb25maWcgUlZVX0VTV0lUQ0hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUyLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NTM6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTU0LVxcdGRlZmF1bHQgbVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSArPSBhZi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfUEYpICs9IG5pYy9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlPTY9Y2NmbGFncy15ICs9IC1JJChzcmMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IHJ2dV9tYm94Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICs9IHJ2dV9hZi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGUtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jPTY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBjZ3hfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYzo2NzpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfQ0dYKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jLTY4LVxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9DTjEwS19SUE0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xNS0gLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaDoxNjojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9DR1hcXHRcXHQweEEwNTlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xNTQ9REVGSU5FX1NIT1dfQVRUUklCVVRFKG5wY19tY2FtX2xheW91dCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTU2OiNkZWZpbmUgX19PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfRk9QUyhfX25hbWUpXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTctc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgX19uYW1lICMjIF9mb3BzID0ge1xcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE2NTojZGVmaW5lIERFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKF9fbmFtZSwgX19zaXplKVxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY2LXN0YXRpYyBpbnQgX19uYW1lICMjIF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzAtfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTcxOl9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MTgxPXN0YXRpYyBpbnQgbnBjX21jYW1fZHN0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQyLSNkZWZpbmUgVE9UQUxfU1ogKE1BWF9OVU1fQkFOS1MgKiBNQVhfTlVNX1NVQl9CQU5LUyAqIE1BWF9TVUJCQU5LX0RFUFRIICogNjQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI0MzpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9kc3RhdHMsIFRPVEFMX1NaKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0yNDU9c3RhdGljIGludCBucGNfbWNhbV9taXNtYXRjaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4NC0vKiBcXFwiJXVcXFxcdCVkXFxcXHQldVxcXFxuXFxcIiBuZWVkcyBsZXNzIHRoYW4gNjQgY2hhcmFjdGVycyB0byBwcmludC4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6Mjg1OkRFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKG5wY19tY2FtX21pc21hdGNoLCBUT1RBTF9TWik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjIxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9QVFBcXHRcXHRcXHQweEEwMENcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMi0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFBcXHRcXHQweEIxMDBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI3LSNkZWZpbmUgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYT19QVFBcXHQweEI2MDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzoyODojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlNUXFx0XFx0XFx0MHhBMDg1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjktI2RlZmluZSBQQ0lfREVWSURfQ04xMEtfUFRQXFx0XFx0XFx0MHhBMDlFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYz01ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHB0cF9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5MDpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTEtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Mi1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85OHh4X1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTM6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk0LVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTUtXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTZYWF9QVFApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NTk2OlxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Ny1cXHRcXHRcXHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk4LVxcdFxcdFxcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk1WFhfUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5OTpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDAtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMS1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYTl9QVFApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjAyOlxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMy1cXHRcXHRcXHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA0LVxcdFxcdFxcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk1TU1fUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjYwNTpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDYtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtNDYtXFx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTkyNz1zdGF0aWMgdm9pZCBydnVfZ2V0X2xia19idWZzaXplKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTkzMy1cXHRwZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6OTM0OlxcdFxcdFxcdCAgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLLCBwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy05MzUtXFx0aWYgKCFwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzQ0Nz1pbnQgcnZ1X2dldF9udW1fbGJrX2NoYW5zKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0NTM6XFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0xCSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDU0LVxcdFxcdFxcdCAgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNDojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZcXHRcXHQweEEwNjVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNTojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcXHRcXHRcXHQweEEwNjFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jPTM5Mj1zdGF0aWMgdm9pZCBydnVfbGJrX3NldF9jaGFubmVscyhzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYy00MTUtXFx0XFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jOjQxNjpcXHRcXHRcXHRcXHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE3LVxcdFxcdGlmICghcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9MjgwMD1zdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgxOS0vKiBQZXItbG1hYyBDR1ggZGVidWdmcyBmaWxlcyBuZWVkIGJvdGggUlZVIGFuZCBDR1ggaGFuZGxlOyBpbm9kZS1cXHUwMDNlaV9wcml2YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODIwOiAqIHBvaW50cyBoZXJlIHNvIHNlcV9maWxlIG9wcyBhdm9pZCBwY2lfZ2V0X2RldmljZShQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODIxLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgKz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICs9IHJ2dV9yZXAub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDItLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0MzojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1BGICAgICAgICAgICAgICAweEEwNjNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXFx0XFx0MHhBMDY0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXFx0XFx0MHhBMEY4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFxcdFxcdDB4QTBGN1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NTk3PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX2xia3ZmKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NTk5OlxcdHJldHVybiAocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjAwLVxcdFxcdChwZGV2LVxcdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX1JWVV9SRVApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo2MTc6XFx0cmV0dXJuIHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfcGZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjM3OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zOC1cXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjM6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjQ6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjYtXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDA3OjU5OjUxLjk2Mzc5Mzg1N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNDkyMTM1OTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgQWxsb2NhdGlvbiBhbmQgRHJpdmVyIERlcGVuZGVuY3kqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIHRob3NlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uczogYHFtZW1fYWxsb2NgIGFuZCBgcW1lbV9mcmVlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRoZWlyIGluZmx1ZW5jZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBkcml2ZXIgZGlyZWN0b3J5IC0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AuICBUaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYmVpbmcgaGFuZGxlZCBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIG5ldHdvcmsgZHJpdmVyLCBhbmQgaG93IGl04oCZcyBiZWluZyBkZWFsbG9jYXRlZC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgY2F0Y2hpbmcgYW55IHBvdGVudGlhbCBtZW1vcnkgbGVha3Mgb3IgaW5lZmZpY2llbmNpZXMuIEFsc28sIHVuZGVyc3RhbmRpbmcgKndobyogaXMgdXNpbmcgdGhlIGFsbG9jYXRvciB3aWxsIGhlbHAgZGVmaW5lIHRoZSBzY29wZSBvZiBwb3RlbnRpYWwgY29kZSBjaGFuZ2VzIGlmIG5lY2Vzc2FyeS5cblxuQmV5b25kIHRob3NlIGZ1bmN0aW9uIGNhbGxzLCBJJ2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciBpbnN0YW5jZXMgb2YgYGNvbW1vbi5oYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIE9mdGVuIHRoaXMgaGVhZGVyIHdpbGwgaW5jbHVkZSBkZWZpbml0aW9ucyByZXF1aXJlZCBieSBjb2RlIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucywgb3IgaW4gc29tZSBjYXNlcyBldmVuICpkZWZpbmUqIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy4gVW5kZXJzdGFuZGluZyB3aGVyZSBgY29tbW9uLmhgIGlzIHVzZWQgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiB0byBkZWZpbmUgdGhlIGRlcGVuZGVuY3kgZ3JhcGggb2YgdGhlIG90aGVyIGZpbGVzIGluIHRoZSBzYW1lIGRyaXZlciBkaXJlY3RvcnksIGFuZCBwb3NzaWJseSBleHRlcm5hbCBkcml2ZXIgZmlsZXMuIEl0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggZHJpdmVyIGNvZGUsIGFzIGl0IHNldHMgdGhlIGNvbnRleHQuIFRoaXMgc3RlcCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgb2YgcXVpY2tseSBnZXR0aW5nIGEgaGlnaCBsZXZlbCBvZiB0aGUgZHJpdmVyJ3MgaW5uZXIgd29ya2luZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1ODgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwODowMzoxNi44ODUxNTU2MjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwMTMxODU2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxbWVtX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYz0yNjg9c3RhdGljIGludCBydnVfYWxsb2NfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTI4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYzoyODg6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNm1ib3hfYWRkciwgbmRldnMsIG1ib3hfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtMjg5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYz00MDg9aW50IHJ2dV9hbGxvY19jaW50X3FpbnRfbWVtKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9wZnZmICpwZnZmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtNDI3LVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKChjdHhfY2ZnIFxcdTAwM2VcXHUwMDNlIDI0KSBcXHUwMDI2IDB4Rik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6NDI4OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VjcV9pbnRzX2N0eCwgcWludHMsIGh3Y3R4X3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTQyOS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtNDM4LVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKChjdHhfY2ZnIFxcdTAwM2VcXHUwMDNlIDIwKSBcXHUwMDI2IDB4Rik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6NDM5OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VuaXhfcWludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtNDQwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaD0xMTM9c3RhdGljIGlubGluZSB2b2lkIG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oLTEyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaDoxMjk6c3RhdGljIGlubGluZSBpbnQgcW1lbV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBxbWVtICoqcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaC0xMzAtXFx0XFx0XFx0ICAgICBpbnQgcXNpemUsIGludCBlbnRyeV9zeilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTEyMzY9aW50IHJ2dV9hcV9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBhZG1pbl9xdWV1ZSAqKmFkX3F1ZXVlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI0Ny1cXHQvKiBBbGxvYyBtZW1vcnkgZm9yIGluc3RydWN0aW9ucyBpLmUgQVEgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzoxMjQ4OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZhcS1cXHUwMDNlaW5zdCwgcXNpemUsIGluc3Rfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI0OS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xMjU0LVxcdC8qIEFsbG9jIG1lbW9yeSBmb3IgcmVzdWx0cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjEyNTU6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNmFxLVxcdTAwM2VyZXMsIHFzaXplLCByZXNfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI1Ni1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9OTQ0PXN0YXRpYyBpbnQgbml4bGZfcnNzX2N0eF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtOTU3LVxcdC8qIEFsbG9jIE5JWCBSU1MgSFcgY29udGV4dCBtZW1vcnkgYW5kIGNvbmZpZyB0aGUgYmFzZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo5NTg6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZXJzc19jdHgsIG51bV9pbmRpY2VzLCBod2N0eF9zaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtOTU5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MTUxMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE1ODYtXFx0aHdjdHhfc2l6ZSA9IDFVTCBcXHUwMDNjXFx1MDAzYyAoKGN0eF9jZmcgXFx1MDAzZVxcdTAwM2UgNCkgXFx1MDAyNiAweEYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNTg3OlxcdHJjID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZXJxX2N0eCwgcmVxLVxcdTAwM2VycV9jbnQsIGh3Y3R4X3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNTg4LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNjA1LVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKGN0eF9jZmcgXFx1MDAyNiAweEYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNjA2OlxcdHJjID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZXNxX2N0eCwgcmVxLVxcdTAwM2VzcV9jbnQsIGh3Y3R4X3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNjA3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNjIzLVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKChjdHhfY2ZnIFxcdTAwM2VcXHUwMDNlIDgpIFxcdTAwMjYgMHhGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTYyNDpcXHRyYyA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VjcV9jdHgsIHJlcS1cXHUwMDNlY3FfY250LCBod2N0eF9zaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTYyNS1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTY1MS1cXHRod2N0eF9zaXplID0gMVVMIFxcdTAwM2NcXHUwMDNjICgoY3R4X2NmZyBcXHUwMDNlXFx1MDAzZSAyNCkgXFx1MDAyNiAweEYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNjUyOlxcdHJjID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZWNxX2ludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NTMtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NjUtXFx0aHdjdHhfc2l6ZSA9IDFVTCBcXHUwMDNjXFx1MDAzYyAoKGN0eF9jZmcgXFx1MDAzZVxcdTAwM2UgMjApIFxcdTAwMjYgMHhGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTY2NjpcXHRyYyA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VuaXhfcWludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NjctXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM3MjI9c3RhdGljIGludCBuaXhfc2V0dXBfbWNhc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3Qgbml4X2h3ICpuaXhfaHcsIGludCBibGthZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM3NDUtXFx0LyogQWxsb2MgbWVtb3J5IGZvciBtdWx0aWNhc3QvbWlycm9yIHJlcGxpY2F0aW9uIGVudHJpZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6Mzc0NjpcXHRlcnIgPSBxbWVtX2FsbG9jKHJ2dS1cXHUwMDNlZGV2LCBcXHUwMDI2bWNhc3QtXFx1MDAzZW1jZV9jdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM3NDctXFx0XFx0XFx0IG1jYXN0LVxcdTAwM2VtY2VfY291bnRlcltOSVhfTUNBU1RfSU5HUkVTU10ubWF4LCBzaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNzYyLVxcdHNpemUgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX01DX01JUlJPUl9DT05TVCkgXFx1MDAyNiAweEZGRkY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjM3NjM6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNm1jYXN0LVxcdTAwM2VtY2FzdF9idWYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM3NjQtXFx0XFx0XFx0ICg4VUwgXFx1MDAzY1xcdTAwM2MgTUNfQlVGX0NOVCksIHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jPTMyNz1pbnQgcnZ1X21ib3hfaGFuZGxlcl9ucGFfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jLTM2Ni1cXHRod2N0eF9zaXplID0gMVVMIFxcdTAwM2NcXHUwMDNjIChjdHhfY2ZnIFxcdTAwMjYgMHhGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmM6MzY3OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VhdXJhX2N0eCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzY4LVxcdFxcdFxcdCBOUEFfQVVSQV9DT1VOVChyZXEtXFx1MDAzZWF1cmFfc3opLCBod2N0eF9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zNzgtXFx0aHdjdHhfc2l6ZSA9IDFVTCBcXHUwMDNjXFx1MDAzYyAoKGN0eF9jZmcgXFx1MDAzZVxcdTAwM2UgNCkgXFx1MDAyNiAweEYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYzozNzk6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZXBvb2xfY3R4LCByZXEtXFx1MDAzZW5yX3Bvb2xzLCBod2N0eF9zaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzkzLVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKChjdHhfY2ZnIFxcdTAwM2VcXHUwMDNlIDgpIFxcdTAwMjYgMHhGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmM6Mzk0OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VucGFfcWludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jLTM5NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmM9NDM9aW50IGNuMTBrX2xtdHN0X2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmMtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmM6NjY6XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VkeW5jX2xtdCwgcGZ2Zi1cXHUwMDNldG90X2xtdF9saW5lcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuYy02Ny1cXHRcXHRcXHQgTE1UX0xJTkVfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGtfaXBzZWMuYz02NjY9c3RhdGljIGludCBjbjEwa19pcHNlY19vdXRiX2FkZF9zdGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrX2lwc2VjLmMtNjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEwa19pcHNlYy5jOjY4MTpcXHRlcnIgPSBxbWVtX2FsbG9jKHBmLVxcdTAwM2VkZXYsIFxcdTAwMjZzYV9pbmZvLCBwZi1cXHUwMDNlaXBzZWMuc2Ffc2l6ZSwgT1RYMl9BTElHTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrX2lwc2VjLmMtNjgyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYz01MjA9c3RhdGljIGludCBjbjIwa19hdXJhX2FxX2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmLCBpbnQgYXVyYV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjIway5jLTUzMy1cXHRpZiAoIXBvb2wtXFx1MDAzZWZjX2FkZHIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYzo1MzQ6XFx0XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZwb29sLVxcdTAwM2VmY19hZGRyLCAxLCBPVFgyX0FMSUdOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYy01MzUtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjIway5jPTU5Nz1zdGF0aWMgaW50IGNuMjBrX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMjBrLmMtNjA3LVxcdC8qIEFsbG9jIG1lbW9yeSBmb3Igc3RhY2sgd2hpY2ggaXMgdXNlZCB0byBzdG9yZSBidWZmZXIgcG9pbnRlcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYzo2MDg6XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZwb29sLVxcdTAwM2VzdGFjayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYy02MDktXFx0XFx0XFx0IHN0YWNrX3BhZ2VzLCBwZnZmLVxcdTAwM2Vody5zdGFja19wZ19ieXRlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYz05NjE9aW50IG90eDJfc3FfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBxaWR4LCB1MTYgc3FiX2F1cmEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM6OTc0OlxcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cXHUwMDNlZGV2LCBcXHUwMDI2c3EtXFx1MDAzZXNxZSwgMSwgc3EtXFx1MDAzZXNxZV9zaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05NzUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTk5MS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzo5OTI6XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZzcS1cXHUwMDNlc3FlX3JpbmcsIHFzZXQtXFx1MDAzZXNxZV9jbnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtOTkzLVxcdFxcdFxcdCBzcS1cXHUwMDNlc3FlX3NpemUgKiAyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTk5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzo5OTc6XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZzcS1cXHUwMDNlY3B0X3Jlc3AsIHFzZXQtXFx1MDAzZXNxZV9jbnQsIDY0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05OTgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwMDEtXFx0aWYgKHFpZHggXFx1MDAzYyBwZnZmLVxcdTAwM2Vody50eF9xdWV1ZXMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxMDAyOlxcdFxcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cXHUwMDNlZGV2LCBcXHUwMDI2c3EtXFx1MDAzZXRzb19oZHJzLCBxc2V0LVxcdTAwM2VzcWVfY250LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwMDMtXFx0XFx0XFx0XFx0IFRTT19IRUFERVJfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMDEzLVxcdGlmIChwZnZmLVxcdTAwM2VwdHAgXFx1MDAyNlxcdTAwMjYgcWlkeCBcXHUwMDNjIHBmdmYtXFx1MDAzZWh3LnR4X3F1ZXVlcykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjEwMTQ6XFx0XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZzcS1cXHUwMDNldGltZXN0YW1wcywgcXNldC1cXHUwMDNlc3FlX2NudCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMDE1LVxcdFxcdFxcdFxcdCBzaXplb2YoKnNxLVxcdTAwM2V0aW1lc3RhbXBzKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYz0xMDUxPWludCBvdHgyX2NxX2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmLCB1MTYgcWlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwOTktXFx0LyogQWxsb2NhdGUgbWVtb3J5IGZvciBDUUVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM6MTEwMDpcXHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXFx1MDAzZWRldiwgXFx1MDAyNmNxLVxcdTAwM2VjcWUsIGNxLVxcdTAwM2VjcWVfY250LCBjcS1cXHUwMDNlY3FlX3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTExMDEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jPTEzNzY9aW50IG90eDJfYXVyYV9hcV9pbml0KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGF1cmFfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMzg4LVxcdGlmICghcG9vbC1cXHUwMDNlZmNfYWRkcikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjEzODk6XFx0XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZwb29sLVxcdTAwM2VmY19hZGRyLCAxLCBPVFgyX0FMSUdOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMzkwLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYz0xNDYwPWludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtMTQ3MC1cXHQvKiBBbGxvYyBtZW1vcnkgZm9yIHN0YWNrIHdoaWNoIGlzIHVzZWQgdG8gc3RvcmUgYnVmZmVyIHBvaW50ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM6MTQ3MTpcXHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXFx1MDAzZWRldiwgXFx1MDAyNnBvb2wtXFx1MDAzZXN0YWNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTE0NzItXFx0XFx0XFx0IHN0YWNrX3BhZ2VzLCBwZnZmLVxcdTAwM2Vody5zdGFja19wZ19ieXRlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTU3OT1zdGF0aWMgdm9pZCAqY24yMGtfcGZ2Zl9tYm94X2FsbG9jKHN0cnVjdCBvdHgyX25pYyAqcGYsIGludCBudW12ZnMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjU4NDpcXHRlcnIgPSBxbWVtX2FsbG9jKFxcdTAwMjZwZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXHUwMDI2bWJveF9hZGRyLCBudW12ZnMsIE1CT1hfU0laRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy01ODUtXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwODowMzoyMi45ODY0Nzg2NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTQxOTgwMzE3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IE1hcnZlbGwgT2N0ZW9uVFgyIERyaXZlciBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgdGhlIHBhdGNoIHRvdWNoZXMgY29kZSB0aGF0J3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4gVGhhdCBtZWFucyBmb2N1c2luZyBvbiBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgKHNwZWNpZmljYWxseSBgT0NURU9OVFgyX0FGYCwgYE9DVEVPTlRYMl9QRmAsIGBPQ1RFT05UWDJfVkZgKS4gSSBrbm93IHRoaXMgaXMgb2Z0ZW4gdXNlZCBpbiBTbWFydE5JQyBvciBTb0MgYXBwbGljYXRpb25zLCB3aGljaCBpcyBhIHJlZCBmbGFnLiBMZXQncyBzdGFydCBieSBsb29raW5nIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2AuXG5cbkEgcXVpY2sgY2hlY2sgb2YgdGhlIGBLY29uZmlnYCBjb25maXJtcyBpdDogXCJNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLFwiIFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlcixcIiBhbmQgXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuXCIgU291bmRzIGxpa2UgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGFscmlnaHQuIE5vdywgbGV0J3MgdmVyaWZ5IHRob3NlIGRldmljZSBJRHMuLi4gIFl1cCwgVmVuZG9yIElEIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgKDB4MTc3ZCkuIEFuZCB0aGUgZGV2aWNlIElEcyBwb2ludCB0byB0aGUgYE9DVEVPTlRYMmAgc2VyaWVzIOKAkyBgUlZVX0FGYCwgYENHWGAsIGBMQktgLCBgUlZVX1BGYCwgYW5kIGBSVlVfVkZgLiBUaGVzZSBhcmUgZGVmaW5pdGVseSBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgKGFuZCBDTjEwSyAvIENOMjBLKSBuZXR3b3JrIHByb2Nlc3NpbmcgdW5pdCAvIFNtYXJ0TklDIC8gU29DIFBDSWUgZGV2aWNlcy5cblxuT2theSwgdGhpcyBpcyBwcmV0dHkgY29uY2x1c2l2ZS4gU3RhbmRhcmQgUUVNVSAqZG9lc24ndCogZW11bGF0ZSB0aGVzZSBkZXZpY2VzLiBUaGV5IHJlcXVpcmUgdGhlIGFjdHVhbCBwaHlzaWNhbCBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUsIG9yIHNpbWlsYXIgc2lsaWNvbiBsaWtlIENOOXh4eC9DTjEweHh4L0NOMjB4eHguIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGVyZSBhcmUgbm8gZ2VuZXJpYyBvciBzb2Z0d2FyZSBlbXVsYXRpb24gbW9kZWxzIHdpdGhpbiBRRU1VLlxuXG5Ob3csIGxldCdzIHJldmlldyB0aGUgZ3VpZGVsaW5lIGFnYWluOiBcIi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIE1hcnZlbGwgT2N0ZW9uVFgyLCBpbiB0aGlzIGNhc2UsIGZpdHMgdGhhdCBkZWZpbml0aW9uIHBlcmZlY3RseS5cblxuTm93IGZvciB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBtb2RpZmllZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmhgLiBJdCBhZGRlZCBgb3R4Ml9kbWFfcGh5c19pbl9tYXNrYCwgYG90eDJfZG1hX2FsbG9jX2NvaGVyZW50YCwgYG90eDJfZG1hX2ZyZWVfY29oZXJlbnRgLCBhbmQgcmVwbGFjZWQgY2FsbHMgdG8gYGRtYV9hbGxvY19hdHRyc2AgYW5kIGBkbWFfZnJlZV9hdHRyc2Agd2l0aCBgb3R4Ml9kbWFfYWxsb2NfY29oZXJlbnRgIGFuZCBgb3R4Ml9kbWFfZnJlZV9jb2hlcmVudGAuIEFsbCB0aGUgY2hhbmdlcyBhcmUgKnN0cmljdGx5KiBjb250YWluZWQgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9gLlxuXG5UaGVyZWZvcmUsIHRoZXJlIGlzIG5vIGNvZGUgcGF0aCBmb3Igc3RhbmRhcmQgUUVNVSAvIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBpcyBjbGVhcmx5IHVucmVhY2hhYmxlIHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZS5cblxuVGh1cywgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIGFuZCBhcHBseWluZyB0aGUgaW5zdHJ1Y3Rpb25zIGRpcmVjdGx5LCBJIGFtIHNldHRpbmc6XG5cbjEuICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYFxuMi4gIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggbW9kaWZpZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIGNvZGUgKE1hcnZlbGwgT2N0ZW9uVFgyKSBmb3IgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBzaW1pbGFyIHZpcnR1YWwgZW52aXJvbm1lbnRzLlxuMy4gIGBGb2N1c1N5bWJvbHNgOiBgW11gXG40LiAgYEVuYWJsZUNvbmZpZ3NgOiBgW11gXG5cblJlYWR5IHRvIGludm9rZSBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM0NiwiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDA4OjA2OjM3LjE4NDUxMzIzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgKG90eDJfZG1hX2FsbG9jX2NvaGVyZW50L3FtZW1fYWxsb2MpIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgLyBDTjEwSyBoYXJkd2FyZSAoUENJZSBkZXZpY2VzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAobGlrZSBHQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyAob3R4Ml9kbWFfYWxsb2NfY29oZXJlbnQvcW1lbV9hbGxvYykgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIENhdml1bS9NYXJ2ZWxsIE9jdGVvblRYMiAvIENOMTBLIGhhcmR3YXJlIChQQ0llIGRldmljZXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDA4OjA2OjM3LjE4NDUzOTAwNloiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow7bcw2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-01 07:04:57 +0000 UTC FinishedAt: 2026-09-01 08:06:38 +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+CgkJCTx0ZD4yMDI2LzA5LzAxIDA3OjU4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+OG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgKG90eDJfZG1hX2FsbG9jX2NvaGVyZW50L3FtZW1fYWxsb2MpIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgLyBDTjEwSyBoYXJkd2FyZSAoUENJZSBkZXZpY2VzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAobGlrZSBHQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA3OjU4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMWRlNzgwODAxZWNiYTgwNDQ5OTQ2MjkyMzViMGIwYjBjMzE1ZDNmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDc6NTg6MzIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaFxuaW5kZXggNzc5NDEzYTM4M2I3NC4uMDYxZGQ5MDdmN2ZhNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaFxuQEAgLTcsNiAmIzQzOzcsMTEgQEBcbiAjaWZuZGVmIENPTU1PTl9IXG4gI2RlZmluZSBDT01NT05fSFxuIFxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L2RtYS1tYXAtb3BzLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvZ2ZwLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuJiM0MztcbiAjaW5jbHVkZSBcJiMzNDtydnVfc3RydWN0LmhcJiMzNDtcbiBcbiAjZGVmaW5lIE9UWDJfQUxJR05cdFx0XHQxMjggIC8qIEFsaWduIHRvIGNhY2hlbGluZSAqL1xuQEAgLTQ0LDYgJiM0Mzs0OSw4MyBAQCBzdHJ1Y3QgcW1lbSB7XG4gXHR1MzJcdFx0cXNpemU7XG4gfTtcbiBcbiYjNDM7LyogQnVkZHktYmFja2VkIGNvaGVyZW50IERNQSBhbGxvYyAoT3B0aW9uIDMpOiBwYWdlcyBmcm9tIF9fZ2V0X2ZyZWVfcGFnZXMoKSxcbiYjNDM7ICogRE1BLXJlYWNoYWJsZSBSQU0gdmlhIGRtYV9jb2hlcmVudF9vaygpLCBhbmQgYnVzL1NNTVUgbWFwcGluZ3MgdmlhXG4mIzQzOyAqIGRtYV9tYXBfcGh5cygpIC1cdTAwM2UgaW9tbXVfZG1hX21hcF9waHlzKCkgLVx1MDAzZSBpb21tdV9tYXAoKSBvbiBTTU1VIHN5c3RlbXMuXG4mIzQzOyAqL1xuJiM0MzsjZGVmaW5lIE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTXHRETUFfQVRUUl9SRVFVSVJFX0NPSEVSRU5UXG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgb3R4Ml9kbWFfcGh5c19pbl9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwgcGh5c19hZGRyX3QgcGFkZHIsXG4mIzQzO1x0XHRcdFx0XHQgc2l6ZV90IHNpemUpXG4mIzQzO3tcbiYjNDM7XHR1NjQgbWFzayA9IGRtYV9nZXRfbWFzayhkZXYpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gcGFkZHIgJiM0Mzsgc2l6ZSAtIDEgXHUwMDNjPSBtYXNrO1xuJiM0Mzt9XG4mIzQzO1xuJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgKm90eDJfZG1hX2FsbG9jX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsXG4mIzQzO1x0XHRcdFx0XHQgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZ2ZwKVxuJiM0Mzt7XG4mIzQzO1x0ZG1hX2FkZHJfdCBkbWFfYWRkcjtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4mIzQzO1x0cGh5c19hZGRyX3QgcGFkZHI7XG4mIzQzO1x0dm9pZCAqdmFkZHI7XG4mIzQzO1x0Z2ZwX3QgYWxsb2NfZ2ZwO1xuJiM0MztcbiYjNDM7XHRpZiAoIWRldiB8fCAhZG1hX2hhbmRsZSB8fCAhc2l6ZSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHRpZiAoIWRldl9pc19kbWFfY29oZXJlbnQoZGV2KSlcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcbiYjNDM7XHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcbiYjNDM7XHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbiYjNDM7XHRpZiAob3JkZXIgXHUwMDNlIE1BWF9QQUdFX09SREVSKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuJiM0MztcdGFsbG9jX2dmcCA9IChnZnAgXHUwMDI2IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSkgfFxuJiM0MztcdFx0X19HRlBfWkVSTyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9SRUNMQUlNO1xuJiM0MztcbiYjNDM7XHR2YWRkciA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlcyhhbGxvY19nZnAsIG9yZGVyKTtcbiYjNDM7XHR3aGlsZSAodmFkZHIgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICAgICFvdHgyX2RtYV9waHlzX2luX21hc2soZGV2LCBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKHZhZGRyKSksIHNpemUpKSB7XG4mIzQzO1x0XHRmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7XG4mIzQzO1x0XHRpZiAoYWxsb2NfZ2ZwIFx1MDAyNiBHRlBfRE1BMzIpXG4mIzQzO1x0XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdFx0YWxsb2NfZ2ZwIHw9IEdGUF9ETUEzMjtcbiYjNDM7XHRcdHZhZGRyID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2VzKGFsbG9jX2dmcCwgb3JkZXIpO1xuJiM0MztcdH1cbiYjNDM7XHRpZiAoIXZhZGRyKVxuJiM0MztcdFx0cmV0dXJuIE5VTEw7XG4mIzQzO1xuJiM0MztcdHBhZGRyID0gcGFnZV90b19waHlzKHZpcnRfdG9fcGFnZSh2YWRkcikpO1xuJiM0MztcdGRtYV9hZGRyID0gZG1hX21hcF9waHlzKGRldiwgcGFkZHIsIHNpemUsIERNQV9CSURJUkVDVElPTkFMLFxuJiM0MztcdFx0XHRcdE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTKTtcbiYjNDM7XHRpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfYWRkcikpIHtcbiYjNDM7XHRcdGZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTtcbiYjNDM7XHRcdHJldHVybiBOVUxMO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0KmRtYV9oYW5kbGUgPSBkbWFfYWRkcjtcbiYjNDM7XHRyZXR1cm4gdmFkZHI7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBvdHgyX2RtYV9mcmVlX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsXG4mIzQzO1x0XHRcdFx0XHQgIHZvaWQgKnZhZGRyLCBkbWFfYWRkcl90IGRtYV9oYW5kbGUpXG4mIzQzO3tcbiYjNDM7XHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4mIzQzO1xuJiM0MztcdGlmICghZGV2IHx8ICF2YWRkcilcbiYjNDM7XHRcdHJldHVybjtcbiYjNDM7XG4mIzQzO1x0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XG4mIzQzO1x0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XG4mIzQzO1xuJiM0MztcdGRtYV91bm1hcF9waHlzKGRldiwgZG1hX2hhbmRsZSwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwsXG4mIzQzO1x0XHQgICAgICAgT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlMpO1xuJiM0MztcdGZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgaW5saW5lIGludCBxbWVtX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKipxLFxuIFx0XHRcdCAgICAgaW50IHFzaXplLCBpbnQgZW50cnlfc3opXG4ge1xuQEAgLTYwLDggJiM0MzsxNDIsOCBAQCBzdGF0aWMgaW5saW5lIGludCBxbWVtX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKipxLFxuIFxuIFx0cW1lbS1cdTAwM2VlbnRyeV9zeiA9IGVudHJ5X3N6O1xuIFx0cW1lbS1cdTAwM2VhbGxvY19zeiA9IChxc2l6ZSAqIGVudHJ5X3N6KSAmIzQzOyBPVFgyX0FMSUdOO1xuLVx0cW1lbS1cdTAwM2ViYXNlID0gZG1hX2FsbG9jX2F0dHJzKGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeiwgXHUwMDI2cW1lbS1cdTAwM2Vpb3ZhLFxuLVx0XHRcdFx0ICAgICBHRlBfS0VSTkVMLCBETUFfQVRUUl9GT1JDRV9DT05USUdVT1VTKTtcbiYjNDM7XHRxbWVtLVx1MDAzZWJhc2UgPSBvdHgyX2RtYV9hbGxvY19jb2hlcmVudChkZXYsIHFtZW0tXHUwMDNlYWxsb2Nfc3osIFx1MDAyNnFtZW0tXHUwMDNlaW92YSxcbiYjNDM7XHRcdFx0XHRcdCAgICAgR0ZQX0tFUk5FTCk7XG4gXHRpZiAoIXFtZW0tXHUwMDNlYmFzZSlcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG5AQCAtODAsMTAgJiM0MzsxNjIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcW1lbV9mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKnFtZW0pXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChxbWVtLVx1MDAzZWJhc2UpXG4tXHRcdGRtYV9mcmVlX2F0dHJzKGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeixcbi1cdFx0XHQgICAgICAgcW1lbS1cdTAwM2ViYXNlIC0gcW1lbS1cdTAwM2VhbGlnbixcbi1cdFx0XHQgICAgICAgcW1lbS1cdTAwM2Vpb3ZhIC0gcW1lbS1cdTAwM2VhbGlnbixcbi1cdFx0XHQgICAgICAgRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUyk7XG4mIzQzO1x0XHRvdHgyX2RtYV9mcmVlX2NvaGVyZW50KGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeixcbiYjNDM7XHRcdFx0XHQgICAgICAgcW1lbS1cdTAwM2ViYXNlIC0gcW1lbS1cdTAwM2VhbGlnbixcbiYjNDM7XHRcdFx0XHQgICAgICAgcW1lbS1cdTAwM2Vpb3ZhIC0gcW1lbS1cdTAwM2VhbGlnbik7XG4gXHRkZXZtX2tmcmVlKGRldiwgcW1lbSk7XG4gfVxuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA3OjU4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjhtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIChvdHgyX2RtYV9hbGxvY19jb2hlcmVudC9xbWVtX2FsbG9jKSB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIC8gQ04xMEsgaGFyZHdhcmUgKFBDSWUgZGV2aWNlcykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDFkZTc4MDgwMWVjYmE4MDQ0OTk0NjI5MjM1YjBiMGIwYzMxNWQzZjQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIFNlcCAxIDA3OjU4OjMyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaAppbmRleCA3Nzk0MTNhMzgzYjc0Li4wNjFkZDkwN2Y3ZmE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaAomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaApAQCAtNyw2ICYjNDM7NywxMSBAQAogI2lmbmRlZiBDT01NT05fSAogI2RlZmluZSBDT01NT05fSAogCiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RtYS1tYXBwaW5nLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2RtYS1tYXAtb3BzLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2dmcC5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9tbS5oJmd0OwomIzQzOwogI2luY2x1ZGUgJiMzNDtydnVfc3RydWN0LmgmIzM0OwogCiAjZGVmaW5lIE9UWDJfQUxJR04JCQkxMjggIC8qIEFsaWduIHRvIGNhY2hlbGluZSAqLwpAQCAtNDQsNiAmIzQzOzQ5LDgzIEBAIHN0cnVjdCBxbWVtIHsKIAl1MzIJCXFzaXplOwogfTsKIAomIzQzOy8qIEJ1ZGR5LWJhY2tlZCBjb2hlcmVudCBETUEgYWxsb2MgKE9wdGlvbiAzKTogcGFnZXMgZnJvbSBfX2dldF9mcmVlX3BhZ2VzKCksCiYjNDM7ICogRE1BLXJlYWNoYWJsZSBSQU0gdmlhIGRtYV9jb2hlcmVudF9vaygpLCBhbmQgYnVzL1NNTVUgbWFwcGluZ3MgdmlhCiYjNDM7ICogZG1hX21hcF9waHlzKCkgLSZndDsgaW9tbXVfZG1hX21hcF9waHlzKCkgLSZndDsgaW9tbXVfbWFwKCkgb24gU01NVSBzeXN0ZW1zLgomIzQzOyAqLwomIzQzOyNkZWZpbmUgT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlMJRE1BX0FUVFJfUkVRVUlSRV9DT0hFUkVOVAomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBvdHgyX2RtYV9waHlzX2luX21hc2soc3RydWN0IGRldmljZSAqZGV2LCBwaHlzX2FkZHJfdCBwYWRkciwKJiM0MzsJCQkJCSBzaXplX3Qgc2l6ZSkKJiM0Mzt7CiYjNDM7CXU2NCBtYXNrID0gZG1hX2dldF9tYXNrKGRldik7CiYjNDM7CiYjNDM7CXJldHVybiBwYWRkciAmIzQzOyBzaXplIC0gMSAmbHQ7PSBtYXNrOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgaW5saW5lIHZvaWQgKm90eDJfZG1hX2FsbG9jX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsCiYjNDM7CQkJCQkgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZ2ZwKQomIzQzO3sKJiM0MzsJZG1hX2FkZHJfdCBkbWFfYWRkcjsKJiM0MzsJdW5zaWduZWQgaW50IG9yZGVyOwomIzQzOwlwaHlzX2FkZHJfdCBwYWRkcjsKJiM0MzsJdm9pZCAqdmFkZHI7CiYjNDM7CWdmcF90IGFsbG9jX2dmcDsKJiM0MzsKJiM0MzsJaWYgKCFkZXYgfHwgIWRtYV9oYW5kbGUgfHwgIXNpemUpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJaWYgKCFkZXZfaXNfZG1hX2NvaGVyZW50KGRldikpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsKJiM0MzsJc2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7CiYjNDM7CW9yZGVyID0gZ2V0X29yZGVyKHNpemUpOwomIzQzOwlpZiAob3JkZXIgJmd0OyBNQVhfUEFHRV9PUkRFUikKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwomIzQzOwlhbGxvY19nZnAgPSAoZ2ZwICZhbXA7IH4oX19HRlBfRE1BIHwgX19HRlBfRE1BMzIgfCBfX0dGUF9ISUdITUVNKSkgfAomIzQzOwkJX19HRlBfWkVSTyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9SRUNMQUlNOwomIzQzOwomIzQzOwl2YWRkciA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlcyhhbGxvY19nZnAsIG9yZGVyKTsKJiM0MzsJd2hpbGUgKHZhZGRyICZhbXA7JmFtcDsKJiM0MzsJICAgICAgICFvdHgyX2RtYV9waHlzX2luX21hc2soZGV2LCBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKHZhZGRyKSksIHNpemUpKSB7CiYjNDM7CQlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7CiYjNDM7CQlpZiAoYWxsb2NfZ2ZwICZhbXA7IEdGUF9ETUEzMikKJiM0MzsJCQlyZXR1cm4gTlVMTDsKJiM0MzsJCWFsbG9jX2dmcCB8PSBHRlBfRE1BMzI7CiYjNDM7CQl2YWRkciA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlcyhhbGxvY19nZnAsIG9yZGVyKTsKJiM0MzsJfQomIzQzOwlpZiAoIXZhZGRyKQomIzQzOwkJcmV0dXJuIE5VTEw7CiYjNDM7CiYjNDM7CXBhZGRyID0gcGFnZV90b19waHlzKHZpcnRfdG9fcGFnZSh2YWRkcikpOwomIzQzOwlkbWFfYWRkciA9IGRtYV9tYXBfcGh5cyhkZXYsIHBhZGRyLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCwKJiM0MzsJCQkJT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlMpOwomIzQzOwlpZiAoZG1hX21hcHBpbmdfZXJyb3IoZGV2LCBkbWFfYWRkcikpIHsKJiM0MzsJCWZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTsKJiM0MzsJCXJldHVybiBOVUxMOwomIzQzOwl9CiYjNDM7CiYjNDM7CSpkbWFfaGFuZGxlID0gZG1hX2FkZHI7CiYjNDM7CXJldHVybiB2YWRkcjsKJiM0Mzt9CiYjNDM7CiYjNDM7c3RhdGljIGlubGluZSB2b2lkIG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSwKJiM0MzsJCQkJCSAgdm9pZCAqdmFkZHIsIGRtYV9hZGRyX3QgZG1hX2hhbmRsZSkKJiM0Mzt7CiYjNDM7CXVuc2lnbmVkIGludCBvcmRlcjsKJiM0MzsKJiM0MzsJaWYgKCFkZXYgfHwgIXZhZGRyKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwlzaXplID0gUEFHRV9BTElHTihzaXplKTsKJiM0MzsJb3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7CiYjNDM7CiYjNDM7CWRtYV91bm1hcF9waHlzKGRldiwgZG1hX2hhbmRsZSwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwsCiYjNDM7CQkgICAgICAgT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlMpOwomIzQzOwlmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7CiYjNDM7fQomIzQzOwogc3RhdGljIGlubGluZSBpbnQgcW1lbV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBxbWVtICoqcSwKIAkJCSAgICAgaW50IHFzaXplLCBpbnQgZW50cnlfc3opCiB7CkBAIC02MCw4ICYjNDM7MTQyLDggQEAgc3RhdGljIGlubGluZSBpbnQgcW1lbV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBxbWVtICoqcSwKIAogCXFtZW0tJmd0O2VudHJ5X3N6ID0gZW50cnlfc3o7CiAJcW1lbS0mZ3Q7YWxsb2Nfc3ogPSAocXNpemUgKiBlbnRyeV9zeikgJiM0MzsgT1RYMl9BTElHTjsKLQlxbWVtLSZndDtiYXNlID0gZG1hX2FsbG9jX2F0dHJzKGRldiwgcW1lbS0mZ3Q7YWxsb2Nfc3osICZhbXA7cW1lbS0mZ3Q7aW92YSwKLQkJCQkgICAgIEdGUF9LRVJORUwsIERNQV9BVFRSX0ZPUkNFX0NPTlRJR1VPVVMpOwomIzQzOwlxbWVtLSZndDtiYXNlID0gb3R4Ml9kbWFfYWxsb2NfY29oZXJlbnQoZGV2LCBxbWVtLSZndDthbGxvY19zeiwgJmFtcDtxbWVtLSZndDtpb3ZhLAomIzQzOwkJCQkJICAgICBHRlBfS0VSTkVMKTsKIAlpZiAoIXFtZW0tJmd0O2Jhc2UpCiAJCXJldHVybiAtRU5PTUVNOwogCkBAIC04MCwxMCAmIzQzOzE2Miw5IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBxbWVtX2ZyZWUoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcW1lbSAqcW1lbSkKIAkJcmV0dXJuOwogCiAJaWYgKHFtZW0tJmd0O2Jhc2UpCi0JCWRtYV9mcmVlX2F0dHJzKGRldiwgcW1lbS0mZ3Q7YWxsb2Nfc3osCi0JCQkgICAgICAgcW1lbS0mZ3Q7YmFzZSAtIHFtZW0tJmd0O2FsaWduLAotCQkJICAgICAgIHFtZW0tJmd0O2lvdmEgLSBxbWVtLSZndDthbGlnbiwKLQkJCSAgICAgICBETUFfQVRUUl9GT1JDRV9DT05USUdVT1VTKTsKJiM0MzsJCW90eDJfZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBxbWVtLSZndDthbGxvY19zeiwKJiM0MzsJCQkJICAgICAgIHFtZW0tJmd0O2Jhc2UgLSBxbWVtLSZndDthbGlnbiwKJiM0MzsJCQkJICAgICAgIHFtZW0tJmd0O2lvdmEgLSBxbWVtLSZndDthbGlnbik7CiAJZGV2bV9rZnJlZShkZXYsIHFtZW0pOwogfQogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA3OjU4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NTQKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxMDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIG9mIHRoaXMgcGF0Y2guIEl0JiMzOTtzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaGAuIFJpZ2h0LCB0aGF0JiMzOTtzIHRoZSBPY3Rlb25UWDIsIGEgTWFydmVsbCBuZXR3b3JrIGRyaXZlciwgc3BlY2lmaWNhbGx5IGRlYWxpbmcgd2l0aCB0aGUgUlZVIChSZXNvdXJjZSBWaXJ0dWFsaXphdGlvbiBVbml0KSBhbmQgQUYgKEFkbWluIEZ1bmN0aW9uKSBhc3BlY3RzIG9mIHRoYXQgU29DLiBHb3QgaXQuIE5vdywgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2Ygd2hhdCB0aGUgT2N0ZW9uVFgyIGlzIHJlYWxseSBhYm91dCwgYmV5b25kIHRoZSBiYXNpYyBkZXNjcmlwdGlvbi4KCkkmIzM5O2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgS2NvbmZpZyBhbmQgc2VlIHdoZXJlIHRoaXMgZHJpdmVyIGlzIHVzZWQuIENvbnRleHQgaXMga2V5LCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdpZGVseSB0aGlzIGNvbXBvbmVudCBpcyBkZXBsb3llZCBhbmQgY29uZmlndXJlZC4gVGhpcyBzaG91bGQgdGVsbCBtZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGhlIG92ZXJhbGwgcHVycG9zZSBvZiB0aGlzIHBhdGNoLiBMZXQmIzM5O3Mgc2VlIGlmIHRoaXMgcGF0Y2ggY291bGQgaW50cm9kdWNlIGFueSByZWdyZXNzaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wMSAwNzo1OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtPQ1RFT05UWDImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo2OmNvbmZpZyBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy03LVx0dHJpc3RhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoxMTpcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMi1cdHNlbGVjdCBORVRfREVWTElOS1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc9MjI9Y29uZmlnIE5EQ19ESVNfRFlOQU1JQ19DQUNISU5HXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTIzLVx0Ym9vbCBcJiMzNDtEaXNhYmxlIGNhY2hpbmcgb2YgZHluYW1pYyBlbnRyaWVzIGluIE5EQ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoyNDpcdGRlcGVuZHMgb24gT0NURU9OVFgyX0FGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTI1LVx0ZGVmYXVsdCBuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzE6Y29uZmlnIE9DVEVPTlRYMl9QRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0zMi1cdHRyaXN0YXRlIFwmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzM6XHRzZWxlY3QgT0NURU9OVFgyX01CT1hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzQtXHRzZWxlY3QgTkVUX0RFVkxJTktcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NTpjb25maWcgT0NURU9OVFgyX1ZGXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7TWFydmVsbCBPY3Rlb25UWDIgTklDIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ3Olx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDgtXHRoZWxwXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz01MT1jb25maWcgUlZVX0VTV0lUQ0hcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNTItXHR0cmlzdGF0ZSBcJiMzNDtNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjUzOlx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNTQtXHRkZWZhdWx0IG1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICYjNDM7PSBhZi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL01ha2VmaWxlOjc6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9BRikgJiM0Mzs9IGFmL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfT0NURU9OVFgyX1BGKSAmIzQzOz0gbmljL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlPTY9Y2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICYjNDM7PSBydnVfbWJveC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICYjNDM7PSBydnVfYWYub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGUtOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYz02Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgY2d4X2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYzo2NzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9DR1gpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYy02OC1cdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9DTjEwS19SUE0sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY2d4LmgtMTUtIC8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaDoxNjojZGVmaW5lXHRQQ0lfREVWSURfT0NURU9OVFgyX0NHWFx0XHQweEEwNTlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5oLTE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xNTQ9REVGSU5FX1NIT1dfQVRUUklCVVRFKG5wY19tY2FtX2xheW91dCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE1NjojZGVmaW5lIF9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVx0XHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTU3LXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSAjIyBfZm9wcyA9IHtcdFx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNjQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTY1OiNkZWZpbmUgREVGSU5FX09DVEVPTlRYMl9ERUJVR0ZTX0FUVFJJQlVURV9XSVRIX1NJWkUoX19uYW1lLCBfX3NpemUpXHRcdFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY2LXN0YXRpYyBpbnQgX19uYW1lICMjIF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVx0XHRcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzAtfVx0XHRcdFx0XHRcdFx0XHRcdFx0XFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYzoxNzE6X19PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfRk9QUyhfX25hbWUpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTcyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xODE9c3RhdGljIGludCBucGNfbWNhbV9kc3RhdHNfc2hvdyhzdHJ1Y3Qgc2VxX2ZpbGUgKnMsIHZvaWQgKnVudXNlZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQyLSNkZWZpbmUgVE9UQUxfU1ogKE1BWF9OVU1fQkFOS1MgKiBNQVhfTlVNX1NVQl9CQU5LUyAqIE1BWF9TVUJCQU5LX0RFUFRIICogNjQpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MjQzOkRFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKG5wY19tY2FtX2RzdGF0cywgVE9UQUxfU1opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI0NC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0yNDU9c3RhdGljIGludCBucGNfbWNhbV9taXNtYXRjaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0yODQtLyogXCYjMzQ7JXVcXHQlZFxcdCV1XFxuXCYjMzQ7IG5lZWRzIGxlc3MgdGhhbiA2NCBjaGFyYWN0ZXJzIHRvIHByaW50LiAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI4NTpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9taXNtYXRjaCwgVE9UQUxfU1opO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4Ni1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjIxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9QVFBcdFx0XHQweEEwMENcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTIyLSNkZWZpbmUgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85OHh4X1BUUFx0XHQweEIxMDBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yNy0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE9fUFRQXHQweEI2MDBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjI4OiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9SU1RcdFx0XHQweEEwODVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI5LSNkZWZpbmUgUENJX0RFVklEX0NOMTBLX1BUUFx0XHRcdDB4QTA5RVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jPTU4OT1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcHRwX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTA6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5MS1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTItXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTM6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5NC1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTUtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTZYWF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTY6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Ny1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTgtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWF9QVFApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTk6XHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMC1cdFx0XHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDEtXHRcdFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTVYWE5fUFRQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjAyOlx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDMtXHRcdFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA0LVx0XHRcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk1TU1fUFRQKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjA1Olx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDYtXHRcdFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTQ0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBydnVfaWRfdGFibGVbXSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ1Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikgfSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTQ2LVx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz05Mjc9c3RhdGljIHZvaWQgcnZ1X2dldF9sYmtfYnVmc2l6ZShzdHJ1Y3QgcnZ1ICpydnUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtOTMzLVx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6OTM0Olx0XHRcdCAgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLLCBwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTkzNS1cdGlmICghcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0zNDQ3PWludCBydnVfZ2V0X251bV9sYmtfY2hhbnModm9pZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDUyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MzQ1MzpcdHBkZXYgPSBwY2lfZ2V0X2RldmljZShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9MQkssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDU0LVx0XHRcdCAgICAgIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oLTIzLS8qIFBDSSBkZXZpY2UgSURzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNDojZGVmaW5lXHRQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlx0XHQweEEwNjVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5oOjI1OiNkZWZpbmVcdFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLXHRcdFx0MHhBMDYxXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC0yNi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYz0zOTI9c3RhdGljIHZvaWQgcnZ1X2xia19zZXRfY2hhbm5lbHMoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jLTQxNS1cdFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmM6NDE2Olx0XHRcdFx0ICAgICAgUENJX0RFVklEX09DVEVPTlRYMl9MQkssIHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE3LVx0XHRpZiAoIXBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYz0yODAwPXN0YXRpYyB2b2lkIHJ2dV9kYmdfbnBhX2luaXQoc3RydWN0IHJ2dSAqcnZ1KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgxOS0vKiBQZXItbG1hYyBDR1ggZGVidWdmcyBmaWxlcyBuZWVkIGJvdGggUlZVIGFuZCBDR1ggaGFuZGxlOyBpbm9kZS1cdTAwM2VpX3ByaXZhdGVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM6MjgyMDogKiBwb2ludHMgaGVyZSBzbyBzZXFfZmlsZSBvcHMgYXZvaWQgcGNpX2dldF9kZXZpY2UoUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODIxLSAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZS01LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgJiM0Mzs9IHJ2dV9uaWNwZi5vIG90eDJfcHRwLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICYjNDM7PSBydnVfbmljdmYubyBvdHgyX3B0cC5vXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICYjNDM7PSBydnVfcmVwLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC00Mi0vKiBQQ0kgZGV2aWNlIElEcyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDM6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9QRiAgICAgICAgICAgICAgMHhBMDYzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXHRcdDB4QTA2NFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXHRcdDB4QTBGOFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNTAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFx0XHQweEEwRjdcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oPTU5Nz1zdGF0aWMgaW5saW5lIGJvb2wgaXNfb3R4Ml9sYmt2ZihzdHJ1Y3QgcGNpX2RldiAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1OTk6XHRyZXR1cm4gKHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MDAtXHRcdChwZGV2LVx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfUlZVX1JFUCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC02MTYte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NjE3Olx0cmV0dXJuIHBkZXYtXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTYxOC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYz0zNj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml9wZl9pZF90YWJsZVtdID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYzozNzpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTM4LVx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jPTIyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBvdHgyX3ZmX2lkX3RhYmxlW10gPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjIzOlx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYzoyNDpcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfVkYpIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1Olx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVApIH0sXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jLTI2LVx0eyB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDc6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTU4OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgTWVtb3J5IEFsbG9jYXRpb24gYW5kIERyaXZlciBEZXBlbmRlbmN5KioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIHRob3NlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uczogYHFtZW1fYWxsb2NgIGFuZCBgcW1lbV9mcmVlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRoZWlyIGluZmx1ZW5jZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBkcml2ZXIgZGlyZWN0b3J5IC0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AuICBUaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYmVpbmcgaGFuZGxlZCBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIG5ldHdvcmsgZHJpdmVyLCBhbmQgaG93IGl04oCZcyBiZWluZyBkZWFsbG9jYXRlZC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgY2F0Y2hpbmcgYW55IHBvdGVudGlhbCBtZW1vcnkgbGVha3Mgb3IgaW5lZmZpY2llbmNpZXMuIEFsc28sIHVuZGVyc3RhbmRpbmcgKndobyogaXMgdXNpbmcgdGhlIGFsbG9jYXRvciB3aWxsIGhlbHAgZGVmaW5lIHRoZSBzY29wZSBvZiBwb3RlbnRpYWwgY29kZSBjaGFuZ2VzIGlmIG5lY2Vzc2FyeS4KCkJleW9uZCB0aG9zZSBmdW5jdGlvbiBjYWxscywgSSYjMzk7bGwgYWxzbyBiZSBzZWFyY2hpbmcgZm9yIGluc3RhbmNlcyBvZiBgY29tbW9uLmhgIGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gT2Z0ZW4gdGhpcyBoZWFkZXIgd2lsbCBpbmNsdWRlIGRlZmluaXRpb25zIHJlcXVpcmVkIGJ5IGNvZGUgdXNpbmcgdGhlc2UgZnVuY3Rpb25zLCBvciBpbiBzb21lIGNhc2VzIGV2ZW4gKmRlZmluZSogdGhlIGZ1bmN0aW9ucyB0aGVtc2VsdmVzLiBVbmRlcnN0YW5kaW5nIHdoZXJlIGBjb21tb24uaGAgaXMgdXNlZCB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIHRvIGRlZmluZSB0aGUgZGVwZW5kZW5jeSBncmFwaCBvZiB0aGUgb3RoZXIgZmlsZXMgaW4gdGhlIHNhbWUgZHJpdmVyIGRpcmVjdG9yeSwgYW5kIHBvc3NpYmx5IGV4dGVybmFsIGRyaXZlciBmaWxlcy4gSXQmIzM5O3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggZHJpdmVyIGNvZGUsIGFzIGl0IHNldHMgdGhlIGNvbnRleHQuIFRoaXMgc3RlcCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgb2YgcXVpY2tseSBnZXR0aW5nIGEgaGlnaCBsZXZlbCBvZiB0aGUgZHJpdmVyJiMzOTtzIGlubmVyIHdvcmtpbmdzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA4OjAzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3FtZW1fYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM9MjY4PXN0YXRpYyBpbnQgcnZ1X2FsbG9jX21ib3hfbWVtb3J5KHN0cnVjdCBydnUgKnJ2dSwgaW50IHR5cGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtMjg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6Mjg4Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZtYm94X2FkZHIsIG5kZXZzLCBtYm94X3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtMjg5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYz00MDg9aW50IHJ2dV9hbGxvY19jaW50X3FpbnRfbWVtKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9wZnZmICpwZnZmLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTQyNy1cdGh3Y3R4X3NpemUgPSAxVUwgXHUwMDNjXHUwMDNjICgoY3R4X2NmZyBcdTAwM2VcdTAwM2UgMjQpIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6NDI4Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZwZnZmLVx1MDAzZWNxX2ludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYy00MjktXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTQzOC1cdGh3Y3R4X3NpemUgPSAxVUwgXHUwMDNjXHUwMDNjICgoY3R4X2NmZyBcdTAwM2VcdTAwM2UgMjApIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6NDM5Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZwZnZmLVx1MDAzZW5peF9xaW50c19jdHgsIHFpbnRzLCBod2N0eF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTQ0MC1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmg9MTEzPXN0YXRpYyBpbmxpbmUgdm9pZCBvdHgyX2RtYV9mcmVlX2NvaGVyZW50KHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmgtMTI4LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmg6MTI5OnN0YXRpYyBpbmxpbmUgaW50IHFtZW1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcW1lbSAqKnEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaC0xMzAtXHRcdFx0ICAgICBpbnQgcXNpemUsIGludCBlbnRyeV9zeilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYz0xMjM2PWludCBydnVfYXFfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3QgYWRtaW5fcXVldWUgKiphZF9xdWV1ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xMjQ3LVx0LyogQWxsb2MgbWVtb3J5IGZvciBpbnN0cnVjdGlvbnMgaS5lIEFRICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzoxMjQ4Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZhcS1cdTAwM2VpbnN0LCBxc2l6ZSwgaW5zdF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTEyNDktXHRpZiAoZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI1NC1cdC8qIEFsbG9jIG1lbW9yeSBmb3IgcmVzdWx0cyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6MTI1NTpcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2YXEtXHUwMDNlcmVzLCBxc2l6ZSwgcmVzX3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI1Ni1cdGlmIChlcnIpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9OTQ0PXN0YXRpYyBpbnQgbml4bGZfcnNzX2N0eF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTk1Ny1cdC8qIEFsbG9jIE5JWCBSU1MgSFcgY29udGV4dCBtZW1vcnkgYW5kIGNvbmZpZyB0aGUgYmFzZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjk1ODpcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2cGZ2Zi1cdTAwM2Vyc3NfY3R4LCBudW1faW5kaWNlcywgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtOTU5LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MTUxMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNTg2LVx0aHdjdHhfc2l6ZSA9IDFVTCBcdTAwM2NcdTAwM2MgKChjdHhfY2ZnIFx1MDAzZVx1MDAzZSA0KSBcdTAwMjYgMHhGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNTg3Olx0cmMgPSBxbWVtX2FsbG9jKHJ2dS1cdTAwM2VkZXYsIFx1MDAyNnBmdmYtXHUwMDNlcnFfY3R4LCByZXEtXHUwMDNlcnFfY250LCBod2N0eF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNTg4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNjA1LVx0aHdjdHhfc2l6ZSA9IDFVTCBcdTAwM2NcdTAwM2MgKGN0eF9jZmcgXHUwMDI2IDB4Rik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTYwNjpcdHJjID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZwZnZmLVx1MDAzZXNxX2N0eCwgcmVxLVx1MDAzZXNxX2NudCwgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTYwNy1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTYyMy1cdGh3Y3R4X3NpemUgPSAxVUwgXHUwMDNjXHUwMDNjICgoY3R4X2NmZyBcdTAwM2VcdTAwM2UgOCkgXHUwMDI2IDB4Rik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTYyNDpcdHJjID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZwZnZmLVx1MDAzZWNxX2N0eCwgcmVxLVx1MDAzZWNxX2NudCwgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTYyNS1cdGlmIChyYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTY1MS1cdGh3Y3R4X3NpemUgPSAxVUwgXHUwMDNjXHUwMDNjICgoY3R4X2NmZyBcdTAwM2VcdTAwM2UgMjQpIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjE2NTI6XHRyYyA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2cGZ2Zi1cdTAwM2VjcV9pbnRzX2N0eCwgcWludHMsIGh3Y3R4X3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NTMtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NjUtXHRod2N0eF9zaXplID0gMVVMIFx1MDAzY1x1MDAzYyAoKGN0eF9jZmcgXHUwMDNlXHUwMDNlIDIwKSBcdTAwMjYgMHhGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNjY2Olx0cmMgPSBxbWVtX2FsbG9jKHJ2dS1cdTAwM2VkZXYsIFx1MDAyNnBmdmYtXHUwMDNlbml4X3FpbnRzX2N0eCwgcWludHMsIGh3Y3R4X3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NjctXHRpZiAocmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM3MjI9c3RhdGljIGludCBuaXhfc2V0dXBfbWNhc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3Qgbml4X2h3ICpuaXhfaHcsIGludCBibGthZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNzQ1LVx0LyogQWxsb2MgbWVtb3J5IGZvciBtdWx0aWNhc3QvbWlycm9yIHJlcGxpY2F0aW9uIGVudHJpZXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzozNzQ2Olx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXHUwMDNlZGV2LCBcdTAwMjZtY2FzdC1cdTAwM2VtY2VfY3R4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM3NDctXHRcdFx0IG1jYXN0LVx1MDAzZW1jZV9jb3VudGVyW05JWF9NQ0FTVF9JTkdSRVNTXS5tYXgsIHNpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNzYyLVx0c2l6ZSA9IHJ2dV9yZWFkNjQocnZ1LCBibGthZGRyLCBOSVhfQUZfTUNfTUlSUk9SX0NPTlNUKSBcdTAwMjYgMHhGRkZGO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjM3NjM6XHRlcnIgPSBxbWVtX2FsbG9jKHJ2dS1cdTAwM2VkZXYsIFx1MDAyNm1jYXN0LVx1MDAzZW1jYXN0X2J1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNzY0LVx0XHRcdCAoOFVMIFx1MDAzY1x1MDAzYyBNQ19CVUZfQ05UKSwgc2l6ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jPTMyNz1pbnQgcnZ1X21ib3hfaGFuZGxlcl9ucGFfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zNjYtXHRod2N0eF9zaXplID0gMVVMIFx1MDAzY1x1MDAzYyAoY3R4X2NmZyBcdTAwMjYgMHhGKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYzozNjc6XHRlcnIgPSBxbWVtX2FsbG9jKHJ2dS1cdTAwM2VkZXYsIFx1MDAyNnBmdmYtXHUwMDNlYXVyYV9jdHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzY4LVx0XHRcdCBOUEFfQVVSQV9DT1VOVChyZXEtXHUwMDNlYXVyYV9zeiksIGh3Y3R4X3NpemUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zNzgtXHRod2N0eF9zaXplID0gMVVMIFx1MDAzY1x1MDAzYyAoKGN0eF9jZmcgXHUwMDNlXHUwMDNlIDQpIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jOjM3OTpcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2cGZ2Zi1cdTAwM2Vwb29sX2N0eCwgcmVxLVx1MDAzZW5yX3Bvb2xzLCBod2N0eF9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zODAtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zOTMtXHRod2N0eF9zaXplID0gMVVMIFx1MDAzY1x1MDAzYyAoKGN0eF9jZmcgXHUwMDNlXHUwMDNlIDgpIFx1MDAyNiAweEYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jOjM5NDpcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVx1MDAzZWRldiwgXHUwMDI2cGZ2Zi1cdTAwM2VucGFfcWludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzk1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuYz00Mz1pbnQgY24xMGtfbG10c3RfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmMtNjUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuYzo2NjpcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cdTAwM2VkZXYsIFx1MDAyNnBmdmYtXHUwMDNlZHluY19sbXQsIHBmdmYtXHUwMDNldG90X2xtdF9saW5lcyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEway5jLTY3LVx0XHRcdCBMTVRfTElORV9TSVpFKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGtfaXBzZWMuYz02NjY9c3RhdGljIGludCBjbjEwa19pcHNlY19vdXRiX2FkZF9zdGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEwa19pcHNlYy5jLTY4MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEwa19pcHNlYy5jOjY4MTpcdGVyciA9IHFtZW1fYWxsb2MocGYtXHUwMDNlZGV2LCBcdTAwMjZzYV9pbmZvLCBwZi1cdTAwM2VpcHNlYy5zYV9zaXplLCBPVFgyX0FMSUdOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEwa19pcHNlYy5jLTY4Mi1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMjBrLmM9NTIwPXN0YXRpYyBpbnQgY24yMGtfYXVyYV9hcV9pbml0KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGF1cmFfaWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMjBrLmMtNTMzLVx0aWYgKCFwb29sLVx1MDAzZWZjX2FkZHIpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjIway5jOjUzNDpcdFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVx1MDAzZWRldiwgXHUwMDI2cG9vbC1cdTAwM2VmY19hZGRyLCAxLCBPVFgyX0FMSUdOKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjIway5jLTUzNS1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYz01OTc9c3RhdGljIGludCBjbjIwa19wb29sX2FxX2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmLCB1MTYgcG9vbF9pZCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYy02MDctXHQvKiBBbGxvYyBtZW1vcnkgZm9yIHN0YWNrIHdoaWNoIGlzIHVzZWQgdG8gc3RvcmUgYnVmZmVyIHBvaW50ZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYzo2MDg6XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZwb29sLVx1MDAzZXN0YWNrLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMjBrLmMtNjA5LVx0XHRcdCBzdGFja19wYWdlcywgcGZ2Zi1cdTAwM2Vody5zdGFja19wZ19ieXRlcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM9OTYxPWludCBvdHgyX3NxX2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmLCB1MTYgcWlkeCwgdTE2IHNxYl9hdXJhKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTk3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjk3NDpcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cdTAwM2VkZXYsIFx1MDAyNnNxLVx1MDAzZXNxZSwgMSwgc3EtXHUwMDNlc3FlX3NpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtOTc1LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05OTEtXHQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjk5MjpcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cdTAwM2VkZXYsIFx1MDAyNnNxLVx1MDAzZXNxZV9yaW5nLCBxc2V0LVx1MDAzZXNxZV9jbnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05OTMtXHRcdFx0IHNxLVx1MDAzZXNxZV9zaXplICogMik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtOTk2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM6OTk3Olx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVx1MDAzZWRldiwgXHUwMDI2c3EtXHUwMDNlY3B0X3Jlc3AsIHFzZXQtXHUwMDNlc3FlX2NudCwgNjQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtOTk4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMDAxLVx0aWYgKHFpZHggXHUwMDNjIHBmdmYtXHUwMDNlaHcudHhfcXVldWVzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxMDAyOlx0XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZzcS1cdTAwM2V0c29faGRycywgcXNldC1cdTAwM2VzcWVfY250LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtMTAwMy1cdFx0XHRcdCBUU09fSEVBREVSX1NJWkUpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwMTMtXHRpZiAocGZ2Zi1cdTAwM2VwdHAgXHUwMDI2XHUwMDI2IHFpZHggXHUwMDNjIHBmdmYtXHUwMDNlaHcudHhfcXVldWVzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxMDE0Olx0XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZzcS1cdTAwM2V0aW1lc3RhbXBzLCBxc2V0LVx1MDAzZXNxZV9jbnQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMDE1LVx0XHRcdFx0IHNpemVvZigqc3EtXHUwMDNldGltZXN0YW1wcykpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jPTEwNTE9aW50IG90eDJfY3FfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBxaWR4KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwOTktXHQvKiBBbGxvY2F0ZSBtZW1vcnkgZm9yIENRRXMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjExMDA6XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZjcS1cdTAwM2VjcWUsIGNxLVx1MDAzZWNxZV9jbnQsIGNxLVx1MDAzZWNxZV9zaXplKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTExMDEtXHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jPTEzNzY9aW50IG90eDJfYXVyYV9hcV9pbml0KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGF1cmFfaWQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtMTM4OC1cdGlmICghcG9vbC1cdTAwM2VmY19hZGRyKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxMzg5Olx0XHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXHUwMDNlZGV2LCBcdTAwMjZwb29sLVx1MDAzZWZjX2FkZHIsIDEsIE9UWDJfQUxJR04pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtMTM5MC1cdFx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYz0xNDYwPWludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTE0NzAtXHQvKiBBbGxvYyBtZW1vcnkgZm9yIHN0YWNrIHdoaWNoIGlzIHVzZWQgdG8gc3RvcmUgYnVmZmVyIHBvaW50ZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxNDcxOlx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVx1MDAzZWRldiwgXHUwMDI2cG9vbC1cdTAwM2VzdGFjayxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTE0NzItXHRcdFx0IHN0YWNrX3BhZ2VzLCBwZnZmLVx1MDAzZWh3LnN0YWNrX3BnX2J5dGVzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTU3OT1zdGF0aWMgdm9pZCAqY24yMGtfcGZ2Zl9tYm94X2FsbG9jKHN0cnVjdCBvdHgyX25pYyAqcGYsIGludCBudW12ZnMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjU4NDpcdGVyciA9IHFtZW1fYWxsb2MoXHUwMDI2cGYtXHUwMDNlcGRldi1cdTAwM2VkZXYsIFx1MDAyNm1ib3hfYWRkciwgbnVtdmZzLCBNQk9YX1NJWkUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy01ODUtXHRpZiAoZXJyKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDg6MDM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUzNDYKCQkJCQkJCW91dHB1dDogMTM4CgkJCQkJCQl0aG91Z2h0czogMTA4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aEZ1enppbmcgQXNzZXNzbWVudDogTWFydmVsbCBPY3Rlb25UWDIgRHJpdmVyIENoYW5nZXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gVGhlIGluc3RydWN0aW9ucyBhcmUgY2xlYXI6IGlmIHRoZSBwYXRjaCB0b3VjaGVzIGNvZGUgdGhhdCYjMzk7cyBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgdGhlbiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLiBUaGF0IG1lYW5zIGZvY3VzaW5nIG9uIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4KCk15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgKHNwZWNpZmljYWxseSBgT0NURU9OVFgyX0FGYCwgYE9DVEVPTlRYMl9QRmAsIGBPQ1RFT05UWDJfVkZgKS4gSSBrbm93IHRoaXMgaXMgb2Z0ZW4gdXNlZCBpbiBTbWFydE5JQyBvciBTb0MgYXBwbGljYXRpb25zLCB3aGljaCBpcyBhIHJlZCBmbGFnLiBMZXQmIzM5O3Mgc3RhcnQgYnkgbG9va2luZyBpbnRvIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9gLgoKQSBxdWljayBjaGVjayBvZiB0aGUgYEtjb25maWdgIGNvbmZpcm1zIGl0OiAmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIFJWVSBBZG1pbiBGdW5jdGlvbiBkcml2ZXIsJiMzNDsgJiMzNDtNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgUGh5c2ljYWwgRnVuY3Rpb24gZHJpdmVyLCYjMzQ7IGFuZCAmIzM0O01hcnZlbGwgT2N0ZW9uVFgyIE5JQyBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlci4mIzM0OyBTb3VuZHMgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgaGFyZHdhcmUgYWxyaWdodC4gTm93LCBsZXQmIzM5O3MgdmVyaWZ5IHRob3NlIGRldmljZSBJRHMuLi4gIFl1cCwgVmVuZG9yIElEIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgKDB4MTc3ZCkuIEFuZCB0aGUgZGV2aWNlIElEcyBwb2ludCB0byB0aGUgYE9DVEVPTlRYMmAgc2VyaWVzIOKAkyBgUlZVX0FGYCwgYENHWGAsIGBMQktgLCBgUlZVX1BGYCwgYW5kIGBSVlVfVkZgLiBUaGVzZSBhcmUgZGVmaW5pdGVseSBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgKGFuZCBDTjEwSyAvIENOMjBLKSBuZXR3b3JrIHByb2Nlc3NpbmcgdW5pdCAvIFNtYXJ0TklDIC8gU29DIFBDSWUgZGV2aWNlcy4KCk9rYXksIHRoaXMgaXMgcHJldHR5IGNvbmNsdXNpdmUuIFN0YW5kYXJkIFFFTVUgKmRvZXNuJiMzOTt0KiBlbXVsYXRlIHRoZXNlIGRldmljZXMuIFRoZXkgcmVxdWlyZSB0aGUgYWN0dWFsIHBoeXNpY2FsIENhdml1bS9NYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZSwgb3Igc2ltaWxhciBzaWxpY29uIGxpa2UgQ045eHh4L0NOMTB4eHgvQ04yMHh4eC4gSSBrbm93IGZyb20gZXhwZXJpZW5jZSB0aGF0IHRoZXJlIGFyZSBubyBnZW5lcmljIG9yIHNvZnR3YXJlIGVtdWxhdGlvbiBtb2RlbHMgd2l0aGluIFFFTVUuCgpOb3csIGxldCYjMzk7cyByZXZpZXcgdGhlIGd1aWRlbGluZSBhZ2FpbjogJiMzNDstIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4mIzM0OyBNYXJ2ZWxsIE9jdGVvblRYMiwgaW4gdGhpcyBjYXNlLCBmaXRzIHRoYXQgZGVmaW5pdGlvbiBwZXJmZWN0bHkuCgpOb3cgZm9yIHRoZSBwYXRjaCBpdHNlbGYuIEl0IG1vZGlmaWVkIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaGAuIEl0IGFkZGVkIGBvdHgyX2RtYV9waHlzX2luX21hc2tgLCBgb3R4Ml9kbWFfYWxsb2NfY29oZXJlbnRgLCBgb3R4Ml9kbWFfZnJlZV9jb2hlcmVudGAsIGFuZCByZXBsYWNlZCBjYWxscyB0byBgZG1hX2FsbG9jX2F0dHJzYCBhbmQgYGRtYV9mcmVlX2F0dHJzYCB3aXRoIGBvdHgyX2RtYV9hbGxvY19jb2hlcmVudGAgYW5kIGBvdHgyX2RtYV9mcmVlX2NvaGVyZW50YC4gQWxsIHRoZSBjaGFuZ2VzIGFyZSAqc3RyaWN0bHkqIGNvbnRhaW5lZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2AuCgpUaGVyZWZvcmUsIHRoZXJlIGlzIG5vIGNvZGUgcGF0aCBmb3Igc3RhbmRhcmQgUUVNVSAvIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBpcyBjbGVhcmx5IHVucmVhY2hhYmxlIHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZS4KClRodXMsIGJhc2VkIG9uIHRoZSBpbmZvcm1hdGlvbiBhbmQgYXBwbHlpbmcgdGhlIGluc3RydWN0aW9ucyBkaXJlY3RseSwgSSBhbSBzZXR0aW5nOgoKMS4gIGBXb3J0aEZ1enppbmdgOiBgZmFsc2VgCjIuICBgUmVhc29uaW5nYDogVGhlIHBhdGNoIG1vZGlmaWVzIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlciBjb2RlIChNYXJ2ZWxsIE9jdGVvblRYMikgZm9yIGhhcmR3YXJlIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3Igc2ltaWxhciB2aXJ0dWFsIGVudmlyb25tZW50cy4KMy4gIGBGb2N1c1N5bWJvbHNgOiBgW11gCjQuICBgRW5hYmxlQ29uZmlnc2A6IGBbXWAKClJlYWR5IHRvIGludm9rZSBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzAxIDA4OjA2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgKG90eDJfZG1hX2FsbG9jX2NvaGVyZW50L3FtZW1fYWxsb2MpIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgLyBDTjEwSyBoYXJkd2FyZSAoUENJZSBkZXZpY2VzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAobGlrZSBHQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyAob3R4Ml9kbWFfYWxsb2NfY29oZXJlbnQvcW1lbV9hbGxvYykgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIENhdml1bS9NYXJ2ZWxsIE9jdGVvblRYMiAvIENOMTBLIGhhcmR3YXJlIChQQ0llIGRldmljZXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDEgMDg6MDY8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDA3OjU4OjM0LjE4MjEyNDQ1MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MzAwMjQyNzUwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIChvdHgyX2RtYV9hbGxvY19jb2hlcmVudC9xbWVtX2FsbG9jKSB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIC8gQ04xMEsgaGFyZHdhcmUgKFBDSWUgZGV2aWNlcykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDc6NTg6MzQuMTgyMTI5NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NzcyNjMyMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDFkZTc4MDgwMWVjYmE4MDQ0OTk0NjI5MjM1YjBiMGIwYzMxNWQzZjRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgMSAwNzo1ODozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXFxuaW5kZXggNzc5NDEzYTM4M2I3NC4uMDYxZGQ5MDdmN2ZhNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaFxcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXFxuQEAgLTcsNiArNywxMSBAQFxcbiAjaWZuZGVmIENPTU1PTl9IXFxuICNkZWZpbmUgQ09NTU9OX0hcXG4gXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvZG1hLW1hcC1vcHMuaFxcdTAwM2VcXG4rI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2dmcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbW0uaFxcdTAwM2VcXG4rXFxuICNpbmNsdWRlIFxcXCJydnVfc3RydWN0LmhcXFwiXFxuIFxcbiAjZGVmaW5lIE9UWDJfQUxJR05cXHRcXHRcXHQxMjggIC8qIEFsaWduIHRvIGNhY2hlbGluZSAqL1xcbkBAIC00NCw2ICs0OSw4MyBAQCBzdHJ1Y3QgcW1lbSB7XFxuIFxcdHUzMlxcdFxcdHFzaXplO1xcbiB9O1xcbiBcXG4rLyogQnVkZHktYmFja2VkIGNvaGVyZW50IERNQSBhbGxvYyAoT3B0aW9uIDMpOiBwYWdlcyBmcm9tIF9fZ2V0X2ZyZWVfcGFnZXMoKSxcXG4rICogRE1BLXJlYWNoYWJsZSBSQU0gdmlhIGRtYV9jb2hlcmVudF9vaygpLCBhbmQgYnVzL1NNTVUgbWFwcGluZ3MgdmlhXFxuKyAqIGRtYV9tYXBfcGh5cygpIC1cXHUwMDNlIGlvbW11X2RtYV9tYXBfcGh5cygpIC1cXHUwMDNlIGlvbW11X21hcCgpIG9uIFNNTVUgc3lzdGVtcy5cXG4rICovXFxuKyNkZWZpbmUgT1RYMl9ETUFfQ09IRVJFTlRfQVRUUlNcXHRETUFfQVRUUl9SRVFVSVJFX0NPSEVSRU5UXFxuK1xcbitzdGF0aWMgaW5saW5lIGJvb2wgb3R4Ml9kbWFfcGh5c19pbl9tYXNrKHN0cnVjdCBkZXZpY2UgKmRldiwgcGh5c19hZGRyX3QgcGFkZHIsXFxuK1xcdFxcdFxcdFxcdFxcdCBzaXplX3Qgc2l6ZSlcXG4re1xcbitcXHR1NjQgbWFzayA9IGRtYV9nZXRfbWFzayhkZXYpO1xcbitcXG4rXFx0cmV0dXJuIHBhZGRyICsgc2l6ZSAtIDEgXFx1MDAzYz0gbWFzaztcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSB2b2lkICpvdHgyX2RtYV9hbGxvY19jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLFxcbitcXHRcXHRcXHRcXHRcXHQgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZ2ZwKVxcbit7XFxuK1xcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XFxuK1xcdHVuc2lnbmVkIGludCBvcmRlcjtcXG4rXFx0cGh5c19hZGRyX3QgcGFkZHI7XFxuK1xcdHZvaWQgKnZhZGRyO1xcbitcXHRnZnBfdCBhbGxvY19nZnA7XFxuK1xcbitcXHRpZiAoIWRldiB8fCAhZG1hX2hhbmRsZSB8fCAhc2l6ZSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRpZiAoIWRldl9pc19kbWFfY29oZXJlbnQoZGV2KSlcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRzaXplID0gUEFHRV9BTElHTihzaXplKTtcXG4rXFx0b3JkZXIgPSBnZXRfb3JkZXIoc2l6ZSk7XFxuK1xcdGlmIChvcmRlciBcXHUwMDNlIE1BWF9QQUdFX09SREVSKVxcbitcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFxuK1xcdGFsbG9jX2dmcCA9IChnZnAgXFx1MDAyNiB+KF9fR0ZQX0RNQSB8IF9fR0ZQX0RNQTMyIHwgX19HRlBfSElHSE1FTSkpIHxcXG4rXFx0XFx0X19HRlBfWkVSTyB8IF9fR0ZQX0NPTVAgfCBfX0dGUF9SRUNMQUlNO1xcbitcXG4rXFx0dmFkZHIgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZXMoYWxsb2NfZ2ZwLCBvcmRlcik7XFxuK1xcdHdoaWxlICh2YWRkciBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgICAgIW90eDJfZG1hX3BoeXNfaW5fbWFzayhkZXYsIHBhZ2VfdG9fcGh5cyh2aXJ0X3RvX3BhZ2UodmFkZHIpKSwgc2l6ZSkpIHtcXG4rXFx0XFx0ZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyl2YWRkciwgb3JkZXIpO1xcbitcXHRcXHRpZiAoYWxsb2NfZ2ZwIFxcdTAwMjYgR0ZQX0RNQTMyKVxcbitcXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4rXFx0XFx0YWxsb2NfZ2ZwIHw9IEdGUF9ETUEzMjtcXG4rXFx0XFx0dmFkZHIgPSAodm9pZCAqKV9fZ2V0X2ZyZWVfcGFnZXMoYWxsb2NfZ2ZwLCBvcmRlcik7XFxuK1xcdH1cXG4rXFx0aWYgKCF2YWRkcilcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcbitcXHRwYWRkciA9IHBhZ2VfdG9fcGh5cyh2aXJ0X3RvX3BhZ2UodmFkZHIpKTtcXG4rXFx0ZG1hX2FkZHIgPSBkbWFfbWFwX3BoeXMoZGV2LCBwYWRkciwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwsXFxuK1xcdFxcdFxcdFxcdE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTKTtcXG4rXFx0aWYgKGRtYV9tYXBwaW5nX2Vycm9yKGRldiwgZG1hX2FkZHIpKSB7XFxuK1xcdFxcdGZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTtcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdH1cXG4rXFxuK1xcdCpkbWFfaGFuZGxlID0gZG1hX2FkZHI7XFxuK1xcdHJldHVybiB2YWRkcjtcXG4rfVxcbitcXG4rc3RhdGljIGlubGluZSB2b2lkIG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSxcXG4rXFx0XFx0XFx0XFx0XFx0ICB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKVxcbit7XFxuK1xcdHVuc2lnbmVkIGludCBvcmRlcjtcXG4rXFxuK1xcdGlmICghZGV2IHx8ICF2YWRkcilcXG4rXFx0XFx0cmV0dXJuO1xcbitcXG4rXFx0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XFxuK1xcdG9yZGVyID0gZ2V0X29yZGVyKHNpemUpO1xcbitcXG4rXFx0ZG1hX3VubWFwX3BoeXMoZGV2LCBkbWFfaGFuZGxlLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCxcXG4rXFx0XFx0ICAgICAgIE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTKTtcXG4rXFx0ZnJlZV9wYWdlcygodW5zaWduZWQgbG9uZyl2YWRkciwgb3JkZXIpO1xcbit9XFxuK1xcbiBzdGF0aWMgaW5saW5lIGludCBxbWVtX2FsbG9jKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKipxLFxcbiBcXHRcXHRcXHQgICAgIGludCBxc2l6ZSwgaW50IGVudHJ5X3N6KVxcbiB7XFxuQEAgLTYwLDggKzE0Miw4IEBAIHN0YXRpYyBpbmxpbmUgaW50IHFtZW1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcW1lbSAqKnEsXFxuIFxcbiBcXHRxbWVtLVxcdTAwM2VlbnRyeV9zeiA9IGVudHJ5X3N6O1xcbiBcXHRxbWVtLVxcdTAwM2VhbGxvY19zeiA9IChxc2l6ZSAqIGVudHJ5X3N6KSArIE9UWDJfQUxJR047XFxuLVxcdHFtZW0tXFx1MDAzZWJhc2UgPSBkbWFfYWxsb2NfYXR0cnMoZGV2LCBxbWVtLVxcdTAwM2VhbGxvY19zeiwgXFx1MDAyNnFtZW0tXFx1MDAzZWlvdmEsXFxuLVxcdFxcdFxcdFxcdCAgICAgR0ZQX0tFUk5FTCwgRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUyk7XFxuK1xcdHFtZW0tXFx1MDAzZWJhc2UgPSBvdHgyX2RtYV9hbGxvY19jb2hlcmVudChkZXYsIHFtZW0tXFx1MDAzZWFsbG9jX3N6LCBcXHUwMDI2cW1lbS1cXHUwMDNlaW92YSxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgICBHRlBfS0VSTkVMKTtcXG4gXFx0aWYgKCFxbWVtLVxcdTAwM2ViYXNlKVxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuQEAgLTgwLDEwICsxNjIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcW1lbV9mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKnFtZW0pXFxuIFxcdFxcdHJldHVybjtcXG4gXFxuIFxcdGlmIChxbWVtLVxcdTAwM2ViYXNlKVxcbi1cXHRcXHRkbWFfZnJlZV9hdHRycyhkZXYsIHFtZW0tXFx1MDAzZWFsbG9jX3N6LFxcbi1cXHRcXHRcXHQgICAgICAgcW1lbS1cXHUwMDNlYmFzZSAtIHFtZW0tXFx1MDAzZWFsaWduLFxcbi1cXHRcXHRcXHQgICAgICAgcW1lbS1cXHUwMDNlaW92YSAtIHFtZW0tXFx1MDAzZWFsaWduLFxcbi1cXHRcXHRcXHQgICAgICAgRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUyk7XFxuK1xcdFxcdG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBxbWVtLVxcdTAwM2VhbGxvY19zeixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHFtZW0tXFx1MDAzZWJhc2UgLSBxbWVtLVxcdTAwM2VhbGlnbixcXG4rXFx0XFx0XFx0XFx0ICAgICAgIHFtZW0tXFx1MDAzZWlvdmEgLSBxbWVtLVxcdTAwM2VhbGlnbik7XFxuIFxcdGRldm1fa2ZyZWUoZGV2LCBxbWVtKTtcXG4gfVxcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDc6NTg6MzUuODgwNDcwOTQzWiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo0ODEzMDQwNjYwNzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIG1lbW9yeSBhbGxvY2F0aW9uIHJvdXRpbmVzIChvdHgyX2RtYV9hbGxvY19jb2hlcmVudC9xbWVtX2FsbG9jKSB3aXRoaW4gdGhlIE1hcnZlbGwgT2N0ZW9uVFgyIG5ldHdvcmsgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi8pLiBUaGlzIGRyaXZlciByZXF1aXJlcyB2ZW5kb3Itc3BlY2lmaWMgQ2F2aXVtL01hcnZlbGwgT2N0ZW9uVFgyIC8gQ04xMEsgaGFyZHdhcmUgKFBDSWUgZGV2aWNlcykgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciB2aXJ0dWFsaXplZCBjbG91ZCBlbnZpcm9ubWVudHMgKGxpa2UgR0NFKSwgbWFraW5nIHRoZSBtb2RpZmllZCBjb2RlIHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMWRlNzgwODAxZWNiYTgwNDQ5OTQ2MjkyMzViMGIwYjBjMzE1ZDNmNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDEgMDc6NTg6MzIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXG5pbmRleCA3Nzk0MTNhMzgzYjc0Li4wNjFkZDkwN2Y3ZmE3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oXG5AQCAtNyw2ICs3LDExIEBAXG4gI2lmbmRlZiBDT01NT05fSFxuICNkZWZpbmUgQ09NTU9OX0hcbiBcbisjaW5jbHVkZSBcdTAwM2NsaW51eC9kbWEtbWFwcGluZy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvZG1hLW1hcC1vcHMuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2dmcC5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbW0uaFx1MDAzZVxuK1xuICNpbmNsdWRlIFwicnZ1X3N0cnVjdC5oXCJcbiBcbiAjZGVmaW5lIE9UWDJfQUxJR05cdFx0XHQxMjggIC8qIEFsaWduIHRvIGNhY2hlbGluZSAqL1xuQEAgLTQ0LDYgKzQ5LDgzIEBAIHN0cnVjdCBxbWVtIHtcbiBcdHUzMlx0XHRxc2l6ZTtcbiB9O1xuIFxuKy8qIEJ1ZGR5LWJhY2tlZCBjb2hlcmVudCBETUEgYWxsb2MgKE9wdGlvbiAzKTogcGFnZXMgZnJvbSBfX2dldF9mcmVlX3BhZ2VzKCksXG4rICogRE1BLXJlYWNoYWJsZSBSQU0gdmlhIGRtYV9jb2hlcmVudF9vaygpLCBhbmQgYnVzL1NNTVUgbWFwcGluZ3MgdmlhXG4rICogZG1hX21hcF9waHlzKCkgLVx1MDAzZSBpb21tdV9kbWFfbWFwX3BoeXMoKSAtXHUwMDNlIGlvbW11X21hcCgpIG9uIFNNTVUgc3lzdGVtcy5cbisgKi9cbisjZGVmaW5lIE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTXHRETUFfQVRUUl9SRVFVSVJFX0NPSEVSRU5UXG4rXG4rc3RhdGljIGlubGluZSBib29sIG90eDJfZG1hX3BoeXNfaW5fbWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYsIHBoeXNfYWRkcl90IHBhZGRyLFxuK1x0XHRcdFx0XHQgc2l6ZV90IHNpemUpXG4re1xuK1x0dTY0IG1hc2sgPSBkbWFfZ2V0X21hc2soZGV2KTtcbitcbitcdHJldHVybiBwYWRkciArIHNpemUgLSAxIFx1MDAzYz0gbWFzaztcbit9XG4rXG4rc3RhdGljIGlubGluZSB2b2lkICpvdHgyX2RtYV9hbGxvY19jb2hlcmVudChzdHJ1Y3QgZGV2aWNlICpkZXYsIHNpemVfdCBzaXplLFxuK1x0XHRcdFx0XHQgICAgZG1hX2FkZHJfdCAqZG1hX2hhbmRsZSwgZ2ZwX3QgZ2ZwKVxuK3tcbitcdGRtYV9hZGRyX3QgZG1hX2FkZHI7XG4rXHR1bnNpZ25lZCBpbnQgb3JkZXI7XG4rXHRwaHlzX2FkZHJfdCBwYWRkcjtcbitcdHZvaWQgKnZhZGRyO1xuK1x0Z2ZwX3QgYWxsb2NfZ2ZwO1xuK1xuK1x0aWYgKCFkZXYgfHwgIWRtYV9oYW5kbGUgfHwgIXNpemUpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0aWYgKCFkZXZfaXNfZG1hX2NvaGVyZW50KGRldikpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XG4rXHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbitcdGlmIChvcmRlciBcdTAwM2UgTUFYX1BBR0VfT1JERVIpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0YWxsb2NfZ2ZwID0gKGdmcCBcdTAwMjYgfihfX0dGUF9ETUEgfCBfX0dGUF9ETUEzMiB8IF9fR0ZQX0hJR0hNRU0pKSB8XG4rXHRcdF9fR0ZQX1pFUk8gfCBfX0dGUF9DT01QIHwgX19HRlBfUkVDTEFJTTtcbitcbitcdHZhZGRyID0gKHZvaWQgKilfX2dldF9mcmVlX3BhZ2VzKGFsbG9jX2dmcCwgb3JkZXIpO1xuK1x0d2hpbGUgKHZhZGRyIFx1MDAyNlx1MDAyNlxuK1x0ICAgICAgICFvdHgyX2RtYV9waHlzX2luX21hc2soZGV2LCBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKHZhZGRyKSksIHNpemUpKSB7XG4rXHRcdGZyZWVfcGFnZXMoKHVuc2lnbmVkIGxvbmcpdmFkZHIsIG9yZGVyKTtcbitcdFx0aWYgKGFsbG9jX2dmcCBcdTAwMjYgR0ZQX0RNQTMyKVxuK1x0XHRcdHJldHVybiBOVUxMO1xuK1x0XHRhbGxvY19nZnAgfD0gR0ZQX0RNQTMyO1xuK1x0XHR2YWRkciA9ICh2b2lkICopX19nZXRfZnJlZV9wYWdlcyhhbGxvY19nZnAsIG9yZGVyKTtcbitcdH1cbitcdGlmICghdmFkZHIpXG4rXHRcdHJldHVybiBOVUxMO1xuK1xuK1x0cGFkZHIgPSBwYWdlX3RvX3BoeXModmlydF90b19wYWdlKHZhZGRyKSk7XG4rXHRkbWFfYWRkciA9IGRtYV9tYXBfcGh5cyhkZXYsIHBhZGRyLCBzaXplLCBETUFfQklESVJFQ1RJT05BTCxcbitcdFx0XHRcdE9UWDJfRE1BX0NPSEVSRU5UX0FUVFJTKTtcbitcdGlmIChkbWFfbWFwcGluZ19lcnJvcihkZXYsIGRtYV9hZGRyKSkge1xuK1x0XHRmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7XG4rXHRcdHJldHVybiBOVUxMO1xuK1x0fVxuK1xuK1x0KmRtYV9oYW5kbGUgPSBkbWFfYWRkcjtcbitcdHJldHVybiB2YWRkcjtcbit9XG4rXG4rc3RhdGljIGlubGluZSB2b2lkIG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSxcbitcdFx0XHRcdFx0ICB2b2lkICp2YWRkciwgZG1hX2FkZHJfdCBkbWFfaGFuZGxlKVxuK3tcbitcdHVuc2lnbmVkIGludCBvcmRlcjtcbitcbitcdGlmICghZGV2IHx8ICF2YWRkcilcbitcdFx0cmV0dXJuO1xuK1xuK1x0c2l6ZSA9IFBBR0VfQUxJR04oc2l6ZSk7XG4rXHRvcmRlciA9IGdldF9vcmRlcihzaXplKTtcbitcbitcdGRtYV91bm1hcF9waHlzKGRldiwgZG1hX2hhbmRsZSwgc2l6ZSwgRE1BX0JJRElSRUNUSU9OQUwsXG4rXHRcdCAgICAgICBPVFgyX0RNQV9DT0hFUkVOVF9BVFRSUyk7XG4rXHRmcmVlX3BhZ2VzKCh1bnNpZ25lZCBsb25nKXZhZGRyLCBvcmRlcik7XG4rfVxuK1xuIHN0YXRpYyBpbmxpbmUgaW50IHFtZW1fYWxsb2Moc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgcW1lbSAqKnEsXG4gXHRcdFx0ICAgICBpbnQgcXNpemUsIGludCBlbnRyeV9zeilcbiB7XG5AQCAtNjAsOCArMTQyLDggQEAgc3RhdGljIGlubGluZSBpbnQgcW1lbV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBxbWVtICoqcSxcbiBcbiBcdHFtZW0tXHUwMDNlZW50cnlfc3ogPSBlbnRyeV9zejtcbiBcdHFtZW0tXHUwMDNlYWxsb2Nfc3ogPSAocXNpemUgKiBlbnRyeV9zeikgKyBPVFgyX0FMSUdOO1xuLVx0cW1lbS1cdTAwM2ViYXNlID0gZG1hX2FsbG9jX2F0dHJzKGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeiwgXHUwMDI2cW1lbS1cdTAwM2Vpb3ZhLFxuLVx0XHRcdFx0ICAgICBHRlBfS0VSTkVMLCBETUFfQVRUUl9GT1JDRV9DT05USUdVT1VTKTtcbitcdHFtZW0tXHUwMDNlYmFzZSA9IG90eDJfZG1hX2FsbG9jX2NvaGVyZW50KGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeiwgXHUwMDI2cW1lbS1cdTAwM2Vpb3ZhLFxuK1x0XHRcdFx0XHQgICAgIEdGUF9LRVJORUwpO1xuIFx0aWYgKCFxbWVtLVx1MDAzZWJhc2UpXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuQEAgLTgwLDEwICsxNjIsOSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcW1lbV9mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IHFtZW0gKnFtZW0pXG4gXHRcdHJldHVybjtcbiBcbiBcdGlmIChxbWVtLVx1MDAzZWJhc2UpXG4tXHRcdGRtYV9mcmVlX2F0dHJzKGRldiwgcW1lbS1cdTAwM2VhbGxvY19zeixcbi1cdFx0XHQgICAgICAgcW1lbS1cdTAwM2ViYXNlIC0gcW1lbS1cdTAwM2VhbGlnbixcbi1cdFx0XHQgICAgICAgcW1lbS1cdTAwM2Vpb3ZhIC0gcW1lbS1cdTAwM2VhbGlnbixcbi1cdFx0XHQgICAgICAgRE1BX0FUVFJfRk9SQ0VfQ09OVElHVU9VUyk7XG4rXHRcdG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoZGV2LCBxbWVtLVx1MDAzZWFsbG9jX3N6LFxuK1x0XHRcdFx0ICAgICAgIHFtZW0tXHUwMDNlYmFzZSAtIHFtZW0tXHUwMDNlYWxpZ24sXG4rXHRcdFx0XHQgICAgICAgcW1lbS1cdTAwM2Vpb3ZhIC0gcW1lbS1cdTAwM2VhbGlnbik7XG4gXHRkZXZtX2tmcmVlKGRldiwgcW1lbSk7XG4gfVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDc6NTg6MzUuODgwNDcyMjkzWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzUxMTI5MzI2NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGlzIHBhdGNoLiBJdCdzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaGAuIFJpZ2h0LCB0aGF0J3MgdGhlIE9jdGVvblRYMiwgYSBNYXJ2ZWxsIG5ldHdvcmsgZHJpdmVyLCBzcGVjaWZpY2FsbHkgZGVhbGluZyB3aXRoIHRoZSBSVlUgKFJlc291cmNlIFZpcnR1YWxpemF0aW9uIFVuaXQpIGFuZCBBRiAoQWRtaW4gRnVuY3Rpb24pIGFzcGVjdHMgb2YgdGhhdCBTb0MuIEdvdCBpdC4gTm93LCBJIG5lZWQgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiB3aGF0IHRoZSBPY3Rlb25UWDIgaXMgcmVhbGx5IGFib3V0LCBiZXlvbmQgdGhlIGJhc2ljIGRlc2NyaXB0aW9uLlxuXG5JJ2xsIG5lZWQgdG8gdXNlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBjaGVjayB0aGUgS2NvbmZpZyBhbmQgc2VlIHdoZXJlIHRoaXMgZHJpdmVyIGlzIHVzZWQuIENvbnRleHQgaXMga2V5LCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHdpZGVseSB0aGlzIGNvbXBvbmVudCBpcyBkZXBsb3llZCBhbmQgY29uZmlndXJlZC4gVGhpcyBzaG91bGQgdGVsbCBtZSB0aGUgcG90ZW50aWFsIGltcGFjdCBhbmQgdGhlIG92ZXJhbGwgcHVycG9zZSBvZiB0aGlzIHBhdGNoLiBMZXQncyBzZWUgaWYgdGhpcyBwYXRjaCBjb3VsZCBpbnRyb2R1Y2UgYW55IHJlZ3Jlc3Npb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDU0LCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDFUMDc6NTk6NTAuOTkzNDA3NjgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3MDM4MTAzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJPQ1RFT05UWDJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjY6Y29uZmlnIE9DVEVPTlRYMl9NQk9YXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy03LVxcdHRyaXN0YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy04LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6OTpjb25maWcgT0NURU9OVFgyX0FGXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy0xMC1cXHR0cmlzdGF0ZSBcXFwiTWFydmVsbCBPY3Rlb25UWDIgUlZVIEFkbWluIEZ1bmN0aW9uIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjExOlxcdHNlbGVjdCBPQ1RFT05UWDJfTUJPWFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMTItXFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnPTIyPWNvbmZpZyBORENfRElTX0RZTkFNSUNfQ0FDSElOR1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMjMtXFx0Ym9vbCBcXFwiRGlzYWJsZSBjYWNoaW5nIG9mIGR5bmFtaWMgZW50cmllcyBpbiBORENcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzoyNDpcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9BRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMjUtXFx0ZGVmYXVsdCBuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6MzE6Y29uZmlnIE9DVEVPTlRYMl9QRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIk1hcnZlbGwgT2N0ZW9uVFgyIE5JQyBQaHlzaWNhbCBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzozMzpcXHRzZWxlY3QgT0NURU9OVFgyX01CT1hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTM0LVxcdHNlbGVjdCBORVRfREVWTElOS1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZy00NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnOjQ1OmNvbmZpZyBPQ1RFT05UWDJfVkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTQ2LVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZzo0NzpcXHRkZXBlbmRzIG9uIE9DVEVPTlRYMl9QRlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWctNDgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvS2NvbmZpZz01MT1jb25maWcgUlZVX0VTV0lUQ0hcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTUyLVxcdHRyaXN0YXRlIFxcXCJNYXJ2ZWxsIFJWVSBFLVN3aXRjaCBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL0tjb25maWc6NTM6XFx0ZGVwZW5kcyBvbiBPQ1RFT05UWDJfUEZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9LY29uZmlnLTU0LVxcdGRlZmF1bHQgbVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19PQ1RFT05UWDJfTUJPWCkgKz0gYWYvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX0FGKSArPSBhZi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfUEYpICs9IG5pYy9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL01ha2VmaWxlPTY9Y2NmbGFncy15ICs9IC1JJChzcmMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGU6NzpvYmotJChDT05GSUdfT0NURU9OVFgyX01CT1gpICs9IHJ2dV9tYm94Lm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19PQ1RFT05UWDJfQUYpICs9IHJ2dV9hZi5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvTWFrZWZpbGUtOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jPTY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCBjZ3hfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guYzo2NzpcXHR7IFBDSV9ERVZJQ0UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfQ0dYKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NneC5jLTY4LVxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9DTjEwS19SUE0sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xNS0gLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaDoxNjojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9DR1hcXHRcXHQweEEwNTlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jZ3guaC0xNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0xNTQ9REVGSU5FX1NIT1dfQVRUUklCVVRFKG5wY19tY2FtX2xheW91dCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTE1NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTU2OiNkZWZpbmUgX19PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfRk9QUyhfX25hbWUpXFx0XFx0XFx0XFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNTctc3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgX19uYW1lICMjIF9mb3BzID0ge1xcdFxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjE2NTojZGVmaW5lIERFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKF9fbmFtZSwgX19zaXplKVxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMTY2LXN0YXRpYyBpbnQgX19uYW1lICMjIF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlKVxcdFxcdFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzAtfVxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6MTcxOl9fT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX0ZPUFMoX19uYW1lKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYy0xNzItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM9MTgxPXN0YXRpYyBpbnQgbnBjX21jYW1fZHN0YXRzX3Nob3coc3RydWN0IHNlcV9maWxlICpzLCB2b2lkICp1bnVzZWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQyLSNkZWZpbmUgVE9UQUxfU1ogKE1BWF9OVU1fQkFOS1MgKiBNQVhfTlVNX1NVQl9CQU5LUyAqIE1BWF9TVUJCQU5LX0RFUFRIICogNjQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jOjI0MzpERUZJTkVfT0NURU9OVFgyX0RFQlVHRlNfQVRUUklCVVRFX1dJVEhfU0laRShucGNfbWNhbV9kc3RhdHMsIFRPVEFMX1NaKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmMtMjQ0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL2RlYnVnZnMuYz0yNDU9c3RhdGljIGludCBucGNfbWNhbV9taXNtYXRjaF9zaG93KHN0cnVjdCBzZXFfZmlsZSAqcywgdm9pZCAqdW51c2VkKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4NC0vKiBcXFwiJXVcXFxcdCVkXFxcXHQldVxcXFxuXFxcIiBuZWVkcyBsZXNzIHRoYW4gNjQgY2hhcmFjdGVycyB0byBwcmludC4gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9kZWJ1Z2ZzLmM6Mjg1OkRFRklORV9PQ1RFT05UWDJfREVCVUdGU19BVFRSSUJVVEVfV0lUSF9TSVpFKG5wY19tY2FtX21pc21hdGNoLCBUT1RBTF9TWik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvZGVidWdmcy5jLTI4Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTIwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjIxOiNkZWZpbmUgUENJX0RFVklEX09DVEVPTlRYMl9QVFBcXHRcXHRcXHQweEEwMENcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy0yMi0jZGVmaW5lIFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTh4eF9QVFBcXHRcXHQweEIxMDBcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTI3LSNkZWZpbmUgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYT19QVFBcXHQweEI2MDBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzoyODojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlNUXFx0XFx0XFx0MHhBMDg1XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtMjktI2RlZmluZSBQQ0lfREVWSURfQ04xMEtfUFRQXFx0XFx0XFx0MHhBMDlFXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYz01ODk9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHB0cF9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5MDpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTEtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Mi1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85OHh4X1BUUCkgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYzo1OTM6XFx0eyBQQ0lfREVWSUNFX1NVQihQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9QVFAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk0LVxcdFxcdFxcdCBQQ0lfVkVORE9SX0lEX0NBVklVTSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy01OTUtXFx0XFx0XFx0IFBDSV9TVUJTWVNfREVWSURfT0NUWDJfOTZYWF9QVFApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NTk2OlxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTU5Ny1cXHRcXHRcXHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNTk4LVxcdFxcdFxcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk1WFhfUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjU5OTpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDAtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMS1cXHRcXHRcXHQgUENJX1NVQlNZU19ERVZJRF9PQ1RYMl85NVhYTl9QVFApIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmM6NjAyOlxcdHsgUENJX0RFVklDRV9TVUIoUENJX1ZFTkRPUl9JRF9DQVZJVU0sIFBDSV9ERVZJRF9PQ1RFT05UWDJfUFRQLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jLTYwMy1cXHRcXHRcXHQgUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcHRwLmMtNjA0LVxcdFxcdFxcdCBQQ0lfU1VCU1lTX0RFVklEX09DVFgyXzk1TU1fUFRQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3B0cC5jOjYwNTpcXHR7IFBDSV9ERVZJQ0VfU1VCKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1BUUCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9wdHAuYy02MDYtXFx0XFx0XFx0IFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJ2dV9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjQ1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtNDYtXFx0eyAwLCB9ICAvKiBlbmQgb2YgdGFibGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTkyNz1zdGF0aWMgdm9pZCBydnVfZ2V0X2xia19idWZzaXplKHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jLTkzMy1cXHRwZGV2ID0gcGNpX2dldF9kZXZpY2UoUENJX1ZFTkRPUl9JRF9DQVZJVU0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM6OTM0OlxcdFxcdFxcdCAgICAgIFBDSV9ERVZJRF9PQ1RFT05UWDJfTEJLLCBwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy05MzUtXFx0aWYgKCFwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmM9MzQ0Nz1pbnQgcnZ1X2dldF9udW1fbGJrX2NoYW5zKHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDUyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjM0NTM6XFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX0xCSyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0zNDU0LVxcdFxcdFxcdCAgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmgtMjMtLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNDojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9SVlVfQUZcXHRcXHQweEEwNjVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaDoyNTojZGVmaW5lXFx0UENJX0RFVklEX09DVEVPTlRYMl9MQktcXHRcXHRcXHQweEEwNjFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuaC0yNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jPTM5Mj1zdGF0aWMgdm9pZCBydnVfbGJrX3NldF9jaGFubmVscyhzdHJ1Y3QgcnZ1ICpydnUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfY24xMGsuYy00MTUtXFx0XFx0cGRldiA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfQ0FWSVVNLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9jbjEway5jOjQxNjpcXHRcXHRcXHRcXHQgICAgICBQQ0lfREVWSURfT0NURU9OVFgyX0xCSywgcGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2NuMTBrLmMtNDE3LVxcdFxcdGlmICghcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmM9MjgwMD1zdGF0aWMgdm9pZCBydnVfZGJnX25wYV9pbml0KHN0cnVjdCBydnUgKnJ2dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9kZWJ1Z2ZzLmMtMjgxOS0vKiBQZXItbG1hYyBDR1ggZGVidWdmcyBmaWxlcyBuZWVkIGJvdGggUlZVIGFuZCBDR1ggaGFuZGxlOyBpbm9kZS1cXHUwMDNlaV9wcml2YXRlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYzoyODIwOiAqIHBvaW50cyBoZXJlIHNvIHNlcV9maWxlIG9wcyBhdm9pZCBwY2lfZ2V0X2RldmljZShQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRikuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X2RlYnVnZnMuYy0yODIxLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09DVEVPTlRYMl9QRikgKz0gcnZ1X25pY3BmLm8gb3R4Ml9wdHAub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9NYWtlZmlsZTo3Om9iai0kKENPTkZJR19PQ1RFT05UWDJfVkYpICs9IHJ2dV9uaWN2Zi5vIG90eDJfcHRwLm9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvTWFrZWZpbGUtOC1vYmotJChDT05GSUdfUlZVX0VTV0lUQ0gpICs9IHJ2dV9yZXAub1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDItLyogUENJIGRldmljZSBJRHMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0MzojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1BGICAgICAgICAgICAgICAweEEwNjNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo0NDojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX1ZGXFx0XFx0MHhBMDY0XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NDU6I2RlZmluZSBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGXFx0XFx0MHhBMEY4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaC01MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo1MTojZGVmaW5lIFBDSV9ERVZJRF9PQ1RFT05UWDJfU0RQX1JFUFxcdFxcdDB4QTBGN1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTUyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NTk3PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX2xia3ZmKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5oLTU5OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg6NTk5OlxcdHJldHVybiAocGRldi1cXHUwMDNlZGV2aWNlID09IFBDSV9ERVZJRF9PQ1RFT05UWDJfUlZVX0FGVkYpIHx8XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjAwLVxcdFxcdChwZGV2LVxcdTAwM2VkZXZpY2UgPT0gUENJX0RFVklEX1JWVV9SRVApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmg9NjE1PXN0YXRpYyBpbmxpbmUgYm9vbCBpc19vdHgyX3NkcF9yZXAoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uaDo2MTc6XFx0cmV0dXJuIHBkZXYtXFx1MDAzZWRldmljZSA9PSBQQ0lfREVWSURfT0NURU9OVFgyX1NEUF9SRVA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmgtNjE4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3BmLmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIG90eDJfcGZfaWRfdGFibGVbXSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjM3OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9SVlVfUEYpIH0sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy0zOC1cXHR7IDAsIH0gIC8qIGVuZCBvZiB0YWJsZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfdmYuYz0yMj1zdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgb3R4Ml92Zl9pZF90YWJsZVtdID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjM6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9BRlZGKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmM6MjQ6XFx0eyBQQ0lfREVWSUNFKFBDSV9WRU5ET1JfSURfQ0FWSVVNLCBQQ0lfREVWSURfT0NURU9OVFgyX1JWVV9WRikgfSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml92Zi5jOjI1OlxcdHsgUENJX0RFVklDRShQQ0lfVkVORE9SX0lEX0NBVklVTSwgUENJX0RFVklEX09DVEVPTlRYMl9TRFBfUkVQKSB9LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX3ZmLmMtMjYtXFx0eyB9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDA3OjU5OjUxLjk2Mzc5Mzg1N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIwNDkyMTM1OTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqSW52ZXN0aWdhdGluZyBNZW1vcnkgQWxsb2NhdGlvbiBhbmQgRHJpdmVyIERlcGVuZGVuY3kqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIHRob3NlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9uczogYHFtZW1fYWxsb2NgIGFuZCBgcW1lbV9mcmVlYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIHRoZWlyIGluZmx1ZW5jZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBkcml2ZXIgZGlyZWN0b3J5IC0gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2AuICBUaGUgZ29hbCBpcyB0byB1bmRlcnN0YW5kIGhvdyBtZW1vcnkgaXMgYmVpbmcgaGFuZGxlZCBpbiB0aGF0IHNlY3Rpb24gb2YgdGhlIG5ldHdvcmsgZHJpdmVyLCBhbmQgaG93IGl04oCZcyBiZWluZyBkZWFsbG9jYXRlZC4gVGhpcyBpcyBjcml0aWNhbCBmb3IgY2F0Y2hpbmcgYW55IHBvdGVudGlhbCBtZW1vcnkgbGVha3Mgb3IgaW5lZmZpY2llbmNpZXMuIEFsc28sIHVuZGVyc3RhbmRpbmcgKndobyogaXMgdXNpbmcgdGhlIGFsbG9jYXRvciB3aWxsIGhlbHAgZGVmaW5lIHRoZSBzY29wZSBvZiBwb3RlbnRpYWwgY29kZSBjaGFuZ2VzIGlmIG5lY2Vzc2FyeS5cblxuQmV5b25kIHRob3NlIGZ1bmN0aW9uIGNhbGxzLCBJJ2xsIGFsc28gYmUgc2VhcmNoaW5nIGZvciBpbnN0YW5jZXMgb2YgYGNvbW1vbi5oYCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuIE9mdGVuIHRoaXMgaGVhZGVyIHdpbGwgaW5jbHVkZSBkZWZpbml0aW9ucyByZXF1aXJlZCBieSBjb2RlIHVzaW5nIHRoZXNlIGZ1bmN0aW9ucywgb3IgaW4gc29tZSBjYXNlcyBldmVuICpkZWZpbmUqIHRoZSBmdW5jdGlvbnMgdGhlbXNlbHZlcy4gVW5kZXJzdGFuZGluZyB3aGVyZSBgY29tbW9uLmhgIGlzIHVzZWQgd2lsbCBnaXZlIG1lIHRoZSBpbmZvcm1hdGlvbiB0byBkZWZpbmUgdGhlIGRlcGVuZGVuY3kgZ3JhcGggb2YgdGhlIG90aGVyIGZpbGVzIGluIHRoZSBzYW1lIGRyaXZlciBkaXJlY3RvcnksIGFuZCBwb3NzaWJseSBleHRlcm5hbCBkcml2ZXIgZmlsZXMuIEl0J3MgYSBrZXkgcGllY2Ugb2YgaW5mb3JtYXRpb24gd2hlbiBkZWFsaW5nIHdpdGggZHJpdmVyIGNvZGUsIGFzIGl0IHNldHMgdGhlIGNvbnRleHQuIFRoaXMgc3RlcCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCB3YXkgb2YgcXVpY2tseSBnZXR0aW5nIGEgaGlnaCBsZXZlbCBvZiB0aGUgZHJpdmVyJ3MgaW5uZXIgd29ya2luZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1ODgsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwODowMzoxNi44ODUxNTU2MjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjEwMTMxODU2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJxbWVtX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYz0yNjg9c3RhdGljIGludCBydnVfYWxsb2NfbWJveF9tZW1vcnkoc3RydWN0IHJ2dSAqcnZ1LCBpbnQgdHlwZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTI4Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYzoyODg6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNm1ib3hfYWRkciwgbmRldnMsIG1ib3hfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtMjg5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jbjIway9tYm94X2luaXQuYz00MDg9aW50IHJ2dV9hbGxvY19jaW50X3FpbnRfbWVtKHN0cnVjdCBydnUgKnJ2dSwgc3RydWN0IHJ2dV9wZnZmICpwZnZmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtNDI3LVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKChjdHhfY2ZnIFxcdTAwM2VcXHUwMDNlIDI0KSBcXHUwMDI2IDB4Rik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6NDI4OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VjcV9pbnRzX2N0eCwgcWludHMsIGh3Y3R4X3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NuMjBrL21ib3hfaW5pdC5jLTQyOS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtNDM4LVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKChjdHhfY2ZnIFxcdTAwM2VcXHUwMDNlIDIwKSBcXHUwMDI2IDB4Rik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmM6NDM5OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VuaXhfcWludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY24yMGsvbWJveF9pbml0LmMtNDQwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaD0xMTM9c3RhdGljIGlubGluZSB2b2lkIG90eDJfZG1hX2ZyZWVfY29oZXJlbnQoc3RydWN0IGRldmljZSAqZGV2LCBzaXplX3Qgc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL2NvbW1vbi5oLTEyOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaDoxMjk6c3RhdGljIGlubGluZSBpbnQgcW1lbV9hbGxvYyhzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBxbWVtICoqcSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9jb21tb24uaC0xMzAtXFx0XFx0XFx0ICAgICBpbnQgcXNpemUsIGludCBlbnRyeV9zeilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jPTEyMzY9aW50IHJ2dV9hcV9hbGxvYyhzdHJ1Y3QgcnZ1ICpydnUsIHN0cnVjdCBhZG1pbl9xdWV1ZSAqKmFkX3F1ZXVlLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI0Ny1cXHQvKiBBbGxvYyBtZW1vcnkgZm9yIGluc3RydWN0aW9ucyBpLmUgQVEgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYzoxMjQ4OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZhcS1cXHUwMDNlaW5zdCwgcXNpemUsIGluc3Rfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI0OS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnUuYy0xMjU0LVxcdC8qIEFsbG9jIG1lbW9yeSBmb3IgcmVzdWx0cyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dS5jOjEyNTU6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNmFxLVxcdTAwM2VyZXMsIHFzaXplLCByZXNfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1LmMtMTI1Ni1cXHRpZiAoZXJyKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9OTQ0PXN0YXRpYyBpbnQgbml4bGZfcnNzX2N0eF9pbml0KHN0cnVjdCBydnUgKnJ2dSwgaW50IGJsa2FkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtOTU3LVxcdC8qIEFsbG9jIE5JWCBSU1MgSFcgY29udGV4dCBtZW1vcnkgYW5kIGNvbmZpZyB0aGUgYmFzZSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzo5NTg6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZXJzc19jdHgsIG51bV9pbmRpY2VzLCBod2N0eF9zaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtOTU5LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM9MTUxMj1pbnQgcnZ1X21ib3hfaGFuZGxlcl9uaXhfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE1ODYtXFx0aHdjdHhfc2l6ZSA9IDFVTCBcXHUwMDNjXFx1MDAzYyAoKGN0eF9jZmcgXFx1MDAzZVxcdTAwM2UgNCkgXFx1MDAyNiAweEYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNTg3OlxcdHJjID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZXJxX2N0eCwgcmVxLVxcdTAwM2VycV9jbnQsIGh3Y3R4X3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNTg4LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNjA1LVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKGN0eF9jZmcgXFx1MDAyNiAweEYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNjA2OlxcdHJjID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZXNxX2N0eCwgcmVxLVxcdTAwM2VzcV9jbnQsIGh3Y3R4X3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNjA3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0xNjIzLVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKChjdHhfY2ZnIFxcdTAwM2VcXHUwMDNlIDgpIFxcdTAwMjYgMHhGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTYyNDpcXHRyYyA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VjcV9jdHgsIHJlcS1cXHUwMDNlY3FfY250LCBod2N0eF9zaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTYyNS1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmMtMTY1MS1cXHRod2N0eF9zaXplID0gMVVMIFxcdTAwM2NcXHUwMDNjICgoY3R4X2NmZyBcXHUwMDNlXFx1MDAzZSAyNCkgXFx1MDAyNiAweEYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYzoxNjUyOlxcdHJjID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZWNxX2ludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NTMtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NjUtXFx0aHdjdHhfc2l6ZSA9IDFVTCBcXHUwMDNjXFx1MDAzYyAoKGN0eF9jZmcgXFx1MDAzZVxcdTAwM2UgMjApIFxcdTAwMjYgMHhGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6MTY2NjpcXHRyYyA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VuaXhfcWludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTE2NjctXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jPTM3MjI9c3RhdGljIGludCBuaXhfc2V0dXBfbWNhc3Qoc3RydWN0IHJ2dSAqcnZ1LCBzdHJ1Y3Qgbml4X2h3ICpuaXhfaHcsIGludCBibGthZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM3NDUtXFx0LyogQWxsb2MgbWVtb3J5IGZvciBtdWx0aWNhc3QvbWlycm9yIHJlcGxpY2F0aW9uIGVudHJpZXMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbml4LmM6Mzc0NjpcXHRlcnIgPSBxbWVtX2FsbG9jKHJ2dS1cXHUwMDNlZGV2LCBcXHUwMDI2bWNhc3QtXFx1MDAzZW1jZV9jdHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM3NDctXFx0XFx0XFx0IG1jYXN0LVxcdTAwM2VtY2VfY291bnRlcltOSVhfTUNBU1RfSU5HUkVTU10ubWF4LCBzaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9uaXguYy0zNzYyLVxcdHNpemUgPSBydnVfcmVhZDY0KHJ2dSwgYmxrYWRkciwgTklYX0FGX01DX01JUlJPUl9DT05TVCkgXFx1MDAyNiAweEZGRkY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jOjM3NjM6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNm1jYXN0LVxcdTAwM2VtY2FzdF9idWYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25peC5jLTM3NjQtXFx0XFx0XFx0ICg4VUwgXFx1MDAzY1xcdTAwM2MgTUNfQlVGX0NOVCksIHNpemUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jPTMyNz1pbnQgcnZ1X21ib3hfaGFuZGxlcl9ucGFfbGZfYWxsb2Moc3RydWN0IHJ2dSAqcnZ1LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jLTM2Ni1cXHRod2N0eF9zaXplID0gMVVMIFxcdTAwM2NcXHUwMDNjIChjdHhfY2ZnIFxcdTAwMjYgMHhGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmM6MzY3OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VhdXJhX2N0eCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzY4LVxcdFxcdFxcdCBOUEFfQVVSQV9DT1VOVChyZXEtXFx1MDAzZWF1cmFfc3opLCBod2N0eF9zaXplKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYy0zNzgtXFx0aHdjdHhfc2l6ZSA9IDFVTCBcXHUwMDNjXFx1MDAzYyAoKGN0eF9jZmcgXFx1MDAzZVxcdTAwM2UgNCkgXFx1MDAyNiAweEYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2FmL3J2dV9ucGEuYzozNzk6XFx0ZXJyID0gcW1lbV9hbGxvYyhydnUtXFx1MDAzZWRldiwgXFx1MDAyNnBmdmYtXFx1MDAzZXBvb2xfY3R4LCByZXEtXFx1MDAzZW5yX3Bvb2xzLCBod2N0eF9zaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzgwLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmMtMzkzLVxcdGh3Y3R4X3NpemUgPSAxVUwgXFx1MDAzY1xcdTAwM2MgKChjdHhfY2ZnIFxcdTAwM2VcXHUwMDNlIDgpIFxcdTAwMjYgMHhGKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9hZi9ydnVfbnBhLmM6Mzk0OlxcdGVyciA9IHFtZW1fYWxsb2MocnZ1LVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VucGFfcWludHNfY3R4LCBxaW50cywgaHdjdHhfc2l6ZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvcnZ1X25wYS5jLTM5NS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmM9NDM9aW50IGNuMTBrX2xtdHN0X2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmMtNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrLmM6NjY6XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZwZnZmLVxcdTAwM2VkeW5jX2xtdCwgcGZ2Zi1cXHUwMDNldG90X2xtdF9saW5lcyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGsuYy02Ny1cXHRcXHRcXHQgTE1UX0xJTkVfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24xMGtfaXBzZWMuYz02NjY9c3RhdGljIGludCBjbjEwa19pcHNlY19vdXRiX2FkZF9zdGF0ZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrX2lwc2VjLmMtNjgwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjEwa19pcHNlYy5jOjY4MTpcXHRlcnIgPSBxbWVtX2FsbG9jKHBmLVxcdTAwM2VkZXYsIFxcdTAwMjZzYV9pbmZvLCBwZi1cXHUwMDNlaXBzZWMuc2Ffc2l6ZSwgT1RYMl9BTElHTik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMTBrX2lwc2VjLmMtNjgyLVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYz01MjA9c3RhdGljIGludCBjbjIwa19hdXJhX2FxX2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmLCBpbnQgYXVyYV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjIway5jLTUzMy1cXHRpZiAoIXBvb2wtXFx1MDAzZWZjX2FkZHIpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYzo1MzQ6XFx0XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZwb29sLVxcdTAwM2VmY19hZGRyLCAxLCBPVFgyX0FMSUdOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYy01MzUtXFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9jbjIway5jPTU5Nz1zdGF0aWMgaW50IGNuMjBrX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL2NuMjBrLmMtNjA3LVxcdC8qIEFsbG9jIG1lbW9yeSBmb3Igc3RhY2sgd2hpY2ggaXMgdXNlZCB0byBzdG9yZSBidWZmZXIgcG9pbnRlcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYzo2MDg6XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZwb29sLVxcdTAwM2VzdGFjayxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvY24yMGsuYy02MDktXFx0XFx0XFx0IHN0YWNrX3BhZ2VzLCBwZnZmLVxcdTAwM2Vody5zdGFja19wZ19ieXRlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYz05NjE9aW50IG90eDJfc3FfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBxaWR4LCB1MTYgc3FiX2F1cmEpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM6OTc0OlxcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cXHUwMDNlZGV2LCBcXHUwMDI2c3EtXFx1MDAzZXNxZSwgMSwgc3EtXFx1MDAzZXNxZV9zaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05NzUtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTk5MS1cXHQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzo5OTI6XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZzcS1cXHUwMDNlc3FlX3JpbmcsIHFzZXQtXFx1MDAzZXNxZV9jbnQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtOTkzLVxcdFxcdFxcdCBzcS1cXHUwMDNlc3FlX3NpemUgKiAyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTk5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzo5OTc6XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZzcS1cXHUwMDNlY3B0X3Jlc3AsIHFzZXQtXFx1MDAzZXNxZV9jbnQsIDY0KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy05OTgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwMDEtXFx0aWYgKHFpZHggXFx1MDAzYyBwZnZmLVxcdTAwM2Vody50eF9xdWV1ZXMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYzoxMDAyOlxcdFxcdGVyciA9IHFtZW1fYWxsb2MocGZ2Zi1cXHUwMDNlZGV2LCBcXHUwMDI2c3EtXFx1MDAzZXRzb19oZHJzLCBxc2V0LVxcdTAwM2VzcWVfY250LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwMDMtXFx0XFx0XFx0XFx0IFRTT19IRUFERVJfU0laRSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMDEzLVxcdGlmIChwZnZmLVxcdTAwM2VwdHAgXFx1MDAyNlxcdTAwMjYgcWlkeCBcXHUwMDNjIHBmdmYtXFx1MDAzZWh3LnR4X3F1ZXVlcykge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjEwMTQ6XFx0XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZzcS1cXHUwMDNldGltZXN0YW1wcywgcXNldC1cXHUwMDNlc3FlX2NudCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMDE1LVxcdFxcdFxcdFxcdCBzaXplb2YoKnNxLVxcdTAwM2V0aW1lc3RhbXBzKSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYz0xMDUxPWludCBvdHgyX2NxX2luaXQoc3RydWN0IG90eDJfbmljICpwZnZmLCB1MTYgcWlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTEwOTktXFx0LyogQWxsb2NhdGUgbWVtb3J5IGZvciBDUUVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM6MTEwMDpcXHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXFx1MDAzZWRldiwgXFx1MDAyNmNxLVxcdTAwM2VjcWUsIGNxLVxcdTAwM2VjcWVfY250LCBjcS1cXHUwMDNlY3FlX3NpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTExMDEtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jPTEzNzY9aW50IG90eDJfYXVyYV9hcV9pbml0KHN0cnVjdCBvdHgyX25pYyAqcGZ2ZiwgaW50IGF1cmFfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMzg4LVxcdGlmICghcG9vbC1cXHUwMDNlZmNfYWRkcikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jOjEzODk6XFx0XFx0ZXJyID0gcW1lbV9hbGxvYyhwZnZmLVxcdTAwM2VkZXYsIFxcdTAwMjZwb29sLVxcdTAwM2VmY19hZGRyLCAxLCBPVFgyX0FMSUdOKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYy0xMzkwLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9jb21tb24uYz0xNDYwPWludCBvdHgyX3Bvb2xfYXFfaW5pdChzdHJ1Y3Qgb3R4Ml9uaWMgKnBmdmYsIHUxNiBwb29sX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmMtMTQ3MC1cXHQvKiBBbGxvYyBtZW1vcnkgZm9yIHN0YWNrIHdoaWNoIGlzIHVzZWQgdG8gc3RvcmUgYnVmZmVyIHBvaW50ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfY29tbW9uLmM6MTQ3MTpcXHRlcnIgPSBxbWVtX2FsbG9jKHBmdmYtXFx1MDAzZWRldiwgXFx1MDAyNnBvb2wtXFx1MDAzZXN0YWNrLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL25pYy9vdHgyX2NvbW1vbi5jLTE0NzItXFx0XFx0XFx0IHN0YWNrX3BhZ2VzLCBwZnZmLVxcdTAwM2Vody5zdGFja19wZ19ieXRlcyk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jPTU3OT1zdGF0aWMgdm9pZCAqY24yMGtfcGZ2Zl9tYm94X2FsbG9jKHN0cnVjdCBvdHgyX25pYyAqcGYsIGludCBudW12ZnMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9uaWMvb3R4Ml9wZi5jOjU4NDpcXHRlcnIgPSBxbWVtX2FsbG9jKFxcdTAwMjZwZi1cXHUwMDNlcGRldi1cXHUwMDNlZGV2LCBcXHUwMDI2bWJveF9hZGRyLCBudW12ZnMsIE1CT1hfU0laRSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvbmljL290eDJfcGYuYy01ODUtXFx0aWYgKGVycikge1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wMVQwODowMzoyMi45ODY0Nzg2NDhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTQxOTgwMzE3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqV29ydGhGdXp6aW5nIEFzc2Vzc21lbnQ6IE1hcnZlbGwgT2N0ZW9uVFgyIERyaXZlciBDaGFuZ2VzKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgaW5zdHJ1Y3Rpb25zIGFyZSBjbGVhcjogaWYgdGhlIHBhdGNoIHRvdWNoZXMgY29kZSB0aGF0J3MgaW1wb3NzaWJsZSB0byByZWFjaCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHRoZW4gYFdvcnRoRnV6emluZ2AgaXMgYGZhbHNlYC4gVGhhdCBtZWFucyBmb2N1c2luZyBvbiBoYXJkd2FyZSBkZXBlbmRlbmNpZXMuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgKHNwZWNpZmljYWxseSBgT0NURU9OVFgyX0FGYCwgYE9DVEVPTlRYMl9QRmAsIGBPQ1RFT05UWDJfVkZgKS4gSSBrbm93IHRoaXMgaXMgb2Z0ZW4gdXNlZCBpbiBTbWFydE5JQyBvciBTb0MgYXBwbGljYXRpb25zLCB3aGljaCBpcyBhIHJlZCBmbGFnLiBMZXQncyBzdGFydCBieSBsb29raW5nIGludG8gYGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyL2AuXG5cbkEgcXVpY2sgY2hlY2sgb2YgdGhlIGBLY29uZmlnYCBjb25maXJtcyBpdDogXCJNYXJ2ZWxsIE9jdGVvblRYMiBSVlUgQWRtaW4gRnVuY3Rpb24gZHJpdmVyLFwiIFwiTWFydmVsbCBPY3Rlb25UWDIgTklDIFBoeXNpY2FsIEZ1bmN0aW9uIGRyaXZlcixcIiBhbmQgXCJNYXJ2ZWxsIE9jdGVvblRYMiBOSUMgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuXCIgU291bmRzIGxpa2UgdmVuZG9yLXNwZWNpZmljIGhhcmR3YXJlIGFscmlnaHQuIE5vdywgbGV0J3MgdmVyaWZ5IHRob3NlIGRldmljZSBJRHMuLi4gIFl1cCwgVmVuZG9yIElEIGBQQ0lfVkVORE9SX0lEX0NBVklVTWAgKDB4MTc3ZCkuIEFuZCB0aGUgZGV2aWNlIElEcyBwb2ludCB0byB0aGUgYE9DVEVPTlRYMmAgc2VyaWVzIOKAkyBgUlZVX0FGYCwgYENHWGAsIGBMQktgLCBgUlZVX1BGYCwgYW5kIGBSVlVfVkZgLiBUaGVzZSBhcmUgZGVmaW5pdGVseSBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgKGFuZCBDTjEwSyAvIENOMjBLKSBuZXR3b3JrIHByb2Nlc3NpbmcgdW5pdCAvIFNtYXJ0TklDIC8gU29DIFBDSWUgZGV2aWNlcy5cblxuT2theSwgdGhpcyBpcyBwcmV0dHkgY29uY2x1c2l2ZS4gU3RhbmRhcmQgUUVNVSAqZG9lc24ndCogZW11bGF0ZSB0aGVzZSBkZXZpY2VzLiBUaGV5IHJlcXVpcmUgdGhlIGFjdHVhbCBwaHlzaWNhbCBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgaGFyZHdhcmUsIG9yIHNpbWlsYXIgc2lsaWNvbiBsaWtlIENOOXh4eC9DTjEweHh4L0NOMjB4eHguIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGVyZSBhcmUgbm8gZ2VuZXJpYyBvciBzb2Z0d2FyZSBlbXVsYXRpb24gbW9kZWxzIHdpdGhpbiBRRU1VLlxuXG5Ob3csIGxldCdzIHJldmlldyB0aGUgZ3VpZGVsaW5lIGFnYWluOiBcIi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlwiIE1hcnZlbGwgT2N0ZW9uVFgyLCBpbiB0aGlzIGNhc2UsIGZpdHMgdGhhdCBkZWZpbml0aW9uIHBlcmZlY3RseS5cblxuTm93IGZvciB0aGUgcGF0Y2ggaXRzZWxmLiBJdCBtb2RpZmllZCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvYWYvY29tbW9uLmhgLiBJdCBhZGRlZCBgb3R4Ml9kbWFfcGh5c19pbl9tYXNrYCwgYG90eDJfZG1hX2FsbG9jX2NvaGVyZW50YCwgYG90eDJfZG1hX2ZyZWVfY29oZXJlbnRgLCBhbmQgcmVwbGFjZWQgY2FsbHMgdG8gYGRtYV9hbGxvY19hdHRyc2AgYW5kIGBkbWFfZnJlZV9hdHRyc2Agd2l0aCBgb3R4Ml9kbWFfYWxsb2NfY29oZXJlbnRgIGFuZCBgb3R4Ml9kbWFfZnJlZV9jb2hlcmVudGAuIEFsbCB0aGUgY2hhbmdlcyBhcmUgKnN0cmljdGx5KiBjb250YWluZWQgd2l0aGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9tYXJ2ZWxsL29jdGVvbnR4Mi9gLlxuXG5UaGVyZWZvcmUsIHRoZXJlIGlzIG5vIGNvZGUgcGF0aCBmb3Igc3RhbmRhcmQgUUVNVSAvIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gVGhpcyBpcyBjbGVhcmx5IHVucmVhY2hhYmxlIHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBNYXJ2ZWxsIE9jdGVvblRYMiBoYXJkd2FyZS5cblxuVGh1cywgYmFzZWQgb24gdGhlIGluZm9ybWF0aW9uIGFuZCBhcHBseWluZyB0aGUgaW5zdHJ1Y3Rpb25zIGRpcmVjdGx5LCBJIGFtIHNldHRpbmc6XG5cbjEuICBgV29ydGhGdXp6aW5nYDogYGZhbHNlYFxuMi4gIGBSZWFzb25pbmdgOiBUaGUgcGF0Y2ggbW9kaWZpZXMgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyIGNvZGUgKE1hcnZlbGwgT2N0ZW9uVFgyKSBmb3IgaGFyZHdhcmUgdGhhdCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBzaW1pbGFyIHZpcnR1YWwgZW52aXJvbm1lbnRzLlxuMy4gIGBGb2N1c1N5bWJvbHNgOiBgW11gXG40LiAgYEVuYWJsZUNvbmZpZ3NgOiBgW11gXG5cblJlYWR5IHRvIGludm9rZSBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTM0NiwiT3V0cHV0VG9rZW5zIjoxMzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMDg5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDA4OjA2OjM3LjE4NDUxMzIzN1oiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgbWVtb3J5IGFsbG9jYXRpb24gcm91dGluZXMgKG90eDJfZG1hX2FsbG9jX2NvaGVyZW50L3FtZW1fYWxsb2MpIHdpdGhpbiB0aGUgTWFydmVsbCBPY3Rlb25UWDIgbmV0d29yayBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L21hcnZlbGwvb2N0ZW9udHgyLykuIFRoaXMgZHJpdmVyIHJlcXVpcmVzIHZlbmRvci1zcGVjaWZpYyBDYXZpdW0vTWFydmVsbCBPY3Rlb25UWDIgLyBDTjEwSyBoYXJkd2FyZSAoUENJZSBkZXZpY2VzKSB0aGF0IGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIHZpcnR1YWxpemVkIGNsb3VkIGVudmlyb25tZW50cyAobGlrZSBHQ0UpLCBtYWtpbmcgdGhlIG1vZGlmaWVkIGNvZGUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyAob3R4Ml9kbWFfYWxsb2NfY29oZXJlbnQvcW1lbV9hbGxvYykgd2l0aGluIHRoZSBNYXJ2ZWxsIE9jdGVvblRYMiBuZXR3b3JrIGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvbWFydmVsbC9vY3Rlb250eDIvKS4gVGhpcyBkcml2ZXIgcmVxdWlyZXMgdmVuZG9yLXNwZWNpZmljIENhdml1bS9NYXJ2ZWxsIE9jdGVvblRYMiAvIENOMTBLIGhhcmR3YXJlIChQQ0llIGRldmljZXMpIHRoYXQgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgdmlydHVhbGl6ZWQgY2xvdWQgZW52aXJvbm1lbnRzIChsaWtlIEdDRSksIG1ha2luZyB0aGUgbW9kaWZpZWQgY29kZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTAxVDA4OjA2OjM3LjE4NDUzOTAwNloiLCJTZXEiOjksIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflow7bcw2[1] Phase: Running StartedAt: 2026-09-01 08:06:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7bcw2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-01 08:06:48 +0000 UTC FinishedAt: 2026-09-01 08:06:52 +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,}