Name: series-workflowq6xmb Phase: Failed StartedAt: 2026-09-08 02:53:24 +0000 UTC FinishedAt: 2026-09-08 02:55:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq6xmb[0] Phase: Succeeded StartedAt: 2026-09-08 02:53:24 +0000 UTC FinishedAt: 2026-09-08 02:55:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq6xmb[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 02:53:24 +0000 UTC FinishedAt: 2026-09-08 02:55:38 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDI6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMzFkY2RjNThhOTliMWNlMDk5MWYzYTA4MDZhYjkzNmJjZjBmMDNlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwMjo1NTowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbmluZGV4IDcxNzY4MDMxNDZmM2QuLjk2MGI5ZjAxYzUzMWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaFxuQEAgLTY3MCw2ICYjNDM7NjcwLDcgQEAgc3RydWN0IGZlY19lbmV0X3ByaXZhdGUge1xuIFxuIFx0LyogcHBzICAqL1xuIFx0aW50IHBwc19jaGFubmVsO1xuJiM0MztcdGludCBwcHNfaXJxO1xuIFx0dW5zaWduZWQgaW50IHJlbG9hZF9wZXJpb2Q7XG4gXHRpbnQgcHBzX2VuYWJsZTtcbiBcdHVuc2lnbmVkIGludCBuZXh0X2NvdW50ZXI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xuaW5kZXggNzk0ZWM0MjdiMGVlNi4uYTI5YzhkZGJiZjM0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xuQEAgLTU1MDAsOSAmIzQzOzU1MDAsOSBAQCBmZWNfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdEVSUl9QVFIocmV0KSk7XG4gXG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmZlcC1cdTAwM2V0eF90aW1lb3V0X3dvcmspO1xuJiM0MztcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIFx0aWYgKGZlcC1cdTAwM2VidWZkZXNjX2V4KVxuIFx0XHRmZWNfcHRwX3N0b3AocGRldik7XG4tXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiBcdGZlY19lbmV0X21paV9yZW1vdmUoZmVwKTtcbiBcdGlmIChmZXAtXHUwMDNlcmVnX3BoeSlcbiBcdFx0cmVndWxhdG9yX2Rpc2FibGUoZmVwLVx1MDAzZXJlZ19waHkpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG5pbmRleCA1NjgwMWMyMDA5ZDU5Li41NjdlYTJhNDYxMTczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xuQEAgLTc3OCw2ICYjNDM7Nzc4LDcgQEAgdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpXG4gXHRocnRpbWVyX3NldHVwKFx1MDAyNmZlcC1cdTAwM2VwZXJvdXRfdGltZXIsIGZlY19wdHBfcHBzX3Blcm91dF9oYW5kbGVyLCBDTE9DS19SRUFMVElNRSxcbiBcdFx0ICAgICAgSFJUSU1FUl9NT0RFX1JFTCk7XG4gXG4mIzQzO1x0ZmVwLVx1MDAzZXBwc19pcnEgPSAtMTtcbiBcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIFwmIzM0O3Bwc1wmIzM0Oyk7XG4gXHRpZiAoaXJxIFx1MDAzYyAwKVxuIFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpO1xuQEAgLTc4Nyw5ICYjNDM7Nzg4LDEyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0aWYgKGlycSBcdTAwM2U9IDApIHtcbiBcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgaXJxLCBmZWNfcHBzX2ludGVycnVwdCxcbiBcdFx0XHRcdCAgICAgICAwLCBwZGV2LVx1MDAzZW5hbWUsIG5kZXYpO1xuLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRcdGRldl93YXJuKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZXF1ZXN0IGZvciBwcHMgaXJxIGZhaWxlZCglZClcXG5cJiMzNDssXG4gXHRcdFx0XHQgcmV0KTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGZlcC1cdTAwM2VwcHNfaXJxID0gaXJxO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0ZmVwLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZmZXAtXHUwMDNlcHRwX2NhcHMsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbkBAIC04NjEsNiAmIzQzOzg2NSwxMiBAQCB2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFxuIFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmZlcC1cdTAwM2V0aW1lX2tlZXApO1xuIFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2ZmVwLVx1MDAzZXBlcm91dF90aW1lcik7XG4mIzQzO1xuJiM0MztcdGlmIChmZXAtXHUwMDNlcHBzX2lycSBcdTAwM2U9IDApIHtcbiYjNDM7XHRcdGRldm1fZnJlZV9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGZlcC1cdTAwM2VwcHNfaXJxLCBuZGV2KTtcbiYjNDM7XHRcdGZlcC1cdTAwM2VwcHNfaXJxID0gLTE7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChmZXAtXHUwMDNlcHRwX2Nsb2NrKVxuIFx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihmZXAtXHUwMDNlcHRwX2Nsb2NrKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDI6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMzFkY2RjNThhOTliMWNlMDk5MWYzYTA4MDZhYjkzNmJjZjBmMDNlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAwMjo1NTowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaAppbmRleCA3MTc2ODAzMTQ2ZjNkLi45NjBiOWYwMWM1MzFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oCkBAIC02NzAsNiAmIzQzOzY3MCw3IEBAIHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlIHsKIAogCS8qIHBwcyAgKi8KIAlpbnQgcHBzX2NoYW5uZWw7CiYjNDM7CWludCBwcHNfaXJxOwogCXVuc2lnbmVkIGludCByZWxvYWRfcGVyaW9kOwogCWludCBwcHNfZW5hYmxlOwogCXVuc2lnbmVkIGludCBuZXh0X2NvdW50ZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCmluZGV4IDc5NGVjNDI3YjBlZTYuLmEyOWM4ZGRiYmYzNGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCkBAIC01NTAwLDkgJiM0Mzs1NTAwLDkgQEAgZmVjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCUVSUl9QVFIocmV0KSk7CiAKIAljYW5jZWxfd29ya19zeW5jKCZhbXA7ZmVwLSZndDt0eF90aW1lb3V0X3dvcmspOwomIzQzOwl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsKIAlpZiAoZmVwLSZndDtidWZkZXNjX2V4KQogCQlmZWNfcHRwX3N0b3AocGRldik7Ci0JdW5yZWdpc3Rlcl9uZXRkZXYobmRldik7CiAJZmVjX2VuZXRfbWlpX3JlbW92ZShmZXApOwogCWlmIChmZXAtJmd0O3JlZ19waHkpCiAJCXJlZ3VsYXRvcl9kaXNhYmxlKGZlcC0mZ3Q7cmVnX3BoeSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYwppbmRleCA1NjgwMWMyMDA5ZDU5Li41NjdlYTJhNDYxMTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMKQEAgLTc3OCw2ICYjNDM7Nzc4LDcgQEAgdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpCiAJaHJ0aW1lcl9zZXR1cCgmYW1wO2ZlcC0mZ3Q7cGVyb3V0X3RpbWVyLCBmZWNfcHRwX3Bwc19wZXJvdXRfaGFuZGxlciwgQ0xPQ0tfUkVBTFRJTUUsCiAJCSAgICAgIEhSVElNRVJfTU9ERV9SRUwpOwogCiYjNDM7CWZlcC0mZ3Q7cHBzX2lycSA9IC0xOwogCWlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsICYjMzQ7cHBzJiMzNDspOwogCWlmIChpcnEgJmx0OyAwKQogCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpOwpAQCAtNzg3LDkgJiM0Mzs3ODgsMTIgQEAgdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpCiAJaWYgKGlycSAmZ3Q7PSAwKSB7CiAJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJmFtcDtwZGV2LSZndDtkZXYsIGlycSwgZmVjX3Bwc19pbnRlcnJ1cHQsCiAJCQkJICAgICAgIDAsIHBkZXYtJmd0O25hbWUsIG5kZXYpOwotCQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCWlmIChyZXQgJmx0OyAwKSB7CiAJCQlkZXZfd2FybigmYW1wO3BkZXYtJmd0O2RldiwgJiMzNDtyZXF1ZXN0IGZvciBwcHMgaXJxIGZhaWxlZCglZClcbiYjMzQ7LAogCQkJCSByZXQpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlmZXAtJmd0O3Bwc19pcnEgPSBpcnE7CiYjNDM7CQl9CiAJfQogCiAJZmVwLSZndDtwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoJmFtcDtmZXAtJmd0O3B0cF9jYXBzLCAmYW1wO3BkZXYtJmd0O2Rldik7CkBAIC04NjEsNiAmIzQzOzg2NSwxMiBAQCB2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZmVwLSZndDt0aW1lX2tlZXApOwogCWhydGltZXJfY2FuY2VsKCZhbXA7ZmVwLSZndDtwZXJvdXRfdGltZXIpOwomIzQzOwomIzQzOwlpZiAoZmVwLSZndDtwcHNfaXJxICZndDs9IDApIHsKJiM0MzsJCWRldm1fZnJlZV9pcnEoJmFtcDtwZGV2LSZndDtkZXYsIGZlcC0mZ3Q7cHBzX2lycSwgbmRldik7CiYjNDM7CQlmZXAtJmd0O3Bwc19pcnEgPSAtMTsKJiM0MzsJfQomIzQzOwogCWlmIChmZXAtJmd0O3B0cF9jbG9jaykKIAkJcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZmVwLSZndDtwdHBfY2xvY2spOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzU3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZnV6ei13b3J0aHkuIE15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHNjb3BlIG91dCB0aGUgYWZmZWN0ZWQgYXJlYXMuIEkgc2VlIGl0IHRvdWNoZXMgdGhlc2UgZmlsZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNgLiBSaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgRnJlZXNjYWxlIEZhc3QgRXRoZXJuZXQgQ29udHJvbGxlciBkcml2ZXIg4oCTIHRoZSBGRUMuIFRoaXMgaXMgdGhlIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhvc2UgaS5NWCBhbmQgQ29sZEZpcmUgU29DcyBmcm9tIE5YUC9GcmVlc2NhbGU7IHNvIEFSTSwgbTY4aywgYW5kIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcywgd2hpY2ggZGVmaW5pdGVseSB3aWRlbnMgdGhlIGltcGFjdC4gTXkgbmV4dCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZywgZWl0aGVyIHdpdGggYSBxdWljayBgZ3JlcHBlcmAgY2FsbCBvciBqdXN0IGJ5IGJyb3dzaW5nIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWdgIGZpbGUsIHRvIGNvbmZpcm0gdGhlIEZFQyYjMzk7cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHNlZSBpZiBpdCYjMzk7cyBtb2R1bGFyIG9yIGJ1aWx0LWluLCBhbmQgZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2NvcGUgYW5kIHBvdGVudGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZFQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTIxPWlmIE5FVF9WRU5ET1JfRlJFRVNDQUxFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjIzOmNvbmZpZyBGRUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjI0Olx0dHJpc3RhdGUgXCYjMzQ7RkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiAoTTUyM3ggfHwgTTUyN3ggfHwgTTUyNzIgfHwgTTUyOHggfHwgTTUyMHggfHwgTTUzMnggfHwgXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjM5OmNvbmZpZyBGRUNfTVBDNTJ4eFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NDA6XHR0cmlzdGF0ZSBcJiMzNDtGRUMgTVBDNTJ4eCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTQxLVx0ZGVwZW5kcyBvbiBQUENfTVBDNTJ4eCBcdTAwMjZcdTAwMjYgUFBDX0JFU1RDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDMtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo0NDpcdHNlbGVjdCBQUENfQkVTVENPTU1fRkVDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjUwOmNvbmZpZyBGRUNfTVBDNTJ4eF9NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo1MTpcdGJvb2wgXCYjMzQ7RkVDIE1QQzUyeHggTURJTyBidXMgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo1MjpcdGRlcGVuZHMgb24gRkVDX01QQzUyeHhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTUzLVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy01NC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjU1Olx0ICBUaGUgTVBDNTIwMCYjMzk7cyBGRUMgY2FuIGNvbm5lY3QgdG8gdGhlIEV0aGVybmV0IGVpdGhlciB3aXRoXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy01Ni1cdCAgYW4gZXh0ZXJuYWwgTUlJIFBIWSBjaGlwIG9yIDEwIE1icHMgNy13aXJlIGludGVyZmFjZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNTctXHQgIChNb3Rvcm9sYT8gaW5kdXN0cnkgc3RhbmRhcmQpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTg6XHQgIElmIHlvdXIgYm9hcmQgdXNlcyBhbiBleHRlcm5hbCBQSFkgY29ubmVjdGVkIHRvIEZFQywgZW5hYmxlIHRoaXMuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy01OS1cdCAgSWYgbm90IHN1cmUsIGVuYWJsZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz05Mz1jb25maWcgR0lBTkZBUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTEwMS1cdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEdpZ2FiaXQgVFNFQyBvbiB0aGUgTVBDODN4eCwgTVBDODV4eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjEwMjpcdCAgYW5kIE1QQzg2eHggZmFtaWx5IG9mIGNoaXBzLCB0aGUgZVRTRUMgb24gTFMxMDIxQSBhbmQgdGhlIEZFQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMTAzLVx0ICBvbiB0aGUgODU0MC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTYyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIGBDT05GSUdfRkVDYCBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQ09ORklHX0ZFQ2AuIEl0IHNlZW1zIGxpa2UgYSBjb21tb24gcHJhY3RpY2UgdG8gc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IHNlY3Rpb24sIHNwZWNpZmljYWxseSBsaW5lcyAyMC0zOC4gVGhpcyBzaG91bGQgaWxsdW1pbmF0ZSBhbnkgcHJlcmVxdWlzaXRlcyBvciBjb25kaXRpb25hbCByZWxhdGlvbnNoaXBzIHRoYXQgZ292ZXJuIHdoZXRoZXIgYENPTkZJR19GRUNgIGNhbiBiZSBlbmFibGVkIG9yIG5vdC4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGJ1aWxkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0XG4gIDIxOlx0aWYgTkVUX1ZFTkRPUl9GUkVFU0NBTEVcbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgRkVDXG4gIDI0Olx0XHR0cmlzdGF0ZSBcJiMzNDtGRUMgZXRoZXJuZXQgY29udHJvbGxlciAob2YgQ29sZEZpcmUgYW5kIHNvbWUgaS5NWCBDUFVzKVwmIzM0O1xuICAyNTpcdFx0ZGVwZW5kcyBvbiAoTTUyM3ggfHwgTTUyN3ggfHwgTTUyNzIgfHwgTTUyOHggfHwgTTUyMHggfHwgTTUzMnggfHwgXFxcbiAgMjY6XHRcdFx0ICAgQVJDSF9NWEMgfHwgQVJDSF9TMzIgfHwgU09DX0lNWDI4IHx8IENPTVBJTEVfVEVTVClcbiAgMjc6XHRcdGRlZmF1bHQgQVJDSF9NWEMgfHwgU09DX0lNWDI4IGlmIEFSTVxuICAyODpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyOTpcdFx0c2VsZWN0IENSQzMyXG4gIDMwOlx0XHRzZWxlY3QgUEhZTElCXG4gIDMxOlx0XHRzZWxlY3QgRklYRURfUEhZXG4gIDMyOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDMzOlx0XHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcbiAgMzQ6XHRcdGltcGx5IE5FVF9TRUxGVEVTVFNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGJ1aWx0LWluIDEwLzEwMCBGYXN0IGV0aGVybmV0XG4gIDM3Olx0XHQgIGNvbnRyb2xsZXIgb24gc29tZSBNb3Rvcm9sYSBDb2xkRmlyZSBhbmQgRnJlZXNjYWxlIGkuTVgvUzMyIHByb2Nlc3NvcnMuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIEZFQ19NUEM1Mnh4XG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtGRUMgTVBDNTJ4eCBkcml2ZXJcJiMzNDtcbiAgNDE6XHRcdGRlcGVuZHMgb24gUFBDX01QQzUyeHggXHUwMDI2XHUwMDI2IFBQQ19CRVNUQ09NTVxuICA0MjpcdFx0c2VsZWN0IENSQzMyXG4gIDQzOlx0XHRzZWxlY3QgUEhZTElCXG4gIDQ0Olx0XHRzZWxlY3QgUFBDX0JFU1RDT01NX0ZFQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NzAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZFQyBSZWFjaGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyAmIzM0O3JlYWNoYWJpbGl0eSYjMzQ7IHByb2JsZW0gYWNjb3JkaW5nIHRvIGVzdGFibGlzaGVkIHByb3RvY29scy4gRmlyc3QsIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCB0aGUgYENPTkZJR19GRUNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGUgZGVwZW5kZW5jaWVzIGFyZSBwcmV0dHkgc3BlY2lmaWM6IE01MjN4LCBNNTI3eCwgTTUyNzIsIE01Mjh4LCBNNTIweCwgTTUzMngsIEFSQ0hfTVhDLCBBUkNIX1MzMiwgU09DX0lNWDI4LCBvciBDT01QSUxFX1RFU1QuIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHByZXR0eSBjbGVhcjsgYEZFQ2AgaXMgcHJvYmFibHkgYSBwbGF0Zm9ybSBkcml2ZXIsIHRpZWQgdG8gc29tZSBGcmVlc2NhbGUgKG9yIG1heWJlIE5YUCBub3c/KSBTb0MgaGFyZHdhcmUuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uIHRob3VnaC4KClRvIG5haWwgaXQgZG93biwgSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBgZmVjYCBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBhbmQgcHJvYmVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgb2J2aW91cyBwbGFjZSB0byBsb29rIHdvdWxkIGJlIHRoZSBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW5zaWdodHMgSSBuZWVkIHRvIGRlZmluaXRpdmVseSBkZXRlcm1pbmUgaWYgdGhpcyBpcyBwbGF0Zm9ybS1zcGVjaWZpYyBvciBoYXMgYnJvYWRlciBhcHBsaWNhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8ZmVjX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTU2NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZlY19wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU2NzE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZmVjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU2NzItXHQuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTY4Mzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZlY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY4NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjA2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZFQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gZXhhbWluaW5nIHRoaXMgcGF0Y2ggZm9jdXNpbmcgb24gd2hldGhlciBpdCYjMzk7cyBzdWl0YWJsZSBmb3IgZnV6emluZy4gSSYjMzk7bSBzdGFydGluZyBieSBsb29raW5nIGF0IHRoZSBzcGVjaWZpYyBjb2RlIGNoYW5nZXMuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRocmVlIGtleSBtb2RpZmljYXRpb25zOgoKMS4gIEluIGBmZWNfZHJ2X3JlbW92ZWAsIHdlJiMzOTt2ZSBnb3QgdGhlIGB1bnJlZ2lzdGVyX25ldGRldmAgY2FsbCwgYW5kIHRoZSBhZGRlZCBjYW5jZWxsYXRpb24gb2YgdGhlIGB0eF90aW1lb3V0X3dvcmtgLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYHVucmVnaXN0ZXJfbmV0ZGV2YCBpcyBtb3ZpbmcuCjIuICBgZmVjX3B0cF9pbml0YCwgd2l0aCB0aGUgYWRkaXRpb24gb2YgYGZlcC0mZ3Q7cHBzX2lycWAgaW5pdGlhbGl6YXRpb24gdG8gLTEsIGEgY2hlY2sgZm9yIHRoZSBgcmV0YCBmcm9tIGByZXF1ZXN0X2lycWAgYW5kIGFzc2lnbm1lbnQgdG8gYGZlcC0mZ3Q7cHBzX2lycWAuCjMuICBgZmVjX3B0cF9zdG9wYCwgd2hpY2ggbm93IGluY2x1ZGVzIGEgY2hlY2sgZm9yIGBmZXAtJmd0O3Bwc19pcnFgIGFuZCBgZGV2bV9mcmVlX2lycWAuCgpOb3csIGFjY29yZGluZyB0byB0aGUgdHJpYWdlIGd1aWRlbGluZXMsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2UgY2hhbmdlcyBmYWxsIGludG8gYW55IG9mIHRoZSAqbmVnYXRpdmUqIGNyaXRlcmlhIGZvciBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIGFtIEkgZGVhbGluZyB3aXRoIHVucmVhY2hhYmxlIGhhcmR3YXJlIG9yIGV4ZWN1dGlvbiBwYXRocz8KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBhcmNoaXRlY3R1cmUgYW5kIGhhcmR3YXJlIGNvbnRleHQuIFRoaXMgRkVDIGRyaXZlciBpcyBkZXNpZ25lZCBmb3IgTlhQL0ZyZWVzY2FsZSBpLk1YLCBDb2xkRmlyZSwgYW5kIFMzMiBwcm9jZXNzb3JzIOKAkyB0aG9zZSBhcmUgQVJNL0NvbGRGaXJlLWJhc2VkIFNvQ3MuIEl0JiMzOTtzIG5vdCBzb21ldGhpbmcgeW91JiMzOTtkIHR5cGljYWxseSBmaW5kIHJ1bm5pbmcgb24gYSBzdGFuZGFyZCBhbWQ2NCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gIEluIGZhY3QsIG9uIGFtZDY0LCBpdCYjMzk7cyAqb25seSogZ29pbmcgdG8gYmUgY29tcGlsZWQgaWYgYENPTVBJTEVfVEVTVGAgaXMgZW5hYmxlZCwgYW5kIHRoZXJlIHdvdWxkbiYjMzk7dCBldmVuIGJlIGEgcGxhdGZvcm0gZGV2aWNlIGluc3RhbnRpYXRlZC4gRXNzZW50aWFsbHksIHRoZSAqdmFzdCogbWFqb3JpdHkgb2YgdGhlIHRpbWUsIHRoaXMgY29kZSB3b24mIzM5O3QgcnVuIG9uIHRoZSB0YXJnZXQgZnV6emluZyBlbnZpcm9ubWVudC4KCkV2ZW4gaWYgd2Ugd2VyZSB0byBnZXQgdGhpcyB0aGluZyBwcm9iZWQsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgdGhlIGRyaXZlciYjMzk7cyAqcmVtb3ZlKiBjYWxsYmFjaywgYW5kIHRoZSBgcHRwX2luaXRgIGFuZCBgcHRwX3N0b3BgIGZ1bmN0aW9ucywgY2FsbGVkIGJ5IHJlbW92ZS4gQ3J1Y2lhbGx5LCB0aGUgY29kZSBhZGRlZCB0byB0aGUgYGZlY19wdHBfc3RvcGAgaXMgKm9ubHkqIGNhbGxlZCBmcm9tIGBmZWNfZHJ2X3JlbW92ZWAgZHVyaW5nIGRyaXZlciB0ZWFyZG93bi4KCkdpdmVuIHRoZXNlIG9ic2VydmF0aW9ucywgSSYjMzk7bSBmYWlybHkgY2VydGFpbiBJIGNhbiBjb25jbHVkZSB0aGF0IHRoZXNlIG1vZGlmaWNhdGlvbnMgd2lsbCBub3QgZXhlY3V0ZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4gVGhlc2UgY2hhbmdlcyBhcmUgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIHBhcnQgb2YgYSBkcml2ZXIgdGhhdCBkb2VzIG5vdCBydW4gb24gdGhlIHRhcmdldCBwbGF0Zm9ybS4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZlY19wdHBfc3RvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oPTY5OD12b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaDo2OTk6dm9pZCBmZWNfcHRwX3N0b3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNzAwLXZvaWQgZmVjX3B0cF9zdGFydF9jeWNsZWNvdW50ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTUyMDQ9ZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTQ2MC1cdGlmIChmZXAtXHUwMDNlYnVmZGVzY19leClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU0NjE6XHRcdGZlY19wdHBfc3RvcChwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU0NjItZmFpbGVkX3Jlc2V0OlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTU0ODk9ZmVjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NTA0LVx0aWYgKGZlcC1cdTAwM2VidWZkZXNjX2V4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTUwNTpcdFx0ZmVjX3B0cF9zdG9wKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTUwNi1cdGZlY19lbmV0X21paV9yZW1vdmUoZmVwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jPTgyOD12b2lkIGZlY19wdHBfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMtODU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYzo4NTg6dm9pZCBmZWNfcHRwX3N0b3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMtODU5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk2NQoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCBmcmFua2x5LCBpdCYjMzk7cyBhIGRlYWQgZW5kIGZvciBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUsIGBmZWNfcHRwX3N0b3BgLCBpcyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgdW53aW5kIHBhdGggb2YgYGZlY19wcm9iZSgpYCBhbmQgZHVyaW5nIHRoZSBkcml2ZXImIzM5O3MgcmVtb3ZhbCBwcm9jZXNzIGluIGBmZWNfZHJ2X3JlbW92ZSgpYC4KClRoZSBwcm9ibGVtPyBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBGcmVlc2NhbGUgRkVDIEV0aGVybmV0IGNvbnRyb2xsZXIg4oCTIGEgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBBUk0sIENvbGRGaXJlLCBhbmQgUzMyIFNvQ3MuIFRoaXMgaXMgbm90IHNvbWV0aGluZyBJIGNhbiByZWFjaCBvbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBhbWQ2NCBlbnZpcm9ubWVudHMsIHBsYWluIGFuZCBzaW1wbGUuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhhcmR3YXJlIHRoYXQmIzM5O3Mgbm90IGFjY2Vzc2libGUgb3IgZW11bGF0ZWQgaW4gdGhvc2UgY29udGV4dHMuCgpUaGVyZWZvcmUsIGJlY2F1c2Ugb2YgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGlzb2xhdGVkIG5hdHVyZSBvZiB0aGUgY29kZSBjaGFuZ2VzIHdpdGhpbiBwcm9iZSBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLCBmdXp6aW5nIHRoaXMgcGF0Y2ggd291bGQgYmUgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFRoZSBwcm9iYWJpbGl0eSBvZiB0cmlnZ2VyaW5nIGFueSBtZWFuaW5nZnVsIGV4ZWN1dGlvbiBvZiB0aGUgY2hhbmdlZCBjb2RlIG9uIG91ciB0YXJnZXQgcGxhdGZvcm1zIGlzIHZpcnR1YWxseSB6ZXJvLiBUaGlzIGlzIGEgdmVyeSBjbGVhciBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyIChmZWNfcHRwX2luaXQsIGZlY19wdHBfc3RvcCwgYW5kIGZlY19kcnZfcmVtb3ZlKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIE5YUC9GcmVlc2NhbGUgQ29sZEZpcmUgYW5kIGkuTVggU29Dcy4gVGhlIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGlzIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIHJlc3RyaWN0ZWQgdG8gcHJvYmUgYW5kIGRyaXZlciB0ZWFyZG93bi9yZW1vdmUgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEZFQyBldGhlcm5ldCBjb250cm9sbGVyIGRyaXZlciAoZmVjX3B0cF9pbml0LCBmZWNfcHRwX3N0b3AsIGFuZCBmZWNfZHJ2X3JlbW92ZSksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBOWFAvRnJlZXNjYWxlIENvbGRGaXJlIGFuZCBpLk1YIFNvQ3MuIFRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhpcyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSByZXN0cmljdGVkIHRvIHByb2JlIGFuZCBkcml2ZXIgdGVhcmRvd24vcmVtb3ZlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDI6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjAzLjQ5OTQyNTgwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzY2MDIwNzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjAzLjQ5OTQzMTYxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyNTIxNjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjMxZGNkYzU4YTk5YjFjZTA5OTFmM2EwODA2YWI5MzZiY2YwZjAzZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCA4IDAyOjU1OjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaFxcbmluZGV4IDcxNzY4MDMxNDZmM2QuLjk2MGI5ZjAxYzUzMWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXFxuQEAgLTY3MCw2ICs2NzAsNyBAQCBzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSB7XFxuIFxcbiBcXHQvKiBwcHMgICovXFxuIFxcdGludCBwcHNfY2hhbm5lbDtcXG4rXFx0aW50IHBwc19pcnE7XFxuIFxcdHVuc2lnbmVkIGludCByZWxvYWRfcGVyaW9kO1xcbiBcXHRpbnQgcHBzX2VuYWJsZTtcXG4gXFx0dW5zaWduZWQgaW50IG5leHRfY291bnRlcjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xcbmluZGV4IDc5NGVjNDI3YjBlZTYuLmEyOWM4ZGRiYmYzNGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xcbkBAIC01NTAwLDkgKzU1MDAsOSBAQCBmZWNfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRcXHRFUlJfUFRSKHJldCkpO1xcbiBcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZmVwLVxcdTAwM2V0eF90aW1lb3V0X3dvcmspO1xcbitcXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gXFx0aWYgKGZlcC1cXHUwMDNlYnVmZGVzY19leClcXG4gXFx0XFx0ZmVjX3B0cF9zdG9wKHBkZXYpO1xcbi1cXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gXFx0ZmVjX2VuZXRfbWlpX3JlbW92ZShmZXApO1xcbiBcXHRpZiAoZmVwLVxcdTAwM2VyZWdfcGh5KVxcbiBcXHRcXHRyZWd1bGF0b3JfZGlzYWJsZShmZXAtXFx1MDAzZXJlZ19waHkpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU2N2VhMmE0NjExNzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcXG5AQCAtNzc4LDYgKzc3OCw3IEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxcbiBcXHRocnRpbWVyX3NldHVwKFxcdTAwMjZmZXAtXFx1MDAzZXBlcm91dF90aW1lciwgZmVjX3B0cF9wcHNfcGVyb3V0X2hhbmRsZXIsIENMT0NLX1JFQUxUSU1FLFxcbiBcXHRcXHQgICAgICBIUlRJTUVSX01PREVfUkVMKTtcXG4gXFxuK1xcdGZlcC1cXHUwMDNlcHBzX2lycSA9IC0xO1xcbiBcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZV9vcHRpb25hbChwZGV2LCBcXFwicHBzXFxcIik7XFxuIFxcdGlmIChpcnEgXFx1MDAzYyAwKVxcbiBcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpO1xcbkBAIC03ODcsOSArNzg4LDEyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxcbiBcXHRpZiAoaXJxIFxcdTAwM2U9IDApIHtcXG4gXFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBpcnEsIGZlY19wcHNfaW50ZXJydXB0LFxcbiBcXHRcXHRcXHRcXHQgICAgICAgMCwgcGRldi1cXHUwMDNlbmFtZSwgbmRldik7XFxuLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRcXHRkZXZfd2FybihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicmVxdWVzdCBmb3IgcHBzIGlycSBmYWlsZWQoJWQpXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgcmV0KTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZmVwLVxcdTAwM2VwcHNfaXJxID0gaXJxO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdGZlcC1cXHUwMDNlcHRwX2Nsb2NrID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFxcdTAwMjZmZXAtXFx1MDAzZXB0cF9jYXBzLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5AQCAtODYxLDYgKzg2NSwxMiBAQCB2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXG4gXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZmZXAtXFx1MDAzZXRpbWVfa2VlcCk7XFxuIFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZmZXAtXFx1MDAzZXBlcm91dF90aW1lcik7XFxuK1xcbitcXHRpZiAoZmVwLVxcdTAwM2VwcHNfaXJxIFxcdTAwM2U9IDApIHtcXG4rXFx0XFx0ZGV2bV9mcmVlX2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBmZXAtXFx1MDAzZXBwc19pcnEsIG5kZXYpO1xcbitcXHRcXHRmZXAtXFx1MDAzZXBwc19pcnEgPSAtMTtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKGZlcC1cXHUwMDNlcHRwX2Nsb2NrKVxcbiBcXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihmZXAtXFx1MDAzZXB0cF9jbG9jayk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MDQuMDcyNTg4MjE5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDE5Mjg0NjQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjMxZGNkYzU4YTk5YjFjZTA5OTFmM2EwODA2YWI5MzZiY2YwZjAzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDI6NTU6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbmluZGV4IDcxNzY4MDMxNDZmM2QuLjk2MGI5ZjAxYzUzMWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaFxuQEAgLTY3MCw2ICs2NzAsNyBAQCBzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSB7XG4gXG4gXHQvKiBwcHMgICovXG4gXHRpbnQgcHBzX2NoYW5uZWw7XG4rXHRpbnQgcHBzX2lycTtcbiBcdHVuc2lnbmVkIGludCByZWxvYWRfcGVyaW9kO1xuIFx0aW50IHBwc19lbmFibGU7XG4gXHR1bnNpZ25lZCBpbnQgbmV4dF9jb3VudGVyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbmluZGV4IDc5NGVjNDI3YjBlZTYuLmEyOWM4ZGRiYmYzNGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbkBAIC01NTAwLDkgKzU1MDAsOSBAQCBmZWNfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdEVSUl9QVFIocmV0KSk7XG4gXG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmZlcC1cdTAwM2V0eF90aW1lb3V0X3dvcmspO1xuK1x0dW5yZWdpc3Rlcl9uZXRkZXYobmRldik7XG4gXHRpZiAoZmVwLVx1MDAzZWJ1ZmRlc2NfZXgpXG4gXHRcdGZlY19wdHBfc3RvcChwZGV2KTtcbi1cdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIFx0ZmVjX2VuZXRfbWlpX3JlbW92ZShmZXApO1xuIFx0aWYgKGZlcC1cdTAwM2VyZWdfcGh5KVxuIFx0XHRyZWd1bGF0b3JfZGlzYWJsZShmZXAtXHUwMDNlcmVnX3BoeSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU2N2VhMmE0NjExNzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG5AQCAtNzc4LDYgKzc3OCw3IEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0aHJ0aW1lcl9zZXR1cChcdTAwMjZmZXAtXHUwMDNlcGVyb3V0X3RpbWVyLCBmZWNfcHRwX3Bwc19wZXJvdXRfaGFuZGxlciwgQ0xPQ0tfUkVBTFRJTUUsXG4gXHRcdCAgICAgIEhSVElNRVJfTU9ERV9SRUwpO1xuIFxuK1x0ZmVwLVx1MDAzZXBwc19pcnEgPSAtMTtcbiBcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIFwicHBzXCIpO1xuIFx0aWYgKGlycSBcdTAwM2MgMClcbiBcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbChwZGV2LCBpcnFfaWR4KTtcbkBAIC03ODcsOSArNzg4LDEyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0aWYgKGlycSBcdTAwM2U9IDApIHtcbiBcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgaXJxLCBmZWNfcHBzX2ludGVycnVwdCxcbiBcdFx0XHRcdCAgICAgICAwLCBwZGV2LVx1MDAzZW5hbWUsIG5kZXYpO1xuLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwicmVxdWVzdCBmb3IgcHBzIGlycSBmYWlsZWQoJWQpXFxuXCIsXG4gXHRcdFx0XHQgcmV0KTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRmZXAtXHUwMDNlcHBzX2lycSA9IGlycTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0ZmVwLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZmZXAtXHUwMDNlcHRwX2NhcHMsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbkBAIC04NjEsNiArODY1LDEyIEBAIHZvaWQgZmVjX3B0cF9zdG9wKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZmVwLVx1MDAzZXRpbWVfa2VlcCk7XG4gXHRocnRpbWVyX2NhbmNlbChcdTAwMjZmZXAtXHUwMDNlcGVyb3V0X3RpbWVyKTtcbitcbitcdGlmIChmZXAtXHUwMDNlcHBzX2lycSBcdTAwM2U9IDApIHtcbitcdFx0ZGV2bV9mcmVlX2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgZmVwLVx1MDAzZXBwc19pcnEsIG5kZXYpO1xuK1x0XHRmZXAtXHUwMDNlcHBzX2lycSA9IC0xO1xuK1x0fVxuK1xuIFx0aWYgKGZlcC1cdTAwM2VwdHBfY2xvY2spXG4gXHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGZlcC1cdTAwM2VwdHBfY2xvY2spO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjA0LjA3MjU4OTk0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMDA5MDg1Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIGl0J3MgZnV6ei13b3J0aHkuIE15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHNjb3BlIG91dCB0aGUgYWZmZWN0ZWQgYXJlYXMuIEkgc2VlIGl0IHRvdWNoZXMgdGhlc2UgZmlsZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNgLiBSaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIHRoZSBGcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIGRyaXZlciDigJMgdGhlIEZFQy4gVGhpcyBpcyB0aGUgcGxhdGZvcm0gZHJpdmVyIGZvciB0aG9zZSBpLk1YIGFuZCBDb2xkRmlyZSBTb0NzIGZyb20gTlhQL0ZyZWVzY2FsZTsgc28gQVJNLCBtNjhrLCBhbmQgUG93ZXJQQyBhcmNoaXRlY3R1cmVzLCB3aGljaCBkZWZpbml0ZWx5IHdpZGVucyB0aGUgaW1wYWN0LiBNeSBuZXh0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBLY29uZmlnLCBlaXRoZXIgd2l0aCBhIHF1aWNrIGBncmVwcGVyYCBjYWxsIG9yIGp1c3QgYnkgYnJvd3NpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ2AgZmlsZSwgdG8gY29uZmlybSB0aGUgRkVDJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBzZWUgaWYgaXQncyBtb2R1bGFyIG9yIGJ1aWx0LWluLCBhbmQgZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2NvcGUgYW5kIHBvdGVudGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzU3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MTQuMDgxNjc3NDU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjExOTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZFQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMT1pZiBORVRfVkVORE9SX0ZSRUVTQ0FMRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjIzOmNvbmZpZyBGRUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzoyNDpcXHR0cmlzdGF0ZSBcXFwiRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiAoTTUyM3ggfHwgTTUyN3ggfHwgTTUyNzIgfHwgTTUyOHggfHwgTTUyMHggfHwgTTUzMnggfHwgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6Mzk6Y29uZmlnIEZFQ19NUEM1Mnh4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NDA6XFx0dHJpc3RhdGUgXFxcIkZFQyBNUEM1Mnh4IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00MS1cXHRkZXBlbmRzIG9uIFBQQ19NUEM1Mnh4IFxcdTAwMjZcXHUwMDI2IFBQQ19CRVNUQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDMtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjQ0OlxcdHNlbGVjdCBQUENfQkVTVENPTU1fRkVDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTA6Y29uZmlnIEZFQ19NUEM1Mnh4X01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo1MTpcXHRib29sIFxcXCJGRUMgTVBDNTJ4eCBNRElPIGJ1cyBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTI6XFx0ZGVwZW5kcyBvbiBGRUNfTVBDNTJ4eFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTUzLVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTU0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo1NTpcXHQgIFRoZSBNUEM1MjAwJ3MgRkVDIGNhbiBjb25uZWN0IHRvIHRoZSBFdGhlcm5ldCBlaXRoZXIgd2l0aFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTU2LVxcdCAgYW4gZXh0ZXJuYWwgTUlJIFBIWSBjaGlwIG9yIDEwIE1icHMgNy13aXJlIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTU3LVxcdCAgKE1vdG9yb2xhPyBpbmR1c3RyeSBzdGFuZGFyZCkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTg6XFx0ICBJZiB5b3VyIGJvYXJkIHVzZXMgYW4gZXh0ZXJuYWwgUEhZIGNvbm5lY3RlZCB0byBGRUMsIGVuYWJsZSB0aGlzLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTU5LVxcdCAgSWYgbm90IHN1cmUsIGVuYWJsZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTkzPWNvbmZpZyBHSUFORkFSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0xMDEtXFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBUU0VDIG9uIHRoZSBNUEM4M3h4LCBNUEM4NXh4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjEwMjpcXHQgIGFuZCBNUEM4Nnh4IGZhbWlseSBvZiBjaGlwcywgdGhlIGVUU0VDIG9uIExTMTAyMUEgYW5kIHRoZSBGRUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0xMDMtXFx0ICBvbiB0aGUgODU0MC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MTQuMTI4Mjk0MjkxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzMjE0OTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBDT05GSUdfRkVDYCBEZXBlbmRlbmN5IExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBDT05GSUdfRkVDYC4gSXQgc2VlbXMgbGlrZSBhIGNvbW1vbiBwcmFjdGljZSB0byBzdGFydCB3aXRoIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBMZXQncyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSByZWxldmFudCBzZWN0aW9uLCBzcGVjaWZpY2FsbHkgbGluZXMgMjAtMzguIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgYW55IHByZXJlcXVpc2l0ZXMgb3IgY29uZGl0aW9uYWwgcmVsYXRpb25zaGlwcyB0aGF0IGdvdmVybiB3aGV0aGVyIGBDT05GSUdfRkVDYCBjYW4gYmUgZW5hYmxlZCBvciBub3QuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBidWlsZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk2MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjE3LjY2MDQ0NTE0OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcbiAgMjE6XFx0aWYgTkVUX1ZFTkRPUl9GUkVFU0NBTEVcXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIEZFQ1xcbiAgMjQ6XFx0XFx0dHJpc3RhdGUgXFxcIkZFQyBldGhlcm5ldCBjb250cm9sbGVyIChvZiBDb2xkRmlyZSBhbmQgc29tZSBpLk1YIENQVXMpXFxcIlxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiAoTTUyM3ggfHwgTTUyN3ggfHwgTTUyNzIgfHwgTTUyOHggfHwgTTUyMHggfHwgTTUzMnggfHwgXFxcXFxcbiAgMjY6XFx0XFx0XFx0ICAgQVJDSF9NWEMgfHwgQVJDSF9TMzIgfHwgU09DX0lNWDI4IHx8IENPTVBJTEVfVEVTVClcXG4gIDI3OlxcdFxcdGRlZmF1bHQgQVJDSF9NWEMgfHwgU09DX0lNWDI4IGlmIEFSTVxcbiAgMjg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjk6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAzMDpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAzMTpcXHRcXHRzZWxlY3QgRklYRURfUEhZXFxuICAzMjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAzMzpcXHRcXHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcXG4gIDM0OlxcdFxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGJ1aWx0LWluIDEwLzEwMCBGYXN0IGV0aGVybmV0XFxuICAzNzpcXHRcXHQgIGNvbnRyb2xsZXIgb24gc29tZSBNb3Rvcm9sYSBDb2xkRmlyZSBhbmQgRnJlZXNjYWxlIGkuTVgvUzMyIHByb2Nlc3NvcnMuXFxuICAzODpcXHRcXG4gIDM5OlxcdGNvbmZpZyBGRUNfTVBDNTJ4eFxcbiAgNDA6XFx0XFx0dHJpc3RhdGUgXFxcIkZFQyBNUEM1Mnh4IGRyaXZlclxcXCJcXG4gIDQxOlxcdFxcdGRlcGVuZHMgb24gUFBDX01QQzUyeHggXFx1MDAyNlxcdTAwMjYgUFBDX0JFU1RDT01NXFxuICA0MjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDQzOlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDQ0OlxcdFxcdHNlbGVjdCBQUENfQkVTVENPTU1fRkVDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjE3LjY2MDUwNTI1OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxOTEyNzMzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZFQyBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgXCJyZWFjaGFiaWxpdHlcIiBwcm9ibGVtIGFjY29yZGluZyB0byBlc3RhYmxpc2hlZCBwcm90b2NvbHMuIEZpcnN0LCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCB0aGUgYENPTkZJR19GRUNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGUgZGVwZW5kZW5jaWVzIGFyZSBwcmV0dHkgc3BlY2lmaWM6IE01MjN4LCBNNTI3eCwgTTUyNzIsIE01Mjh4LCBNNTIweCwgTTUzMngsIEFSQ0hfTVhDLCBBUkNIX1MzMiwgU09DX0lNWDI4LCBvciBDT01QSUxFX1RFU1QuIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHByZXR0eSBjbGVhcjsgYEZFQ2AgaXMgcHJvYmFibHkgYSBwbGF0Zm9ybSBkcml2ZXIsIHRpZWQgdG8gc29tZSBGcmVlc2NhbGUgKG9yIG1heWJlIE5YUCBub3c/KSBTb0MgaGFyZHdhcmUuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uIHRob3VnaC5cblxuVG8gbmFpbCBpdCBkb3duLCBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgYGZlY2AgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgYW5kIHByb2JlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIG9idmlvdXMgcGxhY2UgdG8gbG9vayB3b3VsZCBiZSB0aGUgc291cmNlIGNvZGUuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW5zaWdodHMgSSBuZWVkIHRvIGRlZmluaXRpdmVseSBkZXRlcm1pbmUgaWYgdGhpcyBpcyBwbGF0Zm9ybS1zcGVjaWZpYyBvciBoYXMgYnJvYWRlciBhcHBsaWNhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTcwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MTkuODUxNzgwNjIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTA0MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8ZmVjX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz01NjY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmZWNfcG1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1NjcxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZlY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3Mi1cXHQuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU2ODM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihmZWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01Njg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMjo1NToxOS45MDEyODk0ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTYwMjk1MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZFQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gZXhhbWluaW5nIHRoaXMgcGF0Y2ggZm9jdXNpbmcgb24gd2hldGhlciBpdCdzIHN1aXRhYmxlIGZvciBmdXp6aW5nLiBJJ20gc3RhcnRpbmcgYnkgbG9va2luZyBhdCB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzLlxuXG5JJ3ZlIGlkZW50aWZpZWQgdGhyZWUga2V5IG1vZGlmaWNhdGlvbnM6XG5cbjEuICBJbiBgZmVjX2Rydl9yZW1vdmVgLCB3ZSd2ZSBnb3QgdGhlIGB1bnJlZ2lzdGVyX25ldGRldmAgY2FsbCwgYW5kIHRoZSBhZGRlZCBjYW5jZWxsYXRpb24gb2YgdGhlIGB0eF90aW1lb3V0X3dvcmtgLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYHVucmVnaXN0ZXJfbmV0ZGV2YCBpcyBtb3ZpbmcuXG4yLiAgYGZlY19wdHBfaW5pdGAsIHdpdGggdGhlIGFkZGl0aW9uIG9mIGBmZXAtXHUwMDNlcHBzX2lycWAgaW5pdGlhbGl6YXRpb24gdG8gLTEsIGEgY2hlY2sgZm9yIHRoZSBgcmV0YCBmcm9tIGByZXF1ZXN0X2lycWAgYW5kIGFzc2lnbm1lbnQgdG8gYGZlcC1cdTAwM2VwcHNfaXJxYC5cbjMuICBgZmVjX3B0cF9zdG9wYCwgd2hpY2ggbm93IGluY2x1ZGVzIGEgY2hlY2sgZm9yIGBmZXAtXHUwMDNlcHBzX2lycWAgYW5kIGBkZXZtX2ZyZWVfaXJxYC5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgZmFsbCBpbnRvIGFueSBvZiB0aGUgKm5lZ2F0aXZlKiBjcml0ZXJpYSBmb3IgZnV6emluZy4gU3BlY2lmaWNhbGx5LCBhbSBJIGRlYWxpbmcgd2l0aCB1bnJlYWNoYWJsZSBoYXJkd2FyZSBvciBleGVjdXRpb24gcGF0aHM/XG5cbkxldCdzIGxvb2sgYXQgdGhlIGFyY2hpdGVjdHVyZSBhbmQgaGFyZHdhcmUgY29udGV4dC4gVGhpcyBGRUMgZHJpdmVyIGlzIGRlc2lnbmVkIGZvciBOWFAvRnJlZXNjYWxlIGkuTVgsIENvbGRGaXJlLCBhbmQgUzMyIHByb2Nlc3NvcnMg4oCTIHRob3NlIGFyZSBBUk0vQ29sZEZpcmUtYmFzZWQgU29Dcy4gSXQncyBub3Qgc29tZXRoaW5nIHlvdSdkIHR5cGljYWxseSBmaW5kIHJ1bm5pbmcgb24gYSBzdGFuZGFyZCBhbWQ2NCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gIEluIGZhY3QsIG9uIGFtZDY0LCBpdCdzICpvbmx5KiBnb2luZyB0byBiZSBjb21waWxlZCBpZiBgQ09NUElMRV9URVNUYCBpcyBlbmFibGVkLCBhbmQgdGhlcmUgd291bGRuJ3QgZXZlbiBiZSBhIHBsYXRmb3JtIGRldmljZSBpbnN0YW50aWF0ZWQuIEVzc2VudGlhbGx5LCB0aGUgKnZhc3QqIG1ham9yaXR5IG9mIHRoZSB0aW1lLCB0aGlzIGNvZGUgd29uJ3QgcnVuIG9uIHRoZSB0YXJnZXQgZnV6emluZyBlbnZpcm9ubWVudC5cblxuRXZlbiBpZiB3ZSB3ZXJlIHRvIGdldCB0aGlzIHRoaW5nIHByb2JlZCwgdGhlIGNoYW5nZXMgYXJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgZHJpdmVyJ3MgKnJlbW92ZSogY2FsbGJhY2ssIGFuZCB0aGUgYHB0cF9pbml0YCBhbmQgYHB0cF9zdG9wYCBmdW5jdGlvbnMsIGNhbGxlZCBieSByZW1vdmUuIENydWNpYWxseSwgdGhlIGNvZGUgYWRkZWQgdG8gdGhlIGBmZWNfcHRwX3N0b3BgIGlzICpvbmx5KiBjYWxsZWQgZnJvbSBgZmVjX2Rydl9yZW1vdmVgIGR1cmluZyBkcml2ZXIgdGVhcmRvd24uXG5cbkdpdmVuIHRoZXNlIG9ic2VydmF0aW9ucywgSSdtIGZhaXJseSBjZXJ0YWluIEkgY2FuIGNvbmNsdWRlIHRoYXQgdGhlc2UgbW9kaWZpY2F0aW9ucyB3aWxsIG5vdCBleGVjdXRlIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzLiBUaGVzZSBjaGFuZ2VzIGFyZSBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgcGFydCBvZiBhIGRyaXZlciB0aGF0IGRvZXMgbm90IHJ1biBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIwNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMjo1NToyNS4wNjE1ODgxNzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDcwODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZlY19wdHBfc3RvcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaD02OTg9dm9pZCBmZWNfcHRwX3NhdmVfc3RhdGUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oOjY5OTp2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNzAwLXZvaWQgZmVjX3B0cF9zdGFydF9jeWNsZWNvdW50ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NTIwND1mZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU0NjAtXFx0aWYgKGZlcC1cXHUwMDNlYnVmZGVzY19leClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1NDYxOlxcdFxcdGZlY19wdHBfc3RvcChwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NDYyLWZhaWxlZF9yZXNldDpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTU0ODk9ZmVjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU1MDQtXFx0aWYgKGZlcC1cXHUwMDNlYnVmZGVzY19leClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1NTA1OlxcdFxcdGZlY19wdHBfc3RvcChwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NTA2LVxcdGZlY19lbmV0X21paV9yZW1vdmUoZmVwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmM9ODI4PXZvaWQgZmVjX3B0cF9yZXN0b3JlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jLTg1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jOjg1ODp2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMtODU5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MjUuMTA4MDgzNDE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxNTczMjcxMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgZnJhbmtseSwgaXQncyBhIGRlYWQgZW5kIGZvciBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUsIGBmZWNfcHRwX3N0b3BgLCBpcyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgdW53aW5kIHBhdGggb2YgYGZlY19wcm9iZSgpYCBhbmQgZHVyaW5nIHRoZSBkcml2ZXIncyByZW1vdmFsIHByb2Nlc3MgaW4gYGZlY19kcnZfcmVtb3ZlKClgLlxuXG5UaGUgcHJvYmxlbT8gV2UncmUgZGVhbGluZyB3aXRoIHRoZSBGcmVlc2NhbGUgRkVDIEV0aGVybmV0IGNvbnRyb2xsZXIg4oCTIGEgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBBUk0sIENvbGRGaXJlLCBhbmQgUzMyIFNvQ3MuIFRoaXMgaXMgbm90IHNvbWV0aGluZyBJIGNhbiByZWFjaCBvbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBhbWQ2NCBlbnZpcm9ubWVudHMsIHBsYWluIGFuZCBzaW1wbGUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgaGFyZHdhcmUgdGhhdCdzIG5vdCBhY2Nlc3NpYmxlIG9yIGVtdWxhdGVkIGluIHRob3NlIGNvbnRleHRzLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2Ugb2YgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGlzb2xhdGVkIG5hdHVyZSBvZiB0aGUgY29kZSBjaGFuZ2VzIHdpdGhpbiBwcm9iZSBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLCBmdXp6aW5nIHRoaXMgcGF0Y2ggd291bGQgYmUgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFRoZSBwcm9iYWJpbGl0eSBvZiB0cmlnZ2VyaW5nIGFueSBtZWFuaW5nZnVsIGV4ZWN1dGlvbiBvZiB0aGUgY2hhbmdlZCBjb2RlIG9uIG91ciB0YXJnZXQgcGxhdGZvcm1zIGlzIHZpcnR1YWxseSB6ZXJvLiBUaGlzIGlzIGEgdmVyeSBjbGVhciBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTY1LCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMjo1NToyOC4yNjU0MTMxNjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEZFQyBldGhlcm5ldCBjb250cm9sbGVyIGRyaXZlciAoZmVjX3B0cF9pbml0LCBmZWNfcHRwX3N0b3AsIGFuZCBmZWNfZHJ2X3JlbW92ZSksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBOWFAvRnJlZXNjYWxlIENvbGRGaXJlIGFuZCBpLk1YIFNvQ3MuIFRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhpcyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSByZXN0cmljdGVkIHRvIHByb2JlIGFuZCBkcml2ZXIgdGVhcmRvd24vcmVtb3ZlIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjI4LjI2NTQzNjIwMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowq6xmb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 02:53:24 +0000 UTC FinishedAt: 2026-09-08 02:55:29 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDI6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmMzFkY2RjNThhOTliMWNlMDk5MWYzYTA4MDZhYjkzNmJjZjBmMDNlXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBTZXAgOCAwMjo1NTowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbmluZGV4IDcxNzY4MDMxNDZmM2QuLjk2MGI5ZjAxYzUzMWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaFxuQEAgLTY3MCw2ICYjNDM7NjcwLDcgQEAgc3RydWN0IGZlY19lbmV0X3ByaXZhdGUge1xuIFxuIFx0LyogcHBzICAqL1xuIFx0aW50IHBwc19jaGFubmVsO1xuJiM0MztcdGludCBwcHNfaXJxO1xuIFx0dW5zaWduZWQgaW50IHJlbG9hZF9wZXJpb2Q7XG4gXHRpbnQgcHBzX2VuYWJsZTtcbiBcdHVuc2lnbmVkIGludCBuZXh0X2NvdW50ZXI7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xuaW5kZXggNzk0ZWM0MjdiMGVlNi4uYTI5YzhkZGJiZjM0ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xuQEAgLTU1MDAsOSAmIzQzOzU1MDAsOSBAQCBmZWNfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdEVSUl9QVFIocmV0KSk7XG4gXG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmZlcC1cdTAwM2V0eF90aW1lb3V0X3dvcmspO1xuJiM0MztcdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIFx0aWYgKGZlcC1cdTAwM2VidWZkZXNjX2V4KVxuIFx0XHRmZWNfcHRwX3N0b3AocGRldik7XG4tXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcbiBcdGZlY19lbmV0X21paV9yZW1vdmUoZmVwKTtcbiBcdGlmIChmZXAtXHUwMDNlcmVnX3BoeSlcbiBcdFx0cmVndWxhdG9yX2Rpc2FibGUoZmVwLVx1MDAzZXJlZ19waHkpO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG5pbmRleCA1NjgwMWMyMDA5ZDU5Li41NjdlYTJhNDYxMTczIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xuQEAgLTc3OCw2ICYjNDM7Nzc4LDcgQEAgdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpXG4gXHRocnRpbWVyX3NldHVwKFx1MDAyNmZlcC1cdTAwM2VwZXJvdXRfdGltZXIsIGZlY19wdHBfcHBzX3Blcm91dF9oYW5kbGVyLCBDTE9DS19SRUFMVElNRSxcbiBcdFx0ICAgICAgSFJUSU1FUl9NT0RFX1JFTCk7XG4gXG4mIzQzO1x0ZmVwLVx1MDAzZXBwc19pcnEgPSAtMTtcbiBcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIFwmIzM0O3Bwc1wmIzM0Oyk7XG4gXHRpZiAoaXJxIFx1MDAzYyAwKVxuIFx0XHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpO1xuQEAgLTc4Nyw5ICYjNDM7Nzg4LDEyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0aWYgKGlycSBcdTAwM2U9IDApIHtcbiBcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgaXJxLCBmZWNfcHBzX2ludGVycnVwdCxcbiBcdFx0XHRcdCAgICAgICAwLCBwZGV2LVx1MDAzZW5hbWUsIG5kZXYpO1xuLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuJiM0MztcdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuIFx0XHRcdGRldl93YXJuKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCBcJiMzNDtyZXF1ZXN0IGZvciBwcHMgaXJxIGZhaWxlZCglZClcXG5cJiMzNDssXG4gXHRcdFx0XHQgcmV0KTtcbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGZlcC1cdTAwM2VwcHNfaXJxID0gaXJxO1xuJiM0MztcdFx0fVxuIFx0fVxuIFxuIFx0ZmVwLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZmZXAtXHUwMDNlcHRwX2NhcHMsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbkBAIC04NjEsNiAmIzQzOzg2NSwxMiBAQCB2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFxuIFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmZlcC1cdTAwM2V0aW1lX2tlZXApO1xuIFx0aHJ0aW1lcl9jYW5jZWwoXHUwMDI2ZmVwLVx1MDAzZXBlcm91dF90aW1lcik7XG4mIzQzO1xuJiM0MztcdGlmIChmZXAtXHUwMDNlcHBzX2lycSBcdTAwM2U9IDApIHtcbiYjNDM7XHRcdGRldm1fZnJlZV9pcnEoXHUwMDI2cGRldi1cdTAwM2VkZXYsIGZlcC1cdTAwM2VwcHNfaXJxLCBuZGV2KTtcbiYjNDM7XHRcdGZlcC1cdTAwM2VwcHNfaXJxID0gLTE7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGlmIChmZXAtXHUwMDNlcHRwX2Nsb2NrKVxuIFx0XHRwdHBfY2xvY2tfdW5yZWdpc3RlcihmZXAtXHUwMDNlcHRwX2Nsb2NrKTtcbiB9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDI6NTU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmMzFkY2RjNThhOTliMWNlMDk5MWYzYTA4MDZhYjkzNmJjZjBmMDNlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAwMjo1NTowMiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaAppbmRleCA3MTc2ODAzMTQ2ZjNkLi45NjBiOWYwMWM1MzFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oCkBAIC02NzAsNiAmIzQzOzY3MCw3IEBAIHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlIHsKIAogCS8qIHBwcyAgKi8KIAlpbnQgcHBzX2NoYW5uZWw7CiYjNDM7CWludCBwcHNfaXJxOwogCXVuc2lnbmVkIGludCByZWxvYWRfcGVyaW9kOwogCWludCBwcHNfZW5hYmxlOwogCXVuc2lnbmVkIGludCBuZXh0X2NvdW50ZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCmluZGV4IDc5NGVjNDI3YjBlZTYuLmEyOWM4ZGRiYmYzNGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jCkBAIC01NTAwLDkgJiM0Mzs1NTAwLDkgQEAgZmVjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKIAkJCUVSUl9QVFIocmV0KSk7CiAKIAljYW5jZWxfd29ya19zeW5jKCZhbXA7ZmVwLSZndDt0eF90aW1lb3V0X3dvcmspOwomIzQzOwl1bnJlZ2lzdGVyX25ldGRldihuZGV2KTsKIAlpZiAoZmVwLSZndDtidWZkZXNjX2V4KQogCQlmZWNfcHRwX3N0b3AocGRldik7Ci0JdW5yZWdpc3Rlcl9uZXRkZXYobmRldik7CiAJZmVjX2VuZXRfbWlpX3JlbW92ZShmZXApOwogCWlmIChmZXAtJmd0O3JlZ19waHkpCiAJCXJlZ3VsYXRvcl9kaXNhYmxlKGZlcC0mZ3Q7cmVnX3BoeSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYwppbmRleCA1NjgwMWMyMDA5ZDU5Li41NjdlYTJhNDYxMTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMKQEAgLTc3OCw2ICYjNDM7Nzc4LDcgQEAgdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpCiAJaHJ0aW1lcl9zZXR1cCgmYW1wO2ZlcC0mZ3Q7cGVyb3V0X3RpbWVyLCBmZWNfcHRwX3Bwc19wZXJvdXRfaGFuZGxlciwgQ0xPQ0tfUkVBTFRJTUUsCiAJCSAgICAgIEhSVElNRVJfTU9ERV9SRUwpOwogCiYjNDM7CWZlcC0mZ3Q7cHBzX2lycSA9IC0xOwogCWlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsICYjMzQ7cHBzJiMzNDspOwogCWlmIChpcnEgJmx0OyAwKQogCQlpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpOwpAQCAtNzg3LDkgJiM0Mzs3ODgsMTIgQEAgdm9pZCBmZWNfcHRwX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgaW50IGlycV9pZHgpCiAJaWYgKGlycSAmZ3Q7PSAwKSB7CiAJCXJldCA9IGRldm1fcmVxdWVzdF9pcnEoJmFtcDtwZGV2LSZndDtkZXYsIGlycSwgZmVjX3Bwc19pbnRlcnJ1cHQsCiAJCQkJICAgICAgIDAsIHBkZXYtJmd0O25hbWUsIG5kZXYpOwotCQlpZiAocmV0ICZsdDsgMCkKJiM0MzsJCWlmIChyZXQgJmx0OyAwKSB7CiAJCQlkZXZfd2FybigmYW1wO3BkZXYtJmd0O2RldiwgJiMzNDtyZXF1ZXN0IGZvciBwcHMgaXJxIGZhaWxlZCglZClcbiYjMzQ7LAogCQkJCSByZXQpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlmZXAtJmd0O3Bwc19pcnEgPSBpcnE7CiYjNDM7CQl9CiAJfQogCiAJZmVwLSZndDtwdHBfY2xvY2sgPSBwdHBfY2xvY2tfcmVnaXN0ZXIoJmFtcDtmZXAtJmd0O3B0cF9jYXBzLCAmYW1wO3BkZXYtJmd0O2Rldik7CkBAIC04NjEsNiAmIzQzOzg2NSwxMiBAQCB2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogCiAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7ZmVwLSZndDt0aW1lX2tlZXApOwogCWhydGltZXJfY2FuY2VsKCZhbXA7ZmVwLSZndDtwZXJvdXRfdGltZXIpOwomIzQzOwomIzQzOwlpZiAoZmVwLSZndDtwcHNfaXJxICZndDs9IDApIHsKJiM0MzsJCWRldm1fZnJlZV9pcnEoJmFtcDtwZGV2LSZndDtkZXYsIGZlcC0mZ3Q7cHBzX2lycSwgbmRldik7CiYjNDM7CQlmZXAtJmd0O3Bwc19pcnEgPSAtMTsKJiM0MzsJfQomIzQzOwogCWlmIChmZXAtJmd0O3B0cF9jbG9jaykKIAkJcHRwX2Nsb2NrX3VucmVnaXN0ZXIoZmVwLSZndDtwdHBfY2xvY2spOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNzU3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2ggYW5kIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3MgZnV6ei13b3J0aHkuIE15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHNjb3BlIG91dCB0aGUgYWZmZWN0ZWQgYXJlYXMuIEkgc2VlIGl0IHRvdWNoZXMgdGhlc2UgZmlsZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNgLiBSaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgRnJlZXNjYWxlIEZhc3QgRXRoZXJuZXQgQ29udHJvbGxlciBkcml2ZXIg4oCTIHRoZSBGRUMuIFRoaXMgaXMgdGhlIHBsYXRmb3JtIGRyaXZlciBmb3IgdGhvc2UgaS5NWCBhbmQgQ29sZEZpcmUgU29DcyBmcm9tIE5YUC9GcmVlc2NhbGU7IHNvIEFSTSwgbTY4aywgYW5kIFBvd2VyUEMgYXJjaGl0ZWN0dXJlcywgd2hpY2ggZGVmaW5pdGVseSB3aWRlbnMgdGhlIGltcGFjdC4gTXkgbmV4dCBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgS2NvbmZpZywgZWl0aGVyIHdpdGggYSBxdWljayBgZ3JlcHBlcmAgY2FsbCBvciBqdXN0IGJ5IGJyb3dzaW5nIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWdgIGZpbGUsIHRvIGNvbmZpcm0gdGhlIEZFQyYjMzk7cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIHNlZSBpZiBpdCYjMzk7cyBtb2R1bGFyIG9yIGJ1aWx0LWluLCBhbmQgZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2NvcGUgYW5kIHBvdGVudGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0ZFQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTIxPWlmIE5FVF9WRU5ET1JfRlJFRVNDQUxFXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0yMi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjIzOmNvbmZpZyBGRUNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjI0Olx0dHJpc3RhdGUgXCYjMzQ7RkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTI1LVx0ZGVwZW5kcyBvbiAoTTUyM3ggfHwgTTUyN3ggfHwgTTUyNzIgfHwgTTUyOHggfHwgTTUyMHggfHwgTTUzMnggfHwgXFxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0zOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjM5OmNvbmZpZyBGRUNfTVBDNTJ4eFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NDA6XHR0cmlzdGF0ZSBcJiMzNDtGRUMgTVBDNTJ4eCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTQxLVx0ZGVwZW5kcyBvbiBQUENfTVBDNTJ4eCBcdTAwMjZcdTAwMjYgUFBDX0JFU1RDT01NXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDMtXHRzZWxlY3QgUEhZTElCXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo0NDpcdHNlbGVjdCBQUENfQkVTVENPTU1fRkVDXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00NS1cdGhlbHBcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjUwOmNvbmZpZyBGRUNfTVBDNTJ4eF9NRElPXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo1MTpcdGJvb2wgXCYjMzQ7RkVDIE1QQzUyeHggTURJTyBidXMgZHJpdmVyXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo1MjpcdGRlcGVuZHMgb24gRkVDX01QQzUyeHhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTUzLVx0ZGVmYXVsdCB5XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy01NC1cdGhlbHBcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjU1Olx0ICBUaGUgTVBDNTIwMCYjMzk7cyBGRUMgY2FuIGNvbm5lY3QgdG8gdGhlIEV0aGVybmV0IGVpdGhlciB3aXRoXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy01Ni1cdCAgYW4gZXh0ZXJuYWwgTUlJIFBIWSBjaGlwIG9yIDEwIE1icHMgNy13aXJlIGludGVyZmFjZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNTctXHQgIChNb3Rvcm9sYT8gaW5kdXN0cnkgc3RhbmRhcmQpLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTg6XHQgIElmIHlvdXIgYm9hcmQgdXNlcyBhbiBleHRlcm5hbCBQSFkgY29ubmVjdGVkIHRvIEZFQywgZW5hYmxlIHRoaXMuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy01OS1cdCAgSWYgbm90IHN1cmUsIGVuYWJsZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz05Mz1jb25maWcgR0lBTkZBUlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTEwMS1cdCAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIEdpZ2FiaXQgVFNFQyBvbiB0aGUgTVBDODN4eCwgTVBDODV4eCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjEwMjpcdCAgYW5kIE1QQzg2eHggZmFtaWx5IG9mIGNoaXBzLCB0aGUgZVRTRUMgb24gTFMxMDIxQSBhbmQgdGhlIEZFQ1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMTAzLVx0ICBvbiB0aGUgODU0MC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTYyCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIGBDT05GSUdfRkVDYCBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBzbyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgQ09ORklHX0ZFQ2AuIEl0IHNlZW1zIGxpa2UgYSBjb21tb24gcHJhY3RpY2UgdG8gc3RhcnQgd2l0aCB0aGUgS2NvbmZpZyBmaWxlIHdpdGhpbiB0aGUgcmVsZXZhbnQgZHJpdmVyIGRpcmVjdG9yeS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIHJlbGV2YW50IHNlY3Rpb24sIHNwZWNpZmljYWxseSBsaW5lcyAyMC0zOC4gVGhpcyBzaG91bGQgaWxsdW1pbmF0ZSBhbnkgcHJlcmVxdWlzaXRlcyBvciBjb25kaXRpb25hbCByZWxhdGlvbnNoaXBzIHRoYXQgZ292ZXJuIHdoZXRoZXIgYENPTkZJR19GRUNgIGNhbiBiZSBlbmFibGVkIG9yIG5vdC4gRnJvbSB0aGVyZSwgSSBjYW4gZGV0ZXJtaW5lIHRoZSBicm9hZGVyIGltcGxpY2F0aW9ucyB3aXRoaW4gdGhlIGJ1aWxkIGVudmlyb25tZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIwOlx0XG4gIDIxOlx0aWYgTkVUX1ZFTkRPUl9GUkVFU0NBTEVcbiAgMjI6XHRcbiAgMjM6XHRjb25maWcgRkVDXG4gIDI0Olx0XHR0cmlzdGF0ZSBcJiMzNDtGRUMgZXRoZXJuZXQgY29udHJvbGxlciAob2YgQ29sZEZpcmUgYW5kIHNvbWUgaS5NWCBDUFVzKVwmIzM0O1xuICAyNTpcdFx0ZGVwZW5kcyBvbiAoTTUyM3ggfHwgTTUyN3ggfHwgTTUyNzIgfHwgTTUyOHggfHwgTTUyMHggfHwgTTUzMnggfHwgXFxcbiAgMjY6XHRcdFx0ICAgQVJDSF9NWEMgfHwgQVJDSF9TMzIgfHwgU09DX0lNWDI4IHx8IENPTVBJTEVfVEVTVClcbiAgMjc6XHRcdGRlZmF1bHQgQVJDSF9NWEMgfHwgU09DX0lNWDI4IGlmIEFSTVxuICAyODpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAyOTpcdFx0c2VsZWN0IENSQzMyXG4gIDMwOlx0XHRzZWxlY3QgUEhZTElCXG4gIDMxOlx0XHRzZWxlY3QgRklYRURfUEhZXG4gIDMyOlx0XHRzZWxlY3QgUEFHRV9QT09MXG4gIDMzOlx0XHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcbiAgMzQ6XHRcdGltcGx5IE5FVF9TRUxGVEVTVFNcbiAgMzU6XHRcdGhlbHBcbiAgMzY6XHRcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGJ1aWx0LWluIDEwLzEwMCBGYXN0IGV0aGVybmV0XG4gIDM3Olx0XHQgIGNvbnRyb2xsZXIgb24gc29tZSBNb3Rvcm9sYSBDb2xkRmlyZSBhbmQgRnJlZXNjYWxlIGkuTVgvUzMyIHByb2Nlc3NvcnMuXG4gIDM4Olx0XG4gIDM5Olx0Y29uZmlnIEZFQ19NUEM1Mnh4XG4gIDQwOlx0XHR0cmlzdGF0ZSBcJiMzNDtGRUMgTVBDNTJ4eCBkcml2ZXJcJiMzNDtcbiAgNDE6XHRcdGRlcGVuZHMgb24gUFBDX01QQzUyeHggXHUwMDI2XHUwMDI2IFBQQ19CRVNUQ09NTVxuICA0MjpcdFx0c2VsZWN0IENSQzMyXG4gIDQzOlx0XHRzZWxlY3QgUEhZTElCXG4gIDQ0Olx0XHRzZWxlY3QgUFBDX0JFU1RDT01NX0ZFQ1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1NzAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEZFQyBSZWFjaGFiaWxpdHkqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyAmIzM0O3JlYWNoYWJpbGl0eSYjMzQ7IHByb2JsZW0gYWNjb3JkaW5nIHRvIGVzdGFibGlzaGVkIHByb3RvY29scy4gRmlyc3QsIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlIGlzIGFtZDY0LCB0aGF0JiMzOTtzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCB0aGUgYENPTkZJR19GRUNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGUgZGVwZW5kZW5jaWVzIGFyZSBwcmV0dHkgc3BlY2lmaWM6IE01MjN4LCBNNTI3eCwgTTUyNzIsIE01Mjh4LCBNNTIweCwgTTUzMngsIEFSQ0hfTVhDLCBBUkNIX1MzMiwgU09DX0lNWDI4LCBvciBDT01QSUxFX1RFU1QuIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHByZXR0eSBjbGVhcjsgYEZFQ2AgaXMgcHJvYmFibHkgYSBwbGF0Zm9ybSBkcml2ZXIsIHRpZWQgdG8gc29tZSBGcmVlc2NhbGUgKG9yIG1heWJlIE5YUCBub3c/KSBTb0MgaGFyZHdhcmUuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uIHRob3VnaC4KClRvIG5haWwgaXQgZG93biwgSSYjMzk7bGwgbmVlZCB0byBzZWUgaG93IHRoZSBgZmVjYCBkcml2ZXIgaXMgcmVnaXN0ZXJlZCBhbmQgcHJvYmVkIHdpdGhpbiB0aGUga2VybmVsLiBUaGUgb2J2aW91cyBwbGFjZSB0byBsb29rIHdvdWxkIGJlIHRoZSBzb3VyY2UgY29kZS4gTGV0JiMzOTtzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW5zaWdodHMgSSBuZWVkIHRvIGRlZmluaXRpdmVseSBkZXRlcm1pbmUgaWYgdGhpcyBpcyBwbGF0Zm9ybS1zcGVjaWZpYyBvciBoYXMgYnJvYWRlciBhcHBsaWNhYmlsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8ZmVjX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTU2NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGZlY19wbV9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU2NzE6c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZmVjX2RyaXZlciA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU2NzItXHQuZHJpdmVyXHQ9IHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjgyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTY4Mzptb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGZlY19kcml2ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY4NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMjo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjA2CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNjU3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZFQyBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gRmlyc3QsIEkmIzM5O20gZXhhbWluaW5nIHRoaXMgcGF0Y2ggZm9jdXNpbmcgb24gd2hldGhlciBpdCYjMzk7cyBzdWl0YWJsZSBmb3IgZnV6emluZy4gSSYjMzk7bSBzdGFydGluZyBieSBsb29raW5nIGF0IHRoZSBzcGVjaWZpYyBjb2RlIGNoYW5nZXMuCgpJJiMzOTt2ZSBpZGVudGlmaWVkIHRocmVlIGtleSBtb2RpZmljYXRpb25zOgoKMS4gIEluIGBmZWNfZHJ2X3JlbW92ZWAsIHdlJiMzOTt2ZSBnb3QgdGhlIGB1bnJlZ2lzdGVyX25ldGRldmAgY2FsbCwgYW5kIHRoZSBhZGRlZCBjYW5jZWxsYXRpb24gb2YgdGhlIGB0eF90aW1lb3V0X3dvcmtgLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYHVucmVnaXN0ZXJfbmV0ZGV2YCBpcyBtb3ZpbmcuCjIuICBgZmVjX3B0cF9pbml0YCwgd2l0aCB0aGUgYWRkaXRpb24gb2YgYGZlcC0mZ3Q7cHBzX2lycWAgaW5pdGlhbGl6YXRpb24gdG8gLTEsIGEgY2hlY2sgZm9yIHRoZSBgcmV0YCBmcm9tIGByZXF1ZXN0X2lycWAgYW5kIGFzc2lnbm1lbnQgdG8gYGZlcC0mZ3Q7cHBzX2lycWAuCjMuICBgZmVjX3B0cF9zdG9wYCwgd2hpY2ggbm93IGluY2x1ZGVzIGEgY2hlY2sgZm9yIGBmZXAtJmd0O3Bwc19pcnFgIGFuZCBgZGV2bV9mcmVlX2lycWAuCgpOb3csIGFjY29yZGluZyB0byB0aGUgdHJpYWdlIGd1aWRlbGluZXMsIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhlc2UgY2hhbmdlcyBmYWxsIGludG8gYW55IG9mIHRoZSAqbmVnYXRpdmUqIGNyaXRlcmlhIGZvciBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIGFtIEkgZGVhbGluZyB3aXRoIHVucmVhY2hhYmxlIGhhcmR3YXJlIG9yIGV4ZWN1dGlvbiBwYXRocz8KCkxldCYjMzk7cyBsb29rIGF0IHRoZSBhcmNoaXRlY3R1cmUgYW5kIGhhcmR3YXJlIGNvbnRleHQuIFRoaXMgRkVDIGRyaXZlciBpcyBkZXNpZ25lZCBmb3IgTlhQL0ZyZWVzY2FsZSBpLk1YLCBDb2xkRmlyZSwgYW5kIFMzMiBwcm9jZXNzb3JzIOKAkyB0aG9zZSBhcmUgQVJNL0NvbGRGaXJlLWJhc2VkIFNvQ3MuIEl0JiMzOTtzIG5vdCBzb21ldGhpbmcgeW91JiMzOTtkIHR5cGljYWxseSBmaW5kIHJ1bm5pbmcgb24gYSBzdGFuZGFyZCBhbWQ2NCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gIEluIGZhY3QsIG9uIGFtZDY0LCBpdCYjMzk7cyAqb25seSogZ29pbmcgdG8gYmUgY29tcGlsZWQgaWYgYENPTVBJTEVfVEVTVGAgaXMgZW5hYmxlZCwgYW5kIHRoZXJlIHdvdWxkbiYjMzk7dCBldmVuIGJlIGEgcGxhdGZvcm0gZGV2aWNlIGluc3RhbnRpYXRlZC4gRXNzZW50aWFsbHksIHRoZSAqdmFzdCogbWFqb3JpdHkgb2YgdGhlIHRpbWUsIHRoaXMgY29kZSB3b24mIzM5O3QgcnVuIG9uIHRoZSB0YXJnZXQgZnV6emluZyBlbnZpcm9ubWVudC4KCkV2ZW4gaWYgd2Ugd2VyZSB0byBnZXQgdGhpcyB0aGluZyBwcm9iZWQsIHRoZSBjaGFuZ2VzIGFyZSBjZW50ZXJlZCBhcm91bmQgdGhlIGRyaXZlciYjMzk7cyAqcmVtb3ZlKiBjYWxsYmFjaywgYW5kIHRoZSBgcHRwX2luaXRgIGFuZCBgcHRwX3N0b3BgIGZ1bmN0aW9ucywgY2FsbGVkIGJ5IHJlbW92ZS4gQ3J1Y2lhbGx5LCB0aGUgY29kZSBhZGRlZCB0byB0aGUgYGZlY19wdHBfc3RvcGAgaXMgKm9ubHkqIGNhbGxlZCBmcm9tIGBmZWNfZHJ2X3JlbW92ZWAgZHVyaW5nIGRyaXZlciB0ZWFyZG93bi4KCkdpdmVuIHRoZXNlIG9ic2VydmF0aW9ucywgSSYjMzk7bSBmYWlybHkgY2VydGFpbiBJIGNhbiBjb25jbHVkZSB0aGF0IHRoZXNlIG1vZGlmaWNhdGlvbnMgd2lsbCBub3QgZXhlY3V0ZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4gVGhlc2UgY2hhbmdlcyBhcmUgaW4gYSBmdW5jdGlvbiB0aGF0IGlzIHBhcnQgb2YgYSBkcml2ZXIgdGhhdCBkb2VzIG5vdCBydW4gb24gdGhlIHRhcmdldCBwbGF0Zm9ybS4gVGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBpcyBub3Qgc3VpdGFibGUgZm9yIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAyOjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZlY19wdHBfc3RvcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oPTY5OD12b2lkIGZlY19wdHBfc2F2ZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaDo2OTk6dm9pZCBmZWNfcHRwX3N0b3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNzAwLXZvaWQgZmVjX3B0cF9zdGFydF9jeWNsZWNvdW50ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTUyMDQ9ZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTQ2MC1cdGlmIChmZXAtXHUwMDNlYnVmZGVzY19leClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU0NjE6XHRcdGZlY19wdHBfc3RvcChwZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU0NjItZmFpbGVkX3Jlc2V0OlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTU0ODk9ZmVjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NTA0LVx0aWYgKGZlcC1cdTAwM2VidWZkZXNjX2V4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTUwNTpcdFx0ZmVjX3B0cF9zdG9wKHBkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTUwNi1cdGZlY19lbmV0X21paV9yZW1vdmUoZmVwKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jPTgyOD12b2lkIGZlY19wdHBfcmVzdG9yZV9zdGF0ZShzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSAqZmVwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMtODU3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYzo4NTg6dm9pZCBmZWNfcHRwX3N0b3Aoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMtODU5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDI6NTU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzk2NQoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAyNDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIGF0IHRoaXMgcGF0Y2ggYW5kLCBmcmFua2x5LCBpdCYjMzk7cyBhIGRlYWQgZW5kIGZvciBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUsIGBmZWNfcHRwX3N0b3BgLCBpcyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgdW53aW5kIHBhdGggb2YgYGZlY19wcm9iZSgpYCBhbmQgZHVyaW5nIHRoZSBkcml2ZXImIzM5O3MgcmVtb3ZhbCBwcm9jZXNzIGluIGBmZWNfZHJ2X3JlbW92ZSgpYC4KClRoZSBwcm9ibGVtPyBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBGcmVlc2NhbGUgRkVDIEV0aGVybmV0IGNvbnRyb2xsZXIg4oCTIGEgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBBUk0sIENvbGRGaXJlLCBhbmQgUzMyIFNvQ3MuIFRoaXMgaXMgbm90IHNvbWV0aGluZyBJIGNhbiByZWFjaCBvbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBhbWQ2NCBlbnZpcm9ubWVudHMsIHBsYWluIGFuZCBzaW1wbGUuIFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGhhcmR3YXJlIHRoYXQmIzM5O3Mgbm90IGFjY2Vzc2libGUgb3IgZW11bGF0ZWQgaW4gdGhvc2UgY29udGV4dHMuCgpUaGVyZWZvcmUsIGJlY2F1c2Ugb2YgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGlzb2xhdGVkIG5hdHVyZSBvZiB0aGUgY29kZSBjaGFuZ2VzIHdpdGhpbiBwcm9iZSBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLCBmdXp6aW5nIHRoaXMgcGF0Y2ggd291bGQgYmUgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFRoZSBwcm9iYWJpbGl0eSBvZiB0cmlnZ2VyaW5nIGFueSBtZWFuaW5nZnVsIGV4ZWN1dGlvbiBvZiB0aGUgY2hhbmdlZCBjb2RlIG9uIG91ciB0YXJnZXQgcGxhdGZvcm1zIGlzIHZpcnR1YWxseSB6ZXJvLiBUaGlzIGlzIGEgdmVyeSBjbGVhciBjYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMjo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBGcmVlc2NhbGUgRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgZHJpdmVyIChmZWNfcHRwX2luaXQsIGZlY19wdHBfc3RvcCwgYW5kIGZlY19kcnZfcmVtb3ZlKSwgd2hpY2ggaXMgYSBwbGF0Zm9ybSBkcml2ZXIgZm9yIE5YUC9GcmVlc2NhbGUgQ29sZEZpcmUgYW5kIGkuTVggU29Dcy4gVGhlIGhhcmR3YXJlIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBhbWQ2NCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIG1ha2luZyB0aGlzIGNvZGUgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlLiBGdXJ0aGVybW9yZSwgdGhlIGNoYW5nZXMgYXJlIHJlc3RyaWN0ZWQgdG8gcHJvYmUgYW5kIGRyaXZlciB0ZWFyZG93bi9yZW1vdmUgcGF0aHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEZFQyBldGhlcm5ldCBjb250cm9sbGVyIGRyaXZlciAoZmVjX3B0cF9pbml0LCBmZWNfcHRwX3N0b3AsIGFuZCBmZWNfZHJ2X3JlbW92ZSksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBOWFAvRnJlZXNjYWxlIENvbGRGaXJlIGFuZCBpLk1YIFNvQ3MuIFRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhpcyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSByZXN0cmljdGVkIHRvIHByb2JlIGFuZCBkcml2ZXIgdGVhcmRvd24vcmVtb3ZlIHBhdGhzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDI6NTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjAzLjQ5OTQyNTgwNloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0NzY2MDIwNzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjAzLjQ5OTQzMTYxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyNTIxNjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZjMxZGNkYzU4YTk5YjFjZTA5OTFmM2EwODA2YWI5MzZiY2YwZjAzZVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVHVlIFNlcCA4IDAyOjU1OjAyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaCBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaFxcbmluZGV4IDcxNzY4MDMxNDZmM2QuLjk2MGI5ZjAxYzUzMWIgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oXFxuQEAgLTY3MCw2ICs2NzAsNyBAQCBzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSB7XFxuIFxcbiBcXHQvKiBwcHMgICovXFxuIFxcdGludCBwcHNfY2hhbm5lbDtcXG4rXFx0aW50IHBwc19pcnE7XFxuIFxcdHVuc2lnbmVkIGludCByZWxvYWRfcGVyaW9kO1xcbiBcXHRpbnQgcHBzX2VuYWJsZTtcXG4gXFx0dW5zaWduZWQgaW50IG5leHRfY291bnRlcjtcXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xcbmluZGV4IDc5NGVjNDI3YjBlZTYuLmEyOWM4ZGRiYmYzNGQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xcbkBAIC01NTAwLDkgKzU1MDAsOSBAQCBmZWNfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXHRcXHRcXHRFUlJfUFRSKHJldCkpO1xcbiBcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2ZmVwLVxcdTAwM2V0eF90aW1lb3V0X3dvcmspO1xcbitcXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gXFx0aWYgKGZlcC1cXHUwMDNlYnVmZGVzY19leClcXG4gXFx0XFx0ZmVjX3B0cF9zdG9wKHBkZXYpO1xcbi1cXHR1bnJlZ2lzdGVyX25ldGRldihuZGV2KTtcXG4gXFx0ZmVjX2VuZXRfbWlpX3JlbW92ZShmZXApO1xcbiBcXHRpZiAoZmVwLVxcdTAwM2VyZWdfcGh5KVxcbiBcXHRcXHRyZWd1bGF0b3JfZGlzYWJsZShmZXAtXFx1MDAzZXJlZ19waHkpO1xcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU2N2VhMmE0NjExNzMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcXG5AQCAtNzc4LDYgKzc3OCw3IEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxcbiBcXHRocnRpbWVyX3NldHVwKFxcdTAwMjZmZXAtXFx1MDAzZXBlcm91dF90aW1lciwgZmVjX3B0cF9wcHNfcGVyb3V0X2hhbmRsZXIsIENMT0NLX1JFQUxUSU1FLFxcbiBcXHRcXHQgICAgICBIUlRJTUVSX01PREVfUkVMKTtcXG4gXFxuK1xcdGZlcC1cXHUwMDNlcHBzX2lycSA9IC0xO1xcbiBcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZV9vcHRpb25hbChwZGV2LCBcXFwicHBzXFxcIik7XFxuIFxcdGlmIChpcnEgXFx1MDAzYyAwKVxcbiBcXHRcXHRpcnEgPSBwbGF0Zm9ybV9nZXRfaXJxX29wdGlvbmFsKHBkZXYsIGlycV9pZHgpO1xcbkBAIC03ODcsOSArNzg4LDEyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxcbiBcXHRpZiAoaXJxIFxcdTAwM2U9IDApIHtcXG4gXFx0XFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBpcnEsIGZlY19wcHNfaW50ZXJydXB0LFxcbiBcXHRcXHRcXHRcXHQgICAgICAgMCwgcGRldi1cXHUwMDNlbmFtZSwgbmRldik7XFxuLVxcdFxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbitcXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRcXHRkZXZfd2FybihcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBcXFwicmVxdWVzdCBmb3IgcHBzIGlycSBmYWlsZWQoJWQpXFxcXG5cXFwiLFxcbiBcXHRcXHRcXHRcXHQgcmV0KTtcXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZmVwLVxcdTAwM2VwcHNfaXJxID0gaXJxO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdGZlcC1cXHUwMDNlcHRwX2Nsb2NrID0gcHRwX2Nsb2NrX3JlZ2lzdGVyKFxcdTAwMjZmZXAtXFx1MDAzZXB0cF9jYXBzLCBcXHUwMDI2cGRldi1cXHUwMDNlZGV2KTtcXG5AQCAtODYxLDYgKzg2NSwxMiBAQCB2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbiBcXG4gXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZmZXAtXFx1MDAzZXRpbWVfa2VlcCk7XFxuIFxcdGhydGltZXJfY2FuY2VsKFxcdTAwMjZmZXAtXFx1MDAzZXBlcm91dF90aW1lcik7XFxuK1xcbitcXHRpZiAoZmVwLVxcdTAwM2VwcHNfaXJxIFxcdTAwM2U9IDApIHtcXG4rXFx0XFx0ZGV2bV9mcmVlX2lycShcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCBmZXAtXFx1MDAzZXBwc19pcnEsIG5kZXYpO1xcbitcXHRcXHRmZXAtXFx1MDAzZXBwc19pcnEgPSAtMTtcXG4rXFx0fVxcbitcXG4gXFx0aWYgKGZlcC1cXHUwMDNlcHRwX2Nsb2NrKVxcbiBcXHRcXHRwdHBfY2xvY2tfdW5yZWdpc3RlcihmZXAtXFx1MDAzZXB0cF9jbG9jayk7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MDQuMDcyNTg4MjE5WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjoyNDE5Mjg0NjQxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZjMxZGNkYzU4YTk5YjFjZTA5OTFmM2EwODA2YWI5MzZiY2YwZjAzZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDI6NTU6MDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmggYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbmluZGV4IDcxNzY4MDMxNDZmM2QuLjk2MGI5ZjAxYzUzMWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaFxuQEAgLTY3MCw2ICs2NzAsNyBAQCBzdHJ1Y3QgZmVjX2VuZXRfcHJpdmF0ZSB7XG4gXG4gXHQvKiBwcHMgICovXG4gXHRpbnQgcHBzX2NoYW5uZWw7XG4rXHRpbnQgcHBzX2lycTtcbiBcdHVuc2lnbmVkIGludCByZWxvYWRfcGVyaW9kO1xuIFx0aW50IHBwc19lbmFibGU7XG4gXHR1bnNpZ25lZCBpbnQgbmV4dF9jb3VudGVyO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbmluZGV4IDc5NGVjNDI3YjBlZTYuLmEyOWM4ZGRiYmYzNGQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNcbkBAIC01NTAwLDkgKzU1MDAsOSBAQCBmZWNfZHJ2X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuIFx0XHRcdEVSUl9QVFIocmV0KSk7XG4gXG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmZlcC1cdTAwM2V0eF90aW1lb3V0X3dvcmspO1xuK1x0dW5yZWdpc3Rlcl9uZXRkZXYobmRldik7XG4gXHRpZiAoZmVwLVx1MDAzZWJ1ZmRlc2NfZXgpXG4gXHRcdGZlY19wdHBfc3RvcChwZGV2KTtcbi1cdHVucmVnaXN0ZXJfbmV0ZGV2KG5kZXYpO1xuIFx0ZmVjX2VuZXRfbWlpX3JlbW92ZShmZXApO1xuIFx0aWYgKGZlcC1cdTAwM2VyZWdfcGh5KVxuIFx0XHRyZWd1bGF0b3JfZGlzYWJsZShmZXAtXHUwMDNlcmVnX3BoeSk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19wdHAuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNcbmluZGV4IDU2ODAxYzIwMDlkNTkuLjU2N2VhMmE0NjExNzMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jXG5AQCAtNzc4LDYgKzc3OCw3IEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0aHJ0aW1lcl9zZXR1cChcdTAwMjZmZXAtXHUwMDNlcGVyb3V0X3RpbWVyLCBmZWNfcHRwX3Bwc19wZXJvdXRfaGFuZGxlciwgQ0xPQ0tfUkVBTFRJTUUsXG4gXHRcdCAgICAgIEhSVElNRVJfTU9ERV9SRUwpO1xuIFxuK1x0ZmVwLVx1MDAzZXBwc19pcnEgPSAtMTtcbiBcdGlycSA9IHBsYXRmb3JtX2dldF9pcnFfYnluYW1lX29wdGlvbmFsKHBkZXYsIFwicHBzXCIpO1xuIFx0aWYgKGlycSBcdTAwM2MgMClcbiBcdFx0aXJxID0gcGxhdGZvcm1fZ2V0X2lycV9vcHRpb25hbChwZGV2LCBpcnFfaWR4KTtcbkBAIC03ODcsOSArNzg4LDEyIEBAIHZvaWQgZmVjX3B0cF9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIGludCBpcnFfaWR4KVxuIFx0aWYgKGlycSBcdTAwM2U9IDApIHtcbiBcdFx0cmV0ID0gZGV2bV9yZXF1ZXN0X2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgaXJxLCBmZWNfcHBzX2ludGVycnVwdCxcbiBcdFx0XHRcdCAgICAgICAwLCBwZGV2LVx1MDAzZW5hbWUsIG5kZXYpO1xuLVx0XHRpZiAocmV0IFx1MDAzYyAwKVxuK1x0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdFx0ZGV2X3dhcm4oXHUwMDI2cGRldi1cdTAwM2VkZXYsIFwicmVxdWVzdCBmb3IgcHBzIGlycSBmYWlsZWQoJWQpXFxuXCIsXG4gXHRcdFx0XHQgcmV0KTtcbitcdFx0fSBlbHNlIHtcbitcdFx0XHRmZXAtXHUwMDNlcHBzX2lycSA9IGlycTtcbitcdFx0fVxuIFx0fVxuIFxuIFx0ZmVwLVx1MDAzZXB0cF9jbG9jayA9IHB0cF9jbG9ja19yZWdpc3RlcihcdTAwMjZmZXAtXHUwMDNlcHRwX2NhcHMsIFx1MDAyNnBkZXYtXHUwMDNlZGV2KTtcbkBAIC04NjEsNiArODY1LDEyIEBAIHZvaWQgZmVjX3B0cF9zdG9wKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4gXG4gXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2ZmVwLVx1MDAzZXRpbWVfa2VlcCk7XG4gXHRocnRpbWVyX2NhbmNlbChcdTAwMjZmZXAtXHUwMDNlcGVyb3V0X3RpbWVyKTtcbitcbitcdGlmIChmZXAtXHUwMDNlcHBzX2lycSBcdTAwM2U9IDApIHtcbitcdFx0ZGV2bV9mcmVlX2lycShcdTAwMjZwZGV2LVx1MDAzZWRldiwgZmVwLVx1MDAzZXBwc19pcnEsIG5kZXYpO1xuK1x0XHRmZXAtXHUwMDNlcHBzX2lycSA9IC0xO1xuK1x0fVxuK1xuIFx0aWYgKGZlcC1cdTAwM2VwdHBfY2xvY2spXG4gXHRcdHB0cF9jbG9ja191bnJlZ2lzdGVyKGZlcC1cdTAwM2VwdHBfY2xvY2spO1xuIH1cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjA0LjA3MjU4OTk0OVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjEwMDA5MDg1Mzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgRmVhc2liaWxpdHkgQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIHBhdGNoIGFuZCBmaWd1cmUgb3V0IGlmIGl0J3MgZnV6ei13b3J0aHkuIE15IGZpcnN0IHN0ZXAgaXMgYWx3YXlzIHRvIHNjb3BlIG91dCB0aGUgYWZmZWN0ZWQgYXJlYXMuIEkgc2VlIGl0IHRvdWNoZXMgdGhlc2UgZmlsZXM6IGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmhgLCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmNgLCBhbmQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmNgLiBSaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIHRoZSBGcmVlc2NhbGUgRmFzdCBFdGhlcm5ldCBDb250cm9sbGVyIGRyaXZlciDigJMgdGhlIEZFQy4gVGhpcyBpcyB0aGUgcGxhdGZvcm0gZHJpdmVyIGZvciB0aG9zZSBpLk1YIGFuZCBDb2xkRmlyZSBTb0NzIGZyb20gTlhQL0ZyZWVzY2FsZTsgc28gQVJNLCBtNjhrLCBhbmQgUG93ZXJQQyBhcmNoaXRlY3R1cmVzLCB3aGljaCBkZWZpbml0ZWx5IHdpZGVucyB0aGUgaW1wYWN0LiBNeSBuZXh0IGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBLY29uZmlnLCBlaXRoZXIgd2l0aCBhIHF1aWNrIGBncmVwcGVyYCBjYWxsIG9yIGp1c3QgYnkgYnJvd3NpbmcgdGhlIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ2AgZmlsZSwgdG8gY29uZmlybSB0aGUgRkVDJ3MgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBzZWUgaWYgaXQncyBtb2R1bGFyIG9yIGJ1aWx0LWluLCBhbmQgZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGUgc2NvcGUgYW5kIHBvdGVudGlhbCB0YXJnZXRzIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNzU3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MTQuMDgxNjc3NDU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NjExOTc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkZFQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZz0yMT1pZiBORVRfVkVORE9SX0ZSRUVTQ0FMRVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjIzOmNvbmZpZyBGRUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzoyNDpcXHR0cmlzdGF0ZSBcXFwiRkVDIGV0aGVybmV0IGNvbnRyb2xsZXIgKG9mIENvbGRGaXJlIGFuZCBzb21lIGkuTVggQ1BVcylcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMjUtXFx0ZGVwZW5kcyBvbiAoTTUyM3ggfHwgTTUyN3ggfHwgTTUyNzIgfHwgTTUyOHggfHwgTTUyMHggfHwgTTUzMnggfHwgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctMzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6Mzk6Y29uZmlnIEZFQ19NUEM1Mnh4XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NDA6XFx0dHJpc3RhdGUgXFxcIkZFQyBNUEM1Mnh4IGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy00MS1cXHRkZXBlbmRzIG9uIFBQQ19NUEM1Mnh4IFxcdTAwMjZcXHUwMDI2IFBQQ19CRVNUQ09NTVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDMtXFx0c2VsZWN0IFBIWUxJQlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjQ0OlxcdHNlbGVjdCBQUENfQkVTVENPTU1fRkVDXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWctNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTA6Y29uZmlnIEZFQ19NUEM1Mnh4X01ESU9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo1MTpcXHRib29sIFxcXCJGRUMgTVBDNTJ4eCBNRElPIGJ1cyBkcml2ZXJcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTI6XFx0ZGVwZW5kcyBvbiBGRUNfTVBDNTJ4eFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTUzLVxcdGRlZmF1bHQgeVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTU0LVxcdGhlbHBcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZzo1NTpcXHQgIFRoZSBNUEM1MjAwJ3MgRkVDIGNhbiBjb25uZWN0IHRvIHRoZSBFdGhlcm5ldCBlaXRoZXIgd2l0aFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTU2LVxcdCAgYW4gZXh0ZXJuYWwgTUlJIFBIWSBjaGlwIG9yIDEwIE1icHMgNy13aXJlIGludGVyZmFjZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTU3LVxcdCAgKE1vdG9yb2xhPyBpbmR1c3RyeSBzdGFuZGFyZCkuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL0tjb25maWc6NTg6XFx0ICBJZiB5b3VyIGJvYXJkIHVzZXMgYW4gZXh0ZXJuYWwgUEhZIGNvbm5lY3RlZCB0byBGRUMsIGVuYWJsZSB0aGlzLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnLTU5LVxcdCAgSWYgbm90IHN1cmUsIGVuYWJsZS5cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnPTkzPWNvbmZpZyBHSUFORkFSXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0xMDEtXFx0ICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgR2lnYWJpdCBUU0VDIG9uIHRoZSBNUEM4M3h4LCBNUEM4NXh4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnOjEwMjpcXHQgIGFuZCBNUEM4Nnh4IGZhbWlseSBvZiBjaGlwcywgdGhlIGVUU0VDIG9uIExTMTAyMUEgYW5kIHRoZSBGRUNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZy0xMDMtXFx0ICBvbiB0aGUgODU0MC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MTQuMTI4Mjk0MjkxWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzUzMjE0OTAzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIGBDT05GSUdfRkVDYCBEZXBlbmRlbmN5IExhbmRzY2FwZSoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgZm9yIGBDT05GSUdfRkVDYC4gSXQgc2VlbXMgbGlrZSBhIGNvbW1vbiBwcmFjdGljZSB0byBzdGFydCB3aXRoIHRoZSBLY29uZmlnIGZpbGUgd2l0aGluIHRoZSByZWxldmFudCBkcml2ZXIgZGlyZWN0b3J5LiBMZXQncyBzdGFydCB3aXRoIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvS2NvbmZpZ2AgYW5kIHRha2UgYSBsb29rIGF0IHRoZSByZWxldmFudCBzZWN0aW9uLCBzcGVjaWZpY2FsbHkgbGluZXMgMjAtMzguIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgYW55IHByZXJlcXVpc2l0ZXMgb3IgY29uZGl0aW9uYWwgcmVsYXRpb25zaGlwcyB0aGF0IGdvdmVybiB3aGV0aGVyIGBDT05GSUdfRkVDYCBjYW4gYmUgZW5hYmxlZCBvciBub3QuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSB0aGUgYnJvYWRlciBpbXBsaWNhdGlvbnMgd2l0aGluIHRoZSBidWlsZCBlbnZpcm9ubWVudC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk2MiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjE3LjY2MDQ0NTE0OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwLFxuICBcIkxpbmVDb3VudFwiOiAyNVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIwOlxcdFxcbiAgMjE6XFx0aWYgTkVUX1ZFTkRPUl9GUkVFU0NBTEVcXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIEZFQ1xcbiAgMjQ6XFx0XFx0dHJpc3RhdGUgXFxcIkZFQyBldGhlcm5ldCBjb250cm9sbGVyIChvZiBDb2xkRmlyZSBhbmQgc29tZSBpLk1YIENQVXMpXFxcIlxcbiAgMjU6XFx0XFx0ZGVwZW5kcyBvbiAoTTUyM3ggfHwgTTUyN3ggfHwgTTUyNzIgfHwgTTUyOHggfHwgTTUyMHggfHwgTTUzMnggfHwgXFxcXFxcbiAgMjY6XFx0XFx0XFx0ICAgQVJDSF9NWEMgfHwgQVJDSF9TMzIgfHwgU09DX0lNWDI4IHx8IENPTVBJTEVfVEVTVClcXG4gIDI3OlxcdFxcdGRlZmF1bHQgQVJDSF9NWEMgfHwgU09DX0lNWDI4IGlmIEFSTVxcbiAgMjg6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxcbiAgMjk6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAzMDpcXHRcXHRzZWxlY3QgUEhZTElCXFxuICAzMTpcXHRcXHRzZWxlY3QgRklYRURfUEhZXFxuICAzMjpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAzMzpcXHRcXHRpbXBseSBQQUdFX1BPT0xfU1RBVFNcXG4gIDM0OlxcdFxcdGltcGx5IE5FVF9TRUxGVEVTVFNcXG4gIDM1OlxcdFxcdGhlbHBcXG4gIDM2OlxcdFxcdCAgU2F5IFkgaGVyZSBpZiB5b3Ugd2FudCB0byB1c2UgdGhlIGJ1aWx0LWluIDEwLzEwMCBGYXN0IGV0aGVybmV0XFxuICAzNzpcXHRcXHQgIGNvbnRyb2xsZXIgb24gc29tZSBNb3Rvcm9sYSBDb2xkRmlyZSBhbmQgRnJlZXNjYWxlIGkuTVgvUzMyIHByb2Nlc3NvcnMuXFxuICAzODpcXHRcXG4gIDM5OlxcdGNvbmZpZyBGRUNfTVBDNTJ4eFxcbiAgNDA6XFx0XFx0dHJpc3RhdGUgXFxcIkZFQyBNUEM1Mnh4IGRyaXZlclxcXCJcXG4gIDQxOlxcdFxcdGRlcGVuZHMgb24gUFBDX01QQzUyeHggXFx1MDAyNlxcdTAwMjYgUFBDX0JFU1RDT01NXFxuICA0MjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gIDQzOlxcdFxcdHNlbGVjdCBQSFlMSUJcXG4gIDQ0OlxcdFxcdHNlbGVjdCBQUENfQkVTVENPTU1fRkVDXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjE3LjY2MDUwNTI1OVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxOTEyNzMzMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEZFQyBSZWFjaGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayBkb3duIHRoaXMgXCJyZWFjaGFiaWxpdHlcIiBwcm9ibGVtIGFjY29yZGluZyB0byBlc3RhYmxpc2hlZCBwcm90b2NvbHMuIEZpcnN0LCB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSBpcyBhbWQ2NCwgdGhhdCdzIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCB0aGUgYENPTkZJR19GRUNgIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBUaGUgZGVwZW5kZW5jaWVzIGFyZSBwcmV0dHkgc3BlY2lmaWM6IE01MjN4LCBNNTI3eCwgTTUyNzIsIE01Mjh4LCBNNTIweCwgTTUzMngsIEFSQ0hfTVhDLCBBUkNIX1MzMiwgU09DX0lNWDI4LCBvciBDT01QSUxFX1RFU1QuIFRoZSBpbXBsaWNhdGlvbiBoZXJlIGlzIHByZXR0eSBjbGVhcjsgYEZFQ2AgaXMgcHJvYmFibHkgYSBwbGF0Zm9ybSBkcml2ZXIsIHRpZWQgdG8gc29tZSBGcmVlc2NhbGUgKG9yIG1heWJlIE5YUCBub3c/KSBTb0MgaGFyZHdhcmUuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgc3VzcGljaW9uIHRob3VnaC5cblxuVG8gbmFpbCBpdCBkb3duLCBJJ2xsIG5lZWQgdG8gc2VlIGhvdyB0aGUgYGZlY2AgZHJpdmVyIGlzIHJlZ2lzdGVyZWQgYW5kIHByb2JlZCB3aXRoaW4gdGhlIGtlcm5lbC4gVGhlIG9idmlvdXMgcGxhY2UgdG8gbG9vayB3b3VsZCBiZSB0aGUgc291cmNlIGNvZGUuIExldCdzIHN0YXJ0IHdpdGggYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSB0aGUgaW5zaWdodHMgSSBuZWVkIHRvIGRlZmluaXRpdmVseSBkZXRlcm1pbmUgaWYgdGhpcyBpcyBwbGF0Zm9ybS1zcGVjaWZpYyBvciBoYXMgYnJvYWRlciBhcHBsaWNhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTcwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MTkuODUxNzgwNjIzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NTA0MDE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wbGF0Zm9ybV9kcml2ZXJ8ZmVjX2RyaXZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz01NjY2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBmZWNfcG1fb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1NjcxOnN0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIGZlY19kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTY3Mi1cXHQuZHJpdmVyXFx0PSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NjgyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjU2ODM6bW9kdWxlX3BsYXRmb3JtX2RyaXZlcihmZWNfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01Njg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMjo1NToxOS45MDEyODk0ODFaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1MTYwMjk1MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIEZFQyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZpcnN0LCBJJ20gZXhhbWluaW5nIHRoaXMgcGF0Y2ggZm9jdXNpbmcgb24gd2hldGhlciBpdCdzIHN1aXRhYmxlIGZvciBmdXp6aW5nLiBJJ20gc3RhcnRpbmcgYnkgbG9va2luZyBhdCB0aGUgc3BlY2lmaWMgY29kZSBjaGFuZ2VzLlxuXG5JJ3ZlIGlkZW50aWZpZWQgdGhyZWUga2V5IG1vZGlmaWNhdGlvbnM6XG5cbjEuICBJbiBgZmVjX2Rydl9yZW1vdmVgLCB3ZSd2ZSBnb3QgdGhlIGB1bnJlZ2lzdGVyX25ldGRldmAgY2FsbCwgYW5kIHRoZSBhZGRlZCBjYW5jZWxsYXRpb24gb2YgdGhlIGB0eF90aW1lb3V0X3dvcmtgLiBUaGUgaW50ZXJlc3RpbmcgcGFydCBpcyB0aGUgYHVucmVnaXN0ZXJfbmV0ZGV2YCBpcyBtb3ZpbmcuXG4yLiAgYGZlY19wdHBfaW5pdGAsIHdpdGggdGhlIGFkZGl0aW9uIG9mIGBmZXAtXHUwMDNlcHBzX2lycWAgaW5pdGlhbGl6YXRpb24gdG8gLTEsIGEgY2hlY2sgZm9yIHRoZSBgcmV0YCBmcm9tIGByZXF1ZXN0X2lycWAgYW5kIGFzc2lnbm1lbnQgdG8gYGZlcC1cdTAwM2VwcHNfaXJxYC5cbjMuICBgZmVjX3B0cF9zdG9wYCwgd2hpY2ggbm93IGluY2x1ZGVzIGEgY2hlY2sgZm9yIGBmZXAtXHUwMDNlcHBzX2lycWAgYW5kIGBkZXZtX2ZyZWVfaXJxYC5cblxuTm93LCBhY2NvcmRpbmcgdG8gdGhlIHRyaWFnZSBndWlkZWxpbmVzLCBJIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgZmFsbCBpbnRvIGFueSBvZiB0aGUgKm5lZ2F0aXZlKiBjcml0ZXJpYSBmb3IgZnV6emluZy4gU3BlY2lmaWNhbGx5LCBhbSBJIGRlYWxpbmcgd2l0aCB1bnJlYWNoYWJsZSBoYXJkd2FyZSBvciBleGVjdXRpb24gcGF0aHM/XG5cbkxldCdzIGxvb2sgYXQgdGhlIGFyY2hpdGVjdHVyZSBhbmQgaGFyZHdhcmUgY29udGV4dC4gVGhpcyBGRUMgZHJpdmVyIGlzIGRlc2lnbmVkIGZvciBOWFAvRnJlZXNjYWxlIGkuTVgsIENvbGRGaXJlLCBhbmQgUzMyIHByb2Nlc3NvcnMg4oCTIHRob3NlIGFyZSBBUk0vQ29sZEZpcmUtYmFzZWQgU29Dcy4gSXQncyBub3Qgc29tZXRoaW5nIHlvdSdkIHR5cGljYWxseSBmaW5kIHJ1bm5pbmcgb24gYSBzdGFuZGFyZCBhbWQ2NCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gIEluIGZhY3QsIG9uIGFtZDY0LCBpdCdzICpvbmx5KiBnb2luZyB0byBiZSBjb21waWxlZCBpZiBgQ09NUElMRV9URVNUYCBpcyBlbmFibGVkLCBhbmQgdGhlcmUgd291bGRuJ3QgZXZlbiBiZSBhIHBsYXRmb3JtIGRldmljZSBpbnN0YW50aWF0ZWQuIEVzc2VudGlhbGx5LCB0aGUgKnZhc3QqIG1ham9yaXR5IG9mIHRoZSB0aW1lLCB0aGlzIGNvZGUgd29uJ3QgcnVuIG9uIHRoZSB0YXJnZXQgZnV6emluZyBlbnZpcm9ubWVudC5cblxuRXZlbiBpZiB3ZSB3ZXJlIHRvIGdldCB0aGlzIHRoaW5nIHByb2JlZCwgdGhlIGNoYW5nZXMgYXJlIGNlbnRlcmVkIGFyb3VuZCB0aGUgZHJpdmVyJ3MgKnJlbW92ZSogY2FsbGJhY2ssIGFuZCB0aGUgYHB0cF9pbml0YCBhbmQgYHB0cF9zdG9wYCBmdW5jdGlvbnMsIGNhbGxlZCBieSByZW1vdmUuIENydWNpYWxseSwgdGhlIGNvZGUgYWRkZWQgdG8gdGhlIGBmZWNfcHRwX3N0b3BgIGlzICpvbmx5KiBjYWxsZWQgZnJvbSBgZmVjX2Rydl9yZW1vdmVgIGR1cmluZyBkcml2ZXIgdGVhcmRvd24uXG5cbkdpdmVuIHRoZXNlIG9ic2VydmF0aW9ucywgSSdtIGZhaXJseSBjZXJ0YWluIEkgY2FuIGNvbmNsdWRlIHRoYXQgdGhlc2UgbW9kaWZpY2F0aW9ucyB3aWxsIG5vdCBleGVjdXRlIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzLiBUaGVzZSBjaGFuZ2VzIGFyZSBpbiBhIGZ1bmN0aW9uIHRoYXQgaXMgcGFydCBvZiBhIGRyaXZlciB0aGF0IGRvZXMgbm90IHJ1biBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtLiBUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGlzIG5vdCBzdWl0YWJsZSBmb3IgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIwNiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMjo1NToyNS4wNjE1ODgxNzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDcwODM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZlY19wdHBfc3RvcFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWMuaD02OTg9dm9pZCBmZWNfcHRwX3NhdmVfc3RhdGUoc3RydWN0IGZlY19lbmV0X3ByaXZhdGUgKmZlcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlYy5oOjY5OTp2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjLmgtNzAwLXZvaWQgZmVjX3B0cF9zdGFydF9jeWNsZWNvdW50ZXIoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NTIwND1mZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU0NjAtXFx0aWYgKGZlcC1cXHUwMDNlYnVmZGVzY19leClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1NDYxOlxcdFxcdGZlY19wdHBfc3RvcChwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NDYyLWZhaWxlZF9yZXNldDpcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTU0ODk9ZmVjX2Rydl9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTU1MDQtXFx0aWYgKGZlcC1cXHUwMDNlYnVmZGVzY19leClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1NTA1OlxcdFxcdGZlY19wdHBfc3RvcChwZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01NTA2LVxcdGZlY19lbmV0X21paV9yZW1vdmUoZmVwKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmM9ODI4PXZvaWQgZmVjX3B0cF9yZXN0b3JlX3N0YXRlKHN0cnVjdCBmZWNfZW5ldF9wcml2YXRlICpmZXApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jLTg1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX3B0cC5jOjg1ODp2b2lkIGZlY19wdHBfc3RvcChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfcHRwLmMtODU5LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDI6NTU6MjUuMTA4MDgzNDE1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjMxNTczMjcxMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgZnJhbmtseSwgaXQncyBhIGRlYWQgZW5kIGZvciBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9uIGhlcmUsIGBmZWNfcHRwX3N0b3BgLCBpcyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgdW53aW5kIHBhdGggb2YgYGZlY19wcm9iZSgpYCBhbmQgZHVyaW5nIHRoZSBkcml2ZXIncyByZW1vdmFsIHByb2Nlc3MgaW4gYGZlY19kcnZfcmVtb3ZlKClgLlxuXG5UaGUgcHJvYmxlbT8gV2UncmUgZGVhbGluZyB3aXRoIHRoZSBGcmVlc2NhbGUgRkVDIEV0aGVybmV0IGNvbnRyb2xsZXIg4oCTIGEgcGxhdGZvcm0gZHJpdmVyIGRlc2lnbmVkIGZvciBzcGVjaWZpYyBBUk0sIENvbGRGaXJlLCBhbmQgUzMyIFNvQ3MuIFRoaXMgaXMgbm90IHNvbWV0aGluZyBJIGNhbiByZWFjaCBvbiBzdGFuZGFyZCBRRU1VIG9yIEdvb2dsZSBDb21wdXRlIEVuZ2luZSBhbWQ2NCBlbnZpcm9ubWVudHMsIHBsYWluIGFuZCBzaW1wbGUuIFdlJ3JlIHRhbGtpbmcgYWJvdXQgaGFyZHdhcmUgdGhhdCdzIG5vdCBhY2Nlc3NpYmxlIG9yIGVtdWxhdGVkIGluIHRob3NlIGNvbnRleHRzLlxuXG5UaGVyZWZvcmUsIGJlY2F1c2Ugb2YgdGhlIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcyBhbmQgdGhlIGlzb2xhdGVkIG5hdHVyZSBvZiB0aGUgY29kZSBjaGFuZ2VzIHdpdGhpbiBwcm9iZSBhbmQgdGVhcmRvd24gZnVuY3Rpb25zLCBmdXp6aW5nIHRoaXMgcGF0Y2ggd291bGQgYmUgYSBjb21wbGV0ZSB3YXN0ZSBvZiByZXNvdXJjZXMuIFRoZSBwcm9iYWJpbGl0eSBvZiB0cmlnZ2VyaW5nIGFueSBtZWFuaW5nZnVsIGV4ZWN1dGlvbiBvZiB0aGUgY2hhbmdlZCBjb2RlIG9uIG91ciB0YXJnZXQgcGxhdGZvcm1zIGlzIHZpcnR1YWxseSB6ZXJvLiBUaGlzIGlzIGEgdmVyeSBjbGVhciBjYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTY1LCJPdXRwdXRUb2tlbnMiOjEyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0MSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMjo1NToyOC4yNjU0MTMxNjFaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDE4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgRnJlZXNjYWxlIEZFQyBldGhlcm5ldCBjb250cm9sbGVyIGRyaXZlciAoZmVjX3B0cF9pbml0LCBmZWNfcHRwX3N0b3AsIGFuZCBmZWNfZHJ2X3JlbW92ZSksIHdoaWNoIGlzIGEgcGxhdGZvcm0gZHJpdmVyIGZvciBOWFAvRnJlZXNjYWxlIENvbGRGaXJlIGFuZCBpLk1YIFNvQ3MuIFRoZSBoYXJkd2FyZSBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgYW1kNjQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBtYWtpbmcgdGhpcyBjb2RlIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZS4gRnVydGhlcm1vcmUsIHRoZSBjaGFuZ2VzIGFyZSByZXN0cmljdGVkIHRvIHByb2JlIGFuZCBkcml2ZXIgdGVhcmRvd24vcmVtb3ZlIHBhdGhzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEZyZWVzY2FsZSBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBkcml2ZXIgKGZlY19wdHBfaW5pdCwgZmVjX3B0cF9zdG9wLCBhbmQgZmVjX2Rydl9yZW1vdmUpLCB3aGljaCBpcyBhIHBsYXRmb3JtIGRyaXZlciBmb3IgTlhQL0ZyZWVzY2FsZSBDb2xkRmlyZSBhbmQgaS5NWCBTb0NzLiBUaGUgaGFyZHdhcmUgaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIGFtZDY0IHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgbWFraW5nIHRoaXMgY29kZSBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUuIEZ1cnRoZXJtb3JlLCB0aGUgY2hhbmdlcyBhcmUgcmVzdHJpY3RlZCB0byBwcm9iZSBhbmQgZHJpdmVyIHRlYXJkb3duL3JlbW92ZSBwYXRocy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAyOjU1OjI4LjI2NTQzNjIwMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflowq6xmb[1] Phase: Running StartedAt: 2026-09-08 02:55:38 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowq6xmb[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 02:55:38 +0000 UTC FinishedAt: 2026-09-08 02:55:43 +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,}