Name: series-workflow5wdkg Phase: Failed StartedAt: 2026-09-13 03:58:29 +0000 UTC FinishedAt: 2026-09-13 04:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wdkg[0] Phase: Succeeded StartedAt: 2026-09-13 03:58:29 +0000 UTC FinishedAt: 2026-09-13 04:49:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wdkg[0].run-triage Phase: Succeeded StartedAt: 2026-09-13 03:58:29 +0000 UTC FinishedAt: 2026-09-13 04:49:23 +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+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHRlYXJkb3duIGxvZ2ljIChkbTkwMDBfcmVsZWFzZV9ib2FyZCwgZG05MDAwX3Byb2JlKSBpbiB0aGUgRGF2aWNvbSBETTkwMDAgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jKS4gVGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGVtYmVkZGVkIGhhcmR3YXJlIHRoYXQgZGVwZW5kcyBvbiBBUk0sIE1JUFMsIENPTERGSVJFLCBvciBOSU9TMiAob3IgQ09NUElMRV9URVNUKS4gSXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0IGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBhcyB0aGUgcmVxdWlyZWQgcGxhdGZvcm0gaGFyZHdhcmUvRGV2aWNlVHJlZSBiaW5kaW5ncyBhcmUgbm90IHByZXNlbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzc0ZmU5YTIxNGM1MWNlMjQ1NmI4OTczYjA2MmQ2M2JmMGM3MWY3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDA0OjQ4OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG5pbmRleCBiODdlYWYwYzI1MGNlLi5jOGZmMDdmZTMxYTViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xuQEAgLTEwNCw2ICYjNDM7MTA0LDcgQEAgc3RydWN0IGJvYXJkX2luZm8ge1xuIFx0dW5zaWduZWQgaW50XHRpbl90aW1lb3V0OjE7XG4gXHR1bnNpZ25lZCBpbnRcdGluX3N1c3BlbmQ6MTtcbiBcdHVuc2lnbmVkIGludFx0d2FrZV9zdXBwb3J0ZWQ6MTtcbiYjNDM7XHR1bnNpZ25lZCBpbnRcdHdha2VfaXJxX3JlcXVlc3RlZDoxO1xuIFxuIFx0ZW51bSBkbTkwMDBfdHlwZSB0eXBlO1xuIFxuQEAgLTgwMiw2ICYjNDM7ODAzLDkgQEAgZG05MDAwX3BvbGxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gc3RhdGljIHZvaWRcbiBkbTkwMDBfcmVsZWFzZV9ib2FyZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXG4ge1xuJiM0MztcdGlmIChkYi1cdTAwM2V3YWtlX2lycV9yZXF1ZXN0ZWQpXG4mIzQzO1x0XHRmcmVlX2lycShkYi1cdTAwM2VpcnFfd2FrZSwgZGItXHUwMDNlbmRldik7XG4mIzQzO1xuIFx0LyogdW5tYXAgb3VyIHJlc291cmNlcyAqL1xuIFxuIFx0aW91bm1hcChkYi1cdTAwM2Vpb19hZGRyKTtcbkBAIC0xNTE5LDYgJiM0MzsxNTIzLDcgQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRkZXZfZXJyKGRiLVx1MDAzZWRldiwgXCYjMzQ7Y2Fubm90IGdldCB3YWtldXAgaXJxICglZClcXG5cJiMzNDssIHJldCk7XG4gXHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGRiLVx1MDAzZXdha2VfaXJxX3JlcXVlc3RlZCA9IDE7XG4gXG4gXHRcdFx0LyogdGVzdCB0byBzZWUgaWYgaXJxIGlzIHJlYWxseSB3YWtldXAgY2FwYWJsZSAqL1xuIFx0XHRcdHJldCA9IGlycV9zZXRfaXJxX3dha2UoZGItXHUwMDNlaXJxX3dha2UsIDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCB0ZWFyZG93biBsb2dpYyAoZG05MDAwX3JlbGVhc2VfYm9hcmQsIGRtOTAwMF9wcm9iZSkgaW4gdGhlIERhdmljb20gRE05MDAwIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYykuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBlbWJlZGRlZCBoYXJkd2FyZSB0aGF0IGRlcGVuZHMgb24gQVJNLCBNSVBTLCBDT0xERklSRSwgb3IgTklPUzIgKG9yIENPTVBJTEVfVEVTVCkuIEl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgYXMgdGhlIHJlcXVpcmVkIHBsYXRmb3JtIGhhcmR3YXJlL0RldmljZVRyZWUgYmluZGluZ3MgYXJlIG5vdCBwcmVzZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM3NGZlOWEyMTRjNTFjZTI0NTZiODk3M2IwNjJkNjNiZjBjNzFmNzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCAxMyAwNDo0ODoyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jCmluZGV4IGI4N2VhZjBjMjUwY2UuLmM4ZmYwN2ZlMzFhNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYwpAQCAtMTA0LDYgJiM0MzsxMDQsNyBAQCBzdHJ1Y3QgYm9hcmRfaW5mbyB7CiAJdW5zaWduZWQgaW50CWluX3RpbWVvdXQ6MTsKIAl1bnNpZ25lZCBpbnQJaW5fc3VzcGVuZDoxOwogCXVuc2lnbmVkIGludAl3YWtlX3N1cHBvcnRlZDoxOwomIzQzOwl1bnNpZ25lZCBpbnQJd2FrZV9pcnFfcmVxdWVzdGVkOjE7CiAKIAllbnVtIGRtOTAwMF90eXBlIHR5cGU7CiAKQEAgLTgwMiw2ICYjNDM7ODAzLDkgQEAgZG05MDAwX3BvbGxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiBzdGF0aWMgdm9pZAogZG05MDAwX3JlbGVhc2VfYm9hcmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGJvYXJkX2luZm8gKmRiKQogewomIzQzOwlpZiAoZGItJmd0O3dha2VfaXJxX3JlcXVlc3RlZCkKJiM0MzsJCWZyZWVfaXJxKGRiLSZndDtpcnFfd2FrZSwgZGItJmd0O25kZXYpOwomIzQzOwogCS8qIHVubWFwIG91ciByZXNvdXJjZXMgKi8KIAogCWlvdW5tYXAoZGItJmd0O2lvX2FkZHIpOwpAQCAtMTUxOSw2ICYjNDM7MTUyMyw3IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlpZiAocmV0KSB7CiAJCQlkZXZfZXJyKGRiLSZndDtkZXYsICYjMzQ7Y2Fubm90IGdldCB3YWtldXAgaXJxICglZClcbiYjMzQ7LCByZXQpOwogCQl9IGVsc2UgewomIzQzOwkJCWRiLSZndDt3YWtlX2lycV9yZXF1ZXN0ZWQgPSAxOwogCiAJCQkvKiB0ZXN0IHRvIHNlZSBpZiBpcnEgaXMgcmVhbGx5IHdha2V1cCBjYXBhYmxlICovCiAJCQlyZXQgPSBpcnFfc2V0X2lycV93YWtlKGRiLSZndDtpcnFfd2FrZSwgMSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBETTkwMDAgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIGlzIHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY2AuIE15IGluaXRpYWwgbW92ZSBpcyB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCB0aGlzIGRyaXZlciwgdGhlIERNOTAwMCwgYWN0dWFsbHkgKmlzKi4gVXNpbmcgdGhlIHN0YW5kYXJkIHRvb2xzLCBJIHF1aWNrbHkgYXNjZXJ0YWluIHRoYXQgaXQmIzM5O3MgYSBEYXZpY29tIEZhc3QgRXRoZXJuZXQgZHJpdmVyLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogaXMgdGhpcyBhIHBsYXRmb3JtIGRldmljZSBkcml2ZXI/IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBNeSBuZXh0IHN0ZXAgaW52b2x2ZXMgbWV0aWN1bG91c2x5IGluc3BlY3RpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jYCBzb3VyY2UgY29kZSwgYWxvbmcgd2l0aCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzLiBUaGlzIHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgcGF0Y2gmIzM5O3MgcHVycG9zZSBhbmQgaW1wYWN0IGluIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRE05MDAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MTk6Y29uZmlnIERNOTAwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7RE05MDAwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MzA6Y29uZmlnIERNOTAwMF9GT1JDRV9TSU1QTEVfUEhZX1BPTExcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7Rm9yY2Ugc2ltcGxlIE5TUiBiYXNlZCBQSFkgcG9sbGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCBLY29uZmlnIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBEYXZpY29tIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBEYXZpY29tIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbWAgZGlyZWN0b3J5LiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBuZXR3b3JrIGludGVyZmFjZSBjYXJkIHdpbGwgbGl2ZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHN0cnVjdHVyZTsgYW0gSSBsb29raW5nIGF0IGEgdG9wLWxldmVsIEtjb25maWcsIG9yIGEgc3ViLUtjb25maWcgZmlsZT8gSXMgaXQgYSBzaW5nbGUgbW9ub2xpdGhpYyBjb25maWd1cmF0aW9uIG9yIG1vZHVsYXJpemVkIGZvciBzcGVjaWZpYyBEYXZpY29tIGNoaXBzZXRzIG9yIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIGxpc3RlZCBhdCB0aGUgdG9wLCBsaWtlIFBIWSBkcml2ZXJzIG9yIE1ESU8gYnVzZXM/IEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZToKCiogICAqKkNoaXBzZXQgU2VsZWN0aW9uOioqIEEgbWFpbiBgQ09ORklHX0RBVklDT01gIG9wdGlvbiB0aGF0IGFsbG93cyB5b3UgdG8gZWl0aGVyIGVuYWJsZSBhbGwgRGF2aWNvbSBjYXJkcyBpbiBhIGRyaXZlciBvciBzZWxlY3QgaW5kaXZpZHVhbCBEYXZpY29tIG1vZGVscyB0byBpbmNsdWRlLiBJdCYjMzk7cyBhbG1vc3QgZ3VhcmFudGVlZCB0byBoYXZlIHN1Yi1vcHRpb25zIGZvciBzcGVjaWZpYyBjaGlwcywgc3VjaCBhcyBgQ09ORklHX0RBVklDT01fRE05MXh4YCwgYENPTkZJR19EQVZJQ09NX0RNOTB4eGAsIG9yIGBDT05GSUdfREFWSUNPTV9ETTkyeHhgLgoqICAgKipGZWF0dXJlIEZsYWdzOioqIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSBgQ09ORklHX0RBVklDT01fUEhZX1NVUFBPUlRgIChpZiBpdCBzdXBwb3J0cyB0aGUgYnVpbHQtaW4gUEhZKSwgYENPTkZJR19EQVZJQ09NX0RFQlVHYCBmb3IgZGVidWdnaW5nIG1lc3NhZ2VzLCBgQ09ORklHX0RBVklDT01fRkxPV19DT05UUk9MYCwgYW5kIHBlcmhhcHMgZXZlbiBvcHRpb25zIHRvIGZpbmUtdHVuZSBpbnRlcnJ1cHQgaGFuZGxpbmcgb3IgRE1BIHNldHRpbmdzLgoqICAgKipEZXBlbmRlbmN5IENoZWNrczoqKiBJJiMzOTttIGxvb2tpbmcgZm9yIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBEYXZpY29tIGRyaXZlciBuZWVkcyB0aGUgcHJvcGVyIE1ESU8gb3IgTUFDIHN1YnN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIGRldmljZSB0cmVlIGJpbmRpbmdzIGFyZSBuZWVkZWQgZm9yIGl0IHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4KKiAgICoqRG9jdW1lbnRhdGlvbiBhbmQgRGVmYXVsdHM6KiogSSYjMzk7bGwgYmUgc2Nhbm5pbmcgZm9yIGhlbHAgdGV4dHMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggY29uZmlndXJhdGlvbiBvcHRpb24uIEhvcGVmdWxseSwgdGhlcmUmIzM5O3MgYSBnb29kIGRlc2NyaXB0aW9uIG9mIHRoZSBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLCBhbG9uZyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdCBzZXR0aW5ncy4gR29vZCBkb2N1bWVudGF0aW9uIGhlbHBzIHRyZW1lbmRvdXNseSEKKiAgICoqTWVudSBTdHJ1Y3R1cmU6KiogSSYjMzk7bGwgbG9vayBmb3IgbmVzdGVkIGBtZW51YCBvciBgY29uZmlnYCBibG9ja3MgdG8gdW5kZXJzdGFuZCBob3cgb3B0aW9ucyBhcmUgb3JnYW5pemVkIGxvZ2ljYWxseS4gSXMgaXQgYSBmbGF0IGxpc3QsIG9yIGlzIGl0IHdlbGwtc3RydWN0dXJlZCB0byBncm91cCByZWxhdGVkIHNldHRpbmdzPwoqICAgKipUcmlja3MgYW5kIFRyYXBzOioqIEkmIzM5O20gYWx3YXlzIGxvb2tpbmcgZm9yIHVudXN1YWwgY29uZmlndXJhdGlvbnMgb3IgY29ybmVyLWNhc2Ugc2V0dGluZ3MuIEFyZSB0aGVyZSBhbnkgYHNlbGVjdGAgc3RhdGVtZW50cyB0aGF0IGZvcmNlIGRlcGVuZGVuY2llcz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgZGlmZmVyZW50IHNlbGVjdGlvbiBvcHRpb25zPwoKRXNzZW50aWFsbHksIEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgZmlsZSB0byBidWlsZCBhIHBpY3R1cmUgb2YgaG93IGEgdXNlciB3b3VsZCBpbnRlcmFjdCB3aXRoIGl0IGR1cmluZyBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGtub2JzIHRoYXQgbmVlZCB0byBiZSB0d2Vha2VkIHRvIGdldCB0aGUgRGF2aWNvbSBFdGhlcm5ldCBkcml2ZXIgd29ya2luZyBjb3JyZWN0bHkgaW4gYSBzcGVjaWZpYyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIERhdmljb20gZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfREFWSUNPTVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtEYXZpY29tIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBEYXZpY29tIGRldmljZXMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWRcbiAgMTU6XHRcdCAgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHNlbGVjdGlvbnMuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIERNOTAwMFxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7RE05MDAwIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdGRlcGVuZHMgb24gQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUXG4gIDIyOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjM6XHRcdHNlbGVjdCBNSUlcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgU3VwcG9ydCBmb3IgRE05MDAwIGNoaXBzZXQuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXG4gIDI4Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGRtOTAwMC5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgRE05MDAwX0ZPUkNFX1NJTVBMRV9QSFlfUE9MTFxuICAzMTpcdFx0Ym9vbCBcJiMzNDtGb3JjZSBzaW1wbGUgTlNSIGJhc2VkIFBIWSBwb2xsaW5nXCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIERNOTAwMFxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIGNvbmZpZ3VyYXRpb24gZm9yY2VzIHRoZSBETTkwMDAgdG8gdXNlIHRoZSBOU1ImIzM5O3MgTGlua1N0YXR1c1xuICAzNTpcdFx0ICBiaXQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBsaW5rIGlzIHVwIG9yIGRvd24gaW5zdGVhZCBvZiB0aGUgbW9yZVxuICAzNjpcdFx0ICBjb3N0bHkgTUlJIFBIWSByZWFkcy4gTm90ZSwgdGhpcyB3aWxsIG5vdCB3b3JrIGlmIHRoZSBjaGlwIGlzXG4gIDM3Olx0XHQgIG9wZXJhdGluZyB3aXRoIGFuIGV4dGVybmFsIFBIWS5cbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgRE05MDUxXG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtETTkwNTEgU1BJIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzk2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXJjaGl0ZWN0dXJlIENvbXBhdGliaWxpdHkgUXVhbmRhcnkqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgc2l0dWF0aW9uLiBJJiMzOTttIHNlZWluZyB0aGlzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNoZWNrIOKAkyBgZGVwZW5kcyBvbiBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RgIOKAkyB3aGljaCBpbW1lZGlhdGVseSB0aHJvd3MgdXAgYSByZWQgZmxhZy4gTXkgcHJpbWFyeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBzb21ldGhpbmcgaXNuJiMzOTt0IHF1aXRlIHJpZ2h0LiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoZSBETTkwMDAgZHJpdmVyLCB3aGljaCBJJiMzOTttIGFzc3VtaW5nIGlzIHRoZSBjb21wb25lbnQgYWZmZWN0ZWQgYnkgdGhpcywgY2FuIGV2ZW4gYmUgKmxlZ2l0aW1hdGVseSogaW5zdGFudGlhdGVkIG9uIGFuIGFtZDY0IHN5c3RlbSwgcGFydGljdWxhcmx5IHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoaXMgZmVlbHMgbGlrZSBhIGNvbXBhdGliaWxpdHkgaXNzdWUgc3RhcmluZyBtZSByaWdodCBpbiB0aGUgZmFjZS4gVGltZSB0byBkaWcgaW50byBob3cgdGhhdCBkbTkwMDAgaXMgcmVnaXN0ZXJlZCBhbmQgaW5zdGFudGlhdGVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVycGxheS4gSSBoYXZlIGEgaHVuY2ggdGhpcyBpcyB0aGUgcm9vdCBjYXVzZSBvZiBzb21lIGVhcmxpZXIgaXNzdWVzIEkmIzM5O3ZlIGJlZW4gc2VlaW5nLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXIuKmRtOTAwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYz0xNzk4PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGRtOTAwMF9vZl9tYXRjaGVzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE4MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE4MDE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZG05MDAwX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwMi1cdC5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTgxMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGRtOTAwMF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xODEyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMjkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqSW52ZXN0aWdhdGluZyB0aGUgYGRtOTAwMF9yZWxlYXNlX2JvYXJkYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBkbTkwMDBfcmVsZWFzZV9ib2FyZGAgZnVuY3Rpb24gd2l0aGluIGBkbTkwMDAuY2AgaXMgYmVpbmcgdXRpbGl6ZWQuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdldCB0byB0aGUgaGVhcnQgb2YgaG93IGl0JiMzOTtzIGJlaW5nIGNhbGxlZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gb3BlbiB0aGUgZmlsZSBhbmQgc3RhcnQgdHJhY2luZyBpdDsgbG9vayBmb3IgaW5zdGFuY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZC4gSSB3aWxsIHNlYXJjaCB0aGUgZmlsZSBmb3IgdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUgYW5kIGFuYWx5emUgaXRzIGFyZ3VtZW50cyBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgZHJpdmVyJiMzOTtzIGxpZmVjeWNsZSBtYW5hZ2VtZW50OiBXaGVuIGlzIHRoZSBib2FyZCByZWxlYXNlZD8gSXMgdGhpcyBjYWxsIHBhcnQgb2YgdGhlIHByb2JlLCByZW1vdmUsIG9yIHNodXRkb3duIHNlcXVlbmNlPyBXaGF0IHJlc291cmNlcyBpcyBpdCBmcmVlaW5nIHVwPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBkcml2ZXIgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbTkwMDBfcmVsZWFzZV9ib2FyZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYz03Njg9ZG05MDAwX3BvbGxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy03OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjc5ODovKiBkbTkwMDBfcmVsZWFzZV9ib2FyZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy03OTktICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jPTgwMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzo4MDQ6ZG05MDAwX3JlbGVhc2VfYm9hcmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGJvYXJkX2luZm8gKmRiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy04MDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTQxNj1kbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE3MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE3MTg6XHRkbTkwMDBfcmVsZWFzZV9ib2FyZChwZGV2LCBkYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE3MTktXHRmcmVlX25ldGRldihuZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jPTE3Nzg9c3RhdGljIHZvaWQgZG05MDAwX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE3ODMtXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTc4NDpcdGRtOTAwMF9yZWxlYXNlX2JvYXJkKHBkZXYsIGRtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTc4NS1cdGlmIChkbS1cdTAwM2Vwb3dlcl9zdXBwbHkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMjUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA4NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgRE05MDAwIG9uIGFtZDY0IGluIGEgRnV6emluZyBDb250ZXh0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkmIzM5O20gbG9va2luZyBhdCBgZG05MDAwX3JlbGVhc2VfYm9hcmRgLCBgZG05MDAwX2Rydl9yZW1vdmVgLCBhbmQgYGRtOTAwMF9wcm9iZWAgYW5kIGNvbnNpZGVyaW5nIHRoZWlyIHJlYWNoYWJpbGl0eS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zLCB3aGljaCBpbmNsdWRlIHRoZSBjbGVhbi11cCByb3V0aW5lcywgYXJlIGNhbGxlZCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgdGhlIHByb2JlIHJvdXRpbmUgYXMgd2VsbCBhcyB3aGVuIHRoZSBkcml2ZXIgaXMgdW5sb2FkZWQuIFRoYXQgZmVlbHMgbm9ybWFsLgoKVGhlIGZpcnN0IHF1ZXN0aW9uIEkgaGF2ZSBpcyB3aGV0aGVyIHRoZSBETTkwMDAgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIGFtZDY0IFFFTVUgZW52aXJvbm1lbnQuIFRoZSBETTkwMDAuLi4gcmlnaHQsIGl0JiMzOTtzIGFuIElTQS1saWtlL3BhcmFsbGVsIGJ1cyBFdGhlcm5ldCBjaGlwLCB0eXBpY2FsbHkgZm91bmQgb24gb2xkZXIgZW1iZWRkZWQgYXJjaGl0ZWN0dXJlcyBsaWtlIEFSTSwgTUlQUywgYW5kIENvbGRmaXJlLCBub3QgeDg2LiBTbywgdGhlIGxpa2VsaWhvb2Qgb2Ygc2VlaW5nIHRoaXMgZGlyZWN0bHkgaW4gYSBtb2Rlcm4gYW1kNjQgc2V0dXAgaXMgdmFuaXNoaW5nbHkgbG93LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSB0aGlzPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuCgpDYW4gc3l6a2FsbGVyLCBydW5uaW5nIG9uIGFtZDY0LCBpbnN0YW50aWF0ZSBhIERNOTAwMCBwbGF0Zm9ybSBkZXZpY2U/IFRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgbm90LiBVc2Vyc3BhY2UgY2FuJiMzOTt0IGp1c3QgYXJiaXRyYXJpbHkgY3JlYXRlIHBsYXRmb3JtIGRldmljZXMsIHJpZ2h0PyBQbGF0Zm9ybSBkZXZpY2VzIHVzdWFsbHkgY29tZSBmcm9tIGRldmljZSB0cmVlcywgcGxhdGZvcm0gYm9hcmQgZmlsZXMsIEFDUEksIG9yIGRyaXZlcnMgY2FsbGluZyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYC4gTm8gZ2VuZXJpYyBzeXNmcyBpbnRlcmZhY2UgYWxsb3dzIHVzZXJzcGFjZSB0byBjb25qdXJlIHRoZXNlIGRldmljZXMgb3V0IG9mIHRoaW4gYWlyLCB1bmxlc3MgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IHByb3ZpZGVzIGl0LCBvciB0aHJvdWdoIERldmljZSBUcmVlIG92ZXJsYXlzIChDT05GSUdfT0ZfQ09ORklHRlMpIG9yIHNpbWlsYXIuCgpTbywgbGV0JiMzOTtzIGludmVzdGlnYXRlIHNvbWUgc3BlY2lmaWMgcG9pbnRzLiBGaXJzdCwgaXMgQ09ORklHX09GX0NPTkZJR0ZTIGV2ZW4gYXZhaWxhYmxlIG9uIGFtZDY0PyBBbmQsIGRvZXMgdGhlIGRtOTAwMCBkcml2ZXIgaGF2ZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcyB0aGF0IHdvdWxkIHByZXZlbnQgaXQgZnJvbSBldmVuIGJlaW5nIGNvbXBpbGVkIG9uIGFtZDY0LCBzdWNoIGFzIGFuIGV4cGxpY2l0IGRlcGVuZGVuY2Ugb24gQVJNLCBNSVBTLCBDT0xERklSRSwgTklPUzIsIG9yIHBvdGVudGlhbGx5LCBgQ09NUElMRV9URVNUYD8gVGhlIGxhdHRlciB3b3VsZCBiZSBuZWNlc3NhcnkuIExldCYjMzk7cyBkaWcgaW50byB0aGUgS2NvbmZpZyBvcHRpb25zLiBPbiBhbWQ2NCwgYENPTVBJTEVfVEVTVGAgaXMgZm9yIGNvbXBpbGUgdGVzdGluZyBkcml2ZXJzLCBhbmQgaXQmIzM5O3MgdW5saWtlbHkgdG8gYmUgZW5hYmxlZCBpbiBmdXp6aW5nIGtlcm5lbHMuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gcmVtYWluczogQ2FuIHRoZSBgZG05MDAwX3Byb2JlYCBmdW5jdGlvbiBldmVyIGJlICpjYWxsZWQqIG9uIGFtZDY0PwoKTm93LCBsZXQmIzM5O3MgcmVmZXIgYmFjayB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBzZWN0aW9uIDIgc3BlY2lmaWNhbGx5OiAmIzM0O1JFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFJiMzNDsuIEZ1enppbmcgaXMgb25seSB1c2VmdWwgZm9yIGNvZGUgdGhhdCBjYW4gKmFjdHVhbGx5IGV4ZWN1dGUqIGluIGEgc3RhbmRhcmQsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW5zdHJ1Y3Rpb24gaXMgZXhwbGljaXQ6IGlmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgKmRvIG5vdCogZnV6eiBpdC4gT25lIG9mIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBsaXN0ZWQgaXMsICYjMzQ7Q29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiYjMzQ7CgpBbmQgdGhhdCYjMzk7cyBpdCEKCmBkbTkwMDBgJiMzOTtzIGRlZmluaXRpb24gaW4gdGhlIEtjb25maWcgZmlsZSBjbGVhcmx5IHN0YXRlcyBgZGVwZW5kcyBvbiBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RgLiBUaGlzIG1lYW5zIGl0IGlzLCBieSBkZWZpbml0aW9uLCAqZXhjbHVzaXZlKiB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gYW1kNjQuIFNvLCB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSB1bnVzdWFsIHBsYXRmb3JtIGRldmljZSBvciBBQ1BJIGNvbmZpZ3VyYXRpb24gdGhhdCBpbmNsdWRlcyBpdCAoaGlnaGx5IHVubGlrZWx5KSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgb24gb3VyIHRhcmdldCBhcmNoaXRlY3R1cmUsIGFuZCB3ZSBzaG91bGQgY2hlY2sgYGRtOTAwMC5jYCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IHJlYXNvbiB0byBiZWxpZXZlIG90aGVyd2lzZSwgYnV0IEkgZG9uJiMzOTt0IHRoaW5rIHNvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3ODU6XHRcdGlmIChkbS1cdTAwM2Vwb3dlcl9zdXBwbHkpXG4xNzg2Olx0XHRcdHJlZ3VsYXRvcl9kaXNhYmxlKGRtLVx1MDAzZXBvd2VyX3N1cHBseSk7XG4xNzg3Olx0XG4xNzg4Olx0XHRmcmVlX25ldGRldihuZGV2KTtcdFx0LyogZnJlZSBkZXZpY2Ugc3RydWN0dXJlICovXG4xNzg5Olx0XG4xNzkwOlx0XHRkZXZfZGJnKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZWxlYXNlZCBhbmQgZnJlZWQgZGV2aWNlXFxuXCYjMzQ7KTtcbjE3OTE6XHR9XG4xNzkyOlx0XG4xNzkzOlx0I2lmZGVmIENPTkZJR19PRlxuMTc5NDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRtOTAwMF9vZl9tYXRjaGVzW10gPSB7XG4xNzk1Olx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7ZGF2aWNvbSxkbTkwMDBcJiMzNDssIH0sXG4xNzk2Olx0XHR7IC8qIHNlbnRpbmVsICovIH1cbjE3OTc6XHR9O1xuMTc5ODpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGRtOTAwMF9vZl9tYXRjaGVzKTtcbjE3OTk6XHQjZW5kaWZcbjE4MDA6XHRcbjE4MDE6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkbTkwMDBfZHJpdmVyID0ge1xuMTgwMjpcdFx0LmRyaXZlclx0PSB7XG4xODAzOlx0XHRcdC5uYW1lICAgID0gXCYjMzQ7ZG05MDAwXCYjMzQ7LFxuMTgwNDpcdFx0XHQucG1cdCA9IFx1MDAyNmRtOTAwMF9kcnZfcG1fb3BzLFxuMTgwNTpcdFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIoZG05MDAwX29mX21hdGNoZXMpLFxuMTgwNjpcdFx0fSxcbjE4MDc6XHRcdC5wcm9iZSAgID0gZG05MDAwX3Byb2JlLFxuMTgwODpcdFx0LnJlbW92ZSA9IGRtOTAwMF9kcnZfcmVtb3ZlLFxuMTgwOTpcdH07XG4xODEwOlx0XG4xODExOlx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkbTkwMDBfZHJpdmVyKTtcbjE4MTI6XHRcbjE4MTM6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O1Nhc2NoYSBIYXVlciwgQmVuIERvb2tzXCYjMzQ7KTtcbjE4MTQ6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7RGF2aWNvbSBETTkwMDAgbmV0d29yayBkcml2ZXJcJiMzNDspO1xuMTgxNTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4xODE2Olx0TU9EVUxFX0FMSUFTKFwmIzM0O3BsYXRmb3JtOmRtOTAwMFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMzYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBETTkwMDAgRHJpdmVyJiMzOTtzIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGF0IGBkbTkwMDBfZHJpdmVyYC4uLiBsb29rcyBsaWtlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIERhdmljb20gRE05MDAwIEV0aGVybmV0IGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSB0YWlsb3JlZCBmb3IgZW1iZWRkZWQgc3lzdGVtcy4gSSBjYW4gc2VlIGl0IHVzZXMgRGV2aWNlIFRyZWUgbWF0Y2hpbmcgKCYjMzQ7ZGF2aWNvbSxkbTkwMDAmIzM0Oykgb3IgcGxhdGZvcm0gZGV2aWNlIG5hbWVzICgmIzM0O2RtOTAwMCYjMzQ7KSB0byBpZGVudGlmeSBpdHNlbGYuIE5vIEFDUEksIFBDSSwgb3IgVVNCIHN1cHBvcnQg4oCTIGl0JiMzOTtzIGFsbCBhYm91dCB0aG9zZSBtZW1vcnktbWFwcGVkIHBhcmFsbGVsIGJ1cyBzZXR1cHMgY29tbW9uIGluIG9sZGVyIEFSTSwgTUlQUywgQ29sZGZpcmUsIG9yIE5pb3MyIGJvYXJkcy4KCk5vdywgaGVyZSYjMzk7cyB0aGUga2lja2VyOiBzdGFuZGFyZCBRRU1VIG9uIGFuIHg4Nl82NCBzeXN0ZW0gKGxpa2UgYSBgcGNgIG9yIGBxMzVgIG1hY2hpbmUpICpkb2VzbiYjMzk7dCogaGF2ZSBhIERNOTAwMCBkZXZpY2UuIEFuZCwgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIG5haWwgdGhpcyBkb3duIGZ1cnRoZXI6IGl0JiMzOTtzIG9ubHkgYnVpbHQgZm9yIHRob3NlIGVtYmVkZGVkIGFyY2hpdGVjdHVyZXMgb3Igd2l0aCBgQ09NUElMRV9URVNUYC4gU28sIGV2ZW4gaWYgSSBjb3VsZCBzb21laG93IGdldCB0aGlzIGNvbXBpbGVkIG9uIGFtZDY0LCB0aGVyZSYjMzk7cyBub3RoaW5nIGluIHRoZSBRRU1VIGVudmlyb25tZW50IHRvIHRyaWdnZXIgdGhlIGBkbTkwMDBfcHJvYmVgIGZ1bmN0aW9uLiBUaGUgY29kZSBpdHNlbGYsIGV2ZW4gaWYgYnVpbHQsIGlzIHVucmVhY2hhYmxlIGJlY2F1c2Ugb2YgdGhpcyBoYXJkd2FyZSBhYnNlbmNlLiBBbmQgdGhlIGNoYW5nZSBpdHNlbGYgaXMgaW4gdGhlIHByb2JlIGFuZCByZWxlYXNlIHBhdGhzLCBhbGwgc3VnZ2VzdGluZyB0aGF0IHRoZXkgd2lsbCBuZXZlciBnZXQgaW52b2tlZCBieSBzdGFuZGFyZCB1c2FnZS4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gdGhpcyB3aXRoIGEgbG9vayBhdCBvdXIgbmVnYXRpdmUgY3JpdGVyaWEuIFRoaXMgaGl0cyB0aGUgbWFyayBmb3Igc2V2ZXJhbCByZWFzb25zOgoKMS4gICoqQXJjaGl0ZWN0dXJlOioqIFRoZSBkcml2ZXImIzM5O3MgZXhwbGljaXQgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY3kgKEFSTSwgTUlQUywgZXRjLikgbWFrZXMgaXQgaW5hY2Nlc3NpYmxlIG9uIGFtZDY0LCBvdXIgdGFyZ2V0LgoyLiAgKipIYXJkd2FyZToqKiBJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBlbWJlZGRlZCBTb0MvYm9hcmQgRXRoZXJuZXQgY29udHJvbGxlciBub3QgZW11bGF0ZWQgaW4gUUVNVS4KMy4gICoqVW5yZWFjaGFiaWxpdHk6KiogVGhlcmVmb3JlLCBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IGFyY2hpdGVjdHVyZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTtsbCBuZWVkIHRvIGRvIGEgcXVpY2sgc2VhcmNoIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgcmVmZXJlbmNlcyB0aGF0IGNvdWxkIGNvbXBsaWNhdGUgdGhpcyBwaWN0dXJlLCBidXQgYmFzZWQgb24gd2hhdCBJIHNlZSBoZXJlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgY29kZSBwYXRoIHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtOTAwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDQ6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMwOQoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBWZXJkaWN0OiBDbGVhciBhbmQgVW5hbWJpZ3VvdXMqKgoKT2theSwgc28gSSYjMzk7dmUganVzdCBmaW5pc2hlZCByZXZpZXdpbmcgdGhlIHNldHVwIGZvciB0aGlzIGZ1enppbmcgYXR0ZW1wdC4gRmlyc3Qgb2ZmLCB0aGVyZSYjMzk7cyBhYnNvbHV0ZWx5IG5vdGhpbmcgcmVsZXZhbnQgaW4gdGhlIGBhcmNoL3g4NmAgZGlyZWN0b3J5LCB3aGljaCBpcyBhIGdvb2Qgc2lnbiB3ZSYjMzk7cmUgbm90IGRlYWxpbmcgd2l0aCBhbiB4ODYtc3BlY2lmaWMgY29tcG9uZW50LiBOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBgc2V0LXJlc3VsdHNgIHBhcmFtZXRlcnMuIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAsIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0IGlzIGVtcHR5LCBhbmQgYm90aCBgRW5hYmxlQ29uZmlnc2AgYW5kIHRoZSBgUmVhc29uaW5nYCBhcmUgZXF1YWxseSBlbXB0eS4gVGhlIHJlYXNvbmluZyBpcyBhbHNvIGNvbmNpc2UuIFRoYXQgYWxyZWFkeSBwYWludHMgYSBwcmV0dHkgY2xlYXIgcGljdHVyZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhhdCYjMzk7cyB3aGF0IEkgZXhwZWN0ZWQuIFRoZSBkcml2ZXIgdW5kZXIgY29uc2lkZXJhdGlvbiBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY2AuIE5vdywgbG9va2luZyBhdCB0aGUgS2NvbmZpZywgYERNOTAwMGAgaXMgZGVwZW5kZW50IG9uIGBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RgLCB3aGljaCBpcyB0aGUgY3J1Y2lhbCBwb2ludC4gRnJvbSBteSBleHBlcmllbmNlLCBJIGtub3cgdGhlIERNOTAwMCBpcyBhbiBlbWJlZGRlZCBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIGZvciBEYXZpY29tIERNOTAwMCBGYXN0IEV0aGVybmV0IGNvbnRyb2xsZXJzLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkIG9uIEFSTSwgTUlQUywgYW5kIG90aGVyIHNpbWlsYXIgYm9hcmRzLCB0eXBpY2FsbHkgY29uZmlndXJlZCB2aWEgRGV2aWNlIFRyZWUgb3IgdGhlIHBsYXRmb3JtIGJ1cy4gSXQmIzM5O3MgZGVmaW5pdGVseSAqbm90KiBpbnRlbmRlZCB0byBiZSBpbnN0YW50aWF0ZWQgb24gc3RhbmRhcmQgYW1kNjQgdmlydHVhbCBtYWNoaW5lcyBsaWtlIFFFTVUgb3IgR0NFLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIGl0JiMzOTtzIHN0cnVjdHVyYWxseSBpbXBvc3NpYmxlIGZvciB0aGUgcHJvYmUgYW5kIGJvYXJkIHJlbGVhc2UgZnVuY3Rpb25zIHRvIGJlIHJlYWNoZWQgb24gYW1kNjQuIEl0IGlzLCB0aGVyZWZvcmUsIHZlcnkgY2xlYXIgd2Ugc2hvdWxkbiYjMzk7dCBmdXp6IHRoaXMuCgpBbGwgY2xlYXIsIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCB0ZWFyZG93biBsb2dpYyAoZG05MDAwX3JlbGVhc2VfYm9hcmQsIGRtOTAwMF9wcm9iZSkgaW4gdGhlIERhdmljb20gRE05MDAwIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYykuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBlbWJlZGRlZCBoYXJkd2FyZSB0aGF0IGRlcGVuZHMgb24gQVJNLCBNSVBTLCBDT0xERklSRSwgb3IgTklPUzIgKG9yIENPTVBJTEVfVEVTVCkuIEl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgYXMgdGhlIHJlcXVpcmVkIHBsYXRmb3JtIGhhcmR3YXJlL0RldmljZVRyZWUgYmluZGluZ3MgYXJlIG5vdCBwcmVzZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHRlYXJkb3duIGxvZ2ljIChkbTkwMDBfcmVsZWFzZV9ib2FyZCwgZG05MDAwX3Byb2JlKSBpbiB0aGUgRGF2aWNvbSBETTkwMDAgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jKS4gVGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGVtYmVkZGVkIGhhcmR3YXJlIHRoYXQgZGVwZW5kcyBvbiBBUk0sIE1JUFMsIENPTERGSVJFLCBvciBOSU9TMiAob3IgQ09NUElMRV9URVNUKS4gSXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0IGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBhcyB0aGUgcmVxdWlyZWQgcGxhdGZvcm0gaGFyZHdhcmUvRGV2aWNlVHJlZSBiaW5kaW5ncyBhcmUgbm90IHByZXNlbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTNUMDQ6NDg6MjUuMTY5ODY5MjE5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1ODIzOTgyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgdGVhcmRvd24gbG9naWMgKGRtOTAwMF9yZWxlYXNlX2JvYXJkLCBkbTkwMDBfcHJvYmUpIGluIHRoZSBEYXZpY29tIERNOTAwMCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMpLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgZW1iZWRkZWQgaGFyZHdhcmUgdGhhdCBkZXBlbmRzIG9uIEFSTSwgTUlQUywgQ09MREZJUkUsIG9yIE5JT1MyIChvciBDT01QSUxFX1RFU1QpLiBJdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGFzIHRoZSByZXF1aXJlZCBwbGF0Zm9ybSBoYXJkd2FyZS9EZXZpY2VUcmVlIGJpbmRpbmdzIGFyZSBub3QgcHJlc2VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjI1LjE2OTg3NTMxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4NjY0NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzc0ZmU5YTIxNGM1MWNlMjQ1NmI4OTczYjA2MmQ2M2JmMGM3MWY3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCAxMyAwNDo0ODoyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xcbmluZGV4IGI4N2VhZjBjMjUwY2UuLmM4ZmYwN2ZlMzFhNWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNcXG5AQCAtMTA0LDYgKzEwNCw3IEBAIHN0cnVjdCBib2FyZF9pbmZvIHtcXG4gXFx0dW5zaWduZWQgaW50XFx0aW5fdGltZW91dDoxO1xcbiBcXHR1bnNpZ25lZCBpbnRcXHRpbl9zdXNwZW5kOjE7XFxuIFxcdHVuc2lnbmVkIGludFxcdHdha2Vfc3VwcG9ydGVkOjE7XFxuK1xcdHVuc2lnbmVkIGludFxcdHdha2VfaXJxX3JlcXVlc3RlZDoxO1xcbiBcXG4gXFx0ZW51bSBkbTkwMDBfdHlwZSB0eXBlO1xcbiBcXG5AQCAtODAyLDYgKzgwMyw5IEBAIGRtOTAwMF9wb2xsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbiBzdGF0aWMgdm9pZFxcbiBkbTkwMDBfcmVsZWFzZV9ib2FyZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXFxuIHtcXG4rXFx0aWYgKGRiLVxcdTAwM2V3YWtlX2lycV9yZXF1ZXN0ZWQpXFxuK1xcdFxcdGZyZWVfaXJxKGRiLVxcdTAwM2VpcnFfd2FrZSwgZGItXFx1MDAzZW5kZXYpO1xcbitcXG4gXFx0LyogdW5tYXAgb3VyIHJlc291cmNlcyAqL1xcbiBcXG4gXFx0aW91bm1hcChkYi1cXHUwMDNlaW9fYWRkcik7XFxuQEAgLTE1MTksNiArMTUyMyw3IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdGRldl9lcnIoZGItXFx1MDAzZWRldiwgXFxcImNhbm5vdCBnZXQgd2FrZXVwIGlycSAoJWQpXFxcXG5cXFwiLCByZXQpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRkYi1cXHUwMDNld2FrZV9pcnFfcmVxdWVzdGVkID0gMTtcXG4gXFxuIFxcdFxcdFxcdC8qIHRlc3QgdG8gc2VlIGlmIGlycSBpcyByZWFsbHkgd2FrZXVwIGNhcGFibGUgKi9cXG4gXFx0XFx0XFx0cmV0ID0gaXJxX3NldF9pcnFfd2FrZShkYi1cXHUwMDNlaXJxX3dha2UsIDEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODoyNS42MDkyNDkzNjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ2MTQzMDA1MTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgdGVhcmRvd24gbG9naWMgKGRtOTAwMF9yZWxlYXNlX2JvYXJkLCBkbTkwMDBfcHJvYmUpIGluIHRoZSBEYXZpY29tIERNOTAwMCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMpLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgZW1iZWRkZWQgaGFyZHdhcmUgdGhhdCBkZXBlbmRzIG9uIEFSTSwgTUlQUywgQ09MREZJUkUsIG9yIE5JT1MyIChvciBDT01QSUxFX1RFU1QpLiBJdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGFzIHRoZSByZXF1aXJlZCBwbGF0Zm9ybSBoYXJkd2FyZS9EZXZpY2VUcmVlIGJpbmRpbmdzIGFyZSBub3QgcHJlc2VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzc0ZmU5YTIxNGM1MWNlMjQ1NmI4OTczYjA2MmQ2M2JmMGM3MWY3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDA0OjQ4OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNcbmluZGV4IGI4N2VhZjBjMjUwY2UuLmM4ZmYwN2ZlMzFhNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG5AQCAtMTA0LDYgKzEwNCw3IEBAIHN0cnVjdCBib2FyZF9pbmZvIHtcbiBcdHVuc2lnbmVkIGludFx0aW5fdGltZW91dDoxO1xuIFx0dW5zaWduZWQgaW50XHRpbl9zdXNwZW5kOjE7XG4gXHR1bnNpZ25lZCBpbnRcdHdha2Vfc3VwcG9ydGVkOjE7XG4rXHR1bnNpZ25lZCBpbnRcdHdha2VfaXJxX3JlcXVlc3RlZDoxO1xuIFxuIFx0ZW51bSBkbTkwMDBfdHlwZSB0eXBlO1xuIFxuQEAgLTgwMiw2ICs4MDMsOSBAQCBkbTkwMDBfcG9sbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbiBzdGF0aWMgdm9pZFxuIGRtOTAwMF9yZWxlYXNlX2JvYXJkKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBib2FyZF9pbmZvICpkYilcbiB7XG4rXHRpZiAoZGItXHUwMDNld2FrZV9pcnFfcmVxdWVzdGVkKVxuK1x0XHRmcmVlX2lycShkYi1cdTAwM2VpcnFfd2FrZSwgZGItXHUwMDNlbmRldik7XG4rXG4gXHQvKiB1bm1hcCBvdXIgcmVzb3VyY2VzICovXG4gXG4gXHRpb3VubWFwKGRiLVx1MDAzZWlvX2FkZHIpO1xuQEAgLTE1MTksNiArMTUyMyw3IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0ZGV2X2VycihkYi1cdTAwM2VkZXYsIFwiY2Fubm90IGdldCB3YWtldXAgaXJxICglZClcXG5cIiwgcmV0KTtcbiBcdFx0fSBlbHNlIHtcbitcdFx0XHRkYi1cdTAwM2V3YWtlX2lycV9yZXF1ZXN0ZWQgPSAxO1xuIFxuIFx0XHRcdC8qIHRlc3QgdG8gc2VlIGlmIGlycSBpcyByZWFsbHkgd2FrZXVwIGNhcGFibGUgKi9cbiBcdFx0XHRyZXQgPSBpcnFfc2V0X2lycV93YWtlKGRiLVx1MDAzZWlycV93YWtlLCAxKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjI1LjYwOTI1NjEyOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYwNzE3MTM2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBETTkwMDAgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0YXJnZXRpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNgLiBNeSBpbml0aWFsIG1vdmUgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBkcml2ZXIsIHRoZSBETTkwMDAsIGFjdHVhbGx5ICppcyouIFVzaW5nIHRoZSBzdGFuZGFyZCB0b29scywgSSBxdWlja2x5IGFzY2VydGFpbiB0aGF0IGl0J3MgYSBEYXZpY29tIEZhc3QgRXRoZXJuZXQgZHJpdmVyLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyB0aGlzIGEgcGxhdGZvcm0gZGV2aWNlIGRyaXZlcj8gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTXkgbmV4dCBzdGVwIGludm9sdmVzIG1ldGljdWxvdXNseSBpbnNwZWN0aW5nIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY2Agc291cmNlIGNvZGUsIGFsb25nIHdpdGggdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcy4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIHBhdGNoJ3MgcHVycG9zZSBhbmQgaW1wYWN0IGluIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjMxLjY4MDk3MjE3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODgwMjM3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRE05MDAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb21cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfREFWSUNPTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MTk6Y29uZmlnIERNOTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiRE05MDAwIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjMwOmNvbmZpZyBETTkwMDBfRk9SQ0VfU0lNUExFX1BIWV9QT0xMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkZvcmNlIHNpbXBsZSBOU1IgYmFzZWQgUEhZIHBvbGxpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjMxLjcyOTc3ODI3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM2NDY3MDY4MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCBLY29uZmlnIGZpbGU6XG5cbioqRGl2aW5nIGludG8gdGhlIERhdmljb20gRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBEYXZpY29tIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbWAgZGlyZWN0b3J5LiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBuZXR3b3JrIGludGVyZmFjZSBjYXJkIHdpbGwgbGl2ZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHN0cnVjdHVyZTsgYW0gSSBsb29raW5nIGF0IGEgdG9wLWxldmVsIEtjb25maWcsIG9yIGEgc3ViLUtjb25maWcgZmlsZT8gSXMgaXQgYSBzaW5nbGUgbW9ub2xpdGhpYyBjb25maWd1cmF0aW9uIG9yIG1vZHVsYXJpemVkIGZvciBzcGVjaWZpYyBEYXZpY29tIGNoaXBzZXRzIG9yIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIGxpc3RlZCBhdCB0aGUgdG9wLCBsaWtlIFBIWSBkcml2ZXJzIG9yIE1ESU8gYnVzZXM/IEknbSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDaGlwc2V0IFNlbGVjdGlvbjoqKiBBIG1haW4gYENPTkZJR19EQVZJQ09NYCBvcHRpb24gdGhhdCBhbGxvd3MgeW91IHRvIGVpdGhlciBlbmFibGUgYWxsIERhdmljb20gY2FyZHMgaW4gYSBkcml2ZXIgb3Igc2VsZWN0IGluZGl2aWR1YWwgRGF2aWNvbSBtb2RlbHMgdG8gaW5jbHVkZS4gSXQncyBhbG1vc3QgZ3VhcmFudGVlZCB0byBoYXZlIHN1Yi1vcHRpb25zIGZvciBzcGVjaWZpYyBjaGlwcywgc3VjaCBhcyBgQ09ORklHX0RBVklDT01fRE05MXh4YCwgYENPTkZJR19EQVZJQ09NX0RNOTB4eGAsIG9yIGBDT05GSUdfREFWSUNPTV9ETTkyeHhgLlxuKiAgICoqRmVhdHVyZSBGbGFnczoqKiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSBgQ09ORklHX0RBVklDT01fUEhZX1NVUFBPUlRgIChpZiBpdCBzdXBwb3J0cyB0aGUgYnVpbHQtaW4gUEhZKSwgYENPTkZJR19EQVZJQ09NX0RFQlVHYCBmb3IgZGVidWdnaW5nIG1lc3NhZ2VzLCBgQ09ORklHX0RBVklDT01fRkxPV19DT05UUk9MYCwgYW5kIHBlcmhhcHMgZXZlbiBvcHRpb25zIHRvIGZpbmUtdHVuZSBpbnRlcnJ1cHQgaGFuZGxpbmcgb3IgRE1BIHNldHRpbmdzLlxuKiAgICoqRGVwZW5kZW5jeSBDaGVja3M6KiogSSdtIGxvb2tpbmcgZm9yIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBEYXZpY29tIGRyaXZlciBuZWVkcyB0aGUgcHJvcGVyIE1ESU8gb3IgTUFDIHN1YnN5c3RlbS4gSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggZGV2aWNlIHRyZWUgYmluZGluZ3MgYXJlIG5lZWRlZCBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LlxuKiAgICoqRG9jdW1lbnRhdGlvbiBhbmQgRGVmYXVsdHM6KiogSSdsbCBiZSBzY2FubmluZyBmb3IgaGVscCB0ZXh0cyBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSG9wZWZ1bGx5LCB0aGVyZSdzIGEgZ29vZCBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiBlYWNoIG9wdGlvbiwgYWxvbmcgd2l0aCByZWFzb25hYmxlIGRlZmF1bHQgc2V0dGluZ3MuIEdvb2QgZG9jdW1lbnRhdGlvbiBoZWxwcyB0cmVtZW5kb3VzbHkhXG4qICAgKipNZW51IFN0cnVjdHVyZToqKiBJJ2xsIGxvb2sgZm9yIG5lc3RlZCBgbWVudWAgb3IgYGNvbmZpZ2AgYmxvY2tzIHRvIHVuZGVyc3RhbmQgaG93IG9wdGlvbnMgYXJlIG9yZ2FuaXplZCBsb2dpY2FsbHkuIElzIGl0IGEgZmxhdCBsaXN0LCBvciBpcyBpdCB3ZWxsLXN0cnVjdHVyZWQgdG8gZ3JvdXAgcmVsYXRlZCBzZXR0aW5ncz9cbiogICAqKlRyaWNrcyBhbmQgVHJhcHM6KiogSSdtIGFsd2F5cyBsb29raW5nIGZvciB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zIG9yIGNvcm5lci1jYXNlIHNldHRpbmdzLiBBcmUgdGhlcmUgYW55IGBzZWxlY3RgIHN0YXRlbWVudHMgdGhhdCBmb3JjZSBkZXBlbmRlbmNpZXM/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGRpZmZlcmVudCBzZWxlY3Rpb24gb3B0aW9ucz9cblxuRXNzZW50aWFsbHksIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBmaWxlIHRvIGJ1aWxkIGEgcGljdHVyZSBvZiBob3cgYSB1c2VyIHdvdWxkIGludGVyYWN0IHdpdGggaXQgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5IHRoZSBjcml0aWNhbCBrbm9icyB0aGF0IG5lZWQgdG8gYmUgdHdlYWtlZCB0byBnZXQgdGhlIERhdmljb20gRXRoZXJuZXQgZHJpdmVyIHdvcmtpbmcgY29ycmVjdGx5IGluIGEgc3BlY2lmaWMgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODozNS4zNzY0ODY5MjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDYxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgRGF2aWNvbSBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9EQVZJQ09NXFxuICAgNzpcXHRcXHRib29sIFxcXCJEYXZpY29tIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEzOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTQ6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IERhdmljb20gZGV2aWNlcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZFxcbiAgMTU6XFx0XFx0ICBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgc2VsZWN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBETTkwMDBcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJETTkwMDAgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUXFxuICAyMjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIzOlxcdFxcdHNlbGVjdCBNSUlcXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgU3VwcG9ydCBmb3IgRE05MDAwIGNoaXBzZXQuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIFRoZSBtb2R1bGVcXG4gIDI4OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgZG05MDAwLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRjb25maWcgRE05MDAwX0ZPUkNFX1NJTVBMRV9QSFlfUE9MTFxcbiAgMzE6XFx0XFx0Ym9vbCBcXFwiRm9yY2Ugc2ltcGxlIE5TUiBiYXNlZCBQSFkgcG9sbGluZ1xcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gRE05MDAwXFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgY29uZmlndXJhdGlvbiBmb3JjZXMgdGhlIERNOTAwMCB0byB1c2UgdGhlIE5TUidzIExpbmtTdGF0dXNcXG4gIDM1OlxcdFxcdCAgYml0IHRvIGRldGVybWluZSBpZiB0aGUgbGluayBpcyB1cCBvciBkb3duIGluc3RlYWQgb2YgdGhlIG1vcmVcXG4gIDM2OlxcdFxcdCAgY29zdGx5IE1JSSBQSFkgcmVhZHMuIE5vdGUsIHRoaXMgd2lsbCBub3Qgd29yayBpZiB0aGUgY2hpcCBpc1xcbiAgMzc6XFx0XFx0ICBvcGVyYXRpbmcgd2l0aCBhbiBleHRlcm5hbCBQSFkuXFxuICAzODpcXHRcXG4gIDM5OlxcdGNvbmZpZyBETTkwNTFcXG4gIDQwOlxcdFxcdHRyaXN0YXRlIFxcXCJETTkwNTEgU1BJIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjM1LjM3NjU0OTcwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI0MTExNzg0NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXJjaGl0ZWN0dXJlIENvbXBhdGliaWxpdHkgUXVhbmRhcnkqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIHNpdHVhdGlvbi4gSSdtIHNlZWluZyB0aGlzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNoZWNrIOKAkyBgZGVwZW5kcyBvbiBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RgIOKAkyB3aGljaCBpbW1lZGlhdGVseSB0aHJvd3MgdXAgYSByZWQgZmxhZy4gTXkgcHJpbWFyeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBzb21ldGhpbmcgaXNuJ3QgcXVpdGUgcmlnaHQuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgdGhlIERNOTAwMCBkcml2ZXIsIHdoaWNoIEknbSBhc3N1bWluZyBpcyB0aGUgY29tcG9uZW50IGFmZmVjdGVkIGJ5IHRoaXMsIGNhbiBldmVuIGJlICpsZWdpdGltYXRlbHkqIGluc3RhbnRpYXRlZCBvbiBhbiBhbWQ2NCBzeXN0ZW0sIHBhcnRpY3VsYXJseSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LiBUaGlzIGZlZWxzIGxpa2UgYSBjb21wYXRpYmlsaXR5IGlzc3VlIHN0YXJpbmcgbWUgcmlnaHQgaW4gdGhlIGZhY2UuIFRpbWUgdG8gZGlnIGludG8gaG93IHRoYXQgZG05MDAwIGlzIHJlZ2lzdGVyZWQgYW5kIGluc3RhbnRpYXRlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgaXMgdGhlIHJvb3QgY2F1c2Ugb2Ygc29tZSBlYXJsaWVyIGlzc3VlcyBJJ3ZlIGJlZW4gc2VlaW5nLiBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzk2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODozNy43ODc3MzA0MDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzMjAyNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyLipkbTkwMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jPTE3OTg9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZG05MDAwX29mX21hdGNoZXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xODAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTgwMTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkbTkwMDBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwMi1cXHQuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE4MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzoxODExOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZG05MDAwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xODEyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODozNy44MzkwNTc2MDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyODY2ODAyNzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgZG05MDAwX3JlbGVhc2VfYm9hcmRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgZG05MDAwX3JlbGVhc2VfYm9hcmRgIGZ1bmN0aW9uIHdpdGhpbiBgZG05MDAwLmNgIGlzIGJlaW5nIHV0aWxpemVkLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBnb2luZyB0byBxdWlja2x5IGdldCB0byB0aGUgaGVhcnQgb2YgaG93IGl0J3MgYmVpbmcgY2FsbGVkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBvcGVuIHRoZSBmaWxlIGFuZCBzdGFydCB0cmFjaW5nIGl0OyBsb29rIGZvciBpbnN0YW5jZXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkLiBJIHdpbGwgc2VhcmNoIHRoZSBmaWxlIGZvciB0aGUgZnVuY3Rpb24ncyBuYW1lIGFuZCBhbmFseXplIGl0cyBhcmd1bWVudHMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgZHJpdmVyJ3MgbGlmZWN5Y2xlIG1hbmFnZW1lbnQ6IFdoZW4gaXMgdGhlIGJvYXJkIHJlbGVhc2VkPyBJcyB0aGlzIGNhbGwgcGFydCBvZiB0aGUgcHJvYmUsIHJlbW92ZSwgb3Igc2h1dGRvd24gc2VxdWVuY2U/IFdoYXQgcmVzb3VyY2VzIGlzIGl0IGZyZWVpbmcgdXA/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uJ3MgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyOSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjQwLjcwNTg2MjU1NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMzkzMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG05MDAwX3JlbGVhc2VfYm9hcmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jPTc2OD1kbTkwMDBfcG9sbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtNzk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6Nzk4Oi8qIGRtOTAwMF9yZWxlYXNlX2JvYXJkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy03OTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9ODAzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzo4MDQ6ZG05MDAwX3JlbGVhc2VfYm9hcmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGJvYXJkX2luZm8gKmRiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtODA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTQxNj1kbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTcxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE3MTg6XFx0ZG05MDAwX3JlbGVhc2VfYm9hcmQocGRldiwgZGIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTcxOS1cXHRmcmVlX25ldGRldihuZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTc3OD1zdGF0aWMgdm9pZCBkbTkwMDBfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNzgzLVxcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTc4NDpcXHRkbTkwMDBfcmVsZWFzZV9ib2FyZChwZGV2LCBkbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNzg1LVxcdGlmIChkbS1cXHUwMDNlcG93ZXJfc3VwcGx5KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODo0MC43NTMwMDg3MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NzUwOTQ0MDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBETTkwMDAgb24gYW1kNjQgaW4gYSBGdXp6aW5nIENvbnRleHQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEknbSBsb29raW5nIGF0IGBkbTkwMDBfcmVsZWFzZV9ib2FyZGAsIGBkbTkwMDBfZHJ2X3JlbW92ZWAsIGFuZCBgZG05MDAwX3Byb2JlYCBhbmQgY29uc2lkZXJpbmcgdGhlaXIgcmVhY2hhYmlsaXR5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMsIHdoaWNoIGluY2x1ZGUgdGhlIGNsZWFuLXVwIHJvdXRpbmVzLCBhcmUgY2FsbGVkIGluIHRoZSBlcnJvciBoYW5kbGluZyBvZiB0aGUgcHJvYmUgcm91dGluZSBhcyB3ZWxsIGFzIHdoZW4gdGhlIGRyaXZlciBpcyB1bmxvYWRlZC4gVGhhdCBmZWVscyBub3JtYWwuXG5cblRoZSBmaXJzdCBxdWVzdGlvbiBJIGhhdmUgaXMgd2hldGhlciB0aGUgRE05MDAwIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBzdGFuZGFyZCBhbWQ2NCBRRU1VIGVudmlyb25tZW50LiBUaGUgRE05MDAwLi4uIHJpZ2h0LCBpdCdzIGFuIElTQS1saWtlL3BhcmFsbGVsIGJ1cyBFdGhlcm5ldCBjaGlwLCB0eXBpY2FsbHkgZm91bmQgb24gb2xkZXIgZW1iZWRkZWQgYXJjaGl0ZWN0dXJlcyBsaWtlIEFSTSwgTUlQUywgYW5kIENvbGRmaXJlLCBub3QgeDg2LiBTbywgdGhlIGxpa2VsaWhvb2Qgb2Ygc2VlaW5nIHRoaXMgZGlyZWN0bHkgaW4gYSBtb2Rlcm4gYW1kNjQgc2V0dXAgaXMgdmFuaXNoaW5nbHkgbG93LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSB0aGlzPyBUaGF0J3MgdGhlIGNydXggb2YgdGhpcy5cblxuQ2FuIHN5emthbGxlciwgcnVubmluZyBvbiBhbWQ2NCwgaW5zdGFudGlhdGUgYSBETTkwMDAgcGxhdGZvcm0gZGV2aWNlPyBUaGUgYW5zd2VyIGlzIHByb2JhYmx5IG5vdC4gVXNlcnNwYWNlIGNhbid0IGp1c3QgYXJiaXRyYXJpbHkgY3JlYXRlIHBsYXRmb3JtIGRldmljZXMsIHJpZ2h0PyBQbGF0Zm9ybSBkZXZpY2VzIHVzdWFsbHkgY29tZSBmcm9tIGRldmljZSB0cmVlcywgcGxhdGZvcm0gYm9hcmQgZmlsZXMsIEFDUEksIG9yIGRyaXZlcnMgY2FsbGluZyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYC4gTm8gZ2VuZXJpYyBzeXNmcyBpbnRlcmZhY2UgYWxsb3dzIHVzZXJzcGFjZSB0byBjb25qdXJlIHRoZXNlIGRldmljZXMgb3V0IG9mIHRoaW4gYWlyLCB1bmxlc3MgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IHByb3ZpZGVzIGl0LCBvciB0aHJvdWdoIERldmljZSBUcmVlIG92ZXJsYXlzIChDT05GSUdfT0ZfQ09ORklHRlMpIG9yIHNpbWlsYXIuXG5cblNvLCBsZXQncyBpbnZlc3RpZ2F0ZSBzb21lIHNwZWNpZmljIHBvaW50cy4gRmlyc3QsIGlzIENPTkZJR19PRl9DT05GSUdGUyBldmVuIGF2YWlsYWJsZSBvbiBhbWQ2ND8gQW5kLCBkb2VzIHRoZSBkbTkwMDAgZHJpdmVyIGhhdmUgYXJjaGl0ZWN0dXJhbCBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCBwcmV2ZW50IGl0IGZyb20gZXZlbiBiZWluZyBjb21waWxlZCBvbiBhbWQ2NCwgc3VjaCBhcyBhbiBleHBsaWNpdCBkZXBlbmRlbmNlIG9uIEFSTSwgTUlQUywgQ09MREZJUkUsIE5JT1MyLCBvciBwb3RlbnRpYWxseSwgYENPTVBJTEVfVEVTVGA/IFRoZSBsYXR0ZXIgd291bGQgYmUgbmVjZXNzYXJ5LiBMZXQncyBkaWcgaW50byB0aGUgS2NvbmZpZyBvcHRpb25zLiBPbiBhbWQ2NCwgYENPTVBJTEVfVEVTVGAgaXMgZm9yIGNvbXBpbGUgdGVzdGluZyBkcml2ZXJzLCBhbmQgaXQncyB1bmxpa2VseSB0byBiZSBlbmFibGVkIGluIGZ1enppbmcga2VybmVscy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIHJlbWFpbnM6IENhbiB0aGUgYGRtOTAwMF9wcm9iZWAgZnVuY3Rpb24gZXZlciBiZSAqY2FsbGVkKiBvbiBhbWQ2ND9cblxuTm93LCBsZXQncyByZWZlciBiYWNrIHRvIHRoZSBpbnN0cnVjdGlvbnMsIHNlY3Rpb24gMiBzcGVjaWZpY2FsbHk6IFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEVcIi4gRnV6emluZyBpcyBvbmx5IHVzZWZ1bCBmb3IgY29kZSB0aGF0IGNhbiAqYWN0dWFsbHkgZXhlY3V0ZSogaW4gYSBzdGFuZGFyZCwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBpbnN0cnVjdGlvbiBpcyBleHBsaWNpdDogaWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCAqZG8gbm90KiBmdXp6IGl0LiBPbmUgb2YgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGxpc3RlZCBpcywgXCJDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXCJcblxuQW5kIHRoYXQncyBpdCFcblxuYGRtOTAwMGAncyBkZWZpbml0aW9uIGluIHRoZSBLY29uZmlnIGZpbGUgY2xlYXJseSBzdGF0ZXMgYGRlcGVuZHMgb24gQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUYC4gVGhpcyBtZWFucyBpdCBpcywgYnkgZGVmaW5pdGlvbiwgKmV4Y2x1c2l2ZSogdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIGFtZDY0LiBTbywgdW5sZXNzIHRoZXJlJ3Mgc29tZSB1bnVzdWFsIHBsYXRmb3JtIGRldmljZSBvciBBQ1BJIGNvbmZpZ3VyYXRpb24gdGhhdCBpbmNsdWRlcyBpdCAoaGlnaGx5IHVubGlrZWx5KSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgb24gb3VyIHRhcmdldCBhcmNoaXRlY3R1cmUsIGFuZCB3ZSBzaG91bGQgY2hlY2sgYGRtOTAwMC5jYCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IHJlYXNvbiB0byBiZWxpZXZlIG90aGVyd2lzZSwgYnV0IEkgZG9uJ3QgdGhpbmsgc28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDQ6NDg6NDguMjYyNDUyMDIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3ODUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3ODU6XFx0XFx0aWYgKGRtLVxcdTAwM2Vwb3dlcl9zdXBwbHkpXFxuMTc4NjpcXHRcXHRcXHRyZWd1bGF0b3JfZGlzYWJsZShkbS1cXHUwMDNlcG93ZXJfc3VwcGx5KTtcXG4xNzg3OlxcdFxcbjE3ODg6XFx0XFx0ZnJlZV9uZXRkZXYobmRldik7XFx0XFx0LyogZnJlZSBkZXZpY2Ugc3RydWN0dXJlICovXFxuMTc4OTpcXHRcXG4xNzkwOlxcdFxcdGRldl9kYmcoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInJlbGVhc2VkIGFuZCBmcmVlZCBkZXZpY2VcXFxcblxcXCIpO1xcbjE3OTE6XFx0fVxcbjE3OTI6XFx0XFxuMTc5MzpcXHQjaWZkZWYgQ09ORklHX09GXFxuMTc5NDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkbTkwMDBfb2ZfbWF0Y2hlc1tdID0ge1xcbjE3OTU6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJkYXZpY29tLGRtOTAwMFxcXCIsIH0sXFxuMTc5NjpcXHRcXHR7IC8qIHNlbnRpbmVsICovIH1cXG4xNzk3OlxcdH07XFxuMTc5ODpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkbTkwMDBfb2ZfbWF0Y2hlcyk7XFxuMTc5OTpcXHQjZW5kaWZcXG4xODAwOlxcdFxcbjE4MDE6XFx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZG05MDAwX2RyaXZlciA9IHtcXG4xODAyOlxcdFxcdC5kcml2ZXJcXHQ9IHtcXG4xODAzOlxcdFxcdFxcdC5uYW1lICAgID0gXFxcImRtOTAwMFxcXCIsXFxuMTgwNDpcXHRcXHRcXHQucG1cXHQgPSBcXHUwMDI2ZG05MDAwX2Rydl9wbV9vcHMsXFxuMTgwNTpcXHRcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIoZG05MDAwX29mX21hdGNoZXMpLFxcbjE4MDY6XFx0XFx0fSxcXG4xODA3OlxcdFxcdC5wcm9iZSAgID0gZG05MDAwX3Byb2JlLFxcbjE4MDg6XFx0XFx0LnJlbW92ZSA9IGRtOTAwMF9kcnZfcmVtb3ZlLFxcbjE4MDk6XFx0fTtcXG4xODEwOlxcdFxcbjE4MTE6XFx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkbTkwMDBfZHJpdmVyKTtcXG4xODEyOlxcdFxcbjE4MTM6XFx0TU9EVUxFX0FVVEhPUihcXFwiU2FzY2hhIEhhdWVyLCBCZW4gRG9va3NcXFwiKTtcXG4xODE0OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiRGF2aWNvbSBETTkwMDAgbmV0d29yayBkcml2ZXJcXFwiKTtcXG4xODE1OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4xODE2OlxcdE1PRFVMRV9BTElBUyhcXFwicGxhdGZvcm06ZG05MDAwXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjQ4LjI2MjU1NjQ0MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMzM5MDgyNTYzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERNOTAwMCBEcml2ZXIncyBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoYXQgYGRtOTAwMF9kcml2ZXJgLi4uIGxvb2tzIGxpa2UgaXQncyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBEYXZpY29tIERNOTAwMCBFdGhlcm5ldCBjb250cm9sbGVyLCBzcGVjaWZpY2FsbHkgdGFpbG9yZWQgZm9yIGVtYmVkZGVkIHN5c3RlbXMuIEkgY2FuIHNlZSBpdCB1c2VzIERldmljZSBUcmVlIG1hdGNoaW5nIChcImRhdmljb20sZG05MDAwXCIpIG9yIHBsYXRmb3JtIGRldmljZSBuYW1lcyAoXCJkbTkwMDBcIikgdG8gaWRlbnRpZnkgaXRzZWxmLiBObyBBQ1BJLCBQQ0ksIG9yIFVTQiBzdXBwb3J0IOKAkyBpdCdzIGFsbCBhYm91dCB0aG9zZSBtZW1vcnktbWFwcGVkIHBhcmFsbGVsIGJ1cyBzZXR1cHMgY29tbW9uIGluIG9sZGVyIEFSTSwgTUlQUywgQ29sZGZpcmUsIG9yIE5pb3MyIGJvYXJkcy5cblxuTm93LCBoZXJlJ3MgdGhlIGtpY2tlcjogc3RhbmRhcmQgUUVNVSBvbiBhbiB4ODZfNjQgc3lzdGVtIChsaWtlIGEgYHBjYCBvciBgcTM1YCBtYWNoaW5lKSAqZG9lc24ndCogaGF2ZSBhIERNOTAwMCBkZXZpY2UuIEFuZCwgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIG5haWwgdGhpcyBkb3duIGZ1cnRoZXI6IGl0J3Mgb25seSBidWlsdCBmb3IgdGhvc2UgZW1iZWRkZWQgYXJjaGl0ZWN0dXJlcyBvciB3aXRoIGBDT01QSUxFX1RFU1RgLiBTbywgZXZlbiBpZiBJIGNvdWxkIHNvbWVob3cgZ2V0IHRoaXMgY29tcGlsZWQgb24gYW1kNjQsIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgUUVNVSBlbnZpcm9ubWVudCB0byB0cmlnZ2VyIHRoZSBgZG05MDAwX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGNvZGUgaXRzZWxmLCBldmVuIGlmIGJ1aWx0LCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIG9mIHRoaXMgaGFyZHdhcmUgYWJzZW5jZS4gQW5kIHRoZSBjaGFuZ2UgaXRzZWxmIGlzIGluIHRoZSBwcm9iZSBhbmQgcmVsZWFzZSBwYXRocywgYWxsIHN1Z2dlc3RpbmcgdGhhdCB0aGV5IHdpbGwgbmV2ZXIgZ2V0IGludm9rZWQgYnkgc3RhbmRhcmQgdXNhZ2UuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGlzIHdpdGggYSBsb29rIGF0IG91ciBuZWdhdGl2ZSBjcml0ZXJpYS4gVGhpcyBoaXRzIHRoZSBtYXJrIGZvciBzZXZlcmFsIHJlYXNvbnM6XG5cbjEuICAqKkFyY2hpdGVjdHVyZToqKiBUaGUgZHJpdmVyJ3MgZXhwbGljaXQgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY3kgKEFSTSwgTUlQUywgZXRjLikgbWFrZXMgaXQgaW5hY2Nlc3NpYmxlIG9uIGFtZDY0LCBvdXIgdGFyZ2V0LlxuMi4gICoqSGFyZHdhcmU6KiogSXQncyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBlbWJlZGRlZCBTb0MvYm9hcmQgRXRoZXJuZXQgY29udHJvbGxlciBub3QgZW11bGF0ZWQgaW4gUUVNVS5cbjMuICAqKlVucmVhY2hhYmlsaXR5OioqIFRoZXJlZm9yZSwgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IGFyY2hpdGVjdHVyZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgbmVlZCB0byBkbyBhIHF1aWNrIHNlYXJjaCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHJlZmVyZW5jZXMgdGhhdCBjb3VsZCBjb21wbGljYXRlIHRoaXMgcGljdHVyZSwgYnV0IGJhc2VkIG9uIHdoYXQgSSBzZWUgaGVyZSwgSSdtIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgY29kZSBwYXRoIHVucmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjM2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDQ6NDk6MDEuNjUzMzg0NTQzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzkyOTQ4OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG05MDAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0OTowMS43MjEzMjMwMTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTAwMzA5MDc2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBWZXJkaWN0OiBDbGVhciBhbmQgVW5hbWJpZ3VvdXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGp1c3QgZmluaXNoZWQgcmV2aWV3aW5nIHRoZSBzZXR1cCBmb3IgdGhpcyBmdXp6aW5nIGF0dGVtcHQuIEZpcnN0IG9mZiwgdGhlcmUncyBhYnNvbHV0ZWx5IG5vdGhpbmcgcmVsZXZhbnQgaW4gdGhlIGBhcmNoL3g4NmAgZGlyZWN0b3J5LCB3aGljaCBpcyBhIGdvb2Qgc2lnbiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGFuIHg4Ni1zcGVjaWZpYyBjb21wb25lbnQuIE5vdywgbGV0J3MgbG9vayBhdCB0aGUgYHNldC1yZXN1bHRzYCBwYXJhbWV0ZXJzLiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLCB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCBpcyBlbXB0eSwgYW5kIGJvdGggYEVuYWJsZUNvbmZpZ3NgIGFuZCB0aGUgYFJlYXNvbmluZ2AgYXJlIGVxdWFsbHkgZW1wdHkuIFRoZSByZWFzb25pbmcgaXMgYWxzbyBjb25jaXNlLiBUaGF0IGFscmVhZHkgcGFpbnRzIGEgcHJldHR5IGNsZWFyIHBpY3R1cmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGV2ZXJ5dGhpbmcuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBUaGUgZHJpdmVyIHVuZGVyIGNvbnNpZGVyYXRpb24gaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNgLiBOb3csIGxvb2tpbmcgYXQgdGhlIEtjb25maWcsIGBETTkwMDBgIGlzIGRlcGVuZGVudCBvbiBgQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUYCwgd2hpY2ggaXMgdGhlIGNydWNpYWwgcG9pbnQuIEZyb20gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoZSBETTkwMDAgaXMgYW4gZW1iZWRkZWQgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciBmb3IgRGF2aWNvbSBETTkwMDAgRmFzdCBFdGhlcm5ldCBjb250cm9sbGVycy4gSXQncyBkZXNpZ25lZCB0byBiZSB1c2VkIG9uIEFSTSwgTUlQUywgYW5kIG90aGVyIHNpbWlsYXIgYm9hcmRzLCB0eXBpY2FsbHkgY29uZmlndXJlZCB2aWEgRGV2aWNlIFRyZWUgb3IgdGhlIHBsYXRmb3JtIGJ1cy4gSXQncyBkZWZpbml0ZWx5ICpub3QqIGludGVuZGVkIHRvIGJlIGluc3RhbnRpYXRlZCBvbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsIG1hY2hpbmVzIGxpa2UgUUVNVSBvciBHQ0UuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBpdCdzIHN0cnVjdHVyYWxseSBpbXBvc3NpYmxlIGZvciB0aGUgcHJvYmUgYW5kIGJvYXJkIHJlbGVhc2UgZnVuY3Rpb25zIHRvIGJlIHJlYWNoZWQgb24gYW1kNjQuIEl0IGlzLCB0aGVyZWZvcmUsIHZlcnkgY2xlYXIgd2Ugc2hvdWxkbid0IGZ1enogdGhpcy5cblxuQWxsIGNsZWFyLCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMwOSwiT3V0cHV0VG9rZW5zIjoxNTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDQ6NDk6MTEuNzUyMjMyODUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHRlYXJkb3duIGxvZ2ljIChkbTkwMDBfcmVsZWFzZV9ib2FyZCwgZG05MDAwX3Byb2JlKSBpbiB0aGUgRGF2aWNvbSBETTkwMDAgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jKS4gVGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGVtYmVkZGVkIGhhcmR3YXJlIHRoYXQgZGVwZW5kcyBvbiBBUk0sIE1JUFMsIENPTERGSVJFLCBvciBOSU9TMiAob3IgQ09NUElMRV9URVNUKS4gSXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0IGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBhcyB0aGUgcmVxdWlyZWQgcGxhdGZvcm0gaGFyZHdhcmUvRGV2aWNlVHJlZSBiaW5kaW5ncyBhcmUgbm90IHByZXNlbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgdGVhcmRvd24gbG9naWMgKGRtOTAwMF9yZWxlYXNlX2JvYXJkLCBkbTkwMDBfcHJvYmUpIGluIHRoZSBEYXZpY29tIERNOTAwMCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMpLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgZW1iZWRkZWQgaGFyZHdhcmUgdGhhdCBkZXBlbmRzIG9uIEFSTSwgTUlQUywgQ09MREZJUkUsIG9yIE5JT1MyIChvciBDT01QSUxFX1RFU1QpLiBJdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGFzIHRoZSByZXF1aXJlZCBwbGF0Zm9ybSBoYXJkd2FyZS9EZXZpY2VUcmVlIGJpbmRpbmdzIGFyZSBub3QgcHJlc2VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ5OjExLjc1MjI1NjYwMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow5wdkg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-13 03:58:29 +0000 UTC FinishedAt: 2026-09-13 04:49:13 +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+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHRlYXJkb3duIGxvZ2ljIChkbTkwMDBfcmVsZWFzZV9ib2FyZCwgZG05MDAwX3Byb2JlKSBpbiB0aGUgRGF2aWNvbSBETTkwMDAgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jKS4gVGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGVtYmVkZGVkIGhhcmR3YXJlIHRoYXQgZGVwZW5kcyBvbiBBUk0sIE1JUFMsIENPTERGSVJFLCBvciBOSU9TMiAob3IgQ09NUElMRV9URVNUKS4gSXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0IGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBhcyB0aGUgcmVxdWlyZWQgcGxhdGZvcm0gaGFyZHdhcmUvRGV2aWNlVHJlZSBiaW5kaW5ncyBhcmUgbm90IHByZXNlbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMzc0ZmU5YTIxNGM1MWNlMjQ1NmI4OTczYjA2MmQ2M2JmMGM3MWY3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDA0OjQ4OjI0IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG5pbmRleCBiODdlYWYwYzI1MGNlLi5jOGZmMDdmZTMxYTViIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xuQEAgLTEwNCw2ICYjNDM7MTA0LDcgQEAgc3RydWN0IGJvYXJkX2luZm8ge1xuIFx0dW5zaWduZWQgaW50XHRpbl90aW1lb3V0OjE7XG4gXHR1bnNpZ25lZCBpbnRcdGluX3N1c3BlbmQ6MTtcbiBcdHVuc2lnbmVkIGludFx0d2FrZV9zdXBwb3J0ZWQ6MTtcbiYjNDM7XHR1bnNpZ25lZCBpbnRcdHdha2VfaXJxX3JlcXVlc3RlZDoxO1xuIFxuIFx0ZW51bSBkbTkwMDBfdHlwZSB0eXBlO1xuIFxuQEAgLTgwMiw2ICYjNDM7ODAzLDkgQEAgZG05MDAwX3BvbGxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4gc3RhdGljIHZvaWRcbiBkbTkwMDBfcmVsZWFzZV9ib2FyZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXG4ge1xuJiM0MztcdGlmIChkYi1cdTAwM2V3YWtlX2lycV9yZXF1ZXN0ZWQpXG4mIzQzO1x0XHRmcmVlX2lycShkYi1cdTAwM2VpcnFfd2FrZSwgZGItXHUwMDNlbmRldik7XG4mIzQzO1xuIFx0LyogdW5tYXAgb3VyIHJlc291cmNlcyAqL1xuIFxuIFx0aW91bm1hcChkYi1cdTAwM2Vpb19hZGRyKTtcbkBAIC0xNTE5LDYgJiM0MzsxNTIzLDcgQEAgZG05MDAwX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXHRcdGlmIChyZXQpIHtcbiBcdFx0XHRkZXZfZXJyKGRiLVx1MDAzZWRldiwgXCYjMzQ7Y2Fubm90IGdldCB3YWtldXAgaXJxICglZClcXG5cJiMzNDssIHJldCk7XG4gXHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGRiLVx1MDAzZXdha2VfaXJxX3JlcXVlc3RlZCA9IDE7XG4gXG4gXHRcdFx0LyogdGVzdCB0byBzZWUgaWYgaXJxIGlzIHJlYWxseSB3YWtldXAgY2FwYWJsZSAqL1xuIFx0XHRcdHJldCA9IGlycV9zZXRfaXJxX3dha2UoZGItXHUwMDNlaXJxX3dha2UsIDEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCB0ZWFyZG93biBsb2dpYyAoZG05MDAwX3JlbGVhc2VfYm9hcmQsIGRtOTAwMF9wcm9iZSkgaW4gdGhlIERhdmljb20gRE05MDAwIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYykuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBlbWJlZGRlZCBoYXJkd2FyZSB0aGF0IGRlcGVuZHMgb24gQVJNLCBNSVBTLCBDT0xERklSRSwgb3IgTklPUzIgKG9yIENPTVBJTEVfVEVTVCkuIEl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgYXMgdGhlIHJlcXVpcmVkIHBsYXRmb3JtIGhhcmR3YXJlL0RldmljZVRyZWUgYmluZGluZ3MgYXJlIG5vdCBwcmVzZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIgYW5kIHNlY3VyaXR5IGVuZ2luZWVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzCnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoxLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsCmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuCgotIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOgogIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQKICBlbnZpcm9ubWVudHMgKEdDRSBvciBRRU1VLCB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgZGV2aWNlcyBsaWtlIFVTQiBnYWRnZXRzLCBuZXRkZXYsIHR1bi90YXApLgogIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCwKICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuCgotIERPIE5PVCBCTElORExZIFRSVVNUICYjMzQ7Tk8gRlVOQ1RJT05BTCBDSEFOR0UmIzM0OyAoTkZDSSkgT1IgJiMzNDtSRUZBQ1RPUklORyYjMzQ7IENMQUlNUzoKICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzICYjMzQ7Y2xlYW51cHMmIzM0OywgJiMzNDtyZWZhY3RvcmluZ3MmIzM0Oywgb3Igc3RhdGUKICAmIzM0O05vIGZ1bmN0aW9uYWwgY2hhbmdlIGludGVuZGVkJiMzNDsuIERvIE5PVCB0YWtlIHRoZXNlIGNsYWltcyBhdCBmYWNlIHZhbHVlLgogIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudAogIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLgogIElmIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUgaXMgbW9kaWZpZWQgb3IgcmVmYWN0b3JlZCwgaXQgTVVTVCBiZSBmdXp6ZWQuCgotIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOgogIFdoZW4gYSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzIHJ1bnRpbWUgY2hlY2tzIG9yIGFzc2VydGlvbnMgKGUuZy4sIFdBUk5fT04qLCBWTV9XQVJOX09OKiwKICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy4KICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyCiAgYW4gdW51c3VhbCBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zIGNhbiB2aW9sYXRlIGl0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMi4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPWZhbHNlIChORUdBVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczoKCi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczoKICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy4KICAqIFVzZXItc3BhY2UgZGlyZWN0b3JpZXMsIHNlbGYtdGVzdHMsIHNhbXBsZXMsIG9yIHNjcmlwdHMgKGUuZy4sIHRvb2xzLywgc2FtcGxlcy8sIHNjcmlwdHMvLCB1c3IvKQogICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLgogICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHMKICAgIHRoYXQgZG8gbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBvciBkYXRhIHN0cnVjdHVyZXMuCiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuCi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOgogICogVmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6CiAgKiBEcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzICgucmVtb3ZlLCAuc2h1dGRvd24sIHBjaV91bnJlZ2lzdGVyX2RyaXZlcikgZXhlY3V0ZWQgb25seSBkdXJpbmcKICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLgogICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOgotIENvcmUgU3Vic3lzdGVtczoKICAqIEFueSBsb2dpYyBtb2RpZmljYXRpb25zIGluIG1lbW9yeSBtYW5hZ2VtZW50IChtbS8pLCBzeW5jaHJvbml6YXRpb24vbG9ja2luZyAoa2VybmVsL2xvY2tpbmcvKSwKICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy4KLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6CiAgKiBBbnkgcmVzdHJ1Y3R1cmluZyBvZiByZWFjaGFibGUgZGF0YSBzdHJ1Y3R1cmVzLCBoZWxwZXIgYWJzdHJhY3Rpb25zLCBvciBhbGdvcml0aG0gZmxvd3MuCi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOgogICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLgotIFJlYWNoYWJsZSBEcml2ZXJzIGFuZCBQcm90b2NvbHM6CiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo0LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTikKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KV2hlbiBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IG11c3QgZXh0cmFjdCBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIGludG8gRm9jdXNTeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXI6CgotIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzoKICBEbyBOT1QgbGlzdCBnZW5lcmljLCB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYWxsZWQgYnkgYWxtb3N0IGV2ZXJ5IHByb2dyYW0gaW4gdGhlIGNvcnB1cwogIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0CiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuCiAgTGlzdGluZyB1YmlxdWl0b3VzIGZ1bmN0aW9ucyBjYXVzZXMgdGhlIGZ1enplciB0byBjbGFzc2lmeSB0aG91c2FuZHMgb2YgdW5yZWxhdGVkIHRlc3RzIGFzICYjMzQ7Zm9jdXNlZCYjMzQ7LAogIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy4KCi0gVEFSR0VUIFNQRUNJRklDIEZFQVRVUkUgTE9HSUMgQU5EIEVOVFJZUE9JTlRTOgogIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50cwogIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LgoKLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6CiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFjawogIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMgaW4gdm1saW51eCBhbmQgY2Fubm90IGJlIHRhcmdldGVkIGRpcmVjdGx5IGJ5IHN5bWJvbCBjb3ZlcmFnZSBmaWx0ZXJzLgogIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlcgogIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZToKLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgotIENoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncyBuZWVkZWQuCi0gU3RyaXAgYW55ICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDM3NGZlOWEyMTRjNTFjZTI0NTZiODk3M2IwNjJkNjNiZjBjNzFmNzUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIFNlcCAxMyAwNDo0ODoyNCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jCmluZGV4IGI4N2VhZjBjMjUwY2UuLmM4ZmYwN2ZlMzFhNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYwpAQCAtMTA0LDYgJiM0MzsxMDQsNyBAQCBzdHJ1Y3QgYm9hcmRfaW5mbyB7CiAJdW5zaWduZWQgaW50CWluX3RpbWVvdXQ6MTsKIAl1bnNpZ25lZCBpbnQJaW5fc3VzcGVuZDoxOwogCXVuc2lnbmVkIGludAl3YWtlX3N1cHBvcnRlZDoxOwomIzQzOwl1bnNpZ25lZCBpbnQJd2FrZV9pcnFfcmVxdWVzdGVkOjE7CiAKIAllbnVtIGRtOTAwMF90eXBlIHR5cGU7CiAKQEAgLTgwMiw2ICYjNDM7ODAzLDkgQEAgZG05MDAwX3BvbGxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpCiBzdGF0aWMgdm9pZAogZG05MDAwX3JlbGVhc2VfYm9hcmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGJvYXJkX2luZm8gKmRiKQogewomIzQzOwlpZiAoZGItJmd0O3dha2VfaXJxX3JlcXVlc3RlZCkKJiM0MzsJCWZyZWVfaXJxKGRiLSZndDtpcnFfd2FrZSwgZGItJmd0O25kZXYpOwomIzQzOwogCS8qIHVubWFwIG91ciByZXNvdXJjZXMgKi8KIAogCWlvdW5tYXAoZGItJmd0O2lvX2FkZHIpOwpAQCAtMTUxOSw2ICYjNDM7MTUyMyw3IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCQlpZiAocmV0KSB7CiAJCQlkZXZfZXJyKGRiLSZndDtkZXYsICYjMzQ7Y2Fubm90IGdldCB3YWtldXAgaXJxICglZClcbiYjMzQ7LCByZXQpOwogCQl9IGVsc2UgewomIzQzOwkJCWRiLSZndDt3YWtlX2lycV9yZXF1ZXN0ZWQgPSAxOwogCiAJCQkvKiB0ZXN0IHRvIHNlZSBpZiBpcnEgaXMgcmVhbGx5IHdha2V1cCBjYXBhYmxlICovCiAJCQlyZXQgPSBpcnFfc2V0X2lycV93YWtlKGRiLSZndDtpcnFfd2FrZSwgMSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBETTkwMDAgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gVGhlIHBhdGNoIGlzIHRhcmdldGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY2AuIE15IGluaXRpYWwgbW92ZSBpcyB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCB0aGlzIGRyaXZlciwgdGhlIERNOTAwMCwgYWN0dWFsbHkgKmlzKi4gVXNpbmcgdGhlIHN0YW5kYXJkIHRvb2xzLCBJIHF1aWNrbHkgYXNjZXJ0YWluIHRoYXQgaXQmIzM5O3MgYSBEYXZpY29tIEZhc3QgRXRoZXJuZXQgZHJpdmVyLgoKTm93LCB0aGUgY3J1Y2lhbCBxdWVzdGlvbjogaXMgdGhpcyBhIHBsYXRmb3JtIGRldmljZSBkcml2ZXI/IEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0LiBNeSBuZXh0IHN0ZXAgaW52b2x2ZXMgbWV0aWN1bG91c2x5IGluc3BlY3RpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jYCBzb3VyY2UgY29kZSwgYWxvbmcgd2l0aCB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzLiBUaGlzIHdpbGwgcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgcGF0Y2gmIzM5O3MgcHVycG9zZSBhbmQgaW1wYWN0IGluIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRE05MDAwJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MTk6Y29uZmlnIERNOTAwMFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTIwLVx0dHJpc3RhdGUgXCYjMzQ7RE05MDAwIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MzA6Y29uZmlnIERNOTAwMF9GT1JDRV9TSU1QTEVfUEhZX1BPTExcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7Rm9yY2Ugc2ltcGxlIE5TUiBiYXNlZCBQSFkgcG9sbGluZ1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM2MDkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCBLY29uZmlnIGZpbGU6CgoqKkRpdmluZyBpbnRvIHRoZSBEYXZpY29tIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHdlJiMzOTtyZSBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBEYXZpY29tIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbWAgZGlyZWN0b3J5LiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBuZXR3b3JrIGludGVyZmFjZSBjYXJkIHdpbGwgbGl2ZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHN0cnVjdHVyZTsgYW0gSSBsb29raW5nIGF0IGEgdG9wLWxldmVsIEtjb25maWcsIG9yIGEgc3ViLUtjb25maWcgZmlsZT8gSXMgaXQgYSBzaW5nbGUgbW9ub2xpdGhpYyBjb25maWd1cmF0aW9uIG9yIG1vZHVsYXJpemVkIGZvciBzcGVjaWZpYyBEYXZpY29tIGNoaXBzZXRzIG9yIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIGxpc3RlZCBhdCB0aGUgdG9wLCBsaWtlIFBIWSBkcml2ZXJzIG9yIE1ESU8gYnVzZXM/IEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZToKCiogICAqKkNoaXBzZXQgU2VsZWN0aW9uOioqIEEgbWFpbiBgQ09ORklHX0RBVklDT01gIG9wdGlvbiB0aGF0IGFsbG93cyB5b3UgdG8gZWl0aGVyIGVuYWJsZSBhbGwgRGF2aWNvbSBjYXJkcyBpbiBhIGRyaXZlciBvciBzZWxlY3QgaW5kaXZpZHVhbCBEYXZpY29tIG1vZGVscyB0byBpbmNsdWRlLiBJdCYjMzk7cyBhbG1vc3QgZ3VhcmFudGVlZCB0byBoYXZlIHN1Yi1vcHRpb25zIGZvciBzcGVjaWZpYyBjaGlwcywgc3VjaCBhcyBgQ09ORklHX0RBVklDT01fRE05MXh4YCwgYENPTkZJR19EQVZJQ09NX0RNOTB4eGAsIG9yIGBDT05GSUdfREFWSUNPTV9ETTkyeHhgLgoqICAgKipGZWF0dXJlIEZsYWdzOioqIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSBgQ09ORklHX0RBVklDT01fUEhZX1NVUFBPUlRgIChpZiBpdCBzdXBwb3J0cyB0aGUgYnVpbHQtaW4gUEhZKSwgYENPTkZJR19EQVZJQ09NX0RFQlVHYCBmb3IgZGVidWdnaW5nIG1lc3NhZ2VzLCBgQ09ORklHX0RBVklDT01fRkxPV19DT05UUk9MYCwgYW5kIHBlcmhhcHMgZXZlbiBvcHRpb25zIHRvIGZpbmUtdHVuZSBpbnRlcnJ1cHQgaGFuZGxpbmcgb3IgRE1BIHNldHRpbmdzLgoqICAgKipEZXBlbmRlbmN5IENoZWNrczoqKiBJJiMzOTttIGxvb2tpbmcgZm9yIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBEYXZpY29tIGRyaXZlciBuZWVkcyB0aGUgcHJvcGVyIE1ESU8gb3IgTUFDIHN1YnN5c3RlbS4gSSYjMzk7bGwgbmVlZCB0byBrbm93IHdoaWNoIGRldmljZSB0cmVlIGJpbmRpbmdzIGFyZSBuZWVkZWQgZm9yIGl0IHRvIGZ1bmN0aW9uIGNvcnJlY3RseS4KKiAgICoqRG9jdW1lbnRhdGlvbiBhbmQgRGVmYXVsdHM6KiogSSYjMzk7bGwgYmUgc2Nhbm5pbmcgZm9yIGhlbHAgdGV4dHMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggY29uZmlndXJhdGlvbiBvcHRpb24uIEhvcGVmdWxseSwgdGhlcmUmIzM5O3MgYSBnb29kIGRlc2NyaXB0aW9uIG9mIHRoZSBwdXJwb3NlIG9mIGVhY2ggb3B0aW9uLCBhbG9uZyB3aXRoIHJlYXNvbmFibGUgZGVmYXVsdCBzZXR0aW5ncy4gR29vZCBkb2N1bWVudGF0aW9uIGhlbHBzIHRyZW1lbmRvdXNseSEKKiAgICoqTWVudSBTdHJ1Y3R1cmU6KiogSSYjMzk7bGwgbG9vayBmb3IgbmVzdGVkIGBtZW51YCBvciBgY29uZmlnYCBibG9ja3MgdG8gdW5kZXJzdGFuZCBob3cgb3B0aW9ucyBhcmUgb3JnYW5pemVkIGxvZ2ljYWxseS4gSXMgaXQgYSBmbGF0IGxpc3QsIG9yIGlzIGl0IHdlbGwtc3RydWN0dXJlZCB0byBncm91cCByZWxhdGVkIHNldHRpbmdzPwoqICAgKipUcmlja3MgYW5kIFRyYXBzOioqIEkmIzM5O20gYWx3YXlzIGxvb2tpbmcgZm9yIHVudXN1YWwgY29uZmlndXJhdGlvbnMgb3IgY29ybmVyLWNhc2Ugc2V0dGluZ3MuIEFyZSB0aGVyZSBhbnkgYHNlbGVjdGAgc3RhdGVtZW50cyB0aGF0IGZvcmNlIGRlcGVuZGVuY2llcz8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgZGlmZmVyZW50IHNlbGVjdGlvbiBvcHRpb25zPwoKRXNzZW50aWFsbHksIEkmIzM5O20gbWVudGFsbHkgcGFyc2luZyB0aGUgZmlsZSB0byBidWlsZCBhIHBpY3R1cmUgb2YgaG93IGEgdXNlciB3b3VsZCBpbnRlcmFjdCB3aXRoIGl0IGR1cmluZyBrZXJuZWwgY29uZmlndXJhdGlvbi4gSSYjMzk7bSB0cnlpbmcgdG8gaWRlbnRpZnkgdGhlIGNyaXRpY2FsIGtub2JzIHRoYXQgbmVlZCB0byBiZSB0d2Vha2VkIHRvIGdldCB0aGUgRGF2aWNvbSBFdGhlcm5ldCBkcml2ZXIgd29ya2luZyBjb3JyZWN0bHkgaW4gYSBzcGVjaWZpYyBlbnZpcm9ubWVudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuICAgMjpcdCNcbiAgIDM6XHQjIERhdmljb20gZGV2aWNlIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0Y29uZmlnIE5FVF9WRU5ET1JfREFWSUNPTVxuICAgNzpcdFx0Ym9vbCBcJiMzNDtEYXZpY29tIGRldmljZXNcJiMzNDtcbiAgIDg6XHRcdGRlZmF1bHQgeVxuICAgOTpcdFx0aGVscFxuICAxMDpcdFx0ICBJZiB5b3UgaGF2ZSBhIG5ldHdvcmsgKEV0aGVybmV0KSBjYXJkIGJlbG9uZ2luZyB0byB0aGlzIGNsYXNzLCBzYXkgWS5cbiAgMTE6XHRcbiAgMTI6XHRcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2VzbiYjMzk7dCBkaXJlY3RseSBhZmZlY3QgdGhlXG4gIDEzOlx0XHQgIGtlcm5lbDogc2F5aW5nIE4gd2lsbCBqdXN0IGNhdXNlIHRoZSBjb25maWd1cmF0b3IgdG8gc2tpcCBhbGxcbiAgMTQ6XHRcdCAgdGhlIHF1ZXN0aW9ucyBhYm91dCBEYXZpY29tIGRldmljZXMuIElmIHlvdSBzYXkgWSwgeW91IHdpbGwgYmUgYXNrZWRcbiAgMTU6XHRcdCAgZm9yIHlvdXIgc3BlY2lmaWMgY2FyZCBpbiB0aGUgZm9sbG93aW5nIHNlbGVjdGlvbnMuXG4gIDE2Olx0XG4gIDE3Olx0aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXG4gIDE4Olx0XG4gIDE5Olx0Y29uZmlnIERNOTAwMFxuICAyMDpcdFx0dHJpc3RhdGUgXCYjMzQ7RE05MDAwIHN1cHBvcnRcJiMzNDtcbiAgMjE6XHRcdGRlcGVuZHMgb24gQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUXG4gIDIyOlx0XHRzZWxlY3QgQ1JDMzJcbiAgMjM6XHRcdHNlbGVjdCBNSUlcbiAgMjQ6XHRcdGhlbHBcbiAgMjU6XHRcdCAgU3VwcG9ydCBmb3IgRE05MDAwIGNoaXBzZXQuXG4gIDI2Olx0XG4gIDI3Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBUaGUgbW9kdWxlXG4gIDI4Olx0XHQgIHdpbGwgYmUgY2FsbGVkIGRtOTAwMC5cbiAgMjk6XHRcbiAgMzA6XHRjb25maWcgRE05MDAwX0ZPUkNFX1NJTVBMRV9QSFlfUE9MTFxuICAzMTpcdFx0Ym9vbCBcJiMzNDtGb3JjZSBzaW1wbGUgTlNSIGJhc2VkIFBIWSBwb2xsaW5nXCYjMzQ7XG4gIDMyOlx0XHRkZXBlbmRzIG9uIERNOTAwMFxuICAzMzpcdFx0aGVscFxuICAzNDpcdFx0ICBUaGlzIGNvbmZpZ3VyYXRpb24gZm9yY2VzIHRoZSBETTkwMDAgdG8gdXNlIHRoZSBOU1ImIzM5O3MgTGlua1N0YXR1c1xuICAzNTpcdFx0ICBiaXQgdG8gZGV0ZXJtaW5lIGlmIHRoZSBsaW5rIGlzIHVwIG9yIGRvd24gaW5zdGVhZCBvZiB0aGUgbW9yZVxuICAzNjpcdFx0ICBjb3N0bHkgTUlJIFBIWSByZWFkcy4gTm90ZSwgdGhpcyB3aWxsIG5vdCB3b3JrIGlmIHRoZSBjaGlwIGlzXG4gIDM3Olx0XHQgIG9wZXJhdGluZyB3aXRoIGFuIGV4dGVybmFsIFBIWS5cbiAgMzg6XHRcbiAgMzk6XHRjb25maWcgRE05MDUxXG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtETTkwNTEgU1BJIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuOC1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0Nzk2CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXJjaGl0ZWN0dXJlIENvbXBhdGliaWxpdHkgUXVhbmRhcnkqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgc2l0dWF0aW9uLiBJJiMzOTttIHNlZWluZyB0aGlzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNoZWNrIOKAkyBgZGVwZW5kcyBvbiBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RgIOKAkyB3aGljaCBpbW1lZGlhdGVseSB0aHJvd3MgdXAgYSByZWQgZmxhZy4gTXkgcHJpbWFyeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBzb21ldGhpbmcgaXNuJiMzOTt0IHF1aXRlIHJpZ2h0LiBNeSBpbW1lZGlhdGUgY29uY2VybiBpcyB3aGV0aGVyIHRoZSBETTkwMDAgZHJpdmVyLCB3aGljaCBJJiMzOTttIGFzc3VtaW5nIGlzIHRoZSBjb21wb25lbnQgYWZmZWN0ZWQgYnkgdGhpcywgY2FuIGV2ZW4gYmUgKmxlZ2l0aW1hdGVseSogaW5zdGFudGlhdGVkIG9uIGFuIGFtZDY0IHN5c3RlbSwgcGFydGljdWxhcmx5IHdpdGhpbiBhIFFFTVUgZW52aXJvbm1lbnQuIFRoaXMgZmVlbHMgbGlrZSBhIGNvbXBhdGliaWxpdHkgaXNzdWUgc3RhcmluZyBtZSByaWdodCBpbiB0aGUgZmFjZS4gVGltZSB0byBkaWcgaW50byBob3cgdGhhdCBkbTkwMDAgaXMgcmVnaXN0ZXJlZCBhbmQgaW5zdGFudGlhdGVkIHRvIHVuZGVyc3RhbmQgdGhlIGludGVycGxheS4gSSBoYXZlIGEgaHVuY2ggdGhpcyBpcyB0aGUgcm9vdCBjYXVzZSBvZiBzb21lIGVhcmxpZXIgaXNzdWVzIEkmIzM5O3ZlIGJlZW4gc2VlaW5nLiBMZXQmIzM5O3MgZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwbGF0Zm9ybV9kcml2ZXIuKmRtOTAwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYz0xNzk4PU1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGRtOTAwMF9vZl9tYXRjaGVzKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE4MDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE4MDE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZG05MDAwX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwMi1cdC5kcml2ZXJcdD0ge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgxMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTgxMTptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGRtOTAwMF9kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xODEyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUzMjkKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqSW52ZXN0aWdhdGluZyB0aGUgYGRtOTAwMF9yZWxlYXNlX2JvYXJkYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBkbTkwMDBfcmVsZWFzZV9ib2FyZGAgZnVuY3Rpb24gd2l0aGluIGBkbTkwMDAuY2AgaXMgYmVpbmcgdXRpbGl6ZWQuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGdldCB0byB0aGUgaGVhcnQgb2YgaG93IGl0JiMzOTtzIGJlaW5nIGNhbGxlZC4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gb3BlbiB0aGUgZmlsZSBhbmQgc3RhcnQgdHJhY2luZyBpdDsgbG9vayBmb3IgaW5zdGFuY2VzIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZC4gSSB3aWxsIHNlYXJjaCB0aGUgZmlsZSBmb3IgdGhlIGZ1bmN0aW9uJiMzOTtzIG5hbWUgYW5kIGFuYWx5emUgaXRzIGFyZ3VtZW50cyBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIFNwZWNpZmljYWxseSwgSSYjMzk7bSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgZHJpdmVyJiMzOTtzIGxpZmVjeWNsZSBtYW5hZ2VtZW50OiBXaGVuIGlzIHRoZSBib2FyZCByZWxlYXNlZD8gSXMgdGhpcyBjYWxsIHBhcnQgb2YgdGhlIHByb2JlLCByZW1vdmUsIG9yIHNodXRkb3duIHNlcXVlbmNlPyBXaGF0IHJlc291cmNlcyBpcyBpdCBmcmVlaW5nIHVwPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHNpdGVzIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdW5jdGlvbiYjMzk7cyBwdXJwb3NlIHdpdGhpbiB0aGUgYnJvYWRlciBkcml2ZXIgZnJhbWV3b3JrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkbTkwMDBfcmVsZWFzZV9ib2FyZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYz03Njg9ZG05MDAwX3BvbGxfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKncpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy03OTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjc5ODovKiBkbTkwMDBfcmVsZWFzZV9ib2FyZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy03OTktICpcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jPTgwMz1zdGF0aWMgdm9pZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzo4MDQ6ZG05MDAwX3JlbGVhc2VfYm9hcmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGJvYXJkX2luZm8gKmRiKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy04MDUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTQxNj1kbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE3MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE3MTg6XHRkbTkwMDBfcmVsZWFzZV9ib2FyZChwZGV2LCBkYik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE3MTktXHRmcmVlX25ldGRldihuZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jPTE3Nzg9c3RhdGljIHZvaWQgZG05MDAwX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE3ODMtXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTc4NDpcdGRtOTAwMF9yZWxlYXNlX2JvYXJkKHBkZXYsIGRtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTc4NS1cdGlmIChkbS1cdTAwM2Vwb3dlcl9zdXBwbHkpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMjUKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA4NDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgRE05MDAwIG9uIGFtZDY0IGluIGEgRnV6emluZyBDb250ZXh0KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEkmIzM5O20gbG9va2luZyBhdCBgZG05MDAwX3JlbGVhc2VfYm9hcmRgLCBgZG05MDAwX2Rydl9yZW1vdmVgLCBhbmQgYGRtOTAwMF9wcm9iZWAgYW5kIGNvbnNpZGVyaW5nIHRoZWlyIHJlYWNoYWJpbGl0eS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zLCB3aGljaCBpbmNsdWRlIHRoZSBjbGVhbi11cCByb3V0aW5lcywgYXJlIGNhbGxlZCBpbiB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgdGhlIHByb2JlIHJvdXRpbmUgYXMgd2VsbCBhcyB3aGVuIHRoZSBkcml2ZXIgaXMgdW5sb2FkZWQuIFRoYXQgZmVlbHMgbm9ybWFsLgoKVGhlIGZpcnN0IHF1ZXN0aW9uIEkgaGF2ZSBpcyB3aGV0aGVyIHRoZSBETTkwMDAgaXMgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHN0YW5kYXJkIGFtZDY0IFFFTVUgZW52aXJvbm1lbnQuIFRoZSBETTkwMDAuLi4gcmlnaHQsIGl0JiMzOTtzIGFuIElTQS1saWtlL3BhcmFsbGVsIGJ1cyBFdGhlcm5ldCBjaGlwLCB0eXBpY2FsbHkgZm91bmQgb24gb2xkZXIgZW1iZWRkZWQgYXJjaGl0ZWN0dXJlcyBsaWtlIEFSTSwgTUlQUywgYW5kIENvbGRmaXJlLCBub3QgeDg2LiBTbywgdGhlIGxpa2VsaWhvb2Qgb2Ygc2VlaW5nIHRoaXMgZGlyZWN0bHkgaW4gYSBtb2Rlcm4gYW1kNjQgc2V0dXAgaXMgdmFuaXNoaW5nbHkgbG93LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSB0aGlzPyBUaGF0JiMzOTtzIHRoZSBjcnV4IG9mIHRoaXMuCgpDYW4gc3l6a2FsbGVyLCBydW5uaW5nIG9uIGFtZDY0LCBpbnN0YW50aWF0ZSBhIERNOTAwMCBwbGF0Zm9ybSBkZXZpY2U/IFRoZSBhbnN3ZXIgaXMgcHJvYmFibHkgbm90LiBVc2Vyc3BhY2UgY2FuJiMzOTt0IGp1c3QgYXJiaXRyYXJpbHkgY3JlYXRlIHBsYXRmb3JtIGRldmljZXMsIHJpZ2h0PyBQbGF0Zm9ybSBkZXZpY2VzIHVzdWFsbHkgY29tZSBmcm9tIGRldmljZSB0cmVlcywgcGxhdGZvcm0gYm9hcmQgZmlsZXMsIEFDUEksIG9yIGRyaXZlcnMgY2FsbGluZyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYC4gTm8gZ2VuZXJpYyBzeXNmcyBpbnRlcmZhY2UgYWxsb3dzIHVzZXJzcGFjZSB0byBjb25qdXJlIHRoZXNlIGRldmljZXMgb3V0IG9mIHRoaW4gYWlyLCB1bmxlc3MgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IHByb3ZpZGVzIGl0LCBvciB0aHJvdWdoIERldmljZSBUcmVlIG92ZXJsYXlzIChDT05GSUdfT0ZfQ09ORklHRlMpIG9yIHNpbWlsYXIuCgpTbywgbGV0JiMzOTtzIGludmVzdGlnYXRlIHNvbWUgc3BlY2lmaWMgcG9pbnRzLiBGaXJzdCwgaXMgQ09ORklHX09GX0NPTkZJR0ZTIGV2ZW4gYXZhaWxhYmxlIG9uIGFtZDY0PyBBbmQsIGRvZXMgdGhlIGRtOTAwMCBkcml2ZXIgaGF2ZSBhcmNoaXRlY3R1cmFsIGRlcGVuZGVuY2llcyB0aGF0IHdvdWxkIHByZXZlbnQgaXQgZnJvbSBldmVuIGJlaW5nIGNvbXBpbGVkIG9uIGFtZDY0LCBzdWNoIGFzIGFuIGV4cGxpY2l0IGRlcGVuZGVuY2Ugb24gQVJNLCBNSVBTLCBDT0xERklSRSwgTklPUzIsIG9yIHBvdGVudGlhbGx5LCBgQ09NUElMRV9URVNUYD8gVGhlIGxhdHRlciB3b3VsZCBiZSBuZWNlc3NhcnkuIExldCYjMzk7cyBkaWcgaW50byB0aGUgS2NvbmZpZyBvcHRpb25zLiBPbiBhbWQ2NCwgYENPTVBJTEVfVEVTVGAgaXMgZm9yIGNvbXBpbGUgdGVzdGluZyBkcml2ZXJzLCBhbmQgaXQmIzM5O3MgdW5saWtlbHkgdG8gYmUgZW5hYmxlZCBpbiBmdXp6aW5nIGtlcm5lbHMuCgpUaGUgY3JpdGljYWwgcXVlc3Rpb24gcmVtYWluczogQ2FuIHRoZSBgZG05MDAwX3Byb2JlYCBmdW5jdGlvbiBldmVyIGJlICpjYWxsZWQqIG9uIGFtZDY0PwoKTm93LCBsZXQmIzM5O3MgcmVmZXIgYmFjayB0byB0aGUgaW5zdHJ1Y3Rpb25zLCBzZWN0aW9uIDIgc3BlY2lmaWNhbGx5OiAmIzM0O1JFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFJiMzNDsuIEZ1enppbmcgaXMgb25seSB1c2VmdWwgZm9yIGNvZGUgdGhhdCBjYW4gKmFjdHVhbGx5IGV4ZWN1dGUqIGluIGEgc3RhbmRhcmQsIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBUaGUgaW5zdHJ1Y3Rpb24gaXMgZXhwbGljaXQ6IGlmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSwgKmRvIG5vdCogZnV6eiBpdC4gT25lIG9mIHRoZSBuZWdhdGl2ZSBjcml0ZXJpYSBsaXN0ZWQgaXMsICYjMzQ7Q29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLiYjMzQ7CgpBbmQgdGhhdCYjMzk7cyBpdCEKCmBkbTkwMDBgJiMzOTtzIGRlZmluaXRpb24gaW4gdGhlIEtjb25maWcgZmlsZSBjbGVhcmx5IHN0YXRlcyBgZGVwZW5kcyBvbiBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RgLiBUaGlzIG1lYW5zIGl0IGlzLCBieSBkZWZpbml0aW9uLCAqZXhjbHVzaXZlKiB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gYW1kNjQuIFNvLCB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSB1bnVzdWFsIHBsYXRmb3JtIGRldmljZSBvciBBQ1BJIGNvbmZpZ3VyYXRpb24gdGhhdCBpbmNsdWRlcyBpdCAoaGlnaGx5IHVubGlrZWx5KSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgb24gb3VyIHRhcmdldCBhcmNoaXRlY3R1cmUsIGFuZCB3ZSBzaG91bGQgY2hlY2sgYGRtOTAwMC5jYCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IHJlYXNvbiB0byBiZWxpZXZlIG90aGVyd2lzZSwgYnV0IEkgZG9uJiMzOTt0IHRoaW5rIHNvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNzg1LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE3ODU6XHRcdGlmIChkbS1cdTAwM2Vwb3dlcl9zdXBwbHkpXG4xNzg2Olx0XHRcdHJlZ3VsYXRvcl9kaXNhYmxlKGRtLVx1MDAzZXBvd2VyX3N1cHBseSk7XG4xNzg3Olx0XG4xNzg4Olx0XHRmcmVlX25ldGRldihuZGV2KTtcdFx0LyogZnJlZSBkZXZpY2Ugc3RydWN0dXJlICovXG4xNzg5Olx0XG4xNzkwOlx0XHRkZXZfZGJnKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZWxlYXNlZCBhbmQgZnJlZWQgZGV2aWNlXFxuXCYjMzQ7KTtcbjE3OTE6XHR9XG4xNzkyOlx0XG4xNzkzOlx0I2lmZGVmIENPTkZJR19PRlxuMTc5NDpcdHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRtOTAwMF9vZl9tYXRjaGVzW10gPSB7XG4xNzk1Olx0XHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7ZGF2aWNvbSxkbTkwMDBcJiMzNDssIH0sXG4xNzk2Olx0XHR7IC8qIHNlbnRpbmVsICovIH1cbjE3OTc6XHR9O1xuMTc5ODpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGRtOTAwMF9vZl9tYXRjaGVzKTtcbjE3OTk6XHQjZW5kaWZcbjE4MDA6XHRcbjE4MDE6XHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkbTkwMDBfZHJpdmVyID0ge1xuMTgwMjpcdFx0LmRyaXZlclx0PSB7XG4xODAzOlx0XHRcdC5uYW1lICAgID0gXCYjMzQ7ZG05MDAwXCYjMzQ7LFxuMTgwNDpcdFx0XHQucG1cdCA9IFx1MDAyNmRtOTAwMF9kcnZfcG1fb3BzLFxuMTgwNTpcdFx0XHQub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIoZG05MDAwX29mX21hdGNoZXMpLFxuMTgwNjpcdFx0fSxcbjE4MDc6XHRcdC5wcm9iZSAgID0gZG05MDAwX3Byb2JlLFxuMTgwODpcdFx0LnJlbW92ZSA9IGRtOTAwMF9kcnZfcmVtb3ZlLFxuMTgwOTpcdH07XG4xODEwOlx0XG4xODExOlx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkbTkwMDBfZHJpdmVyKTtcbjE4MTI6XHRcbjE4MTM6XHRNT0RVTEVfQVVUSE9SKFwmIzM0O1Nhc2NoYSBIYXVlciwgQmVuIERvb2tzXCYjMzQ7KTtcbjE4MTQ6XHRNT0RVTEVfREVTQ1JJUFRJT04oXCYjMzQ7RGF2aWNvbSBETTkwMDAgbmV0d29yayBkcml2ZXJcJiMzNDspO1xuMTgxNTpcdE1PRFVMRV9MSUNFTlNFKFwmIzM0O0dQTFwmIzM0Oyk7XG4xODE2Olx0TU9EVUxFX0FMSUFTKFwmIzM0O3BsYXRmb3JtOmRtOTAwMFwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEzIDA0OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy44LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgyMzYKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA1ODEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBETTkwMDAgRHJpdmVyJiMzOTtzIFJlYWNoYWJpbGl0eSoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBUaGF0IGBkbTkwMDBfZHJpdmVyYC4uLiBsb29rcyBsaWtlIGl0JiMzOTtzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBhIERhdmljb20gRE05MDAwIEV0aGVybmV0IGNvbnRyb2xsZXIsIHNwZWNpZmljYWxseSB0YWlsb3JlZCBmb3IgZW1iZWRkZWQgc3lzdGVtcy4gSSBjYW4gc2VlIGl0IHVzZXMgRGV2aWNlIFRyZWUgbWF0Y2hpbmcgKCYjMzQ7ZGF2aWNvbSxkbTkwMDAmIzM0Oykgb3IgcGxhdGZvcm0gZGV2aWNlIG5hbWVzICgmIzM0O2RtOTAwMCYjMzQ7KSB0byBpZGVudGlmeSBpdHNlbGYuIE5vIEFDUEksIFBDSSwgb3IgVVNCIHN1cHBvcnQg4oCTIGl0JiMzOTtzIGFsbCBhYm91dCB0aG9zZSBtZW1vcnktbWFwcGVkIHBhcmFsbGVsIGJ1cyBzZXR1cHMgY29tbW9uIGluIG9sZGVyIEFSTSwgTUlQUywgQ29sZGZpcmUsIG9yIE5pb3MyIGJvYXJkcy4KCk5vdywgaGVyZSYjMzk7cyB0aGUga2lja2VyOiBzdGFuZGFyZCBRRU1VIG9uIGFuIHg4Nl82NCBzeXN0ZW0gKGxpa2UgYSBgcGNgIG9yIGBxMzVgIG1hY2hpbmUpICpkb2VzbiYjMzk7dCogaGF2ZSBhIERNOTAwMCBkZXZpY2UuIEFuZCwgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIG5haWwgdGhpcyBkb3duIGZ1cnRoZXI6IGl0JiMzOTtzIG9ubHkgYnVpbHQgZm9yIHRob3NlIGVtYmVkZGVkIGFyY2hpdGVjdHVyZXMgb3Igd2l0aCBgQ09NUElMRV9URVNUYC4gU28sIGV2ZW4gaWYgSSBjb3VsZCBzb21laG93IGdldCB0aGlzIGNvbXBpbGVkIG9uIGFtZDY0LCB0aGVyZSYjMzk7cyBub3RoaW5nIGluIHRoZSBRRU1VIGVudmlyb25tZW50IHRvIHRyaWdnZXIgdGhlIGBkbTkwMDBfcHJvYmVgIGZ1bmN0aW9uLiBUaGUgY29kZSBpdHNlbGYsIGV2ZW4gaWYgYnVpbHQsIGlzIHVucmVhY2hhYmxlIGJlY2F1c2Ugb2YgdGhpcyBoYXJkd2FyZSBhYnNlbmNlLiBBbmQgdGhlIGNoYW5nZSBpdHNlbGYgaXMgaW4gdGhlIHByb2JlIGFuZCByZWxlYXNlIHBhdGhzLCBhbGwgc3VnZ2VzdGluZyB0aGF0IHRoZXkgd2lsbCBuZXZlciBnZXQgaW52b2tlZCBieSBzdGFuZGFyZCB1c2FnZS4KCkxldCYjMzk7cyBxdWlja2x5IGNvbmZpcm0gdGhpcyB3aXRoIGEgbG9vayBhdCBvdXIgbmVnYXRpdmUgY3JpdGVyaWEuIFRoaXMgaGl0cyB0aGUgbWFyayBmb3Igc2V2ZXJhbCByZWFzb25zOgoKMS4gICoqQXJjaGl0ZWN0dXJlOioqIFRoZSBkcml2ZXImIzM5O3MgZXhwbGljaXQgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY3kgKEFSTSwgTUlQUywgZXRjLikgbWFrZXMgaXQgaW5hY2Nlc3NpYmxlIG9uIGFtZDY0LCBvdXIgdGFyZ2V0LgoyLiAgKipIYXJkd2FyZToqKiBJdCYjMzk7cyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBlbWJlZGRlZCBTb0MvYm9hcmQgRXRoZXJuZXQgY29udHJvbGxlciBub3QgZW11bGF0ZWQgaW4gUUVNVS4KMy4gICoqVW5yZWFjaGFiaWxpdHk6KiogVGhlcmVmb3JlLCBpdCYjMzk7cyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IGFyY2hpdGVjdHVyZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTtsbCBuZWVkIHRvIGRvIGEgcXVpY2sgc2VhcmNoIHRvIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgcmVmZXJlbmNlcyB0aGF0IGNvdWxkIGNvbXBsaWNhdGUgdGhpcyBwaWN0dXJlLCBidXQgYmFzZWQgb24gd2hhdCBJIHNlZSBoZXJlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgY29kZSBwYXRoIHVucmVhY2hhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RtOTAwMCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2FyY2gveDg2JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTMgMDQ6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjgtZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMwOQoJCQkJCQkJb3V0cHV0OiAxNTEKCQkJCQkJCXRob3VnaHRzOiAyMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBWZXJkaWN0OiBDbGVhciBhbmQgVW5hbWJpZ3VvdXMqKgoKT2theSwgc28gSSYjMzk7dmUganVzdCBmaW5pc2hlZCByZXZpZXdpbmcgdGhlIHNldHVwIGZvciB0aGlzIGZ1enppbmcgYXR0ZW1wdC4gRmlyc3Qgb2ZmLCB0aGVyZSYjMzk7cyBhYnNvbHV0ZWx5IG5vdGhpbmcgcmVsZXZhbnQgaW4gdGhlIGBhcmNoL3g4NmAgZGlyZWN0b3J5LCB3aGljaCBpcyBhIGdvb2Qgc2lnbiB3ZSYjMzk7cmUgbm90IGRlYWxpbmcgd2l0aCBhbiB4ODYtc3BlY2lmaWMgY29tcG9uZW50LiBOb3csIGxldCYjMzk7cyBsb29rIGF0IHRoZSBgc2V0LXJlc3VsdHNgIHBhcmFtZXRlcnMuIGBXb3J0aEZ1enppbmdgIGlzIGBmYWxzZWAsIHRoZSBgRm9jdXNTeW1ib2xzYCBsaXN0IGlzIGVtcHR5LCBhbmQgYm90aCBgRW5hYmxlQ29uZmlnc2AgYW5kIHRoZSBgUmVhc29uaW5nYCBhcmUgZXF1YWxseSBlbXB0eS4gVGhlIHJlYXNvbmluZyBpcyBhbHNvIGNvbmNpc2UuIFRoYXQgYWxyZWFkeSBwYWludHMgYSBwcmV0dHkgY2xlYXIgcGljdHVyZS4KCkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBldmVyeXRoaW5nLiBUaGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhhdCYjMzk7cyB3aGF0IEkgZXhwZWN0ZWQuIFRoZSBkcml2ZXIgdW5kZXIgY29uc2lkZXJhdGlvbiBpcyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY2AuIE5vdywgbG9va2luZyBhdCB0aGUgS2NvbmZpZywgYERNOTAwMGAgaXMgZGVwZW5kZW50IG9uIGBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RgLCB3aGljaCBpcyB0aGUgY3J1Y2lhbCBwb2ludC4gRnJvbSBteSBleHBlcmllbmNlLCBJIGtub3cgdGhlIERNOTAwMCBpcyBhbiBlbWJlZGRlZCBwbGF0Zm9ybSBkZXZpY2UgZHJpdmVyIGZvciBEYXZpY29tIERNOTAwMCBGYXN0IEV0aGVybmV0IGNvbnRyb2xsZXJzLiBJdCYjMzk7cyBkZXNpZ25lZCB0byBiZSB1c2VkIG9uIEFSTSwgTUlQUywgYW5kIG90aGVyIHNpbWlsYXIgYm9hcmRzLCB0eXBpY2FsbHkgY29uZmlndXJlZCB2aWEgRGV2aWNlIFRyZWUgb3IgdGhlIHBsYXRmb3JtIGJ1cy4gSXQmIzM5O3MgZGVmaW5pdGVseSAqbm90KiBpbnRlbmRlZCB0byBiZSBpbnN0YW50aWF0ZWQgb24gc3RhbmRhcmQgYW1kNjQgdmlydHVhbCBtYWNoaW5lcyBsaWtlIFFFTVUgb3IgR0NFLgoKR2l2ZW4gYWxsIG9mIHRoaXMsIGl0JiMzOTtzIHN0cnVjdHVyYWxseSBpbXBvc3NpYmxlIGZvciB0aGUgcHJvYmUgYW5kIGJvYXJkIHJlbGVhc2UgZnVuY3Rpb25zIHRvIGJlIHJlYWNoZWQgb24gYW1kNjQuIEl0IGlzLCB0aGVyZWZvcmUsIHZlcnkgY2xlYXIgd2Ugc2hvdWxkbiYjMzk7dCBmdXp6IHRoaXMuCgpBbGwgY2xlYXIsIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCB0ZWFyZG93biBsb2dpYyAoZG05MDAwX3JlbGVhc2VfYm9hcmQsIGRtOTAwMF9wcm9iZSkgaW4gdGhlIERhdmljb20gRE05MDAwIEV0aGVybmV0IGRyaXZlciAoZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYykuIFRoaXMgZHJpdmVyIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBlbWJlZGRlZCBoYXJkd2FyZSB0aGF0IGRlcGVuZHMgb24gQVJNLCBNSVBTLCBDT0xERklSRSwgb3IgTklPUzIgKG9yIENPTVBJTEVfVEVTVCkuIEl0IGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBvbiBhbWQ2NCBpbiBzdGFuZGFyZCBRRU1VL0dDRSBlbnZpcm9ubWVudHMgYXMgdGhlIHJlcXVpcmVkIHBsYXRmb3JtIGhhcmR3YXJlL0RldmljZVRyZWUgYmluZGluZ3MgYXJlIG5vdCBwcmVzZW50LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHRlYXJkb3duIGxvZ2ljIChkbTkwMDBfcmVsZWFzZV9ib2FyZCwgZG05MDAwX3Byb2JlKSBpbiB0aGUgRGF2aWNvbSBETTkwMDAgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jKS4gVGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGVtYmVkZGVkIGhhcmR3YXJlIHRoYXQgZGVwZW5kcyBvbiBBUk0sIE1JUFMsIENPTERGSVJFLCBvciBOSU9TMiAob3IgQ09NUElMRV9URVNUKS4gSXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0IGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBhcyB0aGUgcmVxdWlyZWQgcGxhdGZvcm0gaGFyZHdhcmUvRGV2aWNlVHJlZSBiaW5kaW5ncyBhcmUgbm90IHByZXNlbnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMyAwNDo0OTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMTNUMDQ6NDg6MjUuMTY5ODY5MjE5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY1ODIzOTgyOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgdGVhcmRvd24gbG9naWMgKGRtOTAwMF9yZWxlYXNlX2JvYXJkLCBkbTkwMDBfcHJvYmUpIGluIHRoZSBEYXZpY29tIERNOTAwMCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMpLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgZW1iZWRkZWQgaGFyZHdhcmUgdGhhdCBkZXBlbmRzIG9uIEFSTSwgTUlQUywgQ09MREZJUkUsIG9yIE5JT1MyIChvciBDT01QSUxFX1RFU1QpLiBJdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGFzIHRoZSByZXF1aXJlZCBwbGF0Zm9ybSBoYXJkd2FyZS9EZXZpY2VUcmVlIGJpbmRpbmdzIGFyZSBub3QgcHJlc2VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjI1LjE2OTg3NTMxOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM4NjY0NjM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzc0ZmU5YTIxNGM1MWNlMjQ1NmI4OTczYjA2MmQ2M2JmMGM3MWY3NVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIFNlcCAxMyAwNDo0ODoyNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xcbmluZGV4IGI4N2VhZjBjMjUwY2UuLmM4ZmYwN2ZlMzFhNWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNcXG5AQCAtMTA0LDYgKzEwNCw3IEBAIHN0cnVjdCBib2FyZF9pbmZvIHtcXG4gXFx0dW5zaWduZWQgaW50XFx0aW5fdGltZW91dDoxO1xcbiBcXHR1bnNpZ25lZCBpbnRcXHRpbl9zdXNwZW5kOjE7XFxuIFxcdHVuc2lnbmVkIGludFxcdHdha2Vfc3VwcG9ydGVkOjE7XFxuK1xcdHVuc2lnbmVkIGludFxcdHdha2VfaXJxX3JlcXVlc3RlZDoxO1xcbiBcXG4gXFx0ZW51bSBkbTkwMDBfdHlwZSB0eXBlO1xcbiBcXG5AQCAtODAyLDYgKzgwMyw5IEBAIGRtOTAwMF9wb2xsX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3KVxcbiBzdGF0aWMgdm9pZFxcbiBkbTkwMDBfcmVsZWFzZV9ib2FyZChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LCBzdHJ1Y3QgYm9hcmRfaW5mbyAqZGIpXFxuIHtcXG4rXFx0aWYgKGRiLVxcdTAwM2V3YWtlX2lycV9yZXF1ZXN0ZWQpXFxuK1xcdFxcdGZyZWVfaXJxKGRiLVxcdTAwM2VpcnFfd2FrZSwgZGItXFx1MDAzZW5kZXYpO1xcbitcXG4gXFx0LyogdW5tYXAgb3VyIHJlc291cmNlcyAqL1xcbiBcXG4gXFx0aW91bm1hcChkYi1cXHUwMDNlaW9fYWRkcik7XFxuQEAgLTE1MTksNiArMTUyMyw3IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRpZiAocmV0KSB7XFxuIFxcdFxcdFxcdGRldl9lcnIoZGItXFx1MDAzZWRldiwgXFxcImNhbm5vdCBnZXQgd2FrZXVwIGlycSAoJWQpXFxcXG5cXFwiLCByZXQpO1xcbiBcXHRcXHR9IGVsc2Uge1xcbitcXHRcXHRcXHRkYi1cXHUwMDNld2FrZV9pcnFfcmVxdWVzdGVkID0gMTtcXG4gXFxuIFxcdFxcdFxcdC8qIHRlc3QgdG8gc2VlIGlmIGlycSBpcyByZWFsbHkgd2FrZXVwIGNhcGFibGUgKi9cXG4gXFx0XFx0XFx0cmV0ID0gaXJxX3NldF9pcnFfd2FrZShkYi1cXHUwMDNlaXJxX3dha2UsIDEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODoyNS42MDkyNDkzNjhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjQ2MTQzMDA1MTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgdGVhcmRvd24gbG9naWMgKGRtOTAwMF9yZWxlYXNlX2JvYXJkLCBkbTkwMDBfcHJvYmUpIGluIHRoZSBEYXZpY29tIERNOTAwMCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMpLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgZW1iZWRkZWQgaGFyZHdhcmUgdGhhdCBkZXBlbmRzIG9uIEFSTSwgTUlQUywgQ09MREZJUkUsIG9yIE5JT1MyIChvciBDT01QSUxFX1RFU1QpLiBJdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGFzIHRoZSByZXF1aXJlZCBwbGF0Zm9ybSBoYXJkd2FyZS9EZXZpY2VUcmVlIGJpbmRpbmdzIGFyZSBub3QgcHJlc2VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMzc0ZmU5YTIxNGM1MWNlMjQ1NmI4OTczYjA2MmQ2M2JmMGM3MWY3NVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gU2VwIDEzIDA0OjQ4OjI0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNcbmluZGV4IGI4N2VhZjBjMjUwY2UuLmM4ZmYwN2ZlMzFhNWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXG5AQCAtMTA0LDYgKzEwNCw3IEBAIHN0cnVjdCBib2FyZF9pbmZvIHtcbiBcdHVuc2lnbmVkIGludFx0aW5fdGltZW91dDoxO1xuIFx0dW5zaWduZWQgaW50XHRpbl9zdXNwZW5kOjE7XG4gXHR1bnNpZ25lZCBpbnRcdHdha2Vfc3VwcG9ydGVkOjE7XG4rXHR1bnNpZ25lZCBpbnRcdHdha2VfaXJxX3JlcXVlc3RlZDoxO1xuIFxuIFx0ZW51bSBkbTkwMDBfdHlwZSB0eXBlO1xuIFxuQEAgLTgwMiw2ICs4MDMsOSBAQCBkbTkwMDBfcG9sbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbiBzdGF0aWMgdm9pZFxuIGRtOTAwMF9yZWxlYXNlX2JvYXJkKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBib2FyZF9pbmZvICpkYilcbiB7XG4rXHRpZiAoZGItXHUwMDNld2FrZV9pcnFfcmVxdWVzdGVkKVxuK1x0XHRmcmVlX2lycShkYi1cdTAwM2VpcnFfd2FrZSwgZGItXHUwMDNlbmRldik7XG4rXG4gXHQvKiB1bm1hcCBvdXIgcmVzb3VyY2VzICovXG4gXG4gXHRpb3VubWFwKGRiLVx1MDAzZWlvX2FkZHIpO1xuQEAgLTE1MTksNiArMTUyMyw3IEBAIGRtOTAwMF9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRpZiAocmV0KSB7XG4gXHRcdFx0ZGV2X2VycihkYi1cdTAwM2VkZXYsIFwiY2Fubm90IGdldCB3YWtldXAgaXJxICglZClcXG5cIiwgcmV0KTtcbiBcdFx0fSBlbHNlIHtcbitcdFx0XHRkYi1cdTAwM2V3YWtlX2lycV9yZXF1ZXN0ZWQgPSAxO1xuIFxuIFx0XHRcdC8qIHRlc3QgdG8gc2VlIGlmIGlycSBpcyByZWFsbHkgd2FrZXVwIGNhcGFibGUgKi9cbiBcdFx0XHRyZXQgPSBpcnFfc2V0X2lycV93YWtlKGRiLVx1MDAzZWlycV93YWtlLCAxKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjI1LjYwOTI1NjEyOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjYwNzE3MTM2OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBETTkwMDAgRHJpdmVyIFBhdGNoKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIFRoZSBwYXRjaCBpcyB0YXJnZXRpbmcgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNgLiBNeSBpbml0aWFsIG1vdmUgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBkcml2ZXIsIHRoZSBETTkwMDAsIGFjdHVhbGx5ICppcyouIFVzaW5nIHRoZSBzdGFuZGFyZCB0b29scywgSSBxdWlja2x5IGFzY2VydGFpbiB0aGF0IGl0J3MgYSBEYXZpY29tIEZhc3QgRXRoZXJuZXQgZHJpdmVyLlxuXG5Ob3csIHRoZSBjcnVjaWFsIHF1ZXN0aW9uOiBpcyB0aGlzIGEgcGxhdGZvcm0gZGV2aWNlIGRyaXZlcj8gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdC4gTXkgbmV4dCBzdGVwIGludm9sdmVzIG1ldGljdWxvdXNseSBpbnNwZWN0aW5nIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY2Agc291cmNlIGNvZGUsIGFsb25nIHdpdGggdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcy4gVGhpcyB3aWxsIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIHVuZGVyc3RhbmQgdGhlIHBhdGNoJ3MgcHVycG9zZSBhbmQgaW1wYWN0IGluIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzExOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjMxLjY4MDk3MjE3OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODgwMjM3OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgRE05MDAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb21cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfREFWSUNPTVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0xOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWc6MTk6Y29uZmlnIERNOTAwMFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vS2NvbmZpZy0yMC1cXHR0cmlzdGF0ZSBcXFwiRE05MDAwIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWctMjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnOjMwOmNvbmZpZyBETTkwMDBfRk9SQ0VfU0lNUExFX1BIWV9QT0xMXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIkZvcmNlIHNpbXBsZSBOU1IgYmFzZWQgUEhZIHBvbGxpbmdcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjMxLjcyOTc3ODI3OFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjM2NDY3MDY4MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhhdCBLY29uZmlnIGZpbGU6XG5cbioqRGl2aW5nIGludG8gdGhlIERhdmljb20gRXRoZXJuZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyB3ZSdyZSBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGUgZm9yIHRoZSBEYXZpY29tIEV0aGVybmV0IGRyaXZlciwgc3BlY2lmaWNhbGx5IGluIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbWAgZGlyZWN0b3J5LiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgd2hlcmUgdGhlIGJ1aWxkIHN5c3RlbSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoaXMgcGFydGljdWxhciBuZXR3b3JrIGludGVyZmFjZSBjYXJkIHdpbGwgbGl2ZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBhc3Nlc3MgdGhlIHN0cnVjdHVyZTsgYW0gSSBsb29raW5nIGF0IGEgdG9wLWxldmVsIEtjb25maWcsIG9yIGEgc3ViLUtjb25maWcgZmlsZT8gSXMgaXQgYSBzaW5nbGUgbW9ub2xpdGhpYyBjb25maWd1cmF0aW9uIG9yIG1vZHVsYXJpemVkIGZvciBzcGVjaWZpYyBEYXZpY29tIGNoaXBzZXRzIG9yIGZlYXR1cmVzPyBBcmUgdGhlcmUgYW55IG9idmlvdXMgZGVwZW5kZW5jaWVzIG9uIG90aGVyIGtlcm5lbCBzdWJzeXN0ZW1zIGxpc3RlZCBhdCB0aGUgdG9wLCBsaWtlIFBIWSBkcml2ZXJzIG9yIE1ESU8gYnVzZXM/IEknbSBleHBlY3RpbmcgdG8gc2VlIHRoaW5ncyBsaWtlOlxuXG4qICAgKipDaGlwc2V0IFNlbGVjdGlvbjoqKiBBIG1haW4gYENPTkZJR19EQVZJQ09NYCBvcHRpb24gdGhhdCBhbGxvd3MgeW91IHRvIGVpdGhlciBlbmFibGUgYWxsIERhdmljb20gY2FyZHMgaW4gYSBkcml2ZXIgb3Igc2VsZWN0IGluZGl2aWR1YWwgRGF2aWNvbSBtb2RlbHMgdG8gaW5jbHVkZS4gSXQncyBhbG1vc3QgZ3VhcmFudGVlZCB0byBoYXZlIHN1Yi1vcHRpb25zIGZvciBzcGVjaWZpYyBjaGlwcywgc3VjaCBhcyBgQ09ORklHX0RBVklDT01fRE05MXh4YCwgYENPTkZJR19EQVZJQ09NX0RNOTB4eGAsIG9yIGBDT05GSUdfREFWSUNPTV9ETTkyeHhgLlxuKiAgICoqRmVhdHVyZSBGbGFnczoqKiBJJ20gZXhwZWN0aW5nIHRvIHNlZSB0aGluZ3MgbGlrZSBgQ09ORklHX0RBVklDT01fUEhZX1NVUFBPUlRgIChpZiBpdCBzdXBwb3J0cyB0aGUgYnVpbHQtaW4gUEhZKSwgYENPTkZJR19EQVZJQ09NX0RFQlVHYCBmb3IgZGVidWdnaW5nIG1lc3NhZ2VzLCBgQ09ORklHX0RBVklDT01fRkxPV19DT05UUk9MYCwgYW5kIHBlcmhhcHMgZXZlbiBvcHRpb25zIHRvIGZpbmUtdHVuZSBpbnRlcnJ1cHQgaGFuZGxpbmcgb3IgRE1BIHNldHRpbmdzLlxuKiAgICoqRGVwZW5kZW5jeSBDaGVja3M6KiogSSdtIGxvb2tpbmcgZm9yIGBkZXBlbmRzIG9uYCBzdGF0ZW1lbnRzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBEYXZpY29tIGRyaXZlciBuZWVkcyB0aGUgcHJvcGVyIE1ESU8gb3IgTUFDIHN1YnN5c3RlbS4gSSdsbCBuZWVkIHRvIGtub3cgd2hpY2ggZGV2aWNlIHRyZWUgYmluZGluZ3MgYXJlIG5lZWRlZCBmb3IgaXQgdG8gZnVuY3Rpb24gY29ycmVjdGx5LlxuKiAgICoqRG9jdW1lbnRhdGlvbiBhbmQgRGVmYXVsdHM6KiogSSdsbCBiZSBzY2FubmluZyBmb3IgaGVscCB0ZXh0cyBhc3NvY2lhdGVkIHdpdGggZWFjaCBjb25maWd1cmF0aW9uIG9wdGlvbi4gSG9wZWZ1bGx5LCB0aGVyZSdzIGEgZ29vZCBkZXNjcmlwdGlvbiBvZiB0aGUgcHVycG9zZSBvZiBlYWNoIG9wdGlvbiwgYWxvbmcgd2l0aCByZWFzb25hYmxlIGRlZmF1bHQgc2V0dGluZ3MuIEdvb2QgZG9jdW1lbnRhdGlvbiBoZWxwcyB0cmVtZW5kb3VzbHkhXG4qICAgKipNZW51IFN0cnVjdHVyZToqKiBJJ2xsIGxvb2sgZm9yIG5lc3RlZCBgbWVudWAgb3IgYGNvbmZpZ2AgYmxvY2tzIHRvIHVuZGVyc3RhbmQgaG93IG9wdGlvbnMgYXJlIG9yZ2FuaXplZCBsb2dpY2FsbHkuIElzIGl0IGEgZmxhdCBsaXN0LCBvciBpcyBpdCB3ZWxsLXN0cnVjdHVyZWQgdG8gZ3JvdXAgcmVsYXRlZCBzZXR0aW5ncz9cbiogICAqKlRyaWNrcyBhbmQgVHJhcHM6KiogSSdtIGFsd2F5cyBsb29raW5nIGZvciB1bnVzdWFsIGNvbmZpZ3VyYXRpb25zIG9yIGNvcm5lci1jYXNlIHNldHRpbmdzLiBBcmUgdGhlcmUgYW55IGBzZWxlY3RgIHN0YXRlbWVudHMgdGhhdCBmb3JjZSBkZXBlbmRlbmNpZXM/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhlIGRpZmZlcmVudCBzZWxlY3Rpb24gb3B0aW9ucz9cblxuRXNzZW50aWFsbHksIEknbSBtZW50YWxseSBwYXJzaW5nIHRoZSBmaWxlIHRvIGJ1aWxkIGEgcGljdHVyZSBvZiBob3cgYSB1c2VyIHdvdWxkIGludGVyYWN0IHdpdGggaXQgZHVyaW5nIGtlcm5lbCBjb25maWd1cmF0aW9uLiBJJ20gdHJ5aW5nIHRvIGlkZW50aWZ5IHRoZSBjcml0aWNhbCBrbm9icyB0aGF0IG5lZWQgdG8gYmUgdHdlYWtlZCB0byBnZXQgdGhlIERhdmljb20gRXRoZXJuZXQgZHJpdmVyIHdvcmtpbmcgY29ycmVjdGx5IGluIGEgc3BlY2lmaWMgZW52aXJvbm1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM2MDksIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODozNS4zNzY0ODY5MjRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDYxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgRGF2aWNvbSBkZXZpY2UgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRjb25maWcgTkVUX1ZFTkRPUl9EQVZJQ09NXFxuICAgNzpcXHRcXHRib29sIFxcXCJEYXZpY29tIGRldmljZXNcXFwiXFxuICAgODpcXHRcXHRkZWZhdWx0IHlcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgSWYgeW91IGhhdmUgYSBuZXR3b3JrIChFdGhlcm5ldCkgY2FyZCBiZWxvbmdpbmcgdG8gdGhpcyBjbGFzcywgc2F5IFkuXFxuICAxMTpcXHRcXG4gIDEyOlxcdFxcdCAgTm90ZSB0aGF0IHRoZSBhbnN3ZXIgdG8gdGhpcyBxdWVzdGlvbiBkb2Vzbid0IGRpcmVjdGx5IGFmZmVjdCB0aGVcXG4gIDEzOlxcdFxcdCAga2VybmVsOiBzYXlpbmcgTiB3aWxsIGp1c3QgY2F1c2UgdGhlIGNvbmZpZ3VyYXRvciB0byBza2lwIGFsbFxcbiAgMTQ6XFx0XFx0ICB0aGUgcXVlc3Rpb25zIGFib3V0IERhdmljb20gZGV2aWNlcy4gSWYgeW91IHNheSBZLCB5b3Ugd2lsbCBiZSBhc2tlZFxcbiAgMTU6XFx0XFx0ICBmb3IgeW91ciBzcGVjaWZpYyBjYXJkIGluIHRoZSBmb2xsb3dpbmcgc2VsZWN0aW9ucy5cXG4gIDE2OlxcdFxcbiAgMTc6XFx0aWYgTkVUX1ZFTkRPUl9EQVZJQ09NXFxuICAxODpcXHRcXG4gIDE5OlxcdGNvbmZpZyBETTkwMDBcXG4gIDIwOlxcdFxcdHRyaXN0YXRlIFxcXCJETTkwMDAgc3VwcG9ydFxcXCJcXG4gIDIxOlxcdFxcdGRlcGVuZHMgb24gQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUXFxuICAyMjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDIzOlxcdFxcdHNlbGVjdCBNSUlcXG4gIDI0OlxcdFxcdGhlbHBcXG4gIDI1OlxcdFxcdCAgU3VwcG9ydCBmb3IgRE05MDAwIGNoaXBzZXQuXFxuICAyNjpcXHRcXG4gIDI3OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIFRoZSBtb2R1bGVcXG4gIDI4OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgZG05MDAwLlxcbiAgMjk6XFx0XFxuICAzMDpcXHRjb25maWcgRE05MDAwX0ZPUkNFX1NJTVBMRV9QSFlfUE9MTFxcbiAgMzE6XFx0XFx0Ym9vbCBcXFwiRm9yY2Ugc2ltcGxlIE5TUiBiYXNlZCBQSFkgcG9sbGluZ1xcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gRE05MDAwXFxuICAzMzpcXHRcXHRoZWxwXFxuICAzNDpcXHRcXHQgIFRoaXMgY29uZmlndXJhdGlvbiBmb3JjZXMgdGhlIERNOTAwMCB0byB1c2UgdGhlIE5TUidzIExpbmtTdGF0dXNcXG4gIDM1OlxcdFxcdCAgYml0IHRvIGRldGVybWluZSBpZiB0aGUgbGluayBpcyB1cCBvciBkb3duIGluc3RlYWQgb2YgdGhlIG1vcmVcXG4gIDM2OlxcdFxcdCAgY29zdGx5IE1JSSBQSFkgcmVhZHMuIE5vdGUsIHRoaXMgd2lsbCBub3Qgd29yayBpZiB0aGUgY2hpcCBpc1xcbiAgMzc6XFx0XFx0ICBvcGVyYXRpbmcgd2l0aCBhbiBleHRlcm5hbCBQSFkuXFxuICAzODpcXHRcXG4gIDM5OlxcdGNvbmZpZyBETTkwNTFcXG4gIDQwOlxcdFxcdHRyaXN0YXRlIFxcXCJETTkwNTEgU1BJIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjM1LjM3NjU0OTcwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy44LWZsYXNoIiwiRHVyYXRpb24iOjI0MTExNzg0NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXJjaGl0ZWN0dXJlIENvbXBhdGliaWxpdHkgUXVhbmRhcnkqKlxuXG5Pa2F5LCBoZXJlJ3MgdGhlIHNpdHVhdGlvbi4gSSdtIHNlZWluZyB0aGlzIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGNoZWNrIOKAkyBgZGVwZW5kcyBvbiBBUk0gfHwgTUlQUyB8fCBDT0xERklSRSB8fCBOSU9TMiB8fCBDT01QSUxFX1RFU1RgIOKAkyB3aGljaCBpbW1lZGlhdGVseSB0aHJvd3MgdXAgYSByZWQgZmxhZy4gTXkgcHJpbWFyeSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCBzbyBzb21ldGhpbmcgaXNuJ3QgcXVpdGUgcmlnaHQuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIHdoZXRoZXIgdGhlIERNOTAwMCBkcml2ZXIsIHdoaWNoIEknbSBhc3N1bWluZyBpcyB0aGUgY29tcG9uZW50IGFmZmVjdGVkIGJ5IHRoaXMsIGNhbiBldmVuIGJlICpsZWdpdGltYXRlbHkqIGluc3RhbnRpYXRlZCBvbiBhbiBhbWQ2NCBzeXN0ZW0sIHBhcnRpY3VsYXJseSB3aXRoaW4gYSBRRU1VIGVudmlyb25tZW50LiBUaGlzIGZlZWxzIGxpa2UgYSBjb21wYXRpYmlsaXR5IGlzc3VlIHN0YXJpbmcgbWUgcmlnaHQgaW4gdGhlIGZhY2UuIFRpbWUgdG8gZGlnIGludG8gaG93IHRoYXQgZG05MDAwIGlzIHJlZ2lzdGVyZWQgYW5kIGluc3RhbnRpYXRlZCB0byB1bmRlcnN0YW5kIHRoZSBpbnRlcnBsYXkuIEkgaGF2ZSBhIGh1bmNoIHRoaXMgaXMgdGhlIHJvb3QgY2F1c2Ugb2Ygc29tZSBlYXJsaWVyIGlzc3VlcyBJJ3ZlIGJlZW4gc2VlaW5nLiBMZXQncyBnZXQgdG8gdGhlIGJvdHRvbSBvZiB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Nzk2LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODozNy43ODc3MzA0MDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTEzMjAyNDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGxhdGZvcm1fZHJpdmVyLipkbTkwMDBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jPTE3OTg9TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgZG05MDAwX29mX21hdGNoZXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xODAwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTgwMTpzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBkbTkwMDBfZHJpdmVyID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTgwMi1cXHQuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jLTE4MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzoxODExOm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoZG05MDAwX2RyaXZlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xODEyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODozNy44MzkwNTc2MDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoyODY2ODAyNzA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgZG05MDAwX3JlbGVhc2VfYm9hcmRgIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBgZG05MDAwX3JlbGVhc2VfYm9hcmRgIGZ1bmN0aW9uIHdpdGhpbiBgZG05MDAwLmNgIGlzIGJlaW5nIHV0aWxpemVkLiBHaXZlbiBteSBleHBlcnRpc2UsIEknbSBnb2luZyB0byBxdWlja2x5IGdldCB0byB0aGUgaGVhcnQgb2YgaG93IGl0J3MgYmVpbmcgY2FsbGVkLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBvcGVuIHRoZSBmaWxlIGFuZCBzdGFydCB0cmFjaW5nIGl0OyBsb29rIGZvciBpbnN0YW5jZXMgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkLiBJIHdpbGwgc2VhcmNoIHRoZSBmaWxlIGZvciB0aGUgZnVuY3Rpb24ncyBuYW1lIGFuZCBhbmFseXplIGl0cyBhcmd1bWVudHMgYW5kIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEknbSBsb29raW5nIGZvciBjbHVlcyBhYm91dCB0aGUgZHJpdmVyJ3MgbGlmZWN5Y2xlIG1hbmFnZW1lbnQ6IFdoZW4gaXMgdGhlIGJvYXJkIHJlbGVhc2VkPyBJcyB0aGlzIGNhbGwgcGFydCBvZiB0aGUgcHJvYmUsIHJlbW92ZSwgb3Igc2h1dGRvd24gc2VxdWVuY2U/IFdoYXQgcmVzb3VyY2VzIGlzIGl0IGZyZWVpbmcgdXA/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bmN0aW9uJ3MgcHVycG9zZSB3aXRoaW4gdGhlIGJyb2FkZXIgZHJpdmVyIGZyYW1ld29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMyOSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjQwLjcwNTg2MjU1NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMzkzMjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG05MDAwX3JlbGVhc2VfYm9hcmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jPTc2OD1kbTkwMDBfcG9sbF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtNzk3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6Nzk4Oi8qIGRtOTAwMF9yZWxlYXNlX2JvYXJkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy03OTktICpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9ODAzPXN0YXRpYyB2b2lkXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYzo4MDQ6ZG05MDAwX3JlbGVhc2VfYm9hcmQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGJvYXJkX2luZm8gKmRiKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtODA1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTQxNj1kbTkwMDBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTcxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jOjE3MTg6XFx0ZG05MDAwX3JlbGVhc2VfYm9hcmQocGRldiwgZGIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMtMTcxOS1cXHRmcmVlX25ldGRldihuZGV2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM9MTc3OD1zdGF0aWMgdm9pZCBkbTkwMDBfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNzgzLVxcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmM6MTc4NDpcXHRkbTkwMDBfcmVsZWFzZV9ib2FyZChwZGV2LCBkbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZGF2aWNvbS9kbTkwMDAuYy0xNzg1LVxcdGlmIChkbS1cXHUwMDNlcG93ZXJfc3VwcGx5KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0ODo0MC43NTMwMDg3MDFaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6NzUwOTQ0MDAyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFJlYWNoYWJpbGl0eSBvZiBETTkwMDAgb24gYW1kNjQgaW4gYSBGdXp6aW5nIENvbnRleHQqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIEknbSBsb29raW5nIGF0IGBkbTkwMDBfcmVsZWFzZV9ib2FyZGAsIGBkbTkwMDBfZHJ2X3JlbW92ZWAsIGFuZCBgZG05MDAwX3Byb2JlYCBhbmQgY29uc2lkZXJpbmcgdGhlaXIgcmVhY2hhYmlsaXR5LiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGVzZSBmdW5jdGlvbnMsIHdoaWNoIGluY2x1ZGUgdGhlIGNsZWFuLXVwIHJvdXRpbmVzLCBhcmUgY2FsbGVkIGluIHRoZSBlcnJvciBoYW5kbGluZyBvZiB0aGUgcHJvYmUgcm91dGluZSBhcyB3ZWxsIGFzIHdoZW4gdGhlIGRyaXZlciBpcyB1bmxvYWRlZC4gVGhhdCBmZWVscyBub3JtYWwuXG5cblRoZSBmaXJzdCBxdWVzdGlvbiBJIGhhdmUgaXMgd2hldGhlciB0aGUgRE05MDAwIGlzIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSBzdGFuZGFyZCBhbWQ2NCBRRU1VIGVudmlyb25tZW50LiBUaGUgRE05MDAwLi4uIHJpZ2h0LCBpdCdzIGFuIElTQS1saWtlL3BhcmFsbGVsIGJ1cyBFdGhlcm5ldCBjaGlwLCB0eXBpY2FsbHkgZm91bmQgb24gb2xkZXIgZW1iZWRkZWQgYXJjaGl0ZWN0dXJlcyBsaWtlIEFSTSwgTUlQUywgYW5kIENvbGRmaXJlLCBub3QgeDg2LiBTbywgdGhlIGxpa2VsaWhvb2Qgb2Ygc2VlaW5nIHRoaXMgZGlyZWN0bHkgaW4gYSBtb2Rlcm4gYW1kNjQgc2V0dXAgaXMgdmFuaXNoaW5nbHkgbG93LiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgZG9lcyBRRU1VIGV2ZW4gZW11bGF0ZSB0aGlzPyBUaGF0J3MgdGhlIGNydXggb2YgdGhpcy5cblxuQ2FuIHN5emthbGxlciwgcnVubmluZyBvbiBhbWQ2NCwgaW5zdGFudGlhdGUgYSBETTkwMDAgcGxhdGZvcm0gZGV2aWNlPyBUaGUgYW5zd2VyIGlzIHByb2JhYmx5IG5vdC4gVXNlcnNwYWNlIGNhbid0IGp1c3QgYXJiaXRyYXJpbHkgY3JlYXRlIHBsYXRmb3JtIGRldmljZXMsIHJpZ2h0PyBQbGF0Zm9ybSBkZXZpY2VzIHVzdWFsbHkgY29tZSBmcm9tIGRldmljZSB0cmVlcywgcGxhdGZvcm0gYm9hcmQgZmlsZXMsIEFDUEksIG9yIGRyaXZlcnMgY2FsbGluZyBgcGxhdGZvcm1fZGV2aWNlX3JlZ2lzdGVyYC4gTm8gZ2VuZXJpYyBzeXNmcyBpbnRlcmZhY2UgYWxsb3dzIHVzZXJzcGFjZSB0byBjb25qdXJlIHRoZXNlIGRldmljZXMgb3V0IG9mIHRoaW4gYWlyLCB1bmxlc3MgYSBkcml2ZXIgc3BlY2lmaWNhbGx5IHByb3ZpZGVzIGl0LCBvciB0aHJvdWdoIERldmljZSBUcmVlIG92ZXJsYXlzIChDT05GSUdfT0ZfQ09ORklHRlMpIG9yIHNpbWlsYXIuXG5cblNvLCBsZXQncyBpbnZlc3RpZ2F0ZSBzb21lIHNwZWNpZmljIHBvaW50cy4gRmlyc3QsIGlzIENPTkZJR19PRl9DT05GSUdGUyBldmVuIGF2YWlsYWJsZSBvbiBhbWQ2ND8gQW5kLCBkb2VzIHRoZSBkbTkwMDAgZHJpdmVyIGhhdmUgYXJjaGl0ZWN0dXJhbCBkZXBlbmRlbmNpZXMgdGhhdCB3b3VsZCBwcmV2ZW50IGl0IGZyb20gZXZlbiBiZWluZyBjb21waWxlZCBvbiBhbWQ2NCwgc3VjaCBhcyBhbiBleHBsaWNpdCBkZXBlbmRlbmNlIG9uIEFSTSwgTUlQUywgQ09MREZJUkUsIE5JT1MyLCBvciBwb3RlbnRpYWxseSwgYENPTVBJTEVfVEVTVGA/IFRoZSBsYXR0ZXIgd291bGQgYmUgbmVjZXNzYXJ5LiBMZXQncyBkaWcgaW50byB0aGUgS2NvbmZpZyBvcHRpb25zLiBPbiBhbWQ2NCwgYENPTVBJTEVfVEVTVGAgaXMgZm9yIGNvbXBpbGUgdGVzdGluZyBkcml2ZXJzLCBhbmQgaXQncyB1bmxpa2VseSB0byBiZSBlbmFibGVkIGluIGZ1enppbmcga2VybmVscy5cblxuVGhlIGNyaXRpY2FsIHF1ZXN0aW9uIHJlbWFpbnM6IENhbiB0aGUgYGRtOTAwMF9wcm9iZWAgZnVuY3Rpb24gZXZlciBiZSAqY2FsbGVkKiBvbiBhbWQ2ND9cblxuTm93LCBsZXQncyByZWZlciBiYWNrIHRvIHRoZSBpbnN0cnVjdGlvbnMsIHNlY3Rpb24gMiBzcGVjaWZpY2FsbHk6IFwiUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEVcIi4gRnV6emluZyBpcyBvbmx5IHVzZWZ1bCBmb3IgY29kZSB0aGF0IGNhbiAqYWN0dWFsbHkgZXhlY3V0ZSogaW4gYSBzdGFuZGFyZCwgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIFRoZSBpbnN0cnVjdGlvbiBpcyBleHBsaWNpdDogaWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLCAqZG8gbm90KiBmdXp6IGl0LiBPbmUgb2YgdGhlIG5lZ2F0aXZlIGNyaXRlcmlhIGxpc3RlZCBpcywgXCJDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuXCJcblxuQW5kIHRoYXQncyBpdCFcblxuYGRtOTAwMGAncyBkZWZpbml0aW9uIGluIHRoZSBLY29uZmlnIGZpbGUgY2xlYXJseSBzdGF0ZXMgYGRlcGVuZHMgb24gQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUYC4gVGhpcyBtZWFucyBpdCBpcywgYnkgZGVmaW5pdGlvbiwgKmV4Y2x1c2l2ZSogdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIGFtZDY0LiBTbywgdW5sZXNzIHRoZXJlJ3Mgc29tZSB1bnVzdWFsIHBsYXRmb3JtIGRldmljZSBvciBBQ1BJIGNvbmZpZ3VyYXRpb24gdGhhdCBpbmNsdWRlcyBpdCAoaGlnaGx5IHVubGlrZWx5KSwgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUgb24gb3VyIHRhcmdldCBhcmNoaXRlY3R1cmUsIGFuZCB3ZSBzaG91bGQgY2hlY2sgYGRtOTAwMC5jYCB0byBzZWUgaWYgdGhlcmUgaXMgYW55IHJlYXNvbiB0byBiZWxpZXZlIG90aGVyd2lzZSwgYnV0IEkgZG9uJ3QgdGhpbmsgc28uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMjUsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDQ6NDg6NDguMjYyNDUyMDIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMjA5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE3ODUsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE3ODU6XFx0XFx0aWYgKGRtLVxcdTAwM2Vwb3dlcl9zdXBwbHkpXFxuMTc4NjpcXHRcXHRcXHRyZWd1bGF0b3JfZGlzYWJsZShkbS1cXHUwMDNlcG93ZXJfc3VwcGx5KTtcXG4xNzg3OlxcdFxcbjE3ODg6XFx0XFx0ZnJlZV9uZXRkZXYobmRldik7XFx0XFx0LyogZnJlZSBkZXZpY2Ugc3RydWN0dXJlICovXFxuMTc4OTpcXHRcXG4xNzkwOlxcdFxcdGRldl9kYmcoXFx1MDAyNnBkZXYtXFx1MDAzZWRldiwgXFxcInJlbGVhc2VkIGFuZCBmcmVlZCBkZXZpY2VcXFxcblxcXCIpO1xcbjE3OTE6XFx0fVxcbjE3OTI6XFx0XFxuMTc5MzpcXHQjaWZkZWYgQ09ORklHX09GXFxuMTc5NDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBkbTkwMDBfb2ZfbWF0Y2hlc1tdID0ge1xcbjE3OTU6XFx0XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJkYXZpY29tLGRtOTAwMFxcXCIsIH0sXFxuMTc5NjpcXHRcXHR7IC8qIHNlbnRpbmVsICovIH1cXG4xNzk3OlxcdH07XFxuMTc5ODpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBkbTkwMDBfb2ZfbWF0Y2hlcyk7XFxuMTc5OTpcXHQjZW5kaWZcXG4xODAwOlxcdFxcbjE4MDE6XFx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZG05MDAwX2RyaXZlciA9IHtcXG4xODAyOlxcdFxcdC5kcml2ZXJcXHQ9IHtcXG4xODAzOlxcdFxcdFxcdC5uYW1lICAgID0gXFxcImRtOTAwMFxcXCIsXFxuMTgwNDpcXHRcXHRcXHQucG1cXHQgPSBcXHUwMDI2ZG05MDAwX2Rydl9wbV9vcHMsXFxuMTgwNTpcXHRcXHRcXHQub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9wdHIoZG05MDAwX29mX21hdGNoZXMpLFxcbjE4MDY6XFx0XFx0fSxcXG4xODA3OlxcdFxcdC5wcm9iZSAgID0gZG05MDAwX3Byb2JlLFxcbjE4MDg6XFx0XFx0LnJlbW92ZSA9IGRtOTAwMF9kcnZfcmVtb3ZlLFxcbjE4MDk6XFx0fTtcXG4xODEwOlxcdFxcbjE4MTE6XFx0bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihkbTkwMDBfZHJpdmVyKTtcXG4xODEyOlxcdFxcbjE4MTM6XFx0TU9EVUxFX0FVVEhPUihcXFwiU2FzY2hhIEhhdWVyLCBCZW4gRG9va3NcXFwiKTtcXG4xODE0OlxcdE1PRFVMRV9ERVNDUklQVElPTihcXFwiRGF2aWNvbSBETTkwMDAgbmV0d29yayBkcml2ZXJcXFwiKTtcXG4xODE1OlxcdE1PRFVMRV9MSUNFTlNFKFxcXCJHUExcXFwiKTtcXG4xODE2OlxcdE1PRFVMRV9BTElBUyhcXFwicGxhdGZvcm06ZG05MDAwXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ4OjQ4LjI2MjU1NjQ0MVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuOC1mbGFzaCIsIkR1cmF0aW9uIjoxMzM5MDgyNTYzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIERNOTAwMCBEcml2ZXIncyBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoYXQgYGRtOTAwMF9kcml2ZXJgLi4uIGxvb2tzIGxpa2UgaXQncyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBEYXZpY29tIERNOTAwMCBFdGhlcm5ldCBjb250cm9sbGVyLCBzcGVjaWZpY2FsbHkgdGFpbG9yZWQgZm9yIGVtYmVkZGVkIHN5c3RlbXMuIEkgY2FuIHNlZSBpdCB1c2VzIERldmljZSBUcmVlIG1hdGNoaW5nIChcImRhdmljb20sZG05MDAwXCIpIG9yIHBsYXRmb3JtIGRldmljZSBuYW1lcyAoXCJkbTkwMDBcIikgdG8gaWRlbnRpZnkgaXRzZWxmLiBObyBBQ1BJLCBQQ0ksIG9yIFVTQiBzdXBwb3J0IOKAkyBpdCdzIGFsbCBhYm91dCB0aG9zZSBtZW1vcnktbWFwcGVkIHBhcmFsbGVsIGJ1cyBzZXR1cHMgY29tbW9uIGluIG9sZGVyIEFSTSwgTUlQUywgQ29sZGZpcmUsIG9yIE5pb3MyIGJvYXJkcy5cblxuTm93LCBoZXJlJ3MgdGhlIGtpY2tlcjogc3RhbmRhcmQgUUVNVSBvbiBhbiB4ODZfNjQgc3lzdGVtIChsaWtlIGEgYHBjYCBvciBgcTM1YCBtYWNoaW5lKSAqZG9lc24ndCogaGF2ZSBhIERNOTAwMCBkZXZpY2UuIEFuZCwgdGhlIEtjb25maWcgZGVwZW5kZW5jaWVzIG5haWwgdGhpcyBkb3duIGZ1cnRoZXI6IGl0J3Mgb25seSBidWlsdCBmb3IgdGhvc2UgZW1iZWRkZWQgYXJjaGl0ZWN0dXJlcyBvciB3aXRoIGBDT01QSUxFX1RFU1RgLiBTbywgZXZlbiBpZiBJIGNvdWxkIHNvbWVob3cgZ2V0IHRoaXMgY29tcGlsZWQgb24gYW1kNjQsIHRoZXJlJ3Mgbm90aGluZyBpbiB0aGUgUUVNVSBlbnZpcm9ubWVudCB0byB0cmlnZ2VyIHRoZSBgZG05MDAwX3Byb2JlYCBmdW5jdGlvbi4gVGhlIGNvZGUgaXRzZWxmLCBldmVuIGlmIGJ1aWx0LCBpcyB1bnJlYWNoYWJsZSBiZWNhdXNlIG9mIHRoaXMgaGFyZHdhcmUgYWJzZW5jZS4gQW5kIHRoZSBjaGFuZ2UgaXRzZWxmIGlzIGluIHRoZSBwcm9iZSBhbmQgcmVsZWFzZSBwYXRocywgYWxsIHN1Z2dlc3RpbmcgdGhhdCB0aGV5IHdpbGwgbmV2ZXIgZ2V0IGludm9rZWQgYnkgc3RhbmRhcmQgdXNhZ2UuXG5cbkxldCdzIHF1aWNrbHkgY29uZmlybSB0aGlzIHdpdGggYSBsb29rIGF0IG91ciBuZWdhdGl2ZSBjcml0ZXJpYS4gVGhpcyBoaXRzIHRoZSBtYXJrIGZvciBzZXZlcmFsIHJlYXNvbnM6XG5cbjEuICAqKkFyY2hpdGVjdHVyZToqKiBUaGUgZHJpdmVyJ3MgZXhwbGljaXQgYXJjaGl0ZWN0dXJlIGRlcGVuZGVuY3kgKEFSTSwgTUlQUywgZXRjLikgbWFrZXMgaXQgaW5hY2Nlc3NpYmxlIG9uIGFtZDY0LCBvdXIgdGFyZ2V0LlxuMi4gICoqSGFyZHdhcmU6KiogSXQncyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgYSBzcGVjaWZpYyBlbWJlZGRlZCBTb0MvYm9hcmQgRXRoZXJuZXQgY29udHJvbGxlciBub3QgZW11bGF0ZWQgaW4gUUVNVS5cbjMuICAqKlVucmVhY2hhYmlsaXR5OioqIFRoZXJlZm9yZSwgaXQncyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gdGhlIGFtZDY0IGFyY2hpdGVjdHVyZS5cblxuSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4sIEknbGwgbmVlZCB0byBkbyBhIHF1aWNrIHNlYXJjaCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIHJlZmVyZW5jZXMgdGhhdCBjb3VsZCBjb21wbGljYXRlIHRoaXMgcGljdHVyZSwgYnV0IGJhc2VkIG9uIHdoYXQgSSBzZWUgaGVyZSwgSSdtIGNvbmZpZGVudCBpbiBjYWxsaW5nIHRoaXMgY29kZSBwYXRoIHVucmVhY2hhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjM2LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTgxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDQ6NDk6MDEuNjUzMzg0NTQzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzkyOTQ4OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZG05MDAwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xM1QwNDo0OTowMS43MjEzMjMwMTFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjgtZmxhc2giLCJEdXJhdGlvbiI6MTAwMzA5MDc2NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBWZXJkaWN0OiBDbGVhciBhbmQgVW5hbWJpZ3VvdXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGp1c3QgZmluaXNoZWQgcmV2aWV3aW5nIHRoZSBzZXR1cCBmb3IgdGhpcyBmdXp6aW5nIGF0dGVtcHQuIEZpcnN0IG9mZiwgdGhlcmUncyBhYnNvbHV0ZWx5IG5vdGhpbmcgcmVsZXZhbnQgaW4gdGhlIGBhcmNoL3g4NmAgZGlyZWN0b3J5LCB3aGljaCBpcyBhIGdvb2Qgc2lnbiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGFuIHg4Ni1zcGVjaWZpYyBjb21wb25lbnQuIE5vdywgbGV0J3MgbG9vayBhdCB0aGUgYHNldC1yZXN1bHRzYCBwYXJhbWV0ZXJzLiBgV29ydGhGdXp6aW5nYCBpcyBgZmFsc2VgLCB0aGUgYEZvY3VzU3ltYm9sc2AgbGlzdCBpcyBlbXB0eSwgYW5kIGJvdGggYEVuYWJsZUNvbmZpZ3NgIGFuZCB0aGUgYFJlYXNvbmluZ2AgYXJlIGVxdWFsbHkgZW1wdHkuIFRoZSByZWFzb25pbmcgaXMgYWxzbyBjb25jaXNlLiBUaGF0IGFscmVhZHkgcGFpbnRzIGEgcHJldHR5IGNsZWFyIHBpY3R1cmUuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluLCBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGV2ZXJ5dGhpbmcuIFRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBUaGUgZHJpdmVyIHVuZGVyIGNvbnNpZGVyYXRpb24gaXMgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmNgLiBOb3csIGxvb2tpbmcgYXQgdGhlIEtjb25maWcsIGBETTkwMDBgIGlzIGRlcGVuZGVudCBvbiBgQVJNIHx8IE1JUFMgfHwgQ09MREZJUkUgfHwgTklPUzIgfHwgQ09NUElMRV9URVNUYCwgd2hpY2ggaXMgdGhlIGNydWNpYWwgcG9pbnQuIEZyb20gbXkgZXhwZXJpZW5jZSwgSSBrbm93IHRoZSBETTkwMDAgaXMgYW4gZW1iZWRkZWQgcGxhdGZvcm0gZGV2aWNlIGRyaXZlciBmb3IgRGF2aWNvbSBETTkwMDAgRmFzdCBFdGhlcm5ldCBjb250cm9sbGVycy4gSXQncyBkZXNpZ25lZCB0byBiZSB1c2VkIG9uIEFSTSwgTUlQUywgYW5kIG90aGVyIHNpbWlsYXIgYm9hcmRzLCB0eXBpY2FsbHkgY29uZmlndXJlZCB2aWEgRGV2aWNlIFRyZWUgb3IgdGhlIHBsYXRmb3JtIGJ1cy4gSXQncyBkZWZpbml0ZWx5ICpub3QqIGludGVuZGVkIHRvIGJlIGluc3RhbnRpYXRlZCBvbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsIG1hY2hpbmVzIGxpa2UgUUVNVSBvciBHQ0UuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBpdCdzIHN0cnVjdHVyYWxseSBpbXBvc3NpYmxlIGZvciB0aGUgcHJvYmUgYW5kIGJvYXJkIHJlbGVhc2UgZnVuY3Rpb25zIHRvIGJlIHJlYWNoZWQgb24gYW1kNjQuIEl0IGlzLCB0aGVyZWZvcmUsIHZlcnkgY2xlYXIgd2Ugc2hvdWxkbid0IGZ1enogdGhpcy5cblxuQWxsIGNsZWFyLCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTMwOSwiT3V0cHV0VG9rZW5zIjoxNTEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTNUMDQ6NDk6MTEuNzUyMjMyODUxWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHRlYXJkb3duIGxvZ2ljIChkbTkwMDBfcmVsZWFzZV9ib2FyZCwgZG05MDAwX3Byb2JlKSBpbiB0aGUgRGF2aWNvbSBETTkwMDAgRXRoZXJuZXQgZHJpdmVyIChkcml2ZXJzL25ldC9ldGhlcm5ldC9kYXZpY29tL2RtOTAwMC5jKS4gVGhpcyBkcml2ZXIgaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIGVtYmVkZGVkIGhhcmR3YXJlIHRoYXQgZGVwZW5kcyBvbiBBUk0sIE1JUFMsIENPTERGSVJFLCBvciBOSU9TMiAob3IgQ09NUElMRV9URVNUKS4gSXQgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIG9uIGFtZDY0IGluIHN0YW5kYXJkIFFFTVUvR0NFIGVudmlyb25tZW50cyBhcyB0aGUgcmVxdWlyZWQgcGxhdGZvcm0gaGFyZHdhcmUvRGV2aWNlVHJlZSBiaW5kaW5ncyBhcmUgbm90IHByZXNlbnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgdGVhcmRvd24gbG9naWMgKGRtOTAwMF9yZWxlYXNlX2JvYXJkLCBkbTkwMDBfcHJvYmUpIGluIHRoZSBEYXZpY29tIERNOTAwMCBFdGhlcm5ldCBkcml2ZXIgKGRyaXZlcnMvbmV0L2V0aGVybmV0L2Rhdmljb20vZG05MDAwLmMpLiBUaGlzIGRyaXZlciBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgZW1iZWRkZWQgaGFyZHdhcmUgdGhhdCBkZXBlbmRzIG9uIEFSTSwgTUlQUywgQ09MREZJUkUsIG9yIE5JT1MyIChvciBDT01QSUxFX1RFU1QpLiBJdCBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgb24gYW1kNjQgaW4gc3RhbmRhcmQgUUVNVS9HQ0UgZW52aXJvbm1lbnRzIGFzIHRoZSByZXF1aXJlZCBwbGF0Zm9ybSBoYXJkd2FyZS9EZXZpY2VUcmVlIGJpbmRpbmdzIGFyZSBub3QgcHJlc2VudC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEzVDA0OjQ5OjExLjc1MjI1NjYwMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow5wdkg[1] Phase: Running StartedAt: 2026-09-13 04:49:23 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow5wdkg[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-13 04:49:23 +0000 UTC FinishedAt: 2026-09-13 04:49:26 +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,}