Name: series-workflow4pbk2 Phase: Failed StartedAt: 2026-08-30 15:32:51 +0000 UTC FinishedAt: 2026-08-30 16:24:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pbk2[0] Phase: Succeeded StartedAt: 2026-08-30 15:32:51 +0000 UTC FinishedAt: 2026-08-30 16:24:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pbk2[0].run-triage Phase: Succeeded StartedAt: 2026-08-30 15:32:51 +0000 UTC FinishedAt: 2026-08-30 16:24:30 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NDltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7bnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNTNiNzNmOTExMDQ0M2UwOGJlMjExNzIxNTlkNDlhMTE4ZTFhMmI3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTU6MzQ6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jIGIvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXG5pbmRleCA5YzE3MTY5N2U3NjIwLi4yYzA0YmU2ZDYxYTg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNcbkBAIC0xMjcsOCAmIzQzOzEyNywxMCBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3J4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIHtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxID0gcXBfZGF0YTtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLVx1MDAzZW50ZGV2O1xuJiM0MztcdHN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHM7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqbmV3X3NrYjtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgcmM7XG4gXG4gXHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG5AQCAtMTM5LDE3ICYjNDM7MTQxLDIwIEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsXG4gXHRuZXRkZXZfZGJnKG5kZXYsIFwmIzM0OyVzOiAlZCBieXRlIHBheWxvYWQgcmVjZWl2ZWRcXG5cJiMzNDssIF9fZnVuY19fLCBsZW4pO1xuIFxuIFx0aWYgKGxlbiBcdTAwM2MgMCkge1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Vycm9ycyk7XG4mIzQzO1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2xlbmd0aF9lcnJvcnMpO1xuIFx0XHRnb3RvIGVucXVldWVfYWdhaW47XG4gXHR9XG4gXG4tXHRuZGV2LVx1MDAzZXN0YXRzLnJ4X3BhY2tldHMmIzQzOyYjNDM7O1xuLVx0bmRldi1cdTAwM2VzdGF0cy5yeF9ieXRlcyAmIzQzOz0gbGVuO1xuJiM0MztcdHRzdGF0cyA9IHRoaXNfY3B1X3B0cihuZGV2LVx1MDAzZXRzdGF0cyk7XG4mIzQzO1x0ZmxhZ3MgPSB1NjRfc3RhdHNfdXBkYXRlX2JlZ2luX2lycXNhdmUoXHUwMDI2dHN0YXRzLVx1MDAzZXN5bmNwKTtcbiYjNDM7XHR1NjRfc3RhdHNfaW5jKFx1MDAyNnRzdGF0cy1cdTAwM2VyeF9wYWNrZXRzKTtcbiYjNDM7XHR1NjRfc3RhdHNfYWRkKFx1MDAyNnRzdGF0cy1cdTAwM2VyeF9ieXRlcywgbGVuKTtcbiYjNDM7XHR1NjRfc3RhdHNfdXBkYXRlX2VuZF9pcnFyZXN0b3JlKFx1MDAyNnRzdGF0cy1cdTAwM2VzeW5jcCwgZmxhZ3MpO1xuIFxuIFx0bmV3X3NrYiA9IG5ldGRldl9hbGxvY19za2IobmRldiwgbmRldi1cdTAwM2VtdHUgJiM0MzsgRVRIX0hMRU4pO1xuIFx0aWYgKCFuZXdfc2tiKSB7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Ryb3BwZWQpO1xuIFx0XHRnb3RvIGVucXVldWVfYWdhaW47XG4gXHR9XG4gXG5AQCAtMTY2LDggJiM0MzsxNzEsOCBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3J4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIFx0cmMgPSBudGJfdHJhbnNwb3J0X3J4X2VucXVldWUocXAsIHNrYiwgc2tiLVx1MDAzZWRhdGEsIG5kZXYtXHUwMDNlbXR1ICYjNDM7IEVUSF9ITEVOKTtcbiBcdGlmIChyYykge1xuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfZmlmb19lcnJvcnMmIzQzOyYjNDM7O1xuJiM0MztcdFx0REVWX1NUQVRTX0lOQyhuZGV2LCByeF9lcnJvcnMpO1xuJiM0MztcdFx0REVWX1NUQVRTX0lOQyhuZGV2LCByeF9maWZvX2Vycm9ycyk7XG4gXHR9XG4gfVxuIFxuQEAgLTIxMCwyNSAmIzQzOzIxNSwzOSBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIHtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxID0gcXBfZGF0YTtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLVx1MDAzZW50ZGV2O1xuJiM0MztcdHN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHRib29sIHJlZ2lzdGVyZWQ7XG4gXG4gXHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG4gXHRza2IgPSBkYXRhO1xuIFx0aWYgKCFza2IgfHwgIW5kZXYpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0cmVnaXN0ZXJlZCA9IFJFQURfT05DRShuZGV2LVx1MDAzZXJlZ19zdGF0ZSkgPT0gTkVUUkVHX1JFR0lTVEVSRUQ7XG4mIzQzO1x0aWYgKCFyZWdpc3RlcmVkKVxuJiM0MztcdFx0Z290byBmcmVlX3NrYjtcbiYjNDM7XG4gXHRpZiAobGVuIFx1MDAzZSAwKSB7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMudHhfcGFja2V0cyYjNDM7JiM0Mzs7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMudHhfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG4mIzQzO1x0XHQvKiBUaGUgbWVtY3B5IGt0aHJlYWQgY2FuIG1pZ3JhdGUsIHNvIHBpbiB0aGUgcGVyLUNQVSB1cGRhdGUuICovXG4mIzQzO1x0XHR0c3RhdHMgPSBnZXRfY3B1X3B0cihuZGV2LVx1MDAzZXRzdGF0cyk7XG4mIzQzO1x0XHRmbGFncyA9IHU2NF9zdGF0c191cGRhdGVfYmVnaW5faXJxc2F2ZShcdTAwMjZ0c3RhdHMtXHUwMDNlc3luY3ApO1xuJiM0MztcdFx0dTY0X3N0YXRzX2luYyhcdTAwMjZ0c3RhdHMtXHUwMDNldHhfcGFja2V0cyk7XG4mIzQzO1x0XHR1NjRfc3RhdHNfYWRkKFx1MDAyNnRzdGF0cy1cdTAwM2V0eF9ieXRlcywgc2tiLVx1MDAzZWxlbik7XG4mIzQzO1x0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZF9pcnFyZXN0b3JlKFx1MDAyNnRzdGF0cy1cdTAwM2VzeW5jcCwgZmxhZ3MpO1xuJiM0MztcdFx0cHV0X2NwdV9wdHIobmRldi1cdTAwM2V0c3RhdHMpO1xuIFx0fSBlbHNlIHtcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy50eF9lcnJvcnMmIzQzOyYjNDM7O1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzJiM0MzsmIzQzOztcbiYjNDM7XHRcdERFVl9TVEFUU19JTkMobmRldiwgdHhfZXJyb3JzKTtcbiYjNDM7XHRcdERFVl9TVEFUU19JTkMobmRldiwgdHhfYWJvcnRlZF9lcnJvcnMpO1xuIFx0fVxuIFxuJiM0MztmcmVlX3NrYjpcbiBcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXG4tXHRpZiAobnRiX3RyYW5zcG9ydF90eF9mcmVlX2VudHJ5KHFwKSBcdTAwM2U9IHR4X3N0YXJ0KSB7XG4mIzQzO1x0aWYgKHJlZ2lzdGVyZWQgXHUwMDI2XHUwMDI2IG50Yl90cmFuc3BvcnRfdHhfZnJlZV9lbnRyeShxcCkgXHUwMDNlPSB0eF9zdGFydCkge1xuIFx0XHQvKiBNYWtlIHN1cmUgYW55Ym9keSBzdG9wcGluZyB0aGUgcXVldWUgYWZ0ZXIgdGhpcyBzZWVzIHRoZSBuZXdcbiBcdFx0ICogdmFsdWUgb2YgbnRiX3RyYW5zcG9ydF90eF9mcmVlX2VudHJ5KClcbiBcdFx0ICovXG5AQCAtMjM3LDYgJiM0MzsyNTYsNyBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIFx0XHQgICAgbnRiX3RyYW5zcG9ydF9saW5rX3F1ZXJ5KHEtXHUwMDNlcXApKVxuIFx0XHRcdG5ldGlmX3dha2Vfc3VicXVldWUobmRldiwgcS1cdTAwM2VxaWQpO1xuIFx0fVxuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9xdWV1ZV9oYW5kbGVycyBudGJfbmV0ZGV2X2hhbmRsZXJzID0ge1xuQEAgLTI3Nyw3ICYjNDM7Mjk3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IG50Yl9uZXRkZXZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIGRyb3A6XG4gXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuLVx0bmRldi1cdTAwM2VzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOztcbiYjNDM7XHRERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Ryb3BwZWQpO1xuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiB9XG4gXG5AQCAtNjQ3LDYgJiM0Mzs2NjcsNyBAQCBzdGF0aWMgaW50IG50Yl9uZXRkZXZfcHJvYmUoc3RydWN0IGRldmljZSAqY2xpZW50X2RldilcbiBcdH1cbiBcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgPSBORVRJRl9GX0hJR0hETUE7XG4mIzQzO1x0bmRldi1cdTAwM2VwY3B1X3N0YXRfdHlwZSA9IE5FVERFVl9QQ1BVX1NUQVRfVFNUQVRTO1xuIFxuIFx0bmRldi1cdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MSVZFX0FERFJfQ0hBTkdFO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjQ5bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O250Yl9uZXRkZXYgKFZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0KSByZXF1aXJlcyBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIChOVEIpIGhhcmR3YXJlIGRldmljZXMgKHN1Y2ggYXMgSW50ZWwsIEFNRCwgSURULCBvciBTd2l0Y2h0ZWMgUENJZSBOVEIgY29udHJvbGxlcnMpLCB3aGljaCBhcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjb250cm9sbGVycyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTUzYjczZjkxMTA0NDNlMDhiZTIxMTcyMTU5ZDQ5YTExOGUxYTJiNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDMwIDE1OjM0OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jIGIvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jCmluZGV4IDljMTcxNjk3ZTc2MjAuLjJjMDRiZTZkNjFhODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L250Yl9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMKQEAgLTEyNyw4ICYjNDM7MTI3LDEwIEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsCiB7CiAJc3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnEgPSBxcF9kYXRhOwogCXN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLSZndDtudGRldjsKJiM0MzsJc3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0czsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqbmV3X3NrYjsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcmM7CiAKIAluZGV2ID0gZGV2LSZndDtuZGV2OwpAQCAtMTM5LDE3ICYjNDM7MTQxLDIwIEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsCiAJbmV0ZGV2X2RiZyhuZGV2LCAmIzM0OyVzOiAlZCBieXRlIHBheWxvYWQgcmVjZWl2ZWRcbiYjMzQ7LCBfX2Z1bmNfXywgbGVuKTsKIAogCWlmIChsZW4gJmx0OyAwKSB7Ci0JCW5kZXYtJmd0O3N0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7Ci0JCW5kZXYtJmd0O3N0YXRzLnJ4X2xlbmd0aF9lcnJvcnMmIzQzOyYjNDM7OwomIzQzOwkJREVWX1NUQVRTX0lOQyhuZGV2LCByeF9lcnJvcnMpOwomIzQzOwkJREVWX1NUQVRTX0lOQyhuZGV2LCByeF9sZW5ndGhfZXJyb3JzKTsKIAkJZ290byBlbnF1ZXVlX2FnYWluOwogCX0KIAotCW5kZXYtJmd0O3N0YXRzLnJ4X3BhY2tldHMmIzQzOyYjNDM7OwotCW5kZXYtJmd0O3N0YXRzLnJ4X2J5dGVzICYjNDM7PSBsZW47CiYjNDM7CXRzdGF0cyA9IHRoaXNfY3B1X3B0cihuZGV2LSZndDt0c3RhdHMpOwomIzQzOwlmbGFncyA9IHU2NF9zdGF0c191cGRhdGVfYmVnaW5faXJxc2F2ZSgmYW1wO3RzdGF0cy0mZ3Q7c3luY3ApOwomIzQzOwl1NjRfc3RhdHNfaW5jKCZhbXA7dHN0YXRzLSZndDtyeF9wYWNrZXRzKTsKJiM0MzsJdTY0X3N0YXRzX2FkZCgmYW1wO3RzdGF0cy0mZ3Q7cnhfYnl0ZXMsIGxlbik7CiYjNDM7CXU2NF9zdGF0c191cGRhdGVfZW5kX2lycXJlc3RvcmUoJmFtcDt0c3RhdHMtJmd0O3N5bmNwLCBmbGFncyk7CiAKIAluZXdfc2tiID0gbmV0ZGV2X2FsbG9jX3NrYihuZGV2LCBuZGV2LSZndDttdHUgJiM0MzsgRVRIX0hMRU4pOwogCWlmICghbmV3X3NrYikgewotCQluZGV2LSZndDtzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOzsKJiM0MzsJCURFVl9TVEFUU19JTkMobmRldiwgcnhfZHJvcHBlZCk7CiAJCWdvdG8gZW5xdWV1ZV9hZ2FpbjsKIAl9CiAKQEAgLTE2Niw4ICYjNDM7MTcxLDggQEAgc3RhdGljIHZvaWQgbnRiX25ldGRldl9yeF9oYW5kbGVyKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCwgdm9pZCAqcXBfZGF0YSwKIAlyYyA9IG50Yl90cmFuc3BvcnRfcnhfZW5xdWV1ZShxcCwgc2tiLCBza2ItJmd0O2RhdGEsIG5kZXYtJmd0O210dSAmIzQzOyBFVEhfSExFTik7CiAJaWYgKHJjKSB7CiAJCWRldl9rZnJlZV9za2JfYW55KHNrYik7Ci0JCW5kZXYtJmd0O3N0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7Ci0JCW5kZXYtJmd0O3N0YXRzLnJ4X2ZpZm9fZXJyb3JzJiM0MzsmIzQzOzsKJiM0MzsJCURFVl9TVEFUU19JTkMobmRldiwgcnhfZXJyb3JzKTsKJiM0MzsJCURFVl9TVEFUU19JTkMobmRldiwgcnhfZmlmb19lcnJvcnMpOwogCX0KIH0KIApAQCAtMjEwLDI1ICYjNDM7MjE1LDM5IEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfdHhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsCiB7CiAJc3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnEgPSBxcF9kYXRhOwogCXN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLSZndDtudGRldjsKJiM0MzsJc3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0czsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwlib29sIHJlZ2lzdGVyZWQ7CiAKIAluZGV2ID0gZGV2LSZndDtuZGV2OwogCXNrYiA9IGRhdGE7CiAJaWYgKCFza2IgfHwgIW5kZXYpCiAJCXJldHVybjsKIAomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CXJlZ2lzdGVyZWQgPSBSRUFEX09OQ0UobmRldi0mZ3Q7cmVnX3N0YXRlKSA9PSBORVRSRUdfUkVHSVNURVJFRDsKJiM0MzsJaWYgKCFyZWdpc3RlcmVkKQomIzQzOwkJZ290byBmcmVlX3NrYjsKJiM0MzsKIAlpZiAobGVuICZndDsgMCkgewotCQluZGV2LSZndDtzdGF0cy50eF9wYWNrZXRzJiM0MzsmIzQzOzsKLQkJbmRldi0mZ3Q7c3RhdHMudHhfYnl0ZXMgJiM0Mzs9IHNrYi0mZ3Q7bGVuOwomIzQzOwkJLyogVGhlIG1lbWNweSBrdGhyZWFkIGNhbiBtaWdyYXRlLCBzbyBwaW4gdGhlIHBlci1DUFUgdXBkYXRlLiAqLwomIzQzOwkJdHN0YXRzID0gZ2V0X2NwdV9wdHIobmRldi0mZ3Q7dHN0YXRzKTsKJiM0MzsJCWZsYWdzID0gdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbl9pcnFzYXZlKCZhbXA7dHN0YXRzLSZndDtzeW5jcCk7CiYjNDM7CQl1NjRfc3RhdHNfaW5jKCZhbXA7dHN0YXRzLSZndDt0eF9wYWNrZXRzKTsKJiM0MzsJCXU2NF9zdGF0c19hZGQoJmFtcDt0c3RhdHMtJmd0O3R4X2J5dGVzLCBza2ItJmd0O2xlbik7CiYjNDM7CQl1NjRfc3RhdHNfdXBkYXRlX2VuZF9pcnFyZXN0b3JlKCZhbXA7dHN0YXRzLSZndDtzeW5jcCwgZmxhZ3MpOwomIzQzOwkJcHV0X2NwdV9wdHIobmRldi0mZ3Q7dHN0YXRzKTsKIAl9IGVsc2UgewotCQluZGV2LSZndDtzdGF0cy50eF9lcnJvcnMmIzQzOyYjNDM7OwotCQluZGV2LSZndDtzdGF0cy50eF9hYm9ydGVkX2Vycm9ycyYjNDM7JiM0Mzs7CiYjNDM7CQlERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Vycm9ycyk7CiYjNDM7CQlERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Fib3J0ZWRfZXJyb3JzKTsKIAl9CiAKJiM0MztmcmVlX3NrYjoKIAlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCi0JaWYgKG50Yl90cmFuc3BvcnRfdHhfZnJlZV9lbnRyeShxcCkgJmd0Oz0gdHhfc3RhcnQpIHsKJiM0MzsJaWYgKHJlZ2lzdGVyZWQgJmFtcDsmYW1wOyBudGJfdHJhbnNwb3J0X3R4X2ZyZWVfZW50cnkocXApICZndDs9IHR4X3N0YXJ0KSB7CiAJCS8qIE1ha2Ugc3VyZSBhbnlib2R5IHN0b3BwaW5nIHRoZSBxdWV1ZSBhZnRlciB0aGlzIHNlZXMgdGhlIG5ldwogCQkgKiB2YWx1ZSBvZiBudGJfdHJhbnNwb3J0X3R4X2ZyZWVfZW50cnkoKQogCQkgKi8KQEAgLTIzNyw2ICYjNDM7MjU2LDcgQEAgc3RhdGljIHZvaWQgbnRiX25ldGRldl90eF9oYW5kbGVyKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCwgdm9pZCAqcXBfZGF0YSwKIAkJICAgIG50Yl90cmFuc3BvcnRfbGlua19xdWVyeShxLSZndDtxcCkpCiAJCQluZXRpZl93YWtlX3N1YnF1ZXVlKG5kZXYsIHEtJmd0O3FpZCk7CiAJfQomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBudGJfcXVldWVfaGFuZGxlcnMgbnRiX25ldGRldl9oYW5kbGVycyA9IHsKQEAgLTI3Nyw3ICYjNDM7Mjk3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IG50Yl9uZXRkZXZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiBkcm9wOgogCWRldl9rZnJlZV9za2JfYW55KHNrYik7Ci0JbmRldi0mZ3Q7c3RhdHMudHhfZHJvcHBlZCYjNDM7JiM0Mzs7CiYjNDM7CURFVl9TVEFUU19JTkMobmRldiwgdHhfZHJvcHBlZCk7CiAJcmV0dXJuIE5FVERFVl9UWF9PSzsKIH0KIApAQCAtNjQ3LDYgJiM0Mzs2NjcsNyBAQCBzdGF0aWMgaW50IG50Yl9uZXRkZXZfcHJvYmUoc3RydWN0IGRldmljZSAqY2xpZW50X2RldikKIAl9CiAKIAluZGV2LSZndDtmZWF0dXJlcyA9IE5FVElGX0ZfSElHSERNQTsKJiM0MzsJbmRldi0mZ3Q7cGNwdV9zdGF0X3R5cGUgPSBORVRERVZfUENQVV9TVEFUX1RTVEFUUzsKIAogCW5kZXYtJmd0O3ByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5UQiBOZXRkZXYgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvbnRiX25ldGRldi5jYC4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGluc3RpbmN0cyBraWNrIGluLiBXaGF0JiMzOTtzIGBudGJfbmV0ZGV2YCBhbGwgYWJvdXQ/IElzIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGNhbiBpdCBiZSBlbXVsYXRlZD8gRG9lcyBpdCByZWx5IG9uIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgZnVuY3Rpb25hbGl0eSB0aGF0IG1pZ2h0IGJlIHZpcnR1YWxpemVkLCBlbXVsYXRlZCwgb3IsIGluIGNvbnRyYXN0LCBtYW5kYXRlIGNlcnRhaW4gcGh5c2ljYWwgaGFyZHdhcmUgY29tcG9uZW50cz8gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZm91bmRhdGlvbiBoZXJlIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAuCgpNeSBuZXh0IG1vdmUgaXMgdG8gYnJvYWRlbiB0aGUgc2VhcmNoLiBJIG5lZWQgdG8gZXhhbWluZSBgZHJpdmVycy9udGIvYCBhbmQgdGhlbiB0aGUgdGFyZ2V0IGZpbGUgYGRyaXZlcnMvbmV0L250Yl9uZXRkZXYuY2AgYW5kIGFsc28gdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlcywgZXNwZWNpYWxseSBmb3IgdGhlIGBudGJgIGFuZCBgbmV0YCBzZWN0aW9ucy4gVGhlc2UgY29uZmlnIGZpbGVzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zLgoKVG8gYWNjZWxlcmF0ZSB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIG15IHRvb2xzLiBJJiMzOTtsbCByZWFjaCBmb3IgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGVmZmljaWVudGx5IHBhcnNlIGBudGJfbmV0ZGV2LmNgIGFuZCBwZWVrIGludG8gYGRyaXZlcnMvbnRiL0tjb25maWdgIG9yIGBkcml2ZXJzL25ldC9LY29uZmlnYCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY29udGludWUgbXkgYW5hbHlzaXMgYW5kIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHBhdGNoJiMzOTtzIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TlRCX05FVERFViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MzcwPWNvbmZpZyBORVRfUE9MTF9DT05UUk9MTEVSXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzItXG5kcml2ZXJzL25ldC9LY29uZmlnOjM3Mzpjb25maWcgTlRCX05FVERFVlxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L01ha2VmaWxlPTgyPW9iai0kKENPTkZJR19IWVBFUlZfTkVUKSAmIzQzOz0gaHlwZXJ2L1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX05UQl9ORVRERVYpICYjNDM7PSBudGJfbmV0ZGV2Lm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTg0LVxuLS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xMi1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzoxMzojZGVmaW5lIE5UQl9ORVRERVZfVkVSXHRcJiMzNDswLjdcJiMzNDtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xNC1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz0xNT1NT0RVTEVfREVTQ1JJUFRJT04oS0JVSUxEX01PRE5BTUUpO1xuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjE2Ok1PRFVMRV9WRVJTSU9OKE5UQl9ORVRERVZfVkVSKTtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xNy1NT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz0yNz1zdGF0aWMgdW5zaWduZWQgaW50IHR4X3N0b3AgPSA1O1xuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTI4LVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjI5OiNkZWZpbmUgTlRCX05FVERFVl9NQVhfUVVFVUVTXHRcdDY0XG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6MzA6I2RlZmluZSBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTXHQxXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtMzEtXG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jPTQ1OD1zdGF0aWMgdm9pZCBudGJfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTQ2My1cdHN0cnNjcHkoaW5mby1cdTAwM2Vkcml2ZXIsIEtCVUlMRF9NT0ROQU1FLCBzaXplb2YoaW5mby1cdTAwM2Vkcml2ZXIpKTtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo0NjQ6XHRzdHJzY3B5KGluZm8tXHUwMDNldmVyc2lvbiwgTlRCX05FVERFVl9WRVIsIHNpemVvZihpbmZvLVx1MDAzZXZlcnNpb24pKTtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy00NjUtXHRzdHJzY3B5KGluZm8tXHUwMDNlYnVzX2luZm8sIHBjaV9uYW1lKGRldi1cdTAwM2VwZGV2KSwgc2l6ZW9mKGluZm8tXHUwMDNlYnVzX2luZm8pKTtcbi0tXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM9NjM2PXN0YXRpYyBpbnQgbnRiX25ldGRldl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpjbGllbnRfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy02NDktXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6NjUwOlx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqZGV2KSwgTlRCX05FVERFVl9NQVhfUVVFVUVTKTtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy02NTEtXHRpZiAoIW5kZXYpXG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTY2MS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo2NjI6XHRkZXYtXHUwMDNlcXVldWVzID0ga3phbGxvY19vYmpzKCpkZXYtXHUwMDNlcXVldWVzLCBOVEJfTkVUREVWX01BWF9RVUVVRVMsXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjYzLVx0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTY4NS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo2ODY6XHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTOyBxJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTY4Ny1cdFx0c3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnF1ZXVlID0gXHUwMDI2ZGV2LVx1MDAzZXF1ZXVlc1txXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTE2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBOVEIgSW1wbGVtZW50YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIE5UQiBidXNpbmVzcyBhbmQgZmlndXJlIG91dCB0aGUgbml0dHktZ3JpdHR5IG9mIGl0cyBvcGVyYXRpb24uIE15IHByaW1hcnkgZm9jdXMgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyIGxhbmRzY2FwZSwgdGhlIGRpZmZlcmVudCBwbGF5ZXJzIGltcGxlbWVudGluZyBOVEIgdHJhbnNwb3J0LiBJIG5lZWQgdG8gaWRlbnRpZnkgd2hpY2ggZHJpdmVycyBoYW5kbGUgdGhlIHRyYW5zcG9ydCBpdHNlbGYsIHdoaWNoIG9uZXMgYWN0IGFzIE5UQiBjbGllbnRzLCBhbmQgd2hldGhlciB0aGVzZSBhcmUgaGFyZHdhcmUtc3BlY2lmaWMsIHV0aWxpemUgZHVtbXkgaW1wbGVtZW50YXRpb25zLCBvciBlbXBsb3kgZW11bGF0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJJiMzOTtsbCBpbml0aWF0ZSBhIGZvY3VzZWQgc2VhcmNoLiBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoZSBrZXJuZWwgY29kZSB1c2luZyBrZXl3b3JkcyBsaWtlIGBudGJfcmVnaXN0ZXJfY2xpZW50YCBhbmQgYG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50YC4gVGhlc2UgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIGJlIHRoZSBicmVhZGNydW1icyBJIG5lZWQgdG8gdHJhY2UgdGhlIE5UQiBjbGllbnQgcmVnaXN0cmF0aW9uIHByb2Nlc3MgYW5kLCBob3BlZnVsbHksIHJldmVhbCB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBkcml2ZXIgaW50ZXJhY3Rpb25zLiBUaGlzIHRhcmdldGVkIGFwcHJvYWNoIGlzIGNydWNpYWwgZm9yIGVmZmljaWVudGx5IG1hcHBpbmcgb3V0IHRoZSBzb2Z0d2FyZSBjb21wb25lbnRzIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbnRiX25ldGRldi5jPTc1Mj1zdGF0aWMgaW50IF9faW5pdCBudGJfbmV0ZGV2X2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTc1NS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo3NTY6XHRyYyA9IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldihLQlVJTERfTU9ETkFNRSk7XG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNzU3LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy03NTktXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6NzYwOlx0cmMgPSBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudChcdTAwMjZudGJfbmV0ZGV2X2NsaWVudCk7XG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNzYxLVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTM5NT1FWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3VucmVnaXN0ZXJfY2xpZW50X2Rldik7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM5Ny0vKipcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozOTg6ICogbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkZXZpY2VcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zOTktICogQGRldmljZV9uYW1lOiBOYW1lIG9mIE5UQiBjbGllbnQgZGV2aWNlXG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQwNC0gKi9cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzo0MDU6aW50IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldihjaGFyICpkZXZpY2VfbmFtZSlcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MDYte1xuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NTEtfVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQ1MjpFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYpO1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1My1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NTQtLyoqXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDU1OiAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkcml2ZXJcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NTYtICogQGRydjogTlRCIGNsaWVudCBkcml2ZXIgdG8gYmUgcmVnaXN0ZXJlZFxuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NjEtICovXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDYyOmludCBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9jbGllbnQgKmRydilcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NjMte1xuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NzAtfVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQ3MTpFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudCk7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDcyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NjEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGUgTlRCIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTlRCIGRyaXZlciBzaXR1YXRpb24uIEZpcnN0LCBJJiMzOTtsbCBoZWFkIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL250Yi9gLiBJJiMzOTttIGN1cmlvdXM6IGRvZXMgdGhpcyBkaXJlY3RvcnkgaG91c2UgZHJpdmVycyBmb3IgKmJvdGgqIHZpcnR1YWwgb3IgJiMzNDtkdW1teSYjMzQ7IE5UQiBoYXJkd2FyZSwgYW5kIHRoZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHN3aXRjaGVzPyBJdCYjMzk7cyBpbXBvcnRhbnQgdG8ga25vdyB0aGUgc2NvcGUgb2Ygd2hhdCYjMzk7cyBzdXBwb3J0ZWQuIFRvIGZpbmQgb3V0LCBJJiMzOTttIGdvaW5nIHRvIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBgZHJpdmVycy9udGJgIGRpcmVjdG9yeSBpdHNlbGYuIFRoZW4sIEkgd2lsbCBpbnNwZWN0IGl0cyBzdWJkaXJlY3RvcmllcyBhbmQgS2NvbmZpZyBmaWxlcyDigJMgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkcml2ZXImIzM5O3Mgb3ZlcmFsbCBzdHJ1Y3R1cmUsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIHRoZSB0eXBlcyBvZiBOVEIgZGV2aWNlcyBpdCYjMzk7cyBtZWFudCB0byBzdXBwb3J0LiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9udGImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7bXNpLmMmIzM0OywKICAgICYjMzQ7bnRiX3RyYW5zcG9ydC5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2h3JiMzNDssCiAgICAmIzM0O3Rlc3QmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMzkKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTlRCIFN1YnN5c3RlbSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgTlRCIGNvZGUgYmFzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgYW5kIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIGJlZm9yZSBJIGNhbiBhc3Nlc3MgYW55dGhpbmcgbmV3LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgd2l0aCBgZHJpdmVycy9udGIvdGVzdC9gIHRvIHNlZSB3aGF0IGtpbmQgb2YgdGVzdCBjYXNlcyBhcmUgaW4gcGxhY2UuIEFyZSB0aGV5IGNvbXByZWhlbnNpdmU/IERvIHRoZXkgY292ZXIgdGhlIHNjZW5hcmlvcyBJJiMzOTttIGludGVyZXN0ZWQgaW4/IFdoYXQmIzM5O3MgdGhlaXIgdGVzdGluZyBzdHJhdGVneT8gVGhlbiwgSSBoYXZlIHRvIGxvb2sgaW50byBgZHJpdmVycy9udGIvaHcvYCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMsIHJlZ2lzdGVyIGxheW91dHMsIGFuZCBhbnkgcXVpcmtzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGxvdy1sZXZlbCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBpcyBoYW5kbGVkLiBGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL250Yi9LY29uZmlnYC4gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBpc3N1ZSBvciBmZWF0dXJlIEkmIzM5O20gY3VycmVudGx5IGZvY3VzZWQgb24uIFRoaXMgcXVpY2sgdHJpYWdlIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGV2YWx1YXRpbmcgYW5kIGNvbnRyaWJ1dGluZyB0byB0aGUgTlRCIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL3Rlc3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtudGJfbXNpX3Rlc3QuYyYjMzQ7LAogICAgJiMzNDtudGJfcGVyZi5jJiMzNDssCiAgICAmIzM0O250Yl9waW5ncG9uZy5jJiMzNDssCiAgICAmIzM0O250Yl90b29sLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDg2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBIYXJkd2FyZSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBOZXR3b3JrIFRyYW5zcG9ydCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGNvcmUgZHJpdmVycyBhbmQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTlRCIGhhcmR3YXJlIGlzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbnRiL2h3L2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcyB0aGF0IGRpcmVjdGx5IGludGVyZmFjZSB3aXRoIHRoZSBzaWxpY29uLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyAob3IgdGhlIHBhaW4hKSBoYXBwZW5zLCBzbyBsZXQmIzM5O3Mgc3RhcnQgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL250Yi9odyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBudWxsLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2FtZCYjMzQ7LAogICAgJiMzNDtlcGYmIzM0OywKICAgICYjMzQ7aWR0JiMzNDssCiAgICAmIzM0O2ludGVsJiMzNDssCiAgICAmIzM0O21zY2MmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzAyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIE5UQi9FUEYgRW11bGF0aW9uIFN0cmF0ZWdpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIE5UQi9FUEYgc2l0dWF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIHdoYXQga2luZCBvZiBoYXJkd2FyZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBleGlzdHMgd2l0aGluIHRoZSBkcml2ZXIgc3RydWN0dXJlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBkcml2ZXJzL250Yi9ody9lcGZgIGRpcmVjdG9yeSwgb3IgcG90ZW50aWFsbHkgb3RoZXIgaGFyZHdhcmUtcmVsYXRlZCBkaXJlY3Rvcmllcy4gSSBuZWVkIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIHRvIHNlZSBpZiBpdCYjMzk7cyBldmVuIGZlYXNpYmxlIHRvIGVtdWxhdGUgdGhpcy4KCkFoYSEgYGVwZmAgaXMgUENJIEVuZHBvaW50IEZyYW1ld29yay4gVGhhdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBUaGUgYmlnIHF1ZXN0aW9uIGlzOiBjYW4gd2UgZ2V0IGF3YXkgd2l0aCBlbXVsYXRpbmcgdGhlIEVuZHBvaW50IEZyYW1ld29yayB3aXRoaW4gUUVNVSBvciBldmVuIHdpdGggc29tZSBzb3J0IG9mIGR1bW15IGltcGxlbWVudGF0aW9uPyBUaGF0JiMzOTtzIHdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaGVyZS4KClNvLCBJJiMzOTtsbCBzdGFydCBieSBzeXN0ZW1hdGljYWxseSBleGFtaW5pbmcgdGhlIGNvZGUgaW4gYGRyaXZlcnMvbnRiL2h3L2VwZi9gLCBhbmQgdGhlbiBwaXZvdCBvdmVyIHRvIGBkcml2ZXJzL3BjaS9lbmRwb2ludC9gIHRvIHNlZSB3aGF0IHVzZWZ1bCBidWlsZGluZyBibG9ja3MgYWxyZWFkeSBleGlzdCB0aGF0IEkgY2FuIGxldmVyYWdlLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGUgdHJhbnNwb3J0IGxheWVyIGl0c2VsZiDigJMgd2hhdCBhYm91dCBgbnRiX3RyYW5zcG9ydGA/IFRoYXQmIzM5O3MgZGVmaW5pdGVseSByZWxldmFudC4KCkZpbmFsbHksIEkmIzM5O2xsIHdhbnQgdG8gbGV2ZXJhZ2UgdGhlIGBkcml2ZXJzL250Yi9LY29uZmlnYCB0byBkaXNjb3ZlciB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSBhdmFpbGFibGUsIG9yIHdoYXQgbWlnaHQgYmUgZGVwZW5kZW50IG9uLiBNYXliZSBJIGNhbiB1c2UgcmVhZC1maWxlIG9yIGdyZXBwZXIsIGRlcGVuZGluZyBvbiB0aGUgdG9vbGNoYWluLCB0byBlZmZpY2llbnRseSBwdWxsIG91dCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdGhlIGJpZyBwaWN0dXJlLCBhbmQgaG93IHRoZSBkaWZmZXJlbnQgZHJpdmVycyByZWxhdGUgdG8gZWFjaCBvdGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5UQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbnRiL0tjb25maWc6MjptZW51Y29uZmlnIE5UQlxuZHJpdmVycy9udGIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Tm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udGIvS2NvbmZpZz0xND1pZiBOVEJcbmRyaXZlcnMvbnRiL0tjb25maWctMTUtXG5kcml2ZXJzL250Yi9LY29uZmlnOjE2OmNvbmZpZyBOVEJfTVNJXG5kcml2ZXJzL250Yi9LY29uZmlnLTE3LVx0Ym9vbCBcJiMzNDtNU0kgSW50ZXJydXB0IFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL250Yi9LY29uZmlnPTI5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL250Yi90ZXN0L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbnRiL0tjb25maWctMzAtXG5kcml2ZXJzL250Yi9LY29uZmlnOjMxOmNvbmZpZyBOVEJfVFJBTlNQT1JUXG5kcml2ZXJzL250Yi9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TlRCIFRyYW5zcG9ydCBDbGllbnRcJiMzNDtcbi0tXG5kcml2ZXJzL250Yi9ody9hbWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9udGIvaHcvYW1kL0tjb25maWc6Mjpjb25maWcgTlRCX0FNRFxuZHJpdmVycy9udGIvaHcvYW1kL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FNRCBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL250Yi9ody9lcGYvS2NvbmZpZzoxOmNvbmZpZyBOVEJfRVBGXG5kcml2ZXJzL250Yi9ody9lcGYvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBFUEYgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udGIvaHcvaWR0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbnRiL2h3L2lkdC9LY29uZmlnOjI6Y29uZmlnIE5UQl9JRFRcbmRyaXZlcnMvbnRiL2h3L2lkdC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgUENJZS1zd2l0Y2ggTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9udGIvaHcvaW50ZWwvS2NvbmZpZzoyOmNvbmZpZyBOVEJfSU5URUxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnRiL2h3L21zY2MvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9udGIvaHcvbXNjYy9LY29uZmlnOjI6Y29uZmlnIE5UQl9TV0lUQ0hURUNcbmRyaXZlcnMvbnRiL2h3L21zY2MvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9TZW1pIFN3aXRjaHRlYyBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzoyOmNvbmZpZyBOVEJfUElOR1BPTkdcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRCIFBpbmcgUG9uZyBUZXN0IENsaWVudFwmIzM0O1xuLS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzoxMTpjb25maWcgTlRCX1RPT0xcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0xMi1cdHRyaXN0YXRlIFwmIzM0O05UQiBEZWJ1Z2dpbmcgVG9vbCBUZXN0IENsaWVudFwmIzM0O1xuLS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzoyMjpjb25maWcgTlRCX1BFUkZcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O05UQiBSQVcgUGVyZiBNZWFzdXJpbmcgVG9vbFwmIzM0O1xuLS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0yOS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzozMDpjb25maWcgTlRCX01TSV9URVNUXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMzEtXHR0cmlzdGF0ZSBcJiMzNDtOVEIgTVNJIFRlc3QgQ2xpZW50XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgTlRCX05FVERFVioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgTlRCX05FVERFVmAgaXMgZGVmaW5lZCwgb3IgYXQgbGVhc3QgaG93IGl0JiMzOTtzIGhhbmRsZWQsIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBpdCYjMzk7cyBuZXR3b3JrLXJlbGF0ZWQsIGlzIHRvIGxvb2sgaW4gYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgZm9yIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHBlcnRhaW5pbmcgdG8gbmV0d29ya2luZyBoYXJkd2FyZS4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBkZWZpbmVkIGFuZCBkb2N1bWVudGVkIGNsZWFybHkgdGhlcmUsIGluY2x1ZGluZyBhbnkgZGVwZW5kZW5jaWVzIG9yIGhlbHAgdGV4dC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIGl0JiMzOTtsbCBiZSBkZWZpbmVkIGhlcmUgb3IgaW5jbHVkZWQgZnJvbSBhbm90aGVyIEtjb25maWcgZmlsZS4gTGV0JiMzOTtzIGdvIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM3MDpcdGNvbmZpZyBORVRfUE9MTF9DT05UUk9MTEVSXG4gMzcxOlx0XHRkZWZfYm9vbCBORVRQT0xMXG4gMzcyOlx0XG4gMzczOlx0Y29uZmlnIE5UQl9ORVRERVZcbiAzNzQ6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0XCYjMzQ7XG4gMzc1Olx0XHRkZXBlbmRzIG9uIE5UQl9UUkFOU1BPUlRcbiAzNzY6XHRcbiAzNzc6XHRjb25maWcgUklPTkVUXG4gMzc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gMzc5Olx0XHRkZXBlbmRzIG9uIFJBUElESU9cbiAzODA6XHRcbiAzODE6XHRjb25maWcgUklPTkVUX1RYX1NJWkVcbiAzODI6XHRcdGludCBcJiMzNDtOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBSSU9ORVRcbiAzODQ6XHRcdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4gMzg1Olx0XG4gMzg2Olx0Y29uZmlnIFJJT05FVF9SWF9TSVpFXG4gMzg3Olx0XHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGluYm91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuIDM4ODpcdFx0ZGVwZW5kcyBvbiBSSU9ORVRcbiAzODk6XHRcdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NzUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIE5UQiBIYXJkd2FyZSBhbmQgVmlydHVhbGl6YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgTlRCIGhhcmR3YXJlIGFuZCBjbGllbnRzIGludGVyYWN0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGFuIE5UQiBkZXZpY2Ugd2l0aG91dCBwaHlzaWNhbGx5IGhhdmluZyB0aGUgaGFyZHdhcmU/IEkgcmVtZW1iZXIgdGhlcmUgYmVpbmcgc29tZSBvcHRpb25zIGZvciB2aXJ0dWFsIE5UQiBkZXZpY2VzLiBMZXQgbWUgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGNvZGUuIEkmIzM5O2xsIGZvY3VzIG9uIHBvdGVudGlhbCBhcmVhczogYGRyaXZlcnMvbnRiL2h3L2VwZi9gLCBgZHJpdmVycy9wY2kvZW5kcG9pbnQvYCwgYW5kLCBhcyBJIHJlY2FsbCwgdmlydHVhbCBOVEIgZGV2aWNlIGRyaXZlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHdvcmtzLiBBaCwgd2FpdCBhIG1pbnV0ZSEgQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhlIHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGhpZ2hlci1sZXZlbCB2aWV3IGFuZCBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgYW5kIHRoZSBzb3VyY2UgZmlsZXMgd2l0aGluIGBkcml2ZXJzL250Yi9ody9lcGYvYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBhcmNoaXRlY3R1cmFsIG92ZXJ2aWV3cy4gVGhhdCBzZWVtcyBsaWtlIGEgc21hcnRlciwgbW9yZSBlZmZpY2llbnQgYXBwcm9hY2ggdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL2h3L2VwZi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIE5UQl9FUEZcbiAgIDI6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgRVBGIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ugc3VwcG9ydFwmIzM0O1xuICAgMzpcdFx0aGVscFxuICAgNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBFUEYgTlRCIG9uIGNvbmZpZ3VyYWJsZSBlbmRwb2ludC5cbiAgIDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg4OAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEVQRiBNYWtlZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHRoZSBFUEYgaGFyZHdhcmUgc3VwcG9ydCB3aXRoaW4gdGhlIE5UQiBkcml2ZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL250Yi9ody9lcGYvTWFrZWZpbGVgLiBUaGlzIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIEVQRiBzcGVjaWZpYyBkcml2ZXJzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkIGludG8gdGhlIGxhcmdlciBOVEIgZnJhbWV3b3JrLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgaXQgaGFuZGxlcyB0aGluZ3MgbGlrZSBzb3VyY2UgZmlsZSBpbmNsdXNpb24sIGFueSBzcGVjaWZpYyBmbGFncyBpdCB1c2VzIGZvciB0aGUgRVBGIGhhcmR3YXJlLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbnMgYmFzZWQgb24gcGxhdGZvcm0gb3IgY29uZmlndXJhdGlvbi4gQXJlIHRoZXJlIGFueSBzcGVjaWFsIGJ1aWxkIHRhcmdldHMgZGVmaW5lZCBoZXJlIHNwZWNpZmljYWxseSBmb3IgdGhlIEVQRj8gV2hhdCYjMzk7cyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBNYWtlZmlsZSBhbmQgdGhlIG92ZXJhbGwgTlRCIGRyaXZlciYjMzk7cyBidWlsZCBzeXN0ZW0/IEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJldmlldyBpdCBhbmQgdGhlbiBwcm9iYWJseSBpbnNwZWN0IHRoZSBpbmNsdWRlZCBzb3VyY2UgZmlsZXMgbmV4dCB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIEhvcGVmdWxseSwgdGhpcyBNYWtlZmlsZSBpcyB3ZWxsLWNvbW1lbnRlZCBhbmQgb3JnYW5pemVkLi4uIGxldCYjMzk7cyBzZWUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL2h3L2VwZiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O250Yl9od19lcGYuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNzEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBudGJfaHdfZXBmLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIGBudGJfaHdfZXBmLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyBnZWFyZWQgdG93YXJkIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIE5UQiAoTmV0d29yayBUcmFuc3BvcnQgQnJpZGdlKSBoYXJkd2FyZSBlbnZpcm9ubWVudC4gR2l2ZW4gdGhlIGZpbGUgbmFtZSwgSSYjMzk7bSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIGxvdy1sZXZlbCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBzcGVjaWZpYyB0byB0aGUgRVBGIChFbmhhbmNlZCBQYWNrZXQgRmlsdGVyaW5nLCBvciB3aGF0ZXZlciB0aGUgc3BlY2lmaWMgdmVuZG9yIGNhbGxzIHRoZWlyIGhhcmR3YXJlJiMzOTtzIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzKS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl04oCZcyBoYW5kbGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCBvZiBwYWNrZXQgZmlsdGVyaW5nIGxvZ2ljLiBJcyBpdCBzZXR0aW5nIHVwIGZpbHRlciBydWxlcywgbWFuYWdpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIGRpcmVjdGx5LCBvciBpbnRlcmFjdGluZyB3aXRoIHNvbWUgYWJzdHJhY3Rpb24gbGF5ZXI/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscyB0byB1bmRlcnN0YW5kIHRoZSBmbG93LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGludGVycnVwdCBtYW5hZ2VtZW50IGFuZCBlcnJvciBjb25kaXRpb25zLiBJIGFsc28gbmVlZCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IERNQSBjb25maWd1cmF0aW9uLCBlc3BlY2lhbGx5IGlmIGl0IGludGVyYWN0cyB3aXRoIHRoZSBwYWNrZXQgZmlsdGVyaW5nIGVuZ2luZS4gSSYjMzk7bSBhbHNvIGN1cmlvdXMgdG8gc2VlIGlmIGFueSBvZmZsb2FkIGNhcGFiaWxpdGllcyBhcmUgYmVpbmcgZXhwbG9pdGVkLCBvciBpZiBpdCBpcyBhIGZhaXJseSBiYXNpYyBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBpZiB0aGlzIGZvbGxvd3MgbXkgZXhwZWN0YXRpb25zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyfHBjaV9lbmRwb2ludCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jPTEzNTE9c3RhdGljIGludCBfX2luaXQgYW1kX250Yl9wY2lfZHJpdmVyX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEzNTgtXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jOjEzNTk6XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmFtZF9udGJfcGNpX2RyaXZlcik7XG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEzNjAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM9ODYzPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBudGJfZXBmX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYy04NjgtfTtcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM6ODY5Om1vZHVsZV9wY2lfZHJpdmVyKG50Yl9lcGZfcGNpX2RyaXZlcik7XG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jLTg3MC1cbi0tXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jPTI4ODY9c3RhdGljIGludCBfX2luaXQgaWR0X3BjaV9kcml2ZXJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjg5NS1cdC8qIFJlZ2lzdGVyIHRoZSBOVEIgaGFyZHdhcmUgZHJpdmVyIHRvIGhhbmRsZSB0aGUgUENJIGRldmljZSAqL1xuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYzoyODk2Olx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZpZHRfcGNpX2RyaXZlcik7XG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jLTI4OTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmM9MjA2OT1zdGF0aWMgaW50IF9faW5pdCBpbnRlbF9udGJfcGNpX2RyaXZlcl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYy0yMDc2LVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYzoyMDc3Olx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZpbnRlbF9udGJfcGNpX2RyaXZlcik7XG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTIwNzgtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA4MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudCBkb3duOgoKKipOVEIgRHJpdmVyIEludmVzdGlnYXRpb24qKgoKT2theSwgZmlyc3QgdGhvdWdodDogYWxsIHRoZSBkcml2ZXJzIEkmIzM5O20gc2VlaW5nIHVuZGVyIGBkcml2ZXJzL250Yi9ody9gIHNlZW0gdG8gYmUgb3BlcmF0aW5nIG9uIFBDSSBkZXZpY2VzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgTmV0d29yayBUcmFuc3BvcnQgQmxvY2sgKE5UQikgZHJpdmVycyBsdXJraW5nIGFyb3VuZCBpbiB0aGUga2VybmVsLCBvciBwZXJoYXBzIGFueSBjb2RlIHRoYXQgKmNyZWF0ZXMqIE5UQiBkZXZpY2VzIGluIGEgZGlmZmVyZW50IHdheT8gSSBjYW4mIzM5O3QgYXNzdW1lIHRoYXQmIzM5O3MgdGhlICpvbmx5KiB3YXkgdGhlIE5UQiBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQuCgpTbywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgZHJpdmVycy9udGIvY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIGF0IGhvdyB0aGVzZSBOVEIgZGV2aWNlcyBhcmUgYmVpbmcgcmVnaXN0ZXJlZC4gVGhlIGBudGJfcmVnaXN0ZXJfZGV2aWNlYCBmdW5jdGlvbiBpcyB0aGUga2V5IGhlcmUuIFRoYXQgc2hvdWxkIHNob3cgbWUgdGhlIGNlbnRyYWwgcmVnaXN0cmF0aW9uIHBvaW50IGFuZCBnaXZlIG1lIGNvbnRleHQgYXMgdG8gd2hlcmUgYW5kIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBleHBvc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGJfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udGIvY29yZS5jPTk5PUVYUE9SVF9TWU1CT0wobnRiX3VucmVnaXN0ZXJfY2xpZW50KTtcbmRyaXZlcnMvbnRiL2NvcmUuYy0xMDAtXG5kcml2ZXJzL250Yi9jb3JlLmM6MTAxOmludCBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpXG5kcml2ZXJzL250Yi9jb3JlLmMtMTAyLXtcbi0tXG5kcml2ZXJzL250Yi9jb3JlLmMtMTMwLX1cbmRyaXZlcnMvbnRiL2NvcmUuYzoxMzE6RVhQT1JUX1NZTUJPTChudGJfcmVnaXN0ZXJfZGV2aWNlKTtcbmRyaXZlcnMvbnRiL2NvcmUuYy0xMzItXG4tLVxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYz0xMjIyPXN0YXRpYyBpbnQgYW1kX250Yl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYy0xMjU0LVxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYzoxMjU1Olx0cmMgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmMtMTI1Ni1cdGlmIChyYylcbi0tXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jPTc1Mz1zdGF0aWMgaW50IG50Yl9lcGZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNzg3LVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYzo3ODg6XHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNzg5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM9MjI3NT1zdGF0aWMgaW50IGlkdF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGlkdF9udGJfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjI4Mi1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM6MjI4MzpcdHJldCA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2bmRldi1cdTAwM2VudGIpO1xuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYy0yMjg0LVx0aWYgKHJldCAhPSAwKSB7XG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz0xODQ0PXN0YXRpYyBpbnQgaW50ZWxfbnRiX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTE4OTYtXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjE4OTc6XHRyYyA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2bmRldi1cdTAwM2VudGIpO1xuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYy0xODk4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jPTE0ODE9c3RhdGljIGludCBzd2l0Y2h0ZWNfbnRiX2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtMTUyOC1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jOjE1Mjk6XHRyYyA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2c25kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTE1MzAtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jPTE2Nzc9c3RhdGljIGludCBwY2lfdm50Yl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjkyLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE2OTM6XHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjk0LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQyNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBQQ0kgRW5kcG9pbnQgRnVuY3Rpb24gSW1wbGVtZW50YXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0JiMzOTtzIHRoaXM/IE15IGV5ZSBqdXN0IGxhbmRlZCBvbiBgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jYC4gUmlnaHQsIHJpZ2h0LCBhIFZOVEIhIFRoaXMgZmVlbHMgcmVsZXZhbnQgdG8gdGhlIGJpZ2dlciBwaWN0dXJlLgoKSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBQQ0kgZW5kcG9pbnQgZnVuY3Rpb25zIGFjdHVhbGx5IHdvcmsgd2l0aGluIHRoaXMgY29udGV4dC4gU28sIHRpbWUgdG8gZmlyZSB1cCBhIHNlYXJjaC4gSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBmb3IgdGhhdCBzcGVjaWZpYyBmaWxlIG5hbWUsIGBwY2ktZXBmLXZudGIuY2AsIHRvIHNlZSB3aGF0IGp1bXBzIG91dCBhbmQgdGhlbiBicm9hZGVuIHRoZSBzZWFyY2ggdG8gZW5jb21wYXNzIHRoZSBtb3JlIGdlbmVyYWwgZnVuY3Rpb25hbGl0eSBhbmQgYXJjaGl0ZWN0dXJlIG9mIFBDSSBlbmRwb2ludCBmdW5jdGlvbiBvcGVyYXRpb24uIEdvdHRhIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kIGhlcmUgYW5kIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIFZOVEIgaW1wbGVtZW50YXRpb24gZml0cyBpbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYW5kIGNvbm5lY3Rpb25zIHRoaXMgcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfdm50YiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNjUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgdm50Yl9lcGZfb3BzID0ge1xuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjc2LVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE2Nzc6c3RhdGljIGludCBwY2lfdm50Yl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE2Nzgte1xuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzAyLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE3MDM6c3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHBjaV92bnRiX3RhYmxlW10gPSB7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTcwNC1cdHtcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM9MTcxMD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdm50Yl9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE3MTEtXHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtwY2ktdm50YlwmIzM0OyxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYzoxNzEyOlx0LmlkX3RhYmxlICAgICAgID0gcGNpX3ZudGJfdGFibGUsXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTcxMzpcdC5wcm9iZSAgICAgICAgICA9IHBjaV92bnRiX3Byb2JlLFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE3MTQtfTtcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM9MTcyOT1zdGF0aWMgaW50IGVwZl9udGJfYmluZChzdHJ1Y3QgcGNpX2VwZiAqZXBmKVxuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzYwLVx0cGNpX3NwYWNlWzBdID0gKG50Yi1cdTAwM2V2bnRiX3BpZCBcdTAwM2NcdTAwM2MgMTYpIHwgbnRiLVx1MDAzZXZudGJfdmlkO1xuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE3NjE6XHRwY2lfdm50Yl90YWJsZVswXS52ZW5kb3IgPSBudGItXHUwMDNldm50Yl92aWQ7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTc2MjpcdHBjaV92bnRiX3RhYmxlWzBdLmRldmljZSA9IG50Yi1cdTAwM2V2bnRiX3BpZDtcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzYzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM5NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEdlbmVzaXMgb2YgYG50Yl9uZXRkZXZgKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQhIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgYG50Yl9uZXRkZXZgIG5ldHdvcmsgZGV2aWNlIGNvbWVzIGludG8gYmVpbmcuIFRpbWUgdG8gZGlnIGluIGFuZCBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzIGZyb20gdGhlIHZlcnkgYmVnaW5uaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIGBkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNgIGFuZCB0cmFjZSB0aGUgZW50aXJlIGxpZmVjeWNsZSwgZnJvbSB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIGFsbCB0aGUgd2F5IHRocm91Z2ggdGhlIHJlY2VpdmUgYW5kIHRyYW5zbWl0IHBhdGhzLiBJJiMzOTtsbCBuZWVkIHRvIG1ldGljdWxvdXNseSByZWFkIHRocm91Z2ggdGhlIHNvdXJjZSBjb2RlIG9mIGBudGJfbmV0ZGV2LmNgIGl0c2VsZi4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIGZvdW5kYXRpb24gSSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L250Yl9uZXRkZXYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTMtQ2xhdXNlXG4gICAyOlx0LypcbiAgIDM6XHQgKiBQQ0llIE5UQiBOZXR3b3JrIExpbnV4IGRyaXZlclxuICAgNDpcdCAqL1xuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbnRiLmhcdTAwM2VcbiAgMTA6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9udGJfdHJhbnNwb3J0LmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAgMTI6XHRcbiAgMTM6XHQjZGVmaW5lIE5UQl9ORVRERVZfVkVSXHRcJiMzNDswLjdcJiMzNDtcbiAgMTQ6XHRcbiAgMTU6XHRNT0RVTEVfREVTQ1JJUFRJT04oS0JVSUxEX01PRE5BTUUpO1xuICAxNjpcdE1PRFVMRV9WRVJTSU9OKE5UQl9ORVRERVZfVkVSKTtcbiAgMTc6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuICAxODpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7SW50ZWwgQ29ycG9yYXRpb25cJiMzNDspO1xuICAxOTpcdFxuICAyMDpcdC8qIFRpbWUgaW4gdXNlY3MgZm9yIHR4IHJlc291cmNlIHJlYXBlciAqL1xuICAyMTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgdHhfdGltZSA9IDE7XG4gIDIyOlx0XG4gIDIzOlx0LyogTnVtYmVyIG9mIGRlc2NyaXB0b3JzIHRvIGZyZWUgYmVmb3JlIHJlc3VtaW5nIHR4ICovXG4gIDI0Olx0c3RhdGljIHVuc2lnbmVkIGludCB0eF9zdGFydCA9IDEwO1xuICAyNTpcdFxuICAyNjpcdC8qIE51bWJlciBvZiBkZXNjcmlwdG9ycyBzdGlsbCBhdmFpbGFibGUgYmVmb3JlIHN0b3AgdXBwZXIgbGF5ZXIgdHggKi9cbiAgMjc6XHRzdGF0aWMgdW5zaWduZWQgaW50IHR4X3N0b3AgPSA1O1xuICAyODpcdFxuICAyOTpcdCNkZWZpbmUgTlRCX05FVERFVl9NQVhfUVVFVUVTXHRcdDY0XG4gIDMwOlx0I2RlZmluZSBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTXHQxXG4gIDMxOlx0XG4gIDMyOlx0c3RydWN0IG50Yl9uZXRkZXY7XG4gIDMzOlx0XG4gIDM0Olx0c3RydWN0IG50Yl9uZXRkZXZfcXVldWUge1xuICAzNTpcdFx0c3RydWN0IG50Yl9uZXRkZXYgKm50ZGV2O1xuICAzNjpcdFx0c3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwO1xuICAzNzpcdFx0c3RydWN0IHRpbWVyX2xpc3QgdHhfdGltZXI7XG4gIDM4Olx0XHR1MTYgcWlkO1xuICAzOTpcdH07XG4gIDQwOlx0XG4gIDQxOlx0c3RydWN0IG50Yl9uZXRkZXYge1xuICA0MjpcdFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XG4gIDQzOlx0XHRzdHJ1Y3QgZGV2aWNlICpjbGllbnRfZGV2O1xuICA0NDpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XG4gIDQ1Olx0XHR1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcztcbiAgNDY6XHRcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZXM7XG4gIDQ3Olx0fTtcbiAgNDg6XHRcbiAgNDk6XHQjZGVmaW5lXHROVEJfVFhfVElNRU9VVF9NU1x0MTAwMFxuICA1MDpcdCNkZWZpbmVcdE5UQl9SWFFfU0laRVx0XHQxMDBcbiAgNTE6XHRcbiAgNTI6XHRzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3VwZGF0ZV9jYXJyaWVyKHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYpXG4gIDUzOlx0e1xuICA1NDpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XG4gIDU1Olx0XHRib29sIGFueV91cCA9IGZhbHNlO1xuICA1NjpcdFx0dW5zaWduZWQgaW50IGk7XG4gIDU3Olx0XG4gIDU4Olx0XHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG4gIDU5Olx0XG4gIDYwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbiAgNjE6XHRcdFx0aWYgKG50Yl90cmFuc3BvcnRfbGlua19xdWVyeShkZXYtXHUwMDNlcXVldWVzW2ldLnFwKSkge1xuICA2MjpcdFx0XHRcdGFueV91cCA9IHRydWU7XG4gIDYzOlx0XHRcdFx0YnJlYWs7XG4gIDY0Olx0XHRcdH1cbiAgNjU6XHRcdH1cbiAgNjY6XHRcbiAgNjc6XHRcdGlmIChhbnlfdXApXG4gIDY4Olx0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4gIDY5Olx0XHRlbHNlXG4gIDcwOlx0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuICA3MTpcdH1cbiAgNzI6XHRcbiAgNzM6XHRzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3F1ZXVlX3J4X2RyYWluKHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZSlcbiAgNzQ6XHR7XG4gIDc1Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuICA3NjpcdFx0aW50IGxlbjtcbiAgNzc6XHRcbiAgNzg6XHRcdHdoaWxlICgoc2tiID0gbnRiX3RyYW5zcG9ydF9yeF9yZW1vdmUocXVldWUtXHUwMDNlcXAsIFx1MDAyNmxlbikpKVxuICA3OTpcdFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4gIDgwOlx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY4NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEaXZpbmcgaW50byB0aGUgTlRCIE5ldHdvcmsgRGV2aWNlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYG50Yl9uZXRkZXYuY2AgZmlsZSBpbml0aWFsaXplcyBhbmQgcHJvYmVzLCBzcGVjaWZpY2FsbHkgZnJvbSBsaW5lcyA2MDAgdG8gNzY1LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBhY3Rpb24gc2hvdWxkIGJlLiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBkaXNzZWN0IHRoaXMgc2VjdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNpbmcgb2YgY2FsbHMsIGFueSBjb25kaXRpb25hbCBsb2dpYywgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIE5UQiBoYXJkd2FyZS4gSSYjMzk7bSBob3BpbmcgdG8gc2VlIGhvdyB0aGUgZGV2aWNlIGlzIHJlZ2lzdGVyZWQsIGhvdyBpdHMgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCBob3cgaXQmIzM5O3MgYnJvdWdodCBvbmxpbmUuIEZyb20gd2hhdCBJIHJlY2FsbCBvZiBwcmV2aW91cyBleHBlcmllbmNlcyB3aXRoIHNpbWlsYXIgZHJpdmVycywgdGhlcmUmIzM5O3MgbGlrZWx5IGFuIGltcG9ydGFudCBkYW5jZSBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAgYW5kIGRldmljZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGdvaW5nIG9uIGhlcmUuIEkgZXhwZWN0IHRoZXJlIHdpbGwgYmUgY2hlY2tzIGZvciBoYXJkd2FyZSBwcmVzZW5jZSwgcGVyaGFwcyBzb21lIHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMsIGFuZCBkZWZpbml0ZWx5IHNvbWUgY3J1Y2lhbCBsaW5raW5nIG9mIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZXMgdG8gdGhlIHVuZGVybHlpbmcgTlRCIGZ1bmN0aW9uYWxpdHkuIE15IGdvYWwgaXMgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcgbGlmZWN5Y2xlIHdpdGhpbiB0aGF0IHNwZWNpZmljIHJhbmdlLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIG92ZXJhbGwgZHJpdmVyIGZsb3cuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGUgZHJpdmVyIGRlYWxzIHdpdGggcG90ZW50aWFsIGVycm9ycyBhbmQgZmFpbHVyZSBzY2VuYXJpb3MuIEkgYW50aWNpcGF0ZSBzb21lIGRlYnVnZ2luZyBtYWNyb3MgYW5kIGNoZWNrcyB0byBtYWtlIHRoaXMgaW5pdGlhbGlzYXRpb24gcm9idXN0IGFuZCBzdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbnRiX25ldGRldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjMwOlx0XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuIDYzMTpcdFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IG50Yl9nZXRfbGlua19rc2V0dGluZ3MsXG4gNjMyOlx0XHQuZ2V0X2NoYW5uZWxzID0gbnRiX2dldF9jaGFubmVscyxcbiA2MzM6XHRcdC5zZXRfY2hhbm5lbHMgPSBudGJfc2V0X2NoYW5uZWxzLFxuIDYzNDpcdH07XG4gNjM1Olx0XG4gNjM2Olx0c3RhdGljIGludCBudGJfbmV0ZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmNsaWVudF9kZXYpXG4gNjM3Olx0e1xuIDYzODpcdFx0c3RydWN0IG50Yl9kZXYgKm50YjtcbiA2Mzk6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuIDY0MDpcdFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XG4gNjQxOlx0XHRzdHJ1Y3QgbnRiX25ldGRldiAqZGV2O1xuIDY0MjpcdFx0dW5zaWduZWQgaW50IHE7XG4gNjQzOlx0XHRpbnQgcmM7XG4gNjQ0Olx0XG4gNjQ1Olx0XHRudGIgPSBkZXZfbnRiKGNsaWVudF9kZXYtXHUwMDNlcGFyZW50KTtcbiA2NDY6XHRcdHBkZXYgPSBudGItXHUwMDNlcGRldjtcbiA2NDc6XHRcdGlmICghcGRldilcbiA2NDg6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gNjQ5Olx0XG4gNjUwOlx0XHRuZGV2ID0gYWxsb2NfZXRoZXJkZXZfbXEoc2l6ZW9mKCpkZXYpLCBOVEJfTkVUREVWX01BWF9RVUVVRVMpO1xuIDY1MTpcdFx0aWYgKCFuZGV2KVxuIDY1MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA2NTM6XHRcbiA2NTQ6XHRcdFNFVF9ORVRERVZfREVWKG5kZXYsIGNsaWVudF9kZXYpO1xuIDY1NTpcdFxuIDY1NjpcdFx0ZGV2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gNjU3Olx0XHRkZXYtXHUwMDNlbmRldiA9IG5kZXY7XG4gNjU4Olx0XHRkZXYtXHUwMDNlcGRldiA9IHBkZXY7XG4gNjU5Olx0XHRkZXYtXHUwMDNlY2xpZW50X2RldiA9IGNsaWVudF9kZXY7XG4gNjYwOlx0XHRkZXYtXHUwMDNlbnVtX3F1ZXVlcyA9IDA7XG4gNjYxOlx0XG4gNjYyOlx0XHRkZXYtXHUwMDNlcXVldWVzID0ga3phbGxvY19vYmpzKCpkZXYtXHUwMDNlcXVldWVzLCBOVEJfTkVUREVWX01BWF9RVUVVRVMsXG4gNjYzOlx0XHRcdFx0XHQgICBHRlBfS0VSTkVMKTtcbiA2NjQ6XHRcdGlmICghZGV2LVx1MDAzZXF1ZXVlcykge1xuIDY2NTpcdFx0XHRyYyA9IC1FTk9NRU07XG4gNjY2Olx0XHRcdGdvdG8gZXJyX2ZyZWVfbmV0ZGV2O1xuIDY2NzpcdFx0fVxuIDY2ODpcdFxuIDY2OTpcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyA9IE5FVElGX0ZfSElHSERNQTtcbiA2NzA6XHRcdG5kZXYtXHUwMDNlcGNwdV9zdGF0X3R5cGUgPSBORVRERVZfUENQVV9TVEFUX1RTVEFUUztcbiA2NzE6XHRcbiA2NzI6XHRcdG5kZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbiA2NzM6XHRcbiA2NzQ6XHRcdG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgPSBuZGV2LVx1MDAzZWZlYXR1cmVzO1xuIDY3NTpcdFx0bmRldi1cdTAwM2V3YXRjaGRvZ190aW1lbyA9IG1zZWNzX3RvX2ppZmZpZXMoTlRCX1RYX1RJTUVPVVRfTVMpO1xuIDY3NjpcdFxuIDY3NzpcdFx0ZXRoX3JhbmRvbV9hZGRyKG5kZXYtXHUwMDNlcGVybV9hZGRyKTtcbiA2Nzg6XHRcdGRldl9hZGRyX3NldChuZGV2LCBuZGV2LVx1MDAzZXBlcm1fYWRkcik7XG4gNjc5Olx0XG4gNjgwOlx0XHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZudGJfbmV0ZGV2X29wcztcbiA2ODE6XHRcdG5kZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZudGJfZXRodG9vbF9vcHM7XG4gNjgyOlx0XG4gNjgzOlx0XHRuZGV2LVx1MDAzZW1pbl9tdHUgPSAwO1xuIDY4NDpcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG4gNjg1Olx0XG4gNjg2Olx0XHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTOyBxJiM0MzsmIzQzOykge1xuIDY4NzpcdFx0XHRzdHJ1Y3QgbnRiX25ldGRldl9xdWV1ZSAqcXVldWUgPSBcdTAwMjZkZXYtXHUwMDNlcXVldWVzW3FdO1xuIDY4ODpcdFxuIDY4OTpcdFx0XHRxdWV1ZS1cdTAwM2VudGRldiA9IGRldjtcbiA2OTA6XHRcdFx0cXVldWUtXHUwMDNlcWlkID0gcTtcbiA2OTE6XHRcdFx0cXVldWUtXHUwMDNlcXAgPSBudGJfdHJhbnNwb3J0X2NyZWF0ZV9xdWV1ZShxdWV1ZSwgY2xpZW50X2RldixcbiA2OTI6XHRcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2bnRiX25ldGRldl9oYW5kbGVycyk7XG4gNjkzOlx0XHRcdGlmICghcXVldWUtXHUwMDNlcXApXG4gNjk0Olx0XHRcdFx0YnJlYWs7XG4gNjk1Olx0XG4gNjk2Olx0XHRcdGRldi1cdTAwM2VudW1fcXVldWVzJiM0MzsmIzQzOztcbiA2OTc6XHRcdH1cbiA2OTg6XHRcbiA2OTk6XHRcdGlmICghZGV2LVx1MDAzZW51bV9xdWV1ZXMpIHtcbiA3MDA6XHRcdFx0cmMgPSAtRUlPO1xuIDcwMTpcdFx0XHRnb3RvIGVycl9mcmVlX3F1ZXVlcztcbiA3MDI6XHRcdH1cbiA3MDM6XHRcbiA3MDQ6XHRcdHJjID0gbmV0aWZfc2V0X3JlYWxfbnVtX3F1ZXVlcyhuZGV2LCBkZXYtXHUwMDNlbnVtX3F1ZXVlcywgZGV2LVx1MDAzZW51bV9xdWV1ZXMpO1xuIDcwNTpcdFx0aWYgKHJjKVxuIDcwNjpcdFx0XHRnb3RvIGVycl9mcmVlX3FwcztcbiA3MDc6XHRcbiA3MDg6XHRcdG5kZXYtXHUwMDNlbXR1ID0gbnRiX3RyYW5zcG9ydF9tYXhfc2l6ZShkZXYtXHUwMDNlcXVldWVzWzBdLnFwKSAtIEVUSF9ITEVOO1xuIDcwOTpcdFxuIDcxMDpcdFx0cmMgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7XG4gNzExOlx0XHRpZiAocmMpXG4gNzEyOlx0XHRcdGdvdG8gZXJyX2ZyZWVfcXBzO1xuIDcxMzpcdFxuIDcxNDpcdFx0ZGV2X3NldF9kcnZkYXRhKGNsaWVudF9kZXYsIG5kZXYpO1xuIDcxNTpcdFx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzIGNyZWF0ZWQgd2l0aCAldSBxdWV1ZSBwYWlyc1xcblwmIzM0OyxcbiA3MTY6XHRcdFx0IG5kZXYtXHUwMDNlbmFtZSwgZGV2LVx1MDAzZW51bV9xdWV1ZXMpO1xuIDcxNzpcdFx0cmV0dXJuIDA7XG4gNzE4Olx0XG4gNzE5Olx0ZXJyX2ZyZWVfcXBzOlxuIDcyMDpcdFx0Zm9yIChxID0gMDsgcSBcdTAwM2MgZGV2LVx1MDAzZW51bV9xdWV1ZXM7IHEmIzQzOyYjNDM7KVxuIDcyMTpcdFx0XHRudGJfdHJhbnNwb3J0X2ZyZWVfcXVldWUoZGV2LVx1MDAzZXF1ZXVlc1txXS5xcCk7XG4gNzIyOlx0XG4gNzIzOlx0ZXJyX2ZyZWVfcXVldWVzOlxuIDcyNDpcdFx0a2ZyZWUoZGV2LVx1MDAzZXF1ZXVlcyk7XG4gNzI1Olx0XG4gNzI2Olx0ZXJyX2ZyZWVfbmV0ZGV2OlxuIDcyNzpcdFx0ZnJlZV9uZXRkZXYobmRldik7XG4gNzI4Olx0XHRyZXR1cm4gcmM7XG4gNzI5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU4MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDcmVhdGlvbiBvZiBgY2xpZW50X2RldmAgd2l0aGluIGBudGJfdHJhbnNwb3J0YCoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZ2VuZXNpcyBvZiB0aGUgYGNsaWVudF9kZXZgIHN0cnVjdHVyZSB3aXRoaW4gdGhlIGBudGJfdHJhbnNwb3J0YCBtb2R1bGUuIFdoZXJlIGlzIHRoaXMgdGhpbmcgYmVpbmcgaW5zdGFudGlhdGVkPyBUaGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbnRiX3RyYW5zcG9ydC5jYC4gSSYjMzk7bSBjb25maWRlbnQgdGhlIGFuc3dlciBsaWVzIHdpdGhpbiB0aGF0IGZpbGU7IGxldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gdW5lYXJ0aC4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZGVjZW50OyBvdGhlcndpc2UsIEkmIzM5O2xsIGp1c3QgaGF2ZSB0byB0cmFjZSB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gY2FsbHMgdW50aWwgSSB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM9Mzk1PUVYUE9SVF9TWU1CT0xfR1BMKG50Yl90cmFuc3BvcnRfdW5yZWdpc3Rlcl9jbGllbnRfZGV2KTtcbi0tXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzk3LS8qKlxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjM5ODogKiBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYgLSBSZWdpc3RlciBOVEIgY2xpZW50IGRldmljZVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM5OS0gKiBAZGV2aWNlX25hbWU6IE5hbWUgb2YgTlRCIGNsaWVudCBkZXZpY2Vcbi0tXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDA0LSAqL1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQwNTppbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2KGNoYXIgKmRldmljZV9uYW1lKVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQwNi17XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1MS19XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDUyOkVYUE9SVF9TWU1CT0xfR1BMKG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2Rldik7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDUzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA3MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYG50Yl90cmFuc3BvcnQuY2AqKgoKT2theSwgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgY29kZSBhcm91bmQgbGluZSA0MDUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBhcmVhIHByb2JhYmx5IGRlYWxzIHdpdGggc29tZXRoaW5nIGZ1bmRhbWVudGFsIHRvIHRoZSB0cmFuc3BvcnQgbGF5ZXIg4oCTIHBlcmhhcHMgbWVzc2FnZSBoYW5kbGluZywgYnVmZmVyIG1hbmFnZW1lbnQsIG9yIGludGVycnVwdCBwcm9jZXNzaW5nLiBLbm93aW5nIHRoZSBmdW5jdGlvbiBjYWxscyBhcm91bmQgdGhhdCBsaW5lIGlzIGNyaXRpY2FsLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBhYm91dCBob3cgZGF0YSBpcyBtb3ZpbmcsIGhvdyBpdCYjMzk7cyBiZWluZyBoYW5kbGVkLCBhbmQgd2hhdCBtZWNoYW5pc21zIGFyZSBlbXBsb3llZCBmb3Igc3luY2hyb25pemF0aW9uIGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGlzIHBhcnQgb2YgdGhlIE5UQiBkcml2ZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCByZWFkaW5nIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDA1Olx0aW50IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldihjaGFyICpkZXZpY2VfbmFtZSlcbiA0MDY6XHR7XG4gNDA3Olx0XHRzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9jbGllbnRfZGV2ICpjbGllbnRfZGV2O1xuIDQwODpcdFx0c3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudDtcbiA0MDk6XHRcdGludCBub2RlO1xuIDQxMDpcdFx0aW50IHJjLCBpID0gMDtcbiA0MTE6XHRcbiA0MTI6XHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCkpXG4gNDEzOlx0XHRcdHJldHVybiAtRU5PREVWO1xuIDQxNDpcdFxuIDQxNTpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShudCwgXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0LCBlbnRyeSkge1xuIDQxNjpcdFx0XHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4gNDE3Olx0XG4gNDE4Olx0XHRcdG5vZGUgPSBkZXZfdG9fbm9kZShcdTAwMjZudC1cdTAwM2VuZGV2LVx1MDAzZWRldik7XG4gNDE5Olx0XG4gNDIwOlx0XHRcdGNsaWVudF9kZXYgPSBremFsbG9jX25vZGUoc2l6ZW9mKCpjbGllbnRfZGV2KSxcbiA0MjE6XHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMLCBub2RlKTtcbiA0MjI6XHRcdFx0aWYgKCFjbGllbnRfZGV2KSB7XG4gNDIzOlx0XHRcdFx0cmMgPSAtRU5PTUVNO1xuIDQyNDpcdFx0XHRcdGdvdG8gZXJyO1xuIDQyNTpcdFx0XHR9XG4gNDI2Olx0XG4gNDI3Olx0XHRcdGRldiA9IFx1MDAyNmNsaWVudF9kZXYtXHUwMDNlZGV2O1xuIDQyODpcdFxuIDQyOTpcdFx0XHQvKiBzZXR1cCBhbmQgcmVnaXN0ZXIgY2xpZW50IGRldmljZXMgKi9cbiA0MzA6XHRcdFx0ZGV2X3NldF9uYW1lKGRldiwgXCYjMzQ7JXMlZFwmIzM0OywgZGV2aWNlX25hbWUsIGkpO1xuIDQzMTpcdFx0XHRkZXYtXHUwMDNlYnVzID0gXHUwMDI2bnRiX3RyYW5zcG9ydF9idXM7XG4gNDMyOlx0XHRcdGRldi1cdTAwM2VyZWxlYXNlID0gbnRiX3RyYW5zcG9ydF9jbGllbnRfcmVsZWFzZTtcbiA0MzM6XHRcdFx0ZGV2LVx1MDAzZXBhcmVudCA9IFx1MDAyNm50LVx1MDAzZW5kZXYtXHUwMDNlZGV2O1xuIDQzNDpcdFxuIDQzNTpcdFx0XHRyYyA9IGRldmljZV9yZWdpc3RlcihkZXYpO1xuIDQzNjpcdFx0XHRpZiAocmMpIHtcbiA0Mzc6XHRcdFx0XHRwdXRfZGV2aWNlKGRldik7XG4gNDM4Olx0XHRcdFx0Z290byBlcnI7XG4gNDM5Olx0XHRcdH1cbiA0NDA6XHRcbiA0NDE6XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZjbGllbnRfZGV2LVx1MDAzZWVudHJ5LCBcdTAwMjZudC1cdTAwM2VjbGllbnRfZGV2cyk7XG4gNDQyOlx0XHRcdGkmIzQzOyYjNDM7O1xuIDQ0MzpcdFx0fVxuIDQ0NDpcdFxuIDQ0NTpcdFx0cmV0dXJuIDA7XG4gNDQ2Olx0XG4gNDQ3Olx0ZXJyOlxuIDQ0ODpcdFx0bnRiX3RyYW5zcG9ydF91bnJlZ2lzdGVyX2NsaWVudF9kZXYoZGV2aWNlX25hbWUpO1xuIDQ0OTpcdFxuIDQ1MDpcdFx0cmV0dXJuIHJjO1xuIDQ1MTpcdH1cbiA0NTI6XHRFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYpO1xuIDQ1MzpcdFxuIDQ1NDpcdC8qKlxuIDQ1NTpcdCAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkcml2ZXJcbiA0NTY6XHQgKiBAZHJ2OiBOVEIgY2xpZW50IGRyaXZlciB0byBiZSByZWdpc3RlcmVkXG4gNDU3Olx0ICpcbiA0NTg6XHQgKiBSZWdpc3RlciBhbiBOVEIgY2xpZW50IGRyaXZlciB3aXRoIHRoZSBOVEIgdHJhbnNwb3J0IGxheWVyXG4gNDU5Olx0ICpcbiA0NjA6XHQgKiBSRVRVUk5TOiBBbiBhcHByb3ByaWF0ZSAtRVJSTk8gZXJyb3IgdmFsdWUgb24gZXJyb3IsIG9yIHplcm8gZm9yIHN1Y2Nlc3MuXG4gNDYxOlx0ICovXG4gNDYyOlx0aW50IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBudGJfdHJhbnNwb3J0X2NsaWVudCAqZHJ2KVxuIDQ2MzpcdHtcbiA0NjQ6XHRcdGRydi1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2bnRiX3RyYW5zcG9ydF9idXM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT43bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTQzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldmAgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXZgIGZ1bmN0aW9uLiBGaXJzdCBvYnNlcnZhdGlvbjogaWYgYG50Yl90cmFuc3BvcnRfbGlzdGAgaXMgZW1wdHksIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zIGAtRU5PREVWYC4gQ2xlYXJseSwgdGhpcyBsaXN0IGlzIGNydWNpYWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIG9yIGFkZGVkIHRvIGBudGJfdHJhbnNwb3J0X2xpc3RgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHdoZXJlIHRoaXMgbGlzdCBpcyBwb3B1bGF0ZWQuIExldCYjMzk7cyBydW4gYSBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgb2YgYG50Yl90cmFuc3BvcnRfbGlzdGAgd2l0aGluIHRoaXMgY29kZWJhc2UuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBwb3B1bGF0aW9uIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250Yl90cmFuc3BvcnRfbGlzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM9MzM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbnRiX3RyYW5zcG9ydF9idXMgPSB7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM0NS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozNDY6c3RhdGljIExJU1RfSEVBRChudGJfdHJhbnNwb3J0X2xpc3QpO1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM0Ny1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zNDg9c3RhdGljIGludCBudGJfYnVzX2luaXQoc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudClcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zNDkte1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjM1MDpcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bnQtXHUwMDNlZW50cnksIFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCk7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzUxLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTM4Mj12b2lkIG50Yl90cmFuc3BvcnRfdW5yZWdpc3Rlcl9jbGllbnRfZGV2KGNoYXIgKmRldmljZV9uYW1lKVxuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zODYtXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6Mzg3Olx0bGlzdF9mb3JfZWFjaF9lbnRyeShudCwgXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0LCBlbnRyeSlcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zODgtXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjbGllbnQsIGNkLCBcdTAwMjZudC1cdTAwM2VjbGllbnRfZGV2cywgZW50cnkpXG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTQwNT1pbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2KGNoYXIgKmRldmljZV9uYW1lKVxuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTEtXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDEyOlx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0KSlcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTMtXHRcdHJldHVybiAtRU5PREVWO1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQxNC1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzo0MTU6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG50LCBcdTAwMjZudGJfdHJhbnNwb3J0X2xpc3QsIGVudHJ5KSB7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDE2LVx0XHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTQ2Mj1pbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnQoc3RydWN0IG50Yl90cmFuc3BvcnRfY2xpZW50ICpkcnYpXG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ2NS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzo0NjY6XHRpZiAobGlzdF9lbXB0eShcdTAwMjZudGJfdHJhbnNwb3J0X2xpc3QpKVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ2Ny1cdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDM5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYG50Yl9idXNfaW5pdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYG50Yl90cmFuc3BvcnQuY2AgZmlsZSBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgY2FsbGluZyBgbnRiX2J1c19pbml0YC4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IG9mIHRoZSBOVEIgYnVzIGZvciBwcm9wZXIgZGVidWdnaW5nIGFuZCBwb3RlbnRpYWwgYXJjaGl0ZWN0dXJhbCBlbmhhbmNlbWVudHMuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGJhY2sgdG8gaXRzIG9yaWdpbnMsIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVyKHMpIGFyZSByZXNwb25zaWJsZSBmb3IgYnJpbmdpbmcgdXAgdGhlIE5UQiB0cmFuc3BvcnQgbGF5ZXIsIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGV5JiMzOTtyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGNhbGxzIGZyb20gdGhlIFBDSSBsYXllciwgbGlrZWx5IHRocm91Z2ggYSBkZXZpY2UgcHJvYmUgZnVuY3Rpb24sIGFuZCBwb3NzaWJseSBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgZGVwZW5kaW5nIG9uIHRoZSBOVEIgaW1wbGVtZW50YXRpb24gKGUuZy4sIGlmIGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aCBhIFNvQykuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBkZXZpY2UgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbiwgYW5kIGFueSBuZWNlc3NhcnkgRE1BIHNldHVwIHRoYXQmIzM5O3MgYmVpbmcgZG9uZSBkdXJpbmcgdGhhdCBlYXJseSBpbml0aWFsaXphdGlvbiBzdGFnZS4gS25vd2luZyAqd2hvKiBpbml0aWFsaXplcyB0aGUgYnVzIGdpdmVzIHVzIHZpdGFsIGNvbnRleHQgZm9yIHRyYWNpbmcgZXJyb3JzIGFuZCB1bmRlcnN0YW5kaW5nIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRiX2J1c19pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9udGIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zNDY9c3RhdGljIExJU1RfSEVBRChudGJfdHJhbnNwb3J0X2xpc3QpO1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM0Ny1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozNDg6c3RhdGljIGludCBudGJfYnVzX2luaXQoc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudClcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zNDkte1xuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0xMjM2PXN0YXRpYyBpbnQgbnRiX3RyYW5zcG9ydF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTEzNzEtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZudC1cdTAwM2VjbGllbnRfZGV2cyk7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6MTM3MjpcdHJjID0gbnRiX2J1c19pbml0KG50KTtcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0xMzczLVx0aWYgKHJjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODU4MAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5UQiBEZXZpY2UgUHJvYmUgUHJvY2VzcyoqCgpPa2F5LCBzbyBgbnRiX3RyYW5zcG9ydF9wcm9iZWAgZ2V0cyBjYWxsZWQgd2hlbiBhbiBOVEIgZGV2aWNlIGlzIGJvdW5kIHRvIHRoZSBgbnRiX3RyYW5zcG9ydF9jbGllbnRgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlOiBgbnRiX3RyYW5zcG9ydF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpYC4gTm93LCB3aGF0IGFjdHVhbGx5IHRyaWdnZXJzIHRoaXMgY2FsbD8gQWgsIGl0JiMzOTtzIHRoZSByZWdpc3RyYXRpb24gb2YgYW4gTlRCIGRldmljZSB1c2luZyBgbnRiX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbnRiX2RldiAqbnRiKWAuCgpSaWdodCwgc28gdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgbGV0JiMzOTtzIHRyYWNlIHdoZXJlIGBudGJfcmVnaXN0ZXJfZGV2aWNlYCBpcyBjYWxsZWQuIEEgcXVpY2sgc2VhcmNoIHRocm91Z2ggdGhlIGtlcm5lbCByZXZlYWxzIGEgZmV3IGtleSBsb2NhdGlvbnMuIEl0JiMzOTtzIHVzZWQgd2l0aGluIHZhcmlvdXMgUENJIGRyaXZlcnMgZm9yIHNwZWNpZmljIE5UQiBoYXJkd2FyZToKCjEuICBgYW1kX250Yl9wY2lfcHJvYmVgIChBTUQgaGFyZHdhcmUpCjIuICBgbnRiX2VwZl9wY2lfcHJvYmVgIChFUEYgaGFyZHdhcmUpCjMuICBgaWR0X3JlZ2lzdGVyX2RldmljZWAgKElEVCBoYXJkd2FyZSkKNC4gIGBpbnRlbF9udGJfcGNpX3Byb2JlYCAoSW50ZWwgaGFyZHdhcmUpCjUuICBgc3dpdGNodGVjX250Yl9hZGRgIChNaWNyb1NlbWkgU3dpdGNodGVjIFBDSWUgc3dpdGNoKQo2LiAgYHBjaV92bnRiX3Byb2JlYCAoRVBGIHZOVEIpCgpUaGF0IGdpdmVzIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgZGlmZmVyZW50IGhhcmR3YXJlIGltcGxlbWVudGF0aW9ucyB0aGF0IHVzZSB0aGlzIG1lY2hhbmlzbS4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIGJlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIE5UQiBkcml2ZXJzIG9yIHVzZXMgb2YgYG50Yl9yZWdpc3Rlcl9kZXZpY2VgLCBidXQgdGhpcyBpcyBhIHNvbGlkIHN0YXJ0IGZvciB1bmRlcnN0YW5kaW5nIGhvdyBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGFuZCBwcm9iZWQgd2l0aGluIHRoZSBOVEIgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGJfcmVnaXN0ZXJfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL2NvcmUuYz05OT1FWFBPUlRfU1lNQk9MKG50Yl91bnJlZ2lzdGVyX2NsaWVudCk7XG5kcml2ZXJzL250Yi9jb3JlLmMtMTAwLVxuZHJpdmVycy9udGIvY29yZS5jOjEwMTppbnQgbnRiX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbnRiX2RldiAqbnRiKVxuZHJpdmVycy9udGIvY29yZS5jLTEwMi17XG4tLVxuZHJpdmVycy9udGIvY29yZS5jLTEzMC19XG5kcml2ZXJzL250Yi9jb3JlLmM6MTMxOkVYUE9SVF9TWU1CT0wobnRiX3JlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL250Yi9jb3JlLmMtMTMyLVxuLS1cbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM9MTIyMj1zdGF0aWMgaW50IGFtZF9udGJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmMtMTI1NC1cbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM6MTI1NTpcdHJjID0gbnRiX3JlZ2lzdGVyX2RldmljZShcdTAwMjZuZGV2LVx1MDAzZW50Yik7XG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEyNTYtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYz03NTM9c3RhdGljIGludCBudGJfZXBmX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jLTc4Ny1cbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM6Nzg4Olx0cmV0ID0gbnRiX3JlZ2lzdGVyX2RldmljZShcdTAwMjZuZGV2LVx1MDAzZW50Yik7XG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jLTc4OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jPTIyNzU9c3RhdGljIGludCBpZHRfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBpZHRfbnRiX2RldiAqbmRldilcbi0tXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jLTIyODItXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jOjIyODM6XHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjI4NC1cdGlmIChyZXQgIT0gMCkge1xuLS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmM9MTg0ND1zdGF0aWMgaW50IGludGVsX250Yl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYy0xODk2LVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYzoxODk3Olx0cmMgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTg5OC1cdGlmIChyYylcbi0tXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYz0xNDgxPXN0YXRpYyBpbnQgc3dpdGNodGVjX250Yl9hZGQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTE1MjgtXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYzoxNTI5Olx0cmMgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnNuZGV2LVx1MDAzZW50Yik7XG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYy0xNTMwLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNjc3PXN0YXRpYyBpbnQgcGNpX3ZudGJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTY5Mi1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYzoxNjkzOlx0cmV0ID0gbnRiX3JlZ2lzdGVyX2RldmljZShcdTAwMjZuZGV2LVx1MDAzZW50Yik7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTY5NC1cdGlmIChyZXQpIHtcbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oPTQ2Nj12b2lkIG50Yl91bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgbnRiX2NsaWVudCAqY2xpZW50KTtcbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQ3Mi0vKipcbmluY2x1ZGUvbGludXgvbnRiLmg6NDczOiAqIG50Yl9yZWdpc3Rlcl9kZXZpY2UoKSAtIHJlZ2lzdGVyIGEgbnRiIGRldmljZVxuaW5jbHVkZS9saW51eC9udGIuaC00NzQtICogQG50YjpcdE5UQiBkZXZpY2UgY29udGV4dC5cbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQ4MS0gKi9cbmluY2x1ZGUvbGludXgvbnRiLmg6NDgyOmludCBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpO1xuaW5jbHVkZS9saW51eC9udGIuaC00ODMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTgzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4KCioqSW52ZXN0aWdhdGluZyBhIFBDSSBEcml2ZXIqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBwY2ktZXBmLXZudGIuY2AgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQgKmRvZXMqLiBJcyB0aGlzIHJlbGF0ZWQgdG8gYW4gZW5kcG9pbnQgZnVuY3Rpb24sIG9yIGlzIGl0IG1vcmUgb2YgYSB2aXJ0dWFsIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaW1wbGVtZW50YXRpb24/IEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRpc3RpbmN0aW9uIHRvIHByb2NlZWQuCgpUbyBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCwgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBQQ0kgZW5kcG9pbnQgZHJpdmVycy4gQSBxdWljayBsb29rIGluIGBkcml2ZXJzL3BjaS9lbmRwb2ludC9gIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCBhbmQgaGVscCBtZSBwaW4gZG93biBpdHMgZnVuY3Rpb24gd2l0aGluIHRoZSB3aWRlciBQQ0kgc3Vic3lzdGVtLiBUaGF0IGRpcmVjdG9yeSBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gSG9wZWZ1bGx5LCB0aGUgZHJpdmVyJiMzOTtzIHB1cnBvc2Ugd2lsbCBiZSBjbGVhciBmcm9tIGl0cyBsb2NhdGlvbiBhbmQgYXNzb2NpYXRlZCBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0VQRl9WTlRCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvZW5kcG9pbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWc9MTc9Y29uZmlnIFBDSV9FUEZfTlRCXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWctMjktXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZzozMDpjb25maWcgUENJX0VQRl9WTlRCXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZy0zMS1cdHRyaXN0YXRlIFwmIzM0O1BDSSBFbmRwb2ludCBWaXJ0dWFsIE5UQiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfUENJX0VQRl9OVEIpXHRcdCYjNDM7PSBwY2ktZXBmLW50Yi5vXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfUENJX0VQRl9WTlRCKSBcdFx0JiM0Mzs9IHBjaS1lcGYtdm50Yi5vXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfUENJX0VQRl9NSEkpXHRcdCYjNDM7PSBwY2ktZXBmLW1oaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgcmVhZGluZyBgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWdgLCBzdW1tYXJpemVkIGFzIGlmIGl0JiMzOTtzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqRGlnZ2luZyBpbnRvIHRoZSBQQ0kgRW5kcG9pbnQgS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGdvb2QgZ3JpcCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQQ0kgZW5kcG9pbnQgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZGVmaW5lZCBpbiBgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCB0aG9zZSBzcGVjaWZpYyBlbmRwb2ludCBmdW5jdGlvbiBkcml2ZXJzIGlzIGdvaW5nIHRvIGxpdmUuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBtZW51IHN0cnVjdHVyZSwgd2l0aCBkZXBlbmRlbmNpZXMgYW5kIGRlc2NyaXB0aW9ucyBkZXRhaWxpbmcgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHdlbGwtb3JnYW5pemVkLCBtYWtpbmcgaXQgZWFzeSB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgb3B0aW9ucyBmb3IgbXkgY3VycmVudCB0YXNrLCB3aGljaCBpcyBsaWtlbHkgZGVidWdnaW5nL2RldmVsb3BpbmcgYSBzcGVjaWZpYyBmZWF0dXJlIGluIGEgbmV3IFBDSSBlbmRwb2ludCBmdW5jdGlvbi4KCkkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSBjb21wb25lbnRzOiB0aGUgYGNvbmZpZ2Agc3ltYm9scywgdGhlaXIgYGJvb2xgL2B0cmlzdGF0ZWAgdHlwZXMsIHRoZSBkZWZhdWx0IHZhbHVlcywgZGVwZW5kZW5jaWVzIChgZGVwZW5kcyBvbmApLCBzZWxlY3Qgc3RhdGVtZW50cywgYW5kIGhlbHAgdGV4dC4gVGhlIGRlc2NyaXB0aW9ucyBhcmUgY3JpdGljYWw7IHRoZXkgc2hvdWxkIGNsZWFybHkgZXhwbGFpbiB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBlYWNoIG9wdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGJlIGxvb2tpbmcgZm9yOgoKKiAgICoqR3JhbnVsYXJpdHk6KiogQXJlIHRoZSBvcHRpb25zIGZpbmUtZ3JhaW5lZCBlbm91Z2ggdG8gc2VsZWN0aXZlbHkgZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgZnVuY3Rpb25hbGl0aWVzIHdpdGhpbiBhIGZ1bmN0aW9uLCBvciBhcmUgdGhleSB0b28gY29hcnNlPwoqICAgKipJbnRlcmRlcGVuZGVuY2llczoqKiBIb3cgZG8gdGhlIGRpZmZlcmVudCBmZWF0dXJlcyByZWxhdGUgdG8gZWFjaCBvdGhlcj8gQXJlIHRoZXJlIG9idmlvdXMgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGZlYXR1cmVzIHRoYXQgKm11c3QqIGJlIHNlbGVjdGVkIHdoZW4gYSBjZXJ0YWluIHVuZGVybHlpbmcgaGFyZHdhcmUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ/CiogICAqKlBvcnRhYmlsaXR5OioqIEFyZSB0aGVyZSBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcz8gQXJlIHRoZXkgY2xlYW5seSBoYW5kbGVkLCBvciBkbyBJIG5lZWQgdG8gd29ycnkgYWJvdXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gY2x1dHRlcj8KKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBJcyB0aGUgaGVscCB0ZXh0IGNsZWFyIGFuZCBjb25jaXNlPyBEb2VzIGl0IHByb3ZpZGUgZW5vdWdoIGNvbnRleHQgYW5kIGxpbmtzIHRvIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3Igc291cmNlIGNvZGU/IElzIGl0IGFjdHVhbGx5IGFjY3VyYXRlLCBvciBhbSBJIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbj8KCkkgd2FudCB0byBzZWUgY29uc2lzdGVudCBuYW1pbmcgY29udmVudGlvbnMgYW5kIGEgbG9naWNhbCBzdHJ1Y3R1cmUgdGhhdCBtYWtlcyBzZW5zZS4gQSB3ZWxsLWRlc2lnbmVkIEtjb25maWcgZmlsZSBpcyBhIGpveSB0byB3b3JrIHdpdGg7IGEgcG9vcmx5IGRlc2lnbmVkIG9uZSBpcyBhIG5pZ2h0bWFyZS4gSSYjMzk7bSBob3BpbmcgdGhpcyBvbmUgZmFsbHMgaW50byB0aGUgZm9ybWVyIGNhdGVnb3J5LiBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIFBDSSBFbmRwb2ludCBGdW5jdGlvbnNcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBDSV9FUEZfVEVTVFxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7UENJIEVuZHBvaW50IFRlc3QgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIFBDSV9FTkRQT0lOVFxuICAgOTpcdFx0c2VsZWN0IENPTkZJR0ZTX0ZTXG4gIDEwOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgIEVuYWJsZSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSB0aGUgdGVzdCBkcml2ZXJcbiAgMTM6XHRcdCAgIGZvciBQQ0kgRW5kcG9pbnQuXG4gIDE0Olx0XG4gIDE1Olx0XHQgICBJZiBpbiBkb3VidCwgc2F5IFwmIzM0O05cJiMzNDsgdG8gZGlzYWJsZSBFbmRwb2ludCB0ZXN0IGRyaXZlci5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgUENJX0VQRl9OVEJcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O1BDSSBFbmRwb2ludCBOVEIgZHJpdmVyXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFBDSV9FTkRQT0lOVFxuICAyMDpcdFx0c2VsZWN0IENPTkZJR0ZTX0ZTXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIFNlbGVjdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSB0aGUgTm9uLVRyYW5zcGFyZW50XG4gIDIzOlx0XHQgIEJyaWRnZSAoTlRCKSBkcml2ZXIgZm9yIFBDSSBFbmRwb2ludC4gTlRCIGRyaXZlciBpbXBsZW1lbnRzIE5UQlxuICAyNDpcdFx0ICBjb250cm9sbGVyIGZ1bmN0aW9uYWxpdHkgdXNpbmcgbXVsdGlwbGUgUENJZSBlbmRwb2ludCBpbnN0YW5jZXMuXG4gIDI1Olx0XHQgIEl0IGNhbiBzdXBwb3J0IE5UQiBlbmRwb2ludCBmdW5jdGlvbiBkZXZpY2VzIGNyZWF0ZWQgdXNpbmdcbiAgMjY6XHRcdCAgZGV2aWNlIHRyZWUuXG4gIDI3Olx0XG4gIDI4Olx0XHQgIElmIGluIGRvdWJ0LCBzYXkgXCYjMzQ7TlwmIzM0OyB0byBkaXNhYmxlIEVuZHBvaW50IE5UQiBkcml2ZXIuXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIFBDSV9FUEZfVk5UQlxuICAzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7UENJIEVuZHBvaW50IFZpcnR1YWwgTlRCIGRyaXZlclwmIzM0O1xuICAzMjpcdFx0ZGVwZW5kcyBvbiBQQ0lfRU5EUE9JTlRcbiAgMzM6XHRcdGRlcGVuZHMgb24gTlRCXG4gIDM0Olx0XHRzZWxlY3QgQ09ORklHRlNfRlNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2VsZWN0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIHRoZSBOb24tVHJhbnNwYXJlbnRcbiAgMzc6XHRcdCAgQnJpZGdlIChOVEIpIGRyaXZlciBmb3IgUENJZSBFbmRwb2ludC4gTlRCIGRyaXZlciBpbXBsZW1lbnRzIE5UQlxuICAzODpcdFx0ICBiZXR3ZWVuIFBDSSBSb290IFBvcnQgYW5kIFBDSWUgRW5kcG9pbnQuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIElmIGluIGRvdWJ0LCBzYXkgXCYjMzQ7TlwmIzM0OyB0byBkaXNhYmxlIEVuZHBvaW50IE5UQiBkcml2ZXIuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTI4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgTlRCIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIGBOVEJfTkVUREVWYCBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gRmlyc3QsIGxldCBtZSBxdWlja2x5IHJlbWluZCBteXNlbGYgd2hhdCBOVEIgYWN0dWFsbHkgKmlzKjogTm9uLVRyYW5zcGFyZW50IEJyaWRnZSDigJMgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaGFyZHdhcmUsIGxpa2UgSW50ZWwsIEFNRCwgb3IgU3dpdGNodGVjIE5UQiwgZXRjLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIFFFTVUgZXZlbiAqZW11bGF0ZXMqIE5UQiBhdCBhbGwuCgpIYW5nIG9uLCBiZWZvcmUgSSBqdW1wIHRvIGFueSBjb25jbHVzaW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzeXN0ZW0gaW5zdHJ1Y3Rpb25zLCBlc3BlY2lhbGx5IHRoZSBjcml0ZXJpYSBmb3IgZGV0ZXJtaW5pbmcgaWYgc29tZXRoaW5nIGlzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsuIEkgbmVlZCB0byBiZSBjYXJlZnVsIG5vdCB0byB3YXN0ZSB0aW1lIG9uIGNoYW5nZXMgdGhhdCBhcmUgZXhwbGljaXRseSBydWxlZCBvdXQuIFJpZ2h0LCBzbyB0aGUgZ3VpZGUgZXhwbGljaXRseSBtZW50aW9ucyBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBUaGF0IGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMgdGhhdCAqZGVtYW5kKiByZWFsIFBDSWUgY2FyZHMuIEFuZCwgdGVhcmRvd24gY2FsbGJhY2tzIGFyZSBtb3N0bHkgaXJyZWxldmFudCwgc2luY2UgaG90LXVucGx1ZyBpcyB1bmxpa2VseSBpbiBhbiBhdXRvbWF0ZWQgZnV6emluZyBzY2VuYXJpby4KClRoZSBjb3JlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiBDYW4gTlRCIGRldmljZXMgYmUgc2ltdWxhdGVkIG9yIGV2ZW4gKmNyZWF0ZWQqIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgaW4gc3RhbmRhcmQgTGludXgsIFFFTVUsIG9yIGV2ZW4gd2l0aCBhIGZyYW1ld29yayBsaWtlIHN5emthbGxlcj8gSXMgdGhlcmUgYSBkdW1teSBvciB2aXJ0dWFsIE5UQiBjb250cm9sbGVyIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZj8gSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIga2VybmVsIGRyaXZlcnMgb3IgZW5kcG9pbnQgY29udHJvbGxlcnMgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gTlRCLiBSaWdodCwgbGV0JiMzOTtzIGV4cGxvcmUgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2NvbnRyb2xsZXJzL2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0LiBGcm9tIGhlcmUgSSBjYW4gbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCB0aGUgZmVhc2liaWxpdHkgb2YgdGFyZ2V0aW5nIHRoaXMgYXJlYSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3Q8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9lbmRwb2ludC9jb250cm9sbGVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTExCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgZGlyZWN0b3J5OgoKKipQQ0kgRW5kcG9pbnQgRHJpdmVyIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgUENJIGVuZHBvaW50IGRyaXZlciBjb2RlLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGludGVyYWN0cyB3aXRoIFBDSSBlbmRwb2ludHMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBlbmRwb2ludCBkcml2ZXIgZnJhbWV3b3JrLiBUaGlzIGluY2x1ZGVzLCBhbmQgbWF5YmUgSSBuZWVkIHRvIHJlZnJlc2ggbXlzZWxmIG9uLCB0aGUgZGV2aWNlIHRyZWUgc2V0dXAsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGhvdyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhcmUgYWNjZXNzZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGVuZHBvaW50IGRldmljZXMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGhvdyB0cmFuc2FjdGlvbnMgYXJlIGluaXRpYXRlZCBhbmQgY29tcGxldGVkLCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMuIEkgc2hvdWxkIHF1aWNrbHkgc2NhbiBmb3IgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgZG9jdW1lbnRhdGlvbiB0b28sIGFzIHRoaXMgY29udGV4dCB3aWxsIHNhdmUgc2lnbmlmaWNhbnQgdGltZSBkb3duIHRoZSByb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9lbmRwb2ludCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O3BjaS1lcC1jZnMuYyYjMzQ7LAogICAgJiMzNDtwY2ktZXAtbXNpLmMmIzM0OywKICAgICYjMzQ7cGNpLWVwYy1jb3JlLmMmIzM0OywKICAgICYjMzQ7cGNpLWVwYy1tZW0uYyYjMzQ7LAogICAgJiMzNDtwY2ktZXBmLWNvcmUuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtmdW5jdGlvbnMmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzIxMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipFUEMgRHJpdmVyIExvY2F0aW9uIEh1bnQqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgdGhlIEVuaGFuY2VkIFBDSSBDb250cm9sbGVyIChFUEMpIGRyaXZlcnMgYXJlIGhpZGluZyBpbiB0aGUga2VybmVsIHNvdXJjZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBpcyB0aGUgYGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvYCBkaXJlY3RvcnkuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBvYnZpb3VzIGhvbWUgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gUENJIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGVyZSBmaXJzdC4gQXNzdW1pbmcgdGhleSBmb2xsb3dlZCB0aGUgY29udmVudGlvbmFsIHN0cnVjdHVyZSwgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjb2RlLiBJZiBpdCYjMzk7cyBub3QgdGhlcmUsIEkmIzM5O2xsIG5lZWQgdG8gYnJvYWRlbiB0aGUgc2VhcmNoLCBidXQgdGhpcyBpcyB0aGUgaW5pdGlhbCBhbmQgYmVzdCBlZHVjYXRlZCBndWVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2VwY19jcmVhdGV8ZGV2bV9wY2lfZXBjX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UtZXAuYz02NjY9aW50IGNkbnNfcGNpZV9lcF9zZXR1cChzdHJ1Y3QgY2Ruc19wY2llX2VwICplcClcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvcGNpZS1jYWRlbmNlLWVwLmMtNzA0LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS1lcC5jOjcwNTpcdGVwYyA9IGRldm1fcGNpX2VwY19jcmVhdGUoZGV2LCBcdTAwMjZjZG5zX3BjaWVfZXBjX29wcyk7XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvcGNpZS1jYWRlbmNlLWVwLmMtNzA2LVx0aWYgKElTX0VSUihlcGMpKSB7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmM9MTUyMT1pbnQgZHdfcGNpZV9lcF9pbml0KHN0cnVjdCBkd19wY2llX2VwICplcClcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYy0xNTMyLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmM6MTUzMzpcdGVwYyA9IGRldm1fcGNpX2VwY19jcmVhdGUoZGV2LCBcdTAwMjZlcGNfb3BzKTtcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1lcC5jLTE1MzQtXHRpZiAoSVNfRVJSKGVwYykpIHtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcmNhci1lcC5jPTQ3NT1zdGF0aWMgaW50IHJjYXJfcGNpZV9lcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yY2FyLWVwLmMtNTIxLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJjYXItZXAuYzo1MjI6XHRlcGMgPSBkZXZtX3BjaV9lcGNfY3JlYXRlKGRldiwgXHUwMDI2cmNhcl9wY2llX2VwY19vcHMpO1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJjYXItZXAuYy01MjMtXHRpZiAoSVNfRVJSKGVwYykpIHtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYz04Mzk9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2VwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmMtODU1LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmM6ODU2Olx0ZXBjID0gZGV2bV9wY2lfZXBjX2NyZWF0ZShkZXYsIFx1MDAyNnJvY2tjaGlwX3BjaWVfZXBjX29wcyk7XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYy04NTctXHRpZiAoSVNfRVJSKGVwYykpIHtcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYz0xMDQxPXN0YXRpYyB2b2lkIHBjaV9lcGNfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTA0Ni0vKipcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjEwNDc6ICogX19wY2lfZXBjX2NyZWF0ZSgpIC0gY3JlYXRlIGEgbmV3IGVuZHBvaW50IGNvbnRyb2xsZXIgKEVQQykgZGV2aWNlXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMDQ4LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIGNyZWF0aW5nIHRoZSBuZXcgRVBDXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmM9MTA1ND1zdHJ1Y3QgcGNpX2VwYyAqXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYzoxMDU1Ol9fcGNpX2VwY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2VwY19vcHMgKm9wcyxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTEwNTYtXHRcdCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTA5LX1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMTA6RVhQT1JUX1NZTUJPTF9HUEwoX19wY2lfZXBjX2NyZWF0ZSk7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTExLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTExMi0vKipcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMTM6ICogX19kZXZtX3BjaV9lcGNfY3JlYXRlKCkgLSBjcmVhdGUgYSBuZXcgZW5kcG9pbnQgY29udHJvbGxlciAoRVBDKSBkZXZpY2VcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMTQtICogQGRldjogZGV2aWNlIHRoYXQgaXMgY3JlYXRpbmcgdGhlIG5ldyBFUENcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYz0xMTIzPXN0cnVjdCBwY2lfZXBjICpcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMjQ6X19kZXZtX3BjaV9lcGNfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHBjaV9lcGNfb3BzICpvcHMsXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTI1LVx0XHQgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTMyLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmM6MTEzMzpcdGVwYyA9IF9fcGNpX2VwY19jcmVhdGUoZGV2LCBvcHMsIG93bmVyKTtcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMzQtXHRpZiAoIUlTX0VSUihlcGMpKSB7XG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTE0Mi19XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYzoxMTQzOkVYUE9SVF9TWU1CT0xfR1BMKF9fZGV2bV9wY2lfZXBjX2NyZWF0ZSk7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTQ0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgwNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDc5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBjb250ZXh0LiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIFBDSWUgZW5kcG9pbnQgY29udHJvbGxlcnMsIGxpa2UgdGhvc2UgZnJvbSBDYWRlbmNlLCBEV0MsIFItQ2FyLCBhbmQgUm9ja2NoaXAsIGFsbCBTb0MgaGFyZHdhcmUuIFRoZW4gdGhlcmUgYXJlIHRoZSBOVEIgZHJpdmVycyB1bmRlciBgZHJpdmVycy9udGIvaHcvYCwgd2hpY2ggaGFuZGxlIHNwZWNpZmljIE5UQiBoYXJkd2FyZSBmcm9tIEFNRCwgSURULCBJbnRlbCwgU3dpdGNodGVjLCBhbmQgYSBnZW5lcmljIEVQRiBpbXBsZW1lbnRhdGlvbi4gVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCAqbm9uZSogb2YgdGhlc2UgY29udHJvbGxlcnMgYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIHZpcnR1YWwgbWFjaGluZXMuIE5vdywgTlRCLCBhcyBhIHJlZnJlc2hlciwgaXMgTm9uLVRyYW5zcGFyZW50IEJyaWRnaW5nIOKAkyBhIGRpcmVjdCwgcG9pbnQtdG8tcG9pbnQgUENJZSBjb25uZWN0aW9uIGZhY2lsaXRhdGluZyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdHdvIGRpc3RpbmN0IGNvbXB1dGVyIHN5c3RlbXMuIEl0IGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIGRlZGljYXRlZCBoYXJkd2FyZSBOVEIgY29udHJvbGxlcnMgb3IgUENJZSBlbmRwb2ludCBjb250cm9sbGVycyBpbiBhIGhvc3QtdG8taG9zdCBzZXR1cC4gUUVNVSBhbmQgR0NFIGp1c3QgZG9uJiMzOTt0IG9mZmVyIHRoYXQuCgpOb3csIGxldCYjMzk7cyBnbyBiYWNrIHRvIHRoZSBydWxlcy4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBydWxlcyBzdGF0ZSB3ZSBzaG91bGRuJiMzOTt0IGNvbnNpZGVyIHBhdGNoZXMgdGhhdCBvbmx5IG1vZGlmeSBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBjb21tZW50cywgY29zbWV0aWMgY2hhbmdlcywgb3IgbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24mIzM5O3QgaW1wYWN0IGV4ZWN1dGlvbiBmbG93LiBXZSBhbHNvIGV4Y2x1ZGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbi4gU3BlY2lmaWNhbGx5LCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG9mZi1saW1pdHMsIGFzIGFyZSB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCBvbiBob3QtdW5wbHVnLgoKVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIGBkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNgLiBJdCYjMzk7cyBjb252ZXJ0aW5nIGBuZGV2LSZndDtzdGF0cy4qYCB0byBwZXItQ1BVIG5ldHdvcmsgc3RhdGlzdGljcyAoYHBjcHVfc3dfbmV0c3RhdHNgKSwgdXNpbmcgYHU2NF9zdGF0c18qYCBhbmQgYERFVl9TVEFUU19JTkNgLCBzZXR0aW5nIGBuZGV2LSZndDtwY3B1X3N0YXRfdHlwZWAsIGFuZCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgYG50Yl9uZXRkZXZfdHhfaGFuZGxlcmAgZnVuY3Rpb24uCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgYG50Yl9uZXRkZXZgIHJlYWNoYWJsZSBpbiBRRU1VL0dDRT8gV2l0aG91dCBhIHJlYWwgTlRCIGhhcmR3YXJlIGNvbnRyb2xsZXIgKEludGVsLCBBTUQsIGV0Yy4pLCBgbnRiX3RyYW5zcG9ydF9wcm9iZWAgaXMgbmV2ZXIgaW52b2tlZC4gVGhlIGBudGJfdHJhbnNwb3J0X2xpc3RgIHJlbWFpbnMgZW1wdHksIGFuZCByZWdpc3RyYXRpb24gZmFpbHMgd2l0aCBgLUVOT0RFVmAuIENvbnNlcXVlbnRseSwgYG50Yl9uZXRkZXZfcHJvYmVgIGlzIG5ldmVyIGNhbGxlZCwgYW5kIG5vIG5ldHdvcmsgZGV2aWNlIGlzIGV2ZXIgaW5zdGFudGlhdGVkLiBUaGVyZWZvcmUsIG5vIGBudGJfbmV0ZGV2YCBpcyBldmVyIGNyZWF0ZWQsIG9yIGF0IGxlYXN0LCBpbnN0YW50aWF0ZWQuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgc2VhcmNoIHRoZSBrZXJuZWwgdHJlZSBmb3IgYHN0cnVjdCBudGJfZGV2X29wc2Agb3IgYG50Yl9yZWdpc3Rlcl9kZXZpY2VgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbW9jayBvciBsb29wYmFjayBpbXBsZW1lbnRhdGlvbiBJJiMzOTttIG1pc3NpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250Yl9kZXZfb3BzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL2NvcmUuYz0xMDE9aW50IG50Yl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG50Yl9kZXYgKm50Yilcbi0tXG5kcml2ZXJzL250Yi9jb3JlLmMtMTEwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbnRiL2NvcmUuYzoxMTE6XHRpZiAoIW50Yl9kZXZfb3BzX2lzX3ZhbGlkKG50Yi1cdTAwM2VvcHMpKVxuZHJpdmVycy9udGIvY29yZS5jLTExMi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYz01Mzg9c3RhdGljIGludCBhbWRfbnRiX3BlZXJfc3BhZF93cml0ZShzdHJ1Y3QgbnRiX2RldiAqbnRiLCBpbnQgcGlkeCxcbi0tXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTU1My1cbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM6NTU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgYW1kX250Yl9vcHMgPSB7XG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTU1NS1cdC5td19jb3VudFx0XHQ9IGFtZF9udGJfbXdfY291bnQsXG4tLVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYz01ODc9c3RhdGljIGludCBudGJfZXBmX2RiX2NsZWFyKHN0cnVjdCBudGJfZGV2ICpudGIsIHU2NCBkYl9iaXRzKVxuLS1cbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNTk1LVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYzo1OTY6c3RhdGljIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBudGJfZXBmX29wcyA9IHtcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNTk3LVx0Lm13X2NvdW50XHRcdD0gbnRiX2VwZl9td19jb3VudCxcbi0tXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jPTIxOTc9c3RhdGljIGlycXJldHVybl90IGlkdF90aHJlYWRfaXNyKGludCBpcnEsIHZvaWQgKmRldmlkKVxuLS1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjIzNi0gKi9cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM6MjIzNzpzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIGlkdF9udGJfb3BzID0ge1xuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYy0yMjM4LVx0LnBvcnRfbnVtYmVyXHRcdD0gaWR0X250Yl9wb3J0X251bWJlcixcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jPTgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbnRiX3hsYXRfcmVnIHhlb25fc2VjX3hsYXQ7XG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiX29wcztcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtODQtXG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz0xOTg5PXN0cnVjdCBpbnRlbF9iMmJfYWRkciB4ZW9uX2IyYl9kc2RfYWRkciA9IHtcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTE5OTYtLyogb3BlcmF0aW9ucyBmb3IgcHJpbWFyeSBzaWRlIG9mIGxvY2FsIG50YiAqL1xuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYzoxOTk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiX29wcyA9IHtcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTk5OC1cdC5td19jb3VudFx0XHQ9IGludGVsX250Yl9td19jb3VudCxcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5jPTU5NT1pbnQgaW50ZWxfbnRiM19kYl9jbGVhcihzdHJ1Y3QgbnRiX2RldiAqbnRiLCB1NjQgZGJfYml0cylcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5jLTYwMy1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmM6NjA0OmNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGIzX29wcyA9IHtcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmMtNjA1LVx0Lm13X2NvdW50XHRcdD0gaW50ZWxfbnRiX213X2NvdW50LFxuLS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmg9MTEyPWludCBpbnRlbF9udGIzX3BlZXJfZGJfYWRkcihzdHJ1Y3QgbnRiX2RldiAqbnRiLCBwaHlzX2FkZHJfdCAqZGJfYWRkcixcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5oLTExNS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmg6MTE2OmV4dGVybiBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiM19vcHM7XG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5oLTExNy1cbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5jPTUzNj1zdGF0aWMgaW50IGludGVsX250YjRfbXdfZ2V0X2FsaWduKHN0cnVjdCBudGJfZGV2ICpudGIsIGludCBwaWR4LCBpbnQgaWR4LFxuLS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW40LmMtNTc3LVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuYzo1Nzg6Y29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIGludGVsX250YjRfb3BzID0ge1xuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuYy01NzktXHQubXdfY291bnRcdFx0PSBpbnRlbF9udGJfbXdfY291bnQsXG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuaD0xMTE9c3NpemVfdCBuZGV2X250YjRfZGVidWdmc19yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqdWJ1Zixcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5oLTExMy1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW40Lmg6MTE0OmV4dGVybiBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiNF9vcHM7XG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5oLTExNS1cbi0tXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYz03OTU9c3RhdGljIGludCBzd2l0Y2h0ZWNfbnRiX3BlZXJfc3BhZF9hZGRyKHN0cnVjdCBudGJfZGV2ICpudGIsIGludCBwaWR4LFxuLS1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTgxMi1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jOjgxMzpzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIHN3aXRjaHRlY19udGJfb3BzID0ge1xuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtODE0LVx0Lm13X2NvdW50XHRcdD0gc3dpdGNodGVjX250Yl9td19jb3VudCxcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM9MTY0Mz1zdGF0aWMgc3RydWN0IGRldmljZSAqdm50Yl9lcGZfZ2V0X2RtYV9kZXYoc3RydWN0IG50Yl9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE2NTAtXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTY1MTpzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIHZudGJfZXBmX29wcyA9IHtcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjUyLVx0Lm13X2NvdW50XHRcdD0gdm50Yl9lcGZfbXdfY291bnQsXG4tLVxuaW5jbHVkZS9saW51eC9udGIuaD0xOTk9c3RhdGljIGlubGluZSBpbnQgbnRiX2N0eF9vcHNfaXNfdmFsaWQoY29uc3Qgc3RydWN0IG50Yl9jdHhfb3BzICpvcHMpXG4tLVxuaW5jbHVkZS9saW51eC9udGIuaC0yMDktLyoqXG5pbmNsdWRlL2xpbnV4L250Yi5oOjIxMDogKiBzdHJ1Y3QgbnRiX2Rldl9vcHMgLSBudGIgZGV2aWNlIG9wZXJhdGlvbnNcbmluY2x1ZGUvbGludXgvbnRiLmgtMjExLSAqIEBwb3J0X251bWJlcjpcdFNlZSBudGJfcG9ydF9udW1iZXIoKS5cbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTI2MC0gKi9cbmluY2x1ZGUvbGludXgvbnRiLmg6MjYxOnN0cnVjdCBudGJfZGV2X29wcyB7XG5pbmNsdWRlL2xpbnV4L250Yi5oLTI2Mi1cdGludCAoKnBvcnRfbnVtYmVyKShzdHJ1Y3QgbnRiX2RldiAqbnRiKTtcbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTMzNS1cbmluY2x1ZGUvbGludXgvbnRiLmg6MzM2OnN0YXRpYyBpbmxpbmUgaW50IG50Yl9kZXZfb3BzX2lzX3ZhbGlkKGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyAqb3BzKVxuaW5jbHVkZS9saW51eC9udGIuaC0zMzcte1xuLS1cbmluY2x1ZGUvbGludXgvbnRiLmg9NDA2PXN0cnVjdCBudGJfY2xpZW50IHtcbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQxNi0gKiBAdG9wbzpcdFx0RGV0ZWN0ZWQgdG9wb2xvZ3kgb2YgdGhlIG50Yi5cbmluY2x1ZGUvbGludXgvbnRiLmg6NDE3OiAqIEBvcHM6XHRcdFNlZSBcdTAwMjZudGJfZGV2X29wcy5cbmluY2x1ZGUvbGludXgvbnRiLmgtNDE4LSAqIEBjdHg6XHRcdFNlZSBcdTAwMjZudGJfY3R4X29wcy5cbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oPTQyMT1zdHJ1Y3QgbnRiX2RldiB7XG4tLVxuaW5jbHVkZS9saW51eC9udGIuaC00MjQtXHRlbnVtIG50Yl90b3BvXHRcdFx0dG9wbztcbmluY2x1ZGUvbGludXgvbnRiLmg6NDI1Olx0Y29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzXHQqb3BzO1xuaW5jbHVkZS9saW51eC9udGIuaC00MjYtXHR2b2lkXHRcdFx0XHQqY3R4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQ4NAoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnRiX25ldGRldmAgRHJpdmVyJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gdGFraW5nIGEgbG9vayBhdCB0aGlzIGBudGJfbmV0ZGV2YCBkcml2ZXIsIGFuZCBpdCYjMzk7cyBsb29raW5nIHByZXR0eSBibGVhayBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gVGhlIGNvcmUgb2YgbXkgYW5hbHlzaXMgaGluZ2VzIG9uIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSByZWxldmFudCBgbnRiX2Rldl9vcHNgIGltcGxlbWVudGF0aW9ucyBJJiMzOTt2ZSBpZGVudGlmaWVkIOKAkyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9udGIvaHcvYW1kL2AsIGBkcml2ZXJzL250Yi9ody9lcGYvYCwgYGRyaXZlcnMvbnRiL2h3L2lkdC9gLCBgZHJpdmVycy9udGIvaHcvaW50ZWwvYCwgYGRyaXZlcnMvbnRiL2h3L21zY2MvYCwgYW5kIGV2ZW4gdGhlIGBkcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmNgIHBhdGgg4oCTIGFyZSBkZWVwbHkgcm9vdGVkIGluIGhhcmR3YXJlIFBDSWUgZGV2aWNlIGRyaXZlcnMuIFRoZXNlIGFyZW4mIzM5O3QganVzdCBhYnN0cmFjdCBjb25jZXB0czsgdGhleSYjMzk7cmUgdGllZCB0byBzcGVjaWZpYyBwaHlzaWNhbCBOVEIgaGFyZHdhcmUgbGlrZSBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIGNvbnRyb2xsZXJzLgoKVGhlIGNyaXRpY2FsIGlzc3VlIGlzIHRoYXQgbm9uZSBvZiB0aGVzZSBoYXJkd2FyZSBjb21wb25lbnRzIGFyZSBlbXVsYXRlZCB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoaXMgZWZmZWN0aXZlbHkgbWFrZXMgdGhlIGBudGJfbmV0ZGV2YCBkcml2ZXIgaW5hY2Nlc3NpYmxlIGluIHRoZXNlIGNvbW1vbiB2aXJ0dWFsIGZ1enppbmcgc2V0dXBzLiBJIG1lYW4sIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgJiMzNDtWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydCYjMzQ7IGhlcmUg4oCTIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGludGVyZmFjZSB3aXRoIHRoYXQgc3BlY2lmaWMgTlRCIGhhcmR3YXJlLiBXaXRob3V0IHRoYXQgaGFyZHdhcmUgcHJlc2VudCAob3IgZW11bGF0ZWQgd2l0aCBzdWZmaWNpZW50IGZpZGVsaXR5KSwgdGhlIGRyaXZlciB3aWxsIHNpbXBseSByZW1haW4gdW5yZWFjaGFibGUuCgpJJiMzOTt2ZSBhbHJlYWR5IHJ1biBhIHF1aWNrIGNoZWNrIG9mIHRoZSByZWxldmFudCBjcml0ZXJpYS4gVGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgdW5zdXJwcmlzaW5nbHkgZmFsc2UsIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGVtcHR5LCBhbmQgdGhlcmUgYXJlIG5vIGBGb2N1c1N5bWJvbHNgLiBUaGUgcmVhc29uaW5nIGZvciB0aGlzIGluYWNjZXNzaWJpbGl0eSBpcyBjbGVhcjsgaXQgYWxsIGJvaWxzIGRvd24gdG8gdGhlIGRlcGVuZGVuY2Ugb24gcGh5c2ljYWwgUENJZSBOVEIgaGFyZHdhcmUuCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIExldCYjMzk7cyBqdXN0IG1ha2Ugb25lIGxhc3QsIHF1aWNrIGNoZWNrIG9mIHRoZSBmb3JtYXR0aW5nIHRvIGVuc3VyZSBpdCBhbGwgbG9va3MgZ29vZCwgYW5kIHRoZW4gSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7bnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7bnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozNDoyNS40MTg4NzY4NTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTkzNzQ4OTA3MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJudGJfbmV0ZGV2IChWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydCkgcmVxdWlyZXMgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSAoTlRCKSBoYXJkd2FyZSBkZXZpY2VzIChzdWNoIGFzIEludGVsLCBBTUQsIElEVCwgb3IgU3dpdGNodGVjIFBDSWUgTlRCIGNvbnRyb2xsZXJzKSwgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY29udHJvbGxlcnMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MzQ6MjUuNDE4ODgyOTY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMzMTI1NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNTNiNzNmOTExMDQ0M2UwOGJlMjExNzIxNTlkNDlhMTE4ZTFhMmI3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDMwIDE1OjM0OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L250Yl9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L250Yl9uZXRkZXYuY1xcbmluZGV4IDljMTcxNjk3ZTc2MjAuLjJjMDRiZTZkNjFhODUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXFxuKysrIGIvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXFxuQEAgLTEyNyw4ICsxMjcsMTAgQEAgc3RhdGljIHZvaWQgbnRiX25ldGRldl9yeF9oYW5kbGVyKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCwgdm9pZCAqcXBfZGF0YSxcXG4ge1xcbiBcXHRzdHJ1Y3QgbnRiX25ldGRldl9xdWV1ZSAqcSA9IHFwX2RhdGE7XFxuIFxcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLVxcdTAwM2VudGRldjtcXG4rXFx0c3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0cztcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKm5ld19za2I7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbitcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHRuZGV2ID0gZGV2LVxcdTAwM2VuZGV2O1xcbkBAIC0xMzksMTcgKzE0MSwyMCBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3J4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxcbiBcXHRuZXRkZXZfZGJnKG5kZXYsIFxcXCIlczogJWQgYnl0ZSBwYXlsb2FkIHJlY2VpdmVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgbGVuKTtcXG4gXFxuIFxcdGlmIChsZW4gXFx1MDAzYyAwKSB7XFxuLVxcdFxcdG5kZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbi1cXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XFxuK1xcdFxcdERFVl9TVEFUU19JTkMobmRldiwgcnhfZXJyb3JzKTtcXG4rXFx0XFx0REVWX1NUQVRTX0lOQyhuZGV2LCByeF9sZW5ndGhfZXJyb3JzKTtcXG4gXFx0XFx0Z290byBlbnF1ZXVlX2FnYWluO1xcbiBcXHR9XFxuIFxcbi1cXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9wYWNrZXRzKys7XFxuLVxcdG5kZXYtXFx1MDAzZXN0YXRzLnJ4X2J5dGVzICs9IGxlbjtcXG4rXFx0dHN0YXRzID0gdGhpc19jcHVfcHRyKG5kZXYtXFx1MDAzZXRzdGF0cyk7XFxuK1xcdGZsYWdzID0gdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbl9pcnFzYXZlKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXN5bmNwKTtcXG4rXFx0dTY0X3N0YXRzX2luYyhcXHUwMDI2dHN0YXRzLVxcdTAwM2VyeF9wYWNrZXRzKTtcXG4rXFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2dHN0YXRzLVxcdTAwM2VyeF9ieXRlcywgbGVuKTtcXG4rXFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmRfaXJxcmVzdG9yZShcXHUwMDI2dHN0YXRzLVxcdTAwM2VzeW5jcCwgZmxhZ3MpO1xcbiBcXG4gXFx0bmV3X3NrYiA9IG5ldGRldl9hbGxvY19za2IobmRldiwgbmRldi1cXHUwMDNlbXR1ICsgRVRIX0hMRU4pO1xcbiBcXHRpZiAoIW5ld19za2IpIHtcXG4tXFx0XFx0bmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZCsrO1xcbitcXHRcXHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Ryb3BwZWQpO1xcbiBcXHRcXHRnb3RvIGVucXVldWVfYWdhaW47XFxuIFxcdH1cXG4gXFxuQEAgLTE2Niw4ICsxNzEsOCBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3J4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxcbiBcXHRyYyA9IG50Yl90cmFuc3BvcnRfcnhfZW5xdWV1ZShxcCwgc2tiLCBza2ItXFx1MDAzZWRhdGEsIG5kZXYtXFx1MDAzZW10dSArIEVUSF9ITEVOKTtcXG4gXFx0aWYgKHJjKSB7XFxuIFxcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuLVxcdFxcdG5kZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbi1cXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9maWZvX2Vycm9ycysrO1xcbitcXHRcXHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Vycm9ycyk7XFxuK1xcdFxcdERFVl9TVEFUU19JTkMobmRldiwgcnhfZmlmb19lcnJvcnMpO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTIxMCwyNSArMjE1LDM5IEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfdHhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsXFxuIHtcXG4gXFx0c3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnEgPSBxcF9kYXRhO1xcbiBcXHRzdHJ1Y3QgbnRiX25ldGRldiAqZGV2ID0gcS1cXHUwMDNlbnRkZXY7XFxuK1xcdHN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbitcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHRib29sIHJlZ2lzdGVyZWQ7XFxuIFxcbiBcXHRuZGV2ID0gZGV2LVxcdTAwM2VuZGV2O1xcbiBcXHRza2IgPSBkYXRhO1xcbiBcXHRpZiAoIXNrYiB8fCAhbmRldilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRyZWdpc3RlcmVkID0gUkVBRF9PTkNFKG5kZXYtXFx1MDAzZXJlZ19zdGF0ZSkgPT0gTkVUUkVHX1JFR0lTVEVSRUQ7XFxuK1xcdGlmICghcmVnaXN0ZXJlZClcXG4rXFx0XFx0Z290byBmcmVlX3NrYjtcXG4rXFxuIFxcdGlmIChsZW4gXFx1MDAzZSAwKSB7XFxuLVxcdFxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X3BhY2tldHMrKztcXG4tXFx0XFx0bmRldi1cXHUwMDNlc3RhdHMudHhfYnl0ZXMgKz0gc2tiLVxcdTAwM2VsZW47XFxuK1xcdFxcdC8qIFRoZSBtZW1jcHkga3RocmVhZCBjYW4gbWlncmF0ZSwgc28gcGluIHRoZSBwZXItQ1BVIHVwZGF0ZS4gKi9cXG4rXFx0XFx0dHN0YXRzID0gZ2V0X2NwdV9wdHIobmRldi1cXHUwMDNldHN0YXRzKTtcXG4rXFx0XFx0ZmxhZ3MgPSB1NjRfc3RhdHNfdXBkYXRlX2JlZ2luX2lycXNhdmUoXFx1MDAyNnRzdGF0cy1cXHUwMDNlc3luY3ApO1xcbitcXHRcXHR1NjRfc3RhdHNfaW5jKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXR4X3BhY2tldHMpO1xcbitcXHRcXHR1NjRfc3RhdHNfYWRkKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXR4X2J5dGVzLCBza2ItXFx1MDAzZWxlbik7XFxuK1xcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kX2lycXJlc3RvcmUoXFx1MDAyNnRzdGF0cy1cXHUwMDNlc3luY3AsIGZsYWdzKTtcXG4rXFx0XFx0cHV0X2NwdV9wdHIobmRldi1cXHUwMDNldHN0YXRzKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0bmRldi1cXHUwMDNlc3RhdHMudHhfZXJyb3JzKys7XFxuLVxcdFxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzKys7XFxuK1xcdFxcdERFVl9TVEFUU19JTkMobmRldiwgdHhfZXJyb3JzKTtcXG4rXFx0XFx0REVWX1NUQVRTX0lOQyhuZGV2LCB0eF9hYm9ydGVkX2Vycm9ycyk7XFxuIFxcdH1cXG4gXFxuK2ZyZWVfc2tiOlxcbiBcXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xcbiBcXG4tXFx0aWYgKG50Yl90cmFuc3BvcnRfdHhfZnJlZV9lbnRyeShxcCkgXFx1MDAzZT0gdHhfc3RhcnQpIHtcXG4rXFx0aWYgKHJlZ2lzdGVyZWQgXFx1MDAyNlxcdTAwMjYgbnRiX3RyYW5zcG9ydF90eF9mcmVlX2VudHJ5KHFwKSBcXHUwMDNlPSB0eF9zdGFydCkge1xcbiBcXHRcXHQvKiBNYWtlIHN1cmUgYW55Ym9keSBzdG9wcGluZyB0aGUgcXVldWUgYWZ0ZXIgdGhpcyBzZWVzIHRoZSBuZXdcXG4gXFx0XFx0ICogdmFsdWUgb2YgbnRiX3RyYW5zcG9ydF90eF9mcmVlX2VudHJ5KClcXG4gXFx0XFx0ICovXFxuQEAgLTIzNyw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxcbiBcXHRcXHQgICAgbnRiX3RyYW5zcG9ydF9saW5rX3F1ZXJ5KHEtXFx1MDAzZXFwKSlcXG4gXFx0XFx0XFx0bmV0aWZfd2FrZV9zdWJxdWV1ZShuZGV2LCBxLVxcdTAwM2VxaWQpO1xcbiBcXHR9XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9xdWV1ZV9oYW5kbGVycyBudGJfbmV0ZGV2X2hhbmRsZXJzID0ge1xcbkBAIC0yNzcsNyArMjk3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IG50Yl9uZXRkZXZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gZHJvcDpcXG4gXFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4tXFx0bmRldi1cXHUwMDNlc3RhdHMudHhfZHJvcHBlZCsrO1xcbitcXHRERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Ryb3BwZWQpO1xcbiBcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbiB9XFxuIFxcbkBAIC02NDcsNiArNjY3LDcgQEAgc3RhdGljIGludCBudGJfbmV0ZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmNsaWVudF9kZXYpXFxuIFxcdH1cXG4gXFxuIFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9ISUdIRE1BO1xcbitcXHRuZGV2LVxcdTAwM2VwY3B1X3N0YXRfdHlwZSA9IE5FVERFVl9QQ1BVX1NUQVRfVFNUQVRTO1xcbiBcXG4gXFx0bmRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjM0OjI1LjkzMzE3MjQ2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mjk5MzIzNDU5ODk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJudGJfbmV0ZGV2IChWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydCkgcmVxdWlyZXMgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSAoTlRCKSBoYXJkd2FyZSBkZXZpY2VzIChzdWNoIGFzIEludGVsLCBBTUQsIElEVCwgb3IgU3dpdGNodGVjIFBDSWUgTlRCIGNvbnRyb2xsZXJzKSwgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY29udHJvbGxlcnMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTUzYjczZjkxMTA0NDNlMDhiZTIxMTcyMTU5ZDQ5YTExOGUxYTJiN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDE1OjM0OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jIGIvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXG5pbmRleCA5YzE3MTY5N2U3NjIwLi4yYzA0YmU2ZDYxYTg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNcbkBAIC0xMjcsOCArMTI3LDEwIEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsXG4ge1xuIFx0c3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnEgPSBxcF9kYXRhO1xuIFx0c3RydWN0IG50Yl9uZXRkZXYgKmRldiA9IHEtXHUwMDNlbnRkZXY7XG4rXHRzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0cyAqdHN0YXRzO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKm5ld19za2I7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgcmM7XG4gXG4gXHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG5AQCAtMTM5LDE3ICsxNDEsMjAgQEAgc3RhdGljIHZvaWQgbnRiX25ldGRldl9yeF9oYW5kbGVyKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCwgdm9pZCAqcXBfZGF0YSxcbiBcdG5ldGRldl9kYmcobmRldiwgXCIlczogJWQgYnl0ZSBwYXlsb2FkIHJlY2VpdmVkXFxuXCIsIF9fZnVuY19fLCBsZW4pO1xuIFxuIFx0aWYgKGxlbiBcdTAwM2MgMCkge1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKztcbitcdFx0REVWX1NUQVRTX0lOQyhuZGV2LCByeF9lcnJvcnMpO1xuK1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2xlbmd0aF9lcnJvcnMpO1xuIFx0XHRnb3RvIGVucXVldWVfYWdhaW47XG4gXHR9XG4gXG4tXHRuZGV2LVx1MDAzZXN0YXRzLnJ4X3BhY2tldHMrKztcbi1cdG5kZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgKz0gbGVuO1xuK1x0dHN0YXRzID0gdGhpc19jcHVfcHRyKG5kZXYtXHUwMDNldHN0YXRzKTtcbitcdGZsYWdzID0gdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbl9pcnFzYXZlKFx1MDAyNnRzdGF0cy1cdTAwM2VzeW5jcCk7XG4rXHR1NjRfc3RhdHNfaW5jKFx1MDAyNnRzdGF0cy1cdTAwM2VyeF9wYWNrZXRzKTtcbitcdHU2NF9zdGF0c19hZGQoXHUwMDI2dHN0YXRzLVx1MDAzZXJ4X2J5dGVzLCBsZW4pO1xuK1x0dTY0X3N0YXRzX3VwZGF0ZV9lbmRfaXJxcmVzdG9yZShcdTAwMjZ0c3RhdHMtXHUwMDNlc3luY3AsIGZsYWdzKTtcbiBcbiBcdG5ld19za2IgPSBuZXRkZXZfYWxsb2Nfc2tiKG5kZXYsIG5kZXYtXHUwMDNlbXR1ICsgRVRIX0hMRU4pO1xuIFx0aWYgKCFuZXdfc2tiKSB7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCsrO1xuK1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Ryb3BwZWQpO1xuIFx0XHRnb3RvIGVucXVldWVfYWdhaW47XG4gXHR9XG4gXG5AQCAtMTY2LDggKzE3MSw4IEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsXG4gXHRyYyA9IG50Yl90cmFuc3BvcnRfcnhfZW5xdWV1ZShxcCwgc2tiLCBza2ItXHUwMDNlZGF0YSwgbmRldi1cdTAwM2VtdHUgKyBFVEhfSExFTik7XG4gXHRpZiAocmMpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMrKztcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy5yeF9maWZvX2Vycm9ycysrO1xuK1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Vycm9ycyk7XG4rXHRcdERFVl9TVEFUU19JTkMobmRldiwgcnhfZmlmb19lcnJvcnMpO1xuIFx0fVxuIH1cbiBcbkBAIC0yMTAsMjUgKzIxNSwzOSBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIHtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxID0gcXBfZGF0YTtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLVx1MDAzZW50ZGV2O1xuK1x0c3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0cztcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRib29sIHJlZ2lzdGVyZWQ7XG4gXG4gXHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG4gXHRza2IgPSBkYXRhO1xuIFx0aWYgKCFza2IgfHwgIW5kZXYpXG4gXHRcdHJldHVybjtcbiBcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdHJlZ2lzdGVyZWQgPSBSRUFEX09OQ0UobmRldi1cdTAwM2VyZWdfc3RhdGUpID09IE5FVFJFR19SRUdJU1RFUkVEO1xuK1x0aWYgKCFyZWdpc3RlcmVkKVxuK1x0XHRnb3RvIGZyZWVfc2tiO1xuK1xuIFx0aWYgKGxlbiBcdTAwM2UgMCkge1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnR4X3BhY2tldHMrKztcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy50eF9ieXRlcyArPSBza2ItXHUwMDNlbGVuO1xuK1x0XHQvKiBUaGUgbWVtY3B5IGt0aHJlYWQgY2FuIG1pZ3JhdGUsIHNvIHBpbiB0aGUgcGVyLUNQVSB1cGRhdGUuICovXG4rXHRcdHRzdGF0cyA9IGdldF9jcHVfcHRyKG5kZXYtXHUwMDNldHN0YXRzKTtcbitcdFx0ZmxhZ3MgPSB1NjRfc3RhdHNfdXBkYXRlX2JlZ2luX2lycXNhdmUoXHUwMDI2dHN0YXRzLVx1MDAzZXN5bmNwKTtcbitcdFx0dTY0X3N0YXRzX2luYyhcdTAwMjZ0c3RhdHMtXHUwMDNldHhfcGFja2V0cyk7XG4rXHRcdHU2NF9zdGF0c19hZGQoXHUwMDI2dHN0YXRzLVx1MDAzZXR4X2J5dGVzLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmRfaXJxcmVzdG9yZShcdTAwMjZ0c3RhdHMtXHUwMDNlc3luY3AsIGZsYWdzKTtcbitcdFx0cHV0X2NwdV9wdHIobmRldi1cdTAwM2V0c3RhdHMpO1xuIFx0fSBlbHNlIHtcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy50eF9lcnJvcnMrKztcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy50eF9hYm9ydGVkX2Vycm9ycysrO1xuK1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Vycm9ycyk7XG4rXHRcdERFVl9TVEFUU19JTkMobmRldiwgdHhfYWJvcnRlZF9lcnJvcnMpO1xuIFx0fVxuIFxuK2ZyZWVfc2tiOlxuIFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbiBcbi1cdGlmIChudGJfdHJhbnNwb3J0X3R4X2ZyZWVfZW50cnkocXApIFx1MDAzZT0gdHhfc3RhcnQpIHtcbitcdGlmIChyZWdpc3RlcmVkIFx1MDAyNlx1MDAyNiBudGJfdHJhbnNwb3J0X3R4X2ZyZWVfZW50cnkocXApIFx1MDAzZT0gdHhfc3RhcnQpIHtcbiBcdFx0LyogTWFrZSBzdXJlIGFueWJvZHkgc3RvcHBpbmcgdGhlIHF1ZXVlIGFmdGVyIHRoaXMgc2VlcyB0aGUgbmV3XG4gXHRcdCAqIHZhbHVlIG9mIG50Yl90cmFuc3BvcnRfdHhfZnJlZV9lbnRyeSgpXG4gXHRcdCAqL1xuQEAgLTIzNyw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIFx0XHQgICAgbnRiX3RyYW5zcG9ydF9saW5rX3F1ZXJ5KHEtXHUwMDNlcXApKVxuIFx0XHRcdG5ldGlmX3dha2Vfc3VicXVldWUobmRldiwgcS1cdTAwM2VxaWQpO1xuIFx0fVxuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX3F1ZXVlX2hhbmRsZXJzIG50Yl9uZXRkZXZfaGFuZGxlcnMgPSB7XG5AQCAtMjc3LDcgKzI5Nyw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBudGJfbmV0ZGV2X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBkcm9wOlxuIFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbi1cdG5kZXYtXHUwMDNlc3RhdHMudHhfZHJvcHBlZCsrO1xuK1x0REVWX1NUQVRTX0lOQyhuZGV2LCB0eF9kcm9wcGVkKTtcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG4gfVxuIFxuQEAgLTY0Nyw2ICs2NjcsNyBAQCBzdGF0aWMgaW50IG50Yl9uZXRkZXZfcHJvYmUoc3RydWN0IGRldmljZSAqY2xpZW50X2RldilcbiBcdH1cbiBcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgPSBORVRJRl9GX0hJR0hETUE7XG4rXHRuZGV2LVx1MDAzZXBjcHVfc3RhdF90eXBlID0gTkVUREVWX1BDUFVfU1RBVF9UU1RBVFM7XG4gXG4gXHRuZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozNDoyNS45MzMxNzQ3MDRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTUwMDYxODA2NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBOVEIgTmV0ZGV2IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvbnRiX25ldGRldi5jYC4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGluc3RpbmN0cyBraWNrIGluLiBXaGF0J3MgYG50Yl9uZXRkZXZgIGFsbCBhYm91dD8gSXMgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgY2FuIGl0IGJlIGVtdWxhdGVkPyBEb2VzIGl0IHJlbHkgb24gTm9uLVRyYW5zcGFyZW50IEJyaWRnZSAoTlRCKSBmdW5jdGlvbmFsaXR5IHRoYXQgbWlnaHQgYmUgdmlydHVhbGl6ZWQsIGVtdWxhdGVkLCBvciwgaW4gY29udHJhc3QsIG1hbmRhdGUgY2VydGFpbiBwaHlzaWNhbCBoYXJkd2FyZSBjb21wb25lbnRzPyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmb3VuZGF0aW9uIGhlcmUgYmVmb3JlIGRpdmluZyB0b28gZGVlcC5cblxuTXkgbmV4dCBtb3ZlIGlzIHRvIGJyb2FkZW4gdGhlIHNlYXJjaC4gSSBuZWVkIHRvIGV4YW1pbmUgYGRyaXZlcnMvbnRiL2AgYW5kIHRoZW4gdGhlIHRhcmdldCBmaWxlIGBkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNgIGFuZCBhbHNvIHRoZSBhc3NvY2lhdGVkIEtjb25maWcgZmlsZXMsIGVzcGVjaWFsbHkgZm9yIHRoZSBgbnRiYCBhbmQgYG5ldGAgc2VjdGlvbnMuIFRoZXNlIGNvbmZpZyBmaWxlcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy5cblxuVG8gYWNjZWxlcmF0ZSB0aGlzLCBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkgdG9vbHMuIEknbGwgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBlZmZpY2llbnRseSBwYXJzZSBgbnRiX25ldGRldi5jYCBhbmQgcGVlayBpbnRvIGBkcml2ZXJzL250Yi9LY29uZmlnYCBvciBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNvbnRpbnVlIG15IGFuYWx5c2lzIGFuZCBmdWxseSB1bmRlcnN0YW5kIHRoZSBwYXRjaCdzIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozNzo0MC45MzkzNTgzMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwNDM5MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5UQl9ORVRERVZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zNzA9Y29uZmlnIE5FVF9QT0xMX0NPTlRST0xMRVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzcyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzczOmNvbmZpZyBOVEJfTkVUREVWXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU9ODI9b2JqLSQoQ09ORklHX0hZUEVSVl9ORVQpICs9IGh5cGVydi9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTlRCX05FVERFVikgKz0gbnRiX25ldGRldi5vXFxuZHJpdmVycy9uZXQvTWFrZWZpbGUtODQtXFxuLS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtMTItXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjEzOiNkZWZpbmUgTlRCX05FVERFVl9WRVJcXHRcXFwiMC43XFxcIlxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xNC1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM9MTU9TU9EVUxFX0RFU0NSSVBUSU9OKEtCVUlMRF9NT0ROQU1FKTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6MTY6TU9EVUxFX1ZFUlNJT04oTlRCX05FVERFVl9WRVIpO1xcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xNy1NT0RVTEVfTElDRU5TRShcXFwiRHVhbCBCU0QvR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM9Mjc9c3RhdGljIHVuc2lnbmVkIGludCB0eF9zdG9wID0gNTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtMjgtXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjI5OiNkZWZpbmUgTlRCX05FVERFVl9NQVhfUVVFVUVTXFx0XFx0NjRcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6MzA6I2RlZmluZSBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTXFx0MVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0zMS1cXG4tLVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz00NTg9c3RhdGljIHZvaWQgbnRiX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTQ2My1cXHRzdHJzY3B5KGluZm8tXFx1MDAzZWRyaXZlciwgS0JVSUxEX01PRE5BTUUsIHNpemVvZihpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6NDY0OlxcdHN0cnNjcHkoaW5mby1cXHUwMDNldmVyc2lvbiwgTlRCX05FVERFVl9WRVIsIHNpemVvZihpbmZvLVxcdTAwM2V2ZXJzaW9uKSk7XFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTQ2NS1cXHRzdHJzY3B5KGluZm8tXFx1MDAzZWJ1c19pbmZvLCBwY2lfbmFtZShkZXYtXFx1MDAzZXBkZXYpLCBzaXplb2YoaW5mby1cXHUwMDNlYnVzX2luZm8pKTtcXG4tLVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz02MzY9c3RhdGljIGludCBudGJfbmV0ZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmNsaWVudF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjQ5LVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo2NTA6XFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqZGV2KSwgTlRCX05FVERFVl9NQVhfUVVFVUVTKTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjUxLVxcdGlmICghbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy02NjEtXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjY2MjpcXHRkZXYtXFx1MDAzZXF1ZXVlcyA9IGt6YWxsb2Nfb2JqcygqZGV2LVxcdTAwM2VxdWV1ZXMsIE5UQl9ORVRERVZfTUFYX1FVRVVFUyxcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjYzLVxcdFxcdFxcdFxcdCAgIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTY4NS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6Njg2OlxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTOyBxKyspIHtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjg3LVxcdFxcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXF1ZXVlc1txXTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6Mzc6NDEuMjE5ODAzOTU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODU5MTIzMjI4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBOVEIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBOVEIgYnVzaW5lc3MgYW5kIGZpZ3VyZSBvdXQgdGhlIG5pdHR5LWdyaXR0eSBvZiBpdHMgb3BlcmF0aW9uLiBNeSBwcmltYXJ5IGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlciBsYW5kc2NhcGUsIHRoZSBkaWZmZXJlbnQgcGxheWVycyBpbXBsZW1lbnRpbmcgTlRCIHRyYW5zcG9ydC4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIGRyaXZlcnMgaGFuZGxlIHRoZSB0cmFuc3BvcnQgaXRzZWxmLCB3aGljaCBvbmVzIGFjdCBhcyBOVEIgY2xpZW50cywgYW5kIHdoZXRoZXIgdGhlc2UgYXJlIGhhcmR3YXJlLXNwZWNpZmljLCB1dGlsaXplIGR1bW15IGltcGxlbWVudGF0aW9ucywgb3IgZW1wbG95IGVtdWxhdGlvbi5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJJ2xsIGluaXRpYXRlIGEgZm9jdXNlZCBzZWFyY2guIEknbGwgemVybyBpbiBvbiB0aGUga2VybmVsIGNvZGUgdXNpbmcga2V5d29yZHMgbGlrZSBgbnRiX3JlZ2lzdGVyX2NsaWVudGAgYW5kIGBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudGAuIFRoZXNlIGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBiZSB0aGUgYnJlYWRjcnVtYnMgSSBuZWVkIHRvIHRyYWNlIHRoZSBOVEIgY2xpZW50IHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGFuZCwgaG9wZWZ1bGx5LCByZXZlYWwgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgZHJpdmVyIGludGVyYWN0aW9ucy4gVGhpcyB0YXJnZXRlZCBhcHByb2FjaCBpcyBjcnVjaWFsIGZvciBlZmZpY2llbnRseSBtYXBwaW5nIG91dCB0aGUgc29mdHdhcmUgY29tcG9uZW50cyBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkxNiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjM5OjA3LjEzMjEzMDk0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM0NDUxNzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz03NTI9c3RhdGljIGludCBfX2luaXQgbnRiX25ldGRldl9pbml0X21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTc1NS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6NzU2OlxcdHJjID0gbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2KEtCVUlMRF9NT0ROQU1FKTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNzU3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy03NTktXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjc2MDpcXHRyYyA9IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50KFxcdTAwMjZudGJfbmV0ZGV2X2NsaWVudCk7XFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTc2MS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zOTU9RVhQT1JUX1NZTUJPTF9HUEwobnRiX3RyYW5zcG9ydF91bnJlZ2lzdGVyX2NsaWVudF9kZXYpO1xcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM5Ny0vKipcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6Mzk4OiAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldiAtIFJlZ2lzdGVyIE5UQiBjbGllbnQgZGV2aWNlXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM5OS0gKiBAZGV2aWNlX25hbWU6IE5hbWUgb2YgTlRCIGNsaWVudCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MDQtICovXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQwNTppbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2KGNoYXIgKmRldmljZV9uYW1lKVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MDYte1xcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1MS19XFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQ1MjpFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYpO1xcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NTMtXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1NC0vKipcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDU1OiAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkcml2ZXJcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDU2LSAqIEBkcnY6IE5UQiBjbGllbnQgZHJpdmVyIHRvIGJlIHJlZ2lzdGVyZWRcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NjEtICovXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQ2MjppbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnQoc3RydWN0IG50Yl90cmFuc3BvcnRfY2xpZW50ICpkcnYpXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ2My17XFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDcwLX1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDcxOkVYUE9SVF9TWU1CT0xfR1BMKG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50KTtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDcyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozOTowOC43NjY1ODgxNzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTQxNTUwNDM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgTlRCIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBOVEIgZHJpdmVyIHNpdHVhdGlvbi4gRmlyc3QsIEknbGwgaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9udGIvYC4gSSdtIGN1cmlvdXM6IGRvZXMgdGhpcyBkaXJlY3RvcnkgaG91c2UgZHJpdmVycyBmb3IgKmJvdGgqIHZpcnR1YWwgb3IgXCJkdW1teVwiIE5UQiBoYXJkd2FyZSwgYW5kIHRoZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHN3aXRjaGVzPyBJdCdzIGltcG9ydGFudCB0byBrbm93IHRoZSBzY29wZSBvZiB3aGF0J3Mgc3VwcG9ydGVkLiBUbyBmaW5kIG91dCwgSSdtIGdvaW5nIHRvIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBgZHJpdmVycy9udGJgIGRpcmVjdG9yeSBpdHNlbGYuIFRoZW4sIEkgd2lsbCBpbnNwZWN0IGl0cyBzdWJkaXJlY3RvcmllcyBhbmQgS2NvbmZpZyBmaWxlcyDigJMgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIncyBvdmVyYWxsIHN0cnVjdHVyZSwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgdGhlIHR5cGVzIG9mIE5UQiBkZXZpY2VzIGl0J3MgbWVhbnQgdG8gc3VwcG9ydC4gVGltZSB0byBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODYxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6Mzk6NTAuMTgyMDk0MjAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbnRiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNvcmUuY1wiLFxuICAgIFwibXNpLmNcIixcbiAgICBcIm50Yl90cmFuc3BvcnQuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJod1wiLFxuICAgIFwidGVzdFwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjM5OjUwLjE4MjE0NzM4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1MzUyMjA4MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTlRCIFN1YnN5c3RlbSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBOVEIgY29kZSBiYXNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSBhbmQgaGFyZHdhcmUgaW1wbGVtZW50YXRpb24gYmVmb3JlIEkgY2FuIGFzc2VzcyBhbnl0aGluZyBuZXcuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHdpdGggYGRyaXZlcnMvbnRiL3Rlc3QvYCB0byBzZWUgd2hhdCBraW5kIG9mIHRlc3QgY2FzZXMgYXJlIGluIHBsYWNlLiBBcmUgdGhleSBjb21wcmVoZW5zaXZlPyBEbyB0aGV5IGNvdmVyIHRoZSBzY2VuYXJpb3MgSSdtIGludGVyZXN0ZWQgaW4/IFdoYXQncyB0aGVpciB0ZXN0aW5nIHN0cmF0ZWd5PyBUaGVuLCBJIGhhdmUgdG8gbG9vayBpbnRvIGBkcml2ZXJzL250Yi9ody9gIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucywgcmVnaXN0ZXIgbGF5b3V0cywgYW5kIGFueSBxdWlya3MuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24gaXMgaGFuZGxlZC4gRmluYWxseSwgSSdsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL250Yi9LY29uZmlnYC4gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBpc3N1ZSBvciBmZWF0dXJlIEknbSBjdXJyZW50bHkgZm9jdXNlZCBvbi4gVGhpcyBxdWljayB0cmlhZ2Ugd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBhbmQgY29udHJpYnV0aW5nIHRvIHRoZSBOVEIgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEzOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0MDowNS41MzQzNTg1ODJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbnRiL3Rlc3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwibnRiX21zaV90ZXN0LmNcIixcbiAgICBcIm50Yl9wZXJmLmNcIixcbiAgICBcIm50Yl9waW5ncG9uZy5jXCIsXG4gICAgXCJudGJfdG9vbC5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQwOjA1LjUzNDQxNDUxMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzA4MjM1NTgwNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgSGFyZHdhcmUgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBOZXR3b3JrIFRyYW5zcG9ydCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGNvcmUgZHJpdmVycyBhbmQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTlRCIGhhcmR3YXJlIGlzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbnRiL2h3L2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkaXJlY3RseSBpbnRlcmZhY2Ugd2l0aCB0aGUgc2lsaWNvbi4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwYWluISkgaGFwcGVucywgc28gbGV0J3Mgc3RhcnQgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDg2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ1OjM2LjM1Nzk3NDc5NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9udGIvaHdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImFtZFwiLFxuICAgIFwiZXBmXCIsXG4gICAgXCJpZHRcIixcbiAgICBcImludGVsXCIsXG4gICAgXCJtc2NjXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDU6MzYuMzU4MDI5MDc0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNzE1NDExMDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIE5UQi9FUEYgRW11bGF0aW9uIFN0cmF0ZWdpZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBOVEIvRVBGIHNpdHVhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNlZSB3aGF0IGtpbmQgb2YgaGFyZHdhcmUtc3BlY2lmaWMgaW5mb3JtYXRpb24gZXhpc3RzIHdpdGhpbiB0aGUgZHJpdmVyIHN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9udGIvaHcvZXBmYCBkaXJlY3RvcnksIG9yIHBvdGVudGlhbGx5IG90aGVyIGhhcmR3YXJlLXJlbGF0ZWQgZGlyZWN0b3JpZXMuIEkgbmVlZCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQncyBldmVuIGZlYXNpYmxlIHRvIGVtdWxhdGUgdGhpcy5cblxuQWhhISBgZXBmYCBpcyBQQ0kgRW5kcG9pbnQgRnJhbWV3b3JrLiBUaGF0J3MgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS4gVGhlIGJpZyBxdWVzdGlvbiBpczogY2FuIHdlIGdldCBhd2F5IHdpdGggZW11bGF0aW5nIHRoZSBFbmRwb2ludCBGcmFtZXdvcmsgd2l0aGluIFFFTVUgb3IgZXZlbiB3aXRoIHNvbWUgc29ydCBvZiBkdW1teSBpbXBsZW1lbnRhdGlvbj8gVGhhdCdzIHdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaGVyZS5cblxuU28sIEknbGwgc3RhcnQgYnkgc3lzdGVtYXRpY2FsbHkgZXhhbWluaW5nIHRoZSBjb2RlIGluIGBkcml2ZXJzL250Yi9ody9lcGYvYCwgYW5kIHRoZW4gcGl2b3Qgb3ZlciB0byBgZHJpdmVycy9wY2kvZW5kcG9pbnQvYCB0byBzZWUgd2hhdCB1c2VmdWwgYnVpbGRpbmcgYmxvY2tzIGFscmVhZHkgZXhpc3QgdGhhdCBJIGNhbiBsZXZlcmFnZS4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhlIHRyYW5zcG9ydCBsYXllciBpdHNlbGYg4oCTIHdoYXQgYWJvdXQgYG50Yl90cmFuc3BvcnRgPyBUaGF0J3MgZGVmaW5pdGVseSByZWxldmFudC5cblxuRmluYWxseSwgSSdsbCB3YW50IHRvIGxldmVyYWdlIHRoZSBgZHJpdmVycy9udGIvS2NvbmZpZ2AgdG8gZGlzY292ZXIgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBvciB3aGF0IG1pZ2h0IGJlIGRlcGVuZGVudCBvbi4gTWF5YmUgSSBjYW4gdXNlIHJlYWQtZmlsZSBvciBncmVwcGVyLCBkZXBlbmRpbmcgb24gdGhlIHRvb2xjaGFpbiwgdG8gZWZmaWNpZW50bHkgcHVsbCBvdXQgdGhlIGtleSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRoZSBiaWcgcGljdHVyZSwgYW5kIGhvdyB0aGUgZGlmZmVyZW50IGRyaXZlcnMgcmVsYXRlIHRvIGVhY2ggb3RoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MDIsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ2OjAwLjA3MzQ0MjY1MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI1NzU3ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9udGJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnRiL0tjb25maWc6MjptZW51Y29uZmlnIE5UQlxcbmRyaXZlcnMvbnRiL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udGIvS2NvbmZpZz0xND1pZiBOVEJcXG5kcml2ZXJzL250Yi9LY29uZmlnLTE1LVxcbmRyaXZlcnMvbnRiL0tjb25maWc6MTY6Y29uZmlnIE5UQl9NU0lcXG5kcml2ZXJzL250Yi9LY29uZmlnLTE3LVxcdGJvb2wgXFxcIk1TSSBJbnRlcnJ1cHQgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnRiL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL250Yi90ZXN0L0tjb25maWdcXFwiXFxuZHJpdmVycy9udGIvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL250Yi9LY29uZmlnOjMxOmNvbmZpZyBOVEJfVFJBTlNQT1JUXFxuZHJpdmVycy9udGIvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTlRCIFRyYW5zcG9ydCBDbGllbnRcXFwiXFxuLS1cXG5kcml2ZXJzL250Yi9ody9hbWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnRiL2h3L2FtZC9LY29uZmlnOjI6Y29uZmlnIE5UQl9BTURcXG5kcml2ZXJzL250Yi9ody9hbWQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBTUQgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udGIvaHcvZXBmL0tjb25maWc6MTpjb25maWcgTlRCX0VQRlxcbmRyaXZlcnMvbnRiL2h3L2VwZi9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgRVBGIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9udGIvaHcvaWR0L0tjb25maWc6Mjpjb25maWcgTlRCX0lEVFxcbmRyaXZlcnMvbnRiL2h3L2lkdC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklEVCBQQ0llLXN3aXRjaCBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9udGIvaHcvaW50ZWwvS2NvbmZpZzoyOmNvbmZpZyBOVEJfSU5URUxcXG5kcml2ZXJzL250Yi9ody9pbnRlbC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L21zY2MvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnRiL2h3L21zY2MvS2NvbmZpZzoyOmNvbmZpZyBOVEJfU1dJVENIVEVDXFxuZHJpdmVycy9udGIvaHcvbXNjYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1pY3JvU2VtaSBTd2l0Y2h0ZWMgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnOjI6Y29uZmlnIE5UQl9QSU5HUE9OR1xcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEIgUGluZyBQb25nIFRlc3QgQ2xpZW50XFxcIlxcbi0tXFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzoxMTpjb25maWcgTlRCX1RPT0xcXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMTItXFx0dHJpc3RhdGUgXFxcIk5UQiBEZWJ1Z2dpbmcgVG9vbCBUZXN0IENsaWVudFxcXCJcXG4tLVxcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWc6MjI6Y29uZmlnIE5UQl9QRVJGXFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJOVEIgUkFXIFBlcmYgTWVhc3VyaW5nIFRvb2xcXFwiXFxuLS1cXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMjktXFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnOjMwOmNvbmZpZyBOVEJfTVNJX1RFU1RcXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMzEtXFx0dHJpc3RhdGUgXFxcIk5UQiBNU0kgVGVzdCBDbGllbnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ2OjAwLjU5OTIwNjAyOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjg1OTAwNDEyOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBOVEJfTkVUREVWKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgYE5UQl9ORVRERVZgIGlzIGRlZmluZWQsIG9yIGF0IGxlYXN0IGhvdyBpdCdzIGhhbmRsZWQsIHdpdGhpbiB0aGUga2VybmVsJ3MgYnVpbGQgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIGl0J3MgbmV0d29yay1yZWxhdGVkLCBpcyB0byBsb29rIGluIGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhhdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgZm9yIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHBlcnRhaW5pbmcgdG8gbmV0d29ya2luZyBoYXJkd2FyZS4gSG9wZWZ1bGx5LCBpdCdzIGRlZmluZWQgYW5kIGRvY3VtZW50ZWQgY2xlYXJseSB0aGVyZSwgaW5jbHVkaW5nIGFueSBkZXBlbmRlbmNpZXMgb3IgaGVscCB0ZXh0LiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJdCdzIGFsbW9zdCBjZXJ0YWluIGl0J2xsIGJlIGRlZmluZWQgaGVyZSBvciBpbmNsdWRlZCBmcm9tIGFub3RoZXIgS2NvbmZpZyBmaWxlLiBMZXQncyBnbyFcblxuXG4iLCJJbnB1dFRva2VucyI6ODAwMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ4OjQ5LjE4OTI1MDA1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM3MDpcXHRjb25maWcgTkVUX1BPTExfQ09OVFJPTExFUlxcbiAzNzE6XFx0XFx0ZGVmX2Jvb2wgTkVUUE9MTFxcbiAzNzI6XFx0XFxuIDM3MzpcXHRjb25maWcgTlRCX05FVERFVlxcbiAzNzQ6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0XFxcIlxcbiAzNzU6XFx0XFx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXFxuIDM3NjpcXHRcXG4gMzc3OlxcdGNvbmZpZyBSSU9ORVRcXG4gMzc4OlxcdFxcdHRyaXN0YXRlIFxcXCJSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbiAzNzk6XFx0XFx0ZGVwZW5kcyBvbiBSQVBJRElPXFxuIDM4MDpcXHRcXG4gMzgxOlxcdGNvbmZpZyBSSU9ORVRfVFhfU0laRVxcbiAzODI6XFx0XFx0aW50IFxcXCJOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1xcXCJcXG4gMzgzOlxcdFxcdGRlcGVuZHMgb24gUklPTkVUXFxuIDM4NDpcXHRcXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuIDM4NTpcXHRcXG4gMzg2OlxcdGNvbmZpZyBSSU9ORVRfUlhfU0laRVxcbiAzODc6XFx0XFx0aW50IFxcXCJOdW1iZXIgb2YgaW5ib3VuZCBxdWV1ZSBlbnRyaWVzXFxcIlxcbiAzODg6XFx0XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG4gMzg5OlxcdFxcdGRlZmF1bHQgXFxcIjEyOFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDg6NDkuMTg5MzM0ODU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcwODE2NzM2NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTlRCIEhhcmR3YXJlIGFuZCBWaXJ0dWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IE5UQiBoYXJkd2FyZSBhbmQgY2xpZW50cyBpbnRlcmFjdC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBhbiBOVEIgZGV2aWNlIHdpdGhvdXQgcGh5c2ljYWxseSBoYXZpbmcgdGhlIGhhcmR3YXJlPyBJIHJlbWVtYmVyIHRoZXJlIGJlaW5nIHNvbWUgb3B0aW9ucyBmb3IgdmlydHVhbCBOVEIgZGV2aWNlcy4gTGV0IG1lIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUga2VybmVsIHNvdXJjZSBjb2RlLiBJJ2xsIGZvY3VzIG9uIHBvdGVudGlhbCBhcmVhczogYGRyaXZlcnMvbnRiL2h3L2VwZi9gLCBgZHJpdmVycy9wY2kvZW5kcG9pbnQvYCwgYW5kLCBhcyBJIHJlY2FsbCwgdmlydHVhbCBOVEIgZGV2aWNlIGRyaXZlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHdvcmtzLiBBaCwgd2FpdCBhIG1pbnV0ZSEgQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhlIHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzLCBsZXQncyBzdGFydCB3aXRoIGEgaGlnaGVyLWxldmVsIHZpZXcgYW5kIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBhbmQgdGhlIHNvdXJjZSBmaWxlcyB3aXRoaW4gYGRyaXZlcnMvbnRiL2h3L2VwZi9gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGFyY2hpdGVjdHVyYWwgb3ZlcnZpZXdzLiBUaGF0IHNlZW1zIGxpa2UgYSBzbWFydGVyLCBtb3JlIGVmZmljaWVudCBhcHByb2FjaCB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0NzUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjUwOjAwLjAwNjA3NDIyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL250Yi9ody9lcGYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdGNvbmZpZyBOVEJfRVBGXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBFUEYgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XFxcIlxcbiAgIDM6XFx0XFx0aGVscFxcbiAgIDQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBFUEYgTlRCIG9uIGNvbmZpZ3VyYWJsZSBlbmRwb2ludC5cXG4gICA1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTA6MDAuMDA2MTY4MjM0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxOTg5OTA1ODM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgRVBGIE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgRVBGIGhhcmR3YXJlIHN1cHBvcnQgd2l0aGluIHRoZSBOVEIgZHJpdmVyLiBMZXQncyBzdGFydCB3aXRoIGBkcml2ZXJzL250Yi9ody9lcGYvTWFrZWZpbGVgLiBUaGlzIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIEVQRiBzcGVjaWZpYyBkcml2ZXJzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkIGludG8gdGhlIGxhcmdlciBOVEIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHNvdXJjZSBmaWxlIGluY2x1c2lvbiwgYW55IHNwZWNpZmljIGZsYWdzIGl0IHVzZXMgZm9yIHRoZSBFUEYgaGFyZHdhcmUsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucyBiYXNlZCBvbiBwbGF0Zm9ybSBvciBjb25maWd1cmF0aW9uLiBBcmUgdGhlcmUgYW55IHNwZWNpYWwgYnVpbGQgdGFyZ2V0cyBkZWZpbmVkIGhlcmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgRVBGPyBXaGF0J3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgTWFrZWZpbGUgYW5kIHRoZSBvdmVyYWxsIE5UQiBkcml2ZXIncyBidWlsZCBzeXN0ZW0/IEknbSBnb2luZyB0byBjYXJlZnVsbHkgcmV2aWV3IGl0IGFuZCB0aGVuIHByb2JhYmx5IGluc3BlY3QgdGhlIGluY2x1ZGVkIHNvdXJjZSBmaWxlcyBuZXh0IHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gSG9wZWZ1bGx5LCB0aGlzIE1ha2VmaWxlIGlzIHdlbGwtY29tbWVudGVkIGFuZCBvcmdhbml6ZWQuLi4gbGV0J3Mgc2VlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1MzozOS45MDUyMzA3OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9udGIvaHcvZXBmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIm50Yl9od19lcGYuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1MzozOS45MDUzMTc4NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDg1MjgxNDQwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbnRiX2h3X2VwZi5jYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgYG50Yl9od19lcGYuY2AuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGdlYXJlZCB0b3dhcmQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgTlRCIChOZXR3b3JrIFRyYW5zcG9ydCBCcmlkZ2UpIGhhcmR3YXJlIGVudmlyb25tZW50LiBHaXZlbiB0aGUgZmlsZSBuYW1lLCBJJ20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRvIHNlZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24gc3BlY2lmaWMgdG8gdGhlIEVQRiAoRW5oYW5jZWQgUGFja2V0IEZpbHRlcmluZywgb3Igd2hhdGV2ZXIgdGhlIHNwZWNpZmljIHZlbmRvciBjYWxscyB0aGVpciBoYXJkd2FyZSdzIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzKS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl04oCZcyBoYW5kbGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCBvZiBwYWNrZXQgZmlsdGVyaW5nIGxvZ2ljLiBJcyBpdCBzZXR0aW5nIHVwIGZpbHRlciBydWxlcywgbWFuYWdpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIGRpcmVjdGx5LCBvciBpbnRlcmFjdGluZyB3aXRoIHNvbWUgYWJzdHJhY3Rpb24gbGF5ZXI/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscyB0byB1bmRlcnN0YW5kIHRoZSBmbG93LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW50ZXJydXB0IG1hbmFnZW1lbnQgYW5kIGVycm9yIGNvbmRpdGlvbnMuIEkgYWxzbyBuZWVkIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgRE1BIGNvbmZpZ3VyYXRpb24sIGVzcGVjaWFsbHkgaWYgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHBhY2tldCBmaWx0ZXJpbmcgZW5naW5lLiBJJ20gYWxzbyBjdXJpb3VzIHRvIHNlZSBpZiBhbnkgb2ZmbG9hZCBjYXBhYmlsaXRpZXMgYXJlIGJlaW5nIGV4cGxvaXRlZCwgb3IgaWYgaXQgaXMgYSBmYWlybHkgYmFzaWMgaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaWYgdGhpcyBmb2xsb3dzIG15IGV4cGVjdGF0aW9ucyFcblxuXG4iLCJJbnB1dFRva2VucyI6OTE3MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1NDoxNC43NTgxMzYxNzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjIyNzg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyfHBjaV9lbmRwb2ludFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL250Yi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYz0xMzUxPXN0YXRpYyBpbnQgX19pbml0IGFtZF9udGJfcGNpX2RyaXZlcl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEzNTgtXFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYzoxMzU5OlxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmFtZF9udGJfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYy0xMzYwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jPTg2Mz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbnRiX2VwZl9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYy04NjgtfTtcXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jOjg2OTptb2R1bGVfcGNpX2RyaXZlcihudGJfZXBmX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtODcwLVxcbi0tXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYz0yODg2PXN0YXRpYyBpbnQgX19pbml0IGlkdF9wY2lfZHJpdmVyX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjg5NS1cXHQvKiBSZWdpc3RlciB0aGUgTlRCIGhhcmR3YXJlIGRyaXZlciB0byBoYW5kbGUgdGhlIFBDSSBkZXZpY2UgKi9cXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jOjI4OTY6XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aWR0X3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjg5Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz0yMDY5PXN0YXRpYyBpbnQgX19pbml0IGludGVsX250Yl9wY2lfZHJpdmVyX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMjA3Ni1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjIwNzc6XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aW50ZWxfbnRiX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMjA3OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1NDoxNS4yNTQzNjc4MzVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTA0OTQwOTcxNjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50IGRvd246XG5cbioqTlRCIERyaXZlciBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgZmlyc3QgdGhvdWdodDogYWxsIHRoZSBkcml2ZXJzIEknbSBzZWVpbmcgdW5kZXIgYGRyaXZlcnMvbnRiL2h3L2Agc2VlbSB0byBiZSBvcGVyYXRpbmcgb24gUENJIGRldmljZXMuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgTmV0d29yayBUcmFuc3BvcnQgQmxvY2sgKE5UQikgZHJpdmVycyBsdXJraW5nIGFyb3VuZCBpbiB0aGUga2VybmVsLCBvciBwZXJoYXBzIGFueSBjb2RlIHRoYXQgKmNyZWF0ZXMqIE5UQiBkZXZpY2VzIGluIGEgZGlmZmVyZW50IHdheT8gSSBjYW4ndCBhc3N1bWUgdGhhdCdzIHRoZSAqb25seSogd2F5IHRoZSBOVEIgZnVuY3Rpb25hbGl0eSBpcyBleHBvc2VkLlxuXG5TbywgbGV0J3MgZHJpbGwgZG93biBhIGJpdCBkZWVwZXIuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbnRiL2NvcmUuY2AuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBob3cgdGhlc2UgTlRCIGRldmljZXMgYXJlIGJlaW5nIHJlZ2lzdGVyZWQuIFRoZSBgbnRiX3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBUaGF0IHNob3VsZCBzaG93IG1lIHRoZSBjZW50cmFsIHJlZ2lzdHJhdGlvbiBwb2ludCBhbmQgZ2l2ZSBtZSBjb250ZXh0IGFzIHRvIHdoZXJlIGFuZCBob3cgdGhlc2UgZGV2aWNlcyBhcmUgZXhwb3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwODIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1NjowMC4xOTUzNDI0MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4NTUwMDMxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGJfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnRiL2NvcmUuYz05OT1FWFBPUlRfU1lNQk9MKG50Yl91bnJlZ2lzdGVyX2NsaWVudCk7XFxuZHJpdmVycy9udGIvY29yZS5jLTEwMC1cXG5kcml2ZXJzL250Yi9jb3JlLmM6MTAxOmludCBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpXFxuZHJpdmVycy9udGIvY29yZS5jLTEwMi17XFxuLS1cXG5kcml2ZXJzL250Yi9jb3JlLmMtMTMwLX1cXG5kcml2ZXJzL250Yi9jb3JlLmM6MTMxOkVYUE9SVF9TWU1CT0wobnRiX3JlZ2lzdGVyX2RldmljZSk7XFxuZHJpdmVycy9udGIvY29yZS5jLTEzMi1cXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM9MTIyMj1zdGF0aWMgaW50IGFtZF9udGJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYy0xMjU0LVxcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM6MTI1NTpcXHRyYyA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNm5kZXYtXFx1MDAzZW50Yik7XFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYy0xMjU2LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM9NzUzPXN0YXRpYyBpbnQgbnRiX2VwZl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jLTc4Ny1cXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jOjc4ODpcXHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNzg5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM9MjI3NT1zdGF0aWMgaW50IGlkdF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGlkdF9udGJfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYy0yMjgyLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM6MjI4MzpcXHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjI4NC1cXHRpZiAocmV0ICE9IDApIHtcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmM9MTg0ND1zdGF0aWMgaW50IGludGVsX250Yl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTE4OTYtXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYzoxODk3OlxcdHJjID0gbnRiX3JlZ2lzdGVyX2RldmljZShcXHUwMDI2bmRldi1cXHUwMDNlbnRiKTtcXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTE4OTgtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmM9MTQ4MT1zdGF0aWMgaW50IHN3aXRjaHRlY19udGJfYWRkKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTE1MjgtXFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmM6MTUyOTpcXHRyYyA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNnNuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTE1MzAtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jPTE2Nzc9c3RhdGljIGludCBwY2lfdm50Yl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE2OTItXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE2OTM6XFx0cmV0ID0gbnRiX3JlZ2lzdGVyX2RldmljZShcXHUwMDI2bmRldi1cXHUwMDNlbnRiKTtcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTY5NC1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjU2OjAxLjc4MDg2NTczM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzg5OTQ2NTExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgUENJIEVuZHBvaW50IEZ1bmN0aW9uIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0J3MgdGhpcz8gTXkgZXllIGp1c3QgbGFuZGVkIG9uIGBkcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmNgLiBSaWdodCwgcmlnaHQsIGEgVk5UQiEgVGhpcyBmZWVscyByZWxldmFudCB0byB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cbkkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgUENJIGVuZHBvaW50IGZ1bmN0aW9ucyBhY3R1YWxseSB3b3JrIHdpdGhpbiB0aGlzIGNvbnRleHQuIFNvLCB0aW1lIHRvIGZpcmUgdXAgYSBzZWFyY2guIEknbGwgc3RhcnQgYnkgbG9va2luZyBmb3IgdGhhdCBzcGVjaWZpYyBmaWxlIG5hbWUsIGBwY2ktZXBmLXZudGIuY2AsIHRvIHNlZSB3aGF0IGp1bXBzIG91dCBhbmQgdGhlbiBicm9hZGVuIHRoZSBzZWFyY2ggdG8gZW5jb21wYXNzIHRoZSBtb3JlIGdlbmVyYWwgZnVuY3Rpb25hbGl0eSBhbmQgYXJjaGl0ZWN0dXJlIG9mIFBDSSBlbmRwb2ludCBmdW5jdGlvbiBvcGVyYXRpb24uIEdvdHRhIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kIGhlcmUgYW5kIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIFZOVEIgaW1wbGVtZW50YXRpb24gZml0cyBpbi4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyBhbmQgY29ubmVjdGlvbnMgdGhpcyByZXZlYWxzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDI3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTY6MjUuNjgwMzM0NjM5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI5NTA5ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV92bnRiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNjUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgdm50Yl9lcGZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE2NzYtXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE2Nzc6c3RhdGljIGludCBwY2lfdm50Yl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjc4LXtcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzAyLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYzoxNzAzOnN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwY2lfdm50Yl90YWJsZVtdID0ge1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzA0LVxcdHtcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNzEwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB2bnRiX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE3MTEtXFx0Lm5hbWUgICAgICAgICAgID0gXFxcInBjaS12bnRiXFxcIixcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTcxMjpcXHQuaWRfdGFibGUgICAgICAgPSBwY2lfdm50Yl90YWJsZSxcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTcxMzpcXHQucHJvYmUgICAgICAgICAgPSBwY2lfdm50Yl9wcm9iZSxcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTcxNC19O1xcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jPTE3Mjk9c3RhdGljIGludCBlcGZfbnRiX2JpbmQoc3RydWN0IHBjaV9lcGYgKmVwZilcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzYwLVxcdHBjaV9zcGFjZVswXSA9IChudGItXFx1MDAzZXZudGJfcGlkIFxcdTAwM2NcXHUwMDNjIDE2KSB8IG50Yi1cXHUwMDNldm50Yl92aWQ7XFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE3NjE6XFx0cGNpX3ZudGJfdGFibGVbMF0udmVuZG9yID0gbnRiLVxcdTAwM2V2bnRiX3ZpZDtcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTc2MjpcXHRwY2lfdm50Yl90YWJsZVswXS5kZXZpY2UgPSBudGItXFx1MDAzZXZudGJfcGlkO1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzYzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1NjoyNi43MDk4NTE0MjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTkzODY5ODEyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgR2VuZXNpcyBvZiBgbnRiX25ldGRldmAqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kISBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGBudGJfbmV0ZGV2YCBuZXR3b3JrIGRldmljZSBjb21lcyBpbnRvIGJlaW5nLiBUaW1lIHRvIGRpZyBpbiBhbmQgZm9sbG93IHRoZSBicmVhZGNydW1icyBmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byBgZHJpdmVycy9uZXQvbnRiX25ldGRldi5jYCBhbmQgdHJhY2UgdGhlIGVudGlyZSBsaWZlY3ljbGUsIGZyb20gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIGFsbCB0aGUgd2F5IHRocm91Z2ggdGhlIHJlY2VpdmUgYW5kIHRyYW5zbWl0IHBhdGhzLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHJlYWQgdGhyb3VnaCB0aGUgc291cmNlIGNvZGUgb2YgYG50Yl9uZXRkZXYuY2AgaXRzZWxmLiBUaGlzIHdpbGwgcHJvdmlkZSB0aGUgZm91bmRhdGlvbiBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzk3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTg6MDYuMDk2ODM2MjkyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDY3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEJTRC0zLUNsYXVzZVxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIFBDSWUgTlRCIE5ldHdvcmsgTGludXggZHJpdmVyXFxuICAgNDpcXHQgKi9cXG4gICA1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY2kuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9udGIuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9udGJfdHJhbnNwb3J0LmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgMTI6XFx0XFxuICAxMzpcXHQjZGVmaW5lIE5UQl9ORVRERVZfVkVSXFx0XFxcIjAuN1xcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKEtCVUlMRF9NT0ROQU1FKTtcXG4gIDE2OlxcdE1PRFVMRV9WRVJTSU9OKE5UQl9ORVRERVZfVkVSKTtcXG4gIDE3OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJEdWFsIEJTRC9HUExcXFwiKTtcXG4gIDE4OlxcdE1PRFVMRV9BVVRIT1IoXFxcIkludGVsIENvcnBvcmF0aW9uXFxcIik7XFxuICAxOTpcXHRcXG4gIDIwOlxcdC8qIFRpbWUgaW4gdXNlY3MgZm9yIHR4IHJlc291cmNlIHJlYXBlciAqL1xcbiAgMjE6XFx0c3RhdGljIHVuc2lnbmVkIGludCB0eF90aW1lID0gMTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0LyogTnVtYmVyIG9mIGRlc2NyaXB0b3JzIHRvIGZyZWUgYmVmb3JlIHJlc3VtaW5nIHR4ICovXFxuICAyNDpcXHRzdGF0aWMgdW5zaWduZWQgaW50IHR4X3N0YXJ0ID0gMTA7XFxuICAyNTpcXHRcXG4gIDI2OlxcdC8qIE51bWJlciBvZiBkZXNjcmlwdG9ycyBzdGlsbCBhdmFpbGFibGUgYmVmb3JlIHN0b3AgdXBwZXIgbGF5ZXIgdHggKi9cXG4gIDI3OlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgdHhfc3RvcCA9IDU7XFxuICAyODpcXHRcXG4gIDI5OlxcdCNkZWZpbmUgTlRCX05FVERFVl9NQVhfUVVFVUVTXFx0XFx0NjRcXG4gIDMwOlxcdCNkZWZpbmUgTlRCX05FVERFVl9ERUZBVUxUX1FVRVVFU1xcdDFcXG4gIDMxOlxcdFxcbiAgMzI6XFx0c3RydWN0IG50Yl9uZXRkZXY7XFxuICAzMzpcXHRcXG4gIDM0OlxcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlIHtcXG4gIDM1OlxcdFxcdHN0cnVjdCBudGJfbmV0ZGV2ICpudGRldjtcXG4gIDM2OlxcdFxcdHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcDtcXG4gIDM3OlxcdFxcdHN0cnVjdCB0aW1lcl9saXN0IHR4X3RpbWVyO1xcbiAgMzg6XFx0XFx0dTE2IHFpZDtcXG4gIDM5OlxcdH07XFxuICA0MDpcXHRcXG4gIDQxOlxcdHN0cnVjdCBudGJfbmV0ZGV2IHtcXG4gIDQyOlxcdFxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xcbiAgNDM6XFx0XFx0c3RydWN0IGRldmljZSAqY2xpZW50X2RldjtcXG4gIDQ0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbiAgNDU6XFx0XFx0dW5zaWduZWQgaW50IG51bV9xdWV1ZXM7XFxuICA0NjpcXHRcXHRzdHJ1Y3QgbnRiX25ldGRldl9xdWV1ZSAqcXVldWVzO1xcbiAgNDc6XFx0fTtcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0I2RlZmluZVxcdE5UQl9UWF9USU1FT1VUX01TXFx0MTAwMFxcbiAgNTA6XFx0I2RlZmluZVxcdE5UQl9SWFFfU0laRVxcdFxcdDEwMFxcbiAgNTE6XFx0XFxuICA1MjpcXHRzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3VwZGF0ZV9jYXJyaWVyKHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYpXFxuICA1MzpcXHR7XFxuICA1NDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG4gIDU1OlxcdFxcdGJvb2wgYW55X3VwID0gZmFsc2U7XFxuICA1NjpcXHRcXHR1bnNpZ25lZCBpbnQgaTtcXG4gIDU3OlxcdFxcbiAgNTg6XFx0XFx0bmRldiA9IGRldi1cXHUwMDNlbmRldjtcXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRldi1cXHUwMDNlbnVtX3F1ZXVlczsgaSsrKSB7XFxuICA2MTpcXHRcXHRcXHRpZiAobnRiX3RyYW5zcG9ydF9saW5rX3F1ZXJ5KGRldi1cXHUwMDNlcXVldWVzW2ldLnFwKSkge1xcbiAgNjI6XFx0XFx0XFx0XFx0YW55X3VwID0gdHJ1ZTtcXG4gIDYzOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNjQ6XFx0XFx0XFx0fVxcbiAgNjU6XFx0XFx0fVxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHRpZiAoYW55X3VwKVxcbiAgNjg6XFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcXG4gIDY5OlxcdFxcdGVsc2VcXG4gIDcwOlxcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xcbiAgNzE6XFx0fVxcbiAgNzI6XFx0XFxuICA3MzpcXHRzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3F1ZXVlX3J4X2RyYWluKHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZSlcXG4gIDc0OlxcdHtcXG4gIDc1OlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuICA3NjpcXHRcXHRpbnQgbGVuO1xcbiAgNzc6XFx0XFxuICA3ODpcXHRcXHR3aGlsZSAoKHNrYiA9IG50Yl90cmFuc3BvcnRfcnhfcmVtb3ZlKHF1ZXVlLVxcdTAwM2VxcCwgXFx1MDAyNmxlbikpKVxcbiAgNzk6XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbiAgODA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1ODowNi4wOTY5NjM1MDFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzIxNzA2NjQyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdGV4dDpcblxuKipEaXZpbmcgaW50byB0aGUgTlRCIE5ldHdvcmsgRGV2aWNlIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgbnRiX25ldGRldi5jYCBmaWxlIGluaXRpYWxpemVzIGFuZCBwcm9iZXMsIHNwZWNpZmljYWxseSBmcm9tIGxpbmVzIDYwMCB0byA3NjUuIFRoYXQncyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgYWN0aW9uIHNob3VsZCBiZS4gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSBkaXNzZWN0IHRoaXMgc2VjdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNpbmcgb2YgY2FsbHMsIGFueSBjb25kaXRpb25hbCBsb2dpYywgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIE5UQiBoYXJkd2FyZS4gSSdtIGhvcGluZyB0byBzZWUgaG93IHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgaG93IGl0cyByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZCwgYW5kIGhvdyBpdCdzIGJyb3VnaHQgb25saW5lLiBGcm9tIHdoYXQgSSByZWNhbGwgb2YgcHJldmlvdXMgZXhwZXJpZW5jZXMgd2l0aCBzaW1pbGFyIGRyaXZlcnMsIHRoZXJlJ3MgbGlrZWx5IGFuIGltcG9ydGFudCBkYW5jZSBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAgYW5kIGRldmljZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGdvaW5nIG9uIGhlcmUuIEkgZXhwZWN0IHRoZXJlIHdpbGwgYmUgY2hlY2tzIGZvciBoYXJkd2FyZSBwcmVzZW5jZSwgcGVyaGFwcyBzb21lIHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMsIGFuZCBkZWZpbml0ZWx5IHNvbWUgY3J1Y2lhbCBsaW5raW5nIG9mIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZXMgdG8gdGhlIHVuZGVybHlpbmcgTlRCIGZ1bmN0aW9uYWxpdHkuIE15IGdvYWwgaXMgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcgbGlmZWN5Y2xlIHdpdGhpbiB0aGF0IHNwZWNpZmljIHJhbmdlLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgZmxvdy4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIGRyaXZlciBkZWFscyB3aXRoIHBvdGVudGlhbCBlcnJvcnMgYW5kIGZhaWx1cmUgc2NlbmFyaW9zLiBJIGFudGljaXBhdGUgc29tZSBkZWJ1Z2dpbmcgbWFjcm9zIGFuZCBjaGVja3MgdG8gbWFrZSB0aGlzIGluaXRpYWxpc2F0aW9uIHJvYnVzdCBhbmQgc3RhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY4NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTk6MTguMjY3NjMwMzA5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjMwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYzMDpcXHRcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbiA2MzE6XFx0XFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IG50Yl9nZXRfbGlua19rc2V0dGluZ3MsXFxuIDYzMjpcXHRcXHQuZ2V0X2NoYW5uZWxzID0gbnRiX2dldF9jaGFubmVscyxcXG4gNjMzOlxcdFxcdC5zZXRfY2hhbm5lbHMgPSBudGJfc2V0X2NoYW5uZWxzLFxcbiA2MzQ6XFx0fTtcXG4gNjM1OlxcdFxcbiA2MzY6XFx0c3RhdGljIGludCBudGJfbmV0ZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmNsaWVudF9kZXYpXFxuIDYzNzpcXHR7XFxuIDYzODpcXHRcXHRzdHJ1Y3QgbnRiX2RldiAqbnRiO1xcbiA2Mzk6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XFxuIDY0MDpcXHRcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldjtcXG4gNjQxOlxcdFxcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXY7XFxuIDY0MjpcXHRcXHR1bnNpZ25lZCBpbnQgcTtcXG4gNjQzOlxcdFxcdGludCByYztcXG4gNjQ0OlxcdFxcbiA2NDU6XFx0XFx0bnRiID0gZGV2X250YihjbGllbnRfZGV2LVxcdTAwM2VwYXJlbnQpO1xcbiA2NDY6XFx0XFx0cGRldiA9IG50Yi1cXHUwMDNlcGRldjtcXG4gNjQ3OlxcdFxcdGlmICghcGRldilcXG4gNjQ4OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA2NDk6XFx0XFxuIDY1MDpcXHRcXHRuZGV2ID0gYWxsb2NfZXRoZXJkZXZfbXEoc2l6ZW9mKCpkZXYpLCBOVEJfTkVUREVWX01BWF9RVUVVRVMpO1xcbiA2NTE6XFx0XFx0aWYgKCFuZGV2KVxcbiA2NTI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDY1MzpcXHRcXG4gNjU0OlxcdFxcdFNFVF9ORVRERVZfREVWKG5kZXYsIGNsaWVudF9kZXYpO1xcbiA2NTU6XFx0XFxuIDY1NjpcXHRcXHRkZXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gNjU3OlxcdFxcdGRldi1cXHUwMDNlbmRldiA9IG5kZXY7XFxuIDY1ODpcXHRcXHRkZXYtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbiA2NTk6XFx0XFx0ZGV2LVxcdTAwM2VjbGllbnRfZGV2ID0gY2xpZW50X2RldjtcXG4gNjYwOlxcdFxcdGRldi1cXHUwMDNlbnVtX3F1ZXVlcyA9IDA7XFxuIDY2MTpcXHRcXG4gNjYyOlxcdFxcdGRldi1cXHUwMDNlcXVldWVzID0ga3phbGxvY19vYmpzKCpkZXYtXFx1MDAzZXF1ZXVlcywgTlRCX05FVERFVl9NQVhfUVVFVUVTLFxcbiA2NjM6XFx0XFx0XFx0XFx0XFx0ICAgR0ZQX0tFUk5FTCk7XFxuIDY2NDpcXHRcXHRpZiAoIWRldi1cXHUwMDNlcXVldWVzKSB7XFxuIDY2NTpcXHRcXHRcXHRyYyA9IC1FTk9NRU07XFxuIDY2NjpcXHRcXHRcXHRnb3RvIGVycl9mcmVlX25ldGRldjtcXG4gNjY3OlxcdFxcdH1cXG4gNjY4OlxcdFxcbiA2Njk6XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgPSBORVRJRl9GX0hJR0hETUE7XFxuIDY3MDpcXHRcXHRuZGV2LVxcdTAwM2VwY3B1X3N0YXRfdHlwZSA9IE5FVERFVl9QQ1BVX1NUQVRfVFNUQVRTO1xcbiA2NzE6XFx0XFxuIDY3MjpcXHRcXHRuZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MSVZFX0FERFJfQ0hBTkdFO1xcbiA2NzM6XFx0XFxuIDY3NDpcXHRcXHRuZGV2LVxcdTAwM2Vod19mZWF0dXJlcyA9IG5kZXYtXFx1MDAzZWZlYXR1cmVzO1xcbiA2NzU6XFx0XFx0bmRldi1cXHUwMDNld2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKE5UQl9UWF9USU1FT1VUX01TKTtcXG4gNjc2OlxcdFxcbiA2Nzc6XFx0XFx0ZXRoX3JhbmRvbV9hZGRyKG5kZXYtXFx1MDAzZXBlcm1fYWRkcik7XFxuIDY3ODpcXHRcXHRkZXZfYWRkcl9zZXQobmRldiwgbmRldi1cXHUwMDNlcGVybV9hZGRyKTtcXG4gNjc5OlxcdFxcbiA2ODA6XFx0XFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZudGJfbmV0ZGV2X29wcztcXG4gNjgxOlxcdFxcdG5kZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNm50Yl9ldGh0b29sX29wcztcXG4gNjgyOlxcdFxcbiA2ODM6XFx0XFx0bmRldi1cXHUwMDNlbWluX210dSA9IDA7XFxuIDY4NDpcXHRcXHRuZGV2LVxcdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XFxuIDY4NTpcXHRcXG4gNjg2OlxcdFxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTOyBxKyspIHtcXG4gNjg3OlxcdFxcdFxcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXF1ZXVlc1txXTtcXG4gNjg4OlxcdFxcbiA2ODk6XFx0XFx0XFx0cXVldWUtXFx1MDAzZW50ZGV2ID0gZGV2O1xcbiA2OTA6XFx0XFx0XFx0cXVldWUtXFx1MDAzZXFpZCA9IHE7XFxuIDY5MTpcXHRcXHRcXHRxdWV1ZS1cXHUwMDNlcXAgPSBudGJfdHJhbnNwb3J0X2NyZWF0ZV9xdWV1ZShxdWV1ZSwgY2xpZW50X2RldixcXG4gNjkyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2bnRiX25ldGRldl9oYW5kbGVycyk7XFxuIDY5MzpcXHRcXHRcXHRpZiAoIXF1ZXVlLVxcdTAwM2VxcClcXG4gNjk0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA2OTU6XFx0XFxuIDY5NjpcXHRcXHRcXHRkZXYtXFx1MDAzZW51bV9xdWV1ZXMrKztcXG4gNjk3OlxcdFxcdH1cXG4gNjk4OlxcdFxcbiA2OTk6XFx0XFx0aWYgKCFkZXYtXFx1MDAzZW51bV9xdWV1ZXMpIHtcXG4gNzAwOlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzAxOlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfcXVldWVzO1xcbiA3MDI6XFx0XFx0fVxcbiA3MDM6XFx0XFxuIDcwNDpcXHRcXHRyYyA9IG5ldGlmX3NldF9yZWFsX251bV9xdWV1ZXMobmRldiwgZGV2LVxcdTAwM2VudW1fcXVldWVzLCBkZXYtXFx1MDAzZW51bV9xdWV1ZXMpO1xcbiA3MDU6XFx0XFx0aWYgKHJjKVxcbiA3MDY6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9xcHM7XFxuIDcwNzpcXHRcXG4gNzA4OlxcdFxcdG5kZXYtXFx1MDAzZW10dSA9IG50Yl90cmFuc3BvcnRfbWF4X3NpemUoZGV2LVxcdTAwM2VxdWV1ZXNbMF0ucXApIC0gRVRIX0hMRU47XFxuIDcwOTpcXHRcXG4gNzEwOlxcdFxcdHJjID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xcbiA3MTE6XFx0XFx0aWYgKHJjKVxcbiA3MTI6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9xcHM7XFxuIDcxMzpcXHRcXG4gNzE0OlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShjbGllbnRfZGV2LCBuZGV2KTtcXG4gNzE1OlxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCIlcyBjcmVhdGVkIHdpdGggJXUgcXVldWUgcGFpcnNcXFxcblxcXCIsXFxuIDcxNjpcXHRcXHRcXHQgbmRldi1cXHUwMDNlbmFtZSwgZGV2LVxcdTAwM2VudW1fcXVldWVzKTtcXG4gNzE3OlxcdFxcdHJldHVybiAwO1xcbiA3MTg6XFx0XFxuIDcxOTpcXHRlcnJfZnJlZV9xcHM6XFxuIDcyMDpcXHRcXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgZGV2LVxcdTAwM2VudW1fcXVldWVzOyBxKyspXFxuIDcyMTpcXHRcXHRcXHRudGJfdHJhbnNwb3J0X2ZyZWVfcXVldWUoZGV2LVxcdTAwM2VxdWV1ZXNbcV0ucXApO1xcbiA3MjI6XFx0XFxuIDcyMzpcXHRlcnJfZnJlZV9xdWV1ZXM6XFxuIDcyNDpcXHRcXHRrZnJlZShkZXYtXFx1MDAzZXF1ZXVlcyk7XFxuIDcyNTpcXHRcXG4gNzI2OlxcdGVycl9mcmVlX25ldGRldjpcXG4gNzI3OlxcdFxcdGZyZWVfbmV0ZGV2KG5kZXYpO1xcbiA3Mjg6XFx0XFx0cmV0dXJuIHJjO1xcbiA3Mjk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1OToxOC4yNjc3NDM5MjlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTM1OTM1NjgyMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDcmVhdGlvbiBvZiBgY2xpZW50X2RldmAgd2l0aGluIGBudGJfdHJhbnNwb3J0YCoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBnZW5lc2lzIG9mIHRoZSBgY2xpZW50X2RldmAgc3RydWN0dXJlIHdpdGhpbiB0aGUgYG50Yl90cmFuc3BvcnRgIG1vZHVsZS4gV2hlcmUgaXMgdGhpcyB0aGluZyBiZWluZyBpbnN0YW50aWF0ZWQ/IFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBudGJfdHJhbnNwb3J0LmNgLiBJJ20gY29uZmlkZW50IHRoZSBhbnN3ZXIgbGllcyB3aXRoaW4gdGhhdCBmaWxlOyBsZXQncyBzZWUgd2hhdCB3ZSBjYW4gdW5lYXJ0aC4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZGVjZW50OyBvdGhlcndpc2UsIEknbGwganVzdCBoYXZlIHRvIHRyYWNlIHRoZSByZWxldmFudCBmdW5jdGlvbiBjYWxscyB1bnRpbCBJIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1ODMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjU5OjMxLjg2MTMxNTc1N1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0MTc4NTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL250Yi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTM5NT1FWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3VucmVnaXN0ZXJfY2xpZW50X2Rldik7XFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzk3LS8qKlxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozOTg6ICogbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkZXZpY2VcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzk5LSAqIEBkZXZpY2VfbmFtZTogTmFtZSBvZiBOVEIgY2xpZW50IGRldmljZVxcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQwNC0gKi9cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDA1OmludCBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYoY2hhciAqZGV2aWNlX25hbWUpXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQwNi17XFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDUxLX1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDUyOkVYUE9SVF9TWU1CT0xfR1BMKG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2Rldik7XFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTk6MzIuMzQ1NDk4ODM3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyNDE5Nzg4NTkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgbnRiX3RyYW5zcG9ydC5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgY29kZSBhcm91bmQgbGluZSA0MDUuIEknbSBhc3N1bWluZyB0aGF0IGFyZWEgcHJvYmFibHkgZGVhbHMgd2l0aCBzb21ldGhpbmcgZnVuZGFtZW50YWwgdG8gdGhlIHRyYW5zcG9ydCBsYXllciDigJMgcGVyaGFwcyBtZXNzYWdlIGhhbmRsaW5nLCBidWZmZXIgbWFuYWdlbWVudCwgb3IgaW50ZXJydXB0IHByb2Nlc3NpbmcuIEtub3dpbmcgdGhlIGZ1bmN0aW9uIGNhbGxzIGFyb3VuZCB0aGF0IGxpbmUgaXMgY3JpdGljYWwuIEknbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgaG93IGRhdGEgaXMgbW92aW5nLCBob3cgaXQncyBiZWluZyBoYW5kbGVkLCBhbmQgd2hhdCBtZWNoYW5pc21zIGFyZSBlbXBsb3llZCBmb3Igc3luY2hyb25pemF0aW9uIGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGlzIHBhcnQgb2YgdGhlIE5UQiBkcml2ZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCByZWFkaW5nIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjA3MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjAxOjM2LjU0MzM4ODcyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDA1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDA1OlxcdGludCBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYoY2hhciAqZGV2aWNlX25hbWUpXFxuIDQwNjpcXHR7XFxuIDQwNzpcXHRcXHRzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9jbGllbnRfZGV2ICpjbGllbnRfZGV2O1xcbiA0MDg6XFx0XFx0c3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudDtcXG4gNDA5OlxcdFxcdGludCBub2RlO1xcbiA0MTA6XFx0XFx0aW50IHJjLCBpID0gMDtcXG4gNDExOlxcdFxcbiA0MTI6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCkpXFxuIDQxMzpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gNDE0OlxcdFxcbiA0MTU6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShudCwgXFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCwgZW50cnkpIHtcXG4gNDE2OlxcdFxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG4gNDE3OlxcdFxcbiA0MTg6XFx0XFx0XFx0bm9kZSA9IGRldl90b19ub2RlKFxcdTAwMjZudC1cXHUwMDNlbmRldi1cXHUwMDNlZGV2KTtcXG4gNDE5OlxcdFxcbiA0MjA6XFx0XFx0XFx0Y2xpZW50X2RldiA9IGt6YWxsb2Nfbm9kZShzaXplb2YoKmNsaWVudF9kZXYpLFxcbiA0MjE6XFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMLCBub2RlKTtcXG4gNDIyOlxcdFxcdFxcdGlmICghY2xpZW50X2Rldikge1xcbiA0MjM6XFx0XFx0XFx0XFx0cmMgPSAtRU5PTUVNO1xcbiA0MjQ6XFx0XFx0XFx0XFx0Z290byBlcnI7XFxuIDQyNTpcXHRcXHRcXHR9XFxuIDQyNjpcXHRcXG4gNDI3OlxcdFxcdFxcdGRldiA9IFxcdTAwMjZjbGllbnRfZGV2LVxcdTAwM2VkZXY7XFxuIDQyODpcXHRcXG4gNDI5OlxcdFxcdFxcdC8qIHNldHVwIGFuZCByZWdpc3RlciBjbGllbnQgZGV2aWNlcyAqL1xcbiA0MzA6XFx0XFx0XFx0ZGV2X3NldF9uYW1lKGRldiwgXFxcIiVzJWRcXFwiLCBkZXZpY2VfbmFtZSwgaSk7XFxuIDQzMTpcXHRcXHRcXHRkZXYtXFx1MDAzZWJ1cyA9IFxcdTAwMjZudGJfdHJhbnNwb3J0X2J1cztcXG4gNDMyOlxcdFxcdFxcdGRldi1cXHUwMDNlcmVsZWFzZSA9IG50Yl90cmFuc3BvcnRfY2xpZW50X3JlbGVhc2U7XFxuIDQzMzpcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcmVudCA9IFxcdTAwMjZudC1cXHUwMDNlbmRldi1cXHUwMDNlZGV2O1xcbiA0MzQ6XFx0XFxuIDQzNTpcXHRcXHRcXHRyYyA9IGRldmljZV9yZWdpc3RlcihkZXYpO1xcbiA0MzY6XFx0XFx0XFx0aWYgKHJjKSB7XFxuIDQzNzpcXHRcXHRcXHRcXHRwdXRfZGV2aWNlKGRldik7XFxuIDQzODpcXHRcXHRcXHRcXHRnb3RvIGVycjtcXG4gNDM5OlxcdFxcdFxcdH1cXG4gNDQwOlxcdFxcbiA0NDE6XFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2Y2xpZW50X2Rldi1cXHUwMDNlZW50cnksIFxcdTAwMjZudC1cXHUwMDNlY2xpZW50X2RldnMpO1xcbiA0NDI6XFx0XFx0XFx0aSsrO1xcbiA0NDM6XFx0XFx0fVxcbiA0NDQ6XFx0XFxuIDQ0NTpcXHRcXHRyZXR1cm4gMDtcXG4gNDQ2OlxcdFxcbiA0NDc6XFx0ZXJyOlxcbiA0NDg6XFx0XFx0bnRiX3RyYW5zcG9ydF91bnJlZ2lzdGVyX2NsaWVudF9kZXYoZGV2aWNlX25hbWUpO1xcbiA0NDk6XFx0XFxuIDQ1MDpcXHRcXHRyZXR1cm4gcmM7XFxuIDQ1MTpcXHR9XFxuIDQ1MjpcXHRFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYpO1xcbiA0NTM6XFx0XFxuIDQ1NDpcXHQvKipcXG4gNDU1OlxcdCAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkcml2ZXJcXG4gNDU2OlxcdCAqIEBkcnY6IE5UQiBjbGllbnQgZHJpdmVyIHRvIGJlIHJlZ2lzdGVyZWRcXG4gNDU3OlxcdCAqXFxuIDQ1ODpcXHQgKiBSZWdpc3RlciBhbiBOVEIgY2xpZW50IGRyaXZlciB3aXRoIHRoZSBOVEIgdHJhbnNwb3J0IGxheWVyXFxuIDQ1OTpcXHQgKlxcbiA0NjA6XFx0ICogUkVUVVJOUzogQW4gYXBwcm9wcmlhdGUgLUVSUk5PIGVycm9yIHZhbHVlIG9uIGVycm9yLCBvciB6ZXJvIGZvciBzdWNjZXNzLlxcbiA0NjE6XFx0ICovXFxuIDQ2MjpcXHRpbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnQoc3RydWN0IG50Yl90cmFuc3BvcnRfY2xpZW50ICpkcnYpXFxuIDQ2MzpcXHR7XFxuIDQ2NDpcXHRcXHRkcnYtXFx1MDAzZWRyaXZlci5idXMgPSBcXHUwMDI2bnRiX3RyYW5zcG9ydF9idXM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjAxOjM2LjU0MzU4MzQxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1NzU5ODg5MDQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2YCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXZgIGZ1bmN0aW9uLiBGaXJzdCBvYnNlcnZhdGlvbjogaWYgYG50Yl90cmFuc3BvcnRfbGlzdGAgaXMgZW1wdHksIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zIGAtRU5PREVWYC4gQ2xlYXJseSwgdGhpcyBsaXN0IGlzIGNydWNpYWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIG9yIGFkZGVkIHRvIGBudGJfdHJhbnNwb3J0X2xpc3RgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHdoZXJlIHRoaXMgbGlzdCBpcyBwb3B1bGF0ZWQuIExldCdzIHJ1biBhIHNlYXJjaCBmb3IgYWxsIGluc3RhbmNlcyBvZiBgbnRiX3RyYW5zcG9ydF9saXN0YCB3aXRoaW4gdGhpcyBjb2RlYmFzZS4gVGhpcyBzaG91bGQgaWxsdW1pbmF0ZSB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHBvcHVsYXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBzZXF1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxNDMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjA5OjE0LjE0MjQ3NjU2NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2MjQ4OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50Yl90cmFuc3BvcnRfbGlzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL250Yi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTMzOT1zdGF0aWMgY29uc3Qgc3RydWN0IGJ1c190eXBlIG50Yl90cmFuc3BvcnRfYnVzID0ge1xcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM0NS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6MzQ2OnN0YXRpYyBMSVNUX0hFQUQobnRiX3RyYW5zcG9ydF9saXN0KTtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzQ3LVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zNDg9c3RhdGljIGludCBudGJfYnVzX2luaXQoc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudClcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzQ5LXtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6MzUwOlxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm50LVxcdTAwM2VlbnRyeSwgXFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCk7XFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM1MS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zODI9dm9pZCBudGJfdHJhbnNwb3J0X3VucmVnaXN0ZXJfY2xpZW50X2RldihjaGFyICpkZXZpY2VfbmFtZSlcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zODYtXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjM4NzpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG50LCBcXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0LCBlbnRyeSlcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzg4LVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjbGllbnQsIGNkLCBcXHUwMDI2bnQtXFx1MDAzZWNsaWVudF9kZXZzLCBlbnRyeSlcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz00MDU9aW50IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldihjaGFyICpkZXZpY2VfbmFtZSlcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTEtXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQxMjpcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0KSlcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDEzLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTQtXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQxNTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG50LCBcXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0LCBlbnRyeSkge1xcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTYtXFx0XFx0c3RydWN0IGRldmljZSAqZGV2O1xcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTQ2Mj1pbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnQoc3RydWN0IG50Yl90cmFuc3BvcnRfY2xpZW50ICpkcnYpXFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDY1LVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzo0NjY6XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCkpXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ2Ny1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MDk6MTQuMzY4NzMzMzY2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1NDQyNzYwMjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQ2FsbGVycyBvZiBgbnRiX2J1c19pbml0YCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYG50Yl90cmFuc3BvcnQuY2AgZmlsZSBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBjYWxsaW5nIGBudGJfYnVzX2luaXRgLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGUgTlRCIGJ1cyBmb3IgcHJvcGVyIGRlYnVnZ2luZyBhbmQgcG90ZW50aWFsIGFyY2hpdGVjdHVyYWwgZW5oYW5jZW1lbnRzLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBmdW5jdGlvbiBiYWNrIHRvIGl0cyBvcmlnaW5zLCBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcihzKSBhcmUgcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIHVwIHRoZSBOVEIgdHJhbnNwb3J0IGxheWVyLCBhbmQgdW5kZXJzdGFuZCBob3cgdGhleSdyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgY2FsbHMgZnJvbSB0aGUgUENJIGxheWVyLCBsaWtlbHkgdGhyb3VnaCBhIGRldmljZSBwcm9iZSBmdW5jdGlvbiwgYW5kIHBvc3NpYmx5IHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBkZXBlbmRpbmcgb24gdGhlIE5UQiBpbXBsZW1lbnRhdGlvbiAoZS5nLiwgaWYgaXQncyBpbnRlZ3JhdGVkIHdpdGggYSBTb0MpLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBkZXZpY2UgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbiwgYW5kIGFueSBuZWNlc3NhcnkgRE1BIHNldHVwIHRoYXQncyBiZWluZyBkb25lIGR1cmluZyB0aGF0IGVhcmx5IGluaXRpYWxpemF0aW9uIHN0YWdlLiBLbm93aW5nICp3aG8qIGluaXRpYWxpemVzIHRoZSBidXMgZ2l2ZXMgdXMgdml0YWwgY29udGV4dCBmb3IgdHJhY2luZyBlcnJvcnMgYW5kIHVuZGVyc3RhbmRpbmcgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDM5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MDk6NTkuODExNDk2OTY1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg0MDYwODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRiX2J1c19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbnRiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM9MzQ2PXN0YXRpYyBMSVNUX0hFQUQobnRiX3RyYW5zcG9ydF9saXN0KTtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzQ3LVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozNDg6c3RhdGljIGludCBudGJfYnVzX2luaXQoc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudClcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzQ5LXtcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0xMjM2PXN0YXRpYyBpbnQgbnRiX3RyYW5zcG9ydF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMTM3MS1cXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bnQtXFx1MDAzZWNsaWVudF9kZXZzKTtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6MTM3MjpcXHRyYyA9IG50Yl9idXNfaW5pdChudCk7XFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTEzNzMtXFx0aWYgKHJjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoxMDowMC4wMDk5MTE4MzdaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTUwNTA3MTYyNjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRCIERldmljZSBQcm9iZSBQcm9jZXNzKipcblxuT2theSwgc28gYG50Yl90cmFuc3BvcnRfcHJvYmVgIGdldHMgY2FsbGVkIHdoZW4gYW4gTlRCIGRldmljZSBpcyBib3VuZCB0byB0aGUgYG50Yl90cmFuc3BvcnRfY2xpZW50YC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gbGV0J3Mgc3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlOiBgbnRiX3RyYW5zcG9ydF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpYC4gTm93LCB3aGF0IGFjdHVhbGx5IHRyaWdnZXJzIHRoaXMgY2FsbD8gQWgsIGl0J3MgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhbiBOVEIgZGV2aWNlIHVzaW5nIGBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpYC5cblxuUmlnaHQsIHNvIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIGxldCdzIHRyYWNlIHdoZXJlIGBudGJfcmVnaXN0ZXJfZGV2aWNlYCBpcyBjYWxsZWQuIEEgcXVpY2sgc2VhcmNoIHRocm91Z2ggdGhlIGtlcm5lbCByZXZlYWxzIGEgZmV3IGtleSBsb2NhdGlvbnMuIEl0J3MgdXNlZCB3aXRoaW4gdmFyaW91cyBQQ0kgZHJpdmVycyBmb3Igc3BlY2lmaWMgTlRCIGhhcmR3YXJlOlxuXG4xLiAgYGFtZF9udGJfcGNpX3Byb2JlYCAoQU1EIGhhcmR3YXJlKVxuMi4gIGBudGJfZXBmX3BjaV9wcm9iZWAgKEVQRiBoYXJkd2FyZSlcbjMuICBgaWR0X3JlZ2lzdGVyX2RldmljZWAgKElEVCBoYXJkd2FyZSlcbjQuICBgaW50ZWxfbnRiX3BjaV9wcm9iZWAgKEludGVsIGhhcmR3YXJlKVxuNS4gIGBzd2l0Y2h0ZWNfbnRiX2FkZGAgKE1pY3JvU2VtaSBTd2l0Y2h0ZWMgUENJZSBzd2l0Y2gpXG42LiAgYHBjaV92bnRiX3Byb2JlYCAoRVBGIHZOVEIpXG5cblRoYXQgZ2l2ZXMgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkaWZmZXJlbnQgaGFyZHdhcmUgaW1wbGVtZW50YXRpb25zIHRoYXQgdXNlIHRoaXMgbWVjaGFuaXNtLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gYmUgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBOVEIgZHJpdmVycyBvciB1c2VzIG9mIGBudGJfcmVnaXN0ZXJfZGV2aWNlYCwgYnV0IHRoaXMgaXMgYSBzb2xpZCBzdGFydCBmb3IgdW5kZXJzdGFuZGluZyBob3cgZGV2aWNlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgcHJvYmVkIHdpdGhpbiB0aGUgTlRCIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg1ODAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MTI6MzAuNTE3MDc4MjI0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM0NDg4MzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50Yl9yZWdpc3Rlcl9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvY29yZS5jPTk5PUVYUE9SVF9TWU1CT0wobnRiX3VucmVnaXN0ZXJfY2xpZW50KTtcXG5kcml2ZXJzL250Yi9jb3JlLmMtMTAwLVxcbmRyaXZlcnMvbnRiL2NvcmUuYzoxMDE6aW50IG50Yl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG50Yl9kZXYgKm50YilcXG5kcml2ZXJzL250Yi9jb3JlLmMtMTAyLXtcXG4tLVxcbmRyaXZlcnMvbnRiL2NvcmUuYy0xMzAtfVxcbmRyaXZlcnMvbnRiL2NvcmUuYzoxMzE6RVhQT1JUX1NZTUJPTChudGJfcmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL250Yi9jb3JlLmMtMTMyLVxcbi0tXFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYz0xMjIyPXN0YXRpYyBpbnQgYW1kX250Yl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEyNTQtXFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYzoxMjU1OlxcdHJjID0gbnRiX3JlZ2lzdGVyX2RldmljZShcXHUwMDI2bmRldi1cXHUwMDNlbnRiKTtcXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEyNTYtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYz03NTM9c3RhdGljIGludCBudGJfZXBmX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNzg3LVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM6Nzg4OlxcdHJldCA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNm5kZXYtXFx1MDAzZW50Yik7XFxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYy03ODktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYz0yMjc1PXN0YXRpYyBpbnQgaWR0X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgaWR0X250Yl9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jLTIyODItXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYzoyMjgzOlxcdHJldCA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNm5kZXYtXFx1MDAzZW50Yik7XFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYy0yMjg0LVxcdGlmIChyZXQgIT0gMCkge1xcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz0xODQ0PXN0YXRpYyBpbnQgaW50ZWxfbnRiX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTg5Ni1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjE4OTc6XFx0cmMgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTg5OC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYz0xNDgxPXN0YXRpYyBpbnQgc3dpdGNodGVjX250Yl9hZGQoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtMTUyOC1cXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYzoxNTI5OlxcdHJjID0gbnRiX3JlZ2lzdGVyX2RldmljZShcXHUwMDI2c25kZXYtXFx1MDAzZW50Yik7XFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtMTUzMC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM9MTY3Nz1zdGF0aWMgaW50IHBjaV92bnRiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTY5Mi1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTY5MzpcXHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjk0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmg9NDY2PXZvaWQgbnRiX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBudGJfY2xpZW50ICpjbGllbnQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9udGIuaC00NzItLyoqXFxuaW5jbHVkZS9saW51eC9udGIuaDo0NzM6ICogbnRiX3JlZ2lzdGVyX2RldmljZSgpIC0gcmVnaXN0ZXIgYSBudGIgZGV2aWNlXFxuaW5jbHVkZS9saW51eC9udGIuaC00NzQtICogQG50YjpcXHROVEIgZGV2aWNlIGNvbnRleHQuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQ4MS0gKi9cXG5pbmNsdWRlL2xpbnV4L250Yi5oOjQ4MjppbnQgbnRiX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbnRiX2RldiAqbnRiKTtcXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQ4My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MTI6MzIuNDUxNTcyNTAzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg1MTUwMTYwNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIGEgUENJIERyaXZlcioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBgcGNpLWVwZi12bnRiLmNgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0IGl0ICpkb2VzKi4gSXMgdGhpcyByZWxhdGVkIHRvIGFuIGVuZHBvaW50IGZ1bmN0aW9uLCBvciBpcyBpdCBtb3JlIG9mIGEgdmlydHVhbCBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIChOVEIpIGltcGxlbWVudGF0aW9uPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRpc3RpbmN0aW9uIHRvIHByb2NlZWQuXG5cblRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgUENJIGVuZHBvaW50IGRyaXZlcnMuIEEgcXVpY2sgbG9vayBpbiBgZHJpdmVycy9wY2kvZW5kcG9pbnQvYCBzaG91bGQgZ2l2ZSBtZSBzb21lIGNvbnRleHQgYW5kIGhlbHAgbWUgcGluIGRvd24gaXRzIGZ1bmN0aW9uIHdpdGhpbiB0aGUgd2lkZXIgUENJIHN1YnN5c3RlbS4gVGhhdCBkaXJlY3RvcnkgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIEhvcGVmdWxseSwgdGhlIGRyaXZlcidzIHB1cnBvc2Ugd2lsbCBiZSBjbGVhciBmcm9tIGl0cyBsb2NhdGlvbiBhbmQgYXNzb2NpYXRlZCBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1ODMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoxMzo1Ny42MDE3MzU3MTNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDYxNjYyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfRVBGX1ZOVEJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wY2kvZW5kcG9pbnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWc9MTc9Y29uZmlnIFBDSV9FUEZfTlRCXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZzozMDpjb25maWcgUENJX0VQRl9WTlRCXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWctMzEtXFx0dHJpc3RhdGUgXFxcIlBDSSBFbmRwb2ludCBWaXJ0dWFsIE5UQiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfUENJX0VQRl9OVEIpXFx0XFx0Kz0gcGNpLWVwZi1udGIub1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19QQ0lfRVBGX1ZOVEIpIFxcdFxcdCs9IHBjaS1lcGYtdm50Yi5vXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX1BDSV9FUEZfTUhJKVxcdFxcdCs9IHBjaS1lcGYtbWhpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MTM6NTguMDQyMzU4MDM0WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyMDE1ODYxMDUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9LY29uZmlnYCwgc3VtbWFyaXplZCBhcyBpZiBpdCdzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgUENJIEVuZHBvaW50IEtjb25maWcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGdvb2QgZ3JpcCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQQ0kgZW5kcG9pbnQgZnVuY3Rpb25zLiBMZXQncyBzZWUgd2hhdCdzIGRlZmluZWQgaW4gYGRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGZvciBhbGwgdGhvc2Ugc3BlY2lmaWMgZW5kcG9pbnQgZnVuY3Rpb24gZHJpdmVycyBpcyBnb2luZyB0byBsaXZlLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgbWVudSBzdHJ1Y3R1cmUsIHdpdGggZGVwZW5kZW5jaWVzIGFuZCBkZXNjcmlwdGlvbnMgZGV0YWlsaW5nIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBJJ20gaG9waW5nIGl0J3Mgd2VsbC1vcmdhbml6ZWQsIG1ha2luZyBpdCBlYXN5IHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBvcHRpb25zIGZvciBteSBjdXJyZW50IHRhc2ssIHdoaWNoIGlzIGxpa2VseSBkZWJ1Z2dpbmcvZGV2ZWxvcGluZyBhIHNwZWNpZmljIGZlYXR1cmUgaW4gYSBuZXcgUENJIGVuZHBvaW50IGZ1bmN0aW9uLlxuXG5JJ20gbG9va2luZyBmb3IgdGhlIGtleSBjb21wb25lbnRzOiB0aGUgYGNvbmZpZ2Agc3ltYm9scywgdGhlaXIgYGJvb2xgL2B0cmlzdGF0ZWAgdHlwZXMsIHRoZSBkZWZhdWx0IHZhbHVlcywgZGVwZW5kZW5jaWVzIChgZGVwZW5kcyBvbmApLCBzZWxlY3Qgc3RhdGVtZW50cywgYW5kIGhlbHAgdGV4dC4gVGhlIGRlc2NyaXB0aW9ucyBhcmUgY3JpdGljYWw7IHRoZXkgc2hvdWxkIGNsZWFybHkgZXhwbGFpbiB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBlYWNoIG9wdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3I6XG5cbiogICAqKkdyYW51bGFyaXR5OioqIEFyZSB0aGUgb3B0aW9ucyBmaW5lLWdyYWluZWQgZW5vdWdoIHRvIHNlbGVjdGl2ZWx5IGVuYWJsZSBvciBkaXNhYmxlIHNwZWNpZmljIGZ1bmN0aW9uYWxpdGllcyB3aXRoaW4gYSBmdW5jdGlvbiwgb3IgYXJlIHRoZXkgdG9vIGNvYXJzZT9cbiogICAqKkludGVyZGVwZW5kZW5jaWVzOioqIEhvdyBkbyB0aGUgZGlmZmVyZW50IGZlYXR1cmVzIHJlbGF0ZSB0byBlYWNoIG90aGVyPyBBcmUgdGhlcmUgb2J2aW91cyBjb25mbGljdHMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgZmVhdHVyZXMgdGhhdCAqbXVzdCogYmUgc2VsZWN0ZWQgd2hlbiBhIGNlcnRhaW4gdW5kZXJseWluZyBoYXJkd2FyZSBmZWF0dXJlIGlzIHN1cHBvcnRlZD9cbiogICAqKlBvcnRhYmlsaXR5OioqIEFyZSB0aGVyZSBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcz8gQXJlIHRoZXkgY2xlYW5seSBoYW5kbGVkLCBvciBkbyBJIG5lZWQgdG8gd29ycnkgYWJvdXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gY2x1dHRlcj9cbiogICAqKkRvY3VtZW50YXRpb246KiogSXMgdGhlIGhlbHAgdGV4dCBjbGVhciBhbmQgY29uY2lzZT8gRG9lcyBpdCBwcm92aWRlIGVub3VnaCBjb250ZXh0IGFuZCBsaW5rcyB0byByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBjb2RlPyBJcyBpdCBhY3R1YWxseSBhY2N1cmF0ZSwgb3IgYW0gSSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byB0aGUgY29kZSB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbj9cblxuSSB3YW50IHRvIHNlZSBjb25zaXN0ZW50IG5hbWluZyBjb252ZW50aW9ucyBhbmQgYSBsb2dpY2FsIHN0cnVjdHVyZSB0aGF0IG1ha2VzIHNlbnNlLiBBIHdlbGwtZGVzaWduZWQgS2NvbmZpZyBmaWxlIGlzIGEgam95IHRvIHdvcmsgd2l0aDsgYSBwb29ybHkgZGVzaWduZWQgb25lIGlzIGEgbmlnaHRtYXJlLiBJJ20gaG9waW5nIHRoaXMgb25lIGZhbGxzIGludG8gdGhlIGZvcm1lciBjYXRlZ29yeS4gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTA4NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjE1OjU4LjIwMDk3MTk2NFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUENJIEVuZHBvaW50IEZ1bmN0aW9uc1xcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgUENJX0VQRl9URVNUXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUENJIEVuZHBvaW50IFRlc3QgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfRU5EUE9JTlRcXG4gICA5OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgMTA6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgICBFbmFibGUgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgdGhlIHRlc3QgZHJpdmVyXFxuICAxMzpcXHRcXHQgICBmb3IgUENJIEVuZHBvaW50LlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgICBJZiBpbiBkb3VidCwgc2F5IFxcXCJOXFxcIiB0byBkaXNhYmxlIEVuZHBvaW50IHRlc3QgZHJpdmVyLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgUENJX0VQRl9OVEJcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJQQ0kgRW5kcG9pbnQgTlRCIGRyaXZlclxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUENJX0VORFBPSU5UXFxuICAyMDpcXHRcXHRzZWxlY3QgQ09ORklHRlNfRlNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgU2VsZWN0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIHRoZSBOb24tVHJhbnNwYXJlbnRcXG4gIDIzOlxcdFxcdCAgQnJpZGdlIChOVEIpIGRyaXZlciBmb3IgUENJIEVuZHBvaW50LiBOVEIgZHJpdmVyIGltcGxlbWVudHMgTlRCXFxuICAyNDpcXHRcXHQgIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSB1c2luZyBtdWx0aXBsZSBQQ0llIGVuZHBvaW50IGluc3RhbmNlcy5cXG4gIDI1OlxcdFxcdCAgSXQgY2FuIHN1cHBvcnQgTlRCIGVuZHBvaW50IGZ1bmN0aW9uIGRldmljZXMgY3JlYXRlZCB1c2luZ1xcbiAgMjY6XFx0XFx0ICBkZXZpY2UgdHJlZS5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0XFx0ICBJZiBpbiBkb3VidCwgc2F5IFxcXCJOXFxcIiB0byBkaXNhYmxlIEVuZHBvaW50IE5UQiBkcml2ZXIuXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBQQ0lfRVBGX1ZOVEJcXG4gIDMxOlxcdFxcdHRyaXN0YXRlIFxcXCJQQ0kgRW5kcG9pbnQgVmlydHVhbCBOVEIgZHJpdmVyXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfRU5EUE9JTlRcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gTlRCXFxuICAzNDpcXHRcXHRzZWxlY3QgQ09ORklHRlNfRlNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU2VsZWN0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIHRoZSBOb24tVHJhbnNwYXJlbnRcXG4gIDM3OlxcdFxcdCAgQnJpZGdlIChOVEIpIGRyaXZlciBmb3IgUENJZSBFbmRwb2ludC4gTlRCIGRyaXZlciBpbXBsZW1lbnRzIE5UQlxcbiAgMzg6XFx0XFx0ICBiZXR3ZWVuIFBDSSBSb290IFBvcnQgYW5kIFBDSWUgRW5kcG9pbnQuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgaW4gZG91YnQsIHNheSBcXFwiTlxcXCIgdG8gZGlzYWJsZSBFbmRwb2ludCBOVEIgZHJpdmVyLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoxNTo1OC4yMDEwMzk1NjRaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQzMTkyNDk4Nzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgTlRCIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBgTlRCX05FVERFVmAgZnVuY3Rpb25hbGl0eSBpcyBldmVuIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEZpcnN0LCBsZXQgbWUgcXVpY2tseSByZW1pbmQgbXlzZWxmIHdoYXQgTlRCIGFjdHVhbGx5ICppcyo6IE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ug4oCTIHdoaWNoIG1lYW5zIHdlJ3JlIHRhbGtpbmcgYWJvdXQgaGFyZHdhcmUsIGxpa2UgSW50ZWwsIEFNRCwgb3IgU3dpdGNodGVjIE5UQiwgZXRjLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIFFFTVUgZXZlbiAqZW11bGF0ZXMqIE5UQiBhdCBhbGwuXG5cbkhhbmcgb24sIGJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHN5c3RlbSBpbnN0cnVjdGlvbnMsIGVzcGVjaWFsbHkgdGhlIGNyaXRlcmlhIGZvciBkZXRlcm1pbmluZyBpZiBzb21ldGhpbmcgaXMgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIi4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgbm90IHRvIHdhc3RlIHRpbWUgb24gY2hhbmdlcyB0aGF0IGFyZSBleHBsaWNpdGx5IHJ1bGVkIG91dC4gUmlnaHQsIHNvIHRoZSBndWlkZSBleHBsaWNpdGx5IG1lbnRpb25zIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUuIFRoYXQgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgZm9yIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVcyB0aGF0ICpkZW1hbmQqIHJlYWwgUENJZSBjYXJkcy4gQW5kLCB0ZWFyZG93biBjYWxsYmFja3MgYXJlIG1vc3RseSBpcnJlbGV2YW50LCBzaW5jZSBob3QtdW5wbHVnIGlzIHVubGlrZWx5IGluIGFuIGF1dG9tYXRlZCBmdXp6aW5nIHNjZW5hcmlvLlxuXG5UaGUgY29yZSBxdWVzdGlvbiBub3cgYmVjb21lczogQ2FuIE5UQiBkZXZpY2VzIGJlIHNpbXVsYXRlZCBvciBldmVuICpjcmVhdGVkKiB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlIGluIHN0YW5kYXJkIExpbnV4LCBRRU1VLCBvciBldmVuIHdpdGggYSBmcmFtZXdvcmsgbGlrZSBzeXprYWxsZXI/IElzIHRoZXJlIGEgZHVtbXkgb3IgdmlydHVhbCBOVEIgY29udHJvbGxlciB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGY/IEkgbmVlZCB0byBjaGVjayBmb3IgYW55IG90aGVyIGtlcm5lbCBkcml2ZXJzIG9yIGVuZHBvaW50IGNvbnRyb2xsZXJzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIE5UQi4gUmlnaHQsIGxldCdzIGV4cGxvcmUgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2NvbnRyb2xsZXJzL2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0LiBGcm9tIGhlcmUgSSBjYW4gbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCB0aGUgZmVhc2liaWxpdHkgb2YgdGFyZ2V0aW5nIHRoaXMgYXJlYSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxMjgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoyMDowMS4zOTM1NDEyODhaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTc0MCwiRXJyb3IiOiJ0aGUgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0IiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL3BjaS9lbmRwb2ludC9jb250cm9sbGVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3RcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MjA6MDEuMzkzNTg4MjA4WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3NDM1MTg5NjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgZGlyZWN0b3J5OlxuXG4qKlBDSSBFbmRwb2ludCBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIFBDSSBlbmRwb2ludCBkcml2ZXIgY29kZS4gVGhlIGZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBkbyBpcyBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaW50ZXJhY3RzIHdpdGggUENJIGVuZHBvaW50cy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyZSBhbmQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGVuZHBvaW50IGRyaXZlciBmcmFtZXdvcmsuIFRoaXMgaW5jbHVkZXMsIGFuZCBtYXliZSBJIG5lZWQgdG8gcmVmcmVzaCBteXNlbGYgb24sIHRoZSBkZXZpY2UgdHJlZSBzZXR1cCwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgaG93IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGFyZSBhY2Nlc3NlZCBhbmQgbWFuYWdlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZW5kcG9pbnQgZGV2aWNlcy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkLCBob3cgdHJhbnNhY3Rpb25zIGFyZSBpbml0aWF0ZWQgYW5kIGNvbXBsZXRlZCwgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zLiBJIHNob3VsZCBxdWlja2x5IHNjYW4gZm9yIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGRvY3VtZW50YXRpb24gdG9vLCBhcyB0aGlzIGNvbnRleHQgd2lsbCBzYXZlIHNpZ25pZmljYW50IHRpbWUgZG93biB0aGUgcm9hZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5MTEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MjA6NDguODI4NzgwODM0WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL3BjaS9lbmRwb2ludFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJwY2ktZXAtY2ZzLmNcIixcbiAgICBcInBjaS1lcC1tc2kuY1wiLFxuICAgIFwicGNpLWVwYy1jb3JlLmNcIixcbiAgICBcInBjaS1lcGMtbWVtLmNcIixcbiAgICBcInBjaS1lcGYtY29yZS5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImZ1bmN0aW9uc1wiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIwOjQ4LjgyODg0MzAyM1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4ODY1NDU5NzAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRVBDIERyaXZlciBMb2NhdGlvbiBIdW50KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgdGhlIEVuaGFuY2VkIFBDSSBDb250cm9sbGVyIChFUEMpIGRyaXZlcnMgYXJlIGhpZGluZyBpbiB0aGUga2VybmVsIHNvdXJjZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBpcyB0aGUgYGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvYCBkaXJlY3RvcnkuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBvYnZpb3VzIGhvbWUgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gUENJIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZXJlIGZpcnN0LiBBc3N1bWluZyB0aGV5IGZvbGxvd2VkIHRoZSBjb252ZW50aW9uYWwgc3RydWN0dXJlLCB0aGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb2RlLiBJZiBpdCdzIG5vdCB0aGVyZSwgSSdsbCBuZWVkIHRvIGJyb2FkZW4gdGhlIHNlYXJjaCwgYnV0IHRoaXMgaXMgdGhlIGluaXRpYWwgYW5kIGJlc3QgZWR1Y2F0ZWQgZ3Vlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjExLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIyOjE3LjQ4MzQ0MjU0NloiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwOTg0MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9lcGNfY3JlYXRlfGRldm1fcGNpX2VwY19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wY2lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS1lcC5jPTY2Nj1pbnQgY2Ruc19wY2llX2VwX3NldHVwKHN0cnVjdCBjZG5zX3BjaWVfZXAgKmVwKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS1lcC5jLTcwNC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvcGNpZS1jYWRlbmNlLWVwLmM6NzA1OlxcdGVwYyA9IGRldm1fcGNpX2VwY19jcmVhdGUoZGV2LCBcXHUwMDI2Y2Ruc19wY2llX2VwY19vcHMpO1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UtZXAuYy03MDYtXFx0aWYgKElTX0VSUihlcGMpKSB7XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYz0xNTIxPWludCBkd19wY2llX2VwX2luaXQoc3RydWN0IGR3X3BjaWVfZXAgKmVwKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmMtMTUzMi1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYzoxNTMzOlxcdGVwYyA9IGRldm1fcGNpX2VwY19jcmVhdGUoZGV2LCBcXHUwMDI2ZXBjX29wcyk7XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmMtMTUzNC1cXHRpZiAoSVNfRVJSKGVwYykpIHtcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yY2FyLWVwLmM9NDc1PXN0YXRpYyBpbnQgcmNhcl9wY2llX2VwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcmNhci1lcC5jLTUyMS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcmNhci1lcC5jOjUyMjpcXHRlcGMgPSBkZXZtX3BjaV9lcGNfY3JlYXRlKGRldiwgXFx1MDAyNnJjYXJfcGNpZV9lcGNfb3BzKTtcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcmNhci1lcC5jLTUyMy1cXHRpZiAoSVNfRVJSKGVwYykpIHtcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jPTgzOT1zdGF0aWMgaW50IHJvY2tjaGlwX3BjaWVfZXBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jLTg1NS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYzo4NTY6XFx0ZXBjID0gZGV2bV9wY2lfZXBjX2NyZWF0ZShkZXYsIFxcdTAwMjZyb2NrY2hpcF9wY2llX2VwY19vcHMpO1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jLTg1Ny1cXHRpZiAoSVNfRVJSKGVwYykpIHtcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jPTEwNDE9c3RhdGljIHZvaWQgcGNpX2VwY19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTEwNDYtLyoqXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmM6MTA0NzogKiBfX3BjaV9lcGNfY3JlYXRlKCkgLSBjcmVhdGUgYSBuZXcgZW5kcG9pbnQgY29udHJvbGxlciAoRVBDKSBkZXZpY2VcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMDQ4LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIGNyZWF0aW5nIHRoZSBuZXcgRVBDXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYz0xMDU0PXN0cnVjdCBwY2lfZXBjICpcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYzoxMDU1Ol9fcGNpX2VwY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2VwY19vcHMgKm9wcyxcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMDU2LVxcdFxcdCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMDktfVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMTA6RVhQT1JUX1NZTUJPTF9HUEwoX19wY2lfZXBjX2NyZWF0ZSk7XFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTExMS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTEyLS8qKlxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMTM6ICogX19kZXZtX3BjaV9lcGNfY3JlYXRlKCkgLSBjcmVhdGUgYSBuZXcgZW5kcG9pbnQgY29udHJvbGxlciAoRVBDKSBkZXZpY2VcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTE0LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIGNyZWF0aW5nIHRoZSBuZXcgRVBDXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYz0xMTIzPXN0cnVjdCBwY2lfZXBjICpcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYzoxMTI0Ol9fZGV2bV9wY2lfZXBjX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZXBjX29wcyAqb3BzLFxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMjUtXFx0XFx0ICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTMyLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMzM6XFx0ZXBjID0gX19wY2lfZXBjX2NyZWF0ZShkZXYsIG9wcywgb3duZXIpO1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMzQtXFx0aWYgKCFJU19FUlIoZXBjKSkge1xcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTE0Mi19XFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmM6MTE0MzpFWFBPUlRfU1lNQk9MX0dQTChfX2Rldm1fcGNpX2VwY19jcmVhdGUpO1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExNDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIyOjE3Ljg3NDQzNDg2WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwNzcwNDA2MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBXb3J0aGluZXNzIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGNvbnRleHQuIFdlJ3JlIGRlYWxpbmcgd2l0aCBQQ0llIGVuZHBvaW50IGNvbnRyb2xsZXJzLCBsaWtlIHRob3NlIGZyb20gQ2FkZW5jZSwgRFdDLCBSLUNhciwgYW5kIFJvY2tjaGlwLCBhbGwgU29DIGhhcmR3YXJlLiBUaGVuIHRoZXJlIGFyZSB0aGUgTlRCIGRyaXZlcnMgdW5kZXIgYGRyaXZlcnMvbnRiL2h3L2AsIHdoaWNoIGhhbmRsZSBzcGVjaWZpYyBOVEIgaGFyZHdhcmUgZnJvbSBBTUQsIElEVCwgSW50ZWwsIFN3aXRjaHRlYywgYW5kIGEgZ2VuZXJpYyBFUEYgaW1wbGVtZW50YXRpb24uIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgKm5vbmUqIG9mIHRoZXNlIGNvbnRyb2xsZXJzIGFyZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSB2aXJ0dWFsIG1hY2hpbmVzLiBOb3csIE5UQiwgYXMgYSByZWZyZXNoZXIsIGlzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2luZyDigJMgYSBkaXJlY3QsIHBvaW50LXRvLXBvaW50IFBDSWUgY29ubmVjdGlvbiBmYWNpbGl0YXRpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHR3byBkaXN0aW5jdCBjb21wdXRlciBzeXN0ZW1zLiBJdCBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiBkZWRpY2F0ZWQgaGFyZHdhcmUgTlRCIGNvbnRyb2xsZXJzIG9yIFBDSWUgZW5kcG9pbnQgY29udHJvbGxlcnMgaW4gYSBob3N0LXRvLWhvc3Qgc2V0dXAuIFFFTVUgYW5kIEdDRSBqdXN0IGRvbid0IG9mZmVyIHRoYXQuXG5cbk5vdywgbGV0J3MgZ28gYmFjayB0byB0aGUgcnVsZXMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgcnVsZXMgc3RhdGUgd2Ugc2hvdWxkbid0IGNvbnNpZGVyIHBhdGNoZXMgdGhhdCBvbmx5IG1vZGlmeSBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBjb21tZW50cywgY29zbWV0aWMgY2hhbmdlcywgb3IgbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24ndCBpbXBhY3QgZXhlY3V0aW9uIGZsb3cuIFdlIGFsc28gZXhjbHVkZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLiBTcGVjaWZpY2FsbHksIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBhcmUgb2ZmLWxpbWl0cywgYXMgYXJlIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIG9uIGhvdC11bnBsdWcuXG5cblRoZSBwYXRjaCBpdHNlbGYgZGVhbHMgd2l0aCBgZHJpdmVycy9uZXQvbnRiX25ldGRldi5jYC4gSXQncyBjb252ZXJ0aW5nIGBuZGV2LVx1MDAzZXN0YXRzLipgIHRvIHBlci1DUFUgbmV0d29yayBzdGF0aXN0aWNzIChgcGNwdV9zd19uZXRzdGF0c2ApLCB1c2luZyBgdTY0X3N0YXRzXypgIGFuZCBgREVWX1NUQVRTX0lOQ2AsIHNldHRpbmcgYG5kZXYtXHUwMDNlcGNwdV9zdGF0X3R5cGVgLCBhbmQgZml4aW5nIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGBudGJfbmV0ZGV2X3R4X2hhbmRsZXJgIGZ1bmN0aW9uLlxuXG5Ob3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgYG50Yl9uZXRkZXZgIHJlYWNoYWJsZSBpbiBRRU1VL0dDRT8gV2l0aG91dCBhIHJlYWwgTlRCIGhhcmR3YXJlIGNvbnRyb2xsZXIgKEludGVsLCBBTUQsIGV0Yy4pLCBgbnRiX3RyYW5zcG9ydF9wcm9iZWAgaXMgbmV2ZXIgaW52b2tlZC4gVGhlIGBudGJfdHJhbnNwb3J0X2xpc3RgIHJlbWFpbnMgZW1wdHksIGFuZCByZWdpc3RyYXRpb24gZmFpbHMgd2l0aCBgLUVOT0RFVmAuIENvbnNlcXVlbnRseSwgYG50Yl9uZXRkZXZfcHJvYmVgIGlzIG5ldmVyIGNhbGxlZCwgYW5kIG5vIG5ldHdvcmsgZGV2aWNlIGlzIGV2ZXIgaW5zdGFudGlhdGVkLiBUaGVyZWZvcmUsIG5vIGBudGJfbmV0ZGV2YCBpcyBldmVyIGNyZWF0ZWQsIG9yIGF0IGxlYXN0LCBpbnN0YW50aWF0ZWQuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGZvciBgc3RydWN0IG50Yl9kZXZfb3BzYCBvciBgbnRiX3JlZ2lzdGVyX2RldmljZWAgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IG1vY2sgb3IgbG9vcGJhY2sgaW1wbGVtZW50YXRpb24gSSdtIG1pc3NpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0ODA0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIzOjE4LjY0NDg0NDI4NVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2OTYyODY2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGJfZGV2X29wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL250Yi9jb3JlLmM9MTAxPWludCBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpXFxuLS1cXG5kcml2ZXJzL250Yi9jb3JlLmMtMTEwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbnRiL2NvcmUuYzoxMTE6XFx0aWYgKCFudGJfZGV2X29wc19pc192YWxpZChudGItXFx1MDAzZW9wcykpXFxuZHJpdmVycy9udGIvY29yZS5jLTExMi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM9NTM4PXN0YXRpYyBpbnQgYW1kX250Yl9wZWVyX3NwYWRfd3JpdGUoc3RydWN0IG50Yl9kZXYgKm50YiwgaW50IHBpZHgsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTU1My1cXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jOjU1NDpzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIGFtZF9udGJfb3BzID0ge1xcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmMtNTU1LVxcdC5td19jb3VudFxcdFxcdD0gYW1kX250Yl9td19jb3VudCxcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM9NTg3PXN0YXRpYyBpbnQgbnRiX2VwZl9kYl9jbGVhcihzdHJ1Y3QgbnRiX2RldiAqbnRiLCB1NjQgZGJfYml0cylcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNTk1LVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM6NTk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgbnRiX2VwZl9vcHMgPSB7XFxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYy01OTctXFx0Lm13X2NvdW50XFx0XFx0PSBudGJfZXBmX213X2NvdW50LFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYz0yMTk3PXN0YXRpYyBpcnFyZXR1cm5fdCBpZHRfdGhyZWFkX2lzcihpbnQgaXJxLCB2b2lkICpkZXZpZClcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjIzNi0gKi9cXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jOjIyMzc6c3RhdGljIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpZHRfbnRiX29wcyA9IHtcXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jLTIyMzgtXFx0LnBvcnRfbnVtYmVyXFx0XFx0PSBpZHRfbnRiX3BvcnRfbnVtYmVyLFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz04Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX250Yl94bGF0X3JlZyB4ZW9uX3NlY194bGF0O1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmM6ODM6c3RhdGljIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGJfb3BzO1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtODQtXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jPTE5ODk9c3RydWN0IGludGVsX2IyYl9hZGRyIHhlb25fYjJiX2RzZF9hZGRyID0ge1xcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYy0xOTk2LS8qIG9wZXJhdGlvbnMgZm9yIHByaW1hcnkgc2lkZSBvZiBsb2NhbCBudGIgKi9cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjE5OTc6c3RhdGljIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGJfb3BzID0ge1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTk5OC1cXHQubXdfY291bnRcXHRcXHQ9IGludGVsX250Yl9td19jb3VudCxcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmM9NTk1PWludCBpbnRlbF9udGIzX2RiX2NsZWFyKHN0cnVjdCBudGJfZGV2ICpudGIsIHU2NCBkYl9iaXRzKVxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuYy02MDMtXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuYzo2MDQ6Y29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIGludGVsX250YjNfb3BzID0ge1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmMtNjA1LVxcdC5td19jb3VudFxcdFxcdD0gaW50ZWxfbnRiX213X2NvdW50LFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuaD0xMTI9aW50IGludGVsX250YjNfcGVlcl9kYl9hZGRyKHN0cnVjdCBudGJfZGV2ICpudGIsIHBoeXNfYWRkcl90ICpkYl9hZGRyLFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuaC0xMTUtXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuaDoxMTY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGIzX29wcztcXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5oLTExNy1cXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW40LmM9NTM2PXN0YXRpYyBpbnQgaW50ZWxfbnRiNF9td19nZXRfYWxpZ24oc3RydWN0IG50Yl9kZXYgKm50YiwgaW50IHBpZHgsIGludCBpZHgsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5jLTU3Ny1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5jOjU3ODpjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiNF9vcHMgPSB7XFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuYy01NzktXFx0Lm13X2NvdW50XFx0XFx0PSBpbnRlbF9udGJfbXdfY291bnQsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5oPTExMT1zc2l6ZV90IG5kZXZfbnRiNF9kZWJ1Z2ZzX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuaC0xMTMtXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuaDoxMTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGI0X29wcztcXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5oLTExNS1cXG4tLVxcbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jPTc5NT1zdGF0aWMgaW50IHN3aXRjaHRlY19udGJfcGVlcl9zcGFkX2FkZHIoc3RydWN0IG50Yl9kZXYgKm50YiwgaW50IHBpZHgsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYy04MTItXFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmM6ODEzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgc3dpdGNodGVjX250Yl9vcHMgPSB7XFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtODE0LVxcdC5td19jb3VudFxcdFxcdD0gc3dpdGNodGVjX250Yl9td19jb3VudCxcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNjQzPXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICp2bnRiX2VwZl9nZXRfZG1hX2RldihzdHJ1Y3QgbnRiX2RldiAqbmRldilcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjUwLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYzoxNjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgdm50Yl9lcGZfb3BzID0ge1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjUyLVxcdC5td19jb3VudFxcdFxcdD0gdm50Yl9lcGZfbXdfY291bnQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L250Yi5oPTE5OT1zdGF0aWMgaW5saW5lIGludCBudGJfY3R4X29wc19pc192YWxpZChjb25zdCBzdHJ1Y3QgbnRiX2N0eF9vcHMgKm9wcylcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmgtMjA5LS8qKlxcbmluY2x1ZGUvbGludXgvbnRiLmg6MjEwOiAqIHN0cnVjdCBudGJfZGV2X29wcyAtIG50YiBkZXZpY2Ugb3BlcmF0aW9uc1xcbmluY2x1ZGUvbGludXgvbnRiLmgtMjExLSAqIEBwb3J0X251bWJlcjpcXHRTZWUgbnRiX3BvcnRfbnVtYmVyKCkuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L250Yi5oLTI2MC0gKi9cXG5pbmNsdWRlL2xpbnV4L250Yi5oOjI2MTpzdHJ1Y3QgbnRiX2Rldl9vcHMge1xcbmluY2x1ZGUvbGludXgvbnRiLmgtMjYyLVxcdGludCAoKnBvcnRfbnVtYmVyKShzdHJ1Y3QgbnRiX2RldiAqbnRiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmgtMzM1LVxcbmluY2x1ZGUvbGludXgvbnRiLmg6MzM2OnN0YXRpYyBpbmxpbmUgaW50IG50Yl9kZXZfb3BzX2lzX3ZhbGlkKGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyAqb3BzKVxcbmluY2x1ZGUvbGludXgvbnRiLmgtMzM3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmg9NDA2PXN0cnVjdCBudGJfY2xpZW50IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmgtNDE2LSAqIEB0b3BvOlxcdFxcdERldGVjdGVkIHRvcG9sb2d5IG9mIHRoZSBudGIuXFxuaW5jbHVkZS9saW51eC9udGIuaDo0MTc6ICogQG9wczpcXHRcXHRTZWUgXFx1MDAyNm50Yl9kZXZfb3BzLlxcbmluY2x1ZGUvbGludXgvbnRiLmgtNDE4LSAqIEBjdHg6XFx0XFx0U2VlIFxcdTAwMjZudGJfY3R4X29wcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmg9NDIxPXN0cnVjdCBudGJfZGV2IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmgtNDI0LVxcdGVudW0gbnRiX3RvcG9cXHRcXHRcXHR0b3BvO1xcbmluY2x1ZGUvbGludXgvbnRiLmg6NDI1OlxcdGNvbnN0IHN0cnVjdCBudGJfZGV2X29wc1xcdCpvcHM7XFxuaW5jbHVkZS9saW51eC9udGIuaC00MjYtXFx0dm9pZFxcdFxcdFxcdFxcdCpjdHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIzOjIwLjUxNDQ4MjY4N1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1ODY1MzI2MjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnRiX25ldGRldmAgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gdGFraW5nIGEgbG9vayBhdCB0aGlzIGBudGJfbmV0ZGV2YCBkcml2ZXIsIGFuZCBpdCdzIGxvb2tpbmcgcHJldHR5IGJsZWFrIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUgY29yZSBvZiBteSBhbmFseXNpcyBoaW5nZXMgb24gdGhlIGZhY3QgdGhhdCBhbGwgdGhlIHJlbGV2YW50IGBudGJfZGV2X29wc2AgaW1wbGVtZW50YXRpb25zIEkndmUgaWRlbnRpZmllZCDigJMgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbnRiL2h3L2FtZC9gLCBgZHJpdmVycy9udGIvaHcvZXBmL2AsIGBkcml2ZXJzL250Yi9ody9pZHQvYCwgYGRyaXZlcnMvbnRiL2h3L2ludGVsL2AsIGBkcml2ZXJzL250Yi9ody9tc2NjL2AsIGFuZCBldmVuIHRoZSBgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jYCBwYXRoIOKAkyBhcmUgZGVlcGx5IHJvb3RlZCBpbiBoYXJkd2FyZSBQQ0llIGRldmljZSBkcml2ZXJzLiBUaGVzZSBhcmVuJ3QganVzdCBhYnN0cmFjdCBjb25jZXB0czsgdGhleSdyZSB0aWVkIHRvIHNwZWNpZmljIHBoeXNpY2FsIE5UQiBoYXJkd2FyZSBsaWtlIEludGVsLCBBTUQsIElEVCwgb3IgU3dpdGNodGVjIFBDSWUgY29udHJvbGxlcnMuXG5cblRoZSBjcml0aWNhbCBpc3N1ZSBpcyB0aGF0IG5vbmUgb2YgdGhlc2UgaGFyZHdhcmUgY29tcG9uZW50cyBhcmUgZW11bGF0ZWQgd2l0aGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGlzIGVmZmVjdGl2ZWx5IG1ha2VzIHRoZSBgbnRiX25ldGRldmAgZHJpdmVyIGluYWNjZXNzaWJsZSBpbiB0aGVzZSBjb21tb24gdmlydHVhbCBmdXp6aW5nIHNldHVwcy4gSSBtZWFuLCB3ZSdyZSB0YWxraW5nIGFib3V0IGEgXCJWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydFwiIGhlcmUg4oCTIGl0J3MgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHdpdGggdGhhdCBzcGVjaWZpYyBOVEIgaGFyZHdhcmUuIFdpdGhvdXQgdGhhdCBoYXJkd2FyZSBwcmVzZW50IChvciBlbXVsYXRlZCB3aXRoIHN1ZmZpY2llbnQgZmlkZWxpdHkpLCB0aGUgZHJpdmVyIHdpbGwgc2ltcGx5IHJlbWFpbiB1bnJlYWNoYWJsZS5cblxuSSd2ZSBhbHJlYWR5IHJ1biBhIHF1aWNrIGNoZWNrIG9mIHRoZSByZWxldmFudCBjcml0ZXJpYS4gVGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgdW5zdXJwcmlzaW5nbHkgZmFsc2UsIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGVtcHR5LCBhbmQgdGhlcmUgYXJlIG5vIGBGb2N1c1N5bWJvbHNgLiBUaGUgcmVhc29uaW5nIGZvciB0aGlzIGluYWNjZXNzaWJpbGl0eSBpcyBjbGVhcjsgaXQgYWxsIGJvaWxzIGRvd24gdG8gdGhlIGRlcGVuZGVuY2Ugb24gcGh5c2ljYWwgUENJZSBOVEIgaGFyZHdhcmUuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gdGhpcyBhc3Nlc3NtZW50LiBMZXQncyBqdXN0IG1ha2Ugb25lIGxhc3QsIHF1aWNrIGNoZWNrIG9mIHRoZSBmb3JtYXR0aW5nIHRvIGVuc3VyZSBpdCBhbGwgbG9va3MgZ29vZCwgYW5kIHRoZW4gSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDg0LCJPdXRwdXRUb2tlbnMiOjk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjI0OjE5LjE2Nzc0ODQwN1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwibnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwibnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjI0OjE5LjE2Nzc3MzM5NloiLCJTZXEiOjU1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pbk2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-30 15:32:51 +0000 UTC FinishedAt: 2026-08-30 16:24:21 +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+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NDltPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7JiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7bnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MzQ8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNTNiNzNmOTExMDQ0M2UwOGJlMjExNzIxNTlkNDlhMTE4ZTFhMmI3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMzAgMTU6MzQ6MjQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jIGIvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXG5pbmRleCA5YzE3MTY5N2U3NjIwLi4yYzA0YmU2ZDYxYTg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNcbkBAIC0xMjcsOCAmIzQzOzEyNywxMCBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3J4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIHtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxID0gcXBfZGF0YTtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLVx1MDAzZW50ZGV2O1xuJiM0MztcdHN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHM7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqbmV3X3NrYjtcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuJiM0MztcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgcmM7XG4gXG4gXHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG5AQCAtMTM5LDE3ICYjNDM7MTQxLDIwIEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsXG4gXHRuZXRkZXZfZGJnKG5kZXYsIFwmIzM0OyVzOiAlZCBieXRlIHBheWxvYWQgcmVjZWl2ZWRcXG5cJiMzNDssIF9fZnVuY19fLCBsZW4pO1xuIFxuIFx0aWYgKGxlbiBcdTAwM2MgMCkge1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfbGVuZ3RoX2Vycm9ycyYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Vycm9ycyk7XG4mIzQzO1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2xlbmd0aF9lcnJvcnMpO1xuIFx0XHRnb3RvIGVucXVldWVfYWdhaW47XG4gXHR9XG4gXG4tXHRuZGV2LVx1MDAzZXN0YXRzLnJ4X3BhY2tldHMmIzQzOyYjNDM7O1xuLVx0bmRldi1cdTAwM2VzdGF0cy5yeF9ieXRlcyAmIzQzOz0gbGVuO1xuJiM0MztcdHRzdGF0cyA9IHRoaXNfY3B1X3B0cihuZGV2LVx1MDAzZXRzdGF0cyk7XG4mIzQzO1x0ZmxhZ3MgPSB1NjRfc3RhdHNfdXBkYXRlX2JlZ2luX2lycXNhdmUoXHUwMDI2dHN0YXRzLVx1MDAzZXN5bmNwKTtcbiYjNDM7XHR1NjRfc3RhdHNfaW5jKFx1MDAyNnRzdGF0cy1cdTAwM2VyeF9wYWNrZXRzKTtcbiYjNDM7XHR1NjRfc3RhdHNfYWRkKFx1MDAyNnRzdGF0cy1cdTAwM2VyeF9ieXRlcywgbGVuKTtcbiYjNDM7XHR1NjRfc3RhdHNfdXBkYXRlX2VuZF9pcnFyZXN0b3JlKFx1MDAyNnRzdGF0cy1cdTAwM2VzeW5jcCwgZmxhZ3MpO1xuIFxuIFx0bmV3X3NrYiA9IG5ldGRldl9hbGxvY19za2IobmRldiwgbmRldi1cdTAwM2VtdHUgJiM0MzsgRVRIX0hMRU4pO1xuIFx0aWYgKCFuZXdfc2tiKSB7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCYjNDM7JiM0Mzs7XG4mIzQzO1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Ryb3BwZWQpO1xuIFx0XHRnb3RvIGVucXVldWVfYWdhaW47XG4gXHR9XG4gXG5AQCAtMTY2LDggJiM0MzsxNzEsOCBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3J4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIFx0cmMgPSBudGJfdHJhbnNwb3J0X3J4X2VucXVldWUocXAsIHNrYiwgc2tiLVx1MDAzZWRhdGEsIG5kZXYtXHUwMDNlbXR1ICYjNDM7IEVUSF9ITEVOKTtcbiBcdGlmIChyYykge1xuIFx0XHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfZmlmb19lcnJvcnMmIzQzOyYjNDM7O1xuJiM0MztcdFx0REVWX1NUQVRTX0lOQyhuZGV2LCByeF9lcnJvcnMpO1xuJiM0MztcdFx0REVWX1NUQVRTX0lOQyhuZGV2LCByeF9maWZvX2Vycm9ycyk7XG4gXHR9XG4gfVxuIFxuQEAgLTIxMCwyNSAmIzQzOzIxNSwzOSBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIHtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxID0gcXBfZGF0YTtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLVx1MDAzZW50ZGV2O1xuJiM0MztcdHN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHM7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbiBcdHN0cnVjdCBza19idWZmICpza2I7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHRib29sIHJlZ2lzdGVyZWQ7XG4gXG4gXHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG4gXHRza2IgPSBkYXRhO1xuIFx0aWYgKCFza2IgfHwgIW5kZXYpXG4gXHRcdHJldHVybjtcbiBcbiYjNDM7XHRyY3VfcmVhZF9sb2NrKCk7XG4mIzQzO1x0cmVnaXN0ZXJlZCA9IFJFQURfT05DRShuZGV2LVx1MDAzZXJlZ19zdGF0ZSkgPT0gTkVUUkVHX1JFR0lTVEVSRUQ7XG4mIzQzO1x0aWYgKCFyZWdpc3RlcmVkKVxuJiM0MztcdFx0Z290byBmcmVlX3NrYjtcbiYjNDM7XG4gXHRpZiAobGVuIFx1MDAzZSAwKSB7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMudHhfcGFja2V0cyYjNDM7JiM0Mzs7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMudHhfYnl0ZXMgJiM0Mzs9IHNrYi1cdTAwM2VsZW47XG4mIzQzO1x0XHQvKiBUaGUgbWVtY3B5IGt0aHJlYWQgY2FuIG1pZ3JhdGUsIHNvIHBpbiB0aGUgcGVyLUNQVSB1cGRhdGUuICovXG4mIzQzO1x0XHR0c3RhdHMgPSBnZXRfY3B1X3B0cihuZGV2LVx1MDAzZXRzdGF0cyk7XG4mIzQzO1x0XHRmbGFncyA9IHU2NF9zdGF0c191cGRhdGVfYmVnaW5faXJxc2F2ZShcdTAwMjZ0c3RhdHMtXHUwMDNlc3luY3ApO1xuJiM0MztcdFx0dTY0X3N0YXRzX2luYyhcdTAwMjZ0c3RhdHMtXHUwMDNldHhfcGFja2V0cyk7XG4mIzQzO1x0XHR1NjRfc3RhdHNfYWRkKFx1MDAyNnRzdGF0cy1cdTAwM2V0eF9ieXRlcywgc2tiLVx1MDAzZWxlbik7XG4mIzQzO1x0XHR1NjRfc3RhdHNfdXBkYXRlX2VuZF9pcnFyZXN0b3JlKFx1MDAyNnRzdGF0cy1cdTAwM2VzeW5jcCwgZmxhZ3MpO1xuJiM0MztcdFx0cHV0X2NwdV9wdHIobmRldi1cdTAwM2V0c3RhdHMpO1xuIFx0fSBlbHNlIHtcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy50eF9lcnJvcnMmIzQzOyYjNDM7O1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzJiM0MzsmIzQzOztcbiYjNDM7XHRcdERFVl9TVEFUU19JTkMobmRldiwgdHhfZXJyb3JzKTtcbiYjNDM7XHRcdERFVl9TVEFUU19JTkMobmRldiwgdHhfYWJvcnRlZF9lcnJvcnMpO1xuIFx0fVxuIFxuJiM0MztmcmVlX3NrYjpcbiBcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XG4gXG4tXHRpZiAobnRiX3RyYW5zcG9ydF90eF9mcmVlX2VudHJ5KHFwKSBcdTAwM2U9IHR4X3N0YXJ0KSB7XG4mIzQzO1x0aWYgKHJlZ2lzdGVyZWQgXHUwMDI2XHUwMDI2IG50Yl90cmFuc3BvcnRfdHhfZnJlZV9lbnRyeShxcCkgXHUwMDNlPSB0eF9zdGFydCkge1xuIFx0XHQvKiBNYWtlIHN1cmUgYW55Ym9keSBzdG9wcGluZyB0aGUgcXVldWUgYWZ0ZXIgdGhpcyBzZWVzIHRoZSBuZXdcbiBcdFx0ICogdmFsdWUgb2YgbnRiX3RyYW5zcG9ydF90eF9mcmVlX2VudHJ5KClcbiBcdFx0ICovXG5AQCAtMjM3LDYgJiM0MzsyNTYsNyBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIFx0XHQgICAgbnRiX3RyYW5zcG9ydF9saW5rX3F1ZXJ5KHEtXHUwMDNlcXApKVxuIFx0XHRcdG5ldGlmX3dha2Vfc3VicXVldWUobmRldiwgcS1cdTAwM2VxaWQpO1xuIFx0fVxuJiM0MztcdHJjdV9yZWFkX3VubG9jaygpO1xuIH1cbiBcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9xdWV1ZV9oYW5kbGVycyBudGJfbmV0ZGV2X2hhbmRsZXJzID0ge1xuQEAgLTI3Nyw3ICYjNDM7Mjk3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IG50Yl9uZXRkZXZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIGRyb3A6XG4gXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xuLVx0bmRldi1cdTAwM2VzdGF0cy50eF9kcm9wcGVkJiM0MzsmIzQzOztcbiYjNDM7XHRERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Ryb3BwZWQpO1xuIFx0cmV0dXJuIE5FVERFVl9UWF9PSztcbiB9XG4gXG5AQCAtNjQ3LDYgJiM0Mzs2NjcsNyBAQCBzdGF0aWMgaW50IG50Yl9uZXRkZXZfcHJvYmUoc3RydWN0IGRldmljZSAqY2xpZW50X2RldilcbiBcdH1cbiBcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgPSBORVRJRl9GX0hJR0hETUE7XG4mIzQzO1x0bmRldi1cdTAwM2VwY3B1X3N0YXRfdHlwZSA9IE5FVERFVl9QQ1BVX1NUQVRfVFNUQVRTO1xuIFxuIFx0bmRldi1cdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MSVZFX0FERFJfQ0hBTkdFO1xuIFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjQ5bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5jb3JlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O250Yl9uZXRkZXYgKFZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0KSByZXF1aXJlcyBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIChOVEIpIGhhcmR3YXJlIGRldmljZXMgKHN1Y2ggYXMgSW50ZWwsIEFNRCwgSURULCBvciBTd2l0Y2h0ZWMgUENJZSBOVEIgY29udHJvbGxlcnMpLCB3aGljaCBhcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjb250cm9sbGVycyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMTUzYjczZjkxMTA0NDNlMDhiZTIxMTcyMTU5ZDQ5YTExOGUxYTJiNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDMwIDE1OjM0OjI0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jIGIvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jCmluZGV4IDljMTcxNjk3ZTc2MjAuLjJjMDRiZTZkNjFhODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L250Yl9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMKQEAgLTEyNyw4ICYjNDM7MTI3LDEwIEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsCiB7CiAJc3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnEgPSBxcF9kYXRhOwogCXN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLSZndDtudGRldjsKJiM0MzsJc3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0czsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCAqbmV3X3NrYjsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcmM7CiAKIAluZGV2ID0gZGV2LSZndDtuZGV2OwpAQCAtMTM5LDE3ICYjNDM7MTQxLDIwIEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsCiAJbmV0ZGV2X2RiZyhuZGV2LCAmIzM0OyVzOiAlZCBieXRlIHBheWxvYWQgcmVjZWl2ZWRcbiYjMzQ7LCBfX2Z1bmNfXywgbGVuKTsKIAogCWlmIChsZW4gJmx0OyAwKSB7Ci0JCW5kZXYtJmd0O3N0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7Ci0JCW5kZXYtJmd0O3N0YXRzLnJ4X2xlbmd0aF9lcnJvcnMmIzQzOyYjNDM7OwomIzQzOwkJREVWX1NUQVRTX0lOQyhuZGV2LCByeF9lcnJvcnMpOwomIzQzOwkJREVWX1NUQVRTX0lOQyhuZGV2LCByeF9sZW5ndGhfZXJyb3JzKTsKIAkJZ290byBlbnF1ZXVlX2FnYWluOwogCX0KIAotCW5kZXYtJmd0O3N0YXRzLnJ4X3BhY2tldHMmIzQzOyYjNDM7OwotCW5kZXYtJmd0O3N0YXRzLnJ4X2J5dGVzICYjNDM7PSBsZW47CiYjNDM7CXRzdGF0cyA9IHRoaXNfY3B1X3B0cihuZGV2LSZndDt0c3RhdHMpOwomIzQzOwlmbGFncyA9IHU2NF9zdGF0c191cGRhdGVfYmVnaW5faXJxc2F2ZSgmYW1wO3RzdGF0cy0mZ3Q7c3luY3ApOwomIzQzOwl1NjRfc3RhdHNfaW5jKCZhbXA7dHN0YXRzLSZndDtyeF9wYWNrZXRzKTsKJiM0MzsJdTY0X3N0YXRzX2FkZCgmYW1wO3RzdGF0cy0mZ3Q7cnhfYnl0ZXMsIGxlbik7CiYjNDM7CXU2NF9zdGF0c191cGRhdGVfZW5kX2lycXJlc3RvcmUoJmFtcDt0c3RhdHMtJmd0O3N5bmNwLCBmbGFncyk7CiAKIAluZXdfc2tiID0gbmV0ZGV2X2FsbG9jX3NrYihuZGV2LCBuZGV2LSZndDttdHUgJiM0MzsgRVRIX0hMRU4pOwogCWlmICghbmV3X3NrYikgewotCQluZGV2LSZndDtzdGF0cy5yeF9kcm9wcGVkJiM0MzsmIzQzOzsKJiM0MzsJCURFVl9TVEFUU19JTkMobmRldiwgcnhfZHJvcHBlZCk7CiAJCWdvdG8gZW5xdWV1ZV9hZ2FpbjsKIAl9CiAKQEAgLTE2Niw4ICYjNDM7MTcxLDggQEAgc3RhdGljIHZvaWQgbnRiX25ldGRldl9yeF9oYW5kbGVyKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCwgdm9pZCAqcXBfZGF0YSwKIAlyYyA9IG50Yl90cmFuc3BvcnRfcnhfZW5xdWV1ZShxcCwgc2tiLCBza2ItJmd0O2RhdGEsIG5kZXYtJmd0O210dSAmIzQzOyBFVEhfSExFTik7CiAJaWYgKHJjKSB7CiAJCWRldl9rZnJlZV9za2JfYW55KHNrYik7Ci0JCW5kZXYtJmd0O3N0YXRzLnJ4X2Vycm9ycyYjNDM7JiM0Mzs7Ci0JCW5kZXYtJmd0O3N0YXRzLnJ4X2ZpZm9fZXJyb3JzJiM0MzsmIzQzOzsKJiM0MzsJCURFVl9TVEFUU19JTkMobmRldiwgcnhfZXJyb3JzKTsKJiM0MzsJCURFVl9TVEFUU19JTkMobmRldiwgcnhfZmlmb19lcnJvcnMpOwogCX0KIH0KIApAQCAtMjEwLDI1ICYjNDM7MjE1LDM5IEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfdHhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsCiB7CiAJc3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnEgPSBxcF9kYXRhOwogCXN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLSZndDtudGRldjsKJiM0MzsJc3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0czsKIAlzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjsKIAlzdHJ1Y3Qgc2tfYnVmZiAqc2tiOwomIzQzOwl1bnNpZ25lZCBsb25nIGZsYWdzOwomIzQzOwlib29sIHJlZ2lzdGVyZWQ7CiAKIAluZGV2ID0gZGV2LSZndDtuZGV2OwogCXNrYiA9IGRhdGE7CiAJaWYgKCFza2IgfHwgIW5kZXYpCiAJCXJldHVybjsKIAomIzQzOwlyY3VfcmVhZF9sb2NrKCk7CiYjNDM7CXJlZ2lzdGVyZWQgPSBSRUFEX09OQ0UobmRldi0mZ3Q7cmVnX3N0YXRlKSA9PSBORVRSRUdfUkVHSVNURVJFRDsKJiM0MzsJaWYgKCFyZWdpc3RlcmVkKQomIzQzOwkJZ290byBmcmVlX3NrYjsKJiM0MzsKIAlpZiAobGVuICZndDsgMCkgewotCQluZGV2LSZndDtzdGF0cy50eF9wYWNrZXRzJiM0MzsmIzQzOzsKLQkJbmRldi0mZ3Q7c3RhdHMudHhfYnl0ZXMgJiM0Mzs9IHNrYi0mZ3Q7bGVuOwomIzQzOwkJLyogVGhlIG1lbWNweSBrdGhyZWFkIGNhbiBtaWdyYXRlLCBzbyBwaW4gdGhlIHBlci1DUFUgdXBkYXRlLiAqLwomIzQzOwkJdHN0YXRzID0gZ2V0X2NwdV9wdHIobmRldi0mZ3Q7dHN0YXRzKTsKJiM0MzsJCWZsYWdzID0gdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbl9pcnFzYXZlKCZhbXA7dHN0YXRzLSZndDtzeW5jcCk7CiYjNDM7CQl1NjRfc3RhdHNfaW5jKCZhbXA7dHN0YXRzLSZndDt0eF9wYWNrZXRzKTsKJiM0MzsJCXU2NF9zdGF0c19hZGQoJmFtcDt0c3RhdHMtJmd0O3R4X2J5dGVzLCBza2ItJmd0O2xlbik7CiYjNDM7CQl1NjRfc3RhdHNfdXBkYXRlX2VuZF9pcnFyZXN0b3JlKCZhbXA7dHN0YXRzLSZndDtzeW5jcCwgZmxhZ3MpOwomIzQzOwkJcHV0X2NwdV9wdHIobmRldi0mZ3Q7dHN0YXRzKTsKIAl9IGVsc2UgewotCQluZGV2LSZndDtzdGF0cy50eF9lcnJvcnMmIzQzOyYjNDM7OwotCQluZGV2LSZndDtzdGF0cy50eF9hYm9ydGVkX2Vycm9ycyYjNDM7JiM0Mzs7CiYjNDM7CQlERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Vycm9ycyk7CiYjNDM7CQlERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Fib3J0ZWRfZXJyb3JzKTsKIAl9CiAKJiM0MztmcmVlX3NrYjoKIAlkZXZfa2ZyZWVfc2tiX2FueShza2IpOwogCi0JaWYgKG50Yl90cmFuc3BvcnRfdHhfZnJlZV9lbnRyeShxcCkgJmd0Oz0gdHhfc3RhcnQpIHsKJiM0MzsJaWYgKHJlZ2lzdGVyZWQgJmFtcDsmYW1wOyBudGJfdHJhbnNwb3J0X3R4X2ZyZWVfZW50cnkocXApICZndDs9IHR4X3N0YXJ0KSB7CiAJCS8qIE1ha2Ugc3VyZSBhbnlib2R5IHN0b3BwaW5nIHRoZSBxdWV1ZSBhZnRlciB0aGlzIHNlZXMgdGhlIG5ldwogCQkgKiB2YWx1ZSBvZiBudGJfdHJhbnNwb3J0X3R4X2ZyZWVfZW50cnkoKQogCQkgKi8KQEAgLTIzNyw2ICYjNDM7MjU2LDcgQEAgc3RhdGljIHZvaWQgbnRiX25ldGRldl90eF9oYW5kbGVyKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCwgdm9pZCAqcXBfZGF0YSwKIAkJICAgIG50Yl90cmFuc3BvcnRfbGlua19xdWVyeShxLSZndDtxcCkpCiAJCQluZXRpZl93YWtlX3N1YnF1ZXVlKG5kZXYsIHEtJmd0O3FpZCk7CiAJfQomIzQzOwlyY3VfcmVhZF91bmxvY2soKTsKIH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBudGJfcXVldWVfaGFuZGxlcnMgbnRiX25ldGRldl9oYW5kbGVycyA9IHsKQEAgLTI3Nyw3ICYjNDM7Mjk3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IG50Yl9uZXRkZXZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCiBkcm9wOgogCWRldl9rZnJlZV9za2JfYW55KHNrYik7Ci0JbmRldi0mZ3Q7c3RhdHMudHhfZHJvcHBlZCYjNDM7JiM0Mzs7CiYjNDM7CURFVl9TVEFUU19JTkMobmRldiwgdHhfZHJvcHBlZCk7CiAJcmV0dXJuIE5FVERFVl9UWF9PSzsKIH0KIApAQCAtNjQ3LDYgJiM0Mzs2NjcsNyBAQCBzdGF0aWMgaW50IG50Yl9uZXRkZXZfcHJvYmUoc3RydWN0IGRldmljZSAqY2xpZW50X2RldikKIAl9CiAKIAluZGV2LSZndDtmZWF0dXJlcyA9IE5FVElGX0ZfSElHSERNQTsKJiM0MzsJbmRldi0mZ3Q7cGNwdV9zdGF0X3R5cGUgPSBORVRERVZfUENQVV9TVEFUX1RTVEFUUzsKIAogCW5kZXYtJmd0O3ByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU4MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIE5UQiBOZXRkZXYgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvbnRiX25ldGRldi5jYC4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGluc3RpbmN0cyBraWNrIGluLiBXaGF0JiMzOTtzIGBudGJfbmV0ZGV2YCBhbGwgYWJvdXQ/IElzIHRoaXMgc3BlY2lmaWMgaGFyZHdhcmUsIG9yIGNhbiBpdCBiZSBlbXVsYXRlZD8gRG9lcyBpdCByZWx5IG9uIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgZnVuY3Rpb25hbGl0eSB0aGF0IG1pZ2h0IGJlIHZpcnR1YWxpemVkLCBlbXVsYXRlZCwgb3IsIGluIGNvbnRyYXN0LCBtYW5kYXRlIGNlcnRhaW4gcGh5c2ljYWwgaGFyZHdhcmUgY29tcG9uZW50cz8gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgZm91bmRhdGlvbiBoZXJlIGJlZm9yZSBkaXZpbmcgdG9vIGRlZXAuCgpNeSBuZXh0IG1vdmUgaXMgdG8gYnJvYWRlbiB0aGUgc2VhcmNoLiBJIG5lZWQgdG8gZXhhbWluZSBgZHJpdmVycy9udGIvYCBhbmQgdGhlbiB0aGUgdGFyZ2V0IGZpbGUgYGRyaXZlcnMvbmV0L250Yl9uZXRkZXYuY2AgYW5kIGFsc28gdGhlIGFzc29jaWF0ZWQgS2NvbmZpZyBmaWxlcywgZXNwZWNpYWxseSBmb3IgdGhlIGBudGJgIGFuZCBgbmV0YCBzZWN0aW9ucy4gVGhlc2UgY29uZmlnIGZpbGVzIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyIHBpY3R1cmUgb2YgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBvcHRpb25zLgoKVG8gYWNjZWxlcmF0ZSB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIGxldmVyYWdlIG15IHRvb2xzLiBJJiMzOTtsbCByZWFjaCBmb3IgYGdyZXBwZXJgIG9yIGByZWFkLWZpbGVgIHRvIGVmZmljaWVudGx5IHBhcnNlIGBudGJfbmV0ZGV2LmNgIGFuZCBwZWVrIGludG8gYGRyaXZlcnMvbnRiL0tjb25maWdgIG9yIGBkcml2ZXJzL25ldC9LY29uZmlnYCB0byBxdWlja2x5IHVuZGVyc3RhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY29udGludWUgbXkgYW5hbHlzaXMgYW5kIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHBhdGNoJiMzOTtzIGNoYW5nZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TlRCX05FVERFViYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9MzcwPWNvbmZpZyBORVRfUE9MTF9DT05UUk9MTEVSXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzItXG5kcml2ZXJzL25ldC9LY29uZmlnOjM3Mzpjb25maWcgTlRCX05FVERFVlxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L01ha2VmaWxlPTgyPW9iai0kKENPTkZJR19IWVBFUlZfTkVUKSAmIzQzOz0gaHlwZXJ2L1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6ODM6b2JqLSQoQ09ORklHX05UQl9ORVRERVYpICYjNDM7PSBudGJfbmV0ZGV2Lm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTg0LVxuLS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xMi1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzoxMzojZGVmaW5lIE5UQl9ORVRERVZfVkVSXHRcJiMzNDswLjdcJiMzNDtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xNC1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz0xNT1NT0RVTEVfREVTQ1JJUFRJT04oS0JVSUxEX01PRE5BTUUpO1xuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjE2Ok1PRFVMRV9WRVJTSU9OKE5UQl9ORVRERVZfVkVSKTtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xNy1NT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz0yNz1zdGF0aWMgdW5zaWduZWQgaW50IHR4X3N0b3AgPSA1O1xuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTI4LVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjI5OiNkZWZpbmUgTlRCX05FVERFVl9NQVhfUVVFVUVTXHRcdDY0XG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6MzA6I2RlZmluZSBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTXHQxXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtMzEtXG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jPTQ1OD1zdGF0aWMgdm9pZCBudGJfZ2V0X2RydmluZm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTQ2My1cdHN0cnNjcHkoaW5mby1cdTAwM2Vkcml2ZXIsIEtCVUlMRF9NT0ROQU1FLCBzaXplb2YoaW5mby1cdTAwM2Vkcml2ZXIpKTtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo0NjQ6XHRzdHJzY3B5KGluZm8tXHUwMDNldmVyc2lvbiwgTlRCX05FVERFVl9WRVIsIHNpemVvZihpbmZvLVx1MDAzZXZlcnNpb24pKTtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy00NjUtXHRzdHJzY3B5KGluZm8tXHUwMDNlYnVzX2luZm8sIHBjaV9uYW1lKGRldi1cdTAwM2VwZGV2KSwgc2l6ZW9mKGluZm8tXHUwMDNlYnVzX2luZm8pKTtcbi0tXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM9NjM2PXN0YXRpYyBpbnQgbnRiX25ldGRldl9wcm9iZShzdHJ1Y3QgZGV2aWNlICpjbGllbnRfZGV2KVxuLS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy02NDktXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6NjUwOlx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqZGV2KSwgTlRCX05FVERFVl9NQVhfUVVFVUVTKTtcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy02NTEtXHRpZiAoIW5kZXYpXG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTY2MS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo2NjI6XHRkZXYtXHUwMDNlcXVldWVzID0ga3phbGxvY19vYmpzKCpkZXYtXHUwMDNlcXVldWVzLCBOVEJfTkVUREVWX01BWF9RVUVVRVMsXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjYzLVx0XHRcdFx0ICAgR0ZQX0tFUk5FTCk7XG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTY4NS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo2ODY6XHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTOyBxJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTY4Ny1cdFx0c3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnF1ZXVlID0gXHUwMDI2ZGV2LVx1MDAzZXF1ZXVlc1txXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTozNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTE2CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBOVEIgSW1wbGVtZW50YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIE5UQiBidXNpbmVzcyBhbmQgZmlndXJlIG91dCB0aGUgbml0dHktZ3JpdHR5IG9mIGl0cyBvcGVyYXRpb24uIE15IHByaW1hcnkgZm9jdXMgaXMgdG8gdW5kZXJzdGFuZCB0aGUgZHJpdmVyIGxhbmRzY2FwZSwgdGhlIGRpZmZlcmVudCBwbGF5ZXJzIGltcGxlbWVudGluZyBOVEIgdHJhbnNwb3J0LiBJIG5lZWQgdG8gaWRlbnRpZnkgd2hpY2ggZHJpdmVycyBoYW5kbGUgdGhlIHRyYW5zcG9ydCBpdHNlbGYsIHdoaWNoIG9uZXMgYWN0IGFzIE5UQiBjbGllbnRzLCBhbmQgd2hldGhlciB0aGVzZSBhcmUgaGFyZHdhcmUtc3BlY2lmaWMsIHV0aWxpemUgZHVtbXkgaW1wbGVtZW50YXRpb25zLCBvciBlbXBsb3kgZW11bGF0aW9uLgoKTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJJiMzOTtsbCBpbml0aWF0ZSBhIGZvY3VzZWQgc2VhcmNoLiBJJiMzOTtsbCB6ZXJvIGluIG9uIHRoZSBrZXJuZWwgY29kZSB1c2luZyBrZXl3b3JkcyBsaWtlIGBudGJfcmVnaXN0ZXJfY2xpZW50YCBhbmQgYG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50YC4gVGhlc2UgZnVuY3Rpb24gY2FsbHMgc2hvdWxkIGJlIHRoZSBicmVhZGNydW1icyBJIG5lZWQgdG8gdHJhY2UgdGhlIE5UQiBjbGllbnQgcmVnaXN0cmF0aW9uIHByb2Nlc3MgYW5kLCBob3BlZnVsbHksIHJldmVhbCB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBkcml2ZXIgaW50ZXJhY3Rpb25zLiBUaGlzIHRhcmdldGVkIGFwcHJvYWNoIGlzIGNydWNpYWwgZm9yIGVmZmljaWVudGx5IG1hcHBpbmcgb3V0IHRoZSBzb2Z0d2FyZSBjb21wb25lbnRzIGludm9sdmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbnRiX25ldGRldi5jPTc1Mj1zdGF0aWMgaW50IF9faW5pdCBudGJfbmV0ZGV2X2luaXRfbW9kdWxlKHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTc1NS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo3NTY6XHRyYyA9IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldihLQlVJTERfTU9ETkFNRSk7XG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNzU3LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy03NTktXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6NzYwOlx0cmMgPSBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudChcdTAwMjZudGJfbmV0ZGV2X2NsaWVudCk7XG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNzYxLVx0aWYgKHJjKSB7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTM5NT1FWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3VucmVnaXN0ZXJfY2xpZW50X2Rldik7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM5Ny0vKipcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozOTg6ICogbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkZXZpY2VcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zOTktICogQGRldmljZV9uYW1lOiBOYW1lIG9mIE5UQiBjbGllbnQgZGV2aWNlXG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQwNC0gKi9cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzo0MDU6aW50IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldihjaGFyICpkZXZpY2VfbmFtZSlcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MDYte1xuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NTEtfVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQ1MjpFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYpO1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1My1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NTQtLyoqXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDU1OiAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkcml2ZXJcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NTYtICogQGRydjogTlRCIGNsaWVudCBkcml2ZXIgdG8gYmUgcmVnaXN0ZXJlZFxuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NjEtICovXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDYyOmludCBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9jbGllbnQgKmRydilcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NjMte1xuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NzAtfVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQ3MTpFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudCk7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDcyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU4NjEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byB0aGUgTlRCIERyaXZlciBMYW5kc2NhcGUqKgoKT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgTlRCIGRyaXZlciBzaXR1YXRpb24uIEZpcnN0LCBJJiMzOTtsbCBoZWFkIHN0cmFpZ2h0IHRvIGBkcml2ZXJzL250Yi9gLiBJJiMzOTttIGN1cmlvdXM6IGRvZXMgdGhpcyBkaXJlY3RvcnkgaG91c2UgZHJpdmVycyBmb3IgKmJvdGgqIHZpcnR1YWwgb3IgJiMzNDtkdW1teSYjMzQ7IE5UQiBoYXJkd2FyZSwgYW5kIHRoZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHN3aXRjaGVzPyBJdCYjMzk7cyBpbXBvcnRhbnQgdG8ga25vdyB0aGUgc2NvcGUgb2Ygd2hhdCYjMzk7cyBzdXBwb3J0ZWQuIFRvIGZpbmQgb3V0LCBJJiMzOTttIGdvaW5nIHRvIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBgZHJpdmVycy9udGJgIGRpcmVjdG9yeSBpdHNlbGYuIFRoZW4sIEkgd2lsbCBpbnNwZWN0IGl0cyBzdWJkaXJlY3RvcmllcyBhbmQgS2NvbmZpZyBmaWxlcyDigJMgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkcml2ZXImIzM5O3Mgb3ZlcmFsbCBzdHJ1Y3R1cmUsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgYW5kIHRoZSB0eXBlcyBvZiBOVEIgZGV2aWNlcyBpdCYjMzk7cyBtZWFudCB0byBzdXBwb3J0LiBUaW1lIHRvIHN0YXJ0IGRpZ2dpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6Mzk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RGlyJiMzNDs6ICYjMzQ7ZHJpdmVycy9udGImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtjb3JlLmMmIzM0OywKICAgICYjMzQ7bXNpLmMmIzM0OywKICAgICYjMzQ7bnRiX3RyYW5zcG9ydC5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2h3JiMzNDssCiAgICAmIzM0O3Rlc3QmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjM5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMzkKCQkJCQkJCW91dHB1dDogMjQKCQkJCQkJCXRob3VnaHRzOiAzMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgTlRCIFN1YnN5c3RlbSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gemVybyBpbiBvbiB0aGUgTlRCIGNvZGUgYmFzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgYW5kIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIGJlZm9yZSBJIGNhbiBhc3Nlc3MgYW55dGhpbmcgbmV3LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgd2l0aCBgZHJpdmVycy9udGIvdGVzdC9gIHRvIHNlZSB3aGF0IGtpbmQgb2YgdGVzdCBjYXNlcyBhcmUgaW4gcGxhY2UuIEFyZSB0aGV5IGNvbXByZWhlbnNpdmU/IERvIHRoZXkgY292ZXIgdGhlIHNjZW5hcmlvcyBJJiMzOTttIGludGVyZXN0ZWQgaW4/IFdoYXQmIzM5O3MgdGhlaXIgdGVzdGluZyBzdHJhdGVneT8gVGhlbiwgSSBoYXZlIHRvIGxvb2sgaW50byBgZHJpdmVycy9udGIvaHcvYCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMsIHJlZ2lzdGVyIGxheW91dHMsIGFuZCBhbnkgcXVpcmtzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiBob3cgdGhlIGxvdy1sZXZlbCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBpcyBoYW5kbGVkLiBGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL250Yi9LY29uZmlnYC4gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBpc3N1ZSBvciBmZWF0dXJlIEkmIzM5O20gY3VycmVudGx5IGZvY3VzZWQgb24uIFRoaXMgcXVpY2sgdHJpYWdlIHdpbGwgZ2l2ZSBtZSBhIHNvbGlkIGZvdW5kYXRpb24gZm9yIGV2YWx1YXRpbmcgYW5kIGNvbnRyaWJ1dGluZyB0byB0aGUgTlRCIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL3Rlc3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDtudGJfbXNpX3Rlc3QuYyYjMzQ7LAogICAgJiMzNDtudGJfcGVyZi5jJiMzNDssCiAgICAmIzM0O250Yl9waW5ncG9uZy5jJiMzNDssCiAgICAmIzM0O250Yl90b29sLmMmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDg2CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOYXZpZ2F0aW5nIHRoZSBIYXJkd2FyZSBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBOZXR3b3JrIFRyYW5zcG9ydCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGNvcmUgZHJpdmVycyBhbmQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTlRCIGhhcmR3YXJlIGlzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbnRiL2h3L2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHdoZXJlIEkmIzM5O2QgZXhwZWN0IHRvIGZpbmQgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbnMgYW5kIGRhdGEgc3RydWN0dXJlcyB0aGF0IGRpcmVjdGx5IGludGVyZmFjZSB3aXRoIHRoZSBzaWxpY29uLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyAob3IgdGhlIHBhaW4hKSBoYXBwZW5zLCBzbyBsZXQmIzM5O3Mgc3RhcnQgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL250Yi9odyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBudWxsLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBbCiAgICAmIzM0O2FtZCYjMzQ7LAogICAgJiMzNDtlcGYmIzM0OywKICAgICYjMzQ7aWR0JiMzNDssCiAgICAmIzM0O2ludGVsJiMzNDssCiAgICAmIzM0O21zY2MmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NzAyCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIE5UQi9FUEYgRW11bGF0aW9uIFN0cmF0ZWdpZXMqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIE5UQi9FUEYgc2l0dWF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gc2VlIHdoYXQga2luZCBvZiBoYXJkd2FyZS1zcGVjaWZpYyBpbmZvcm1hdGlvbiBleGlzdHMgd2l0aGluIHRoZSBkcml2ZXIgc3RydWN0dXJlLCBzcGVjaWZpY2FsbHkgaW4gdGhlIGBkcml2ZXJzL250Yi9ody9lcGZgIGRpcmVjdG9yeSwgb3IgcG90ZW50aWFsbHkgb3RoZXIgaGFyZHdhcmUtcmVsYXRlZCBkaXJlY3Rvcmllcy4gSSBuZWVkIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGhhcmR3YXJlIGltcGxlbWVudGF0aW9uIHRvIHNlZSBpZiBpdCYjMzk7cyBldmVuIGZlYXNpYmxlIHRvIGVtdWxhdGUgdGhpcy4KCkFoYSEgYGVwZmAgaXMgUENJIEVuZHBvaW50IEZyYW1ld29yay4gVGhhdCYjMzk7cyBhIGtleSBwaWVjZSBvZiB0aGUgcHV6emxlLiBUaGUgYmlnIHF1ZXN0aW9uIGlzOiBjYW4gd2UgZ2V0IGF3YXkgd2l0aCBlbXVsYXRpbmcgdGhlIEVuZHBvaW50IEZyYW1ld29yayB3aXRoaW4gUUVNVSBvciBldmVuIHdpdGggc29tZSBzb3J0IG9mIGR1bW15IGltcGxlbWVudGF0aW9uPyBUaGF0JiMzOTtzIHdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaGVyZS4KClNvLCBJJiMzOTtsbCBzdGFydCBieSBzeXN0ZW1hdGljYWxseSBleGFtaW5pbmcgdGhlIGNvZGUgaW4gYGRyaXZlcnMvbnRiL2h3L2VwZi9gLCBhbmQgdGhlbiBwaXZvdCBvdmVyIHRvIGBkcml2ZXJzL3BjaS9lbmRwb2ludC9gIHRvIHNlZSB3aGF0IHVzZWZ1bCBidWlsZGluZyBibG9ja3MgYWxyZWFkeSBleGlzdCB0aGF0IEkgY2FuIGxldmVyYWdlLiBJIGFsc28gbmVlZCB0byBjb25zaWRlciB0aGUgdHJhbnNwb3J0IGxheWVyIGl0c2VsZiDigJMgd2hhdCBhYm91dCBgbnRiX3RyYW5zcG9ydGA/IFRoYXQmIzM5O3MgZGVmaW5pdGVseSByZWxldmFudC4KCkZpbmFsbHksIEkmIzM5O2xsIHdhbnQgdG8gbGV2ZXJhZ2UgdGhlIGBkcml2ZXJzL250Yi9LY29uZmlnYCB0byBkaXNjb3ZlciB3aGF0IGNvbmZpZyBvcHRpb25zIGFyZSBhdmFpbGFibGUsIG9yIHdoYXQgbWlnaHQgYmUgZGVwZW5kZW50IG9uLiBNYXliZSBJIGNhbiB1c2UgcmVhZC1maWxlIG9yIGdyZXBwZXIsIGRlcGVuZGluZyBvbiB0aGUgdG9vbGNoYWluLCB0byBlZmZpY2llbnRseSBwdWxsIG91dCB0aGUga2V5IGNvbmZpZ3VyYXRpb25zLiBJIG5lZWQgdGhlIGJpZyBwaWN0dXJlLCBhbmQgaG93IHRoZSBkaWZmZXJlbnQgZHJpdmVycyByZWxhdGUgdG8gZWFjaCBvdGhlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5UQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbnRiL0tjb25maWc6MjptZW51Y29uZmlnIE5UQlxuZHJpdmVycy9udGIvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7Tm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udGIvS2NvbmZpZz0xND1pZiBOVEJcbmRyaXZlcnMvbnRiL0tjb25maWctMTUtXG5kcml2ZXJzL250Yi9LY29uZmlnOjE2OmNvbmZpZyBOVEJfTVNJXG5kcml2ZXJzL250Yi9LY29uZmlnLTE3LVx0Ym9vbCBcJiMzNDtNU0kgSW50ZXJydXB0IFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL250Yi9LY29uZmlnPTI5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL250Yi90ZXN0L0tjb25maWdcJiMzNDtcbmRyaXZlcnMvbnRiL0tjb25maWctMzAtXG5kcml2ZXJzL250Yi9LY29uZmlnOjMxOmNvbmZpZyBOVEJfVFJBTlNQT1JUXG5kcml2ZXJzL250Yi9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7TlRCIFRyYW5zcG9ydCBDbGllbnRcJiMzNDtcbi0tXG5kcml2ZXJzL250Yi9ody9hbWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9udGIvaHcvYW1kL0tjb25maWc6Mjpjb25maWcgTlRCX0FNRFxuZHJpdmVycy9udGIvaHcvYW1kL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0FNRCBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL250Yi9ody9lcGYvS2NvbmZpZzoxOmNvbmZpZyBOVEJfRVBGXG5kcml2ZXJzL250Yi9ody9lcGYvS2NvbmZpZy0yLVx0dHJpc3RhdGUgXCYjMzQ7R2VuZXJpYyBFUEYgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udGIvaHcvaWR0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbnRiL2h3L2lkdC9LY29uZmlnOjI6Y29uZmlnIE5UQl9JRFRcbmRyaXZlcnMvbnRiL2h3L2lkdC9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtJRFQgUENJZS1zd2l0Y2ggTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9udGIvaHcvaW50ZWwvS2NvbmZpZzoyOmNvbmZpZyBOVEJfSU5URUxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0ludGVsIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbnRiL2h3L21zY2MvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9udGIvaHcvbXNjYy9LY29uZmlnOjI6Y29uZmlnIE5UQl9TV0lUQ0hURUNcbmRyaXZlcnMvbnRiL2h3L21zY2MvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TWljcm9TZW1pIFN3aXRjaHRlYyBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIFN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzoyOmNvbmZpZyBOVEJfUElOR1BPTkdcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7TlRCIFBpbmcgUG9uZyBUZXN0IENsaWVudFwmIzM0O1xuLS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0xMC1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzoxMTpjb25maWcgTlRCX1RPT0xcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0xMi1cdHRyaXN0YXRlIFwmIzM0O05UQiBEZWJ1Z2dpbmcgVG9vbCBUZXN0IENsaWVudFwmIzM0O1xuLS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0yMS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzoyMjpjb25maWcgTlRCX1BFUkZcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0yMy1cdHRyaXN0YXRlIFwmIzM0O05UQiBSQVcgUGVyZiBNZWFzdXJpbmcgVG9vbFwmIzM0O1xuLS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0yOS1cbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzozMDpjb25maWcgTlRCX01TSV9URVNUXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMzEtXHR0cmlzdGF0ZSBcJiMzNDtOVEIgTVNJIFRlc3QgQ2xpZW50XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMDAKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOgoKKipDaGVja2luZyB0aGUgS2NvbmZpZyBmb3IgTlRCX05FVERFVioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmluZCB3aGVyZSBgTlRCX05FVERFVmAgaXMgZGVmaW5lZCwgb3IgYXQgbGVhc3QgaG93IGl0JiMzOTtzIGhhbmRsZWQsIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiBpdCYjMzk7cyBuZXR3b3JrLXJlbGF0ZWQsIGlzIHRvIGxvb2sgaW4gYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgZm9yIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHBlcnRhaW5pbmcgdG8gbmV0d29ya2luZyBoYXJkd2FyZS4gSG9wZWZ1bGx5LCBpdCYjMzk7cyBkZWZpbmVkIGFuZCBkb2N1bWVudGVkIGNsZWFybHkgdGhlcmUsIGluY2x1ZGluZyBhbnkgZGVwZW5kZW5jaWVzIG9yIGhlbHAgdGV4dC4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuIEl0JiMzOTtzIGFsbW9zdCBjZXJ0YWluIGl0JiMzOTtsbCBiZSBkZWZpbmVkIGhlcmUgb3IgaW5jbHVkZWQgZnJvbSBhbm90aGVyIEtjb25maWcgZmlsZS4gTGV0JiMzOTtzIGdvIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDM3MDpcdGNvbmZpZyBORVRfUE9MTF9DT05UUk9MTEVSXG4gMzcxOlx0XHRkZWZfYm9vbCBORVRQT0xMXG4gMzcyOlx0XG4gMzczOlx0Y29uZmlnIE5UQl9ORVRERVZcbiAzNzQ6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0XCYjMzQ7XG4gMzc1Olx0XHRkZXBlbmRzIG9uIE5UQl9UUkFOU1BPUlRcbiAzNzY6XHRcbiAzNzc6XHRjb25maWcgUklPTkVUXG4gMzc4Olx0XHR0cmlzdGF0ZSBcJiMzNDtSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XCYjMzQ7XG4gMzc5Olx0XHRkZXBlbmRzIG9uIFJBUElESU9cbiAzODA6XHRcbiAzODE6XHRjb25maWcgUklPTkVUX1RYX1NJWkVcbiAzODI6XHRcdGludCBcJiMzNDtOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuIDM4MzpcdFx0ZGVwZW5kcyBvbiBSSU9ORVRcbiAzODQ6XHRcdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4gMzg1Olx0XG4gMzg2Olx0Y29uZmlnIFJJT05FVF9SWF9TSVpFXG4gMzg3Olx0XHRpbnQgXCYjMzQ7TnVtYmVyIG9mIGluYm91bmQgcXVldWUgZW50cmllc1wmIzM0O1xuIDM4ODpcdFx0ZGVwZW5kcyBvbiBSSU9ORVRcbiAzODk6XHRcdGRlZmF1bHQgXCYjMzQ7MTI4XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg0NzUKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA5NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIE5UQiBIYXJkd2FyZSBhbmQgVmlydHVhbGl6YXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgTlRCIGhhcmR3YXJlIGFuZCBjbGllbnRzIGludGVyYWN0LiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIGNhbiBJIGluc3RhbnRpYXRlIGFuIE5UQiBkZXZpY2Ugd2l0aG91dCBwaHlzaWNhbGx5IGhhdmluZyB0aGUgaGFyZHdhcmU/IEkgcmVtZW1iZXIgdGhlcmUgYmVpbmcgc29tZSBvcHRpb25zIGZvciB2aXJ0dWFsIE5UQiBkZXZpY2VzLiBMZXQgbWUgc3RhcnQgYnkgZGlnZ2luZyBpbnRvIHRoZSBrZXJuZWwgc291cmNlIGNvZGUuIEkmIzM5O2xsIGZvY3VzIG9uIHBvdGVudGlhbCBhcmVhczogYGRyaXZlcnMvbnRiL2h3L2VwZi9gLCBgZHJpdmVycy9wY2kvZW5kcG9pbnQvYCwgYW5kLCBhcyBJIHJlY2FsbCwgdmlydHVhbCBOVEIgZGV2aWNlIGRyaXZlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHdvcmtzLiBBaCwgd2FpdCBhIG1pbnV0ZSEgQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhlIHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzLCBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGhpZ2hlci1sZXZlbCB2aWV3IGFuZCBjaGVjayB0aGUgYEtjb25maWdgIGZpbGUgYW5kIHRoZSBzb3VyY2UgZmlsZXMgd2l0aGluIGBkcml2ZXJzL250Yi9ody9lcGYvYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvYnZpb3VzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBvciBhcmNoaXRlY3R1cmFsIG92ZXJ2aWV3cy4gVGhhdCBzZWVtcyBsaWtlIGEgc21hcnRlciwgbW9yZSBlZmZpY2llbnQgYXBwcm9hY2ggdG8gdW5kZXJzdGFuZGluZyB0aGUgZGVzaWduLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL2h3L2VwZi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0Y29uZmlnIE5UQl9FUEZcbiAgIDI6XHRcdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgRVBGIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ugc3VwcG9ydFwmIzM0O1xuICAgMzpcdFx0aGVscFxuICAgNDpcdFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBFUEYgTlRCIG9uIGNvbmZpZ3VyYWJsZSBlbmRwb2ludC5cbiAgIDU6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTU6NTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODg4OAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIEVQRiBNYWtlZmlsZSoqCgpPa2F5LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGJ1aWxkIHByb2Nlc3MgZm9yIHRoZSBFUEYgaGFyZHdhcmUgc3VwcG9ydCB3aXRoaW4gdGhlIE5UQiBkcml2ZXIuIExldCYjMzk7cyBzdGFydCB3aXRoIGBkcml2ZXJzL250Yi9ody9lcGYvTWFrZWZpbGVgLiBUaGlzIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIEVQRiBzcGVjaWZpYyBkcml2ZXJzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkIGludG8gdGhlIGxhcmdlciBOVEIgZnJhbWV3b3JrLiBJJiMzOTtsbCBuZWVkIHRvIHNlZSBob3cgaXQgaGFuZGxlcyB0aGluZ3MgbGlrZSBzb3VyY2UgZmlsZSBpbmNsdXNpb24sIGFueSBzcGVjaWZpYyBmbGFncyBpdCB1c2VzIGZvciB0aGUgRVBGIGhhcmR3YXJlLCBhbmQgaWYgdGhlcmUgYXJlIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbnMgYmFzZWQgb24gcGxhdGZvcm0gb3IgY29uZmlndXJhdGlvbi4gQXJlIHRoZXJlIGFueSBzcGVjaWFsIGJ1aWxkIHRhcmdldHMgZGVmaW5lZCBoZXJlIHNwZWNpZmljYWxseSBmb3IgdGhlIEVQRj8gV2hhdCYjMzk7cyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhpcyBNYWtlZmlsZSBhbmQgdGhlIG92ZXJhbGwgTlRCIGRyaXZlciYjMzk7cyBidWlsZCBzeXN0ZW0/IEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJldmlldyBpdCBhbmQgdGhlbiBwcm9iYWJseSBpbnNwZWN0IHRoZSBpbmNsdWRlZCBzb3VyY2UgZmlsZXMgbmV4dCB0byBnZXQgdGhlIGNvbXBsZXRlIHBpY3R1cmUuIEhvcGVmdWxseSwgdGhpcyBNYWtlZmlsZSBpcyB3ZWxsLWNvbW1lbnRlZCBhbmQgb3JnYW5pemVkLi4uIGxldCYjMzk7cyBzZWUhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL2h3L2VwZiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O250Yl9od19lcGYuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogbnVsbAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNzEKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGBudGJfaHdfZXBmLmNgKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIGBudGJfaHdfZXBmLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyBnZWFyZWQgdG93YXJkIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUgd2l0aGluIHRoZSBicm9hZGVyIE5UQiAoTmV0d29yayBUcmFuc3BvcnQgQnJpZGdlKSBoYXJkd2FyZSBlbnZpcm9ubWVudC4gR2l2ZW4gdGhlIGZpbGUgbmFtZSwgSSYjMzk7bSBpbW1lZGlhdGVseSBleHBlY3RpbmcgdG8gc2VlIGxvdy1sZXZlbCBoYXJkd2FyZSBpbnRlcmFjdGlvbiBzcGVjaWZpYyB0byB0aGUgRVBGIChFbmhhbmNlZCBQYWNrZXQgRmlsdGVyaW5nLCBvciB3aGF0ZXZlciB0aGUgc3BlY2lmaWMgdmVuZG9yIGNhbGxzIHRoZWlyIGhhcmR3YXJlJiMzOTtzIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzKS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl04oCZcyBoYW5kbGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCBvZiBwYWNrZXQgZmlsdGVyaW5nIGxvZ2ljLiBJcyBpdCBzZXR0aW5nIHVwIGZpbHRlciBydWxlcywgbWFuYWdpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIGRpcmVjdGx5LCBvciBpbnRlcmFjdGluZyB3aXRoIHNvbWUgYWJzdHJhY3Rpb24gbGF5ZXI/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscyB0byB1bmRlcnN0YW5kIHRoZSBmbG93LiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBvbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIGludGVycnVwdCBtYW5hZ2VtZW50IGFuZCBlcnJvciBjb25kaXRpb25zLiBJIGFsc28gbmVlZCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IERNQSBjb25maWd1cmF0aW9uLCBlc3BlY2lhbGx5IGlmIGl0IGludGVyYWN0cyB3aXRoIHRoZSBwYWNrZXQgZmlsdGVyaW5nIGVuZ2luZS4gSSYjMzk7bSBhbHNvIGN1cmlvdXMgdG8gc2VlIGlmIGFueSBvZmZsb2FkIGNhcGFiaWxpdGllcyBhcmUgYmVpbmcgZXhwbG9pdGVkLCBvciBpZiBpdCBpcyBhIGZhaXJseSBiYXNpYyBpbXBsZW1lbnRhdGlvbi4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBpZiB0aGlzIGZvbGxvd3MgbXkgZXhwZWN0YXRpb25zIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfcGNpX2RyaXZlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyfHBjaV9lbmRwb2ludCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jPTEzNTE9c3RhdGljIGludCBfX2luaXQgYW1kX250Yl9wY2lfZHJpdmVyX2luaXQodm9pZClcbi0tXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEzNTgtXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jOjEzNTk6XHRyZXQgPSBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmFtZF9udGJfcGNpX2RyaXZlcik7XG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEzNjAtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM9ODYzPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciBudGJfZXBmX3BjaV9kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYy04NjgtfTtcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM6ODY5Om1vZHVsZV9wY2lfZHJpdmVyKG50Yl9lcGZfcGNpX2RyaXZlcik7XG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jLTg3MC1cbi0tXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jPTI4ODY9c3RhdGljIGludCBfX2luaXQgaWR0X3BjaV9kcml2ZXJfaW5pdCh2b2lkKVxuLS1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjg5NS1cdC8qIFJlZ2lzdGVyIHRoZSBOVEIgaGFyZHdhcmUgZHJpdmVyIHRvIGhhbmRsZSB0aGUgUENJIGRldmljZSAqL1xuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYzoyODk2Olx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZpZHRfcGNpX2RyaXZlcik7XG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jLTI4OTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmM9MjA2OT1zdGF0aWMgaW50IF9faW5pdCBpbnRlbF9udGJfcGNpX2RyaXZlcl9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYy0yMDc2LVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYzoyMDc3Olx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcdTAwMjZpbnRlbF9udGJfcGNpX2RyaXZlcik7XG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTIwNzgtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDA4MgoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgd2VudCBkb3duOgoKKipOVEIgRHJpdmVyIEludmVzdGlnYXRpb24qKgoKT2theSwgZmlyc3QgdGhvdWdodDogYWxsIHRoZSBkcml2ZXJzIEkmIzM5O20gc2VlaW5nIHVuZGVyIGBkcml2ZXJzL250Yi9ody9gIHNlZW0gdG8gYmUgb3BlcmF0aW5nIG9uIFBDSSBkZXZpY2VzLiBUaGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYnV0IEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgTmV0d29yayBUcmFuc3BvcnQgQmxvY2sgKE5UQikgZHJpdmVycyBsdXJraW5nIGFyb3VuZCBpbiB0aGUga2VybmVsLCBvciBwZXJoYXBzIGFueSBjb2RlIHRoYXQgKmNyZWF0ZXMqIE5UQiBkZXZpY2VzIGluIGEgZGlmZmVyZW50IHdheT8gSSBjYW4mIzM5O3QgYXNzdW1lIHRoYXQmIzM5O3MgdGhlICpvbmx5KiB3YXkgdGhlIE5UQiBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQuCgpTbywgbGV0JiMzOTtzIGRyaWxsIGRvd24gYSBiaXQgZGVlcGVyLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayBgZHJpdmVycy9udGIvY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBJIHNob3VsZCBsb29rIGF0IGhvdyB0aGVzZSBOVEIgZGV2aWNlcyBhcmUgYmVpbmcgcmVnaXN0ZXJlZC4gVGhlIGBudGJfcmVnaXN0ZXJfZGV2aWNlYCBmdW5jdGlvbiBpcyB0aGUga2V5IGhlcmUuIFRoYXQgc2hvdWxkIHNob3cgbWUgdGhlIGNlbnRyYWwgcmVnaXN0cmF0aW9uIHBvaW50IGFuZCBnaXZlIG1lIGNvbnRleHQgYXMgdG8gd2hlcmUgYW5kIGhvdyB0aGVzZSBkZXZpY2VzIGFyZSBleHBvc2VkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGJfcmVnaXN0ZXJfZGV2aWNlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9udGIvY29yZS5jPTk5PUVYUE9SVF9TWU1CT0wobnRiX3VucmVnaXN0ZXJfY2xpZW50KTtcbmRyaXZlcnMvbnRiL2NvcmUuYy0xMDAtXG5kcml2ZXJzL250Yi9jb3JlLmM6MTAxOmludCBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpXG5kcml2ZXJzL250Yi9jb3JlLmMtMTAyLXtcbi0tXG5kcml2ZXJzL250Yi9jb3JlLmMtMTMwLX1cbmRyaXZlcnMvbnRiL2NvcmUuYzoxMzE6RVhQT1JUX1NZTUJPTChudGJfcmVnaXN0ZXJfZGV2aWNlKTtcbmRyaXZlcnMvbnRiL2NvcmUuYy0xMzItXG4tLVxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYz0xMjIyPXN0YXRpYyBpbnQgYW1kX250Yl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYy0xMjU0LVxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYzoxMjU1Olx0cmMgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmMtMTI1Ni1cdGlmIChyYylcbi0tXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jPTc1Mz1zdGF0aWMgaW50IG50Yl9lcGZfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNzg3LVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYzo3ODg6XHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNzg5LVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM9MjI3NT1zdGF0aWMgaW50IGlkdF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGlkdF9udGJfZGV2ICpuZGV2KVxuLS1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjI4Mi1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM6MjI4MzpcdHJldCA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2bmRldi1cdTAwM2VudGIpO1xuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYy0yMjg0LVx0aWYgKHJldCAhPSAwKSB7XG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz0xODQ0PXN0YXRpYyBpbnQgaW50ZWxfbnRiX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTE4OTYtXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjE4OTc6XHRyYyA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2bmRldi1cdTAwM2VudGIpO1xuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYy0xODk4LVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jPTE0ODE9c3RhdGljIGludCBzd2l0Y2h0ZWNfbnRiX2FkZChzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtMTUyOC1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jOjE1Mjk6XHRyYyA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXHUwMDI2c25kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTE1MzAtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jPTE2Nzc9c3RhdGljIGludCBwY2lfdm50Yl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjkyLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE2OTM6XHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjk0LVx0aWYgKHJldCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTQyNwoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkRpdmluZyBpbnRvIHRoZSBQQ0kgRW5kcG9pbnQgRnVuY3Rpb24gSW1wbGVtZW50YXRpb24qKgoKT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0JiMzOTtzIHRoaXM/IE15IGV5ZSBqdXN0IGxhbmRlZCBvbiBgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jYC4gUmlnaHQsIHJpZ2h0LCBhIFZOVEIhIFRoaXMgZmVlbHMgcmVsZXZhbnQgdG8gdGhlIGJpZ2dlciBwaWN0dXJlLgoKSSBuZWVkIHRvIHF1aWNrbHkgcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyBQQ0kgZW5kcG9pbnQgZnVuY3Rpb25zIGFjdHVhbGx5IHdvcmsgd2l0aGluIHRoaXMgY29udGV4dC4gU28sIHRpbWUgdG8gZmlyZSB1cCBhIHNlYXJjaC4gSSYjMzk7bGwgc3RhcnQgYnkgbG9va2luZyBmb3IgdGhhdCBzcGVjaWZpYyBmaWxlIG5hbWUsIGBwY2ktZXBmLXZudGIuY2AsIHRvIHNlZSB3aGF0IGp1bXBzIG91dCBhbmQgdGhlbiBicm9hZGVuIHRoZSBzZWFyY2ggdG8gZW5jb21wYXNzIHRoZSBtb3JlIGdlbmVyYWwgZnVuY3Rpb25hbGl0eSBhbmQgYXJjaGl0ZWN0dXJlIG9mIFBDSSBlbmRwb2ludCBmdW5jdGlvbiBvcGVyYXRpb24uIEdvdHRhIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kIGhlcmUgYW5kIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIFZOVEIgaW1wbGVtZW50YXRpb24gZml0cyBpbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYW5kIGNvbm5lY3Rpb25zIHRoaXMgcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2lfdm50YiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNjUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgdm50Yl9lcGZfb3BzID0ge1xuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjc2LVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE2Nzc6c3RhdGljIGludCBwY2lfdm50Yl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE2Nzgte1xuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzAyLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE3MDM6c3RhdGljIHN0cnVjdCBwY2lfZGV2aWNlX2lkIHBjaV92bnRiX3RhYmxlW10gPSB7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTcwNC1cdHtcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM9MTcxMD1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgdm50Yl9wY2lfZHJpdmVyID0ge1xuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE3MTEtXHQubmFtZSAgICAgICAgICAgPSBcJiMzNDtwY2ktdm50YlwmIzM0OyxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYzoxNzEyOlx0LmlkX3RhYmxlICAgICAgID0gcGNpX3ZudGJfdGFibGUsXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTcxMzpcdC5wcm9iZSAgICAgICAgICA9IHBjaV92bnRiX3Byb2JlLFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE3MTQtfTtcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM9MTcyOT1zdGF0aWMgaW50IGVwZl9udGJfYmluZChzdHJ1Y3QgcGNpX2VwZiAqZXBmKVxuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzYwLVx0cGNpX3NwYWNlWzBdID0gKG50Yi1cdTAwM2V2bnRiX3BpZCBcdTAwM2NcdTAwM2MgMTYpIHwgbnRiLVx1MDAzZXZudGJfdmlkO1xuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE3NjE6XHRwY2lfdm50Yl90YWJsZVswXS52ZW5kb3IgPSBudGItXHUwMDNldm50Yl92aWQ7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTc2MjpcdHBjaV92bnRiX3RhYmxlWzBdLmRldmljZSA9IG50Yi1cdTAwM2V2bnRiX3BpZDtcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzYzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjM5NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlRyYWNpbmcgdGhlIEdlbmVzaXMgb2YgYG50Yl9uZXRkZXZgKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQhIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgYG50Yl9uZXRkZXZgIG5ldHdvcmsgZGV2aWNlIGNvbWVzIGludG8gYmVpbmcuIFRpbWUgdG8gZGlnIGluIGFuZCBmb2xsb3cgdGhlIGJyZWFkY3J1bWJzIGZyb20gdGhlIHZlcnkgYmVnaW5uaW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIGBkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNgIGFuZCB0cmFjZSB0aGUgZW50aXJlIGxpZmVjeWNsZSwgZnJvbSB0aGUgZHJpdmVyJiMzOTtzIHByb2JlIGZ1bmN0aW9uIGFsbCB0aGUgd2F5IHRocm91Z2ggdGhlIHJlY2VpdmUgYW5kIHRyYW5zbWl0IHBhdGhzLiBJJiMzOTtsbCBuZWVkIHRvIG1ldGljdWxvdXNseSByZWFkIHRocm91Z2ggdGhlIHNvdXJjZSBjb2RlIG9mIGBudGJfbmV0ZGV2LmNgIGl0c2VsZi4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIGZvdW5kYXRpb24gSSBuZWVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L250Yl9uZXRkZXYuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdC8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgT1IgQlNELTMtQ2xhdXNlXG4gICAyOlx0LypcbiAgIDM6XHQgKiBQQ0llIE5UQiBOZXR3b3JrIExpbnV4IGRyaXZlclxuICAgNDpcdCAqL1xuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbiAgIDY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGh0b29sLmhcdTAwM2VcbiAgIDc6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuICAgODpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L3BjaS5oXHUwMDNlXG4gICA5Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvbnRiLmhcdTAwM2VcbiAgMTA6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9udGJfdHJhbnNwb3J0LmhcdTAwM2VcbiAgMTE6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zbGFiLmhcdTAwM2VcbiAgMTI6XHRcbiAgMTM6XHQjZGVmaW5lIE5UQl9ORVRERVZfVkVSXHRcJiMzNDswLjdcJiMzNDtcbiAgMTQ6XHRcbiAgMTU6XHRNT0RVTEVfREVTQ1JJUFRJT04oS0JVSUxEX01PRE5BTUUpO1xuICAxNjpcdE1PRFVMRV9WRVJTSU9OKE5UQl9ORVRERVZfVkVSKTtcbiAgMTc6XHRNT0RVTEVfTElDRU5TRShcJiMzNDtEdWFsIEJTRC9HUExcJiMzNDspO1xuICAxODpcdE1PRFVMRV9BVVRIT1IoXCYjMzQ7SW50ZWwgQ29ycG9yYXRpb25cJiMzNDspO1xuICAxOTpcdFxuICAyMDpcdC8qIFRpbWUgaW4gdXNlY3MgZm9yIHR4IHJlc291cmNlIHJlYXBlciAqL1xuICAyMTpcdHN0YXRpYyB1bnNpZ25lZCBpbnQgdHhfdGltZSA9IDE7XG4gIDIyOlx0XG4gIDIzOlx0LyogTnVtYmVyIG9mIGRlc2NyaXB0b3JzIHRvIGZyZWUgYmVmb3JlIHJlc3VtaW5nIHR4ICovXG4gIDI0Olx0c3RhdGljIHVuc2lnbmVkIGludCB0eF9zdGFydCA9IDEwO1xuICAyNTpcdFxuICAyNjpcdC8qIE51bWJlciBvZiBkZXNjcmlwdG9ycyBzdGlsbCBhdmFpbGFibGUgYmVmb3JlIHN0b3AgdXBwZXIgbGF5ZXIgdHggKi9cbiAgMjc6XHRzdGF0aWMgdW5zaWduZWQgaW50IHR4X3N0b3AgPSA1O1xuICAyODpcdFxuICAyOTpcdCNkZWZpbmUgTlRCX05FVERFVl9NQVhfUVVFVUVTXHRcdDY0XG4gIDMwOlx0I2RlZmluZSBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTXHQxXG4gIDMxOlx0XG4gIDMyOlx0c3RydWN0IG50Yl9uZXRkZXY7XG4gIDMzOlx0XG4gIDM0Olx0c3RydWN0IG50Yl9uZXRkZXZfcXVldWUge1xuICAzNTpcdFx0c3RydWN0IG50Yl9uZXRkZXYgKm50ZGV2O1xuICAzNjpcdFx0c3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwO1xuICAzNzpcdFx0c3RydWN0IHRpbWVyX2xpc3QgdHhfdGltZXI7XG4gIDM4Olx0XHR1MTYgcWlkO1xuICAzOTpcdH07XG4gIDQwOlx0XG4gIDQxOlx0c3RydWN0IG50Yl9uZXRkZXYge1xuICA0MjpcdFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XG4gIDQzOlx0XHRzdHJ1Y3QgZGV2aWNlICpjbGllbnRfZGV2O1xuICA0NDpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XG4gIDQ1Olx0XHR1bnNpZ25lZCBpbnQgbnVtX3F1ZXVlcztcbiAgNDY6XHRcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZXM7XG4gIDQ3Olx0fTtcbiAgNDg6XHRcbiAgNDk6XHQjZGVmaW5lXHROVEJfVFhfVElNRU9VVF9NU1x0MTAwMFxuICA1MDpcdCNkZWZpbmVcdE5UQl9SWFFfU0laRVx0XHQxMDBcbiAgNTE6XHRcbiAgNTI6XHRzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3VwZGF0ZV9jYXJyaWVyKHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYpXG4gIDUzOlx0e1xuICA1NDpcdFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XG4gIDU1Olx0XHRib29sIGFueV91cCA9IGZhbHNlO1xuICA1NjpcdFx0dW5zaWduZWQgaW50IGk7XG4gIDU3Olx0XG4gIDU4Olx0XHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG4gIDU5Olx0XG4gIDYwOlx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlbnVtX3F1ZXVlczsgaSYjNDM7JiM0MzspIHtcbiAgNjE6XHRcdFx0aWYgKG50Yl90cmFuc3BvcnRfbGlua19xdWVyeShkZXYtXHUwMDNlcXVldWVzW2ldLnFwKSkge1xuICA2MjpcdFx0XHRcdGFueV91cCA9IHRydWU7XG4gIDYzOlx0XHRcdFx0YnJlYWs7XG4gIDY0Olx0XHRcdH1cbiAgNjU6XHRcdH1cbiAgNjY6XHRcbiAgNjc6XHRcdGlmIChhbnlfdXApXG4gIDY4Olx0XHRcdG5ldGlmX2NhcnJpZXJfb24obmRldik7XG4gIDY5Olx0XHRlbHNlXG4gIDcwOlx0XHRcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xuICA3MTpcdH1cbiAgNzI6XHRcbiAgNzM6XHRzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3F1ZXVlX3J4X2RyYWluKHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZSlcbiAgNzQ6XHR7XG4gIDc1Olx0XHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuICA3NjpcdFx0aW50IGxlbjtcbiAgNzc6XHRcbiAgNzg6XHRcdHdoaWxlICgoc2tiID0gbnRiX3RyYW5zcG9ydF9yeF9yZW1vdmUocXVldWUtXHUwMDNlcXAsIFx1MDAyNmxlbikpKVxuICA3OTpcdFx0XHRkZXZfa2ZyZWVfc2tiKHNrYik7XG4gIDgwOlx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzY4NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHByb2Nlc3MsIGJhc2VkIG9uIHRoZSBwcm92aWRlZCB0ZXh0OgoKKipEaXZpbmcgaW50byB0aGUgTlRCIE5ldHdvcmsgRGV2aWNlIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gaG93IHRoaXMgYG50Yl9uZXRkZXYuY2AgZmlsZSBpbml0aWFsaXplcyBhbmQgcHJvYmVzLCBzcGVjaWZpY2FsbHkgZnJvbSBsaW5lcyA2MDAgdG8gNzY1LiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBhY3Rpb24gc2hvdWxkIGJlLiBJJiMzOTttIGdvaW5nIHRvIGNhcmVmdWxseSBkaXNzZWN0IHRoaXMgc2VjdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNpbmcgb2YgY2FsbHMsIGFueSBjb25kaXRpb25hbCBsb2dpYywgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIE5UQiBoYXJkd2FyZS4gSSYjMzk7bSBob3BpbmcgdG8gc2VlIGhvdyB0aGUgZGV2aWNlIGlzIHJlZ2lzdGVyZWQsIGhvdyBpdHMgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGFuZCBob3cgaXQmIzM5O3MgYnJvdWdodCBvbmxpbmUuIEZyb20gd2hhdCBJIHJlY2FsbCBvZiBwcmV2aW91cyBleHBlcmllbmNlcyB3aXRoIHNpbWlsYXIgZHJpdmVycywgdGhlcmUmIzM5O3MgbGlrZWx5IGFuIGltcG9ydGFudCBkYW5jZSBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAgYW5kIGRldmljZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGdvaW5nIG9uIGhlcmUuIEkgZXhwZWN0IHRoZXJlIHdpbGwgYmUgY2hlY2tzIGZvciBoYXJkd2FyZSBwcmVzZW5jZSwgcGVyaGFwcyBzb21lIHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMsIGFuZCBkZWZpbml0ZWx5IHNvbWUgY3J1Y2lhbCBsaW5raW5nIG9mIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZXMgdG8gdGhlIHVuZGVybHlpbmcgTlRCIGZ1bmN0aW9uYWxpdHkuIE15IGdvYWwgaXMgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcgbGlmZWN5Y2xlIHdpdGhpbiB0aGF0IHNwZWNpZmljIHJhbmdlLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIGVycm9yIGhhbmRsaW5nLCBhbmQgdGhlIG92ZXJhbGwgZHJpdmVyIGZsb3cuIEkmIzM5O20gcGFydGljdWxhcmx5IGludGVyZXN0ZWQgaW4gc2VlaW5nIGhvdyB0aGUgZHJpdmVyIGRlYWxzIHdpdGggcG90ZW50aWFsIGVycm9ycyBhbmQgZmFpbHVyZSBzY2VuYXJpb3MuIEkgYW50aWNpcGF0ZSBzb21lIGRlYnVnZ2luZyBtYWNyb3MgYW5kIGNoZWNrcyB0byBtYWtlIHRoaXMgaW5pdGlhbGlzYXRpb24gcm9idXN0IGFuZCBzdGFibGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbnRiX25ldGRldi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjMwOlx0XHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxuIDYzMTpcdFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IG50Yl9nZXRfbGlua19rc2V0dGluZ3MsXG4gNjMyOlx0XHQuZ2V0X2NoYW5uZWxzID0gbnRiX2dldF9jaGFubmVscyxcbiA2MzM6XHRcdC5zZXRfY2hhbm5lbHMgPSBudGJfc2V0X2NoYW5uZWxzLFxuIDYzNDpcdH07XG4gNjM1Olx0XG4gNjM2Olx0c3RhdGljIGludCBudGJfbmV0ZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmNsaWVudF9kZXYpXG4gNjM3Olx0e1xuIDYzODpcdFx0c3RydWN0IG50Yl9kZXYgKm50YjtcbiA2Mzk6XHRcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuIDY0MDpcdFx0c3RydWN0IHBjaV9kZXYgKnBkZXY7XG4gNjQxOlx0XHRzdHJ1Y3QgbnRiX25ldGRldiAqZGV2O1xuIDY0MjpcdFx0dW5zaWduZWQgaW50IHE7XG4gNjQzOlx0XHRpbnQgcmM7XG4gNjQ0Olx0XG4gNjQ1Olx0XHRudGIgPSBkZXZfbnRiKGNsaWVudF9kZXYtXHUwMDNlcGFyZW50KTtcbiA2NDY6XHRcdHBkZXYgPSBudGItXHUwMDNlcGRldjtcbiA2NDc6XHRcdGlmICghcGRldilcbiA2NDg6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gNjQ5Olx0XG4gNjUwOlx0XHRuZGV2ID0gYWxsb2NfZXRoZXJkZXZfbXEoc2l6ZW9mKCpkZXYpLCBOVEJfTkVUREVWX01BWF9RVUVVRVMpO1xuIDY1MTpcdFx0aWYgKCFuZGV2KVxuIDY1MjpcdFx0XHRyZXR1cm4gLUVOT01FTTtcbiA2NTM6XHRcbiA2NTQ6XHRcdFNFVF9ORVRERVZfREVWKG5kZXYsIGNsaWVudF9kZXYpO1xuIDY1NTpcdFxuIDY1NjpcdFx0ZGV2ID0gbmV0ZGV2X3ByaXYobmRldik7XG4gNjU3Olx0XHRkZXYtXHUwMDNlbmRldiA9IG5kZXY7XG4gNjU4Olx0XHRkZXYtXHUwMDNlcGRldiA9IHBkZXY7XG4gNjU5Olx0XHRkZXYtXHUwMDNlY2xpZW50X2RldiA9IGNsaWVudF9kZXY7XG4gNjYwOlx0XHRkZXYtXHUwMDNlbnVtX3F1ZXVlcyA9IDA7XG4gNjYxOlx0XG4gNjYyOlx0XHRkZXYtXHUwMDNlcXVldWVzID0ga3phbGxvY19vYmpzKCpkZXYtXHUwMDNlcXVldWVzLCBOVEJfTkVUREVWX01BWF9RVUVVRVMsXG4gNjYzOlx0XHRcdFx0XHQgICBHRlBfS0VSTkVMKTtcbiA2NjQ6XHRcdGlmICghZGV2LVx1MDAzZXF1ZXVlcykge1xuIDY2NTpcdFx0XHRyYyA9IC1FTk9NRU07XG4gNjY2Olx0XHRcdGdvdG8gZXJyX2ZyZWVfbmV0ZGV2O1xuIDY2NzpcdFx0fVxuIDY2ODpcdFxuIDY2OTpcdFx0bmRldi1cdTAwM2VmZWF0dXJlcyA9IE5FVElGX0ZfSElHSERNQTtcbiA2NzA6XHRcdG5kZXYtXHUwMDNlcGNwdV9zdGF0X3R5cGUgPSBORVRERVZfUENQVV9TVEFUX1RTVEFUUztcbiA2NzE6XHRcbiA2NzI6XHRcdG5kZXYtXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcbiA2NzM6XHRcbiA2NzQ6XHRcdG5kZXYtXHUwMDNlaHdfZmVhdHVyZXMgPSBuZGV2LVx1MDAzZWZlYXR1cmVzO1xuIDY3NTpcdFx0bmRldi1cdTAwM2V3YXRjaGRvZ190aW1lbyA9IG1zZWNzX3RvX2ppZmZpZXMoTlRCX1RYX1RJTUVPVVRfTVMpO1xuIDY3NjpcdFxuIDY3NzpcdFx0ZXRoX3JhbmRvbV9hZGRyKG5kZXYtXHUwMDNlcGVybV9hZGRyKTtcbiA2Nzg6XHRcdGRldl9hZGRyX3NldChuZGV2LCBuZGV2LVx1MDAzZXBlcm1fYWRkcik7XG4gNjc5Olx0XG4gNjgwOlx0XHRuZGV2LVx1MDAzZW5ldGRldl9vcHMgPSBcdTAwMjZudGJfbmV0ZGV2X29wcztcbiA2ODE6XHRcdG5kZXYtXHUwMDNlZXRodG9vbF9vcHMgPSBcdTAwMjZudGJfZXRodG9vbF9vcHM7XG4gNjgyOlx0XG4gNjgzOlx0XHRuZGV2LVx1MDAzZW1pbl9tdHUgPSAwO1xuIDY4NDpcdFx0bmRldi1cdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XG4gNjg1Olx0XG4gNjg2Olx0XHRmb3IgKHEgPSAwOyBxIFx1MDAzYyBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTOyBxJiM0MzsmIzQzOykge1xuIDY4NzpcdFx0XHRzdHJ1Y3QgbnRiX25ldGRldl9xdWV1ZSAqcXVldWUgPSBcdTAwMjZkZXYtXHUwMDNlcXVldWVzW3FdO1xuIDY4ODpcdFxuIDY4OTpcdFx0XHRxdWV1ZS1cdTAwM2VudGRldiA9IGRldjtcbiA2OTA6XHRcdFx0cXVldWUtXHUwMDNlcWlkID0gcTtcbiA2OTE6XHRcdFx0cXVldWUtXHUwMDNlcXAgPSBudGJfdHJhbnNwb3J0X2NyZWF0ZV9xdWV1ZShxdWV1ZSwgY2xpZW50X2RldixcbiA2OTI6XHRcdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2bnRiX25ldGRldl9oYW5kbGVycyk7XG4gNjkzOlx0XHRcdGlmICghcXVldWUtXHUwMDNlcXApXG4gNjk0Olx0XHRcdFx0YnJlYWs7XG4gNjk1Olx0XG4gNjk2Olx0XHRcdGRldi1cdTAwM2VudW1fcXVldWVzJiM0MzsmIzQzOztcbiA2OTc6XHRcdH1cbiA2OTg6XHRcbiA2OTk6XHRcdGlmICghZGV2LVx1MDAzZW51bV9xdWV1ZXMpIHtcbiA3MDA6XHRcdFx0cmMgPSAtRUlPO1xuIDcwMTpcdFx0XHRnb3RvIGVycl9mcmVlX3F1ZXVlcztcbiA3MDI6XHRcdH1cbiA3MDM6XHRcbiA3MDQ6XHRcdHJjID0gbmV0aWZfc2V0X3JlYWxfbnVtX3F1ZXVlcyhuZGV2LCBkZXYtXHUwMDNlbnVtX3F1ZXVlcywgZGV2LVx1MDAzZW51bV9xdWV1ZXMpO1xuIDcwNTpcdFx0aWYgKHJjKVxuIDcwNjpcdFx0XHRnb3RvIGVycl9mcmVlX3FwcztcbiA3MDc6XHRcbiA3MDg6XHRcdG5kZXYtXHUwMDNlbXR1ID0gbnRiX3RyYW5zcG9ydF9tYXhfc2l6ZShkZXYtXHUwMDNlcXVldWVzWzBdLnFwKSAtIEVUSF9ITEVOO1xuIDcwOTpcdFxuIDcxMDpcdFx0cmMgPSByZWdpc3Rlcl9uZXRkZXYobmRldik7XG4gNzExOlx0XHRpZiAocmMpXG4gNzEyOlx0XHRcdGdvdG8gZXJyX2ZyZWVfcXBzO1xuIDcxMzpcdFxuIDcxNDpcdFx0ZGV2X3NldF9kcnZkYXRhKGNsaWVudF9kZXYsIG5kZXYpO1xuIDcxNTpcdFx0ZGV2X2luZm8oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwmIzM0OyVzIGNyZWF0ZWQgd2l0aCAldSBxdWV1ZSBwYWlyc1xcblwmIzM0OyxcbiA3MTY6XHRcdFx0IG5kZXYtXHUwMDNlbmFtZSwgZGV2LVx1MDAzZW51bV9xdWV1ZXMpO1xuIDcxNzpcdFx0cmV0dXJuIDA7XG4gNzE4Olx0XG4gNzE5Olx0ZXJyX2ZyZWVfcXBzOlxuIDcyMDpcdFx0Zm9yIChxID0gMDsgcSBcdTAwM2MgZGV2LVx1MDAzZW51bV9xdWV1ZXM7IHEmIzQzOyYjNDM7KVxuIDcyMTpcdFx0XHRudGJfdHJhbnNwb3J0X2ZyZWVfcXVldWUoZGV2LVx1MDAzZXF1ZXVlc1txXS5xcCk7XG4gNzIyOlx0XG4gNzIzOlx0ZXJyX2ZyZWVfcXVldWVzOlxuIDcyNDpcdFx0a2ZyZWUoZGV2LVx1MDAzZXF1ZXVlcyk7XG4gNzI1Olx0XG4gNzI2Olx0ZXJyX2ZyZWVfbmV0ZGV2OlxuIDcyNzpcdFx0ZnJlZV9uZXRkZXYobmRldik7XG4gNzI4Olx0XHRyZXR1cm4gcmM7XG4gNzI5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTU4MwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBDcmVhdGlvbiBvZiBgY2xpZW50X2RldmAgd2l0aGluIGBudGJfdHJhbnNwb3J0YCoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZ2VuZXNpcyBvZiB0aGUgYGNsaWVudF9kZXZgIHN0cnVjdHVyZSB3aXRoaW4gdGhlIGBudGJfdHJhbnNwb3J0YCBtb2R1bGUuIFdoZXJlIGlzIHRoaXMgdGhpbmcgYmVpbmcgaW5zdGFudGlhdGVkPyBUaGUgbG9naWNhbCBmaXJzdCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byB0aGUgc291cmNlIGNvZGUsIHNwZWNpZmljYWxseSBgbnRiX3RyYW5zcG9ydC5jYC4gSSYjMzk7bSBjb25maWRlbnQgdGhlIGFuc3dlciBsaWVzIHdpdGhpbiB0aGF0IGZpbGU7IGxldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gdW5lYXJ0aC4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZGVjZW50OyBvdGhlcndpc2UsIEkmIzM5O2xsIGp1c3QgaGF2ZSB0byB0cmFjZSB0aGUgcmVsZXZhbnQgZnVuY3Rpb24gY2FsbHMgdW50aWwgSSB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gVGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE1OjU5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM9Mzk1PUVYUE9SVF9TWU1CT0xfR1BMKG50Yl90cmFuc3BvcnRfdW5yZWdpc3Rlcl9jbGllbnRfZGV2KTtcbi0tXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzk3LS8qKlxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjM5ODogKiBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYgLSBSZWdpc3RlciBOVEIgY2xpZW50IGRldmljZVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM5OS0gKiBAZGV2aWNlX25hbWU6IE5hbWUgb2YgTlRCIGNsaWVudCBkZXZpY2Vcbi0tXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDA0LSAqL1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQwNTppbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2KGNoYXIgKmRldmljZV9uYW1lKVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQwNi17XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1MS19XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDUyOkVYUE9SVF9TWU1CT0xfR1BMKG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2Rldik7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDUzLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNTo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjA3MAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gYG50Yl90cmFuc3BvcnQuY2AqKgoKT2theSwgSSBuZWVkIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcy4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgY29kZSBhcm91bmQgbGluZSA0MDUuIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBhcmVhIHByb2JhYmx5IGRlYWxzIHdpdGggc29tZXRoaW5nIGZ1bmRhbWVudGFsIHRvIHRoZSB0cmFuc3BvcnQgbGF5ZXIg4oCTIHBlcmhhcHMgbWVzc2FnZSBoYW5kbGluZywgYnVmZmVyIG1hbmFnZW1lbnQsIG9yIGludGVycnVwdCBwcm9jZXNzaW5nLiBLbm93aW5nIHRoZSBmdW5jdGlvbiBjYWxscyBhcm91bmQgdGhhdCBsaW5lIGlzIGNyaXRpY2FsLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBjbHVlcyBhYm91dCBob3cgZGF0YSBpcyBtb3ZpbmcsIGhvdyBpdCYjMzk7cyBiZWluZyBoYW5kbGVkLCBhbmQgd2hhdCBtZWNoYW5pc21zIGFyZSBlbXBsb3llZCBmb3Igc3luY2hyb25pemF0aW9uIGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGlzIHBhcnQgb2YgdGhlIE5UQiBkcml2ZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCByZWFkaW5nIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQwNSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDA1Olx0aW50IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldihjaGFyICpkZXZpY2VfbmFtZSlcbiA0MDY6XHR7XG4gNDA3Olx0XHRzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9jbGllbnRfZGV2ICpjbGllbnRfZGV2O1xuIDQwODpcdFx0c3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudDtcbiA0MDk6XHRcdGludCBub2RlO1xuIDQxMDpcdFx0aW50IHJjLCBpID0gMDtcbiA0MTE6XHRcbiA0MTI6XHRcdGlmIChsaXN0X2VtcHR5KFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCkpXG4gNDEzOlx0XHRcdHJldHVybiAtRU5PREVWO1xuIDQxNDpcdFxuIDQxNTpcdFx0bGlzdF9mb3JfZWFjaF9lbnRyeShudCwgXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0LCBlbnRyeSkge1xuIDQxNjpcdFx0XHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4gNDE3Olx0XG4gNDE4Olx0XHRcdG5vZGUgPSBkZXZfdG9fbm9kZShcdTAwMjZudC1cdTAwM2VuZGV2LVx1MDAzZWRldik7XG4gNDE5Olx0XG4gNDIwOlx0XHRcdGNsaWVudF9kZXYgPSBremFsbG9jX25vZGUoc2l6ZW9mKCpjbGllbnRfZGV2KSxcbiA0MjE6XHRcdFx0XHRcdFx0ICBHRlBfS0VSTkVMLCBub2RlKTtcbiA0MjI6XHRcdFx0aWYgKCFjbGllbnRfZGV2KSB7XG4gNDIzOlx0XHRcdFx0cmMgPSAtRU5PTUVNO1xuIDQyNDpcdFx0XHRcdGdvdG8gZXJyO1xuIDQyNTpcdFx0XHR9XG4gNDI2Olx0XG4gNDI3Olx0XHRcdGRldiA9IFx1MDAyNmNsaWVudF9kZXYtXHUwMDNlZGV2O1xuIDQyODpcdFxuIDQyOTpcdFx0XHQvKiBzZXR1cCBhbmQgcmVnaXN0ZXIgY2xpZW50IGRldmljZXMgKi9cbiA0MzA6XHRcdFx0ZGV2X3NldF9uYW1lKGRldiwgXCYjMzQ7JXMlZFwmIzM0OywgZGV2aWNlX25hbWUsIGkpO1xuIDQzMTpcdFx0XHRkZXYtXHUwMDNlYnVzID0gXHUwMDI2bnRiX3RyYW5zcG9ydF9idXM7XG4gNDMyOlx0XHRcdGRldi1cdTAwM2VyZWxlYXNlID0gbnRiX3RyYW5zcG9ydF9jbGllbnRfcmVsZWFzZTtcbiA0MzM6XHRcdFx0ZGV2LVx1MDAzZXBhcmVudCA9IFx1MDAyNm50LVx1MDAzZW5kZXYtXHUwMDNlZGV2O1xuIDQzNDpcdFxuIDQzNTpcdFx0XHRyYyA9IGRldmljZV9yZWdpc3RlcihkZXYpO1xuIDQzNjpcdFx0XHRpZiAocmMpIHtcbiA0Mzc6XHRcdFx0XHRwdXRfZGV2aWNlKGRldik7XG4gNDM4Olx0XHRcdFx0Z290byBlcnI7XG4gNDM5Olx0XHRcdH1cbiA0NDA6XHRcbiA0NDE6XHRcdFx0bGlzdF9hZGRfdGFpbChcdTAwMjZjbGllbnRfZGV2LVx1MDAzZWVudHJ5LCBcdTAwMjZudC1cdTAwM2VjbGllbnRfZGV2cyk7XG4gNDQyOlx0XHRcdGkmIzQzOyYjNDM7O1xuIDQ0MzpcdFx0fVxuIDQ0NDpcdFxuIDQ0NTpcdFx0cmV0dXJuIDA7XG4gNDQ2Olx0XG4gNDQ3Olx0ZXJyOlxuIDQ0ODpcdFx0bnRiX3RyYW5zcG9ydF91bnJlZ2lzdGVyX2NsaWVudF9kZXYoZGV2aWNlX25hbWUpO1xuIDQ0OTpcdFxuIDQ1MDpcdFx0cmV0dXJuIHJjO1xuIDQ1MTpcdH1cbiA0NTI6XHRFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYpO1xuIDQ1MzpcdFxuIDQ1NDpcdC8qKlxuIDQ1NTpcdCAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkcml2ZXJcbiA0NTY6XHQgKiBAZHJ2OiBOVEIgY2xpZW50IGRyaXZlciB0byBiZSByZWdpc3RlcmVkXG4gNDU3Olx0ICpcbiA0NTg6XHQgKiBSZWdpc3RlciBhbiBOVEIgY2xpZW50IGRyaXZlciB3aXRoIHRoZSBOVEIgdHJhbnNwb3J0IGxheWVyXG4gNDU5Olx0ICpcbiA0NjA6XHQgKiBSRVRVUk5TOiBBbiBhcHByb3ByaWF0ZSAtRVJSTk8gZXJyb3IgdmFsdWUgb24gZXJyb3IsIG9yIHplcm8gZm9yIHN1Y2Nlc3MuXG4gNDYxOlx0ICovXG4gNDYyOlx0aW50IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBudGJfdHJhbnNwb3J0X2NsaWVudCAqZHJ2KVxuIDQ2MzpcdHtcbiA0NjQ6XHRcdGRydi1cdTAwM2Vkcml2ZXIuYnVzID0gXHUwMDI2bnRiX3RyYW5zcG9ydF9idXM7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT43bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3MTQzCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgYG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldmAgRnVuY3Rpb24qKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXZgIGZ1bmN0aW9uLiBGaXJzdCBvYnNlcnZhdGlvbjogaWYgYG50Yl90cmFuc3BvcnRfbGlzdGAgaXMgZW1wdHksIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zIGAtRU5PREVWYC4gQ2xlYXJseSwgdGhpcyBsaXN0IGlzIGNydWNpYWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIG9yIGFkZGVkIHRvIGBudGJfdHJhbnNwb3J0X2xpc3RgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHdoZXJlIHRoaXMgbGlzdCBpcyBwb3B1bGF0ZWQuIExldCYjMzk7cyBydW4gYSBzZWFyY2ggZm9yIGFsbCBpbnN0YW5jZXMgb2YgYG50Yl90cmFuc3BvcnRfbGlzdGAgd2l0aGluIHRoaXMgY29kZWJhc2UuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBwb3B1bGF0aW9uIHByb2Nlc3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgc2VxdWVuY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250Yl90cmFuc3BvcnRfbGlzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM9MzM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYnVzX3R5cGUgbnRiX3RyYW5zcG9ydF9idXMgPSB7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM0NS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozNDY6c3RhdGljIExJU1RfSEVBRChudGJfdHJhbnNwb3J0X2xpc3QpO1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM0Ny1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zNDg9c3RhdGljIGludCBudGJfYnVzX2luaXQoc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudClcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zNDkte1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjM1MDpcdGxpc3RfYWRkX3RhaWwoXHUwMDI2bnQtXHUwMDNlZW50cnksIFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCk7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzUxLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTM4Mj12b2lkIG50Yl90cmFuc3BvcnRfdW5yZWdpc3Rlcl9jbGllbnRfZGV2KGNoYXIgKmRldmljZV9uYW1lKVxuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zODYtXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6Mzg3Olx0bGlzdF9mb3JfZWFjaF9lbnRyeShudCwgXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0LCBlbnRyeSlcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zODgtXHRcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjbGllbnQsIGNkLCBcdTAwMjZudC1cdTAwM2VjbGllbnRfZGV2cywgZW50cnkpXG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTQwNT1pbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2KGNoYXIgKmRldmljZV9uYW1lKVxuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTEtXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDEyOlx0aWYgKGxpc3RfZW1wdHkoXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0KSlcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTMtXHRcdHJldHVybiAtRU5PREVWO1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQxNC1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzo0MTU6XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG50LCBcdTAwMjZudGJfdHJhbnNwb3J0X2xpc3QsIGVudHJ5KSB7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDE2LVx0XHRzdHJ1Y3QgZGV2aWNlICpkZXY7XG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTQ2Mj1pbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnQoc3RydWN0IG50Yl90cmFuc3BvcnRfY2xpZW50ICpkcnYpXG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ2NS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzo0NjY6XHRpZiAobGlzdF9lbXB0eShcdTAwMjZudGJfdHJhbnNwb3J0X2xpc3QpKVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ2Ny1cdFx0cmV0dXJuIC1FTk9ERVY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDM5CgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIENhbGxlcnMgb2YgYG50Yl9idXNfaW5pdGAqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgYG50Yl90cmFuc3BvcnQuY2AgZmlsZSBhbmQgc2VlIHdoYXQmIzM5O3MgYWN0dWFsbHkgY2FsbGluZyBgbnRiX2J1c19pbml0YC4gSXQmIzM5O3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIHRoZSBpbml0aWFsaXphdGlvbiBmbG93IG9mIHRoZSBOVEIgYnVzIGZvciBwcm9wZXIgZGVidWdnaW5nIGFuZCBwb3RlbnRpYWwgYXJjaGl0ZWN0dXJhbCBlbmhhbmNlbWVudHMuIEkgbmVlZCB0byB0cmFjZSB0aGlzIGZ1bmN0aW9uIGJhY2sgdG8gaXRzIG9yaWdpbnMsIGZpZ3VyZSBvdXQgd2hpY2ggZHJpdmVyKHMpIGFyZSByZXNwb25zaWJsZSBmb3IgYnJpbmdpbmcgdXAgdGhlIE5UQiB0cmFuc3BvcnQgbGF5ZXIsIGFuZCB1bmRlcnN0YW5kIGhvdyB0aGV5JiMzOTtyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGNhbGxzIGZyb20gdGhlIFBDSSBsYXllciwgbGlrZWx5IHRocm91Z2ggYSBkZXZpY2UgcHJvYmUgZnVuY3Rpb24sIGFuZCBwb3NzaWJseSBzb21lIHBsYXRmb3JtLXNwZWNpZmljIGNvZGUgZGVwZW5kaW5nIG9uIHRoZSBOVEIgaW1wbGVtZW50YXRpb24gKGUuZy4sIGlmIGl0JiMzOTtzIGludGVncmF0ZWQgd2l0aCBhIFNvQykuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBkZXZpY2UgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbiwgYW5kIGFueSBuZWNlc3NhcnkgRE1BIHNldHVwIHRoYXQmIzM5O3MgYmVpbmcgZG9uZSBkdXJpbmcgdGhhdCBlYXJseSBpbml0aWFsaXphdGlvbiBzdGFnZS4gS25vd2luZyAqd2hvKiBpbml0aWFsaXplcyB0aGUgYnVzIGdpdmVzIHVzIHZpdGFsIGNvbnRleHQgZm9yIHRyYWNpbmcgZXJyb3JzIGFuZCB1bmRlcnN0YW5kaW5nIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0uIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gZmluZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRiX2J1c19pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9udGIvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zNDY9c3RhdGljIExJU1RfSEVBRChudGJfdHJhbnNwb3J0X2xpc3QpO1xuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM0Ny1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozNDg6c3RhdGljIGludCBudGJfYnVzX2luaXQoc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudClcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zNDkte1xuLS1cbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0xMjM2PXN0YXRpYyBpbnQgbnRiX3RyYW5zcG9ydF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTEzNzEtXHRJTklUX0xJU1RfSEVBRChcdTAwMjZudC1cdTAwM2VjbGllbnRfZGV2cyk7XG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6MTM3MjpcdHJjID0gbnRiX2J1c19pbml0KG50KTtcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0xMzczLVx0aWYgKHJjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoxMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODU4MAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDQyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5UQiBEZXZpY2UgUHJvYmUgUHJvY2VzcyoqCgpPa2F5LCBzbyBgbnRiX3RyYW5zcG9ydF9wcm9iZWAgZ2V0cyBjYWxsZWQgd2hlbiBhbiBOVEIgZGV2aWNlIGlzIGJvdW5kIHRvIHRoZSBgbnRiX3RyYW5zcG9ydF9jbGllbnRgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCB0aGUgY29udHJvbCBmbG93LCBzbyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlOiBgbnRiX3RyYW5zcG9ydF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpYC4gTm93LCB3aGF0IGFjdHVhbGx5IHRyaWdnZXJzIHRoaXMgY2FsbD8gQWgsIGl0JiMzOTtzIHRoZSByZWdpc3RyYXRpb24gb2YgYW4gTlRCIGRldmljZSB1c2luZyBgbnRiX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbnRiX2RldiAqbnRiKWAuCgpSaWdodCwgc28gdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCwgbGV0JiMzOTtzIHRyYWNlIHdoZXJlIGBudGJfcmVnaXN0ZXJfZGV2aWNlYCBpcyBjYWxsZWQuIEEgcXVpY2sgc2VhcmNoIHRocm91Z2ggdGhlIGtlcm5lbCByZXZlYWxzIGEgZmV3IGtleSBsb2NhdGlvbnMuIEl0JiMzOTtzIHVzZWQgd2l0aGluIHZhcmlvdXMgUENJIGRyaXZlcnMgZm9yIHNwZWNpZmljIE5UQiBoYXJkd2FyZToKCjEuICBgYW1kX250Yl9wY2lfcHJvYmVgIChBTUQgaGFyZHdhcmUpCjIuICBgbnRiX2VwZl9wY2lfcHJvYmVgIChFUEYgaGFyZHdhcmUpCjMuICBgaWR0X3JlZ2lzdGVyX2RldmljZWAgKElEVCBoYXJkd2FyZSkKNC4gIGBpbnRlbF9udGJfcGNpX3Byb2JlYCAoSW50ZWwgaGFyZHdhcmUpCjUuICBgc3dpdGNodGVjX250Yl9hZGRgIChNaWNyb1NlbWkgU3dpdGNodGVjIFBDSWUgc3dpdGNoKQo2LiAgYHBjaV92bnRiX3Byb2JlYCAoRVBGIHZOVEIpCgpUaGF0IGdpdmVzIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgZGlmZmVyZW50IGhhcmR3YXJlIGltcGxlbWVudGF0aW9ucyB0aGF0IHVzZSB0aGlzIG1lY2hhbmlzbS4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRvIGJlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55IG90aGVyIE5UQiBkcml2ZXJzIG9yIHVzZXMgb2YgYG50Yl9yZWdpc3Rlcl9kZXZpY2VgLCBidXQgdGhpcyBpcyBhIHNvbGlkIHN0YXJ0IGZvciB1bmRlcnN0YW5kaW5nIGhvdyBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGFuZCBwcm9iZWQgd2l0aGluIHRoZSBOVEIgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoxMjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGJfcmVnaXN0ZXJfZGV2aWNlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL2NvcmUuYz05OT1FWFBPUlRfU1lNQk9MKG50Yl91bnJlZ2lzdGVyX2NsaWVudCk7XG5kcml2ZXJzL250Yi9jb3JlLmMtMTAwLVxuZHJpdmVycy9udGIvY29yZS5jOjEwMTppbnQgbnRiX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbnRiX2RldiAqbnRiKVxuZHJpdmVycy9udGIvY29yZS5jLTEwMi17XG4tLVxuZHJpdmVycy9udGIvY29yZS5jLTEzMC19XG5kcml2ZXJzL250Yi9jb3JlLmM6MTMxOkVYUE9SVF9TWU1CT0wobnRiX3JlZ2lzdGVyX2RldmljZSk7XG5kcml2ZXJzL250Yi9jb3JlLmMtMTMyLVxuLS1cbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM9MTIyMj1zdGF0aWMgaW50IGFtZF9udGJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuLS1cbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmMtMTI1NC1cbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM6MTI1NTpcdHJjID0gbnRiX3JlZ2lzdGVyX2RldmljZShcdTAwMjZuZGV2LVx1MDAzZW50Yik7XG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEyNTYtXHRpZiAocmMpXG4tLVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYz03NTM9c3RhdGljIGludCBudGJfZXBmX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jLTc4Ny1cbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM6Nzg4Olx0cmV0ID0gbnRiX3JlZ2lzdGVyX2RldmljZShcdTAwMjZuZGV2LVx1MDAzZW50Yik7XG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jLTc4OS1cdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jPTIyNzU9c3RhdGljIGludCBpZHRfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBpZHRfbnRiX2RldiAqbmRldilcbi0tXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jLTIyODItXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jOjIyODM6XHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjI4NC1cdGlmIChyZXQgIT0gMCkge1xuLS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmM9MTg0ND1zdGF0aWMgaW50IGludGVsX250Yl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYy0xODk2LVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYzoxODk3Olx0cmMgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNm5kZXYtXHUwMDNlbnRiKTtcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTg5OC1cdGlmIChyYylcbi0tXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYz0xNDgxPXN0YXRpYyBpbnQgc3dpdGNodGVjX250Yl9hZGQoc3RydWN0IGRldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTE1MjgtXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYzoxNTI5Olx0cmMgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFx1MDAyNnNuZGV2LVx1MDAzZW50Yik7XG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYy0xNTMwLVx0aWYgKHJjKVxuLS1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNjc3PXN0YXRpYyBpbnQgcGNpX3ZudGJfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTY5Mi1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYzoxNjkzOlx0cmV0ID0gbnRiX3JlZ2lzdGVyX2RldmljZShcdTAwMjZuZGV2LVx1MDAzZW50Yik7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTY5NC1cdGlmIChyZXQpIHtcbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oPTQ2Nj12b2lkIG50Yl91bnJlZ2lzdGVyX2NsaWVudChzdHJ1Y3QgbnRiX2NsaWVudCAqY2xpZW50KTtcbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQ3Mi0vKipcbmluY2x1ZGUvbGludXgvbnRiLmg6NDczOiAqIG50Yl9yZWdpc3Rlcl9kZXZpY2UoKSAtIHJlZ2lzdGVyIGEgbnRiIGRldmljZVxuaW5jbHVkZS9saW51eC9udGIuaC00NzQtICogQG50YjpcdE5UQiBkZXZpY2UgY29udGV4dC5cbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQ4MS0gKi9cbmluY2x1ZGUvbGludXgvbnRiLmg6NDgyOmludCBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpO1xuaW5jbHVkZS9saW51eC9udGIuaC00ODMtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjEyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTgzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4KCioqSW52ZXN0aWdhdGluZyBhIFBDSSBEcml2ZXIqKgoKQWxyaWdodCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGlzIGBwY2ktZXBmLXZudGIuY2AgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBleGFjdGx5IHdoYXQgaXQgKmRvZXMqLiBJcyB0aGlzIHJlbGF0ZWQgdG8gYW4gZW5kcG9pbnQgZnVuY3Rpb24sIG9yIGlzIGl0IG1vcmUgb2YgYSB2aXJ0dWFsIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaW1wbGVtZW50YXRpb24/IEkmIzM5O2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRpc3RpbmN0aW9uIHRvIHByb2NlZWQuCgpUbyBnZXQgdGhlIGxheSBvZiB0aGUgbGFuZCwgSSYjMzk7bGwgc3RhcnQgYnkgY2hlY2tpbmcgdGhlIHN0YW5kYXJkIGxvY2F0aW9uIGZvciBQQ0kgZW5kcG9pbnQgZHJpdmVycy4gQSBxdWljayBsb29rIGluIGBkcml2ZXJzL3BjaS9lbmRwb2ludC9gIHNob3VsZCBnaXZlIG1lIHNvbWUgY29udGV4dCBhbmQgaGVscCBtZSBwaW4gZG93biBpdHMgZnVuY3Rpb24gd2l0aGluIHRoZSB3aWRlciBQQ0kgc3Vic3lzdGVtLiBUaGF0IGRpcmVjdG9yeSBpcyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbi4gSG9wZWZ1bGx5LCB0aGUgZHJpdmVyJiMzOTtzIHB1cnBvc2Ugd2lsbCBiZSBjbGVhciBmcm9tIGl0cyBsb2NhdGlvbiBhbmQgYXNzb2NpYXRlZCBmaWxlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7UENJX0VQRl9WTlRCJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvZW5kcG9pbnQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWc9MTc9Y29uZmlnIFBDSV9FUEZfTlRCXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWctMjktXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZzozMDpjb25maWcgUENJX0VQRl9WTlRCXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZy0zMS1cdHRyaXN0YXRlIFwmIzM0O1BDSSBFbmRwb2ludCBWaXJ0dWFsIE5UQiBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfUENJX0VQRl9OVEIpXHRcdCYjNDM7PSBwY2ktZXBmLW50Yi5vXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvTWFrZWZpbGU6ODpvYmotJChDT05GSUdfUENJX0VQRl9WTlRCKSBcdFx0JiM0Mzs9IHBjaS1lcGYtdm50Yi5vXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvTWFrZWZpbGUtOS1vYmotJChDT05GSUdfUENJX0VQRl9NSEkpXHRcdCYjNDM7PSBwY2ktZXBmLW1oaS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxMDg3CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgcmVhZGluZyBgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWdgLCBzdW1tYXJpemVkIGFzIGlmIGl0JiMzOTtzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYW4gZXhwZXJ0IGluIHRoZSBmaWVsZDoKCioqRGlnZ2luZyBpbnRvIHRoZSBQQ0kgRW5kcG9pbnQgS2NvbmZpZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGdvb2QgZ3JpcCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQQ0kgZW5kcG9pbnQgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgZGVmaW5lZCBpbiBgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWdgLiBUaGlzIGlzIHdoZXJlIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gZm9yIGFsbCB0aG9zZSBzcGVjaWZpYyBlbmRwb2ludCBmdW5jdGlvbiBkcml2ZXJzIGlzIGdvaW5nIHRvIGxpdmUuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdHlwaWNhbCBtZW51IHN0cnVjdHVyZSwgd2l0aCBkZXBlbmRlbmNpZXMgYW5kIGRlc2NyaXB0aW9ucyBkZXRhaWxpbmcgd2hhdCBmZWF0dXJlcyBhcmUgZW5hYmxlZCBhbmQgaG93IHRoZXkgaW50ZXJhY3QuIEkmIzM5O20gaG9waW5nIGl0JiMzOTtzIHdlbGwtb3JnYW5pemVkLCBtYWtpbmcgaXQgZWFzeSB0byB1bmRlcnN0YW5kIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgcXVpY2tseSBpZGVudGlmeSB0aGUgcmVsZXZhbnQgb3B0aW9ucyBmb3IgbXkgY3VycmVudCB0YXNrLCB3aGljaCBpcyBsaWtlbHkgZGVidWdnaW5nL2RldmVsb3BpbmcgYSBzcGVjaWZpYyBmZWF0dXJlIGluIGEgbmV3IFBDSSBlbmRwb2ludCBmdW5jdGlvbi4KCkkmIzM5O20gbG9va2luZyBmb3IgdGhlIGtleSBjb21wb25lbnRzOiB0aGUgYGNvbmZpZ2Agc3ltYm9scywgdGhlaXIgYGJvb2xgL2B0cmlzdGF0ZWAgdHlwZXMsIHRoZSBkZWZhdWx0IHZhbHVlcywgZGVwZW5kZW5jaWVzIChgZGVwZW5kcyBvbmApLCBzZWxlY3Qgc3RhdGVtZW50cywgYW5kIGhlbHAgdGV4dC4gVGhlIGRlc2NyaXB0aW9ucyBhcmUgY3JpdGljYWw7IHRoZXkgc2hvdWxkIGNsZWFybHkgZXhwbGFpbiB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBlYWNoIG9wdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIGdvaW5nIHRvIGJlIGxvb2tpbmcgZm9yOgoKKiAgICoqR3JhbnVsYXJpdHk6KiogQXJlIHRoZSBvcHRpb25zIGZpbmUtZ3JhaW5lZCBlbm91Z2ggdG8gc2VsZWN0aXZlbHkgZW5hYmxlIG9yIGRpc2FibGUgc3BlY2lmaWMgZnVuY3Rpb25hbGl0aWVzIHdpdGhpbiBhIGZ1bmN0aW9uLCBvciBhcmUgdGhleSB0b28gY29hcnNlPwoqICAgKipJbnRlcmRlcGVuZGVuY2llczoqKiBIb3cgZG8gdGhlIGRpZmZlcmVudCBmZWF0dXJlcyByZWxhdGUgdG8gZWFjaCBvdGhlcj8gQXJlIHRoZXJlIG9idmlvdXMgY29uZmxpY3RzIG9yIGRlcGVuZGVuY2llcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8gQXJlIHRoZXJlIGZlYXR1cmVzIHRoYXQgKm11c3QqIGJlIHNlbGVjdGVkIHdoZW4gYSBjZXJ0YWluIHVuZGVybHlpbmcgaGFyZHdhcmUgZmVhdHVyZSBpcyBzdXBwb3J0ZWQ/CiogICAqKlBvcnRhYmlsaXR5OioqIEFyZSB0aGVyZSBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcz8gQXJlIHRoZXkgY2xlYW5seSBoYW5kbGVkLCBvciBkbyBJIG5lZWQgdG8gd29ycnkgYWJvdXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gY2x1dHRlcj8KKiAgICoqRG9jdW1lbnRhdGlvbjoqKiBJcyB0aGUgaGVscCB0ZXh0IGNsZWFyIGFuZCBjb25jaXNlPyBEb2VzIGl0IHByb3ZpZGUgZW5vdWdoIGNvbnRleHQgYW5kIGxpbmtzIHRvIHJlbGV2YW50IGRvY3VtZW50YXRpb24gb3Igc291cmNlIGNvZGU/IElzIGl0IGFjdHVhbGx5IGFjY3VyYXRlLCBvciBhbSBJIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlIHRvIGZpZ3VyZSBvdXQgd2hhdCYjMzk7cyBnb2luZyBvbj8KCkkgd2FudCB0byBzZWUgY29uc2lzdGVudCBuYW1pbmcgY29udmVudGlvbnMgYW5kIGEgbG9naWNhbCBzdHJ1Y3R1cmUgdGhhdCBtYWtlcyBzZW5zZS4gQSB3ZWxsLWRlc2lnbmVkIEtjb25maWcgZmlsZSBpcyBhIGpveSB0byB3b3JrIHdpdGg7IGEgcG9vcmx5IGRlc2lnbmVkIG9uZSBpcyBhIG5pZ2h0bWFyZS4gSSYjMzk7bSBob3BpbmcgdGhpcyBvbmUgZmFsbHMgaW50byB0aGUgZm9ybWVyIGNhdGVnb3J5LiBMZXQmIzM5O3MgZ2V0IHRvIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdCNcbiAgIDM6XHQjIFBDSSBFbmRwb2ludCBGdW5jdGlvbnNcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIFBDSV9FUEZfVEVTVFxuICAgNzpcdFx0dHJpc3RhdGUgXCYjMzQ7UENJIEVuZHBvaW50IFRlc3QgZHJpdmVyXCYjMzQ7XG4gICA4Olx0XHRkZXBlbmRzIG9uIFBDSV9FTkRQT0lOVFxuICAgOTpcdFx0c2VsZWN0IENPTkZJR0ZTX0ZTXG4gIDEwOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMTE6XHRcdGhlbHBcbiAgMTI6XHRcdCAgIEVuYWJsZSB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSB0aGUgdGVzdCBkcml2ZXJcbiAgMTM6XHRcdCAgIGZvciBQQ0kgRW5kcG9pbnQuXG4gIDE0Olx0XG4gIDE1Olx0XHQgICBJZiBpbiBkb3VidCwgc2F5IFwmIzM0O05cJiMzNDsgdG8gZGlzYWJsZSBFbmRwb2ludCB0ZXN0IGRyaXZlci5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgUENJX0VQRl9OVEJcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O1BDSSBFbmRwb2ludCBOVEIgZHJpdmVyXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIFBDSV9FTkRQT0lOVFxuICAyMDpcdFx0c2VsZWN0IENPTkZJR0ZTX0ZTXG4gIDIxOlx0XHRoZWxwXG4gIDIyOlx0XHQgIFNlbGVjdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGVuYWJsZSB0aGUgTm9uLVRyYW5zcGFyZW50XG4gIDIzOlx0XHQgIEJyaWRnZSAoTlRCKSBkcml2ZXIgZm9yIFBDSSBFbmRwb2ludC4gTlRCIGRyaXZlciBpbXBsZW1lbnRzIE5UQlxuICAyNDpcdFx0ICBjb250cm9sbGVyIGZ1bmN0aW9uYWxpdHkgdXNpbmcgbXVsdGlwbGUgUENJZSBlbmRwb2ludCBpbnN0YW5jZXMuXG4gIDI1Olx0XHQgIEl0IGNhbiBzdXBwb3J0IE5UQiBlbmRwb2ludCBmdW5jdGlvbiBkZXZpY2VzIGNyZWF0ZWQgdXNpbmdcbiAgMjY6XHRcdCAgZGV2aWNlIHRyZWUuXG4gIDI3Olx0XG4gIDI4Olx0XHQgIElmIGluIGRvdWJ0LCBzYXkgXCYjMzQ7TlwmIzM0OyB0byBkaXNhYmxlIEVuZHBvaW50IE5UQiBkcml2ZXIuXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIFBDSV9FUEZfVk5UQlxuICAzMTpcdFx0dHJpc3RhdGUgXCYjMzQ7UENJIEVuZHBvaW50IFZpcnR1YWwgTlRCIGRyaXZlclwmIzM0O1xuICAzMjpcdFx0ZGVwZW5kcyBvbiBQQ0lfRU5EUE9JTlRcbiAgMzM6XHRcdGRlcGVuZHMgb24gTlRCXG4gIDM0Olx0XHRzZWxlY3QgQ09ORklHRlNfRlNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2VsZWN0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIHRoZSBOb24tVHJhbnNwYXJlbnRcbiAgMzc6XHRcdCAgQnJpZGdlIChOVEIpIGRyaXZlciBmb3IgUENJZSBFbmRwb2ludC4gTlRCIGRyaXZlciBpbXBsZW1lbnRzIE5UQlxuICAzODpcdFx0ICBiZXR3ZWVuIFBDSSBSb290IFBvcnQgYW5kIFBDSWUgRW5kcG9pbnQuXG4gIDM5Olx0XG4gIDQwOlx0XHQgIElmIGluIGRvdWJ0LCBzYXkgXCYjMzQ7TlwmIzM0OyB0byBkaXNhYmxlIEVuZHBvaW50IE5UQiBkcml2ZXIuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT40bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMTI4CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMzg3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgTlRCIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhlIGBOVEJfTkVUREVWYCBmdW5jdGlvbmFsaXR5IGlzIGV2ZW4gYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gRmlyc3QsIGxldCBtZSBxdWlja2x5IHJlbWluZCBteXNlbGYgd2hhdCBOVEIgYWN0dWFsbHkgKmlzKjogTm9uLVRyYW5zcGFyZW50IEJyaWRnZSDigJMgd2hpY2ggbWVhbnMgd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgaGFyZHdhcmUsIGxpa2UgSW50ZWwsIEFNRCwgb3IgU3dpdGNodGVjIE5UQiwgZXRjLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIFFFTVUgZXZlbiAqZW11bGF0ZXMqIE5UQiBhdCBhbGwuCgpIYW5nIG9uLCBiZWZvcmUgSSBqdW1wIHRvIGFueSBjb25jbHVzaW9ucywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzeXN0ZW0gaW5zdHJ1Y3Rpb25zLCBlc3BlY2lhbGx5IHRoZSBjcml0ZXJpYSBmb3IgZGV0ZXJtaW5pbmcgaWYgc29tZXRoaW5nIGlzICYjMzQ7V29ydGhGdXp6aW5nPWZhbHNlJiMzNDsuIEkgbmVlZCB0byBiZSBjYXJlZnVsIG5vdCB0byB3YXN0ZSB0aW1lIG9uIGNoYW5nZXMgdGhhdCBhcmUgZXhwbGljaXRseSBydWxlZCBvdXQuIFJpZ2h0LCBzbyB0aGUgZ3VpZGUgZXhwbGljaXRseSBtZW50aW9ucyBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlLiBUaGF0IGluY2x1ZGVzIHRoaW5ncyBsaWtlIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIGZvciBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMgdGhhdCAqZGVtYW5kKiByZWFsIFBDSWUgY2FyZHMuIEFuZCwgdGVhcmRvd24gY2FsbGJhY2tzIGFyZSBtb3N0bHkgaXJyZWxldmFudCwgc2luY2UgaG90LXVucGx1ZyBpcyB1bmxpa2VseSBpbiBhbiBhdXRvbWF0ZWQgZnV6emluZyBzY2VuYXJpby4KClRoZSBjb3JlIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiBDYW4gTlRCIGRldmljZXMgYmUgc2ltdWxhdGVkIG9yIGV2ZW4gKmNyZWF0ZWQqIHdpdGhvdXQgcGh5c2ljYWwgaGFyZHdhcmUgaW4gc3RhbmRhcmQgTGludXgsIFFFTVUsIG9yIGV2ZW4gd2l0aCBhIGZyYW1ld29yayBsaWtlIHN5emthbGxlcj8gSXMgdGhlcmUgYSBkdW1teSBvciB2aXJ0dWFsIE5UQiBjb250cm9sbGVyIHdpdGhpbiB0aGUga2VybmVsIGl0c2VsZj8gSSBuZWVkIHRvIGNoZWNrIGZvciBhbnkgb3RoZXIga2VybmVsIGRyaXZlcnMgb3IgZW5kcG9pbnQgY29udHJvbGxlcnMgc3BlY2lmaWNhbGx5IHJlbGF0ZWQgdG8gTlRCLiBSaWdodCwgbGV0JiMzOTtzIGV4cGxvcmUgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2NvbnRyb2xsZXJzL2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0LiBGcm9tIGhlcmUgSSBjYW4gbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCB0aGUgZmVhc2liaWxpdHkgb2YgdGFyZ2V0aW5nIHRoaXMgYXJlYSBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5jb2Rlc2VhcmNoLWRpci1pbmRleDwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnRoZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3Q8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9lbmRwb2ludC9jb250cm9sbGVycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyOTExCgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgZGlyZWN0b3J5OgoKKipQQ0kgRW5kcG9pbnQgRHJpdmVyIEludmVzdGlnYXRpb24qKgoKT2theSwgc28gSSBuZWVkIHRvIGRpdmUgaW50byB0aGUgUENJIGVuZHBvaW50IGRyaXZlciBjb2RlLiBUaGUgZmlyc3QgdGhpbmcgSSYjMzk7bSBnb2luZyB0byBkbyBpcyBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2AgZGlyZWN0b3J5LiBUaGF0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGhvdyB0aGUgc3lzdGVtIGludGVyYWN0cyB3aXRoIFBDSSBlbmRwb2ludHMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBlbmRwb2ludCBkcml2ZXIgZnJhbWV3b3JrLiBUaGlzIGluY2x1ZGVzLCBhbmQgbWF5YmUgSSBuZWVkIHRvIHJlZnJlc2ggbXlzZWxmIG9uLCB0aGUgZGV2aWNlIHRyZWUgc2V0dXAsIGludGVycnVwdCBoYW5kbGluZywgYW5kIGhvdyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhcmUgYWNjZXNzZWQgYW5kIG1hbmFnZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGVuZHBvaW50IGRldmljZXMuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCBob3cgcmVzb3VyY2VzIGFyZSBhbGxvY2F0ZWQsIGhvdyB0cmFuc2FjdGlvbnMgYXJlIGluaXRpYXRlZCBhbmQgY29tcGxldGVkLCBhbmQgYW55IHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMuIEkgc2hvdWxkIHF1aWNrbHkgc2NhbiBmb3IgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgZG9jdW1lbnRhdGlvbiB0b28sIGFzIHRoaXMgY29udGV4dCB3aWxsIHNhdmUgc2lnbmlmaWNhbnQgdGltZSBkb3duIHRoZSByb2FkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9lbmRwb2ludCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O3BjaS1lcC1jZnMuYyYjMzQ7LAogICAgJiMzNDtwY2ktZXAtbXNpLmMmIzM0OywKICAgICYjMzQ7cGNpLWVwYy1jb3JlLmMmIzM0OywKICAgICYjMzQ7cGNpLWVwYy1tZW0uYyYjMzQ7LAogICAgJiMzNDtwY2ktZXBmLWNvcmUuYyYjMzQ7CiAgXSwKICAmIzM0O1N1YmRpcnMmIzM0OzogWwogICAgJiMzNDtmdW5jdGlvbnMmIzM0OwogIF0KfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzIxMQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipFUEMgRHJpdmVyIExvY2F0aW9uIEh1bnQqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgdGhlIEVuaGFuY2VkIFBDSSBDb250cm9sbGVyIChFUEMpIGRyaXZlcnMgYXJlIGhpZGluZyBpbiB0aGUga2VybmVsIHNvdXJjZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBpcyB0aGUgYGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvYCBkaXJlY3RvcnkuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBvYnZpb3VzIGhvbWUgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gUENJIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGVyZSBmaXJzdC4gQXNzdW1pbmcgdGhleSBmb2xsb3dlZCB0aGUgY29udmVudGlvbmFsIHN0cnVjdHVyZSwgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBjb2RlLiBJZiBpdCYjMzk7cyBub3QgdGhlcmUsIEkmIzM5O2xsIG5lZWQgdG8gYnJvYWRlbiB0aGUgc2VhcmNoLCBidXQgdGhpcyBpcyB0aGUgaW5pdGlhbCBhbmQgYmVzdCBlZHVjYXRlZCBndWVzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMzAgMTY6MjI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpX2VwY19jcmVhdGV8ZGV2bV9wY2lfZXBjX2NyZWF0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UtZXAuYz02NjY9aW50IGNkbnNfcGNpZV9lcF9zZXR1cChzdHJ1Y3QgY2Ruc19wY2llX2VwICplcClcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvcGNpZS1jYWRlbmNlLWVwLmMtNzA0LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS1lcC5jOjcwNTpcdGVwYyA9IGRldm1fcGNpX2VwY19jcmVhdGUoZGV2LCBcdTAwMjZjZG5zX3BjaWVfZXBjX29wcyk7XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvcGNpZS1jYWRlbmNlLWVwLmMtNzA2LVx0aWYgKElTX0VSUihlcGMpKSB7XG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmM9MTUyMT1pbnQgZHdfcGNpZV9lcF9pbml0KHN0cnVjdCBkd19wY2llX2VwICplcClcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYy0xNTMyLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmM6MTUzMzpcdGVwYyA9IGRldm1fcGNpX2VwY19jcmVhdGUoZGV2LCBcdTAwMjZlcGNfb3BzKTtcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvZHdjL3BjaWUtZGVzaWdud2FyZS1lcC5jLTE1MzQtXHRpZiAoSVNfRVJSKGVwYykpIHtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcmNhci1lcC5jPTQ3NT1zdGF0aWMgaW50IHJjYXJfcGNpZV9lcF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yY2FyLWVwLmMtNTIxLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJjYXItZXAuYzo1MjI6XHRlcGMgPSBkZXZtX3BjaV9lcGNfY3JlYXRlKGRldiwgXHUwMDI2cmNhcl9wY2llX2VwY19vcHMpO1xuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJjYXItZXAuYy01MjMtXHRpZiAoSVNfRVJSKGVwYykpIHtcbi0tXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYz04Mzk9c3RhdGljIGludCByb2NrY2hpcF9wY2llX2VwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmMtODU1LVxuZHJpdmVycy9wY2kvY29udHJvbGxlci9wY2llLXJvY2tjaGlwLWVwLmM6ODU2Olx0ZXBjID0gZGV2bV9wY2lfZXBjX2NyZWF0ZShkZXYsIFx1MDAyNnJvY2tjaGlwX3BjaWVfZXBjX29wcyk7XG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYy04NTctXHRpZiAoSVNfRVJSKGVwYykpIHtcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYz0xMDQxPXN0YXRpYyB2b2lkIHBjaV9lcGNfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTA0Ni0vKipcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjEwNDc6ICogX19wY2lfZXBjX2NyZWF0ZSgpIC0gY3JlYXRlIGEgbmV3IGVuZHBvaW50IGNvbnRyb2xsZXIgKEVQQykgZGV2aWNlXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMDQ4LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIGNyZWF0aW5nIHRoZSBuZXcgRVBDXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmM9MTA1ND1zdHJ1Y3QgcGNpX2VwYyAqXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYzoxMDU1Ol9fcGNpX2VwY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2VwY19vcHMgKm9wcyxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTEwNTYtXHRcdCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTA5LX1cbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMTA6RVhQT1JUX1NZTUJPTF9HUEwoX19wY2lfZXBjX2NyZWF0ZSk7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTExLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTExMi0vKipcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMTM6ICogX19kZXZtX3BjaV9lcGNfY3JlYXRlKCkgLSBjcmVhdGUgYSBuZXcgZW5kcG9pbnQgY29udHJvbGxlciAoRVBDKSBkZXZpY2VcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMTQtICogQGRldjogZGV2aWNlIHRoYXQgaXMgY3JlYXRpbmcgdGhlIG5ldyBFUENcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYz0xMTIzPXN0cnVjdCBwY2lfZXBjICpcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMjQ6X19kZXZtX3BjaV9lcGNfY3JlYXRlKHN0cnVjdCBkZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IHBjaV9lcGNfb3BzICpvcHMsXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTI1LVx0XHQgICAgICBzdHJ1Y3QgbW9kdWxlICpvd25lcilcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTMyLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmM6MTEzMzpcdGVwYyA9IF9fcGNpX2VwY19jcmVhdGUoZGV2LCBvcHMsIG93bmVyKTtcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMzQtXHRpZiAoIUlTX0VSUihlcGMpKSB7XG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTE0Mi19XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYzoxMTQzOkVYUE9SVF9TWU1CT0xfR1BMKF9fZGV2bV9wY2lfZXBjX2NyZWF0ZSk7XG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTQ0LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDgwNAoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDc5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoJiMzOTtzIFdvcnRoaW5lc3MgZm9yIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBoYXJkd2FyZSBjb250ZXh0LiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIFBDSWUgZW5kcG9pbnQgY29udHJvbGxlcnMsIGxpa2UgdGhvc2UgZnJvbSBDYWRlbmNlLCBEV0MsIFItQ2FyLCBhbmQgUm9ja2NoaXAsIGFsbCBTb0MgaGFyZHdhcmUuIFRoZW4gdGhlcmUgYXJlIHRoZSBOVEIgZHJpdmVycyB1bmRlciBgZHJpdmVycy9udGIvaHcvYCwgd2hpY2ggaGFuZGxlIHNwZWNpZmljIE5UQiBoYXJkd2FyZSBmcm9tIEFNRCwgSURULCBJbnRlbCwgU3dpdGNodGVjLCBhbmQgYSBnZW5lcmljIEVQRiBpbXBsZW1lbnRhdGlvbi4gVGhlIGNydWNpYWwgcG9pbnQgaXMgdGhhdCAqbm9uZSogb2YgdGhlc2UgY29udHJvbGxlcnMgYXJlIGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpIHZpcnR1YWwgbWFjaGluZXMuIE5vdywgTlRCLCBhcyBhIHJlZnJlc2hlciwgaXMgTm9uLVRyYW5zcGFyZW50IEJyaWRnaW5nIOKAkyBhIGRpcmVjdCwgcG9pbnQtdG8tcG9pbnQgUENJZSBjb25uZWN0aW9uIGZhY2lsaXRhdGluZyBjb21tdW5pY2F0aW9uIGJldHdlZW4gdHdvIGRpc3RpbmN0IGNvbXB1dGVyIHN5c3RlbXMuIEl0IGZ1bmRhbWVudGFsbHkgcmVsaWVzIG9uIGRlZGljYXRlZCBoYXJkd2FyZSBOVEIgY29udHJvbGxlcnMgb3IgUENJZSBlbmRwb2ludCBjb250cm9sbGVycyBpbiBhIGhvc3QtdG8taG9zdCBzZXR1cC4gUUVNVSBhbmQgR0NFIGp1c3QgZG9uJiMzOTt0IG9mZmVyIHRoYXQuCgpOb3csIGxldCYjMzk7cyBnbyBiYWNrIHRvIHRoZSBydWxlcy4gSSBuZWVkIHRvIGRldGVybWluZSBpZiB0aGlzIHBhdGNoIGlzIHdvcnRoIGZ1enppbmcuIFRoZSBydWxlcyBzdGF0ZSB3ZSBzaG91bGRuJiMzOTt0IGNvbnNpZGVyIHBhdGNoZXMgdGhhdCBvbmx5IG1vZGlmeSBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBjb21tZW50cywgY29zbWV0aWMgY2hhbmdlcywgb3IgbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24mIzM5O3QgaW1wYWN0IGV4ZWN1dGlvbiBmbG93LiBXZSBhbHNvIGV4Y2x1ZGUgY29kZSBwYXRocyB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRSwgZXZlbiB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbi4gU3BlY2lmaWNhbGx5LCB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyByZXF1aXJpbmcgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG9mZi1saW1pdHMsIGFzIGFyZSB0ZWFyZG93biBjYWxsYmFja3MgdGhhdCBhcmUgb25seSBleGVjdXRlZCBvbiBob3QtdW5wbHVnLgoKVGhlIHBhdGNoIGl0c2VsZiBkZWFscyB3aXRoIGBkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNgLiBJdCYjMzk7cyBjb252ZXJ0aW5nIGBuZGV2LSZndDtzdGF0cy4qYCB0byBwZXItQ1BVIG5ldHdvcmsgc3RhdGlzdGljcyAoYHBjcHVfc3dfbmV0c3RhdHNgKSwgdXNpbmcgYHU2NF9zdGF0c18qYCBhbmQgYERFVl9TVEFUU19JTkNgLCBzZXR0aW5nIGBuZGV2LSZndDtwY3B1X3N0YXRfdHlwZWAsIGFuZCBmaXhpbmcgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgYG50Yl9uZXRkZXZfdHhfaGFuZGxlcmAgZnVuY3Rpb24uCgpOb3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgYG50Yl9uZXRkZXZgIHJlYWNoYWJsZSBpbiBRRU1VL0dDRT8gV2l0aG91dCBhIHJlYWwgTlRCIGhhcmR3YXJlIGNvbnRyb2xsZXIgKEludGVsLCBBTUQsIGV0Yy4pLCBgbnRiX3RyYW5zcG9ydF9wcm9iZWAgaXMgbmV2ZXIgaW52b2tlZC4gVGhlIGBudGJfdHJhbnNwb3J0X2xpc3RgIHJlbWFpbnMgZW1wdHksIGFuZCByZWdpc3RyYXRpb24gZmFpbHMgd2l0aCBgLUVOT0RFVmAuIENvbnNlcXVlbnRseSwgYG50Yl9uZXRkZXZfcHJvYmVgIGlzIG5ldmVyIGNhbGxlZCwgYW5kIG5vIG5ldHdvcmsgZGV2aWNlIGlzIGV2ZXIgaW5zdGFudGlhdGVkLiBUaGVyZWZvcmUsIG5vIGBudGJfbmV0ZGV2YCBpcyBldmVyIGNyZWF0ZWQsIG9yIGF0IGxlYXN0LCBpbnN0YW50aWF0ZWQuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgc2VhcmNoIHRoZSBrZXJuZWwgdHJlZSBmb3IgYHN0cnVjdCBudGJfZGV2X29wc2Agb3IgYG50Yl9yZWdpc3Rlcl9kZXZpY2VgIHRvIHNlZSBpZiB0aGVyZSYjMzk7cyBhbnkgbW9jayBvciBsb29wYmFjayBpbXBsZW1lbnRhdGlvbiBJJiMzOTttIG1pc3NpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O250Yl9kZXZfb3BzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbnRiL2NvcmUuYz0xMDE9aW50IG50Yl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG50Yl9kZXYgKm50Yilcbi0tXG5kcml2ZXJzL250Yi9jb3JlLmMtMTEwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbmRyaXZlcnMvbnRiL2NvcmUuYzoxMTE6XHRpZiAoIW50Yl9kZXZfb3BzX2lzX3ZhbGlkKG50Yi1cdTAwM2VvcHMpKVxuZHJpdmVycy9udGIvY29yZS5jLTExMi1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYz01Mzg9c3RhdGljIGludCBhbWRfbnRiX3BlZXJfc3BhZF93cml0ZShzdHJ1Y3QgbnRiX2RldiAqbnRiLCBpbnQgcGlkeCxcbi0tXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTU1My1cbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM6NTU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgYW1kX250Yl9vcHMgPSB7XG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTU1NS1cdC5td19jb3VudFx0XHQ9IGFtZF9udGJfbXdfY291bnQsXG4tLVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYz01ODc9c3RhdGljIGludCBudGJfZXBmX2RiX2NsZWFyKHN0cnVjdCBudGJfZGV2ICpudGIsIHU2NCBkYl9iaXRzKVxuLS1cbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNTk1LVxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYzo1OTY6c3RhdGljIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBudGJfZXBmX29wcyA9IHtcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNTk3LVx0Lm13X2NvdW50XHRcdD0gbnRiX2VwZl9td19jb3VudCxcbi0tXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jPTIxOTc9c3RhdGljIGlycXJldHVybl90IGlkdF90aHJlYWRfaXNyKGludCBpcnEsIHZvaWQgKmRldmlkKVxuLS1cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjIzNi0gKi9cbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM6MjIzNzpzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIGlkdF9udGJfb3BzID0ge1xuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYy0yMjM4LVx0LnBvcnRfbnVtYmVyXHRcdD0gaWR0X250Yl9wb3J0X251bWJlcixcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jPTgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfbnRiX3hsYXRfcmVnIHhlb25fc2VjX3hsYXQ7XG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjgzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiX29wcztcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtODQtXG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz0xOTg5PXN0cnVjdCBpbnRlbF9iMmJfYWRkciB4ZW9uX2IyYl9kc2RfYWRkciA9IHtcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTE5OTYtLyogb3BlcmF0aW9ucyBmb3IgcHJpbWFyeSBzaWRlIG9mIGxvY2FsIG50YiAqL1xuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYzoxOTk3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiX29wcyA9IHtcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTk5OC1cdC5td19jb3VudFx0XHQ9IGludGVsX250Yl9td19jb3VudCxcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5jPTU5NT1pbnQgaW50ZWxfbnRiM19kYl9jbGVhcihzdHJ1Y3QgbnRiX2RldiAqbnRiLCB1NjQgZGJfYml0cylcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5jLTYwMy1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmM6NjA0OmNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGIzX29wcyA9IHtcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmMtNjA1LVx0Lm13X2NvdW50XHRcdD0gaW50ZWxfbnRiX213X2NvdW50LFxuLS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmg9MTEyPWludCBpbnRlbF9udGIzX3BlZXJfZGJfYWRkcihzdHJ1Y3QgbnRiX2RldiAqbnRiLCBwaHlzX2FkZHJfdCAqZGJfYWRkcixcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5oLTExNS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmg6MTE2OmV4dGVybiBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiM19vcHM7XG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5oLTExNy1cbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5jPTUzNj1zdGF0aWMgaW50IGludGVsX250YjRfbXdfZ2V0X2FsaWduKHN0cnVjdCBudGJfZGV2ICpudGIsIGludCBwaWR4LCBpbnQgaWR4LFxuLS1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW40LmMtNTc3LVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuYzo1Nzg6Y29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIGludGVsX250YjRfb3BzID0ge1xuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuYy01NzktXHQubXdfY291bnRcdFx0PSBpbnRlbF9udGJfbXdfY291bnQsXG4tLVxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuaD0xMTE9c3NpemVfdCBuZGV2X250YjRfZGVidWdmc19yZWFkKHN0cnVjdCBmaWxlICpmaWxwLCBjaGFyIF9fdXNlciAqdWJ1Zixcbi0tXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5oLTExMy1cbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW40Lmg6MTE0OmV4dGVybiBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiNF9vcHM7XG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5oLTExNS1cbi0tXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYz03OTU9c3RhdGljIGludCBzd2l0Y2h0ZWNfbnRiX3BlZXJfc3BhZF9hZGRyKHN0cnVjdCBudGJfZGV2ICpudGIsIGludCBwaWR4LFxuLS1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTgxMi1cbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jOjgxMzpzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIHN3aXRjaHRlY19udGJfb3BzID0ge1xuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtODE0LVx0Lm13X2NvdW50XHRcdD0gc3dpdGNodGVjX250Yl9td19jb3VudCxcbi0tXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM9MTY0Mz1zdGF0aWMgc3RydWN0IGRldmljZSAqdm50Yl9lcGZfZ2V0X2RtYV9kZXYoc3RydWN0IG50Yl9kZXYgKm5kZXYpXG4tLVxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE2NTAtXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTY1MTpzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIHZudGJfZXBmX29wcyA9IHtcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjUyLVx0Lm13X2NvdW50XHRcdD0gdm50Yl9lcGZfbXdfY291bnQsXG4tLVxuaW5jbHVkZS9saW51eC9udGIuaD0xOTk9c3RhdGljIGlubGluZSBpbnQgbnRiX2N0eF9vcHNfaXNfdmFsaWQoY29uc3Qgc3RydWN0IG50Yl9jdHhfb3BzICpvcHMpXG4tLVxuaW5jbHVkZS9saW51eC9udGIuaC0yMDktLyoqXG5pbmNsdWRlL2xpbnV4L250Yi5oOjIxMDogKiBzdHJ1Y3QgbnRiX2Rldl9vcHMgLSBudGIgZGV2aWNlIG9wZXJhdGlvbnNcbmluY2x1ZGUvbGludXgvbnRiLmgtMjExLSAqIEBwb3J0X251bWJlcjpcdFNlZSBudGJfcG9ydF9udW1iZXIoKS5cbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTI2MC0gKi9cbmluY2x1ZGUvbGludXgvbnRiLmg6MjYxOnN0cnVjdCBudGJfZGV2X29wcyB7XG5pbmNsdWRlL2xpbnV4L250Yi5oLTI2Mi1cdGludCAoKnBvcnRfbnVtYmVyKShzdHJ1Y3QgbnRiX2RldiAqbnRiKTtcbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTMzNS1cbmluY2x1ZGUvbGludXgvbnRiLmg6MzM2OnN0YXRpYyBpbmxpbmUgaW50IG50Yl9kZXZfb3BzX2lzX3ZhbGlkKGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyAqb3BzKVxuaW5jbHVkZS9saW51eC9udGIuaC0zMzcte1xuLS1cbmluY2x1ZGUvbGludXgvbnRiLmg9NDA2PXN0cnVjdCBudGJfY2xpZW50IHtcbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQxNi0gKiBAdG9wbzpcdFx0RGV0ZWN0ZWQgdG9wb2xvZ3kgb2YgdGhlIG50Yi5cbmluY2x1ZGUvbGludXgvbnRiLmg6NDE3OiAqIEBvcHM6XHRcdFNlZSBcdTAwMjZudGJfZGV2X29wcy5cbmluY2x1ZGUvbGludXgvbnRiLmgtNDE4LSAqIEBjdHg6XHRcdFNlZSBcdTAwMjZudGJfY3R4X29wcy5cbi0tXG5pbmNsdWRlL2xpbnV4L250Yi5oPTQyMT1zdHJ1Y3QgbnRiX2RldiB7XG4tLVxuaW5jbHVkZS9saW51eC9udGIuaC00MjQtXHRlbnVtIG50Yl90b3BvXHRcdFx0dG9wbztcbmluY2x1ZGUvbGludXgvbnRiLmg6NDI1Olx0Y29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzXHQqb3BzO1xuaW5jbHVkZS9saW51eC9udGIuaC00MjYtXHR2b2lkXHRcdFx0XHQqY3R4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyODQ4NAoJCQkJCQkJb3V0cHV0OiA5NQoJCQkJCQkJdGhvdWdodHM6IDI3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnRiX25ldGRldmAgRHJpdmVyJiMzOTtzIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O3ZlIGJlZW4gdGFraW5nIGEgbG9vayBhdCB0aGlzIGBudGJfbmV0ZGV2YCBkcml2ZXIsIGFuZCBpdCYjMzk7cyBsb29raW5nIHByZXR0eSBibGVhayBmcm9tIGEgZnV6emluZyBwZXJzcGVjdGl2ZS4gVGhlIGNvcmUgb2YgbXkgYW5hbHlzaXMgaGluZ2VzIG9uIHRoZSBmYWN0IHRoYXQgYWxsIHRoZSByZWxldmFudCBgbnRiX2Rldl9vcHNgIGltcGxlbWVudGF0aW9ucyBJJiMzOTt2ZSBpZGVudGlmaWVkIOKAkyBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgZHJpdmVycy9udGIvaHcvYW1kL2AsIGBkcml2ZXJzL250Yi9ody9lcGYvYCwgYGRyaXZlcnMvbnRiL2h3L2lkdC9gLCBgZHJpdmVycy9udGIvaHcvaW50ZWwvYCwgYGRyaXZlcnMvbnRiL2h3L21zY2MvYCwgYW5kIGV2ZW4gdGhlIGBkcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmNgIHBhdGgg4oCTIGFyZSBkZWVwbHkgcm9vdGVkIGluIGhhcmR3YXJlIFBDSWUgZGV2aWNlIGRyaXZlcnMuIFRoZXNlIGFyZW4mIzM5O3QganVzdCBhYnN0cmFjdCBjb25jZXB0czsgdGhleSYjMzk7cmUgdGllZCB0byBzcGVjaWZpYyBwaHlzaWNhbCBOVEIgaGFyZHdhcmUgbGlrZSBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIGNvbnRyb2xsZXJzLgoKVGhlIGNyaXRpY2FsIGlzc3VlIGlzIHRoYXQgbm9uZSBvZiB0aGVzZSBoYXJkd2FyZSBjb21wb25lbnRzIGFyZSBlbXVsYXRlZCB3aXRoaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIFRoaXMgZWZmZWN0aXZlbHkgbWFrZXMgdGhlIGBudGJfbmV0ZGV2YCBkcml2ZXIgaW5hY2Nlc3NpYmxlIGluIHRoZXNlIGNvbW1vbiB2aXJ0dWFsIGZ1enppbmcgc2V0dXBzLiBJIG1lYW4sIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgJiMzNDtWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydCYjMzQ7IGhlcmUg4oCTIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGludGVyZmFjZSB3aXRoIHRoYXQgc3BlY2lmaWMgTlRCIGhhcmR3YXJlLiBXaXRob3V0IHRoYXQgaGFyZHdhcmUgcHJlc2VudCAob3IgZW11bGF0ZWQgd2l0aCBzdWZmaWNpZW50IGZpZGVsaXR5KSwgdGhlIGRyaXZlciB3aWxsIHNpbXBseSByZW1haW4gdW5yZWFjaGFibGUuCgpJJiMzOTt2ZSBhbHJlYWR5IHJ1biBhIHF1aWNrIGNoZWNrIG9mIHRoZSByZWxldmFudCBjcml0ZXJpYS4gVGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgdW5zdXJwcmlzaW5nbHkgZmFsc2UsIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGVtcHR5LCBhbmQgdGhlcmUgYXJlIG5vIGBGb2N1c1N5bWJvbHNgLiBUaGUgcmVhc29uaW5nIGZvciB0aGlzIGluYWNjZXNzaWJpbGl0eSBpcyBjbGVhcjsgaXQgYWxsIGJvaWxzIGRvd24gdG8gdGhlIGRlcGVuZGVuY2Ugb24gcGh5c2ljYWwgUENJZSBOVEIgaGFyZHdhcmUuCgpBbHJpZ2h0LCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGlzIGFzc2Vzc21lbnQuIExldCYjMzk7cyBqdXN0IG1ha2Ugb25lIGxhc3QsIHF1aWNrIGNoZWNrIG9mIHRoZSBmb3JtYXR0aW5nIHRvIGVuc3VyZSBpdCBhbGwgbG9va3MgZ29vZCwgYW5kIHRoZW4gSSYjMzk7bGwgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8zMCAxNjoyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7bnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7bnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzMwIDE2OjI0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozNDoyNS40MTg4NzY4NTZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTkzNzQ4OTA3MjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJudGJfbmV0ZGV2IChWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydCkgcmVxdWlyZXMgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSAoTlRCKSBoYXJkd2FyZSBkZXZpY2VzIChzdWNoIGFzIEludGVsLCBBTUQsIElEVCwgb3IgU3dpdGNodGVjIFBDSWUgTlRCIGNvbnRyb2xsZXJzKSwgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY29udHJvbGxlcnMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6MzQ6MjUuNDE4ODgyOTY2WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTMzMTI1NTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxNTNiNzNmOTExMDQ0M2UwOGJlMjExNzIxNTlkNDlhMTE4ZTFhMmI3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDMwIDE1OjM0OjI0IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L250Yl9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L250Yl9uZXRkZXYuY1xcbmluZGV4IDljMTcxNjk3ZTc2MjAuLjJjMDRiZTZkNjFhODUgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXFxuKysrIGIvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXFxuQEAgLTEyNyw4ICsxMjcsMTAgQEAgc3RhdGljIHZvaWQgbnRiX25ldGRldl9yeF9oYW5kbGVyKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCwgdm9pZCAqcXBfZGF0YSxcXG4ge1xcbiBcXHRzdHJ1Y3QgbnRiX25ldGRldl9xdWV1ZSAqcSA9IHFwX2RhdGE7XFxuIFxcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLVxcdTAwM2VudGRldjtcXG4rXFx0c3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0cztcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKm5ld19za2I7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbitcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbiBcXHRpbnQgcmM7XFxuIFxcbiBcXHRuZGV2ID0gZGV2LVxcdTAwM2VuZGV2O1xcbkBAIC0xMzksMTcgKzE0MSwyMCBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3J4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxcbiBcXHRuZXRkZXZfZGJnKG5kZXYsIFxcXCIlczogJWQgYnl0ZSBwYXlsb2FkIHJlY2VpdmVkXFxcXG5cXFwiLCBfX2Z1bmNfXywgbGVuKTtcXG4gXFxuIFxcdGlmIChsZW4gXFx1MDAzYyAwKSB7XFxuLVxcdFxcdG5kZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbi1cXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7XFxuK1xcdFxcdERFVl9TVEFUU19JTkMobmRldiwgcnhfZXJyb3JzKTtcXG4rXFx0XFx0REVWX1NUQVRTX0lOQyhuZGV2LCByeF9sZW5ndGhfZXJyb3JzKTtcXG4gXFx0XFx0Z290byBlbnF1ZXVlX2FnYWluO1xcbiBcXHR9XFxuIFxcbi1cXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9wYWNrZXRzKys7XFxuLVxcdG5kZXYtXFx1MDAzZXN0YXRzLnJ4X2J5dGVzICs9IGxlbjtcXG4rXFx0dHN0YXRzID0gdGhpc19jcHVfcHRyKG5kZXYtXFx1MDAzZXRzdGF0cyk7XFxuK1xcdGZsYWdzID0gdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbl9pcnFzYXZlKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXN5bmNwKTtcXG4rXFx0dTY0X3N0YXRzX2luYyhcXHUwMDI2dHN0YXRzLVxcdTAwM2VyeF9wYWNrZXRzKTtcXG4rXFx0dTY0X3N0YXRzX2FkZChcXHUwMDI2dHN0YXRzLVxcdTAwM2VyeF9ieXRlcywgbGVuKTtcXG4rXFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmRfaXJxcmVzdG9yZShcXHUwMDI2dHN0YXRzLVxcdTAwM2VzeW5jcCwgZmxhZ3MpO1xcbiBcXG4gXFx0bmV3X3NrYiA9IG5ldGRldl9hbGxvY19za2IobmRldiwgbmRldi1cXHUwMDNlbXR1ICsgRVRIX0hMRU4pO1xcbiBcXHRpZiAoIW5ld19za2IpIHtcXG4tXFx0XFx0bmRldi1cXHUwMDNlc3RhdHMucnhfZHJvcHBlZCsrO1xcbitcXHRcXHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Ryb3BwZWQpO1xcbiBcXHRcXHRnb3RvIGVucXVldWVfYWdhaW47XFxuIFxcdH1cXG4gXFxuQEAgLTE2Niw4ICsxNzEsOCBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3J4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxcbiBcXHRyYyA9IG50Yl90cmFuc3BvcnRfcnhfZW5xdWV1ZShxcCwgc2tiLCBza2ItXFx1MDAzZWRhdGEsIG5kZXYtXFx1MDAzZW10dSArIEVUSF9ITEVOKTtcXG4gXFx0aWYgKHJjKSB7XFxuIFxcdFxcdGRldl9rZnJlZV9za2JfYW55KHNrYik7XFxuLVxcdFxcdG5kZXYtXFx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xcbi1cXHRcXHRuZGV2LVxcdTAwM2VzdGF0cy5yeF9maWZvX2Vycm9ycysrO1xcbitcXHRcXHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Vycm9ycyk7XFxuK1xcdFxcdERFVl9TVEFUU19JTkMobmRldiwgcnhfZmlmb19lcnJvcnMpO1xcbiBcXHR9XFxuIH1cXG4gXFxuQEAgLTIxMCwyNSArMjE1LDM5IEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfdHhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsXFxuIHtcXG4gXFx0c3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnEgPSBxcF9kYXRhO1xcbiBcXHRzdHJ1Y3QgbnRiX25ldGRldiAqZGV2ID0gcS1cXHUwMDNlbnRkZXY7XFxuK1xcdHN0cnVjdCBwY3B1X3N3X25ldHN0YXRzICp0c3RhdHM7XFxuIFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbitcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHRib29sIHJlZ2lzdGVyZWQ7XFxuIFxcbiBcXHRuZGV2ID0gZGV2LVxcdTAwM2VuZGV2O1xcbiBcXHRza2IgPSBkYXRhO1xcbiBcXHRpZiAoIXNrYiB8fCAhbmRldilcXG4gXFx0XFx0cmV0dXJuO1xcbiBcXG4rXFx0cmN1X3JlYWRfbG9jaygpO1xcbitcXHRyZWdpc3RlcmVkID0gUkVBRF9PTkNFKG5kZXYtXFx1MDAzZXJlZ19zdGF0ZSkgPT0gTkVUUkVHX1JFR0lTVEVSRUQ7XFxuK1xcdGlmICghcmVnaXN0ZXJlZClcXG4rXFx0XFx0Z290byBmcmVlX3NrYjtcXG4rXFxuIFxcdGlmIChsZW4gXFx1MDAzZSAwKSB7XFxuLVxcdFxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X3BhY2tldHMrKztcXG4tXFx0XFx0bmRldi1cXHUwMDNlc3RhdHMudHhfYnl0ZXMgKz0gc2tiLVxcdTAwM2VsZW47XFxuK1xcdFxcdC8qIFRoZSBtZW1jcHkga3RocmVhZCBjYW4gbWlncmF0ZSwgc28gcGluIHRoZSBwZXItQ1BVIHVwZGF0ZS4gKi9cXG4rXFx0XFx0dHN0YXRzID0gZ2V0X2NwdV9wdHIobmRldi1cXHUwMDNldHN0YXRzKTtcXG4rXFx0XFx0ZmxhZ3MgPSB1NjRfc3RhdHNfdXBkYXRlX2JlZ2luX2lycXNhdmUoXFx1MDAyNnRzdGF0cy1cXHUwMDNlc3luY3ApO1xcbitcXHRcXHR1NjRfc3RhdHNfaW5jKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXR4X3BhY2tldHMpO1xcbitcXHRcXHR1NjRfc3RhdHNfYWRkKFxcdTAwMjZ0c3RhdHMtXFx1MDAzZXR4X2J5dGVzLCBza2ItXFx1MDAzZWxlbik7XFxuK1xcdFxcdHU2NF9zdGF0c191cGRhdGVfZW5kX2lycXJlc3RvcmUoXFx1MDAyNnRzdGF0cy1cXHUwMDNlc3luY3AsIGZsYWdzKTtcXG4rXFx0XFx0cHV0X2NwdV9wdHIobmRldi1cXHUwMDNldHN0YXRzKTtcXG4gXFx0fSBlbHNlIHtcXG4tXFx0XFx0bmRldi1cXHUwMDNlc3RhdHMudHhfZXJyb3JzKys7XFxuLVxcdFxcdG5kZXYtXFx1MDAzZXN0YXRzLnR4X2Fib3J0ZWRfZXJyb3JzKys7XFxuK1xcdFxcdERFVl9TVEFUU19JTkMobmRldiwgdHhfZXJyb3JzKTtcXG4rXFx0XFx0REVWX1NUQVRTX0lOQyhuZGV2LCB0eF9hYm9ydGVkX2Vycm9ycyk7XFxuIFxcdH1cXG4gXFxuK2ZyZWVfc2tiOlxcbiBcXHRkZXZfa2ZyZWVfc2tiX2FueShza2IpO1xcbiBcXG4tXFx0aWYgKG50Yl90cmFuc3BvcnRfdHhfZnJlZV9lbnRyeShxcCkgXFx1MDAzZT0gdHhfc3RhcnQpIHtcXG4rXFx0aWYgKHJlZ2lzdGVyZWQgXFx1MDAyNlxcdTAwMjYgbnRiX3RyYW5zcG9ydF90eF9mcmVlX2VudHJ5KHFwKSBcXHUwMDNlPSB0eF9zdGFydCkge1xcbiBcXHRcXHQvKiBNYWtlIHN1cmUgYW55Ym9keSBzdG9wcGluZyB0aGUgcXVldWUgYWZ0ZXIgdGhpcyBzZWVzIHRoZSBuZXdcXG4gXFx0XFx0ICogdmFsdWUgb2YgbnRiX3RyYW5zcG9ydF90eF9mcmVlX2VudHJ5KClcXG4gXFx0XFx0ICovXFxuQEAgLTIzNyw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxcbiBcXHRcXHQgICAgbnRiX3RyYW5zcG9ydF9saW5rX3F1ZXJ5KHEtXFx1MDAzZXFwKSlcXG4gXFx0XFx0XFx0bmV0aWZfd2FrZV9zdWJxdWV1ZShuZGV2LCBxLVxcdTAwM2VxaWQpO1xcbiBcXHR9XFxuK1xcdHJjdV9yZWFkX3VubG9jaygpO1xcbiB9XFxuIFxcbiBzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9xdWV1ZV9oYW5kbGVycyBudGJfbmV0ZGV2X2hhbmRsZXJzID0ge1xcbkBAIC0yNzcsNyArMjk3LDcgQEAgc3RhdGljIG5ldGRldl90eF90IG50Yl9uZXRkZXZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gZHJvcDpcXG4gXFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcXG4tXFx0bmRldi1cXHUwMDNlc3RhdHMudHhfZHJvcHBlZCsrO1xcbitcXHRERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Ryb3BwZWQpO1xcbiBcXHRyZXR1cm4gTkVUREVWX1RYX09LO1xcbiB9XFxuIFxcbkBAIC02NDcsNiArNjY3LDcgQEAgc3RhdGljIGludCBudGJfbmV0ZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmNsaWVudF9kZXYpXFxuIFxcdH1cXG4gXFxuIFxcdG5kZXYtXFx1MDAzZWZlYXR1cmVzID0gTkVUSUZfRl9ISUdIRE1BO1xcbitcXHRuZGV2LVxcdTAwM2VwY3B1X3N0YXRfdHlwZSA9IE5FVERFVl9QQ1BVX1NUQVRfVFNUQVRTO1xcbiBcXG4gXFx0bmRldi1cXHUwMDNlcHJpdl9mbGFncyB8PSBJRkZfTElWRV9BRERSX0NIQU5HRTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjM0OjI1LjkzMzE3MjQ2NFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6Mjk5MzIzNDU5ODk4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJudGJfbmV0ZGV2IChWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydCkgcmVxdWlyZXMgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSAoTlRCKSBoYXJkd2FyZSBkZXZpY2VzIChzdWNoIGFzIEludGVsLCBBTUQsIElEVCwgb3IgU3dpdGNodGVjIFBDSWUgTlRCIGNvbnRyb2xsZXJzKSwgd2hpY2ggYXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY29udHJvbGxlcnMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTUzYjczZjkxMTA0NDNlMDhiZTIxMTcyMTU5ZDQ5YTExOGUxYTJiN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDMwIDE1OjM0OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jIGIvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXG5pbmRleCA5YzE3MTY5N2U3NjIwLi4yYzA0YmU2ZDYxYTg1IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbnRiX25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNcbkBAIC0xMjcsOCArMTI3LDEwIEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsXG4ge1xuIFx0c3RydWN0IG50Yl9uZXRkZXZfcXVldWUgKnEgPSBxcF9kYXRhO1xuIFx0c3RydWN0IG50Yl9uZXRkZXYgKmRldiA9IHEtXHUwMDNlbnRkZXY7XG4rXHRzdHJ1Y3QgcGNwdV9zd19uZXRzdGF0cyAqdHN0YXRzO1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYiwgKm5ld19za2I7XG4gXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4gXHRpbnQgcmM7XG4gXG4gXHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG5AQCAtMTM5LDE3ICsxNDEsMjAgQEAgc3RhdGljIHZvaWQgbnRiX25ldGRldl9yeF9oYW5kbGVyKHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcCwgdm9pZCAqcXBfZGF0YSxcbiBcdG5ldGRldl9kYmcobmRldiwgXCIlczogJWQgYnl0ZSBwYXlsb2FkIHJlY2VpdmVkXFxuXCIsIF9fZnVuY19fLCBsZW4pO1xuIFxuIFx0aWYgKGxlbiBcdTAwM2MgMCkge1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnJ4X2Vycm9ycysrO1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKztcbitcdFx0REVWX1NUQVRTX0lOQyhuZGV2LCByeF9lcnJvcnMpO1xuK1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2xlbmd0aF9lcnJvcnMpO1xuIFx0XHRnb3RvIGVucXVldWVfYWdhaW47XG4gXHR9XG4gXG4tXHRuZGV2LVx1MDAzZXN0YXRzLnJ4X3BhY2tldHMrKztcbi1cdG5kZXYtXHUwMDNlc3RhdHMucnhfYnl0ZXMgKz0gbGVuO1xuK1x0dHN0YXRzID0gdGhpc19jcHVfcHRyKG5kZXYtXHUwMDNldHN0YXRzKTtcbitcdGZsYWdzID0gdTY0X3N0YXRzX3VwZGF0ZV9iZWdpbl9pcnFzYXZlKFx1MDAyNnRzdGF0cy1cdTAwM2VzeW5jcCk7XG4rXHR1NjRfc3RhdHNfaW5jKFx1MDAyNnRzdGF0cy1cdTAwM2VyeF9wYWNrZXRzKTtcbitcdHU2NF9zdGF0c19hZGQoXHUwMDI2dHN0YXRzLVx1MDAzZXJ4X2J5dGVzLCBsZW4pO1xuK1x0dTY0X3N0YXRzX3VwZGF0ZV9lbmRfaXJxcmVzdG9yZShcdTAwMjZ0c3RhdHMtXHUwMDNlc3luY3AsIGZsYWdzKTtcbiBcbiBcdG5ld19za2IgPSBuZXRkZXZfYWxsb2Nfc2tiKG5kZXYsIG5kZXYtXHUwMDNlbXR1ICsgRVRIX0hMRU4pO1xuIFx0aWYgKCFuZXdfc2tiKSB7XG4tXHRcdG5kZXYtXHUwMDNlc3RhdHMucnhfZHJvcHBlZCsrO1xuK1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Ryb3BwZWQpO1xuIFx0XHRnb3RvIGVucXVldWVfYWdhaW47XG4gXHR9XG4gXG5AQCAtMTY2LDggKzE3MSw4IEBAIHN0YXRpYyB2b2lkIG50Yl9uZXRkZXZfcnhfaGFuZGxlcihzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9xcCAqcXAsIHZvaWQgKnFwX2RhdGEsXG4gXHRyYyA9IG50Yl90cmFuc3BvcnRfcnhfZW5xdWV1ZShxcCwgc2tiLCBza2ItXHUwMDNlZGF0YSwgbmRldi1cdTAwM2VtdHUgKyBFVEhfSExFTik7XG4gXHRpZiAocmMpIHtcbiBcdFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy5yeF9lcnJvcnMrKztcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy5yeF9maWZvX2Vycm9ycysrO1xuK1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHJ4X2Vycm9ycyk7XG4rXHRcdERFVl9TVEFUU19JTkMobmRldiwgcnhfZmlmb19lcnJvcnMpO1xuIFx0fVxuIH1cbiBcbkBAIC0yMTAsMjUgKzIxNSwzOSBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIHtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxID0gcXBfZGF0YTtcbiBcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYgPSBxLVx1MDAzZW50ZGV2O1xuK1x0c3RydWN0IHBjcHVfc3dfbmV0c3RhdHMgKnRzdGF0cztcbiBcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRib29sIHJlZ2lzdGVyZWQ7XG4gXG4gXHRuZGV2ID0gZGV2LVx1MDAzZW5kZXY7XG4gXHRza2IgPSBkYXRhO1xuIFx0aWYgKCFza2IgfHwgIW5kZXYpXG4gXHRcdHJldHVybjtcbiBcbitcdHJjdV9yZWFkX2xvY2soKTtcbitcdHJlZ2lzdGVyZWQgPSBSRUFEX09OQ0UobmRldi1cdTAwM2VyZWdfc3RhdGUpID09IE5FVFJFR19SRUdJU1RFUkVEO1xuK1x0aWYgKCFyZWdpc3RlcmVkKVxuK1x0XHRnb3RvIGZyZWVfc2tiO1xuK1xuIFx0aWYgKGxlbiBcdTAwM2UgMCkge1xuLVx0XHRuZGV2LVx1MDAzZXN0YXRzLnR4X3BhY2tldHMrKztcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy50eF9ieXRlcyArPSBza2ItXHUwMDNlbGVuO1xuK1x0XHQvKiBUaGUgbWVtY3B5IGt0aHJlYWQgY2FuIG1pZ3JhdGUsIHNvIHBpbiB0aGUgcGVyLUNQVSB1cGRhdGUuICovXG4rXHRcdHRzdGF0cyA9IGdldF9jcHVfcHRyKG5kZXYtXHUwMDNldHN0YXRzKTtcbitcdFx0ZmxhZ3MgPSB1NjRfc3RhdHNfdXBkYXRlX2JlZ2luX2lycXNhdmUoXHUwMDI2dHN0YXRzLVx1MDAzZXN5bmNwKTtcbitcdFx0dTY0X3N0YXRzX2luYyhcdTAwMjZ0c3RhdHMtXHUwMDNldHhfcGFja2V0cyk7XG4rXHRcdHU2NF9zdGF0c19hZGQoXHUwMDI2dHN0YXRzLVx1MDAzZXR4X2J5dGVzLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0dTY0X3N0YXRzX3VwZGF0ZV9lbmRfaXJxcmVzdG9yZShcdTAwMjZ0c3RhdHMtXHUwMDNlc3luY3AsIGZsYWdzKTtcbitcdFx0cHV0X2NwdV9wdHIobmRldi1cdTAwM2V0c3RhdHMpO1xuIFx0fSBlbHNlIHtcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy50eF9lcnJvcnMrKztcbi1cdFx0bmRldi1cdTAwM2VzdGF0cy50eF9hYm9ydGVkX2Vycm9ycysrO1xuK1x0XHRERVZfU1RBVFNfSU5DKG5kZXYsIHR4X2Vycm9ycyk7XG4rXHRcdERFVl9TVEFUU19JTkMobmRldiwgdHhfYWJvcnRlZF9lcnJvcnMpO1xuIFx0fVxuIFxuK2ZyZWVfc2tiOlxuIFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbiBcbi1cdGlmIChudGJfdHJhbnNwb3J0X3R4X2ZyZWVfZW50cnkocXApIFx1MDAzZT0gdHhfc3RhcnQpIHtcbitcdGlmIChyZWdpc3RlcmVkIFx1MDAyNlx1MDAyNiBudGJfdHJhbnNwb3J0X3R4X2ZyZWVfZW50cnkocXApIFx1MDAzZT0gdHhfc3RhcnQpIHtcbiBcdFx0LyogTWFrZSBzdXJlIGFueWJvZHkgc3RvcHBpbmcgdGhlIHF1ZXVlIGFmdGVyIHRoaXMgc2VlcyB0aGUgbmV3XG4gXHRcdCAqIHZhbHVlIG9mIG50Yl90cmFuc3BvcnRfdHhfZnJlZV9lbnRyeSgpXG4gXHRcdCAqL1xuQEAgLTIzNyw2ICsyNTYsNyBAQCBzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3R4X2hhbmRsZXIoc3RydWN0IG50Yl90cmFuc3BvcnRfcXAgKnFwLCB2b2lkICpxcF9kYXRhLFxuIFx0XHQgICAgbnRiX3RyYW5zcG9ydF9saW5rX3F1ZXJ5KHEtXHUwMDNlcXApKVxuIFx0XHRcdG5ldGlmX3dha2Vfc3VicXVldWUobmRldiwgcS1cdTAwM2VxaWQpO1xuIFx0fVxuK1x0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX3F1ZXVlX2hhbmRsZXJzIG50Yl9uZXRkZXZfaGFuZGxlcnMgPSB7XG5AQCAtMjc3LDcgKzI5Nyw3IEBAIHN0YXRpYyBuZXRkZXZfdHhfdCBudGJfbmV0ZGV2X3N0YXJ0X3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiBkcm9wOlxuIFx0ZGV2X2tmcmVlX3NrYl9hbnkoc2tiKTtcbi1cdG5kZXYtXHUwMDNlc3RhdHMudHhfZHJvcHBlZCsrO1xuK1x0REVWX1NUQVRTX0lOQyhuZGV2LCB0eF9kcm9wcGVkKTtcbiBcdHJldHVybiBORVRERVZfVFhfT0s7XG4gfVxuIFxuQEAgLTY0Nyw2ICs2NjcsNyBAQCBzdGF0aWMgaW50IG50Yl9uZXRkZXZfcHJvYmUoc3RydWN0IGRldmljZSAqY2xpZW50X2RldilcbiBcdH1cbiBcbiBcdG5kZXYtXHUwMDNlZmVhdHVyZXMgPSBORVRJRl9GX0hJR0hETUE7XG4rXHRuZGV2LVx1MDAzZXBjcHVfc3RhdF90eXBlID0gTkVUREVWX1BDUFVfU1RBVF9UU1RBVFM7XG4gXG4gXHRuZGV2LVx1MDAzZXByaXZfZmxhZ3MgfD0gSUZGX0xJVkVfQUREUl9DSEFOR0U7XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozNDoyNS45MzMxNzQ3MDRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxOTUwMDYxODA2NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIHRoZSBOVEIgTmV0ZGV2IFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvbnRiX25ldGRldi5jYC4gUmlnaHQgYXdheSwgbXkgZXhwZXJ0IGluc3RpbmN0cyBraWNrIGluLiBXaGF0J3MgYG50Yl9uZXRkZXZgIGFsbCBhYm91dD8gSXMgdGhpcyBzcGVjaWZpYyBoYXJkd2FyZSwgb3IgY2FuIGl0IGJlIGVtdWxhdGVkPyBEb2VzIGl0IHJlbHkgb24gTm9uLVRyYW5zcGFyZW50IEJyaWRnZSAoTlRCKSBmdW5jdGlvbmFsaXR5IHRoYXQgbWlnaHQgYmUgdmlydHVhbGl6ZWQsIGVtdWxhdGVkLCBvciwgaW4gY29udHJhc3QsIG1hbmRhdGUgY2VydGFpbiBwaHlzaWNhbCBoYXJkd2FyZSBjb21wb25lbnRzPyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBmb3VuZGF0aW9uIGhlcmUgYmVmb3JlIGRpdmluZyB0b28gZGVlcC5cblxuTXkgbmV4dCBtb3ZlIGlzIHRvIGJyb2FkZW4gdGhlIHNlYXJjaC4gSSBuZWVkIHRvIGV4YW1pbmUgYGRyaXZlcnMvbnRiL2AgYW5kIHRoZW4gdGhlIHRhcmdldCBmaWxlIGBkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNgIGFuZCBhbHNvIHRoZSBhc3NvY2lhdGVkIEtjb25maWcgZmlsZXMsIGVzcGVjaWFsbHkgZm9yIHRoZSBgbnRiYCBhbmQgYG5ldGAgc2VjdGlvbnMuIFRoZXNlIGNvbmZpZyBmaWxlcyB3aWxsIGdpdmUgbWUgYSBjbGVhciBwaWN0dXJlIG9mIGRlcGVuZGVuY2llcyBhbmQgYnVpbGQgb3B0aW9ucy5cblxuVG8gYWNjZWxlcmF0ZSB0aGlzLCBJJ20gZ29pbmcgdG8gbGV2ZXJhZ2UgbXkgdG9vbHMuIEknbGwgcmVhY2ggZm9yIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBlZmZpY2llbnRseSBwYXJzZSBgbnRiX25ldGRldi5jYCBhbmQgcGVlayBpbnRvIGBkcml2ZXJzL250Yi9LY29uZmlnYCBvciBgZHJpdmVycy9uZXQvS2NvbmZpZ2AgdG8gcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcy4gVGhpcyBzaG91bGQgcHJvdmlkZSB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGNvbnRpbnVlIG15IGFuYWx5c2lzIGFuZCBmdWxseSB1bmRlcnN0YW5kIHRoZSBwYXRjaCdzIGNoYW5nZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozNzo0MC45MzkzNTgzMjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjgwNDM5MzI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5UQl9ORVRERVZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZz0zNzA9Y29uZmlnIE5FVF9QT0xMX0NPTlRST0xMRVJcXG4tLVxcbmRyaXZlcnMvbmV0L0tjb25maWctMzcyLVxcbmRyaXZlcnMvbmV0L0tjb25maWc6MzczOmNvbmZpZyBOVEJfTkVUREVWXFxuZHJpdmVycy9uZXQvS2NvbmZpZy0zNzQtXFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvTWFrZWZpbGU9ODI9b2JqLSQoQ09ORklHX0hZUEVSVl9ORVQpICs9IGh5cGVydi9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZTo4MzpvYmotJChDT05GSUdfTlRCX05FVERFVikgKz0gbnRiX25ldGRldi5vXFxuZHJpdmVycy9uZXQvTWFrZWZpbGUtODQtXFxuLS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtMTItXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjEzOiNkZWZpbmUgTlRCX05FVERFVl9WRVJcXHRcXFwiMC43XFxcIlxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xNC1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM9MTU9TU9EVUxFX0RFU0NSSVBUSU9OKEtCVUlMRF9NT0ROQU1FKTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6MTY6TU9EVUxFX1ZFUlNJT04oTlRCX05FVERFVl9WRVIpO1xcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0xNy1NT0RVTEVfTElDRU5TRShcXFwiRHVhbCBCU0QvR1BMXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM9Mjc9c3RhdGljIHVuc2lnbmVkIGludCB0eF9zdG9wID0gNTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtMjgtXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjI5OiNkZWZpbmUgTlRCX05FVERFVl9NQVhfUVVFVUVTXFx0XFx0NjRcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6MzA6I2RlZmluZSBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTXFx0MVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy0zMS1cXG4tLVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz00NTg9c3RhdGljIHZvaWQgbnRiX2dldF9kcnZpbmZvKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTQ2My1cXHRzdHJzY3B5KGluZm8tXFx1MDAzZWRyaXZlciwgS0JVSUxEX01PRE5BTUUsIHNpemVvZihpbmZvLVxcdTAwM2Vkcml2ZXIpKTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6NDY0OlxcdHN0cnNjcHkoaW5mby1cXHUwMDNldmVyc2lvbiwgTlRCX05FVERFVl9WRVIsIHNpemVvZihpbmZvLVxcdTAwM2V2ZXJzaW9uKSk7XFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTQ2NS1cXHRzdHJzY3B5KGluZm8tXFx1MDAzZWJ1c19pbmZvLCBwY2lfbmFtZShkZXYtXFx1MDAzZXBkZXYpLCBzaXplb2YoaW5mby1cXHUwMDNlYnVzX2luZm8pKTtcXG4tLVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz02MzY9c3RhdGljIGludCBudGJfbmV0ZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmNsaWVudF9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjQ5LVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYzo2NTA6XFx0bmRldiA9IGFsbG9jX2V0aGVyZGV2X21xKHNpemVvZigqZGV2KSwgTlRCX05FVERFVl9NQVhfUVVFVUVTKTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjUxLVxcdGlmICghbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy02NjEtXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjY2MjpcXHRkZXYtXFx1MDAzZXF1ZXVlcyA9IGt6YWxsb2Nfb2JqcygqZGV2LVxcdTAwM2VxdWV1ZXMsIE5UQl9ORVRERVZfTUFYX1FVRVVFUyxcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjYzLVxcdFxcdFxcdFxcdCAgIEdGUF9LRVJORUwpO1xcbi0tXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTY4NS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6Njg2OlxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTOyBxKyspIHtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNjg3LVxcdFxcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXF1ZXVlc1txXTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6Mzc6NDEuMjE5ODAzOTU2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6ODU5MTIzMjI4NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqSW52ZXN0aWdhdGluZyBOVEIgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBOVEIgYnVzaW5lc3MgYW5kIGZpZ3VyZSBvdXQgdGhlIG5pdHR5LWdyaXR0eSBvZiBpdHMgb3BlcmF0aW9uLiBNeSBwcmltYXJ5IGZvY3VzIGlzIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlciBsYW5kc2NhcGUsIHRoZSBkaWZmZXJlbnQgcGxheWVycyBpbXBsZW1lbnRpbmcgTlRCIHRyYW5zcG9ydC4gSSBuZWVkIHRvIGlkZW50aWZ5IHdoaWNoIGRyaXZlcnMgaGFuZGxlIHRoZSB0cmFuc3BvcnQgaXRzZWxmLCB3aGljaCBvbmVzIGFjdCBhcyBOVEIgY2xpZW50cywgYW5kIHdoZXRoZXIgdGhlc2UgYXJlIGhhcmR3YXJlLXNwZWNpZmljLCB1dGlsaXplIGR1bW15IGltcGxlbWVudGF0aW9ucywgb3IgZW1wbG95IGVtdWxhdGlvbi5cblxuTXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJJ2xsIGluaXRpYXRlIGEgZm9jdXNlZCBzZWFyY2guIEknbGwgemVybyBpbiBvbiB0aGUga2VybmVsIGNvZGUgdXNpbmcga2V5d29yZHMgbGlrZSBgbnRiX3JlZ2lzdGVyX2NsaWVudGAgYW5kIGBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudGAuIFRoZXNlIGZ1bmN0aW9uIGNhbGxzIHNob3VsZCBiZSB0aGUgYnJlYWRjcnVtYnMgSSBuZWVkIHRvIHRyYWNlIHRoZSBOVEIgY2xpZW50IHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGFuZCwgaG9wZWZ1bGx5LCByZXZlYWwgdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlIGFuZCBwb3RlbnRpYWwgZHJpdmVyIGludGVyYWN0aW9ucy4gVGhpcyB0YXJnZXRlZCBhcHByb2FjaCBpcyBjcnVjaWFsIGZvciBlZmZpY2llbnRseSBtYXBwaW5nIG91dCB0aGUgc29mdHdhcmUgY29tcG9uZW50cyBpbnZvbHZlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkxNiwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjM5OjA3LjEzMjEzMDk0NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjM0NDUxNzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYz03NTI9c3RhdGljIGludCBfX2luaXQgbnRiX25ldGRldl9pbml0X21vZHVsZSh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTc1NS1cXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmM6NzU2OlxcdHJjID0gbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2KEtCVUlMRF9NT0ROQU1FKTtcXG5kcml2ZXJzL25ldC9udGJfbmV0ZGV2LmMtNzU3LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbmV0L250Yl9uZXRkZXYuYy03NTktXFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jOjc2MDpcXHRyYyA9IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50KFxcdTAwMjZudGJfbmV0ZGV2X2NsaWVudCk7XFxuZHJpdmVycy9uZXQvbnRiX25ldGRldi5jLTc2MS1cXHRpZiAocmMpIHtcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zOTU9RVhQT1JUX1NZTUJPTF9HUEwobnRiX3RyYW5zcG9ydF91bnJlZ2lzdGVyX2NsaWVudF9kZXYpO1xcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM5Ny0vKipcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6Mzk4OiAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldiAtIFJlZ2lzdGVyIE5UQiBjbGllbnQgZGV2aWNlXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM5OS0gKiBAZGV2aWNlX25hbWU6IE5hbWUgb2YgTlRCIGNsaWVudCBkZXZpY2VcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MDQtICovXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQwNTppbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2KGNoYXIgKmRldmljZV9uYW1lKVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MDYte1xcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1MS19XFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQ1MjpFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYpO1xcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NTMtXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1NC0vKipcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDU1OiAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkcml2ZXJcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDU2LSAqIEBkcnY6IE5UQiBjbGllbnQgZHJpdmVyIHRvIGJlIHJlZ2lzdGVyZWRcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00NjEtICovXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQ2MjppbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnQoc3RydWN0IG50Yl90cmFuc3BvcnRfY2xpZW50ICpkcnYpXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ2My17XFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDcwLX1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDcxOkVYUE9SVF9TWU1CT0xfR1BMKG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50KTtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDcyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTozOTowOC43NjY1ODgxNzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MTQxNTUwNDM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgTlRCIERyaXZlciBMYW5kc2NhcGUqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBOVEIgZHJpdmVyIHNpdHVhdGlvbi4gRmlyc3QsIEknbGwgaGVhZCBzdHJhaWdodCB0byBgZHJpdmVycy9udGIvYC4gSSdtIGN1cmlvdXM6IGRvZXMgdGhpcyBkaXJlY3RvcnkgaG91c2UgZHJpdmVycyBmb3IgKmJvdGgqIHZpcnR1YWwgb3IgXCJkdW1teVwiIE5UQiBoYXJkd2FyZSwgYW5kIHRoZSBhY3R1YWwgcGh5c2ljYWwgaGFyZHdhcmUgYW5kIHN3aXRjaGVzPyBJdCdzIGltcG9ydGFudCB0byBrbm93IHRoZSBzY29wZSBvZiB3aGF0J3Mgc3VwcG9ydGVkLiBUbyBmaW5kIG91dCwgSSdtIGdvaW5nIHRvIGxpc3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBgZHJpdmVycy9udGJgIGRpcmVjdG9yeSBpdHNlbGYuIFRoZW4sIEkgd2lsbCBpbnNwZWN0IGl0cyBzdWJkaXJlY3RvcmllcyBhbmQgS2NvbmZpZyBmaWxlcyDigJMgdGhhdCBzaG91bGQgZ2l2ZSBtZSBhIHByZXR0eSBjbGVhciBwaWN0dXJlIG9mIHRoZSBkcml2ZXIncyBvdmVyYWxsIHN0cnVjdHVyZSwgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgdGhlIHR5cGVzIG9mIE5UQiBkZXZpY2VzIGl0J3MgbWVhbnQgdG8gc3VwcG9ydC4gVGltZSB0byBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODYxLCJPdXRwdXRUb2tlbnMiOjIyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6Mzk6NTAuMTgyMDk0MjAyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbnRiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImNvcmUuY1wiLFxuICAgIFwibXNpLmNcIixcbiAgICBcIm50Yl90cmFuc3BvcnQuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBbXG4gICAgXCJod1wiLFxuICAgIFwidGVzdFwiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjM5OjUwLjE4MjE0NzM4MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjE1MzUyMjA4MzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byB0aGUgTlRCIFN1YnN5c3RlbSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIHRoZSBOVEIgY29kZSBiYXNlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgdGVzdCBpbmZyYXN0cnVjdHVyZSBhbmQgaGFyZHdhcmUgaW1wbGVtZW50YXRpb24gYmVmb3JlIEkgY2FuIGFzc2VzcyBhbnl0aGluZyBuZXcuIFNwZWNpZmljYWxseSwgSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IHdpdGggYGRyaXZlcnMvbnRiL3Rlc3QvYCB0byBzZWUgd2hhdCBraW5kIG9mIHRlc3QgY2FzZXMgYXJlIGluIHBsYWNlLiBBcmUgdGhleSBjb21wcmVoZW5zaXZlPyBEbyB0aGV5IGNvdmVyIHRoZSBzY2VuYXJpb3MgSSdtIGludGVyZXN0ZWQgaW4/IFdoYXQncyB0aGVpciB0ZXN0aW5nIHN0cmF0ZWd5PyBUaGVuLCBJIGhhdmUgdG8gbG9vayBpbnRvIGBkcml2ZXJzL250Yi9ody9gIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucywgcmVnaXN0ZXIgbGF5b3V0cywgYW5kIGFueSBxdWlya3MuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gaG93IHRoZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24gaXMgaGFuZGxlZC4gRmluYWxseSwgSSdsbCBuZWVkIHRvIGNoZWNrIGBkcml2ZXJzL250Yi9LY29uZmlnYC4gVGhpcyB3aWxsIGhlbHAgbWUgcXVpY2tseSB1bmRlcnN0YW5kIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50IHRvIHRoZSBpc3N1ZSBvciBmZWF0dXJlIEknbSBjdXJyZW50bHkgZm9jdXNlZCBvbi4gVGhpcyBxdWljayB0cmlhZ2Ugd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBhbmQgY29udHJpYnV0aW5nIHRvIHRoZSBOVEIgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjEzOSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo0MDowNS41MzQzNTg1ODJaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkRpclwiOiBcImRyaXZlcnMvbnRiL3Rlc3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwibnRiX21zaV90ZXN0LmNcIixcbiAgICBcIm50Yl9wZXJmLmNcIixcbiAgICBcIm50Yl9waW5ncG9uZy5jXCIsXG4gICAgXCJudGJfdG9vbC5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQwOjA1LjUzNDQxNDUxMloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMzA4MjM1NTgwNjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqTmF2aWdhdGluZyB0aGUgSGFyZHdhcmUgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZGl2ZSBpbnRvIHRoZSBOZXR3b3JrIFRyYW5zcG9ydCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBnbyBzdHJhaWdodCB0byB0aGUgaGVhcnQgb2YgdGhlIG1hdHRlciDigJMgdGhlIGhhcmR3YXJlLXNwZWNpZmljIGltcGxlbWVudGF0aW9ucy4gVGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgbG9va2luZyBmb3IgdGhlIGNvcmUgZHJpdmVycyBhbmQgdGhlaXIgaW50ZXJhY3Rpb24gd2l0aCB0aGUgTlRCIGhhcmR3YXJlIGlzIHdpdGhpbiB0aGUgYGRyaXZlcnMvbnRiL2h3L2AgZGlyZWN0b3J5LiBUaGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb25zIGFuZCBkYXRhIHN0cnVjdHVyZXMgdGhhdCBkaXJlY3RseSBpbnRlcmZhY2Ugd2l0aCB0aGUgc2lsaWNvbi4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwYWluISkgaGFwcGVucywgc28gbGV0J3Mgc3RhcnQgdGhlcmUgYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDg2LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ1OjM2LjM1Nzk3NDc5NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9udGIvaHdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogbnVsbCxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImFtZFwiLFxuICAgIFwiZXBmXCIsXG4gICAgXCJpZHRcIixcbiAgICBcImludGVsXCIsXG4gICAgXCJtc2NjXCJcbiAgXVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDU6MzYuMzU4MDI5MDc0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIzNzE1NDExMDk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgUG90ZW50aWFsIE5UQi9FUEYgRW11bGF0aW9uIFN0cmF0ZWdpZXMqKlxuXG5Pa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBOVEIvRVBGIHNpdHVhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHNlZSB3aGF0IGtpbmQgb2YgaGFyZHdhcmUtc3BlY2lmaWMgaW5mb3JtYXRpb24gZXhpc3RzIHdpdGhpbiB0aGUgZHJpdmVyIHN0cnVjdHVyZSwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9udGIvaHcvZXBmYCBkaXJlY3RvcnksIG9yIHBvdGVudGlhbGx5IG90aGVyIGhhcmR3YXJlLXJlbGF0ZWQgZGlyZWN0b3JpZXMuIEkgbmVlZCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBoYXJkd2FyZSBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaWYgaXQncyBldmVuIGZlYXNpYmxlIHRvIGVtdWxhdGUgdGhpcy5cblxuQWhhISBgZXBmYCBpcyBQQ0kgRW5kcG9pbnQgRnJhbWV3b3JrLiBUaGF0J3MgYSBrZXkgcGllY2Ugb2YgdGhlIHB1enpsZS4gVGhlIGJpZyBxdWVzdGlvbiBpczogY2FuIHdlIGdldCBhd2F5IHdpdGggZW11bGF0aW5nIHRoZSBFbmRwb2ludCBGcmFtZXdvcmsgd2l0aGluIFFFTVUgb3IgZXZlbiB3aXRoIHNvbWUgc29ydCBvZiBkdW1teSBpbXBsZW1lbnRhdGlvbj8gVGhhdCdzIHdoYXQgSSByZWFsbHkgbmVlZCB0byBhc2NlcnRhaW4gaGVyZS5cblxuU28sIEknbGwgc3RhcnQgYnkgc3lzdGVtYXRpY2FsbHkgZXhhbWluaW5nIHRoZSBjb2RlIGluIGBkcml2ZXJzL250Yi9ody9lcGYvYCwgYW5kIHRoZW4gcGl2b3Qgb3ZlciB0byBgZHJpdmVycy9wY2kvZW5kcG9pbnQvYCB0byBzZWUgd2hhdCB1c2VmdWwgYnVpbGRpbmcgYmxvY2tzIGFscmVhZHkgZXhpc3QgdGhhdCBJIGNhbiBsZXZlcmFnZS4gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgdGhlIHRyYW5zcG9ydCBsYXllciBpdHNlbGYg4oCTIHdoYXQgYWJvdXQgYG50Yl90cmFuc3BvcnRgPyBUaGF0J3MgZGVmaW5pdGVseSByZWxldmFudC5cblxuRmluYWxseSwgSSdsbCB3YW50IHRvIGxldmVyYWdlIHRoZSBgZHJpdmVycy9udGIvS2NvbmZpZ2AgdG8gZGlzY292ZXIgd2hhdCBjb25maWcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlLCBvciB3aGF0IG1pZ2h0IGJlIGRlcGVuZGVudCBvbi4gTWF5YmUgSSBjYW4gdXNlIHJlYWQtZmlsZSBvciBncmVwcGVyLCBkZXBlbmRpbmcgb24gdGhlIHRvb2xjaGFpbiwgdG8gZWZmaWNpZW50bHkgcHVsbCBvdXQgdGhlIGtleSBjb25maWd1cmF0aW9ucy4gSSBuZWVkIHRoZSBiaWcgcGljdHVyZSwgYW5kIGhvdyB0aGUgZGlmZmVyZW50IGRyaXZlcnMgcmVsYXRlIHRvIGVhY2ggb3RoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY3MDIsIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTEsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ2OjAwLjA3MzQ0MjY1MloiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI1NzU3ODI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9udGJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnRiL0tjb25maWc6MjptZW51Y29uZmlnIE5UQlxcbmRyaXZlcnMvbnRiL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udGIvS2NvbmZpZz0xND1pZiBOVEJcXG5kcml2ZXJzL250Yi9LY29uZmlnLTE1LVxcbmRyaXZlcnMvbnRiL0tjb25maWc6MTY6Y29uZmlnIE5UQl9NU0lcXG5kcml2ZXJzL250Yi9LY29uZmlnLTE3LVxcdGJvb2wgXFxcIk1TSSBJbnRlcnJ1cHQgU3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnRiL0tjb25maWc9Mjk9c291cmNlIFxcXCJkcml2ZXJzL250Yi90ZXN0L0tjb25maWdcXFwiXFxuZHJpdmVycy9udGIvS2NvbmZpZy0zMC1cXG5kcml2ZXJzL250Yi9LY29uZmlnOjMxOmNvbmZpZyBOVEJfVFJBTlNQT1JUXFxuZHJpdmVycy9udGIvS2NvbmZpZy0zMi1cXHR0cmlzdGF0ZSBcXFwiTlRCIFRyYW5zcG9ydCBDbGllbnRcXFwiXFxuLS1cXG5kcml2ZXJzL250Yi9ody9hbWQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnRiL2h3L2FtZC9LY29uZmlnOjI6Y29uZmlnIE5UQl9BTURcXG5kcml2ZXJzL250Yi9ody9hbWQvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJBTUQgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udGIvaHcvZXBmL0tjb25maWc6MTpjb25maWcgTlRCX0VQRlxcbmRyaXZlcnMvbnRiL2h3L2VwZi9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIkdlbmVyaWMgRVBGIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9udGIvaHcvaWR0L0tjb25maWc6Mjpjb25maWcgTlRCX0lEVFxcbmRyaXZlcnMvbnRiL2h3L2lkdC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIklEVCBQQ0llLXN3aXRjaCBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9udGIvaHcvaW50ZWwvS2NvbmZpZzoyOmNvbmZpZyBOVEJfSU5URUxcXG5kcml2ZXJzL250Yi9ody9pbnRlbC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIkludGVsIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ugc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L21zY2MvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmRyaXZlcnMvbnRiL2h3L21zY2MvS2NvbmZpZzoyOmNvbmZpZyBOVEJfU1dJVENIVEVDXFxuZHJpdmVycy9udGIvaHcvbXNjYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIk1pY3JvU2VtaSBTd2l0Y2h0ZWMgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBTdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnOjI6Y29uZmlnIE5UQl9QSU5HUE9OR1xcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEIgUGluZyBQb25nIFRlc3QgQ2xpZW50XFxcIlxcbi0tXFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnLTEwLVxcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZzoxMTpjb25maWcgTlRCX1RPT0xcXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMTItXFx0dHJpc3RhdGUgXFxcIk5UQiBEZWJ1Z2dpbmcgVG9vbCBUZXN0IENsaWVudFxcXCJcXG4tLVxcbmRyaXZlcnMvbnRiL3Rlc3QvS2NvbmZpZy0yMS1cXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWc6MjI6Y29uZmlnIE5UQl9QRVJGXFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnLTIzLVxcdHRyaXN0YXRlIFxcXCJOVEIgUkFXIFBlcmYgTWVhc3VyaW5nIFRvb2xcXFwiXFxuLS1cXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMjktXFxuZHJpdmVycy9udGIvdGVzdC9LY29uZmlnOjMwOmNvbmZpZyBOVEJfTVNJX1RFU1RcXG5kcml2ZXJzL250Yi90ZXN0L0tjb25maWctMzEtXFx0dHJpc3RhdGUgXFxcIk5UQiBNU0kgVGVzdCBDbGllbnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ2OjAwLjU5OTIwNjAyOVoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNjg1OTAwNDEyOTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGl0IGlzOlxuXG4qKkNoZWNraW5nIHRoZSBLY29uZmlnIGZvciBOVEJfTkVUREVWKipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgYE5UQl9ORVRERVZgIGlzIGRlZmluZWQsIG9yIGF0IGxlYXN0IGhvdyBpdCdzIGhhbmRsZWQsIHdpdGhpbiB0aGUga2VybmVsJ3MgYnVpbGQgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIGl0J3MgbmV0d29yay1yZWxhdGVkLCBpcyB0byBsb29rIGluIGBkcml2ZXJzL25ldC9LY29uZmlnYC4gVGhhdCdzIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgZm9yIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvbiBvcHRpb25zIHBlcnRhaW5pbmcgdG8gbmV0d29ya2luZyBoYXJkd2FyZS4gSG9wZWZ1bGx5LCBpdCdzIGRlZmluZWQgYW5kIGRvY3VtZW50ZWQgY2xlYXJseSB0aGVyZSwgaW5jbHVkaW5nIGFueSBkZXBlbmRlbmNpZXMgb3IgaGVscCB0ZXh0LiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLiBJdCdzIGFsbW9zdCBjZXJ0YWluIGl0J2xsIGJlIGRlZmluZWQgaGVyZSBvciBpbmNsdWRlZCBmcm9tIGFub3RoZXIgS2NvbmZpZyBmaWxlLiBMZXQncyBnbyFcblxuXG4iLCJJbnB1dFRva2VucyI6ODAwMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjQ4OjQ5LjE4OTI1MDA1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM3MCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM3MDpcXHRjb25maWcgTkVUX1BPTExfQ09OVFJPTExFUlxcbiAzNzE6XFx0XFx0ZGVmX2Jvb2wgTkVUUE9MTFxcbiAzNzI6XFx0XFxuIDM3MzpcXHRjb25maWcgTlRCX05FVERFVlxcbiAzNzQ6XFx0XFx0dHJpc3RhdGUgXFxcIlZpcnR1YWwgRXRoZXJuZXQgb3ZlciBOVEIgVHJhbnNwb3J0XFxcIlxcbiAzNzU6XFx0XFx0ZGVwZW5kcyBvbiBOVEJfVFJBTlNQT1JUXFxuIDM3NjpcXHRcXG4gMzc3OlxcdGNvbmZpZyBSSU9ORVRcXG4gMzc4OlxcdFxcdHRyaXN0YXRlIFxcXCJSYXBpZElPIEV0aGVybmV0IG92ZXIgbWVzc2FnaW5nIGRyaXZlciBzdXBwb3J0XFxcIlxcbiAzNzk6XFx0XFx0ZGVwZW5kcyBvbiBSQVBJRElPXFxuIDM4MDpcXHRcXG4gMzgxOlxcdGNvbmZpZyBSSU9ORVRfVFhfU0laRVxcbiAzODI6XFx0XFx0aW50IFxcXCJOdW1iZXIgb2Ygb3V0Ym91bmQgcXVldWUgZW50cmllc1xcXCJcXG4gMzgzOlxcdFxcdGRlcGVuZHMgb24gUklPTkVUXFxuIDM4NDpcXHRcXHRkZWZhdWx0IFxcXCIxMjhcXFwiXFxuIDM4NTpcXHRcXG4gMzg2OlxcdGNvbmZpZyBSSU9ORVRfUlhfU0laRVxcbiAzODc6XFx0XFx0aW50IFxcXCJOdW1iZXIgb2YgaW5ib3VuZCBxdWV1ZSBlbnRyaWVzXFxcIlxcbiAzODg6XFx0XFx0ZGVwZW5kcyBvbiBSSU9ORVRcXG4gMzg5OlxcdFxcdGRlZmF1bHQgXFxcIjEyOFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NDg6NDkuMTg5MzM0ODU4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjcwODE2NzM2NDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgTlRCIEhhcmR3YXJlIGFuZCBWaXJ0dWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IHVuZGVyc3RhbmRpbmcgb2YgaG93IE5UQiBoYXJkd2FyZSBhbmQgY2xpZW50cyBpbnRlcmFjdC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCBjYW4gSSBpbnN0YW50aWF0ZSBhbiBOVEIgZGV2aWNlIHdpdGhvdXQgcGh5c2ljYWxseSBoYXZpbmcgdGhlIGhhcmR3YXJlPyBJIHJlbWVtYmVyIHRoZXJlIGJlaW5nIHNvbWUgb3B0aW9ucyBmb3IgdmlydHVhbCBOVEIgZGV2aWNlcy4gTGV0IG1lIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byB0aGUga2VybmVsIHNvdXJjZSBjb2RlLiBJJ2xsIGZvY3VzIG9uIHBvdGVudGlhbCBhcmVhczogYGRyaXZlcnMvbnRiL2h3L2VwZi9gLCBgZHJpdmVycy9wY2kvZW5kcG9pbnQvYCwgYW5kLCBhcyBJIHJlY2FsbCwgdmlydHVhbCBOVEIgZGV2aWNlIGRyaXZlcnMuIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHdvcmtzLiBBaCwgd2FpdCBhIG1pbnV0ZSEgQmVmb3JlIEkgZ2V0IHRvbyBkZWVwIGludG8gdGhlIHNvdXJjZSBmaWxlcyB0aGVtc2VsdmVzLCBsZXQncyBzdGFydCB3aXRoIGEgaGlnaGVyLWxldmVsIHZpZXcgYW5kIGNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSBhbmQgdGhlIHNvdXJjZSBmaWxlcyB3aXRoaW4gYGRyaXZlcnMvbnRiL2h3L2VwZi9gIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55IG9idmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIG9yIGFyY2hpdGVjdHVyYWwgb3ZlcnZpZXdzLiBUaGF0IHNlZW1zIGxpa2UgYSBzbWFydGVyLCBtb3JlIGVmZmljaWVudCBhcHByb2FjaCB0byB1bmRlcnN0YW5kaW5nIHRoZSBkZXNpZ24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0NzUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjUwOjAwLjAwNjA3NDIyM1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5MDgyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL250Yi9ody9lcGYvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdGNvbmZpZyBOVEJfRVBGXFxuICAgMjpcXHRcXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBFUEYgTm9uLVRyYW5zcGFyZW50IEJyaWRnZSBzdXBwb3J0XFxcIlxcbiAgIDM6XFx0XFx0aGVscFxcbiAgIDQ6XFx0XFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyBFUEYgTlRCIG9uIGNvbmZpZ3VyYWJsZSBlbmRwb2ludC5cXG4gICA1OlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTA6MDAuMDA2MTY4MjM0WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxOTg5OTA1ODM4NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJIHdlcmUgdGhpbmtpbmcgdGhyb3VnaCB0aGUgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgRVBGIE1ha2VmaWxlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBidWlsZCBwcm9jZXNzIGZvciB0aGUgRVBGIGhhcmR3YXJlIHN1cHBvcnQgd2l0aGluIHRoZSBOVEIgZHJpdmVyLiBMZXQncyBzdGFydCB3aXRoIGBkcml2ZXJzL250Yi9ody9lcGYvTWFrZWZpbGVgLiBUaGlzIGZpbGUgd2lsbCBiZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgaG93IHRoZXNlIEVQRiBzcGVjaWZpYyBkcml2ZXJzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkIGludG8gdGhlIGxhcmdlciBOVEIgZnJhbWV3b3JrLiBJJ2xsIG5lZWQgdG8gc2VlIGhvdyBpdCBoYW5kbGVzIHRoaW5ncyBsaWtlIHNvdXJjZSBmaWxlIGluY2x1c2lvbiwgYW55IHNwZWNpZmljIGZsYWdzIGl0IHVzZXMgZm9yIHRoZSBFUEYgaGFyZHdhcmUsIGFuZCBpZiB0aGVyZSBhcmUgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9ucyBiYXNlZCBvbiBwbGF0Zm9ybSBvciBjb25maWd1cmF0aW9uLiBBcmUgdGhlcmUgYW55IHNwZWNpYWwgYnVpbGQgdGFyZ2V0cyBkZWZpbmVkIGhlcmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgRVBGPyBXaGF0J3MgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoaXMgTWFrZWZpbGUgYW5kIHRoZSBvdmVyYWxsIE5UQiBkcml2ZXIncyBidWlsZCBzeXN0ZW0/IEknbSBnb2luZyB0byBjYXJlZnVsbHkgcmV2aWV3IGl0IGFuZCB0aGVuIHByb2JhYmx5IGluc3BlY3QgdGhlIGluY2x1ZGVkIHNvdXJjZSBmaWxlcyBuZXh0IHRvIGdldCB0aGUgY29tcGxldGUgcGljdHVyZS4gSG9wZWZ1bGx5LCB0aGlzIE1ha2VmaWxlIGlzIHdlbGwtY29tbWVudGVkIGFuZCBvcmdhbml6ZWQuLi4gbGV0J3Mgc2VlIVxuXG5cbiIsIklucHV0VG9rZW5zIjo4ODg4LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1MzozOS45MDUyMzA3OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjg0ODkwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9udGIvaHcvZXBmXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcIm50Yl9od19lcGYuY1wiXG4gIF0sXG4gIFwiU3ViZGlyc1wiOiBudWxsXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1MzozOS45MDUzMTc4NVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozNDg1MjgxNDQwNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBgbnRiX2h3X2VwZi5jYCoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgYG50Yl9od19lcGYuY2AuIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGdlYXJlZCB0b3dhcmQgdW5kZXJzdGFuZGluZyBpdHMgcm9sZSB3aXRoaW4gdGhlIGJyb2FkZXIgTlRCIChOZXR3b3JrIFRyYW5zcG9ydCBCcmlkZ2UpIGhhcmR3YXJlIGVudmlyb25tZW50LiBHaXZlbiB0aGUgZmlsZSBuYW1lLCBJJ20gaW1tZWRpYXRlbHkgZXhwZWN0aW5nIHRvIHNlZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24gc3BlY2lmaWMgdG8gdGhlIEVQRiAoRW5oYW5jZWQgUGFja2V0IEZpbHRlcmluZywgb3Igd2hhdGV2ZXIgdGhlIHNwZWNpZmljIHZlbmRvciBjYWxscyB0aGVpciBoYXJkd2FyZSdzIHBhY2tldCBmaWx0ZXJpbmcgY2FwYWJpbGl0aWVzKS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl04oCZcyBoYW5kbGluZyB0aGUgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCBvZiBwYWNrZXQgZmlsdGVyaW5nIGxvZ2ljLiBJcyBpdCBzZXR0aW5nIHVwIGZpbHRlciBydWxlcywgbWFuYWdpbmcgaGFyZHdhcmUgcmVnaXN0ZXJzIGRpcmVjdGx5LCBvciBpbnRlcmFjdGluZyB3aXRoIHNvbWUgYWJzdHJhY3Rpb24gbGF5ZXI/IEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHRoZSBrZXkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbiBjYWxscyB0byB1bmRlcnN0YW5kIHRoZSBmbG93LiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIG9uIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgaW50ZXJydXB0IG1hbmFnZW1lbnQgYW5kIGVycm9yIGNvbmRpdGlvbnMuIEkgYWxzbyBuZWVkIHRvIHNlZSBpZiB0aGVyZSBpcyBhbnkgRE1BIGNvbmZpZ3VyYXRpb24sIGVzcGVjaWFsbHkgaWYgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHBhY2tldCBmaWx0ZXJpbmcgZW5naW5lLiBJJ20gYWxzbyBjdXJpb3VzIHRvIHNlZSBpZiBhbnkgb2ZmbG9hZCBjYXBhYmlsaXRpZXMgYXJlIGJlaW5nIGV4cGxvaXRlZCwgb3IgaWYgaXQgaXMgYSBmYWlybHkgYmFzaWMgaW1wbGVtZW50YXRpb24uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaWYgdGhpcyBmb2xsb3dzIG15IGV4cGVjdGF0aW9ucyFcblxuXG4iLCJJbnB1dFRva2VucyI6OTE3MSwiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1NDoxNC43NTgxMzYxNzZaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NjIyNzg2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtb2R1bGVfcGNpX2RyaXZlcnxwY2lfcmVnaXN0ZXJfZHJpdmVyfHBjaV9lbmRwb2ludFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL250Yi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYz0xMzUxPXN0YXRpYyBpbnQgX19pbml0IGFtZF9udGJfcGNpX2RyaXZlcl9pbml0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEzNTgtXFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYzoxMzU5OlxcdHJldCA9IHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmFtZF9udGJfcGNpX2RyaXZlcik7XFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYy0xMzYwLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jPTg2Mz1zdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbnRiX2VwZl9wY2lfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYy04NjgtfTtcXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jOjg2OTptb2R1bGVfcGNpX2RyaXZlcihudGJfZXBmX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtODcwLVxcbi0tXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYz0yODg2PXN0YXRpYyBpbnQgX19pbml0IGlkdF9wY2lfZHJpdmVyX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjg5NS1cXHQvKiBSZWdpc3RlciB0aGUgTlRCIGhhcmR3YXJlIGRyaXZlciB0byBoYW5kbGUgdGhlIFBDSSBkZXZpY2UgKi9cXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jOjI4OTY6XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aWR0X3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjg5Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz0yMDY5PXN0YXRpYyBpbnQgX19pbml0IGludGVsX250Yl9wY2lfZHJpdmVyX2luaXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMjA3Ni1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjIwNzc6XFx0cmV0ID0gcGNpX3JlZ2lzdGVyX2RyaXZlcihcXHUwMDI2aW50ZWxfbnRiX3BjaV9kcml2ZXIpO1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMjA3OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1NDoxNS4yNTQzNjc4MzVaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTA0OTQwOTcxNjI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50IGRvd246XG5cbioqTlRCIERyaXZlciBJbnZlc3RpZ2F0aW9uKipcblxuT2theSwgZmlyc3QgdGhvdWdodDogYWxsIHRoZSBkcml2ZXJzIEknbSBzZWVpbmcgdW5kZXIgYGRyaXZlcnMvbnRiL2h3L2Agc2VlbSB0byBiZSBvcGVyYXRpbmcgb24gUENJIGRldmljZXMuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQsIGJ1dCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy4gSSBuZWVkIHRvIGdldCBhIGNvbXBsZXRlIHBpY3R1cmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgTmV0d29yayBUcmFuc3BvcnQgQmxvY2sgKE5UQikgZHJpdmVycyBsdXJraW5nIGFyb3VuZCBpbiB0aGUga2VybmVsLCBvciBwZXJoYXBzIGFueSBjb2RlIHRoYXQgKmNyZWF0ZXMqIE5UQiBkZXZpY2VzIGluIGEgZGlmZmVyZW50IHdheT8gSSBjYW4ndCBhc3N1bWUgdGhhdCdzIHRoZSAqb25seSogd2F5IHRoZSBOVEIgZnVuY3Rpb25hbGl0eSBpcyBleHBvc2VkLlxuXG5TbywgbGV0J3MgZHJpbGwgZG93biBhIGJpdCBkZWVwZXIuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbnRiL2NvcmUuY2AuIFNwZWNpZmljYWxseSwgSSBzaG91bGQgbG9vayBhdCBob3cgdGhlc2UgTlRCIGRldmljZXMgYXJlIGJlaW5nIHJlZ2lzdGVyZWQuIFRoZSBgbnRiX3JlZ2lzdGVyX2RldmljZWAgZnVuY3Rpb24gaXMgdGhlIGtleSBoZXJlLiBUaGF0IHNob3VsZCBzaG93IG1lIHRoZSBjZW50cmFsIHJlZ2lzdHJhdGlvbiBwb2ludCBhbmQgZ2l2ZSBtZSBjb250ZXh0IGFzIHRvIHdoZXJlIGFuZCBob3cgdGhlc2UgZGV2aWNlcyBhcmUgZXhwb3NlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTAwODIsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1NjowMC4xOTUzNDI0MVoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4NTUwMDMxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGJfcmVnaXN0ZXJfZGV2aWNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbnRiL2NvcmUuYz05OT1FWFBPUlRfU1lNQk9MKG50Yl91bnJlZ2lzdGVyX2NsaWVudCk7XFxuZHJpdmVycy9udGIvY29yZS5jLTEwMC1cXG5kcml2ZXJzL250Yi9jb3JlLmM6MTAxOmludCBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpXFxuZHJpdmVycy9udGIvY29yZS5jLTEwMi17XFxuLS1cXG5kcml2ZXJzL250Yi9jb3JlLmMtMTMwLX1cXG5kcml2ZXJzL250Yi9jb3JlLmM6MTMxOkVYUE9SVF9TWU1CT0wobnRiX3JlZ2lzdGVyX2RldmljZSk7XFxuZHJpdmVycy9udGIvY29yZS5jLTEzMi1cXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM9MTIyMj1zdGF0aWMgaW50IGFtZF9udGJfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxcbi0tXFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYy0xMjU0LVxcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM6MTI1NTpcXHRyYyA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNm5kZXYtXFx1MDAzZW50Yik7XFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYy0xMjU2LVxcdGlmIChyYylcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM9NzUzPXN0YXRpYyBpbnQgbnRiX2VwZl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jLTc4Ny1cXG5kcml2ZXJzL250Yi9ody9lcGYvbnRiX2h3X2VwZi5jOjc4ODpcXHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNzg5LVxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM9MjI3NT1zdGF0aWMgaW50IGlkdF9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IGlkdF9udGJfZGV2ICpuZGV2KVxcbi0tXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYy0yMjgyLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmM6MjI4MzpcXHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjI4NC1cXHRpZiAocmV0ICE9IDApIHtcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmM9MTg0ND1zdGF0aWMgaW50IGludGVsX250Yl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTE4OTYtXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYzoxODk3OlxcdHJjID0gbnRiX3JlZ2lzdGVyX2RldmljZShcXHUwMDI2bmRldi1cXHUwMDNlbnRiKTtcXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jLTE4OTgtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmM9MTQ4MT1zdGF0aWMgaW50IHN3aXRjaHRlY19udGJfYWRkKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTE1MjgtXFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmM6MTUyOTpcXHRyYyA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNnNuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jLTE1MzAtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jPTE2Nzc9c3RhdGljIGludCBwY2lfdm50Yl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE2OTItXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE2OTM6XFx0cmV0ID0gbnRiX3JlZ2lzdGVyX2RldmljZShcXHUwMDI2bmRldi1cXHUwMDNlbnRiKTtcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTY5NC1cXHRpZiAocmV0KSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjU2OjAxLjc4MDg2NTczM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzg5OTQ2NTExNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgUENJIEVuZHBvaW50IEZ1bmN0aW9uIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgaG9sZCBvbiBhIHNlY29uZC4uLiB3aGF0J3MgdGhpcz8gTXkgZXllIGp1c3QgbGFuZGVkIG9uIGBkcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmNgLiBSaWdodCwgcmlnaHQsIGEgVk5UQiEgVGhpcyBmZWVscyByZWxldmFudCB0byB0aGUgYmlnZ2VyIHBpY3R1cmUuXG5cbkkgbmVlZCB0byBxdWlja2x5IHJlZnJlc2ggbXkgdW5kZXJzdGFuZGluZyBvZiBob3cgUENJIGVuZHBvaW50IGZ1bmN0aW9ucyBhY3R1YWxseSB3b3JrIHdpdGhpbiB0aGlzIGNvbnRleHQuIFNvLCB0aW1lIHRvIGZpcmUgdXAgYSBzZWFyY2guIEknbGwgc3RhcnQgYnkgbG9va2luZyBmb3IgdGhhdCBzcGVjaWZpYyBmaWxlIG5hbWUsIGBwY2ktZXBmLXZudGIuY2AsIHRvIHNlZSB3aGF0IGp1bXBzIG91dCBhbmQgdGhlbiBicm9hZGVuIHRoZSBzZWFyY2ggdG8gZW5jb21wYXNzIHRoZSBtb3JlIGdlbmVyYWwgZnVuY3Rpb25hbGl0eSBhbmQgYXJjaGl0ZWN0dXJlIG9mIFBDSSBlbmRwb2ludCBmdW5jdGlvbiBvcGVyYXRpb24uIEdvdHRhIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kIGhlcmUgYW5kIHNlZSBob3cgdGhpcyBwYXJ0aWN1bGFyIFZOVEIgaW1wbGVtZW50YXRpb24gZml0cyBpbi4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyBhbmQgY29ubmVjdGlvbnMgdGhpcyByZXZlYWxzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDI3LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTY6MjUuNjgwMzM0NjM5WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDI5NTA5ODU3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV92bnRiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNjUxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgdm50Yl9lcGZfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE2NzYtXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE2Nzc6c3RhdGljIGludCBwY2lfdm50Yl9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKmlkKVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjc4LXtcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzAyLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYzoxNzAzOnN0YXRpYyBzdHJ1Y3QgcGNpX2RldmljZV9pZCBwY2lfdm50Yl90YWJsZVtdID0ge1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzA0LVxcdHtcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNzEwPXN0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciB2bnRiX3BjaV9kcml2ZXIgPSB7XFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jLTE3MTEtXFx0Lm5hbWUgICAgICAgICAgID0gXFxcInBjaS12bnRiXFxcIixcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTcxMjpcXHQuaWRfdGFibGUgICAgICAgPSBwY2lfdm50Yl90YWJsZSxcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTcxMzpcXHQucHJvYmUgICAgICAgICAgPSBwY2lfdm50Yl9wcm9iZSxcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTcxNC19O1xcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jPTE3Mjk9c3RhdGljIGludCBlcGZfbnRiX2JpbmQoc3RydWN0IHBjaV9lcGYgKmVwZilcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzYwLVxcdHBjaV9zcGFjZVswXSA9IChudGItXFx1MDAzZXZudGJfcGlkIFxcdTAwM2NcXHUwMDNjIDE2KSB8IG50Yi1cXHUwMDNldm50Yl92aWQ7XFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jOjE3NjE6XFx0cGNpX3ZudGJfdGFibGVbMF0udmVuZG9yID0gbnRiLVxcdTAwM2V2bnRiX3ZpZDtcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTc2MjpcXHRwY2lfdm50Yl90YWJsZVswXS5kZXZpY2UgPSBudGItXFx1MDAzZXZudGJfcGlkO1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNzYzLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1NjoyNi43MDk4NTE0MjZaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6OTkzODY5ODEyNjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqVHJhY2luZyB0aGUgR2VuZXNpcyBvZiBgbnRiX25ldGRldmAqKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kISBJIG5lZWQgdG8gcmVmcmVzaCBteSB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGBudGJfbmV0ZGV2YCBuZXR3b3JrIGRldmljZSBjb21lcyBpbnRvIGJlaW5nLiBUaW1lIHRvIGRpZyBpbiBhbmQgZm9sbG93IHRoZSBicmVhZGNydW1icyBmcm9tIHRoZSB2ZXJ5IGJlZ2lubmluZy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRpdmUgc3RyYWlnaHQgaW50byBgZHJpdmVycy9uZXQvbnRiX25ldGRldi5jYCBhbmQgdHJhY2UgdGhlIGVudGlyZSBsaWZlY3ljbGUsIGZyb20gdGhlIGRyaXZlcidzIHByb2JlIGZ1bmN0aW9uIGFsbCB0aGUgd2F5IHRocm91Z2ggdGhlIHJlY2VpdmUgYW5kIHRyYW5zbWl0IHBhdGhzLiBJJ2xsIG5lZWQgdG8gbWV0aWN1bG91c2x5IHJlYWQgdGhyb3VnaCB0aGUgc291cmNlIGNvZGUgb2YgYG50Yl9uZXRkZXYuY2AgaXRzZWxmLiBUaGlzIHdpbGwgcHJvdmlkZSB0aGUgZm91bmRhdGlvbiBJIG5lZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzk3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTg6MDYuMDk2ODM2MjkyWiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEyNDY3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5IE9SIEJTRC0zLUNsYXVzZVxcbiAgIDI6XFx0LypcXG4gICAzOlxcdCAqIFBDSWUgTlRCIE5ldHdvcmsgTGludXggZHJpdmVyXFxuICAgNDpcXHQgKi9cXG4gICA1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAgIDY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2V0aHRvb2wuaFxcdTAwM2VcXG4gICA3OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gICA4OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9wY2kuaFxcdTAwM2VcXG4gICA5OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9udGIuaFxcdTAwM2VcXG4gIDEwOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9udGJfdHJhbnNwb3J0LmhcXHUwMDNlXFxuICAxMTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc2xhYi5oXFx1MDAzZVxcbiAgMTI6XFx0XFxuICAxMzpcXHQjZGVmaW5lIE5UQl9ORVRERVZfVkVSXFx0XFxcIjAuN1xcXCJcXG4gIDE0OlxcdFxcbiAgMTU6XFx0TU9EVUxFX0RFU0NSSVBUSU9OKEtCVUlMRF9NT0ROQU1FKTtcXG4gIDE2OlxcdE1PRFVMRV9WRVJTSU9OKE5UQl9ORVRERVZfVkVSKTtcXG4gIDE3OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJEdWFsIEJTRC9HUExcXFwiKTtcXG4gIDE4OlxcdE1PRFVMRV9BVVRIT1IoXFxcIkludGVsIENvcnBvcmF0aW9uXFxcIik7XFxuICAxOTpcXHRcXG4gIDIwOlxcdC8qIFRpbWUgaW4gdXNlY3MgZm9yIHR4IHJlc291cmNlIHJlYXBlciAqL1xcbiAgMjE6XFx0c3RhdGljIHVuc2lnbmVkIGludCB0eF90aW1lID0gMTtcXG4gIDIyOlxcdFxcbiAgMjM6XFx0LyogTnVtYmVyIG9mIGRlc2NyaXB0b3JzIHRvIGZyZWUgYmVmb3JlIHJlc3VtaW5nIHR4ICovXFxuICAyNDpcXHRzdGF0aWMgdW5zaWduZWQgaW50IHR4X3N0YXJ0ID0gMTA7XFxuICAyNTpcXHRcXG4gIDI2OlxcdC8qIE51bWJlciBvZiBkZXNjcmlwdG9ycyBzdGlsbCBhdmFpbGFibGUgYmVmb3JlIHN0b3AgdXBwZXIgbGF5ZXIgdHggKi9cXG4gIDI3OlxcdHN0YXRpYyB1bnNpZ25lZCBpbnQgdHhfc3RvcCA9IDU7XFxuICAyODpcXHRcXG4gIDI5OlxcdCNkZWZpbmUgTlRCX05FVERFVl9NQVhfUVVFVUVTXFx0XFx0NjRcXG4gIDMwOlxcdCNkZWZpbmUgTlRCX05FVERFVl9ERUZBVUxUX1FVRVVFU1xcdDFcXG4gIDMxOlxcdFxcbiAgMzI6XFx0c3RydWN0IG50Yl9uZXRkZXY7XFxuICAzMzpcXHRcXG4gIDM0OlxcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlIHtcXG4gIDM1OlxcdFxcdHN0cnVjdCBudGJfbmV0ZGV2ICpudGRldjtcXG4gIDM2OlxcdFxcdHN0cnVjdCBudGJfdHJhbnNwb3J0X3FwICpxcDtcXG4gIDM3OlxcdFxcdHN0cnVjdCB0aW1lcl9saXN0IHR4X3RpbWVyO1xcbiAgMzg6XFx0XFx0dTE2IHFpZDtcXG4gIDM5OlxcdH07XFxuICA0MDpcXHRcXG4gIDQxOlxcdHN0cnVjdCBudGJfbmV0ZGV2IHtcXG4gIDQyOlxcdFxcdHN0cnVjdCBwY2lfZGV2ICpwZGV2O1xcbiAgNDM6XFx0XFx0c3RydWN0IGRldmljZSAqY2xpZW50X2RldjtcXG4gIDQ0OlxcdFxcdHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2O1xcbiAgNDU6XFx0XFx0dW5zaWduZWQgaW50IG51bV9xdWV1ZXM7XFxuICA0NjpcXHRcXHRzdHJ1Y3QgbnRiX25ldGRldl9xdWV1ZSAqcXVldWVzO1xcbiAgNDc6XFx0fTtcXG4gIDQ4OlxcdFxcbiAgNDk6XFx0I2RlZmluZVxcdE5UQl9UWF9USU1FT1VUX01TXFx0MTAwMFxcbiAgNTA6XFx0I2RlZmluZVxcdE5UQl9SWFFfU0laRVxcdFxcdDEwMFxcbiAgNTE6XFx0XFxuICA1MjpcXHRzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3VwZGF0ZV9jYXJyaWVyKHN0cnVjdCBudGJfbmV0ZGV2ICpkZXYpXFxuICA1MzpcXHR7XFxuICA1NDpcXHRcXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmRldjtcXG4gIDU1OlxcdFxcdGJvb2wgYW55X3VwID0gZmFsc2U7XFxuICA1NjpcXHRcXHR1bnNpZ25lZCBpbnQgaTtcXG4gIDU3OlxcdFxcbiAgNTg6XFx0XFx0bmRldiA9IGRldi1cXHUwMDNlbmRldjtcXG4gIDU5OlxcdFxcbiAgNjA6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRldi1cXHUwMDNlbnVtX3F1ZXVlczsgaSsrKSB7XFxuICA2MTpcXHRcXHRcXHRpZiAobnRiX3RyYW5zcG9ydF9saW5rX3F1ZXJ5KGRldi1cXHUwMDNlcXVldWVzW2ldLnFwKSkge1xcbiAgNjI6XFx0XFx0XFx0XFx0YW55X3VwID0gdHJ1ZTtcXG4gIDYzOlxcdFxcdFxcdFxcdGJyZWFrO1xcbiAgNjQ6XFx0XFx0XFx0fVxcbiAgNjU6XFx0XFx0fVxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHRpZiAoYW55X3VwKVxcbiAgNjg6XFx0XFx0XFx0bmV0aWZfY2Fycmllcl9vbihuZGV2KTtcXG4gIDY5OlxcdFxcdGVsc2VcXG4gIDcwOlxcdFxcdFxcdG5ldGlmX2NhcnJpZXJfb2ZmKG5kZXYpO1xcbiAgNzE6XFx0fVxcbiAgNzI6XFx0XFxuICA3MzpcXHRzdGF0aWMgdm9pZCBudGJfbmV0ZGV2X3F1ZXVlX3J4X2RyYWluKHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZSlcXG4gIDc0OlxcdHtcXG4gIDc1OlxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuICA3NjpcXHRcXHRpbnQgbGVuO1xcbiAgNzc6XFx0XFxuICA3ODpcXHRcXHR3aGlsZSAoKHNrYiA9IG50Yl90cmFuc3BvcnRfcnhfcmVtb3ZlKHF1ZXVlLVxcdTAwM2VxcCwgXFx1MDAyNmxlbikpKVxcbiAgNzk6XFx0XFx0XFx0ZGV2X2tmcmVlX3NrYihza2IpO1xcbiAgODA6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1ODowNi4wOTY5NjM1MDFaIiwiU2VxIjoyOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NzIxNzA2NjQyODgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSBwcm9jZXNzLCBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgdGV4dDpcblxuKipEaXZpbmcgaW50byB0aGUgTlRCIE5ldHdvcmsgRGV2aWNlIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiBob3cgdGhpcyBgbnRiX25ldGRldi5jYCBmaWxlIGluaXRpYWxpemVzIGFuZCBwcm9iZXMsIHNwZWNpZmljYWxseSBmcm9tIGxpbmVzIDYwMCB0byA3NjUuIFRoYXQncyB3aGVyZSB0aGUgY29yZSBvZiB0aGUgYWN0aW9uIHNob3VsZCBiZS4gSSdtIGdvaW5nIHRvIGNhcmVmdWxseSBkaXNzZWN0IHRoaXMgc2VjdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNlcXVlbmNpbmcgb2YgY2FsbHMsIGFueSBjb25kaXRpb25hbCBsb2dpYywgYW5kIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIE5UQiBoYXJkd2FyZS4gSSdtIGhvcGluZyB0byBzZWUgaG93IHRoZSBkZXZpY2UgaXMgcmVnaXN0ZXJlZCwgaG93IGl0cyByZXNvdXJjZXMgYXJlIGFsbG9jYXRlZCwgYW5kIGhvdyBpdCdzIGJyb3VnaHQgb25saW5lLiBGcm9tIHdoYXQgSSByZWNhbGwgb2YgcHJldmlvdXMgZXhwZXJpZW5jZXMgd2l0aCBzaW1pbGFyIGRyaXZlcnMsIHRoZXJlJ3MgbGlrZWx5IGFuIGltcG9ydGFudCBkYW5jZSBvZiBpbnRlcnJ1cHQgaGFuZGxpbmcgc2V0dXAgYW5kIGRldmljZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGdvaW5nIG9uIGhlcmUuIEkgZXhwZWN0IHRoZXJlIHdpbGwgYmUgY2hlY2tzIGZvciBoYXJkd2FyZSBwcmVzZW5jZSwgcGVyaGFwcyBzb21lIHBvd2VyIG1hbmFnZW1lbnQgY29uc2lkZXJhdGlvbnMsIGFuZCBkZWZpbml0ZWx5IHNvbWUgY3J1Y2lhbCBsaW5raW5nIG9mIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZXMgdG8gdGhlIHVuZGVybHlpbmcgTlRCIGZ1bmN0aW9uYWxpdHkuIE15IGdvYWwgaXMgYSBzb2xpZCBncmFzcCBvZiB0aGUgY29tcGxldGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JpbmcgbGlmZWN5Y2xlIHdpdGhpbiB0aGF0IHNwZWNpZmljIHJhbmdlLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCB0aGUgZXJyb3IgaGFuZGxpbmcsIGFuZCB0aGUgb3ZlcmFsbCBkcml2ZXIgZmxvdy4gSSdtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIGRyaXZlciBkZWFscyB3aXRoIHBvdGVudGlhbCBlcnJvcnMgYW5kIGZhaWx1cmUgc2NlbmFyaW9zLiBJIGFudGljaXBhdGUgc29tZSBkZWJ1Z2dpbmcgbWFjcm9zIGFuZCBjaGVja3MgdG8gbWFrZSB0aGlzIGluaXRpYWxpc2F0aW9uIHJvYnVzdCBhbmQgc3RhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY4NSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTk6MTguMjY3NjMwMzA5WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjA2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9udGJfbmV0ZGV2LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNjMwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYzMDpcXHRcXHQuZ2V0X2xpbmsgPSBldGh0b29sX29wX2dldF9saW5rLFxcbiA2MzE6XFx0XFx0LmdldF9saW5rX2tzZXR0aW5ncyA9IG50Yl9nZXRfbGlua19rc2V0dGluZ3MsXFxuIDYzMjpcXHRcXHQuZ2V0X2NoYW5uZWxzID0gbnRiX2dldF9jaGFubmVscyxcXG4gNjMzOlxcdFxcdC5zZXRfY2hhbm5lbHMgPSBudGJfc2V0X2NoYW5uZWxzLFxcbiA2MzQ6XFx0fTtcXG4gNjM1OlxcdFxcbiA2MzY6XFx0c3RhdGljIGludCBudGJfbmV0ZGV2X3Byb2JlKHN0cnVjdCBkZXZpY2UgKmNsaWVudF9kZXYpXFxuIDYzNzpcXHR7XFxuIDYzODpcXHRcXHRzdHJ1Y3QgbnRiX2RldiAqbnRiO1xcbiA2Mzk6XFx0XFx0c3RydWN0IG5ldF9kZXZpY2UgKm5kZXY7XFxuIDY0MDpcXHRcXHRzdHJ1Y3QgcGNpX2RldiAqcGRldjtcXG4gNjQxOlxcdFxcdHN0cnVjdCBudGJfbmV0ZGV2ICpkZXY7XFxuIDY0MjpcXHRcXHR1bnNpZ25lZCBpbnQgcTtcXG4gNjQzOlxcdFxcdGludCByYztcXG4gNjQ0OlxcdFxcbiA2NDU6XFx0XFx0bnRiID0gZGV2X250YihjbGllbnRfZGV2LVxcdTAwM2VwYXJlbnQpO1xcbiA2NDY6XFx0XFx0cGRldiA9IG50Yi1cXHUwMDNlcGRldjtcXG4gNjQ3OlxcdFxcdGlmICghcGRldilcXG4gNjQ4OlxcdFxcdFxcdHJldHVybiAtRU5PREVWO1xcbiA2NDk6XFx0XFxuIDY1MDpcXHRcXHRuZGV2ID0gYWxsb2NfZXRoZXJkZXZfbXEoc2l6ZW9mKCpkZXYpLCBOVEJfTkVUREVWX01BWF9RVUVVRVMpO1xcbiA2NTE6XFx0XFx0aWYgKCFuZGV2KVxcbiA2NTI6XFx0XFx0XFx0cmV0dXJuIC1FTk9NRU07XFxuIDY1MzpcXHRcXG4gNjU0OlxcdFxcdFNFVF9ORVRERVZfREVWKG5kZXYsIGNsaWVudF9kZXYpO1xcbiA2NTU6XFx0XFxuIDY1NjpcXHRcXHRkZXYgPSBuZXRkZXZfcHJpdihuZGV2KTtcXG4gNjU3OlxcdFxcdGRldi1cXHUwMDNlbmRldiA9IG5kZXY7XFxuIDY1ODpcXHRcXHRkZXYtXFx1MDAzZXBkZXYgPSBwZGV2O1xcbiA2NTk6XFx0XFx0ZGV2LVxcdTAwM2VjbGllbnRfZGV2ID0gY2xpZW50X2RldjtcXG4gNjYwOlxcdFxcdGRldi1cXHUwMDNlbnVtX3F1ZXVlcyA9IDA7XFxuIDY2MTpcXHRcXG4gNjYyOlxcdFxcdGRldi1cXHUwMDNlcXVldWVzID0ga3phbGxvY19vYmpzKCpkZXYtXFx1MDAzZXF1ZXVlcywgTlRCX05FVERFVl9NQVhfUVVFVUVTLFxcbiA2NjM6XFx0XFx0XFx0XFx0XFx0ICAgR0ZQX0tFUk5FTCk7XFxuIDY2NDpcXHRcXHRpZiAoIWRldi1cXHUwMDNlcXVldWVzKSB7XFxuIDY2NTpcXHRcXHRcXHRyYyA9IC1FTk9NRU07XFxuIDY2NjpcXHRcXHRcXHRnb3RvIGVycl9mcmVlX25ldGRldjtcXG4gNjY3OlxcdFxcdH1cXG4gNjY4OlxcdFxcbiA2Njk6XFx0XFx0bmRldi1cXHUwMDNlZmVhdHVyZXMgPSBORVRJRl9GX0hJR0hETUE7XFxuIDY3MDpcXHRcXHRuZGV2LVxcdTAwM2VwY3B1X3N0YXRfdHlwZSA9IE5FVERFVl9QQ1BVX1NUQVRfVFNUQVRTO1xcbiA2NzE6XFx0XFxuIDY3MjpcXHRcXHRuZGV2LVxcdTAwM2Vwcml2X2ZsYWdzIHw9IElGRl9MSVZFX0FERFJfQ0hBTkdFO1xcbiA2NzM6XFx0XFxuIDY3NDpcXHRcXHRuZGV2LVxcdTAwM2Vod19mZWF0dXJlcyA9IG5kZXYtXFx1MDAzZWZlYXR1cmVzO1xcbiA2NzU6XFx0XFx0bmRldi1cXHUwMDNld2F0Y2hkb2dfdGltZW8gPSBtc2Vjc190b19qaWZmaWVzKE5UQl9UWF9USU1FT1VUX01TKTtcXG4gNjc2OlxcdFxcbiA2Nzc6XFx0XFx0ZXRoX3JhbmRvbV9hZGRyKG5kZXYtXFx1MDAzZXBlcm1fYWRkcik7XFxuIDY3ODpcXHRcXHRkZXZfYWRkcl9zZXQobmRldiwgbmRldi1cXHUwMDNlcGVybV9hZGRyKTtcXG4gNjc5OlxcdFxcbiA2ODA6XFx0XFx0bmRldi1cXHUwMDNlbmV0ZGV2X29wcyA9IFxcdTAwMjZudGJfbmV0ZGV2X29wcztcXG4gNjgxOlxcdFxcdG5kZXYtXFx1MDAzZWV0aHRvb2xfb3BzID0gXFx1MDAyNm50Yl9ldGh0b29sX29wcztcXG4gNjgyOlxcdFxcbiA2ODM6XFx0XFx0bmRldi1cXHUwMDNlbWluX210dSA9IDA7XFxuIDY4NDpcXHRcXHRuZGV2LVxcdTAwM2VtYXhfbXR1ID0gRVRIX01BWF9NVFU7XFxuIDY4NTpcXHRcXG4gNjg2OlxcdFxcdGZvciAocSA9IDA7IHEgXFx1MDAzYyBOVEJfTkVUREVWX0RFRkFVTFRfUVVFVUVTOyBxKyspIHtcXG4gNjg3OlxcdFxcdFxcdHN0cnVjdCBudGJfbmV0ZGV2X3F1ZXVlICpxdWV1ZSA9IFxcdTAwMjZkZXYtXFx1MDAzZXF1ZXVlc1txXTtcXG4gNjg4OlxcdFxcbiA2ODk6XFx0XFx0XFx0cXVldWUtXFx1MDAzZW50ZGV2ID0gZGV2O1xcbiA2OTA6XFx0XFx0XFx0cXVldWUtXFx1MDAzZXFpZCA9IHE7XFxuIDY5MTpcXHRcXHRcXHRxdWV1ZS1cXHUwMDNlcXAgPSBudGJfdHJhbnNwb3J0X2NyZWF0ZV9xdWV1ZShxdWV1ZSwgY2xpZW50X2RldixcXG4gNjkyOlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2bnRiX25ldGRldl9oYW5kbGVycyk7XFxuIDY5MzpcXHRcXHRcXHRpZiAoIXF1ZXVlLVxcdTAwM2VxcClcXG4gNjk0OlxcdFxcdFxcdFxcdGJyZWFrO1xcbiA2OTU6XFx0XFxuIDY5NjpcXHRcXHRcXHRkZXYtXFx1MDAzZW51bV9xdWV1ZXMrKztcXG4gNjk3OlxcdFxcdH1cXG4gNjk4OlxcdFxcbiA2OTk6XFx0XFx0aWYgKCFkZXYtXFx1MDAzZW51bV9xdWV1ZXMpIHtcXG4gNzAwOlxcdFxcdFxcdHJjID0gLUVJTztcXG4gNzAxOlxcdFxcdFxcdGdvdG8gZXJyX2ZyZWVfcXVldWVzO1xcbiA3MDI6XFx0XFx0fVxcbiA3MDM6XFx0XFxuIDcwNDpcXHRcXHRyYyA9IG5ldGlmX3NldF9yZWFsX251bV9xdWV1ZXMobmRldiwgZGV2LVxcdTAwM2VudW1fcXVldWVzLCBkZXYtXFx1MDAzZW51bV9xdWV1ZXMpO1xcbiA3MDU6XFx0XFx0aWYgKHJjKVxcbiA3MDY6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9xcHM7XFxuIDcwNzpcXHRcXG4gNzA4OlxcdFxcdG5kZXYtXFx1MDAzZW10dSA9IG50Yl90cmFuc3BvcnRfbWF4X3NpemUoZGV2LVxcdTAwM2VxdWV1ZXNbMF0ucXApIC0gRVRIX0hMRU47XFxuIDcwOTpcXHRcXG4gNzEwOlxcdFxcdHJjID0gcmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xcbiA3MTE6XFx0XFx0aWYgKHJjKVxcbiA3MTI6XFx0XFx0XFx0Z290byBlcnJfZnJlZV9xcHM7XFxuIDcxMzpcXHRcXG4gNzE0OlxcdFxcdGRldl9zZXRfZHJ2ZGF0YShjbGllbnRfZGV2LCBuZGV2KTtcXG4gNzE1OlxcdFxcdGRldl9pbmZvKFxcdTAwMjZwZGV2LVxcdTAwM2VkZXYsIFxcXCIlcyBjcmVhdGVkIHdpdGggJXUgcXVldWUgcGFpcnNcXFxcblxcXCIsXFxuIDcxNjpcXHRcXHRcXHQgbmRldi1cXHUwMDNlbmFtZSwgZGV2LVxcdTAwM2VudW1fcXVldWVzKTtcXG4gNzE3OlxcdFxcdHJldHVybiAwO1xcbiA3MTg6XFx0XFxuIDcxOTpcXHRlcnJfZnJlZV9xcHM6XFxuIDcyMDpcXHRcXHRmb3IgKHEgPSAwOyBxIFxcdTAwM2MgZGV2LVxcdTAwM2VudW1fcXVldWVzOyBxKyspXFxuIDcyMTpcXHRcXHRcXHRudGJfdHJhbnNwb3J0X2ZyZWVfcXVldWUoZGV2LVxcdTAwM2VxdWV1ZXNbcV0ucXApO1xcbiA3MjI6XFx0XFxuIDcyMzpcXHRlcnJfZnJlZV9xdWV1ZXM6XFxuIDcyNDpcXHRcXHRrZnJlZShkZXYtXFx1MDAzZXF1ZXVlcyk7XFxuIDcyNTpcXHRcXG4gNzI2OlxcdGVycl9mcmVlX25ldGRldjpcXG4gNzI3OlxcdFxcdGZyZWVfbmV0ZGV2KG5kZXYpO1xcbiA3Mjg6XFx0XFx0cmV0dXJuIHJjO1xcbiA3Mjk6XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNTo1OToxOC4yNjc3NDM5MjlaIiwiU2VxIjozMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTM1OTM1NjgyMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBDcmVhdGlvbiBvZiBgY2xpZW50X2RldmAgd2l0aGluIGBudGJfdHJhbnNwb3J0YCoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBnZW5lc2lzIG9mIHRoZSBgY2xpZW50X2RldmAgc3RydWN0dXJlIHdpdGhpbiB0aGUgYG50Yl90cmFuc3BvcnRgIG1vZHVsZS4gV2hlcmUgaXMgdGhpcyB0aGluZyBiZWluZyBpbnN0YW50aWF0ZWQ/IFRoZSBsb2dpY2FsIGZpcnN0IHN0ZXAgaXMgdG8gZGl2ZSByaWdodCBpbnRvIHRoZSBzb3VyY2UgY29kZSwgc3BlY2lmaWNhbGx5IGBudGJfdHJhbnNwb3J0LmNgLiBJJ20gY29uZmlkZW50IHRoZSBhbnN3ZXIgbGllcyB3aXRoaW4gdGhhdCBmaWxlOyBsZXQncyBzZWUgd2hhdCB3ZSBjYW4gdW5lYXJ0aC4gSG9wZWZ1bGx5LCB0aGUgY29kZSBjb21tZW50cyBhcmUgZGVjZW50OyBvdGhlcndpc2UsIEknbGwganVzdCBoYXZlIHRvIHRyYWNlIHRoZSByZWxldmFudCBmdW5jdGlvbiBjYWxscyB1bnRpbCBJIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBUaW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTU1ODMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE1OjU5OjMxLjg2MTMxNTc1N1oiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg0MTc4NTA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL250Yi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTM5NT1FWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3VucmVnaXN0ZXJfY2xpZW50X2Rldik7XFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzk3LS8qKlxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozOTg6ICogbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkZXZpY2VcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzk5LSAqIEBkZXZpY2VfbmFtZTogTmFtZSBvZiBOVEIgY2xpZW50IGRldmljZVxcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQwNC0gKi9cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDA1OmludCBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYoY2hhciAqZGV2aWNlX25hbWUpXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQwNi17XFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDUxLX1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6NDUyOkVYUE9SVF9TWU1CT0xfR1BMKG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2Rldik7XFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ1My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTU6NTk6MzIuMzQ1NDk4ODM3WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyNDE5Nzg4NTkxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgbnRiX3RyYW5zcG9ydC5jYCoqXG5cbk9rYXksIEkgbmVlZCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoaXMuIExldCdzIHN0YXJ0IGJ5IGRpZ2dpbmcgaW50byBgZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jYC4gU3BlY2lmaWNhbGx5LCBJIHdhbnQgdG8gemVybyBpbiBvbiB0aGUgY29kZSBhcm91bmQgbGluZSA0MDUuIEknbSBhc3N1bWluZyB0aGF0IGFyZWEgcHJvYmFibHkgZGVhbHMgd2l0aCBzb21ldGhpbmcgZnVuZGFtZW50YWwgdG8gdGhlIHRyYW5zcG9ydCBsYXllciDigJMgcGVyaGFwcyBtZXNzYWdlIGhhbmRsaW5nLCBidWZmZXIgbWFuYWdlbWVudCwgb3IgaW50ZXJydXB0IHByb2Nlc3NpbmcuIEtub3dpbmcgdGhlIGZ1bmN0aW9uIGNhbGxzIGFyb3VuZCB0aGF0IGxpbmUgaXMgY3JpdGljYWwuIEknbGwgYmUgbG9va2luZyBmb3IgY2x1ZXMgYWJvdXQgaG93IGRhdGEgaXMgbW92aW5nLCBob3cgaXQncyBiZWluZyBoYW5kbGVkLCBhbmQgd2hhdCBtZWNoYW5pc21zIGFyZSBlbXBsb3llZCBmb3Igc3luY2hyb25pemF0aW9uIGFuZCBlcnJvciBoYW5kbGluZyBpbiB0aGlzIHBhcnQgb2YgdGhlIE5UQiBkcml2ZXIuIFRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5IGFuZCBzdGFydCByZWFkaW5nIHRoZSBjb2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjA3MCwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjAxOjM2LjU0MzM4ODcyWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MDMwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogNDA1LFxuICBcIkxpbmVDb3VudFwiOiA2MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDA1OlxcdGludCBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYoY2hhciAqZGV2aWNlX25hbWUpXFxuIDQwNjpcXHR7XFxuIDQwNzpcXHRcXHRzdHJ1Y3QgbnRiX3RyYW5zcG9ydF9jbGllbnRfZGV2ICpjbGllbnRfZGV2O1xcbiA0MDg6XFx0XFx0c3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudDtcXG4gNDA5OlxcdFxcdGludCBub2RlO1xcbiA0MTA6XFx0XFx0aW50IHJjLCBpID0gMDtcXG4gNDExOlxcdFxcbiA0MTI6XFx0XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCkpXFxuIDQxMzpcXHRcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gNDE0OlxcdFxcbiA0MTU6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShudCwgXFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCwgZW50cnkpIHtcXG4gNDE2OlxcdFxcdFxcdHN0cnVjdCBkZXZpY2UgKmRldjtcXG4gNDE3OlxcdFxcbiA0MTg6XFx0XFx0XFx0bm9kZSA9IGRldl90b19ub2RlKFxcdTAwMjZudC1cXHUwMDNlbmRldi1cXHUwMDNlZGV2KTtcXG4gNDE5OlxcdFxcbiA0MjA6XFx0XFx0XFx0Y2xpZW50X2RldiA9IGt6YWxsb2Nfbm9kZShzaXplb2YoKmNsaWVudF9kZXYpLFxcbiA0MjE6XFx0XFx0XFx0XFx0XFx0XFx0ICBHRlBfS0VSTkVMLCBub2RlKTtcXG4gNDIyOlxcdFxcdFxcdGlmICghY2xpZW50X2Rldikge1xcbiA0MjM6XFx0XFx0XFx0XFx0cmMgPSAtRU5PTUVNO1xcbiA0MjQ6XFx0XFx0XFx0XFx0Z290byBlcnI7XFxuIDQyNTpcXHRcXHRcXHR9XFxuIDQyNjpcXHRcXG4gNDI3OlxcdFxcdFxcdGRldiA9IFxcdTAwMjZjbGllbnRfZGV2LVxcdTAwM2VkZXY7XFxuIDQyODpcXHRcXG4gNDI5OlxcdFxcdFxcdC8qIHNldHVwIGFuZCByZWdpc3RlciBjbGllbnQgZGV2aWNlcyAqL1xcbiA0MzA6XFx0XFx0XFx0ZGV2X3NldF9uYW1lKGRldiwgXFxcIiVzJWRcXFwiLCBkZXZpY2VfbmFtZSwgaSk7XFxuIDQzMTpcXHRcXHRcXHRkZXYtXFx1MDAzZWJ1cyA9IFxcdTAwMjZudGJfdHJhbnNwb3J0X2J1cztcXG4gNDMyOlxcdFxcdFxcdGRldi1cXHUwMDNlcmVsZWFzZSA9IG50Yl90cmFuc3BvcnRfY2xpZW50X3JlbGVhc2U7XFxuIDQzMzpcXHRcXHRcXHRkZXYtXFx1MDAzZXBhcmVudCA9IFxcdTAwMjZudC1cXHUwMDNlbmRldi1cXHUwMDNlZGV2O1xcbiA0MzQ6XFx0XFxuIDQzNTpcXHRcXHRcXHRyYyA9IGRldmljZV9yZWdpc3RlcihkZXYpO1xcbiA0MzY6XFx0XFx0XFx0aWYgKHJjKSB7XFxuIDQzNzpcXHRcXHRcXHRcXHRwdXRfZGV2aWNlKGRldik7XFxuIDQzODpcXHRcXHRcXHRcXHRnb3RvIGVycjtcXG4gNDM5OlxcdFxcdFxcdH1cXG4gNDQwOlxcdFxcbiA0NDE6XFx0XFx0XFx0bGlzdF9hZGRfdGFpbChcXHUwMDI2Y2xpZW50X2Rldi1cXHUwMDNlZW50cnksIFxcdTAwMjZudC1cXHUwMDNlY2xpZW50X2RldnMpO1xcbiA0NDI6XFx0XFx0XFx0aSsrO1xcbiA0NDM6XFx0XFx0fVxcbiA0NDQ6XFx0XFxuIDQ0NTpcXHRcXHRyZXR1cm4gMDtcXG4gNDQ2OlxcdFxcbiA0NDc6XFx0ZXJyOlxcbiA0NDg6XFx0XFx0bnRiX3RyYW5zcG9ydF91bnJlZ2lzdGVyX2NsaWVudF9kZXYoZGV2aWNlX25hbWUpO1xcbiA0NDk6XFx0XFxuIDQ1MDpcXHRcXHRyZXR1cm4gcmM7XFxuIDQ1MTpcXHR9XFxuIDQ1MjpcXHRFWFBPUlRfU1lNQk9MX0dQTChudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXYpO1xcbiA0NTM6XFx0XFxuIDQ1NDpcXHQvKipcXG4gNDU1OlxcdCAqIG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50IC0gUmVnaXN0ZXIgTlRCIGNsaWVudCBkcml2ZXJcXG4gNDU2OlxcdCAqIEBkcnY6IE5UQiBjbGllbnQgZHJpdmVyIHRvIGJlIHJlZ2lzdGVyZWRcXG4gNDU3OlxcdCAqXFxuIDQ1ODpcXHQgKiBSZWdpc3RlciBhbiBOVEIgY2xpZW50IGRyaXZlciB3aXRoIHRoZSBOVEIgdHJhbnNwb3J0IGxheWVyXFxuIDQ1OTpcXHQgKlxcbiA0NjA6XFx0ICogUkVUVVJOUzogQW4gYXBwcm9wcmlhdGUgLUVSUk5PIGVycm9yIHZhbHVlIG9uIGVycm9yLCBvciB6ZXJvIGZvciBzdWNjZXNzLlxcbiA0NjE6XFx0ICovXFxuIDQ2MjpcXHRpbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnQoc3RydWN0IG50Yl90cmFuc3BvcnRfY2xpZW50ICpkcnYpXFxuIDQ2MzpcXHR7XFxuIDQ2NDpcXHRcXHRkcnYtXFx1MDAzZWRyaXZlci5idXMgPSBcXHUwMDI2bnRiX3RyYW5zcG9ydF9idXM7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjAxOjM2LjU0MzU4MzQxWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1NzU5ODg5MDQ2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbnZlc3RpZ2F0aW5nIHRoZSBgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnRfZGV2YCBGdW5jdGlvbioqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIGBudGJfdHJhbnNwb3J0X3JlZ2lzdGVyX2NsaWVudF9kZXZgIGZ1bmN0aW9uLiBGaXJzdCBvYnNlcnZhdGlvbjogaWYgYG50Yl90cmFuc3BvcnRfbGlzdGAgaXMgZW1wdHksIHRoZSBmdW5jdGlvbiBpbW1lZGlhdGVseSByZXR1cm5zIGAtRU5PREVWYC4gQ2xlYXJseSwgdGhpcyBsaXN0IGlzIGNydWNpYWwuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIG9yIGFkZGVkIHRvIGBudGJfdHJhbnNwb3J0X2xpc3RgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gbG9jYXRlIHdoZXJlIHRoaXMgbGlzdCBpcyBwb3B1bGF0ZWQuIExldCdzIHJ1biBhIHNlYXJjaCBmb3IgYWxsIGluc3RhbmNlcyBvZiBgbnRiX3RyYW5zcG9ydF9saXN0YCB3aXRoaW4gdGhpcyBjb2RlYmFzZS4gVGhpcyBzaG91bGQgaWxsdW1pbmF0ZSB0aGUgaW5pdGlhbGl6YXRpb24gYW5kIHBvcHVsYXRpb24gcHJvY2Vzcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBzZXF1ZW5jZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTcxNDMsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjA5OjE0LjE0MjQ3NjU2NVoiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI2MjQ4OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50Yl90cmFuc3BvcnRfbGlzdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL250Yi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTMzOT1zdGF0aWMgY29uc3Qgc3RydWN0IGJ1c190eXBlIG50Yl90cmFuc3BvcnRfYnVzID0ge1xcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM0NS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6MzQ2OnN0YXRpYyBMSVNUX0hFQUQobnRiX3RyYW5zcG9ydF9saXN0KTtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzQ3LVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zNDg9c3RhdGljIGludCBudGJfYnVzX2luaXQoc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudClcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzQ5LXtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6MzUwOlxcdGxpc3RfYWRkX3RhaWwoXFx1MDAyNm50LVxcdTAwM2VlbnRyeSwgXFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCk7XFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTM1MS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0zODI9dm9pZCBudGJfdHJhbnNwb3J0X3VucmVnaXN0ZXJfY2xpZW50X2RldihjaGFyICpkZXZpY2VfbmFtZSlcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy0zODYtXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjM4NzpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG50LCBcXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0LCBlbnRyeSlcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzg4LVxcdFxcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjbGllbnQsIGNkLCBcXHUwMDI2bnQtXFx1MDAzZWNsaWVudF9kZXZzLCBlbnRyeSlcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz00MDU9aW50IG50Yl90cmFuc3BvcnRfcmVnaXN0ZXJfY2xpZW50X2RldihjaGFyICpkZXZpY2VfbmFtZSlcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTEtXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQxMjpcXHRpZiAobGlzdF9lbXB0eShcXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0KSlcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDEzLVxcdFxcdHJldHVybiAtRU5PREVWO1xcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTQtXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jOjQxNTpcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5KG50LCBcXHUwMDI2bnRiX3RyYW5zcG9ydF9saXN0LCBlbnRyeSkge1xcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYy00MTYtXFx0XFx0c3RydWN0IGRldmljZSAqZGV2O1xcbi0tXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jPTQ2Mj1pbnQgbnRiX3RyYW5zcG9ydF9yZWdpc3Rlcl9jbGllbnQoc3RydWN0IG50Yl90cmFuc3BvcnRfY2xpZW50ICpkcnYpXFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtNDY1LVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzo0NjY6XFx0aWYgKGxpc3RfZW1wdHkoXFx1MDAyNm50Yl90cmFuc3BvcnRfbGlzdCkpXFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTQ2Ny1cXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MDk6MTQuMzY4NzMzMzY2WiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ1NDQyNzYwMjE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgQ2FsbGVycyBvZiBgbnRiX2J1c19pbml0YCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgYG50Yl90cmFuc3BvcnQuY2AgZmlsZSBhbmQgc2VlIHdoYXQncyBhY3R1YWxseSBjYWxsaW5nIGBudGJfYnVzX2luaXRgLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiB0aGUgTlRCIGJ1cyBmb3IgcHJvcGVyIGRlYnVnZ2luZyBhbmQgcG90ZW50aWFsIGFyY2hpdGVjdHVyYWwgZW5oYW5jZW1lbnRzLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBmdW5jdGlvbiBiYWNrIHRvIGl0cyBvcmlnaW5zLCBmaWd1cmUgb3V0IHdoaWNoIGRyaXZlcihzKSBhcmUgcmVzcG9uc2libGUgZm9yIGJyaW5naW5nIHVwIHRoZSBOVEIgdHJhbnNwb3J0IGxheWVyLCBhbmQgdW5kZXJzdGFuZCBob3cgdGhleSdyZSBpbnRlcmFjdGluZyB3aXRoIGl0LiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgY2FsbHMgZnJvbSB0aGUgUENJIGxheWVyLCBsaWtlbHkgdGhyb3VnaCBhIGRldmljZSBwcm9iZSBmdW5jdGlvbiwgYW5kIHBvc3NpYmx5IHNvbWUgcGxhdGZvcm0tc3BlY2lmaWMgY29kZSBkZXBlbmRpbmcgb24gdGhlIE5UQiBpbXBsZW1lbnRhdGlvbiAoZS5nLiwgaWYgaXQncyBpbnRlZ3JhdGVkIHdpdGggYSBTb0MpLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIGNsdWVzIHJlZ2FyZGluZyBkZXZpY2UgcmVzb3VyY2UgYWxsb2NhdGlvbiwgaW50ZXJydXB0IHJlZ2lzdHJhdGlvbiwgYW5kIGFueSBuZWNlc3NhcnkgRE1BIHNldHVwIHRoYXQncyBiZWluZyBkb25lIGR1cmluZyB0aGF0IGVhcmx5IGluaXRpYWxpemF0aW9uIHN0YWdlLiBLbm93aW5nICp3aG8qIGluaXRpYWxpemVzIHRoZSBidXMgZ2l2ZXMgdXMgdml0YWwgY29udGV4dCBmb3IgdHJhY2luZyBlcnJvcnMgYW5kIHVuZGVyc3RhbmRpbmcgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MDM5LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MDk6NTkuODExNDk2OTY1WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTg0MDYwODIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRiX2J1c19pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbnRiL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM9MzQ2PXN0YXRpYyBMSVNUX0hFQUQobnRiX3RyYW5zcG9ydF9saXN0KTtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzQ3LVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYzozNDg6c3RhdGljIGludCBudGJfYnVzX2luaXQoc3RydWN0IG50Yl90cmFuc3BvcnRfY3R4ICpudClcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMzQ5LXtcXG4tLVxcbmRyaXZlcnMvbnRiL250Yl90cmFuc3BvcnQuYz0xMjM2PXN0YXRpYyBpbnQgbnRiX3RyYW5zcG9ydF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmMtMTM3MS1cXHRJTklUX0xJU1RfSEVBRChcXHUwMDI2bnQtXFx1MDAzZWNsaWVudF9kZXZzKTtcXG5kcml2ZXJzL250Yi9udGJfdHJhbnNwb3J0LmM6MTM3MjpcXHRyYyA9IG50Yl9idXNfaW5pdChudCk7XFxuZHJpdmVycy9udGIvbnRiX3RyYW5zcG9ydC5jLTEzNzMtXFx0aWYgKHJjKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoxMDowMC4wMDk5MTE4MzdaIiwiU2VxIjozOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTUwNTA3MTYyNjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRCIERldmljZSBQcm9iZSBQcm9jZXNzKipcblxuT2theSwgc28gYG50Yl90cmFuc3BvcnRfcHJvYmVgIGdldHMgY2FsbGVkIHdoZW4gYW4gTlRCIGRldmljZSBpcyBib3VuZCB0byB0aGUgYG50Yl90cmFuc3BvcnRfY2xpZW50YC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdywgc28gbGV0J3Mgc3RhcnQgd2l0aCB0aGUgZnVuY3Rpb24gc2lnbmF0dXJlOiBgbnRiX3RyYW5zcG9ydF9wcm9iZShzdHJ1Y3QgbnRiX2NsaWVudCAqc2VsZiwgc3RydWN0IG50Yl9kZXYgKm5kZXYpYC4gTm93LCB3aGF0IGFjdHVhbGx5IHRyaWdnZXJzIHRoaXMgY2FsbD8gQWgsIGl0J3MgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhbiBOVEIgZGV2aWNlIHVzaW5nIGBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpYC5cblxuUmlnaHQsIHNvIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQsIGxldCdzIHRyYWNlIHdoZXJlIGBudGJfcmVnaXN0ZXJfZGV2aWNlYCBpcyBjYWxsZWQuIEEgcXVpY2sgc2VhcmNoIHRocm91Z2ggdGhlIGtlcm5lbCByZXZlYWxzIGEgZmV3IGtleSBsb2NhdGlvbnMuIEl0J3MgdXNlZCB3aXRoaW4gdmFyaW91cyBQQ0kgZHJpdmVycyBmb3Igc3BlY2lmaWMgTlRCIGhhcmR3YXJlOlxuXG4xLiAgYGFtZF9udGJfcGNpX3Byb2JlYCAoQU1EIGhhcmR3YXJlKVxuMi4gIGBudGJfZXBmX3BjaV9wcm9iZWAgKEVQRiBoYXJkd2FyZSlcbjMuICBgaWR0X3JlZ2lzdGVyX2RldmljZWAgKElEVCBoYXJkd2FyZSlcbjQuICBgaW50ZWxfbnRiX3BjaV9wcm9iZWAgKEludGVsIGhhcmR3YXJlKVxuNS4gIGBzd2l0Y2h0ZWNfbnRiX2FkZGAgKE1pY3JvU2VtaSBTd2l0Y2h0ZWMgUENJZSBzd2l0Y2gpXG42LiAgYHBjaV92bnRiX3Byb2JlYCAoRVBGIHZOVEIpXG5cblRoYXQgZ2l2ZXMgYSBnb29kIG92ZXJ2aWV3IG9mIHRoZSBkaWZmZXJlbnQgaGFyZHdhcmUgaW1wbGVtZW50YXRpb25zIHRoYXQgdXNlIHRoaXMgbWVjaGFuaXNtLiBJIHNob3VsZCBkb3VibGUtY2hlY2sgdG8gYmUgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGFueSBvdGhlciBOVEIgZHJpdmVycyBvciB1c2VzIG9mIGBudGJfcmVnaXN0ZXJfZGV2aWNlYCwgYnV0IHRoaXMgaXMgYSBzb2xpZCBzdGFydCBmb3IgdW5kZXJzdGFuZGluZyBob3cgZGV2aWNlcyBhcmUgcmVnaXN0ZXJlZCBhbmQgcHJvYmVkIHdpdGhpbiB0aGUgTlRCIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg1ODAsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MTI6MzAuNTE3MDc4MjI0WiIsIlNlcSI6NDAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTM0NDg4MzQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50Yl9yZWdpc3Rlcl9kZXZpY2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9udGIvY29yZS5jPTk5PUVYUE9SVF9TWU1CT0wobnRiX3VucmVnaXN0ZXJfY2xpZW50KTtcXG5kcml2ZXJzL250Yi9jb3JlLmMtMTAwLVxcbmRyaXZlcnMvbnRiL2NvcmUuYzoxMDE6aW50IG50Yl9yZWdpc3Rlcl9kZXZpY2Uoc3RydWN0IG50Yl9kZXYgKm50YilcXG5kcml2ZXJzL250Yi9jb3JlLmMtMTAyLXtcXG4tLVxcbmRyaXZlcnMvbnRiL2NvcmUuYy0xMzAtfVxcbmRyaXZlcnMvbnRiL2NvcmUuYzoxMzE6RVhQT1JUX1NZTUJPTChudGJfcmVnaXN0ZXJfZGV2aWNlKTtcXG5kcml2ZXJzL250Yi9jb3JlLmMtMTMyLVxcbi0tXFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYz0xMjIyPXN0YXRpYyBpbnQgYW1kX250Yl9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEyNTQtXFxuZHJpdmVycy9udGIvaHcvYW1kL250Yl9od19hbWQuYzoxMjU1OlxcdHJjID0gbnRiX3JlZ2lzdGVyX2RldmljZShcXHUwMDI2bmRldi1cXHUwMDNlbnRiKTtcXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTEyNTYtXFx0aWYgKHJjKVxcbi0tXFxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYz03NTM9c3RhdGljIGludCBudGJfZXBmX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNzg3LVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM6Nzg4OlxcdHJldCA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNm5kZXYtXFx1MDAzZW50Yik7XFxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYy03ODktXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYz0yMjc1PXN0YXRpYyBpbnQgaWR0X3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgaWR0X250Yl9kZXYgKm5kZXYpXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jLTIyODItXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYzoyMjgzOlxcdHJldCA9IG50Yl9yZWdpc3Rlcl9kZXZpY2UoXFx1MDAyNm5kZXYtXFx1MDAzZW50Yik7XFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYy0yMjg0LVxcdGlmIChyZXQgIT0gMCkge1xcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz0xODQ0PXN0YXRpYyBpbnQgaW50ZWxfbnRiX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTg5Ni1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjE4OTc6XFx0cmMgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTg5OC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYz0xNDgxPXN0YXRpYyBpbnQgc3dpdGNodGVjX250Yl9hZGQoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtMTUyOC1cXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYzoxNTI5OlxcdHJjID0gbnRiX3JlZ2lzdGVyX2RldmljZShcXHUwMDI2c25kZXYtXFx1MDAzZW50Yik7XFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtMTUzMC1cXHRpZiAocmMpXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM9MTY3Nz1zdGF0aWMgaW50IHBjaV92bnRiX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmMtMTY5Mi1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvcGNpLWVwZi12bnRiLmM6MTY5MzpcXHRyZXQgPSBudGJfcmVnaXN0ZXJfZGV2aWNlKFxcdTAwMjZuZGV2LVxcdTAwM2VudGIpO1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjk0LVxcdGlmIChyZXQpIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmg9NDY2PXZvaWQgbnRiX3VucmVnaXN0ZXJfY2xpZW50KHN0cnVjdCBudGJfY2xpZW50ICpjbGllbnQpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9udGIuaC00NzItLyoqXFxuaW5jbHVkZS9saW51eC9udGIuaDo0NzM6ICogbnRiX3JlZ2lzdGVyX2RldmljZSgpIC0gcmVnaXN0ZXIgYSBudGIgZGV2aWNlXFxuaW5jbHVkZS9saW51eC9udGIuaC00NzQtICogQG50YjpcXHROVEIgZGV2aWNlIGNvbnRleHQuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQ4MS0gKi9cXG5pbmNsdWRlL2xpbnV4L250Yi5oOjQ4MjppbnQgbnRiX3JlZ2lzdGVyX2RldmljZShzdHJ1Y3QgbnRiX2RldiAqbnRiKTtcXG5pbmNsdWRlL2xpbnV4L250Yi5oLTQ4My1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MTI6MzIuNDUxNTcyNTAzWiIsIlNlcSI6NDEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjg1MTUwMTYwNDkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIGEgUENJIERyaXZlcioqXG5cbkFscmlnaHQsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBgcGNpLWVwZi12bnRiLmNgIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0IGl0ICpkb2VzKi4gSXMgdGhpcyByZWxhdGVkIHRvIGFuIGVuZHBvaW50IGZ1bmN0aW9uLCBvciBpcyBpdCBtb3JlIG9mIGEgdmlydHVhbCBOb24tVHJhbnNwYXJlbnQgQnJpZGdlIChOVEIpIGltcGxlbWVudGF0aW9uPyBJJ2xsIHByb2JhYmx5IG5lZWQgdG8gdW5kZXJzdGFuZCB0aGF0IGRpc3RpbmN0aW9uIHRvIHByb2NlZWQuXG5cblRvIGdldCB0aGUgbGF5IG9mIHRoZSBsYW5kLCBJJ2xsIHN0YXJ0IGJ5IGNoZWNraW5nIHRoZSBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgUENJIGVuZHBvaW50IGRyaXZlcnMuIEEgcXVpY2sgbG9vayBpbiBgZHJpdmVycy9wY2kvZW5kcG9pbnQvYCBzaG91bGQgZ2l2ZSBtZSBzb21lIGNvbnRleHQgYW5kIGhlbHAgbWUgcGluIGRvd24gaXRzIGZ1bmN0aW9uIHdpdGhpbiB0aGUgd2lkZXIgUENJIHN1YnN5c3RlbS4gVGhhdCBkaXJlY3RvcnkgaXMgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uIEhvcGVmdWxseSwgdGhlIGRyaXZlcidzIHB1cnBvc2Ugd2lsbCBiZSBjbGVhciBmcm9tIGl0cyBsb2NhdGlvbiBhbmQgYXNzb2NpYXRlZCBmaWxlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1ODMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoxMzo1Ny42MDE3MzU3MTNaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MDYxNjYyMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJQQ0lfRVBGX1ZOVEJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wY2kvZW5kcG9pbnRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWc9MTc9Y29uZmlnIFBDSV9FUEZfTlRCXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZy0yOS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZzozMDpjb25maWcgUENJX0VQRl9WTlRCXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL0tjb25maWctMzEtXFx0dHJpc3RhdGUgXFxcIlBDSSBFbmRwb2ludCBWaXJ0dWFsIE5UQiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvTWFrZWZpbGU9Nz1vYmotJChDT05GSUdfUENJX0VQRl9OVEIpXFx0XFx0Kz0gcGNpLWVwZi1udGIub1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9NYWtlZmlsZTo4Om9iai0kKENPTkZJR19QQ0lfRVBGX1ZOVEIpIFxcdFxcdCs9IHBjaS1lcGYtdm50Yi5vXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL01ha2VmaWxlLTktb2JqLSQoQ09ORklHX1BDSV9FUEZfTUhJKVxcdFxcdCs9IHBjaS1lcGYtbWhpLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MTM6NTguMDQyMzU4MDM0WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEyMDE1ODYxMDUwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHJlYWRpbmcgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9LY29uZmlnYCwgc3VtbWFyaXplZCBhcyBpZiBpdCdzIG15IG93biB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgUENJIEVuZHBvaW50IEtjb25maWcqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBhIGdvb2QgZ3JpcCBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBQQ0kgZW5kcG9pbnQgZnVuY3Rpb25zLiBMZXQncyBzZWUgd2hhdCdzIGRlZmluZWQgaW4gYGRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9LY29uZmlnYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIGZvciBhbGwgdGhvc2Ugc3BlY2lmaWMgZW5kcG9pbnQgZnVuY3Rpb24gZHJpdmVycyBpcyBnb2luZyB0byBsaXZlLiBJIGV4cGVjdCB0byBzZWUgdGhlIHR5cGljYWwgbWVudSBzdHJ1Y3R1cmUsIHdpdGggZGVwZW5kZW5jaWVzIGFuZCBkZXNjcmlwdGlvbnMgZGV0YWlsaW5nIHdoYXQgZmVhdHVyZXMgYXJlIGVuYWJsZWQgYW5kIGhvdyB0aGV5IGludGVyYWN0LiBJJ20gaG9waW5nIGl0J3Mgd2VsbC1vcmdhbml6ZWQsIG1ha2luZyBpdCBlYXN5IHRvIHVuZGVyc3RhbmQgdGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIGFuZCBxdWlja2x5IGlkZW50aWZ5IHRoZSByZWxldmFudCBvcHRpb25zIGZvciBteSBjdXJyZW50IHRhc2ssIHdoaWNoIGlzIGxpa2VseSBkZWJ1Z2dpbmcvZGV2ZWxvcGluZyBhIHNwZWNpZmljIGZlYXR1cmUgaW4gYSBuZXcgUENJIGVuZHBvaW50IGZ1bmN0aW9uLlxuXG5JJ20gbG9va2luZyBmb3IgdGhlIGtleSBjb21wb25lbnRzOiB0aGUgYGNvbmZpZ2Agc3ltYm9scywgdGhlaXIgYGJvb2xgL2B0cmlzdGF0ZWAgdHlwZXMsIHRoZSBkZWZhdWx0IHZhbHVlcywgZGVwZW5kZW5jaWVzIChgZGVwZW5kcyBvbmApLCBzZWxlY3Qgc3RhdGVtZW50cywgYW5kIGhlbHAgdGV4dC4gVGhlIGRlc2NyaXB0aW9ucyBhcmUgY3JpdGljYWw7IHRoZXkgc2hvdWxkIGNsZWFybHkgZXhwbGFpbiB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBlYWNoIG9wdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3I6XG5cbiogICAqKkdyYW51bGFyaXR5OioqIEFyZSB0aGUgb3B0aW9ucyBmaW5lLWdyYWluZWQgZW5vdWdoIHRvIHNlbGVjdGl2ZWx5IGVuYWJsZSBvciBkaXNhYmxlIHNwZWNpZmljIGZ1bmN0aW9uYWxpdGllcyB3aXRoaW4gYSBmdW5jdGlvbiwgb3IgYXJlIHRoZXkgdG9vIGNvYXJzZT9cbiogICAqKkludGVyZGVwZW5kZW5jaWVzOioqIEhvdyBkbyB0aGUgZGlmZmVyZW50IGZlYXR1cmVzIHJlbGF0ZSB0byBlYWNoIG90aGVyPyBBcmUgdGhlcmUgb2J2aW91cyBjb25mbGljdHMgb3IgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mPyBBcmUgdGhlcmUgZmVhdHVyZXMgdGhhdCAqbXVzdCogYmUgc2VsZWN0ZWQgd2hlbiBhIGNlcnRhaW4gdW5kZXJseWluZyBoYXJkd2FyZSBmZWF0dXJlIGlzIHN1cHBvcnRlZD9cbiogICAqKlBvcnRhYmlsaXR5OioqIEFyZSB0aGVyZSBhbnkgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIG9yIHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcz8gQXJlIHRoZXkgY2xlYW5seSBoYW5kbGVkLCBvciBkbyBJIG5lZWQgdG8gd29ycnkgYWJvdXQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gY2x1dHRlcj9cbiogICAqKkRvY3VtZW50YXRpb246KiogSXMgdGhlIGhlbHAgdGV4dCBjbGVhciBhbmQgY29uY2lzZT8gRG9lcyBpdCBwcm92aWRlIGVub3VnaCBjb250ZXh0IGFuZCBsaW5rcyB0byByZWxldmFudCBkb2N1bWVudGF0aW9uIG9yIHNvdXJjZSBjb2RlPyBJcyBpdCBhY3R1YWxseSBhY2N1cmF0ZSwgb3IgYW0gSSBnb2luZyB0byBoYXZlIHRvIGRpdmUgaW50byB0aGUgY29kZSB0byBmaWd1cmUgb3V0IHdoYXQncyBnb2luZyBvbj9cblxuSSB3YW50IHRvIHNlZSBjb25zaXN0ZW50IG5hbWluZyBjb252ZW50aW9ucyBhbmQgYSBsb2dpY2FsIHN0cnVjdHVyZSB0aGF0IG1ha2VzIHNlbnNlLiBBIHdlbGwtZGVzaWduZWQgS2NvbmZpZyBmaWxlIGlzIGEgam95IHRvIHdvcmsgd2l0aDsgYSBwb29ybHkgZGVzaWduZWQgb25lIGlzIGEgbmlnaHRtYXJlLiBJJ20gaG9waW5nIHRoaXMgb25lIGZhbGxzIGludG8gdGhlIGZvcm1lciBjYXRlZ29yeS4gTGV0J3MgZ2V0IHRvIGl0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTA4NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjE1OjU4LjIwMDk3MTk2NFoiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTk4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3BjaS9lbmRwb2ludC9mdW5jdGlvbnMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA0MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUENJIEVuZHBvaW50IEZ1bmN0aW9uc1xcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgUENJX0VQRl9URVNUXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiUENJIEVuZHBvaW50IFRlc3QgZHJpdmVyXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfRU5EUE9JTlRcXG4gICA5OlxcdFxcdHNlbGVjdCBDT05GSUdGU19GU1xcbiAgMTA6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMTpcXHRcXHRoZWxwXFxuICAxMjpcXHRcXHQgICBFbmFibGUgdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBlbmFibGUgdGhlIHRlc3QgZHJpdmVyXFxuICAxMzpcXHRcXHQgICBmb3IgUENJIEVuZHBvaW50LlxcbiAgMTQ6XFx0XFxuICAxNTpcXHRcXHQgICBJZiBpbiBkb3VidCwgc2F5IFxcXCJOXFxcIiB0byBkaXNhYmxlIEVuZHBvaW50IHRlc3QgZHJpdmVyLlxcbiAgMTY6XFx0XFxuICAxNzpcXHRjb25maWcgUENJX0VQRl9OVEJcXG4gIDE4OlxcdFxcdHRyaXN0YXRlIFxcXCJQQ0kgRW5kcG9pbnQgTlRCIGRyaXZlclxcXCJcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUENJX0VORFBPSU5UXFxuICAyMDpcXHRcXHRzZWxlY3QgQ09ORklHRlNfRlNcXG4gIDIxOlxcdFxcdGhlbHBcXG4gIDIyOlxcdFxcdCAgU2VsZWN0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIHRoZSBOb24tVHJhbnNwYXJlbnRcXG4gIDIzOlxcdFxcdCAgQnJpZGdlIChOVEIpIGRyaXZlciBmb3IgUENJIEVuZHBvaW50LiBOVEIgZHJpdmVyIGltcGxlbWVudHMgTlRCXFxuICAyNDpcXHRcXHQgIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eSB1c2luZyBtdWx0aXBsZSBQQ0llIGVuZHBvaW50IGluc3RhbmNlcy5cXG4gIDI1OlxcdFxcdCAgSXQgY2FuIHN1cHBvcnQgTlRCIGVuZHBvaW50IGZ1bmN0aW9uIGRldmljZXMgY3JlYXRlZCB1c2luZ1xcbiAgMjY6XFx0XFx0ICBkZXZpY2UgdHJlZS5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0XFx0ICBJZiBpbiBkb3VidCwgc2F5IFxcXCJOXFxcIiB0byBkaXNhYmxlIEVuZHBvaW50IE5UQiBkcml2ZXIuXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBQQ0lfRVBGX1ZOVEJcXG4gIDMxOlxcdFxcdHRyaXN0YXRlIFxcXCJQQ0kgRW5kcG9pbnQgVmlydHVhbCBOVEIgZHJpdmVyXFxcIlxcbiAgMzI6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lfRU5EUE9JTlRcXG4gIDMzOlxcdFxcdGRlcGVuZHMgb24gTlRCXFxuICAzNDpcXHRcXHRzZWxlY3QgQ09ORklHRlNfRlNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU2VsZWN0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gdG8gZW5hYmxlIHRoZSBOb24tVHJhbnNwYXJlbnRcXG4gIDM3OlxcdFxcdCAgQnJpZGdlIChOVEIpIGRyaXZlciBmb3IgUENJZSBFbmRwb2ludC4gTlRCIGRyaXZlciBpbXBsZW1lbnRzIE5UQlxcbiAgMzg6XFx0XFx0ICBiZXR3ZWVuIFBDSSBSb290IFBvcnQgYW5kIFBDSWUgRW5kcG9pbnQuXFxuICAzOTpcXHRcXG4gIDQwOlxcdFxcdCAgSWYgaW4gZG91YnQsIHNheSBcXFwiTlxcXCIgdG8gZGlzYWJsZSBFbmRwb2ludCBOVEIgZHJpdmVyLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoxNTo1OC4yMDEwMzk1NjRaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjQzMTkyNDk4Nzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgTlRCIFJlYWNoYWJpbGl0eSBmb3IgRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoZSBgTlRCX05FVERFVmAgZnVuY3Rpb25hbGl0eSBpcyBldmVuIGFjY2Vzc2libGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEZpcnN0LCBsZXQgbWUgcXVpY2tseSByZW1pbmQgbXlzZWxmIHdoYXQgTlRCIGFjdHVhbGx5ICppcyo6IE5vbi1UcmFuc3BhcmVudCBCcmlkZ2Ug4oCTIHdoaWNoIG1lYW5zIHdlJ3JlIHRhbGtpbmcgYWJvdXQgaGFyZHdhcmUsIGxpa2UgSW50ZWwsIEFNRCwgb3IgU3dpdGNodGVjIE5UQiwgZXRjLiBUaGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIFFFTVUgZXZlbiAqZW11bGF0ZXMqIE5UQiBhdCBhbGwuXG5cbkhhbmcgb24sIGJlZm9yZSBJIGp1bXAgdG8gYW55IGNvbmNsdXNpb25zLCBJIG5lZWQgdG8gY2hlY2sgdGhlIHN5c3RlbSBpbnN0cnVjdGlvbnMsIGVzcGVjaWFsbHkgdGhlIGNyaXRlcmlhIGZvciBkZXRlcm1pbmluZyBpZiBzb21ldGhpbmcgaXMgXCJXb3J0aEZ1enppbmc9ZmFsc2VcIi4gSSBuZWVkIHRvIGJlIGNhcmVmdWwgbm90IHRvIHdhc3RlIHRpbWUgb24gY2hhbmdlcyB0aGF0IGFyZSBleHBsaWNpdGx5IHJ1bGVkIG91dC4gUmlnaHQsIHNvIHRoZSBndWlkZSBleHBsaWNpdGx5IG1lbnRpb25zIGNvZGUgcGF0aHMgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUuIFRoYXQgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgZm9yIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVcyB0aGF0ICpkZW1hbmQqIHJlYWwgUENJZSBjYXJkcy4gQW5kLCB0ZWFyZG93biBjYWxsYmFja3MgYXJlIG1vc3RseSBpcnJlbGV2YW50LCBzaW5jZSBob3QtdW5wbHVnIGlzIHVubGlrZWx5IGluIGFuIGF1dG9tYXRlZCBmdXp6aW5nIHNjZW5hcmlvLlxuXG5UaGUgY29yZSBxdWVzdGlvbiBub3cgYmVjb21lczogQ2FuIE5UQiBkZXZpY2VzIGJlIHNpbXVsYXRlZCBvciBldmVuICpjcmVhdGVkKiB3aXRob3V0IHBoeXNpY2FsIGhhcmR3YXJlIGluIHN0YW5kYXJkIExpbnV4LCBRRU1VLCBvciBldmVuIHdpdGggYSBmcmFtZXdvcmsgbGlrZSBzeXprYWxsZXI/IElzIHRoZXJlIGEgZHVtbXkgb3IgdmlydHVhbCBOVEIgY29udHJvbGxlciB3aXRoaW4gdGhlIGtlcm5lbCBpdHNlbGY/IEkgbmVlZCB0byBjaGVjayBmb3IgYW55IG90aGVyIGtlcm5lbCBkcml2ZXJzIG9yIGVuZHBvaW50IGNvbnRyb2xsZXJzIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIE5UQi4gUmlnaHQsIGxldCdzIGV4cGxvcmUgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2NvbnRyb2xsZXJzL2AuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIHN0YXJ0LiBGcm9tIGhlcmUgSSBjYW4gbWFrZSBhbiBpbmZvcm1lZCBkZWNpc2lvbiBhYm91dCB0aGUgZmVhc2liaWxpdHkgb2YgdGFyZ2V0aW5nIHRoaXMgYXJlYSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjIxMjgsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0zMFQxNjoyMDowMS4zOTM1NDEyODhaIiwiU2VxIjo0NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTc0MCwiRXJyb3IiOiJ0aGUgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0IiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL3BjaS9lbmRwb2ludC9jb250cm9sbGVyc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3RcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MjA6MDEuMzkzNTg4MjA4WiIsIlNlcSI6NDcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ3NDM1MTg5NjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoYXQgZGlyZWN0b3J5OlxuXG4qKlBDSSBFbmRwb2ludCBEcml2ZXIgSW52ZXN0aWdhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBkaXZlIGludG8gdGhlIFBDSSBlbmRwb2ludCBkcml2ZXIgY29kZS4gVGhlIGZpcnN0IHRoaW5nIEknbSBnb2luZyB0byBkbyBpcyBuYXZpZ2F0ZSB0byB0aGUgYGRyaXZlcnMvcGNpL2VuZHBvaW50L2AgZGlyZWN0b3J5LiBUaGF0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoZSBzeXN0ZW0gaW50ZXJhY3RzIHdpdGggUENJIGVuZHBvaW50cy4gSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgdGhlIGFyY2hpdGVjdHVyZSBhbmQgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGVuZHBvaW50IGRyaXZlciBmcmFtZXdvcmsuIFRoaXMgaW5jbHVkZXMsIGFuZCBtYXliZSBJIG5lZWQgdG8gcmVmcmVzaCBteXNlbGYgb24sIHRoZSBkZXZpY2UgdHJlZSBzZXR1cCwgaW50ZXJydXB0IGhhbmRsaW5nLCBhbmQgaG93IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGFyZSBhY2Nlc3NlZCBhbmQgbWFuYWdlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgZW5kcG9pbnQgZGV2aWNlcy4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHJlc291cmNlcyBhcmUgYWxsb2NhdGVkLCBob3cgdHJhbnNhY3Rpb25zIGFyZSBpbml0aWF0ZWQgYW5kIGNvbXBsZXRlZCwgYW5kIGFueSBwb3dlciBtYW5hZ2VtZW50IGNvbnNpZGVyYXRpb25zLiBJIHNob3VsZCBxdWlja2x5IHNjYW4gZm9yIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIGRvY3VtZW50YXRpb24gdG9vLCBhcyB0aGlzIGNvbnRleHQgd2lsbCBzYXZlIHNpZ25pZmljYW50IHRpbWUgZG93biB0aGUgcm9hZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI5MTEsIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImNvZGVzZWFyY2gtZGlyLWluZGV4Il19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMzBUMTY6MjA6NDguODI4NzgwODM0WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImNvZGVzZWFyY2gtZGlyLWluZGV4IiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL3BjaS9lbmRwb2ludFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJGaWxlc1wiOiBbXG4gICAgXCJwY2ktZXAtY2ZzLmNcIixcbiAgICBcInBjaS1lcC1tc2kuY1wiLFxuICAgIFwicGNpLWVwYy1jb3JlLmNcIixcbiAgICBcInBjaS1lcGMtbWVtLmNcIixcbiAgICBcInBjaS1lcGYtY29yZS5jXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IFtcbiAgICBcImZ1bmN0aW9uc1wiXG4gIF1cbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIwOjQ4LjgyODg0MzAyM1oiLCJTZXEiOjQ5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo4ODY1NDU5NzAzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJ20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6XG5cbioqRVBDIERyaXZlciBMb2NhdGlvbiBIdW50KipcblxuT2theSwgc28gSSBuZWVkIHRvIGZpbmQgd2hlcmUgdGhlIEVuaGFuY2VkIFBDSSBDb250cm9sbGVyIChFUEMpIGRyaXZlcnMgYXJlIGhpZGluZyBpbiB0aGUga2VybmVsIHNvdXJjZS4gTXkgZmlyc3QgaW5zdGluY3QsIGFuZCB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0LCBpcyB0aGUgYGRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvYCBkaXJlY3RvcnkuIFRoYXQgc2VlbXMgbGlrZSB0aGUgbW9zdCBvYnZpb3VzIGhvbWUgZm9yIGFueXRoaW5nIHJlbGF0ZWQgdG8gUENJIGNvbnRyb2xsZXIgZnVuY3Rpb25hbGl0eS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZXJlIGZpcnN0LiBBc3N1bWluZyB0aGV5IGZvbGxvd2VkIHRoZSBjb252ZW50aW9uYWwgc3RydWN0dXJlLCB0aGF0J3Mgd2hlcmUgSSdkIGV4cGVjdCB0byBmaW5kIHRoZSBjb2RlLiBJZiBpdCdzIG5vdCB0aGVyZSwgSSdsbCBuZWVkIHRvIGJyb2FkZW4gdGhlIHNlYXJjaCwgYnV0IHRoaXMgaXMgdGhlIGluaXRpYWwgYW5kIGJlc3QgZWR1Y2F0ZWQgZ3Vlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMjExLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIyOjE3LjQ4MzQ0MjU0NloiLCJTZXEiOjUwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzkwOTg0MzY0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9lcGNfY3JlYXRlfGRldm1fcGNpX2VwY19jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9wY2lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS1lcC5jPTY2Nj1pbnQgY2Ruc19wY2llX2VwX3NldHVwKHN0cnVjdCBjZG5zX3BjaWVfZXAgKmVwKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9jYWRlbmNlL3BjaWUtY2FkZW5jZS1lcC5jLTcwNC1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2NhZGVuY2UvcGNpZS1jYWRlbmNlLWVwLmM6NzA1OlxcdGVwYyA9IGRldm1fcGNpX2VwY19jcmVhdGUoZGV2LCBcXHUwMDI2Y2Ruc19wY2llX2VwY19vcHMpO1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvY2FkZW5jZS9wY2llLWNhZGVuY2UtZXAuYy03MDYtXFx0aWYgKElTX0VSUihlcGMpKSB7XFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYz0xNTIxPWludCBkd19wY2llX2VwX2luaXQoc3RydWN0IGR3X3BjaWVfZXAgKmVwKVxcbi0tXFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmMtMTUzMi1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2llLWRlc2lnbndhcmUtZXAuYzoxNTMzOlxcdGVwYyA9IGRldm1fcGNpX2VwY19jcmVhdGUoZGV2LCBcXHUwMDI2ZXBjX29wcyk7XFxuZHJpdmVycy9wY2kvY29udHJvbGxlci9kd2MvcGNpZS1kZXNpZ253YXJlLWVwLmMtMTUzNC1cXHRpZiAoSVNfRVJSKGVwYykpIHtcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yY2FyLWVwLmM9NDc1PXN0YXRpYyBpbnQgcmNhcl9wY2llX2VwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcmNhci1lcC5jLTUyMS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcmNhci1lcC5jOjUyMjpcXHRlcGMgPSBkZXZtX3BjaV9lcGNfY3JlYXRlKGRldiwgXFx1MDAyNnJjYXJfcGNpZV9lcGNfb3BzKTtcXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcmNhci1lcC5jLTUyMy1cXHRpZiAoSVNfRVJSKGVwYykpIHtcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jPTgzOT1zdGF0aWMgaW50IHJvY2tjaGlwX3BjaWVfZXBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jLTg1NS1cXG5kcml2ZXJzL3BjaS9jb250cm9sbGVyL3BjaWUtcm9ja2NoaXAtZXAuYzo4NTY6XFx0ZXBjID0gZGV2bV9wY2lfZXBjX2NyZWF0ZShkZXYsIFxcdTAwMjZyb2NrY2hpcF9wY2llX2VwY19vcHMpO1xcbmRyaXZlcnMvcGNpL2NvbnRyb2xsZXIvcGNpZS1yb2NrY2hpcC1lcC5jLTg1Ny1cXHRpZiAoSVNfRVJSKGVwYykpIHtcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jPTEwNDE9c3RhdGljIHZvaWQgcGNpX2VwY19yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTEwNDYtLyoqXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmM6MTA0NzogKiBfX3BjaV9lcGNfY3JlYXRlKCkgLSBjcmVhdGUgYSBuZXcgZW5kcG9pbnQgY29udHJvbGxlciAoRVBDKSBkZXZpY2VcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMDQ4LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIGNyZWF0aW5nIHRoZSBuZXcgRVBDXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYz0xMDU0PXN0cnVjdCBwY2lfZXBjICpcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYzoxMDU1Ol9fcGNpX2VwY19jcmVhdGUoc3RydWN0IGRldmljZSAqZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2VwY19vcHMgKm9wcyxcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMDU2LVxcdFxcdCBzdHJ1Y3QgbW9kdWxlICpvd25lcilcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMDktfVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMTA6RVhQT1JUX1NZTUJPTF9HUEwoX19wY2lfZXBjX2NyZWF0ZSk7XFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTExMS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTEyLS8qKlxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMTM6ICogX19kZXZtX3BjaV9lcGNfY3JlYXRlKCkgLSBjcmVhdGUgYSBuZXcgZW5kcG9pbnQgY29udHJvbGxlciAoRVBDKSBkZXZpY2VcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTE0LSAqIEBkZXY6IGRldmljZSB0aGF0IGlzIGNyZWF0aW5nIHRoZSBuZXcgRVBDXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYz0xMTIzPXN0cnVjdCBwY2lfZXBjICpcXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYzoxMTI0Ol9fZGV2bV9wY2lfZXBjX2NyZWF0ZShzdHJ1Y3QgZGV2aWNlICpkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZXBjX29wcyAqb3BzLFxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMjUtXFx0XFx0ICAgICAgc3RydWN0IG1vZHVsZSAqb3duZXIpXFxuLS1cXG5kcml2ZXJzL3BjaS9lbmRwb2ludC9wY2ktZXBjLWNvcmUuYy0xMTMyLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jOjExMzM6XFx0ZXBjID0gX19wY2lfZXBjX2NyZWF0ZShkZXYsIG9wcywgb3duZXIpO1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExMzQtXFx0aWYgKCFJU19FUlIoZXBjKSkge1xcbi0tXFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmMtMTE0Mi19XFxuZHJpdmVycy9wY2kvZW5kcG9pbnQvcGNpLWVwYy1jb3JlLmM6MTE0MzpFWFBPUlRfU1lNQk9MX0dQTChfX2Rldm1fcGNpX2VwY19jcmVhdGUpO1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L3BjaS1lcGMtY29yZS5jLTExNDQtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIyOjE3Ljg3NDQzNDg2WiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjYwNzcwNDA2MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUGF0Y2gncyBXb3J0aGluZXNzIGZvciBGdXp6aW5nKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGhhcmR3YXJlIGNvbnRleHQuIFdlJ3JlIGRlYWxpbmcgd2l0aCBQQ0llIGVuZHBvaW50IGNvbnRyb2xsZXJzLCBsaWtlIHRob3NlIGZyb20gQ2FkZW5jZSwgRFdDLCBSLUNhciwgYW5kIFJvY2tjaGlwLCBhbGwgU29DIGhhcmR3YXJlLiBUaGVuIHRoZXJlIGFyZSB0aGUgTlRCIGRyaXZlcnMgdW5kZXIgYGRyaXZlcnMvbnRiL2h3L2AsIHdoaWNoIGhhbmRsZSBzcGVjaWZpYyBOVEIgaGFyZHdhcmUgZnJvbSBBTUQsIElEVCwgSW50ZWwsIFN3aXRjaHRlYywgYW5kIGEgZ2VuZXJpYyBFUEYgaW1wbGVtZW50YXRpb24uIFRoZSBjcnVjaWFsIHBvaW50IGlzIHRoYXQgKm5vbmUqIG9mIHRoZXNlIGNvbnRyb2xsZXJzIGFyZSBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSAoR0NFKSB2aXJ0dWFsIG1hY2hpbmVzLiBOb3csIE5UQiwgYXMgYSByZWZyZXNoZXIsIGlzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2luZyDigJMgYSBkaXJlY3QsIHBvaW50LXRvLXBvaW50IFBDSWUgY29ubmVjdGlvbiBmYWNpbGl0YXRpbmcgY29tbXVuaWNhdGlvbiBiZXR3ZWVuIHR3byBkaXN0aW5jdCBjb21wdXRlciBzeXN0ZW1zLiBJdCBmdW5kYW1lbnRhbGx5IHJlbGllcyBvbiBkZWRpY2F0ZWQgaGFyZHdhcmUgTlRCIGNvbnRyb2xsZXJzIG9yIFBDSWUgZW5kcG9pbnQgY29udHJvbGxlcnMgaW4gYSBob3N0LXRvLWhvc3Qgc2V0dXAuIFFFTVUgYW5kIEdDRSBqdXN0IGRvbid0IG9mZmVyIHRoYXQuXG5cbk5vdywgbGV0J3MgZ28gYmFjayB0byB0aGUgcnVsZXMuIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBwYXRjaCBpcyB3b3J0aCBmdXp6aW5nLiBUaGUgcnVsZXMgc3RhdGUgd2Ugc2hvdWxkbid0IGNvbnNpZGVyIHBhdGNoZXMgdGhhdCBvbmx5IG1vZGlmeSBkb2N1bWVudGF0aW9uLCBLY29uZmlnIGZpbGVzLCBjb21tZW50cywgY29zbWV0aWMgY2hhbmdlcywgb3IgbnVtZXJpYyBjb25zdGFudHMgdGhhdCBkb24ndCBpbXBhY3QgZXhlY3V0aW9uIGZsb3cuIFdlIGFsc28gZXhjbHVkZSBjb2RlIHBhdGhzIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLCBldmVuIHdpdGggc29mdHdhcmUgZW11bGF0aW9uLiBTcGVjaWZpY2FsbHksIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIHJlcXVpcmluZyBwaHlzaWNhbCBoYXJkd2FyZSBhcmUgb2ZmLWxpbWl0cywgYXMgYXJlIHRlYXJkb3duIGNhbGxiYWNrcyB0aGF0IGFyZSBvbmx5IGV4ZWN1dGVkIG9uIGhvdC11bnBsdWcuXG5cblRoZSBwYXRjaCBpdHNlbGYgZGVhbHMgd2l0aCBgZHJpdmVycy9uZXQvbnRiX25ldGRldi5jYC4gSXQncyBjb252ZXJ0aW5nIGBuZGV2LVx1MDAzZXN0YXRzLipgIHRvIHBlci1DUFUgbmV0d29yayBzdGF0aXN0aWNzIChgcGNwdV9zd19uZXRzdGF0c2ApLCB1c2luZyBgdTY0X3N0YXRzXypgIGFuZCBgREVWX1NUQVRTX0lOQ2AsIHNldHRpbmcgYG5kZXYtXHUwMDNlcGNwdV9zdGF0X3R5cGVgLCBhbmQgZml4aW5nIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGBudGJfbmV0ZGV2X3R4X2hhbmRsZXJgIGZ1bmN0aW9uLlxuXG5Ob3csIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgYG50Yl9uZXRkZXZgIHJlYWNoYWJsZSBpbiBRRU1VL0dDRT8gV2l0aG91dCBhIHJlYWwgTlRCIGhhcmR3YXJlIGNvbnRyb2xsZXIgKEludGVsLCBBTUQsIGV0Yy4pLCBgbnRiX3RyYW5zcG9ydF9wcm9iZWAgaXMgbmV2ZXIgaW52b2tlZC4gVGhlIGBudGJfdHJhbnNwb3J0X2xpc3RgIHJlbWFpbnMgZW1wdHksIGFuZCByZWdpc3RyYXRpb24gZmFpbHMgd2l0aCBgLUVOT0RFVmAuIENvbnNlcXVlbnRseSwgYG50Yl9uZXRkZXZfcHJvYmVgIGlzIG5ldmVyIGNhbGxlZCwgYW5kIG5vIG5ldHdvcmsgZGV2aWNlIGlzIGV2ZXIgaW5zdGFudGlhdGVkLiBUaGVyZWZvcmUsIG5vIGBudGJfbmV0ZGV2YCBpcyBldmVyIGNyZWF0ZWQsIG9yIGF0IGxlYXN0LCBpbnN0YW50aWF0ZWQuIFRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCBzZWFyY2ggdGhlIGtlcm5lbCB0cmVlIGZvciBgc3RydWN0IG50Yl9kZXZfb3BzYCBvciBgbnRiX3JlZ2lzdGVyX2RldmljZWAgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IG1vY2sgb3IgbG9vcGJhY2sgaW1wbGVtZW50YXRpb24gSSdtIG1pc3NpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0ODA0LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Nzk1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIzOjE4LjY0NDg0NDI4NVoiLCJTZXEiOjUyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg2OTYyODY2MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJudGJfZGV2X29wc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL250Yi9jb3JlLmM9MTAxPWludCBudGJfcmVnaXN0ZXJfZGV2aWNlKHN0cnVjdCBudGJfZGV2ICpudGIpXFxuLS1cXG5kcml2ZXJzL250Yi9jb3JlLmMtMTEwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbmRyaXZlcnMvbnRiL2NvcmUuYzoxMTE6XFx0aWYgKCFudGJfZGV2X29wc19pc192YWxpZChudGItXFx1MDAzZW9wcykpXFxuZHJpdmVycy9udGIvY29yZS5jLTExMi1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmM9NTM4PXN0YXRpYyBpbnQgYW1kX250Yl9wZWVyX3NwYWRfd3JpdGUoc3RydWN0IG50Yl9kZXYgKm50YiwgaW50IHBpZHgsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jLTU1My1cXG5kcml2ZXJzL250Yi9ody9hbWQvbnRiX2h3X2FtZC5jOjU1NDpzdGF0aWMgY29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIGFtZF9udGJfb3BzID0ge1xcbmRyaXZlcnMvbnRiL2h3L2FtZC9udGJfaHdfYW1kLmMtNTU1LVxcdC5td19jb3VudFxcdFxcdD0gYW1kX250Yl9td19jb3VudCxcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM9NTg3PXN0YXRpYyBpbnQgbnRiX2VwZl9kYl9jbGVhcihzdHJ1Y3QgbnRiX2RldiAqbnRiLCB1NjQgZGJfYml0cylcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmMtNTk1LVxcbmRyaXZlcnMvbnRiL2h3L2VwZi9udGJfaHdfZXBmLmM6NTk2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgbnRiX2VwZl9vcHMgPSB7XFxuZHJpdmVycy9udGIvaHcvZXBmL250Yl9od19lcGYuYy01OTctXFx0Lm13X2NvdW50XFx0XFx0PSBudGJfZXBmX213X2NvdW50LFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaWR0L250Yl9od19pZHQuYz0yMTk3PXN0YXRpYyBpcnFyZXR1cm5fdCBpZHRfdGhyZWFkX2lzcihpbnQgaXJxLCB2b2lkICpkZXZpZClcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2lkdC9udGJfaHdfaWR0LmMtMjIzNi0gKi9cXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jOjIyMzc6c3RhdGljIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpZHRfbnRiX29wcyA9IHtcXG5kcml2ZXJzL250Yi9ody9pZHQvbnRiX2h3X2lkdC5jLTIyMzgtXFx0LnBvcnRfbnVtYmVyXFx0XFx0PSBpZHRfbnRiX3BvcnRfbnVtYmVyLFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYz04Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX250Yl94bGF0X3JlZyB4ZW9uX3NlY194bGF0O1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmM6ODM6c3RhdGljIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGJfb3BzO1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtODQtXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jPTE5ODk9c3RydWN0IGludGVsX2IyYl9hZGRyIHhlb25fYjJiX2RzZF9hZGRyID0ge1xcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjEuYy0xOTk2LS8qIG9wZXJhdGlvbnMgZm9yIHByaW1hcnkgc2lkZSBvZiBsb2NhbCBudGIgKi9cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMS5jOjE5OTc6c3RhdGljIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGJfb3BzID0ge1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4xLmMtMTk5OC1cXHQubXdfY291bnRcXHRcXHQ9IGludGVsX250Yl9td19jb3VudCxcXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmM9NTk1PWludCBpbnRlbF9udGIzX2RiX2NsZWFyKHN0cnVjdCBudGJfZGV2ICpudGIsIHU2NCBkYl9iaXRzKVxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuYy02MDMtXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuYzo2MDQ6Y29uc3Qgc3RydWN0IG50Yl9kZXZfb3BzIGludGVsX250YjNfb3BzID0ge1xcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW4zLmMtNjA1LVxcdC5td19jb3VudFxcdFxcdD0gaW50ZWxfbnRiX213X2NvdW50LFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuaD0xMTI9aW50IGludGVsX250YjNfcGVlcl9kYl9hZGRyKHN0cnVjdCBudGJfZGV2ICpudGIsIHBoeXNfYWRkcl90ICpkYl9hZGRyLFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuaC0xMTUtXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjMuaDoxMTY6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGIzX29wcztcXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuMy5oLTExNy1cXG4tLVxcbmRyaXZlcnMvbnRiL2h3L2ludGVsL250Yl9od19nZW40LmM9NTM2PXN0YXRpYyBpbnQgaW50ZWxfbnRiNF9td19nZXRfYWxpZ24oc3RydWN0IG50Yl9kZXYgKm50YiwgaW50IHBpZHgsIGludCBpZHgsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5jLTU3Ny1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5jOjU3ODpjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgaW50ZWxfbnRiNF9vcHMgPSB7XFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuYy01NzktXFx0Lm13X2NvdW50XFx0XFx0PSBpbnRlbF9udGJfbXdfY291bnQsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5oPTExMT1zc2l6ZV90IG5kZXZfbnRiNF9kZWJ1Z2ZzX3JlYWQoc3RydWN0IGZpbGUgKmZpbHAsIGNoYXIgX191c2VyICp1YnVmLFxcbi0tXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuaC0xMTMtXFxuZHJpdmVycy9udGIvaHcvaW50ZWwvbnRiX2h3X2dlbjQuaDoxMTQ6ZXh0ZXJuIGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyBpbnRlbF9udGI0X29wcztcXG5kcml2ZXJzL250Yi9ody9pbnRlbC9udGJfaHdfZ2VuNC5oLTExNS1cXG4tLVxcbmRyaXZlcnMvbnRiL2h3L21zY2MvbnRiX2h3X3N3aXRjaHRlYy5jPTc5NT1zdGF0aWMgaW50IHN3aXRjaHRlY19udGJfcGVlcl9zcGFkX2FkZHIoc3RydWN0IG50Yl9kZXYgKm50YiwgaW50IHBpZHgsXFxuLS1cXG5kcml2ZXJzL250Yi9ody9tc2NjL250Yl9od19zd2l0Y2h0ZWMuYy04MTItXFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmM6ODEzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgc3dpdGNodGVjX250Yl9vcHMgPSB7XFxuZHJpdmVycy9udGIvaHcvbXNjYy9udGJfaHdfc3dpdGNodGVjLmMtODE0LVxcdC5td19jb3VudFxcdFxcdD0gc3dpdGNodGVjX250Yl9td19jb3VudCxcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYz0xNjQzPXN0YXRpYyBzdHJ1Y3QgZGV2aWNlICp2bnRiX2VwZl9nZXRfZG1hX2RldihzdHJ1Y3QgbnRiX2RldiAqbmRldilcXG4tLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjUwLVxcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYzoxNjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgbnRiX2Rldl9vcHMgdm50Yl9lcGZfb3BzID0ge1xcbmRyaXZlcnMvcGNpL2VuZHBvaW50L2Z1bmN0aW9ucy9wY2ktZXBmLXZudGIuYy0xNjUyLVxcdC5td19jb3VudFxcdFxcdD0gdm50Yl9lcGZfbXdfY291bnQsXFxuLS1cXG5pbmNsdWRlL2xpbnV4L250Yi5oPTE5OT1zdGF0aWMgaW5saW5lIGludCBudGJfY3R4X29wc19pc192YWxpZChjb25zdCBzdHJ1Y3QgbnRiX2N0eF9vcHMgKm9wcylcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmgtMjA5LS8qKlxcbmluY2x1ZGUvbGludXgvbnRiLmg6MjEwOiAqIHN0cnVjdCBudGJfZGV2X29wcyAtIG50YiBkZXZpY2Ugb3BlcmF0aW9uc1xcbmluY2x1ZGUvbGludXgvbnRiLmgtMjExLSAqIEBwb3J0X251bWJlcjpcXHRTZWUgbnRiX3BvcnRfbnVtYmVyKCkuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L250Yi5oLTI2MC0gKi9cXG5pbmNsdWRlL2xpbnV4L250Yi5oOjI2MTpzdHJ1Y3QgbnRiX2Rldl9vcHMge1xcbmluY2x1ZGUvbGludXgvbnRiLmgtMjYyLVxcdGludCAoKnBvcnRfbnVtYmVyKShzdHJ1Y3QgbnRiX2RldiAqbnRiKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmgtMzM1LVxcbmluY2x1ZGUvbGludXgvbnRiLmg6MzM2OnN0YXRpYyBpbmxpbmUgaW50IG50Yl9kZXZfb3BzX2lzX3ZhbGlkKGNvbnN0IHN0cnVjdCBudGJfZGV2X29wcyAqb3BzKVxcbmluY2x1ZGUvbGludXgvbnRiLmgtMzM3LXtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmg9NDA2PXN0cnVjdCBudGJfY2xpZW50IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmgtNDE2LSAqIEB0b3BvOlxcdFxcdERldGVjdGVkIHRvcG9sb2d5IG9mIHRoZSBudGIuXFxuaW5jbHVkZS9saW51eC9udGIuaDo0MTc6ICogQG9wczpcXHRcXHRTZWUgXFx1MDAyNm50Yl9kZXZfb3BzLlxcbmluY2x1ZGUvbGludXgvbnRiLmgtNDE4LSAqIEBjdHg6XFx0XFx0U2VlIFxcdTAwMjZudGJfY3R4X29wcy5cXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmg9NDIxPXN0cnVjdCBudGJfZGV2IHtcXG4tLVxcbmluY2x1ZGUvbGludXgvbnRiLmgtNDI0LVxcdGVudW0gbnRiX3RvcG9cXHRcXHRcXHR0b3BvO1xcbmluY2x1ZGUvbGludXgvbnRiLmg6NDI1OlxcdGNvbnN0IHN0cnVjdCBudGJfZGV2X29wc1xcdCpvcHM7XFxuaW5jbHVkZS9saW51eC9udGIuaC00MjYtXFx0dm9pZFxcdFxcdFxcdFxcdCpjdHg7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjIzOjIwLjUxNDQ4MjY4N1oiLCJTZXEiOjUzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1ODY1MzI2MjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgbnRiX25ldGRldmAgRHJpdmVyJ3MgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gdGFraW5nIGEgbG9vayBhdCB0aGlzIGBudGJfbmV0ZGV2YCBkcml2ZXIsIGFuZCBpdCdzIGxvb2tpbmcgcHJldHR5IGJsZWFrIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBUaGUgY29yZSBvZiBteSBhbmFseXNpcyBoaW5nZXMgb24gdGhlIGZhY3QgdGhhdCBhbGwgdGhlIHJlbGV2YW50IGBudGJfZGV2X29wc2AgaW1wbGVtZW50YXRpb25zIEkndmUgaWRlbnRpZmllZCDigJMgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYGRyaXZlcnMvbnRiL2h3L2FtZC9gLCBgZHJpdmVycy9udGIvaHcvZXBmL2AsIGBkcml2ZXJzL250Yi9ody9pZHQvYCwgYGRyaXZlcnMvbnRiL2h3L2ludGVsL2AsIGBkcml2ZXJzL250Yi9ody9tc2NjL2AsIGFuZCBldmVuIHRoZSBgZHJpdmVycy9wY2kvZW5kcG9pbnQvZnVuY3Rpb25zL3BjaS1lcGYtdm50Yi5jYCBwYXRoIOKAkyBhcmUgZGVlcGx5IHJvb3RlZCBpbiBoYXJkd2FyZSBQQ0llIGRldmljZSBkcml2ZXJzLiBUaGVzZSBhcmVuJ3QganVzdCBhYnN0cmFjdCBjb25jZXB0czsgdGhleSdyZSB0aWVkIHRvIHNwZWNpZmljIHBoeXNpY2FsIE5UQiBoYXJkd2FyZSBsaWtlIEludGVsLCBBTUQsIElEVCwgb3IgU3dpdGNodGVjIFBDSWUgY29udHJvbGxlcnMuXG5cblRoZSBjcml0aWNhbCBpc3N1ZSBpcyB0aGF0IG5vbmUgb2YgdGhlc2UgaGFyZHdhcmUgY29tcG9uZW50cyBhcmUgZW11bGF0ZWQgd2l0aGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgb3IgR0NFLiBUaGlzIGVmZmVjdGl2ZWx5IG1ha2VzIHRoZSBgbnRiX25ldGRldmAgZHJpdmVyIGluYWNjZXNzaWJsZSBpbiB0aGVzZSBjb21tb24gdmlydHVhbCBmdXp6aW5nIHNldHVwcy4gSSBtZWFuLCB3ZSdyZSB0YWxraW5nIGFib3V0IGEgXCJWaXJ0dWFsIEV0aGVybmV0IG92ZXIgTlRCIFRyYW5zcG9ydFwiIGhlcmUg4oCTIGl0J3MgZGVzaWduZWQgdG8gaW50ZXJmYWNlIHdpdGggdGhhdCBzcGVjaWZpYyBOVEIgaGFyZHdhcmUuIFdpdGhvdXQgdGhhdCBoYXJkd2FyZSBwcmVzZW50IChvciBlbXVsYXRlZCB3aXRoIHN1ZmZpY2llbnQgZmlkZWxpdHkpLCB0aGUgZHJpdmVyIHdpbGwgc2ltcGx5IHJlbWFpbiB1bnJlYWNoYWJsZS5cblxuSSd2ZSBhbHJlYWR5IHJ1biBhIHF1aWNrIGNoZWNrIG9mIHRoZSByZWxldmFudCBjcml0ZXJpYS4gVGhlIGBXb3J0aEZ1enppbmdgIGZsYWcgaXMgdW5zdXJwcmlzaW5nbHkgZmFsc2UsIHRoZSBgRW5hYmxlQ29uZmlnc2AgYXJlIGVtcHR5LCBhbmQgdGhlcmUgYXJlIG5vIGBGb2N1c1N5bWJvbHNgLiBUaGUgcmVhc29uaW5nIGZvciB0aGlzIGluYWNjZXNzaWJpbGl0eSBpcyBjbGVhcjsgaXQgYWxsIGJvaWxzIGRvd24gdG8gdGhlIGRlcGVuZGVuY2Ugb24gcGh5c2ljYWwgUENJZSBOVEIgaGFyZHdhcmUuXG5cbkFscmlnaHQsIEknbSBjb25maWRlbnQgaW4gdGhpcyBhc3Nlc3NtZW50LiBMZXQncyBqdXN0IG1ha2Ugb25lIGxhc3QsIHF1aWNrIGNoZWNrIG9mIHRoZSBmb3JtYXR0aW5nIHRvIGVuc3VyZSBpdCBhbGwgbG9va3MgZ29vZCwgYW5kIHRoZW4gSSdsbCBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4NDg0LCJPdXRwdXRUb2tlbnMiOjk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjI0OjE5LjE2Nzc0ODQwN1oiLCJTZXEiOjU0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwibnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwibnRiX25ldGRldiAoVmlydHVhbCBFdGhlcm5ldCBvdmVyIE5UQiBUcmFuc3BvcnQpIHJlcXVpcmVzIE5vbi1UcmFuc3BhcmVudCBCcmlkZ2UgKE5UQikgaGFyZHdhcmUgZGV2aWNlcyAoc3VjaCBhcyBJbnRlbCwgQU1ELCBJRFQsIG9yIFN3aXRjaHRlYyBQQ0llIE5UQiBjb250cm9sbGVycyksIHdoaWNoIGFyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNvbnRyb2xsZXJzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTMwVDE2OjI0OjE5LjE2Nzc3MzM5NloiLCJTZXEiOjU1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow4pbk2[1] Phase: Running StartedAt: 2026-08-30 16:24:30 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4pbk2[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-30 16:24:30 +0000 UTC FinishedAt: 2026-08-30 16:24:34 +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,}