Name: series-workflowh2949 Phase: Failed StartedAt: 2026-08-01 19:21:26 +0000 UTC FinishedAt: 2026-08-01 19:25:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2949[0] Phase: Succeeded StartedAt: 2026-08-01 19:21:26 +0000 UTC FinishedAt: 2026-08-01 19:25:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2949[0].run-triage Phase: Succeeded StartedAt: 2026-08-01 19:21:26 +0000 UTC FinishedAt: 2026-08-01 19:25:07 +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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIChpYXZmKSBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBJbnRlbCBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpLiBUaGVzZSBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgSW50ZWwgbmV0d29yayBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmJmNTZlZjMxNDI2ZjUwYTQ4ZTg1MTNjYzUzNWQzOGYyMjU5NzE4MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTk6MjM6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmNcbmluZGV4IGMzMGFiZjE3Y2Y1ZDMuLjlkYzVmMDc2MWQ4YmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXG5AQCAtMTE4NCw2ICYjNDM7MTE4NCw3IEBAIHN0YXRpYyBib29sIGlhdmZfY2xlYW51cF9oZWFkZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IpXG4gXG4gLyoqXG4gICogaWF2Zl9hZGRfcnhfZnJhZyAtIEFkZCBjb250ZW50cyBvZiBSeCBidWZmZXIgdG8gc2tfYnVmZlxuJiM0MzsgKiBAcHA6IHBhZ2UgcG9vbCB0aGUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgZnJvbVxuICAqIEBza2I6IHNrX2J1ZmYgdG8gcGxhY2UgdGhlIGRhdGEgaW50b1xuICAqIEByeF9idWZmZXI6IGJ1ZmZlciBjb250YWluaW5nIHBhZ2UgdG8gYWRkXG4gICogQHNpemU6IHBhY2tldCBsZW5ndGggZnJvbSByeF9kZXNjXG5AQCAtMTE5MywxMSAmIzQzOzExOTQsMTEgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgKlxuICAqIFRoZSBmdW5jdGlvbiB3aWxsIHRoZW4gdXBkYXRlIHRoZSBwYWdlIG9mZnNldC5cbiAgKiovXG4tc3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztzdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcbiBcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzaXplKVxuIHtcbi1cdHUzMiBociA9IG5ldG1lbV9nZXRfcHAocnhfYnVmZmVyLVx1MDAzZW5ldG1lbSktXHUwMDNlcC5vZmZzZXQ7XG4mIzQzO1x0dTMyIGhyID0gcHAtXHUwMDNlcC5vZmZzZXQ7XG4gXG4gXHRza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHNrYiwgc2tiX3NoaW5mbyhza2IpLVx1MDAzZW5yX2ZyYWdzLFxuIFx0XHRcdCAgICAgICByeF9idWZmZXItXHUwMDNlbmV0bWVtLCByeF9idWZmZXItXHUwMDNlb2Zmc2V0ICYjNDM7IGhyLFxuQEAgLTEyMDYsMTcgJiM0MzsxMjA3LDE5IEBAIHN0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiAvKipcbiAgKiBpYXZmX2J1aWxkX3NrYiAtIEJ1aWxkIHNrYiBhcm91bmQgYW4gZXhpc3RpbmcgYnVmZmVyXG4mIzQzOyAqIEBwcDogcGFnZSBwb29sIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCBmcm9tXG4gICogQHJ4X2J1ZmZlcjogUnggYnVmZmVyIHRvIHB1bGwgZGF0YSBmcm9tXG4gICogQHNpemU6IHNpemUgb2YgYnVmZmVyIHRvIGFkZCB0byBza2JcbiAgKlxuICAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGFuIHNrYiBhcm91bmQgYW4gZXhpc3RpbmcgUnggYnVmZmVyLCB0YWtpbmcgY2FyZVxuICAqIHRvIHNldCB1cCB0aGUgc2tiIGNvcnJlY3RseSBhbmQgYXZvaWQgYW55IG1lbWNweSBvdmVyaGVhZC5cbiAgKi9cbi1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlhdmZfYnVpbGRfc2tiKGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWZmZXIsXG4mIzQzO3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXG4mIzQzO1x0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcbiBcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBzaXplKVxuIHtcbiBcdHN0cnVjdCBwYWdlICpidWZfcGFnZSA9IF9fbmV0bWVtX3RvX3BhZ2UocnhfYnVmZmVyLVx1MDAzZW5ldG1lbSk7XG4tXHR1MzIgaHIgPSBwcF9wYWdlX3RvX25tZGVzYyhidWZfcGFnZSktXHUwMDNlcHAtXHUwMDNlcC5vZmZzZXQ7XG4mIzQzO1x0dTMyIGhyID0gcHAtXHUwMDNlcC5vZmZzZXQ7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIFx0dm9pZCAqdmE7XG4gXG5AQCAtMTM4Nyw2ICYjNDM7MTM5MCw3IEBAIHN0YXRpYyBpbnQgaWF2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcbiB7XG4gXHRib29sIGZsZXggPSByeF9yaW5nLVx1MDAzZXJ4ZGlkID09IFZJUlRDSE5MX1JYRElEXzJfRkxFWF9TUV9OSUM7XG4gXHR1bnNpZ25lZCBpbnQgdG90YWxfcnhfYnl0ZXMgPSAwLCB0b3RhbF9yeF9wYWNrZXRzID0gMDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwcCA9IHJ4X3JpbmctXHUwMDNlcHA7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcnhfcmluZy1cdTAwM2Vza2I7XG4gXHR1MTYgY2xlYW5lZF9jb3VudCA9IElBVkZfREVTQ19VTlVTRUQocnhfcmluZyk7XG4gXHRib29sIGZhaWx1cmUgPSBmYWxzZTtcbkBAIC0xNDI0LDE0ICYjNDM7MTQyOCwxNCBAQCBzdGF0aWMgaW50IGlhdmZfY2xlYW5fcnhfaXJxKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIGludCBidWRnZXQpXG4gXHRcdGlhdmZfdHJhY2UoY2xlYW5fcnhfaXJxLCByeF9yaW5nLCByeF9kZXNjLCBza2IpO1xuIFxuIFx0XHRyeF9idWZmZXIgPSBcdTAwMjZyeF9yaW5nLVx1MDAzZXJ4X2ZxZXNbcnhfcmluZy1cdTAwM2VuZXh0X3RvX2NsZWFuXTtcbi1cdFx0aWYgKCFsaWJldGhfcnhfc3luY19mb3JfY3B1KHJ4X2J1ZmZlciwgZmllbGRzLmxlbikpXG4mIzQzO1x0XHRpZiAoIV9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKSlcbiBcdFx0XHRnb3RvIHNraXBfZGF0YTtcbiBcbiBcdFx0LyogcmV0cmlldmUgYSBidWZmZXIgZnJvbSB0aGUgcmluZyAqL1xuIFx0XHRpZiAoc2tiKVxuLVx0XHRcdGlhdmZfYWRkX3J4X2ZyYWcoc2tiLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pO1xuJiM0MztcdFx0XHRpYXZmX2FkZF9yeF9mcmFnKHBwLCBza2IsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XG4gXHRcdGVsc2Vcbi1cdFx0XHRza2IgPSBpYXZmX2J1aWxkX3NrYihyeF9idWZmZXIsIGZpZWxkcy5sZW4pO1xuJiM0MztcdFx0XHRza2IgPSBpYXZmX2J1aWxkX3NrYihwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKTtcbiBcbiBcdFx0LyogZXhpdCBpZiB3ZSBmYWlsZWQgdG8gcmV0cmlldmUgYSBidWZmZXIgKi9cbiBcdFx0aWYgKCFza2IpIHtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgvcnguaCBiL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXG5pbmRleCA1ZDk5MTQwNDg0NWU2Li5mZGRhYzA4NGUwMDFlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXG5AQCAtMTE4LDM2ICYjNDM7MTE4LDUxIEBAIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBsaWJldGhfcnhfYWxsb2MoY29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCAqZnEsIHUzMiBpKVxuIHZvaWQgbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW1fcmVmIG5ldG1lbSk7XG4gXG4gLyoqXG4tICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXG4mIzQzOyAqIF9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXG4mIzQzOyAqIEBwb29sOiBcdTAwMjZwYWdlX3Bvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cbiAgKiBAZnFlOiBidWZmZXIgdG8gcHJvY2Vzc1xuICAqIEBsZW46IGZyYW1lIGxlbmd0aCBmcm9tIHRoZSBkZXNjcmlwdG9yXG4gICpcbi0gKiBQcm9jZXNzIHRoZSBidWZmZXIgYWZ0ZXIgaXQmIzM5O3Mgd3JpdHRlbiBieSBIVy4gVGhlIHJlZ3VsYXIgcGF0aCBpcyB0b1xuLSAqIHN5bmNocm9uaXplIERNQSBmb3IgQ1BVLCBidXQgaW4gY2FzZSBvZiBubyBkYXRhIGl0IHdpbGwgYmUgaW1tZWRpYXRlbHlcbi0gKiByZWN5Y2xlZCBiYWNrIHRvIGl0cyBQUC5cbiYjNDM7ICogVmFyaWFudCBmb3IgY2FsbGVycyB3aGljaCBhbHJlYWR5IGtub3cgdGhlIGJ1ZmZlciYjMzk7cyBwb29sLCB0eXBpY2FsbHlcbiYjNDM7ICogdGhlaXIgUnggcXVldWUmIzM5O3MgZmlsbCBxdWV1ZSBwb29sLlxuICAqXG4gICogUmV0dXJuOiB0cnVlIHdoZW4gdGhlcmUmIzM5O3MgZGF0YSB0byBwcm9jZXNzLCBmYWxzZSBvdGhlcndpc2UuXG4gICovXG4tc3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcbi1cdFx0XHRcdFx0ICB1MzIgbGVuKVxuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgX19saWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wsXG4mIzQzO1x0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcbiYjNDM7XHRcdFx0XHRcdCAgICB1MzIgbGVuKVxuIHtcbi1cdG5ldG1lbV9yZWYgbmV0bWVtID0gZnFlLVx1MDAzZW5ldG1lbTtcbi1cbiBcdC8qIFZlcnkgcmFyZSwgYnV0IHBvc3NpYmxlIGNhc2UuIFRoZSBtb3N0IGNvbW1vbiByZWFzb246XG4gXHQgKiB0aGUgbGFzdCBmcmFnbWVudCBjb250YWluZWQgRkNTIG9ubHksIHdoaWNoIHdhcyB0aGVuXG4gXHQgKiBzdHJpcHBlZCBieSB0aGUgSFcuXG4gXHQgKi9cbiBcdGlmICh1bmxpa2VseSghbGVuKSkge1xuLVx0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KG5ldG1lbSk7XG4mIzQzO1x0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KGZxZS1cdTAwM2VuZXRtZW0pO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4tXHRwYWdlX3Bvb2xfZG1hX3N5bmNfbmV0bWVtX2Zvcl9jcHUobmV0bWVtX2dldF9wcChuZXRtZW0pLCBuZXRtZW0sXG4tXHRcdFx0XHRcdCAgZnFlLVx1MDAzZW9mZnNldCwgbGVuKTtcbiYjNDM7XHRwYWdlX3Bvb2xfZG1hX3N5bmNfbmV0bWVtX2Zvcl9jcHUocG9vbCwgZnFlLVx1MDAzZW5ldG1lbSwgZnFlLVx1MDAzZW9mZnNldCwgbGVuKTtcbiBcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxuJiM0MzsgKiBAZnFlOiBidWZmZXIgdG8gcHJvY2Vzc1xuJiM0MzsgKiBAbGVuOiBmcmFtZSBsZW5ndGggZnJvbSB0aGUgZGVzY3JpcHRvclxuJiM0MzsgKlxuJiM0MzsgKiBQcm9jZXNzIHRoZSBidWZmZXIgYWZ0ZXIgaXQmIzM5O3Mgd3JpdHRlbiBieSBIVy4gVGhlIHJlZ3VsYXIgcGF0aCBpcyB0b1xuJiM0MzsgKiBzeW5jaHJvbml6ZSBETUEgZm9yIENQVSwgYnV0IGluIGNhc2Ugb2Ygbm8gZGF0YSBpdCB3aWxsIGJlIGltbWVkaWF0ZWx5XG4mIzQzOyAqIHJlY3ljbGVkIGJhY2sgdG8gaXRzIFBQLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IHRydWUgd2hlbiB0aGVyZSYjMzk7cyBkYXRhIHRvIHByb2Nlc3MsIGZhbHNlIG90aGVyd2lzZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBsaWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXG4mIzQzO1x0XHRcdFx0XHQgIHUzMiBsZW4pXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gX19saWJldGhfcnhfc3luY19mb3JfY3B1KG5ldG1lbV9nZXRfcHAoZnFlLVx1MDAzZW5ldG1lbSksIGZxZSwgbGVuKTtcbiYjNDM7fVxuJiM0MztcbiAvKiBDb252ZXJ0aW5nIGFic3RyYWN0IHBhY2tldCB0eXBlIG51bWJlcnMgaW50byBhIHNvZnR3YXJlIHN0cnVjdHVyZSB3aXRoXG4gICogdGhlIHBhY2tldCBwYXJhbWV0ZXJzIHRvIGRvIE8oMSkgbG9va3VwIG9uIFJ4LlxuICAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiAoaWF2ZikgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgSW50ZWwgRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKS4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEludGVsIG5ldHdvcmsgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJiZjU2ZWYzMTQyNmY1MGE0OGU4NTEzY2M1MzVkMzhmMjI1OTcxODIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIzOjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMKaW5kZXggYzMwYWJmMTdjZjVkMy4uOWRjNWYwNzYxZDhiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jCkBAIC0xMTg0LDYgJiM0MzsxMTg0LDcgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAogLyoqCiAgKiBpYXZmX2FkZF9yeF9mcmFnIC0gQWRkIGNvbnRlbnRzIG9mIFJ4IGJ1ZmZlciB0byBza19idWZmCiYjNDM7ICogQHBwOiBwYWdlIHBvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb20KICAqIEBza2I6IHNrX2J1ZmYgdG8gcGxhY2UgdGhlIGRhdGEgaW50bwogICogQHJ4X2J1ZmZlcjogYnVmZmVyIGNvbnRhaW5pbmcgcGFnZSB0byBhZGQKICAqIEBzaXplOiBwYWNrZXQgbGVuZ3RoIGZyb20gcnhfZGVzYwpAQCAtMTE5MywxMSAmIzQzOzExOTQsMTEgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYikKICAqCiAgKiBUaGUgZnVuY3Rpb24gd2lsbCB0aGVuIHVwZGF0ZSB0aGUgcGFnZSBvZmZzZXQuCiAgKiovCi1zdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7c3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhjb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlciwKIAkJCSAgICAgdW5zaWduZWQgaW50IHNpemUpCiB7Ci0JdTMyIGhyID0gbmV0bWVtX2dldF9wcChyeF9idWZmZXItJmd0O25ldG1lbSktJmd0O3Aub2Zmc2V0OwomIzQzOwl1MzIgaHIgPSBwcC0mZ3Q7cC5vZmZzZXQ7CiAKIAlza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHNrYiwgc2tiX3NoaW5mbyhza2IpLSZndDtucl9mcmFncywKIAkJCSAgICAgICByeF9idWZmZXItJmd0O25ldG1lbSwgcnhfYnVmZmVyLSZndDtvZmZzZXQgJiM0MzsgaHIsCkBAIC0xMjA2LDE3ICYjNDM7MTIwNywxOSBAQCBzdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKHN0cnVjdCBza19idWZmICpza2IsCiAKIC8qKgogICogaWF2Zl9idWlsZF9za2IgLSBCdWlsZCBza2IgYXJvdW5kIGFuIGV4aXN0aW5nIGJ1ZmZlcgomIzQzOyAqIEBwcDogcGFnZSBwb29sIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCBmcm9tCiAgKiBAcnhfYnVmZmVyOiBSeCBidWZmZXIgdG8gcHVsbCBkYXRhIGZyb20KICAqIEBzaXplOiBzaXplIG9mIGJ1ZmZlciB0byBhZGQgdG8gc2tiCiAgKgogICogVGhpcyBmdW5jdGlvbiBidWlsZHMgYW4gc2tiIGFyb3VuZCBhbiBleGlzdGluZyBSeCBidWZmZXIsIHRha2luZyBjYXJlCiAgKiB0byBzZXQgdXAgdGhlIHNrYiBjb3JyZWN0bHkgYW5kIGF2b2lkIGFueSBtZW1jcHkgb3ZlcmhlYWQuCiAgKi8KLXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlciwKJiM0MztzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlhdmZfYnVpbGRfc2tiKGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwLAomIzQzOwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLAogCQkJCSAgICAgIHVuc2lnbmVkIGludCBzaXplKQogewogCXN0cnVjdCBwYWdlICpidWZfcGFnZSA9IF9fbmV0bWVtX3RvX3BhZ2UocnhfYnVmZmVyLSZndDtuZXRtZW0pOwotCXUzMiBociA9IHBwX3BhZ2VfdG9fbm1kZXNjKGJ1Zl9wYWdlKS0mZ3Q7cHAtJmd0O3Aub2Zmc2V0OwomIzQzOwl1MzIgaHIgPSBwcC0mZ3Q7cC5vZmZzZXQ7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAl2b2lkICp2YTsKIApAQCAtMTM4Nyw2ICYjNDM7MTM5MCw3IEBAIHN0YXRpYyBpbnQgaWF2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldCkKIHsKIAlib29sIGZsZXggPSByeF9yaW5nLSZndDtyeGRpZCA9PSBWSVJUQ0hOTF9SWERJRF8yX0ZMRVhfU1FfTklDOwogCXVuc2lnbmVkIGludCB0b3RhbF9yeF9ieXRlcyA9IDAsIHRvdGFsX3J4X3BhY2tldHMgPSAwOwomIzQzOwljb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwcCA9IHJ4X3JpbmctJmd0O3BwOwogCXN0cnVjdCBza19idWZmICpza2IgPSByeF9yaW5nLSZndDtza2I7CiAJdTE2IGNsZWFuZWRfY291bnQgPSBJQVZGX0RFU0NfVU5VU0VEKHJ4X3JpbmcpOwogCWJvb2wgZmFpbHVyZSA9IGZhbHNlOwpAQCAtMTQyNCwxNCAmIzQzOzE0MjgsMTQgQEAgc3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KQogCQlpYXZmX3RyYWNlKGNsZWFuX3J4X2lycSwgcnhfcmluZywgcnhfZGVzYywgc2tiKTsKIAogCQlyeF9idWZmZXIgPSAmYW1wO3J4X3JpbmctJmd0O3J4X2ZxZXNbcnhfcmluZy0mZ3Q7bmV4dF90b19jbGVhbl07Ci0JCWlmICghbGliZXRoX3J4X3N5bmNfZm9yX2NwdShyeF9idWZmZXIsIGZpZWxkcy5sZW4pKQomIzQzOwkJaWYgKCFfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbikpCiAJCQlnb3RvIHNraXBfZGF0YTsKIAogCQkvKiByZXRyaWV2ZSBhIGJ1ZmZlciBmcm9tIHRoZSByaW5nICovCiAJCWlmIChza2IpCi0JCQlpYXZmX2FkZF9yeF9mcmFnKHNrYiwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKTsKJiM0MzsJCQlpYXZmX2FkZF9yeF9mcmFnKHBwLCBza2IsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7CiAJCWVsc2UKLQkJCXNrYiA9IGlhdmZfYnVpbGRfc2tiKHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7CiYjNDM7CQkJc2tiID0gaWF2Zl9idWlsZF9za2IocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7CiAKIAkJLyogZXhpdCBpZiB3ZSBmYWlsZWQgdG8gcmV0cmlldmUgYSBidWZmZXIgKi8KIAkJaWYgKCFza2IpIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oIGIvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgKaW5kZXggNWQ5OTE0MDQ4NDVlNi4uZmRkYWMwODRlMDAxZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgKQEAgLTExOCwzNiAmIzQzOzExOCw1MSBAQCBzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgbGliZXRoX3J4X2FsbG9jKGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgKmZxLCB1MzIgaSkKIHZvaWQgbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW1fcmVmIG5ldG1lbSk7CiAKIC8qKgotICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BCiYjNDM7ICogX19saWJldGhfcnhfc3luY19mb3JfY3B1IC0gc3luY2hyb25pemUgb3IgcmVjeWNsZSBidWZmZXIgcG9zdCBETUEKJiM0MzsgKiBAcG9vbDogJmFtcDtwYWdlX3Bvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb20KICAqIEBmcWU6IGJ1ZmZlciB0byBwcm9jZXNzCiAgKiBAbGVuOiBmcmFtZSBsZW5ndGggZnJvbSB0aGUgZGVzY3JpcHRvcgogICoKLSAqIFByb2Nlc3MgdGhlIGJ1ZmZlciBhZnRlciBpdCYjMzk7cyB3cml0dGVuIGJ5IEhXLiBUaGUgcmVndWxhciBwYXRoIGlzIHRvCi0gKiBzeW5jaHJvbml6ZSBETUEgZm9yIENQVSwgYnV0IGluIGNhc2Ugb2Ygbm8gZGF0YSBpdCB3aWxsIGJlIGltbWVkaWF0ZWx5Ci0gKiByZWN5Y2xlZCBiYWNrIHRvIGl0cyBQUC4KJiM0MzsgKiBWYXJpYW50IGZvciBjYWxsZXJzIHdoaWNoIGFscmVhZHkga25vdyB0aGUgYnVmZmVyJiMzOTtzIHBvb2wsIHR5cGljYWxseQomIzQzOyAqIHRoZWlyIFJ4IHF1ZXVlJiMzOTtzIGZpbGwgcXVldWUgcG9vbC4KICAqCiAgKiBSZXR1cm46IHRydWUgd2hlbiB0aGVyZSYjMzk7cyBkYXRhIHRvIHByb2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4KICAqLwotc3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSwKLQkJCQkJICB1MzIgbGVuKQomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCwKJiM0MzsJCQkJCSAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqZnFlLAomIzQzOwkJCQkJICAgIHUzMiBsZW4pCiB7Ci0JbmV0bWVtX3JlZiBuZXRtZW0gPSBmcWUtJmd0O25ldG1lbTsKLQogCS8qIFZlcnkgcmFyZSwgYnV0IHBvc3NpYmxlIGNhc2UuIFRoZSBtb3N0IGNvbW1vbiByZWFzb246CiAJICogdGhlIGxhc3QgZnJhZ21lbnQgY29udGFpbmVkIEZDUyBvbmx5LCB3aGljaCB3YXMgdGhlbgogCSAqIHN0cmlwcGVkIGJ5IHRoZSBIVy4KIAkgKi8KIAlpZiAodW5saWtlbHkoIWxlbikpIHsKLQkJbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW0pOwomIzQzOwkJbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhmcWUtJmd0O25ldG1lbSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlwYWdlX3Bvb2xfZG1hX3N5bmNfbmV0bWVtX2Zvcl9jcHUobmV0bWVtX2dldF9wcChuZXRtZW0pLCBuZXRtZW0sCi0JCQkJCSAgZnFlLSZndDtvZmZzZXQsIGxlbik7CiYjNDM7CXBhZ2VfcG9vbF9kbWFfc3luY19uZXRtZW1fZm9yX2NwdShwb29sLCBmcWUtJmd0O25ldG1lbSwgZnFlLSZndDtvZmZzZXQsIGxlbik7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQQomIzQzOyAqIEBmcWU6IGJ1ZmZlciB0byBwcm9jZXNzCiYjNDM7ICogQGxlbjogZnJhbWUgbGVuZ3RoIGZyb20gdGhlIGRlc2NyaXB0b3IKJiM0MzsgKgomIzQzOyAqIFByb2Nlc3MgdGhlIGJ1ZmZlciBhZnRlciBpdCYjMzk7cyB3cml0dGVuIGJ5IEhXLiBUaGUgcmVndWxhciBwYXRoIGlzIHRvCiYjNDM7ICogc3luY2hyb25pemUgRE1BIGZvciBDUFUsIGJ1dCBpbiBjYXNlIG9mIG5vIGRhdGEgaXQgd2lsbCBiZSBpbW1lZGlhdGVseQomIzQzOyAqIHJlY3ljbGVkIGJhY2sgdG8gaXRzIFBQLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiB0cnVlIHdoZW4gdGhlcmUmIzM5O3MgZGF0YSB0byBwcm9jZXNzLCBmYWxzZSBvdGhlcndpc2UuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSwKJiM0MzsJCQkJCSAgdTMyIGxlbikKJiM0Mzt7CiYjNDM7CXJldHVybiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUobmV0bWVtX2dldF9wcChmcWUtJmd0O25ldG1lbSksIGZxZSwgbGVuKTsKJiM0Mzt9CiYjNDM7CiAvKiBDb252ZXJ0aW5nIGFic3RyYWN0IHBhY2tldCB0eXBlIG51bWJlcnMgaW50byBhIHNvZnR3YXJlIHN0cnVjdHVyZSB3aXRoCiAgKiB0aGUgcGFja2V0IHBhcmFtZXRlcnMgdG8gZG8gTygxKSBsb29rdXAgb24gUnguCiAgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElBVkYgUGF0Y2ggYW5kIGl0cyBJbXBsaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBzcGVjaWZpYyBjaGFuZ2VzIHdpdGhpbiB0aGUgSW50ZWwgSUFWRiBkcml2ZXIuIEl0JiMzOTtzIHRvdWNoaW5nIGBpYXZmX3R4cnguY2AgYW5kIGByeC5oYCwgYW5kIHNwZWNpZmljYWxseSwgaXQmIzM5O3MgdXBkYXRpbmcgaG93IHRoZSBgcGFnZV9wb29sYCBpcyBoYW5kbGVkIHdpdGhpbiBgaWF2Zl9hZGRfcnhfZnJhZ2AsIGBpYXZmX2J1aWxkX3NrYmAsIGFuZCBgaWF2Zl9jbGVhbl9yeF9pcnFgLiBUaGUgaW1wb3J0YW50IHRoaW5nIEkmIzM5O20gc2VlaW5nIGlzIHRoYXQgaXQmIzM5O3Mgbm8gbG9uZ2VyIGltcGxpY2l0bHkgZGVyaXZpbmcgdGhlIGBwYWdlX3Bvb2xgIGZyb20gYSBgbmV0bWVtYCByZWZlcmVuY2UuIEl0JiMzOTtzIGJlZW4gbWFkZSBleHBsaWNpdC4gSXQgYWxzbyBsb29rcyBsaWtlIGEgbmV3IGZ1bmN0aW9uIGNhbGxlZCBgX19saWJldGhfcnhfc3luY19mb3JfY3B1YCBoYXMgYmVlbiBpbnRyb2R1Y2VkLCBhZ2FpbiB0YWtpbmcgYSBgcGFnZV9wb29sYCBwb2ludGVyLiBgbGliZXRoX3J4X3N5bmNfZm9yX2NwdWAgaGFzIGFsc28gYmVlbiBtb2RpZmllZCB0byB1c2UgdGhlIGBwYWdlX3Bvb2xgIHBvaW50ZXIuCgpOb3csIHRoZSBgaWF2ZmAgZHJpdmVyLi4uIHRoYXQmIzM5O3MgdGhlIEludGVsIEV0aGVybmV0IEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyLiBSaWdodCwgaXQmIzM5O3MgYSBWRiBkcml2ZXIuIFNvLCB0aGlzIGlzIHR5cGljYWxseSB1c2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHJpZ2h0PyBFc3BlY2lhbGx5IHdoZW4geW91JiMzOTtyZSB0YWxraW5nIGFib3V0IFNSLUlPVi4gQW5kIHRoYXQgbWVhbnMgaXQgaXMgYSBWaXJ0dWFsIEZ1bmN0aW9uLCB3aGljaCBuZWVkcyB0aGUgcGh5c2ljYWwgTklDIChsaWtlIGFuIGk0MGUgb3IgaWNlKSB0byBiZSBwcmVzZW50IHRvIHdvcmsuIAoKVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBldmVuICp0ZXN0KiB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8gUUVNVSBkb2VzbiYjMzk7dCBuYXRpdmVseSBlbXVsYXRlIEludGVsIEFWRnMuIEhtbW0sIGNvdWxkIHRoZXJlIGJlIHNvbWUgd2F5IHRvIGZ1ZGdlIGl0IHdpdGggc29mdHdhcmUgZW11bGF0aW9uIG9yIG1heWJlIGlmIGl0JiMzOTtzIGNvbnNpZGVyZWQgY29yZSBlbm91Z2g/CgpXYWl0LCB0aGUgcHJvbXB0IHNheXMgc29tZXRoaW5nIHRoYXQgbWlnaHQgYXBwbHk6ICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IFRoaXMgaXMgZXhhY3RseSB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLiBJcyBgaWF2ZmAgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmU/IFllcywgdGhhdCYjMzk7cyB3aGF0IGEgVkYgZHJpdmVyIGlzIGxpa2UuIFVzdWFsbHksIFZGIGRyaXZlcnMgcmVxdWlyZSB0aGUgcGh5c2ljYWwgUEYgZHJpdmVyIGFuZCBwaHlzaWNhbCBoYXJkd2FyZSwgdW5sZXNzIEkgY2FuIGZpbmQgYW4gZW11bGF0b3IuCgpBbHJpZ2h0LCBzbyB0aGUga2V5IHRoaW5nIGlzIHdoZXRoZXIgYGlhdmZgICpjYW4qIGJlIGZ1enplZCBpbiBhbnkgcmVhc29uYWJsZSB3YXkgb3IgaWYgSSBhYnNvbHV0ZWx5IG5lZWQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHRvIHRlc3QgdGhpcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGEgUENJIGRyaXZlciwgYGlhdmZgLiBCZXR0ZXIgY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2UgdG8gbWFrZSBzdXJlIHRoYXQmIzM5O3MgYWNjdXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWF2ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3MzY2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlLTMtI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZTo0OiMgTWFrZWZpbGUgZm9yIHRoZSBJbnRlbChSKSBFdGhlcm5ldCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIChpYXZmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS01LSMgZHJpdmVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZT0xMD1zdWJkaXItY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0lBVkYpICYjNDM7PSBpYXZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGUtMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlOjE0OmlhdmYteSA6PSBpYXZmX21haW4ubyBpYXZmX2V0aHRvb2wubyBpYXZmX3ZpcnRjaG5sLm8gaWF2Zl9mZGlyLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGU6MTU6XHQgIGlhdmZfYWR2X3Jzcy5vIGlhdmZfdHhyeC5vIGlhdmZfY29tbW9uLm8gaWF2Zl9hZG1pbnEub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS0xNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGU6MTc6aWF2Zi0kKENPTkZJR19QVFBfMTU4OF9DTE9DSykgJiM0Mzs9IGlhdmZfcHRwLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0zOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjM5OiNpbmNsdWRlIFwmIzM0O2lhdmZfdHlwZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00MC0jaW5jbHVkZSBcdTAwM2NsaW51eC9hdmYvdmlydGNobmwuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDE6I2luY2x1ZGUgXCYjMzQ7aWF2Zl90eHJ4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQyOiNpbmNsdWRlIFwmIzM0O2lhdmZfZmRpci5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0MzojaW5jbHVkZSBcJiMzNDtpYXZmX2Fkdl9yc3MuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDQ6I2luY2x1ZGUgXCYjMzQ7aWF2Zl90eXBlcy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NS0jaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRtYXAuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ3LSNkZWZpbmUgREVGQVVMVF9ERUJVR19MRVZFTF9TSElGVCAzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0ODojZGVmaW5lIFBGWCBcJiMzNDtpYXZmOiBcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTA6aW50IGlhdmZfc3RhdHVzX3RvX2Vycm5vKGVudW0gaWF2Zl9zdGF0dXMgc3RhdHVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUxLWludCB2aXJ0Y2hubF9zdGF0dXNfdG9fZXJybm8oZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSB2X3N0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTMtLyogVlNJIHN0YXRlIGZsYWdzIHNoYXJlZCB3aXRoIGNvbW1vbiBjb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NDplbnVtIGlhdmZfdnNpX3N0YXRlX3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTUtXHRfX0lBVkZfVlNJX0RPV04sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjAtLyogZHVtbXkgc3RydWN0IHRvIG1ha2UgY29tbW9uIGNvZGUgbGVzcyBwYWluZnVsICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTpzdHJ1Y3QgaWF2Zl92c2kge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjI6XHRzdHJ1Y3QgaWF2Zl9hZGFwdGVyICpiYWNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjMtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6ODY6I2RlZmluZSBJQVZGX1JYX0RFU0MoUiwgaSkgKFx1MDAyNigoKHN0cnVjdCBpYXZmX3J4X2Rlc2MgKikoKFIpLVx1MDAzZWRlc2MpKVtpXSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo4NzojZGVmaW5lIElBVkZfVFhfREVTQyhSLCBpKSAoXHUwMDI2KCgoc3RydWN0IGlhdmZfdHhfZGVzYyAqKSgoUiktXHUwMDNlZGVzYykpW2ldKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTg4LSNkZWZpbmUgSUFWRl9UWF9DVFhUREVTQyhSLCBpKSBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6ODk6XHQoXHUwMDI2KCgoc3RydWN0IGlhdmZfdHhfY29udGV4dF9kZXNjICopKChSKS1cdTAwM2VkZXNjKSlbaV0pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtOTAtI2RlZmluZSBJQVZGX01BWF9SRVFfUVVFVUVTIDE2XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTAzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTA0OnN0cnVjdCBpYXZmX3FfdmVjdG9yIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEwNTpcdHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxMDY6XHRzdHJ1Y3QgaWF2Zl92c2kgKnZzaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTEwNy1cdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTA4Olx0c3RydWN0IGlhdmZfcmluZ19jb250YWluZXIgcng7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxMDk6XHRzdHJ1Y3QgaWF2Zl9yaW5nX2NvbnRhaW5lciB0eDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTExMC1cdHUzMiByaW5nX21hc2s7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTIwLSAqIEFuZCB5ZXMsIGl0JiMzOTtzIHRoZSBzYW1lIG1hdGggZ29pbmcgYm90aCB3YXlzLiAgVGhlIGxvd2VzdCB2YWx1ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTIxOiAqIHN1cHBvcnRlZCBieSBhbGwgb2YgdGhlIGlhdmYgaGFyZHdhcmUgaXMgOC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTEyMi0gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xMzgtI2RlZmluZSBJQVZGX0ZSRUVfVkVDVE9SIDB4N0ZGRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTM5OnN0cnVjdCBpYXZmX21hY19maWx0ZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTQwLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjE1MjojZGVmaW5lIElBVkZfVkxBTih2aWQsIHRwaWQpICgoc3RydWN0IGlhdmZfdmxhbil7IHZpZCwgdHBpZCB9KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTUzOnN0cnVjdCBpYXZmX3ZsYW4ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTU0LVx0dTE2IHZpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNTg6ZW51bSBpYXZmX3ZsYW5fc3RhdGVfdCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNTktXHRJQVZGX1ZMQU5fSU5WQUxJRCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNjc6c3RydWN0IGlhdmZfdmxhbl9maWx0ZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTY4LVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTY5Olx0c3RydWN0IGlhdmZfdmxhbiB2bGFuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTcwOlx0ZW51bSBpYXZmX3ZsYW5fc3RhdGVfdCBzdGF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE3MS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE3NC0vKiBTdGF0ZSBvZiB0cmFmZmljIGNsYXNzIGNyZWF0aW9uICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNzU6ZW51bSBpYXZmX3RjX3N0YXRlX3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTc2LVx0X19JQVZGX1RDX0lOVkFMSUQsIC8qIG5vIHRyYWZmaWMgY2xhc3MsIGRlZmF1bHQgc3RhdGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xODAtLyogY2hhbm5lbCBpbmZvICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxODE6c3RydWN0IGlhdmZfY2hhbm5lbF9jb25maWcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTgyLVx0c3RydWN0IHZpcnRjaG5sX2NoYW5uZWxfaW5mbyBjaF9pbmZvW0lBVkZfTUFYX1RSQUZGSUNfQ0xBU1NdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTgzOlx0ZW51bSBpYXZmX3RjX3N0YXRlX3Qgc3RhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xODQtXHR1OCB0b3RhbF9xcHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTg3LS8qIFN0YXRlIG9mIGNsb3VkIGZpbHRlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTg4OmVudW0gaWF2Zl9jbG91ZF9maWx0ZXJfc3RhdGVfdCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xODktXHRfX0lBVkZfQ0ZfSU5WQUxJRCxcdCAvKiBjbG91ZCBmaWx0ZXIgbm90IGFkZGVkICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTk1LS8qIERyaXZlciBzdGF0ZS4gVGhlIG9yZGVyIG9mIHRoZXNlIGlzIGltcG9ydGFudCEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjE5NjplbnVtIGlhdmZfc3RhdGVfdCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xOTctXHRfX0lBVkZfU1RBUlRVUCxcdFx0LyogZHJpdmVyIGxvYWRlZCwgcHJvYmUgY29tcGxldGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoyMTQ6ZW51bSBpYXZmX2NyaXRpY2FsX3NlY3Rpb25fdCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yMTUtXHRfX0lBVkZfSU5fUkVNT1ZFX1RBU0ssXHQvKiBkZXZpY2UgYmVpbmcgcmVtb3ZlZCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTIzOC0vKiBib29ra2VlcGluZyBvZiBjbG91ZCBmaWx0ZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoyMzk6c3RydWN0IGlhdmZfY2xvdWRfZmlsdGVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI0MDpcdGVudW0gaWF2Zl9jbG91ZF9maWx0ZXJfc3RhdGVfdCBzdGF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTI0MS1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNTUtLyogYm9hcmQgc3BlY2lmaWMgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjU2OnN0cnVjdCBpYXZmX2FkYXB0ZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjU3LVx0c3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTI2Mi1cdHdhaXRfcXVldWVfaGVhZF90IHZjX3dhaXRxdWV1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI2MzpcdHN0cnVjdCBpYXZmX3FfdmVjdG9yICpxX3ZlY3RvcnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNjQtXHRzdHJ1Y3QgbGlzdF9oZWFkIHZsYW5fZmlsdGVyX2xpc3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjc0LVx0LyogVFggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI3NTpcdHN0cnVjdCBpYXZmX3JpbmcgKnR4X3JpbmdzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjc2LVx0dTMyIHR4X3RpbWVvdXRfY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjc5LVx0LyogUlggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI4MDpcdHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmdzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjgxLVx0dTY0IGh3X2NzdW1fcnhfZXJyb3I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMzg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6Mzg4Olx0c3RydWN0IGlhdmZfaHcgaHc7IC8qIGRlZmluZWQgaW4gaWF2Zl90eXBlLmggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTM4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjM5MDpcdGVudW0gaWF2Zl9zdGF0ZV90IHN0YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MzkxOlx0ZW51bSBpYXZmX3N0YXRlX3QgbGFzdF9zdGF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTM5Mi1cdHVuc2lnbmVkIGxvbmcgY3JpdF9zZWN0aW9uO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ0Ni1cdHU2NCBzdXBwX3J4ZGlkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ0NzpcdHN0cnVjdCBpYXZmX3B0cCBwdHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NDgtXHR1MTYgbXNnX2VuYWJsZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ0OTpcdHN0cnVjdCBpYXZmX2V0aF9zdGF0cyBjdXJyZW50X3N0YXRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDUwLVx0c3RydWN0IHZpcnRjaG5sX3Fvc19jYXBfbGlzdCAqcW9zX2NhcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0NTE6XHRzdHJ1Y3QgaWF2Zl92c2kgdnNpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDUyLVx0dTMyIGFxX3dhaXRfY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDYwLVx0LyogQURRIHJlbGF0ZWQgbWVtYmVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDYxOlx0c3RydWN0IGlhdmZfY2hhbm5lbF9jb25maWcgY2hfY29uZmlnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDYyLVx0dTggbnVtX3RjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ4My0vKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGZkaXJfZmx0cl9sb2NrIGxvY2sgaGVsZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDg0OnN0YXRpYyBpbmxpbmUgYm9vbCBpYXZmX2ZkaXJfbWF4X3JlYWNoZWQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ4NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg9NDkwPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDkxOmlhdmZfaW5jX2ZkaXJfYWN0aXZlX2ZsdHIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ5MjpcdFx0XHQgIHN0cnVjdCBpYXZmX2ZkaXJfZmx0ciAqZmx0cilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ5My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0OTQ6XHRpZiAoaWF2Zl9pc19yYXdfZmRpcihmbHRyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ5NS1cdFx0YWRhcHRlci1cdTAwM2VyYXdfZmRpcl9hY3RpdmVfZmx0ciYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg9NTAwPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTAxOmlhdmZfZGVjX2ZkaXJfYWN0aXZlX2ZsdHIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUwMjpcdFx0XHQgIHN0cnVjdCBpYXZmX2ZkaXJfZmx0ciAqZmx0cilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUwMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1MDQ6XHRpZiAoaWF2Zl9pc19yYXdfZmRpcihmbHRyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUwNS1cdFx0YWRhcHRlci1cdTAwM2VyYXdfZmRpcl9hY3RpdmVfZmx0ci0tO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUxMjovKiBuZWVkZWQgYnkgaWF2Zl9ldGh0b29sLmMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUxMzpleHRlcm4gY2hhciBpYXZmX2RyaXZlcl9uYW1lW107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1MTU6c3RhdGljIGlubGluZSBjb25zdCBjaGFyICppYXZmX3N0YXRlX3N0cihlbnVtIGlhdmZfc3RhdGVfdCBzdGF0ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUxNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTUxOnN0YXRpYyBpbmxpbmUgdm9pZCBpYXZmX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTUyOlx0XHRcdFx0ICAgICBlbnVtIGlhdmZfc3RhdGVfdCBzdGF0ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTU5LVx0XHRcJiMzNDtzdGF0ZSB0cmFuc2l0aW9uIGZyb206JXMgdG86JXNcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjA6XHRcdGlhdmZfc3RhdGVfc3RyKGFkYXB0ZXItXHUwMDNlbGFzdF9zdGF0ZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjE6XHRcdGlhdmZfc3RhdGVfc3RyKGFkYXB0ZXItXHUwMDNlc3RhdGUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU2Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjQ6dm9pZCBpYXZmX2Rvd24oc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjU6aW50IGlhdmZfcHJvY2Vzc19jb25maWcoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjY6aW50IGlhdmZfcGFyc2VfdmZfcmVzb3VyY2VfbXNnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTY3OnZvaWQgaWF2Zl9zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTY4OnZvaWQgaWF2Zl9zY2hlZHVsZV9hcV9yZXF1ZXN0KHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHU2NCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Njk6dm9pZCBpYXZmX3NjaGVkdWxlX2ZpbmlzaF9jb25maWcoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzA6dm9pZCBpYXZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU3MTp2b2lkIGlhdmZfZnJlZV9hbGxfdHhfcmVzb3VyY2VzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTcyOnZvaWQgaWF2Zl9mcmVlX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzQ6aW50IGlhdmZfc2VuZF9hcGlfdmVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc1OmludCBpYXZmX3ZlcmlmeV9hcGlfdmVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc2OmludCBpYXZmX3NlbmRfdmZfY29uZmlnX21zZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU3NzppbnQgaWF2Zl9nZXRfdmZfY29uZmlnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc4OmludCBpYXZmX2dldF92Zl92bGFuX3YyX2NhcHMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Nzk6aW50IGlhdmZfc2VuZF92Zl9vZmZsb2FkX3ZsYW5fdjJfbXNnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTgwOmludCBpYXZmX3NlbmRfdmZfc3VwcG9ydGVkX3J4ZGlkc19tc2coc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODE6aW50IGlhdmZfZ2V0X3ZmX3N1cHBvcnRlZF9yeGRpZHMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODI6aW50IGlhdmZfc2VuZF92Zl9wdHBfY2Fwc19tc2coc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODM6aW50IGlhdmZfZ2V0X3ZmX3B0cF9jYXBzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg0OnZvaWQgaWF2Zl9zZXRfcXVldWVfdmxhbl90YWdfbG9jKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg1OnUxNiBpYXZmX2dldF9udW1fdmxhbnNfYWRkZWQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODY6dm9pZCBpYXZmX2lycV9lbmFibGUoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlciwgYm9vbCBmbHVzaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODc6dm9pZCBpYXZmX2NvbmZpZ3VyZV9xdWV1ZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODg6dm9pZCBpYXZmX2VuYWJsZV9xdWV1ZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODk6dm9pZCBpYXZmX2Rpc2FibGVfcXVldWVzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkwOnZvaWQgaWF2Zl9tYXBfcXVldWVzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkxOnZvaWQgaWF2Zl9hZGRfZXRoZXJfYWRkcnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1OTI6dm9pZCBpYXZmX2RlbF9ldGhlcl9hZGRycyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU5Mzp2b2lkIGlhdmZfYWRkX3ZsYW5zKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk0OnZvaWQgaWF2Zl9kZWxfdmxhbnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1OTU6dm9pZCBpYXZmX3NldF9wcm9taXNjdW91cyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU5Njpib29sIGlhdmZfcHJvbWlzY3VvdXNfbW9kZV9jaGFuZ2VkKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk3OnZvaWQgaWF2Zl9yZXF1ZXN0X3N0YXRzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk4OmludCBpYXZmX3JlcXVlc3RfcmVzZXQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1OTk6dm9pZCBpYXZmX2dldF9yc3NfaGFzaGNmZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwMDp2b2lkIGlhdmZfc2V0X3Jzc19oYXNoY2ZnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjAxOnZvaWQgaWF2Zl9zZXRfcnNzX2tleShzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwMjp2b2lkIGlhdmZfc2V0X3Jzc19sdXQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MDM6dm9pZCBpYXZmX3NldF9yc3NfaGZ1bmMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MDQ6dm9pZCBpYXZmX2VuYWJsZV92bGFuX3N0cmlwcGluZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwNTp2b2lkIGlhdmZfZGlzYWJsZV92bGFuX3N0cmlwcGluZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwNjp2b2lkIGlhdmZfdmlydGNobmxfY29tcGxldGlvbihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjA3LVx0XHRcdCAgICAgIGVudW0gdmlydGNobmxfb3BzIHZfb3Bjb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA4Olx0XHRcdCAgICAgIGVudW0gaWF2Zl9zdGF0dXMgdl9yZXR2YWwsIHU4ICptc2csIHUxNiBtc2dsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA5OmludCBpYXZmX2NvbmZpZ19yc3Moc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTA6dm9pZCBpYXZmX2NmZ19xdWV1ZXNfYncoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTE6dm9pZCBpYXZmX2NmZ19xdWV1ZXNfcXVhbnRhX3NpemUoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTI6dm9pZCBpYXZmX2dldF9xb3NfY2FwcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYxMzp2b2lkIGlhdmZfZW5hYmxlX2NoYW5uZWxzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE0OnZvaWQgaWF2Zl9kaXNhYmxlX2NoYW5uZWxzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE1OnZvaWQgaWF2Zl9hZGRfY2xvdWRfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE2OnZvaWQgaWF2Zl9kZWxfY2xvdWRfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE3OnZvaWQgaWF2Zl9lbmFibGVfdmxhbl9zdHJpcHBpbmdfdjIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlciwgdTE2IHRwaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE4OnZvaWQgaWF2Zl9kaXNhYmxlX3ZsYW5fc3RyaXBwaW5nX3YyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiB0cGlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYxOTp2b2lkIGlhdmZfZW5hYmxlX3ZsYW5faW5zZXJ0aW9uX3YyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiB0cGlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYyMDp2b2lkIGlhdmZfZGlzYWJsZV92bGFuX2luc2VydGlvbl92MihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1MTYgdHBpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjE6dm9pZCBpYXZmX2FkZF9mZGlyX2ZpbHRlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYyMjp2b2lkIGlhdmZfZGVsX2ZkaXJfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjIzOnZvaWQgaWF2Zl9hZGRfYWR2X3Jzc19jZmcoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjQ6dm9pZCBpYXZmX2RlbF9hZHZfcnNzX2NmZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYyNTpzdHJ1Y3QgaWF2Zl9tYWNfZmlsdGVyICppYXZmX2FkZF9maWx0ZXIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTYyNi1cdFx0XHRcdFx0Y29uc3QgdTggKm1hY2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjI3OnZvaWQgaWF2Zl9yZXNldF9zdGVwKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjI4LSNlbmRpZiAvKiBfSUFWRl9IXyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ6I2luY2x1ZGUgXCYjMzQ7aWF2Zl9zdGF0dXMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjU6I2luY2x1ZGUgXCYjMzQ7aWF2Zl90eXBlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2OiNpbmNsdWRlIFwmIzM0O2lhdmZfcmVnaXN0ZXIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjc6I2luY2x1ZGUgXCYjMzQ7aWF2Zl9hZG1pbnEuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjg6I2luY2x1ZGUgXCYjMzQ7aWF2Zl9wcm90b3R5cGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTE6ICogIGlhdmZfYWxsb2NfYWRtaW5xX2FzcV9yaW5nIC0gQWxsb2NhdGUgQWRtaW4gUXVldWUgc2VuZCByaW5nc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEyLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEzLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNDpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2FsbG9jX2FkbWlucV9hc3FfcmluZyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE2Olx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxODpcdHJldF9jb2RlID0gaWF2Zl9hbGxvY2F0ZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3EuZGVzY19idWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTk6XHRcdFx0XHRcdCBpYXZmX21lbV9hdHFfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMC1cdFx0XHRcdFx0IChody1cdTAwM2VhcS5udW1fYXNxX2VudHJpZXMgKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyNjpcdHJldF9jb2RlID0gaWF2Zl9hbGxvY2F0ZV92aXJ0X21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXNxLmNtZF9idWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjctXHRcdFx0XHRcdCAgKGh3LVx1MDAzZWFxLm51bV9hc3FfZW50cmllcyAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6Mjg6XHRcdFx0XHRcdCAgc2l6ZW9mKHN0cnVjdCBpYXZmX2FzcV9jbWRfZGV0YWlscykpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yOS1cdGlmIChyZXRfY29kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMwOlx0XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXNxLmRlc2NfYnVmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zMS1cdFx0cmV0dXJuIHJldF9jb2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozODogKiAgaWF2Zl9hbGxvY19hZG1pbnFfYXJxX3JpbmcgLSBBbGxvY2F0ZSBBZG1pbiBRdWV1ZSByZWNlaXZlIHJpbmdzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzktICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDAtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQxOnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfYWxsb2NfYWRtaW5xX2FycV9yaW5nKHN0cnVjdCBpYXZmX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDM6XHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1Olx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX2RtYV9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFycS5kZXNjX2J1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0NjpcdFx0XHRcdFx0IGlhdmZfbWVtX2FycV9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ3LVx0XHRcdFx0XHQgKGh3LVx1MDAzZWFxLm51bV9hcnFfZW50cmllcyAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTU0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjU1OiAqICBpYXZmX2ZyZWVfYWRtaW5xX2FzcSAtIEZyZWUgQWRtaW4gUXVldWUgc2VuZCByaW5nc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTU2LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy02MC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NjE6c3RhdGljIHZvaWQgaWF2Zl9mcmVlX2FkbWlucV9hc3Eoc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTYyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2MzpcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3EuZGVzY19idWYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTY0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6Njc6ICogIGlhdmZfZnJlZV9hZG1pbnFfYXJxIC0gRnJlZSBBZG1pbiBRdWV1ZSByZWNlaXZlIHJpbmdzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjgtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTcyLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo3MzpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYWRtaW5xX2FycShzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjc1Olx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFycS5kZXNjX2J1Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNzYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy03OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo3OTogKiAgaWF2Zl9hbGxvY19hcnFfYnVmcyAtIEFsbG9jYXRlIHByZS1wb3N0ZWQgYnVmZmVycyBmb3IgdGhlIHJlY2VpdmUgcXVldWVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy04MC0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy04MS0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6ODI6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9hbGxvY19hcnFfYnVmcyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTg0LVx0c3RydWN0IGxpYmllX2FxX2Rlc2MgKmRlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6ODU6XHRzdHJ1Y3QgaWF2Zl9kbWFfbWVtICpiaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo4NjpcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtODctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtOTMtXHQvKiBidWZmZXJfaW5mbyBzdHJ1Y3R1cmVzIGRvIG5vdCBuZWVkIGFsaWdubWVudCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjk0Olx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX3ZpcnRfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hcnEuZG1hX2hlYWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtOTUtXHRcdFx0XHRcdCAgKGh3LVx1MDAzZWFxLm51bV9hcnFfZW50cmllcyAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6OTY6XHRcdFx0XHRcdCAgIHNpemVvZihzdHJ1Y3QgaWF2Zl9kbWFfbWVtKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTk3LVx0aWYgKHJldF9jb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTk4LVx0XHRnb3RvIGFsbG9jX2FycV9idWZzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjk5Olx0aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpID0gKHN0cnVjdCBpYXZmX2RtYV9tZW0gKilody1cdTAwM2VhcS5hcnEuZG1hX2hlYWQudmE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTAwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xMDMtXHRcdGJpID0gXHUwMDI2aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjEwNDpcdFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX2RtYV9tZW0oaHcsIGJpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjEwNTpcdFx0XHRcdFx0XHQgaWF2Zl9tZW1fYXJxX2J1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xMDYtXHRcdFx0XHRcdFx0IGh3LVx1MDAzZWFxLmFycV9idWZfc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTM5LVx0Zm9yICg7IGkgXHUwMDNlPSAwOyBpLS0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTQwOlx0XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNDE6XHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFycS5kbWFfaGVhZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNDYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTQ3OiAqICBpYXZmX2FsbG9jX2FzcV9idWZzIC0gQWxsb2NhdGUgZW1wdHkgYnVmZmVyIHN0cnVjdHMgZm9yIHRoZSBzZW5kIHF1ZXVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTQ4LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE0OS0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTUwOnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfYWxsb2NfYXNxX2J1ZnMoc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE1MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTUyOlx0c3RydWN0IGlhdmZfZG1hX21lbSAqYmk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTUzOlx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNTQtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTU2LVx0LyogTm8gbWFwcGVkIG1lbW9yeSBuZWVkZWQgeWV0LCBqdXN0IHRoZSBidWZmZXIgaW5mbyBzdHJ1Y3R1cmVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTU3Olx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX3ZpcnRfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3EuZG1hX2hlYWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTU4LVx0XHRcdFx0XHQgIChody1cdTAwM2VhcS5udW1fYXNxX2VudHJpZXMgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE1OTpcdFx0XHRcdFx0ICAgc2l6ZW9mKHN0cnVjdCBpYXZmX2RtYV9tZW0pKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTYwLVx0aWYgKHJldF9jb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE2MS1cdFx0Z290byBhbGxvY19hc3FfYnVmcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNjI6XHRody1cdTAwM2VhcS5hc3Euci5hc3FfYmkgPSAoc3RydWN0IGlhdmZfZG1hX21lbSAqKWh3LVx1MDAzZWFxLmFzcS5kbWFfaGVhZC52YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE2Ni1cdFx0YmkgPSBcdTAwMjZody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTY3Olx0XHRyZXRfY29kZSA9IGlhdmZfYWxsb2NhdGVfZG1hX21lbShodywgYmksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTY4Olx0XHRcdFx0XHRcdCBpYXZmX21lbV9hc3FfYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE2OS1cdFx0XHRcdFx0XHQgaHctXHUwMDNlYXEuYXNxX2J1Zl9zaXplLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xODAtXHRmb3IgKDsgaSBcdTAwM2U9IDA7IGktLSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxODE6XHRcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE4MjpcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXNxLmRtYV9oZWFkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xODMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxODg6ICogIGlhdmZfZnJlZV9hcnFfYnVmcyAtIEZyZWUgcmVjZWl2ZSBxdWV1ZSBidWZmZXIgaW5mbyBlbGVtZW50c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4OS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xOTAtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE5MTpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYXJxX2J1ZnMoc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE5Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE5Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGh3LVx1MDAzZWFxLm51bV9hcnFfZW50cmllczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTk3Olx0XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTk5LVx0LyogZnJlZSB0aGUgZGVzY3JpcHRvciBtZW1vcnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMDA6XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLmRlc2NfYnVmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjAyLVx0LyogZnJlZSB0aGUgZG1hIGhlYWRlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIwMzpcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLmRtYV9oZWFkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjA3OiAqICBpYXZmX2ZyZWVfYXNxX2J1ZnMgLSBGcmVlIHNlbmQgcXVldWUgYnVmZmVyIGluZm8gZWxlbWVudHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDgtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjA5LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMTA6c3RhdGljIHZvaWQgaWF2Zl9mcmVlX2FzcV9idWZzKHN0cnVjdCBpYXZmX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMTYtXHRcdGlmIChody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0ucGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjE3Olx0XHRcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMTktXHQvKiBmcmVlIHRoZSBidWZmZXIgaW5mbyBsaXN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjIwOlx0aWF2Zl9mcmVlX3ZpcnRfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3EuY21kX2J1Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIyMi1cdC8qIGZyZWUgdGhlIGRlc2NyaXB0b3IgbWVtb3J5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjIzOlx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFzcS5kZXNjX2J1Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIyNS1cdC8qIGZyZWUgdGhlIGRtYSBoZWFkZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMjY6XHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFzcS5kbWFfaGVhZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjI3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjI5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIzMDogKiAgaWF2Zl9jb25maWdfYXNxX3JlZ3MgLSBjb25maWd1cmUgQVNRIHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIzMS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjM0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMzU6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9jb25maWdfYXNxX3JlZ3Moc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIzNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjM3Olx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjM4LVx0dTMyIHJlZyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI1OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyNTk6ICogIGlhdmZfY29uZmlnX2FycV9yZWdzIC0gQVJRIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yNjAtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI2My0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjY0OnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfY29uZmlnX2FycV9yZWdzKHN0cnVjdCBpYXZmX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yNjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI2NjpcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI2Ny1cdHUzMiByZWcgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yOTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjkxOiAqICBpYXZmX2luaXRfYXNxIC0gbWFpbiBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBBU1FcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yOTItICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMwMi0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzAzOnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfaW5pdF9hc3Eoc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMwNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzA1Olx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzA2LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMyNC1cdC8qIGFsbG9jYXRlIHRoZSByaW5nIG1lbW9yeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMyNTpcdHJldF9jb2RlID0gaWF2Zl9hbGxvY19hZG1pbnFfYXNxX3JpbmcoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMyNi1cdGlmIChyZXRfY29kZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzI5LVx0LyogYWxsb2NhdGUgYnVmZmVycyBpbiB0aGUgcmluZ3MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozMzA6XHRyZXRfY29kZSA9IGlhdmZfYWxsb2NfYXNxX2J1ZnMoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMzMS1cdGlmIChyZXRfY29kZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzM0LVx0LyogaW5pdGlhbGl6ZSBiYXNlIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMzNTpcdHJldF9jb2RlID0gaWF2Zl9jb25maWdfYXNxX3JlZ3MoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMzNi1cdGlmIChyZXRfY29kZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzQ0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaHctXHUwMDNlYXEubnVtX2FzcV9lbnRyaWVzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozNDU6XHRcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM0NjpcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXNxLmRtYV9oZWFkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzQ4LWluaXRfYWRtaW5xX2ZyZWVfcmluZ3M6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzQ5Olx0aWF2Zl9mcmVlX2FkbWlucV9hc3EoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzU1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM1NjogKiAgaWF2Zl9pbml0X2FycSAtIGluaXRpYWxpemUgQVJRXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzU3LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNjctICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM2ODpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2luaXRfYXJxKHN0cnVjdCBpYXZmX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNjkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM3MDpcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM3MS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zODktXHQvKiBhbGxvY2F0ZSB0aGUgcmluZyBtZW1vcnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozOTA6XHRyZXRfY29kZSA9IGlhdmZfYWxsb2NfYWRtaW5xX2FycV9yaW5nKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zOTEtXHRpZiAocmV0X2NvZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM5NC1cdC8qIGFsbG9jYXRlIGJ1ZmZlcnMgaW4gdGhlIHJpbmdzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6Mzk1Olx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jX2FycV9idWZzKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zOTYtXHRpZiAocmV0X2NvZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM5OS1cdC8qIGluaXRpYWxpemUgYmFzZSByZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0MDA6XHRyZXRfY29kZSA9IGlhdmZfY29uZmlnX2FycV9yZWdzKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MDEtXHRpZiAocmV0X2NvZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQwOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGh3LVx1MDAzZWFxLm51bV9hcnFfZW50cmllczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDEwOlx0XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0MTE6XHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFycS5kbWFfaGVhZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDEyLWluaXRfYWRtaW5xX2ZyZWVfcmluZ3M6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDEzOlx0aWF2Zl9mcmVlX2FkbWlucV9hcnEoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQxNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDE5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQyMDogKiAgaWF2Zl9zaHV0ZG93bl9hc3EgLSBzaHV0ZG93biB0aGUgQVNRXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDIxLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MjQtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQyNTpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX3NodXRkb3duX2FzcShzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0Mjc6XHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ0NS1cdC8qIGZyZWUgcmluZyBidWZmZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDQ2Olx0aWF2Zl9mcmVlX2FzcV9idWZzKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ1My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0NTQ6ICogIGlhdmZfc2h1dGRvd25fYXJxIC0gc2h1dGRvd24gQVJRXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDU1LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NTgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1OTpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX3NodXRkb3duX2FycShzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDYwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0NjE6XHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ3OS1cdC8qIGZyZWUgcmluZyBidWZmZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDgwOlx0aWF2Zl9mcmVlX2FycV9idWZzKGh3KTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDg1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIElBVkYgRHJpdmVyIGFuZCBpdHMgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGlhdmZgIGRyaXZlciDigJMgSW50ZWwmIzM5O3MgRXRoZXJuZXQgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIFRoZSBgTWFrZWZpbGVgIGNvbmZpcm1zIGl0LCBhbmQgdGhlIG5hbWUgYWxvbmUgc2NyZWFtcyB2aXJ0dWFsaXphdGlvbiwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgb2YgU1ItSU9WLiAgQWgsIHJpZ2h0LCBWRiBkcml2ZXJzIGFyZSAqc3BlY2lmaWNhbGx5KiBmb3IgVk1zIHdpdGggU1ItSU9WLiAgQnV0IHRoZSBjcml0aWNhbCBwaWVjZSBpcyB0aGF0IHRoZXkgbmVlZCBkZWRpY2F0ZWQgaGFyZHdhcmUsIHBhc3NlZCB0aHJvdWdoIHZpYSBQQ0kgcGFzc3Rocm91Z2guICBDYW4gYGlhdmZgIGJlIGVtdWxhdGVkIHRoZW4/ICBObywgUUVNVSBkb2VzbiYjMzk7dCBuYXRpdmVseSBlbXVsYXRlIHRoZSBJbnRlbCBBVkYuCgpUaGUgbmV4dCBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGRvZXMgc3l6a2FsbGVyIGZ1enogdGhpcz8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIHByb21wdCBtZW50aW9ucyBhIHJlc3RyaWN0aW9uLCBmb2N1c2luZyBvbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgbGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSwgdGhhdCBkZXBlbmQgb24gKmFjdHVhbCogUENJZSBoYXJkd2FyZS4gSXMgYGlhdmZgIG9uZSBvZiAqdGhvc2UqPyBXZWxsLCBpdCYjMzk7cyBhbiBJbnRlbCBFdGhlcm5ldCBkcml2ZXIsIHNvIHllcywgSSYjMzk7ZCBzYXkgdGhhdCBmaXRzIHRoZSBkZXNjcmlwdGlvbi4KCkJ1dCB3YWl0IGEgbWludXRlLCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYHN5el9wY2lfZGV2aWNlYCwgd2hpY2ggKmNhbiogZW11bGF0ZSBQQ0kgZGV2aWNlcy4gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSB3aXRoIHRoaXMgbWVjaGFuaXNtLCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGNvbXBvbmVudHMuIFBlcmhhcHMgaXQgY2FuIGhhbmRsZSBgaWF2ZmA/IEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIGRlc2NyaXB0aW9uIGluIHN5emthbGxlciBmb3IgYGlhdmZgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWF2ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzE3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBUYXNrIGFuZCBBdmFpbGFibGUgVG9vbHMqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVzdHJpY3Rpb25zLiBJIHNlZSB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgZm9yYmlkcyB1c2luZyBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gc2VhcmNoIHdpdGhpbiBgc3lzL2AuIFRoYXQmIzM5O3MgYSBrZXkgZGV0YWlsIOKAkyBpdCBzZWVtcyBsaWtlIHRoZXNlIGBzeXpfKmAgY2FsbHMgYXJlIHNwZWNpZmljIHRvIHN5emthbGxlciBhbmQgbm90IGRpcmVjdGx5IHByZXNlbnQgaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UuIEkgd2FzIGV4cGVjdGluZyBgcmVhZC1zeXotc3BlY2AgYW5kIGBzeXotZ3JlcHBlcmAgYnV0IEkgZG9uJiMzOTt0IHNlZSB0aG9zZSB0b29scyBsaXN0ZWQuIEkgYW0gY29uc3RyYWluZWQgdG8gdXNpbmcgYGRlZmF1bHRfYXBpOmdyZXBwZXJgLCBgZGVmYXVsdF9hcGk6Y29kZXNlYXJjaC1kaXItaW5kZXhgLCBgZGVmYXVsdF9hcGk6cmVhZC1maWxlYCwgYW5kIGBkZWZhdWx0X2FwaTpzZXQtcmVzdWx0c2AuIFJpZ2h0LCBJIGhhdmUgdG8gd29yayB3aXRoIHdoYXQmIzM5O3MgYXZhaWxhYmxlLgoKTm93LCBJIG5lZWQgdG8gYXBwbHkgdGhlIHJ1bGU6ICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpJIHNlZSBgaWF2ZmAgbWVudGlvbmVkLiBJcyB0aGF0IGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyPyBZZXMsIGl0JiMzOTtzIGFuIEludGVsIEV0aGVybmV0IGRyaXZlci4gT2theSwgYnV0IHRoZSBuZXh0IHF1ZXN0aW9uIGlzIGlmIGl0JiMzOTtzIGVtdWxhdGVkIGluIFFFTVUuIExldCYjMzk7cyBzZWUuLi4gUUVNVSBlbXVsYXRlcyBgZTEwMDBgLCBgZTEwMDBlYCwgYHJ0bDgxMzlgLCBgdmlydGlvLW5ldGAsIGB2bXhuZXQzYCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYGk4MjU1OWVyYCwgYHR1bGlwYC4gTm8sIGl0IGRvZXNuJiMzOTt0IGVtdWxhdGUgYGlhdmZgLgoKV2FpdCwgd2hhdCBhYm91dCBgbGliZXRoYD8gVGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYGluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oYC4gSSYjMzk7ZCBiZXR0ZXIgZmlndXJlIG91dCB3aGF0IGBsaWJldGhgIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2xpYmV0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2NTMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTktLyoqXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDoxMDogKiBsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCAtIG1ha2Ugc3VyZSBjYWNoZWxpbmUgZ3JvdXAgc2l6ZSBpcyBleHBlY3RlZFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMTEtICogQHR5cGU6IHR5cGUgb2YgdGhlIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBncm91cFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTE1LSNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXHUwMDI2XHUwMDI2IFNNUF9DQUNIRV9CWVRFUyA9PSA2NFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6MTY6I2RlZmluZSBsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCh0eXBlLCBncnAsIHN6KVx0XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0xNy1cdHN0YXRpY19hc3NlcnQob2Zmc2V0b2YodHlwZSwgX19jYWNoZWxpbmVfZ3JvdXBfZW5kX18jI2dycCkgLVx0ICAgICAgXFxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0xOS1cdFx0ICAgICAgKHN6KSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjIwOiNkZWZpbmUgX19saWJldGhfY2FjaGVsaW5lX3N0cnVjdF9hc3NlcnQodHlwZSwgc3opXHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTIxLVx0c3RhdGljX2Fzc2VydChzaXplb2YodHlwZSkgPT0gKHN6KSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTIyLSNlbHNlIC8qICFDT05GSUdfNjRCSVQgfHwgU01QX0NBQ0hFX0JZVEVTICE9IDY0ICovXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDoyMzojZGVmaW5lIGxpYmV0aF9jYWNoZWxpbmVfZ3JvdXBfYXNzZXJ0KHR5cGUsIGdycCwgc3opXHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTI0LVx0c3RhdGljX2Fzc2VydChvZmZzZXRvZih0eXBlLCBfX2NhY2hlbGluZV9ncm91cF9lbmRfXyMjZ3JwKSAtXHQgICAgICBcXFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTI2LVx0XHQgICAgICAoc3opKVxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6Mjc6I2RlZmluZSBfX2xpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCh0eXBlLCBzeilcdFx0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMjgtXHRzdGF0aWNfYXNzZXJ0KHNpemVvZih0eXBlKSBcdTAwM2M9IChzeikpXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMzAtXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDozMTojZGVmaW5lIF9fbGliZXRoX2NsczEoc3oxKVx0U01QX0NBQ0hFX0FMSUdOKHN6MSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjMyOiNkZWZpbmUgX19saWJldGhfY2xzMihzejEsIHN6MilcdChTTVBfQ0FDSEVfQUxJR04oc3oxKSAmIzQzOyBTTVBfQ0FDSEVfQUxJR04oc3oyKSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjMzOiNkZWZpbmUgX19saWJldGhfY2xzMyhzejEsIHN6Miwgc3ozKVx0XHRcdFx0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMzQtXHQoU01QX0NBQ0hFX0FMSUdOKHN6MSkgJiM0MzsgU01QX0NBQ0hFX0FMSUdOKHN6MikgJiM0MzsgU01QX0NBQ0hFX0FMSUdOKHN6MykpXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDozNTojZGVmaW5lIF9fbGliZXRoX2NscyguLi4pXHRcdFx0XHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjM2Olx0Q09OQ0FURU5BVEUoX19saWJldGhfY2xzLCBDT1VOVF9BUkdTKF9fVkFfQVJHU19fKSkoX19WQV9BUkdTX18pXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0zNy1cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTM4LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6Mzk6ICogbGliZXRoX2NhY2hlbGluZV9zdHJ1Y3RfYXNzZXJ0IC0gbWFrZSBzdXJlIENMLWJhc2VkIHN0cnVjdCBzaXplIGlzIGV4cGVjdGVkXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC00MC0gKiBAdHlwZTogdHlwZSBvZiB0aGUgc3RydWN0XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtNDYtICovXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo0NzojZGVmaW5lIGxpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCh0eXBlLCAuLi4pXHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjQ4Olx0X19saWJldGhfY2FjaGVsaW5lX3N0cnVjdF9hc3NlcnQodHlwZSwgX19saWJldGhfY2xzKF9fVkFfQVJHU19fKSk7ICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC00OS1cdHN0YXRpY19hc3NlcnQoX19hbGlnbm9mKHR5cGUpIFx1MDAzZT0gU01QX0NBQ0hFX0JZVEVTKVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTUxLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NTI6ICogbGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0IC0gbWFrZSBzdXJlIENMLWJhc2VkIHN0cnVjdCBsYXlvdXQgaXMgZXhwZWN0ZWRcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTUzLSAqIEB0eXBlOiB0eXBlIG9mIHRoZSBzdHJ1Y3Rcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC01OS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjYwOiNkZWZpbmUgbGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0KHR5cGUsIHJvLCBydywgYylcdFx0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjE6XHRsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCh0eXBlLCByZWFkX21vc3RseSwgcm8pO1x0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjI6XHRsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCh0eXBlLCByZWFkX3dyaXRlLCBydyk7XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo2MzpcdGxpYmV0aF9jYWNoZWxpbmVfZ3JvdXBfYXNzZXJ0KHR5cGUsIGNvbGQsIGMpO1x0XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo2NDpcdGxpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCh0eXBlLCBybywgcncsIGMpXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC02NS1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zNC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjM1OiAqIHN0cnVjdCBsaWJldGhfZnFlIC0gc3RydWN0dXJlIHJlcHJlc2VudGluZyBhbiBSeCBidWZmZXIgKGZpbGwgcXVldWUgZWxlbWVudClcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTM2LSAqIEBuZXRtZW06IG5ldHdvcmsgbWVtb3J5IHJlZmVyZW5jZSBob2xkaW5nIHRoZSBidWZmZXJcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC00My0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjQ0OnN0cnVjdCBsaWJldGhfZnFlIHtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTQ1LVx0bmV0bWVtX3JlZlx0XHRuZXRtZW07XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNTAtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo1MTogKiBlbnVtIGxpYmV0aF9mcWVfdHlwZSAtIGVudW0gcmVwcmVzZW50aW5nIHR5cGVzIG9mIFJ4IGJ1ZmZlcnNcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTUyLSAqIEBMSUJFVEhfRlFFX01UVTogYnVmZmVyIHNpemUgaXMgZGV0ZXJtaW5lZCBieSBNVFVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC01NS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjU2OmVudW0gbGliZXRoX2ZxZV90eXBlIHtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTU3LVx0TElCRVRIX0ZRRV9NVFVcdFx0PSAwVSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC02Mi0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjYzOiAqIHN0cnVjdCBsaWJldGhfZnEgLSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgYnVmZmVyIChmaWxsKSBxdWV1ZVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNjQtICogQGZwOiBob3RwYXRoIHBhcnQgb2YgdGhlIHN0cnVjdHVyZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTc0LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6NzU6c3RydWN0IGxpYmV0aF9mcSB7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3NjpcdHN0cnVjdF9ncm91cF90YWdnZWQobGliZXRoX2ZxX2ZwLCBmcCxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTc3LVx0XHRzdHJ1Y3QgcGFnZV9wb29sXHQqcHA7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3ODpcdFx0c3RydWN0IGxpYmV0aF9mcWVcdCpmcWVzO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNzktXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtODQtXHQvKiBDb2xkIGZpZWxkcyAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6ODU6XHRlbnVtIGxpYmV0aF9mcWVfdHlwZVx0dHlwZToyO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtODYtXHRib29sXHRcdFx0aHNwbGl0OjE7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtOTItXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo5MzppbnQgbGliZXRoX3J4X2ZxX2NyZWF0ZShzdHJ1Y3QgbGliZXRoX2ZxICpmcSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjk0OnZvaWQgbGliZXRoX3J4X2ZxX2Rlc3Ryb3koc3RydWN0IGxpYmV0aF9mcSAqZnEpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtOTUtXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05Ni0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjk3OiAqIGxpYmV0aF9yeF9hbGxvYyAtIGFsbG9jYXRlIGEgbmV3IFJ4IGJ1ZmZlclxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtOTgtICogQGZxOiBmaWxsIHF1ZXVlIHRvIGFsbG9jYXRlIGZvclxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEwMy0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjEwNDpzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgbGliZXRoX3J4X2FsbG9jKGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgKmZxLCB1MzIgaSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEwNS17XG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxMDY6XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqYnVmID0gXHUwMDI2ZnEtXHUwMDNlZnFlc1tpXTtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEwNy1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMTctXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxMTg6dm9pZCBsaWJldGhfcnhfcmVjeWNsZV9zbG93KG5ldG1lbV9yZWYgbmV0bWVtKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTExOS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEyMC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjEyMTogKiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTIyLSAqIEBwb29sOiBcdTAwMjZwYWdlX3Bvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMzAtICovXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxMzE6c3RhdGljIGlubGluZSBib29sIF9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShjb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTMyOlx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEzMy1cdFx0XHRcdFx0ICAgIHUzMiBsZW4pXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTM5LVx0aWYgKHVubGlrZWx5KCFsZW4pKSB7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxNDA6XHRcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3coZnFlLVx1MDAzZW5ldG1lbSk7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNDEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNDktLyoqXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxNTA6ICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNTEtICogQGZxZTogYnVmZmVyIHRvIHByb2Nlc3Ncbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNTktICovXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxNjA6c3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTE2MS1cdFx0XHRcdFx0ICB1MzIgbGVuKVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTYyLXtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjE2MzpcdHJldHVybiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUobmV0bWVtX2dldF9wcChmcWUtXHUwMDNlbmV0bWVtKSwgZnFlLCBsZW4pO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTY0LX1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaD0xOTU9ZW51bSB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjA4LVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjA5OnN0cnVjdCBsaWJldGhfcnhfcHQge1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjEwLVx0dTMyXHRcdFx0XHRcdG91dGVyX2lwOjI7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjIyLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjIzOiAqIHN0cnVjdCBsaWJldGhfcnhfY3N1bSAtIGNoZWNrc3VtIG9mZmxvYWQgYml0cyBkZWNvZGVkIGZyb20gdGhlIFJ4IGRlc2NyaXB0b3JcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTIyNC0gKiBAbDNsNHA6IGRldGVjdGFibGUgTDMgYW5kIEw0IGludGVncml0eSBjaGVjayBpcyBwcm9jZXNzZWQgYnkgdGhlIGhhcmR3YXJlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjM1LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjM2OnN0cnVjdCBsaWJldGhfcnhfY3N1bSB7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yMzctXHR1MzJcdFx0XHRcdFx0bDNsNHA6MTtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNTEtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoyNTI6ICogc3RydWN0IGxpYmV0aF9ycWVfaW5mbyAtIHJlY2VpdmUgcXVldWUgZWxlbWVudCBpbmZvXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNTMtICogQGxlbjogcGFja2V0IGxlbmd0aFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI1OC0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjI1OTpzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIHtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI2MC1cdHUzMlx0XHRcdFx0XHRsZW47XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjY4LVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjY5OnZvaWQgbGliZXRoX3J4X3B0X2dlbl9oYXNoX3R5cGUoc3RydWN0IGxpYmV0aF9yeF9wdCAqcHQpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjcwLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjcxLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjcyOiAqIGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyIC0gZ2V0IElQIHZlcnNpb24gZnJvbSBhIHBhY2tldCB0eXBlIHN0cnVjdHVyZVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjczLSAqIEBwdDogcGFja2V0IHR5cGUgcGFyYW1zXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjc5LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjgwOnN0YXRpYyBpbmxpbmUgdTMyIGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yODEte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI5My1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjI5NDovKiBsaWJldGhfaGFzXyooKSBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgdGhlIEhXIG1ldGFkYXRhIGlzXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yOTUtICogYXZhaWxhYmxlIHRvIGF2b2lkIGZ1cnRoZXIgZXhwZW5zaXZlIHByb2Nlc3Npbmcgc3VjaCBhcyBkZXNjcmlwdG9yIHJlYWRzLlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI5OS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMwMDpzdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MzAxOlx0XHRcdFx0XHQgICAgIHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMDIte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTMwOS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMxMDpzdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3J4X3B0X2hhc19oYXNoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMTE6XHRcdFx0XHRcdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IHB0KVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMzEyLXtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMTctLyoqXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMTg6ICogbGliZXRoX3J4X3B0X3NldF9oYXNoIC0gZmlsbCBpbiBza2IgaGFzaCB2YWx1ZSBiYXNpbmcgb24gdGhlIFBUXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMTktICogQHNrYjogc2tiIHRvIGZpbGwgdGhlIGhhc2ggaW5cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMjItICovXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMjM6c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF9yeF9wdF9zZXRfaGFzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaGFzaCxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMyNDpcdFx0XHRcdFx0IHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMjUte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTgtXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo5OiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgvdHlwZXMuaFx1MDAzZVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTAtXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTMtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxNDogKiBlbnVtIGxpYmV0aF9zcWVfdHlwZSAtIHR5cGUgb2YgXHUwMDI2bGliZXRoX3NxZSB0byBhY3Qgb24gVHggY29tcGxldGlvblxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTUtICogQExJQkVUSF9TUUVfRU1QVFk6IHVudXNlZC9lbXB0eSBPUiBYRFBfVFgvWFNrIGZyYW1lLCBubyBhY3Rpb24gcmVxdWlyZWRcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0yMC0gKiBAX19MSUJFVEhfU1FFX1hEUF9TVEFSVDogc2VwYXJhdG9yIGJldHdlZW4gc2tiIGFuZCBYRFAgdHlwZXNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjIxOiAqIEBMSUJFVEhfU1FFX1hEUF9UWDogXHUwMDI2c2tiX3NoYXJlZF9pbmZvLCBsaWJldGhfeGRwX3JldHVybl9idWZmX2J1bGsoKSwgc3RhdHNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTIyLSAqIEBMSUJFVEhfU1FFX1hEUF9YTUlUOiBcdTAwMjZ4ZHBfZnJhbWUsIHVubWFwIGFuZCB4ZHBfcmV0dXJuX2ZyYW1lX2J1bGsoKSwgc3RhdHNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTIzLSAqIEBMSUJFVEhfU1FFX1hEUF9YTUlUX0ZSQUc6IFx1MDAyNnhkcF9mcmFtZSBmcmFnLCBvbmx5IHVubWFwIERNQVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MjQ6ICogQExJQkVUSF9TUUVfWFNLX1RYOiBcdTAwMjZsaWJldGhfeGRwX2J1ZmYgb24gWFNrIHF1ZXVlLCB4c2tfYnVmZl9mcmVlKCksIHN0YXRzXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoyNTogKiBATElCRVRIX1NRRV9YU0tfVFhfRlJBRzogXHUwMDI2bGliZXRoX3hkcF9idWZmIGZyYWcgb24gWFNrIHF1ZXVlLCB4c2tfYnVmZl9mcmVlKClcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTI2LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6Mjc6ZW51bSBsaWJldGhfc3FlX3R5cGUge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMjgtXHRMSUJFVEhfU1FFX0VNUFRZXHRcdD0gMFUsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtNDItLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo0MzogKiBzdHJ1Y3QgbGliZXRoX3NxZSAtIHJlcHJlc2VudHMgYSBTZW5kIFF1ZXVlIEVsZW1lbnQgLyBUeCBidWZmZXJcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTQ0LSAqIEB0eXBlOiB0eXBlIG9mIHRoZSBidWZmZXIsIHNlZSB0aGUgZW51bSBhYm92ZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTU3LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6NTg6c3RydWN0IGxpYmV0aF9zcWUge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6NTk6XHRlbnVtIGxpYmV0aF9zcWVfdHlwZVx0XHR0eXBlOjMyO1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtNjAtXHR1MzJcdFx0XHRcdHJzX2lkeDtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC02Ni1cdFx0c3RydWN0IHhkcF9mcmFtZVx0XHQqeGRwZjtcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjY3Olx0XHRzdHJ1Y3QgbGliZXRoX3hkcF9idWZmXHRcdCp4c2s7XG5pbmNsdWRlL25ldC9saWJldGgvdHguaC02OC1cdH07XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtODEtICogTElCRVRIX1NRRV9DSEVDS19QUklWIC0gY2hlY2sgdGhlIGRyaXZlciYjMzk7cyBwcml2YXRlIFNRRSBkYXRhXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo4MjogKiBAcDogdHlwZSBvciBuYW1lIG9mIHRoZSBvYmplY3QgdGhlIGRyaXZlciB3YW50cyB0byBmaXQgaW50byBcdTAwMjZsaWJldGhfc3FlXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04My0gKlxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6ODQ6ICogTWFrZSBzdXJlIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIGZpdHMgaW50byBsaWJldGhfc3FlOjpwcml2LiBUbyBiZSB1c2VkXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04NS0gKiByaWdodCBhZnRlciBpdHMgZGVjbGFyYXRpb24uXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtODctI2RlZmluZSBMSUJFVEhfU1FFX0NIRUNLX1BSSVYocClcdFx0XHRcdFx0ICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6ODg6XHRzdGF0aWNfYXNzZXJ0KHNpemVvZihwKSBcdTAwM2M9IHNpemVvZl9maWVsZChzdHJ1Y3QgbGliZXRoX3NxZSwgcHJpdikpXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04OS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTkwLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6OTE6ICogc3RydWN0IGxpYmV0aF9jcV9wcCAtIGNvbXBsZXRpb24gcXVldWUgcG9sbCBwYXJhbXNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTkyLSAqIEBkZXY6IFx1MDAyNmRldmljZSB0byBwZXJmb3JtIERNQSB1bm1hcHBpbmdcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC05OC0gKlxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6OTk6ICogbGliZXRoIHVzZXMgdGhpcyBzdHJ1Y3R1cmUgdG8gYWNjZXNzIG9iamVjdHMgbmVlZGVkIGZvciBwZXJmb3JtaW5nIGZ1bGxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTEwMC0gKiBUeCBjb21wbGV0ZSBvcGVyYXRpb24gd2l0aG91dCBwYXNzaW5nIGxvdHMgb2YgYXJndW1lbnRzIGFuZCBjaGFuZ2UgdGhlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTAyLSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTAzOnN0cnVjdCBsaWJldGhfY3FfcHAge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTA0LVx0c3RydWN0IGRldmljZVx0XHRcdCpkZXY7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTA3LVx0dW5pb24ge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTA4Olx0XHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHNcdCpzcztcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjEwOTpcdFx0c3RydWN0IGxpYmV0aF94ZHBzcV9uYXBpX3N0YXRzXHQqeHNzO1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTEwLVx0fTtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xMTYtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxMTc6ICogbGliZXRoX3R4X2NvbXBsZXRlIC0gcGVyZm9ybSBUeCBjb21wbGV0aW9uIGZvciBvbmUgU1FFXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xMTgtICogQHNxZTogU1FFIHRvIGNvbXBsZXRlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTIzLSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTI0OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfdHhfY29tcGxldGUoc3RydWN0IGxpYmV0aF9zcWUgKnNxZSxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjEyNTpcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfY3FfcHAgKmNwKVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTI2LXtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xNTYtXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxNTc6dm9pZCBsaWJldGhfdHhfY29tcGxldGVfYW55KHN0cnVjdCBsaWJldGhfc3FlICpzcWUsIHN0cnVjdCBsaWJldGhfY3FfcHAgKmNwKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTE1OC1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMS0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjEyOiAqIHN0cnVjdCBsaWJldGhfcnFfbmFwaV9zdGF0cyAtIFwmIzM0O2hvdFwmIzM0OyBjb3VudGVycyB0byB1cGRhdGUgaW4gUnggcG9sbGluZyBsb29wXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMy0gKiBAcGFja2V0czogcmVjZWl2ZWQgZnJhbWVzIGNvdW50ZXJcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xOC0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjE5OnN0cnVjdCBsaWJldGhfcnFfbmFwaV9zdGF0cyB7XG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0yMC1cdHVuaW9uIHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0zMS0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjMyOiAqIHN0cnVjdCBsaWJldGhfc3FfbmFwaV9zdGF0cyAtIFwmIzM0O2hvdFwmIzM0OyBjb3VudGVycyB0byB1cGRhdGUgaW4gVHggY29tcGxldGlvbiBsb29wXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0zMy0gKiBAcGFja2V0czogY29tcGxldGVkIGZyYW1lcyBjb3VudGVyXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMzYtICovXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDozNzpzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMzgtXHR1bmlvbiB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNDctLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo0ODogKiBzdHJ1Y3QgbGliZXRoX3hkcHNxX25hcGlfc3RhdHMgLSBcJiMzNDtob3RcJiMzNDsgY291bnRlcnMgdG8gdXBkYXRlIGluIFhEUCBUeFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNDktICpcdFx0XHRcdCAgICBjb21wbGV0aW9uIGxvb3Bcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC01NC0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjU1OnN0cnVjdCBsaWJldGhfeGRwc3FfbmFwaV9zdGF0cyB7XG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC01Ni1cdHVuaW9uIHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC02OS0gKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZXMgc2hvdWxkIGJlIGVtYmVkZGVkIGludG8gZHJpdmVyJiMzOTtzIHF1ZXVlIHN0cnVjdHVyZVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmg6NzA6ICogYW5kIHBhc3NlZCB0byB0aGUgbGliZXRoX3hkcCBoZWxwZXJzLCBuZXZlciB1c2VkIGRpcmVjdGx5LlxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNzEtICovXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNzUtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo3NjogKiBzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgLSBsb2NraW5nIHByaW1pdGl2ZSBmb3Igc2hhcmluZyBYRFBTUXNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTc3LSAqIEBsb2NrOiBzcGlubG9jayBmb3IgbG9ja2luZyB0aGUgcXVldWVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC03OS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjgwOnN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayB7XG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC04MS1cdHNwaW5sb2NrX3RcdFx0XHRsb2NrO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTg3LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmg6ODg6ICogc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAtIHRpbWVyIGZvciBjbGVhbmluZyB1cCBYRFBTUXMgdy9vIGludGVycnVwdHNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTg5LSAqIEB4ZHBzcTogcXVldWUgdGhpcyB0aW1lciBiZWxvbmdzIHRvXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtOTYtICovXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo5NzpzdHJ1Y3QgbGliZXRoX3hkcHNxX3RpbWVyIHtcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTk4LVx0dm9pZFx0XHRcdFx0KnhkcHNxO1xuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmg6OTk6XHRzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2tcdCpsb2NrO1xuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTAwLVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwNi0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjEwNzogKiBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmX3N0YXNoIC0gc3RydWN0IGZvciBzdGFzaGluZyBcdTAwMjZ4ZHBfYnVmZiBvbnRvIGEgcXVldWVcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwOC0gKiBAZGF0YTogcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZyYW1lLCB4ZHBfYnVmZi5kYXRhXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTEzLSAqXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMTQ6ICogXHUwMDI2eGRwX2J1ZmYgaXMgNTYgYnl0ZXMgbG9uZyBvbiB4NjQsIFx1MDAyNmxpYmV0aF94ZHBfYnVmZiBpcyA2NCBieXRlcy4gVGhpc1xuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTE1LSAqIHN0cnVjdHVyZSBjYXJyaWVzIG9ubHkgbmVjZXNzYXJ5IGZpZWxkcyB0byBzYXZlL3Jlc3RvcmUgYSBwYXJ0aWFsbHkgYnVpbHRcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMTctICovXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMTg6c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB7XG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMTktXHR2b2lkXHRcdFx0XHQqZGF0YTtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMDojaW5jbHVkZSBcdTAwM2NuZXQvbGliZXRoL3J4LmhcdTAwM2VcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMTojaW5jbHVkZSBcdTAwM2NuZXQvbGliZXRoL3R4LmhcdTAwM2VcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMi0jaW5jbHVkZSBcdTAwM2NuZXQveHNrX2J1ZmZfcG9vbC5oXHUwMDNlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTE4PWVudW0ge1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNi0vKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI3OiAqIFx1MDAyNnhkcF9idWZmX3hzayBpcyB0aGUgbGFyZ2VzdCBzdHJ1Y3R1cmUgXHUwMDI2bGliZXRoX3hkcF9idWZmIGdldHMgY2FzdGVkIHRvLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI4LSAqIHBpY2sgbWF4aW11bSBwb2ludGVyLWNvbXBhdGlibGUgYWxpZ25tZW50LlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0zNS0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDozNjogKiBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmIC0gbGliZXRoIGV4dGVuc2lvbiBvdmVyIFx1MDAyNnhkcF9idWZmXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMzctICogQGJhc2U6IG1haW4gXHUwMDI2eGRwX2J1ZmZcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNDYtICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NDc6c3RydWN0IGxpYmV0aF94ZHBfYnVmZiB7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNDgtXHR1bmlvbiB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTU2LX0gX19hbGlnbmVkKF9fTElCRVRIX1hEUF9CVUZGX0FMSUdOKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo1NzpzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYsIGRhdGEpID09XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNTgtXHQgICAgICBvZmZzZXRvZihzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHAuZGF0YSkpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjU5OnN0YXRpY19hc3NlcnQob2Zmc2V0b2Yoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgZGVzYykgPT1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC02MC1cdCAgICAgIG9mZnNldG9mKHN0cnVjdCB4ZHBfYnVmZl94c2ssIGNiKSk7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9NjE9c3RhdGljX2Fzc2VydChJU19BTElHTkVEKHNpemVvZihzdHJ1Y3QgeGRwX2J1ZmZfeHNrKSxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo2MjpcdFx0XHQgX19hbGlnbm9mKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYpKSk7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjMtXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NjU6ICogX19MSUJFVEhfWERQX09OU1RBQ0tfQlVGRiAtIGRlY2xhcmUgYSBcdTAwMjZsaWJldGhfeGRwX2J1ZmYgb24gdGhlIHN0YWNrXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjYtICogQG5hbWU6IG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGRlY2xhcmVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNzEtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NzI6ICogTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYgLSBkZWNsYXJlIGEgXHUwMDI2bGliZXRoX3hkcF9idWZmIG9uIHRoZSBzdGFja1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTczLSAqIEBuYW1lOiBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0byBkZWNsYXJlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTc2LSNkZWZpbmUgTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYobmFtZSwgLi4uKVx0XHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo3NzpcdF9fTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYobmFtZSwgX19saWJldGhfeGRwX3ByaXZfc3ooX19WQV9BUkdTX18pKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTc4LVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTc5LSNkZWZpbmUgX19fTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYobmFtZSwgLi4uKVx0XHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4MDpcdF9fREVGSU5FX0ZMRVgoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgbmFtZSwgcHJpdixcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04MS1cdFx0ICAgICAgTElCRVRIX1hEUF9QUklWX1NaKF9fVkFfQVJHU19fICYjNDM7IDApLFx0XHQgICAgICBcXFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04NC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4NTojZGVmaW5lIF9fbGliZXRoX3hkcF9wcml2X3N6KC4uLilcdFx0XHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4NjpcdENPTkNBVEVOQVRFKF9fbGliZXRoX3hkcF9wc3osIENPVU5UX0FSR1MoX19WQV9BUkdTX18pKShfX1ZBX0FSR1NfXylcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04Ny1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4ODojZGVmaW5lIF9fbGliZXRoX3hkcF9wc3owKC4uLilcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4OTojZGVmaW5lIF9fbGliZXRoX3hkcF9wc3oxKC4uLilcdFx0c2l6ZW9mKF9fVkFfQVJHU19fKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTkwLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTkxLSNkZWZpbmUgTElCRVRIX1hEUF9QUklWX1NaKHN6KVx0XHRcdFx0XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6OTI6XHQoQUxJR04oc3osIF9fYWxpZ25vZihzdHJ1Y3QgbGliZXRoX3hkcF9idWZmKSkgLyBzaXplb2YobG9uZykpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTMtXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTk2LVx0c3RhdGljX2Fzc2VydChvZmZzZXRvZmVuZChzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCBjYikgXHUwMDNlPVx0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjk3Olx0XHQgICAgICBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYsIHByaXYsXHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTk4LVx0XHRcdFx0ICAgIExJQkVUSF9YRFBfUFJJVl9TWihzeikpKVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDEtXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTAyOkRFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShsaWJldGhfeGRwc3Ffc2hhcmUpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEwMy1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTA1OiAqIGxpYmV0aF94ZHBzcV9udW0gLSBjYWxjdWxhdGUgb3B0aW1hbCBudW1iZXIgb2YgWERQU1FzIGZvciB0aGlzIGRldmljZSAmIzQzOyBzeXNcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDYtICogQHJ4cTogY3VycmVudCBudW1iZXIgb2YgYWN0aXZlIFJ4IHF1ZXVlc1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMTUtICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTE2OnN0YXRpYyBpbmxpbmUgdTMyIGxpYmV0aF94ZHBzcV9udW0odTMyIHJ4cSwgdTMyIHR4cSwgdTMyIG1heClcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMTcte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjEtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTIyOiAqIGxpYmV0aF94ZHBzcV9zaGFyZWQgLSB3aGV0aGVyIFhEUFNRcyBjYW4gYmUgc2hhcmVkIGJldHdlZW4gc2V2ZXJhbCBDUFVzXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTIzLSAqIEBudW06IG51bWJlciBvZiBhY3RpdmUgWERQU1FzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEyNi0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMjc6c3RhdGljIGlubGluZSBib29sIGxpYmV0aF94ZHBzcV9zaGFyZWQodTMyIG51bSlcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjgte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzItLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTMzOiAqIGxpYmV0aF94ZHBzcV9pZCAtIGdldCBYRFBTUSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ1BVXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTM0LSAqIEBudW06IG51bWJlciBvZiBhY3RpdmUgWERQU1FzXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTM1LSAqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTM2OiAqIEhlbHBlciBmb3IgbGliZXRoX3hkcCByb3V0aW5lcywgZG8gbm90IHVzZSBpbiBkcml2ZXJzIGRpcmVjdGx5LlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEzNy0gKlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzktICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTQwOnN0YXRpYyBpbmxpbmUgdTMyIGxpYmV0aF94ZHBzcV9pZCh1MzIgbnVtKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE0MS17XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE0My1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNDQ6XHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFx1MDAyNlx1MDAyNlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE0NTpcdCAgICBsaWJldGhfeGRwc3Ffc2hhcmVkKG51bSkpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTQ2LVx0XHRyZXQgJT0gbnVtO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTAtXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTUxOnZvaWQgX19saWJldGhfeGRwc3FfZ2V0KHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jayxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTItXHRcdFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTUzOnZvaWQgX19saWJldGhfeGRwc3FfcHV0KHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jayxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTQtXHRcdFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE1Ni0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNTc6ICogbGliZXRoX3hkcHNxX2dldCAtIGluaXRpYWxpemUgXHUwMDI2bGliZXRoX3hkcHNxX2xvY2tcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTgtICogQGxvY2s6IGxvY2sgdG8gaW5pdGlhbGl6ZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNjQtICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTY1OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfZ2V0KHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jayxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNjYtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTY5LVx0aWYgKHVubGlrZWx5KHNoYXJlKSlcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNzA6XHRcdF9fbGliZXRoX3hkcHNxX2dldChsb2NrLCBkZXYpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3MS19XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3My0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNzQ6ICogbGliZXRoX3hkcHNxX3B1dCAtIGRlaW5pdGlhbGl6ZSBcdTAwMjZsaWJldGhfeGRwc3FfbG9ja1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3NS0gKiBAbG9jazogbG9jayB0byBkZWluaXRpYWxpemVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgwLSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4MTpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX3B1dChzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgyLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgzLXtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODQ6XHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFx1MDAyNlx1MDAyNiBsb2NrLVx1MDAzZXNoYXJlKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4NTpcdFx0X19saWJldGhfeGRwc3FfcHV0KGxvY2ssIGRldik7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTg2LX1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODctXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTg4OnZvaWQgX19saWJldGhfeGRwc3FfbG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4OTp2b2lkIF9fbGliZXRoX3hkcHNxX3VubG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE5MC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTEtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTkyOiAqIGxpYmV0aF94ZHBzcV9sb2NrIC0gZ3JhYiBcdTAwMjZsaWJldGhfeGRwc3FfbG9jayBpZiBuZWVkZWRcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTMtICogQGxvY2s6IGxvY2sgdG8gdGFrZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTctICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTk4OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfbG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTk5LXtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMDA6XHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFx1MDAyNlx1MDAyNiBsb2NrLVx1MDAzZXNoYXJlKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIwMTpcdFx0X19saWJldGhfeGRwc3FfbG9jayhsb2NrKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMDItfVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMDQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjA1OiAqIGxpYmV0aF94ZHBzcV91bmxvY2sgLSBmcmVlIFx1MDAyNmxpYmV0aF94ZHBzcV9sb2NrIGlmIG5lZWRlZFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIwNi0gKiBAbG9jazogbG9jayB0byBmcmVlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIxMC0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMTE6c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF94ZHBzcV91bmxvY2soc3RydWN0IGxpYmV0aF94ZHBzcV9sb2NrICpsb2NrKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIxMi17XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjEzOlx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2bGliZXRoX3hkcHNxX3NoYXJlKSBcdTAwMjZcdTAwMjYgbG9jay1cdTAwM2VzaGFyZSlcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMTQ6XHRcdF9fbGliZXRoX3hkcHNxX3VubG9jayhsb2NrKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMTUtfVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMTgtXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjE5OnZvaWQgbGliZXRoX3hkcHNxX2luaXRfdGltZXIoc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIsIHZvaWQgKnhkcHNxLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIyMDpcdFx0XHQgICAgIHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jayxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMjEtXHRcdFx0ICAgICB2b2lkICgqcG9sbCkoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKSk7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIyMy0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMjQ6ICogbGliZXRoX3hkcHNxX2RlaW5pdF90aW1lciAtIGRlaW5pdGlhbGl6ZSBcdTAwMjZsaWJldGhfeGRwc3FfdGltZXJcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMjUtICogQHRpbWVyOiB0aW1lciB0byBkZWluaXRpYWxpemVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjI4LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIyOTpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX2RlaW5pdF90aW1lcihzdHJ1Y3QgbGliZXRoX3hkcHNxX3RpbWVyICp0aW1lcilcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMzAte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMzQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjM1OiAqIGxpYmV0aF94ZHBzcV9xdWV1ZV90aW1lciAtIHJ1biBcdTAwMjZsaWJldGhfeGRwc3FfdGltZXJcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMzYtICogQHRpbWVyOiB0aW1lciB0byBxdWV1ZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNDMtICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjQ0OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfcXVldWVfdGltZXIoc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjQ1LXtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjUwLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI1MTogKiBsaWJldGhfeGRwc3FfcnVuX3RpbWVyIC0gd3JhcHBlciB0byBydW4gYSBxdWV1ZSBjbGVhbi11cCBvbiBhIHRpbWVyIGV2ZW50XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjUyLSAqIEB3b3JrOiB3b3JrcXVldWUgYmVsb25naW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRpbWVyXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTI1OT1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWRcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjA6bGliZXRoX3hkcHNxX3J1bl90aW1lcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmssXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjYxLVx0XHQgICAgICAgdTMyICgqcG9sbCkodm9pZCAqeGRwc3EsIHUzMiBidWRnZXQpKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2Mi17XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjYzOlx0c3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCp0aW1lciksXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjY0LVx0XHRcdFx0XHRcdFx0ZHdvcmsud29yayk7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjY1LVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI2NjpcdGxpYmV0aF94ZHBzcV9sb2NrKHRpbWVyLVx1MDAzZWxvY2spO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2Ny1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNjgtXHRpZiAocG9sbCh0aW1lci1cdTAwM2V4ZHBzcSwgVTMyX01BWCkpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjY5Olx0XHRsaWJldGhfeGRwc3FfcXVldWVfdGltZXIodGltZXIpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI3MC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzE6XHRsaWJldGhfeGRwc3FfdW5sb2NrKHRpbWVyLVx1MDAzZWxvY2spO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI3Mi19XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI3Ni0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzc6ICogZW51bSAtIGxpYmV0aF94ZHAgaW50ZXJuYWwgVHggZmxhZ3NcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNzgtICogQExJQkVUSF9YRFBfVFhfQlVMSzogb25lIGJ1bGsgc2l6ZSBhdCB3aGljaCBpdCB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIHF1ZXVlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTI4ND1lbnVtIHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjkzLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI5NDogKiBlbnVtIC0gXHUwMDI2bGliZXRoX3hkcF90eF9mcmFtZSBhbmQgXHUwMDI2bGliZXRoX3hkcF90eF9kZXNjIGZsYWdzXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjk1LSAqIEBMSUJFVEhfWERQX1RYX0xFTjogb25seSBmb3IgYGBYRFBfVFhgYCwgWzE1OjBdIG9mIDo6bGVuX2ZsIGlzIGFjdHVhbCBsZW5ndGhcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNDgyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2ggb2YgYSBQYXRjaCBhbmQgaXRzIEltcGxpY2F0aW9ucyBmb3IgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCB0b3VjaGVzIGBsaWJldGhgLCB3aGljaCBhcHBlYXJzIHRvIGJlIGEgZ2VuZXJpYyBFdGhlcm5ldCBkcml2ZXIgbGlicmFyeS4gVGhpcyBsaWJyYXJ5IGlzIGxpa2VseSB1c2VkIGJ5IGBpYXZmYCBhbmQgbWF5YmUgc29tZSBvdGhlciBkcml2ZXJzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGlhdmZfdHhyeC5jYCB3aGljaCBpcyBzcGVjaWZpYyB0byB0aGUgSW50ZWwgQVZGIGRyaXZlciwgYW5kIGFsc28gYGluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oYCwgYnV0IHRob3NlIGNoYW5nZXMgYXJlIGp1c3QgaW5saW5lIGZ1bmN0aW9ucy4gTXkgZmlyc3QgaW1wcmVzc2lvbiBpcywgdGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQsIHBvdGVudGlhbGx5IGEgbWlub3IgdXBkYXRlLgoKQnV0IHRoZW4gSSByZS1yZWFkIHRoZSBwcm9tcHQuIEl0JiMzOTtzIGZvY3VzZWQgb24gY29kZSBpbiAqdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMqIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLiBUaGUgcHJvbXB0IHNheXMgaXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFdhaXQgYSBtaW51dGUsIGlzIGBpYXZmYCBvbmUgb2YgdGhvc2UgZHJpdmVycz8KClllcywgaXQgaXMhIGBpYXZmYCBpcyB0aGUgSW50ZWwgRXRoZXJuZXQgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIFlvdSBuZWVkIGFuIEludGVsIHBoeXNpY2FsIE5JQyAobGlrZSBpNDBlIG9yIGljZSkgdG8gY3JlYXRlIHRoZSBWRiwgd2hpY2ggaXMgdGhlbiBwYXNzZWQgdG8gdGhlIFZNLiBRRU1VIGRlZmluaXRlbHkgZG9lc24mIzM5O3QgZW11bGF0ZSBgaWF2ZmAgbmF0aXZlbHkuIEkmIzM5O20gc3RhcnRpbmcgdG8gc2VlIHdoZXJlIHRoaXMgaXMgZ29pbmcuIENhbiBJIGV2ZW4gZnV6eiBpdCB3aXRoIFN5emthbGxlcj8KClN5emthbGxlciBkb2VzIGhhdmUgYHN5el9wY2lfZGV2aWNlYCwgd2hpY2ggY2FuIGVtdWxhdGUgUENJIGRldmljZXMsIGJ1dCBvbmx5IGlmIHRoZXkgaGF2ZSBkZXZpY2UgZGVzY3JpcHRpb25zLiBJIG5lZWQgdG8gY2hlY2sgaWYgU3l6a2FsbGVyIGFjdHVhbGx5IGZ1enplZCBgaWF2ZmAuIEkgY2FuJiMzOTt0IGxvb2sgdGhhdCB1cCBvbmxpbmUgcmlnaHQgbm93LCBidXQgSSBjYW4gY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2UgdG8gc2VlIGlmIGBpYXZmYCBpcyBjb25zaWRlcmVkIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlci4KClllcywgaXQmIzM5O3MgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvYC4gRGVmaW5pdGVseSB2ZW5kb3Itc3BlY2lmaWMuIEJ1dCBpcyBpdCBhIFNtYXJ0TklDIG9yIFBDSWUgc3dpdGNoPyBObywgaXQmIzM5O3MganVzdCBhIHN0YW5kYXJkIEV0aGVybmV0IFZGIGRyaXZlci4KCk9rYXksIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byB0aGUgcHJvbXB0LCB3aGljaCBzYXlzLCAqJiMzNDt2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4mIzM0OyogU3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVycyBsaWtlIGBlMTAwMGVgLCBgaWdiYCwgYGl4Z2JlYCwgYGk0MGVgLCBgaWNlYCwgYW5kIGBpYXZmYCBhcmUgYWxsIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMsIHJpZ2h0PyBBbmQgdGhleSByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHVubGVzcyBlbXVsYXRlZD8gUmlnaHQgYWdhaW4hIFFFTVUgZG9lcyBlbXVsYXRlIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgKnJlY2VudGx5KiBgaWdiYCwgYnV0IGl0ICpkb2VzIG5vdCogZW11bGF0ZSBgaWF2ZmAuCgpTbywgYGlhdmZgIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG5vdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBjb25zdHJhaW50LiBCdXQsIHRoZSBwYXRjaCBkb2VzIHRvdWNoIGBsaWJldGhgLiBJZiBgbGliZXRoYCBpcyB1c2VkIGJ5ICpvdGhlciogZHJpdmVycywgdGhlcmUgbWlnaHQgYmUgYSByb3V0ZSB0byByZWFjaCB0aGUgY2hhbmdlcyBpZiB0aG9zZSBkcml2ZXJzICphcmUqIGVtdWxhdGVkLiBUaW1lIHRvIGNoZWNrIHdoYXQgb3RoZXIgZHJpdmVycyB1c2UgYGxpYmV0aGAuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTg4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfSU5URUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSUJFVEgpICYjNDM7PSBsaWJldGgvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZS03LW9iai15ICYjNDM7PSBsaWJpZS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jPTE3NDI9c3RhdGljIGlubGluZSB2b2lkIGk0MGVfcnhfY2hlY2tzdW0oc3RydWN0IGk0MGVfdnNpICp2c2ksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xNzQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTc0NjpcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc0Ny1cdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc1Ny1cdGRlY29kZWQgPSBsaWJpZV9yeF9wdF9wYXJzZShwdHlwZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3NTg6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVx1MDAzZW5ldGRldiwgZGVjb2RlZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NTktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njg6XHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njk6XHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYz0xODE0PXN0YXRpYyBpbmxpbmUgdm9pZCBpNDBlX3J4X2hhc2goc3RydWN0IGk0MGVfcmluZyAqcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxODE5Olx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODIwLVx0dTMyIGhhc2g7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODI1LVx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHJ4X3B0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgyNjpcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgzMC1cdFx0aGFzaCA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2MtXHUwMDNld2IucXdvcmQwLmhpX2R3b3JkLnJzcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE4MzE6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODMyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9NzExPXN0YXRpYyB2b2lkIGlhdmZfY2xlYW5fcnhfcmluZyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzIzLVx0Zm9yICh1MzIgaSA9IHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbjsgaSAhPSByeF9yaW5nLVx1MDAzZW5leHRfdG9fdXNlOyApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzI0Olx0XHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfZnFlcyA9IFx1MDAyNnJ4X3JpbmctXHUwMDNlcnhfZnFlc1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3MjY6XHRcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfZnFlcy1cdTAwM2VuZXRtZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03MjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03NDI9dm9pZCBpYXZmX2ZyZWVfcnhfcmVzb3VyY2VzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc0NDpcdHN0cnVjdCBsaWJldGhfZnEgZnEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0NS1cdFx0LmZxZXNcdD0gcnhfcmluZy1cdTAwM2VyeF9mcWVzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3NTc6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc1OC1cdHJ4X3JpbmctXHUwMDNlcnhfZnFlcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03Njg9aW50IGlhdmZfc2V0dXBfcnhfZGVzY3JpcHRvcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzY5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzcwOlx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzcxLVx0XHQuY291bnRcdFx0PSByeF9yaW5nLVx1MDAzZWNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3Nzc6XHRyZXQgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFx1MDAyNmZxLCBcdTAwMjZyeF9yaW5nLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODA1LWVycjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6ODA2Olx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXHUwMDI2ZnEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04MDctXHRyeF9yaW5nLVx1MDAzZXJ4X2ZxZXMgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9ODU5PWJvb2wgaWF2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHUxNiBjbGVhbmVkX2NvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4NjE6XHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NjItXHRcdC5wcFx0XHQ9IHJ4X3JpbmctXHUwMDNlcHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjg3OTpcdFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcdTAwMjZmcSwgbnR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODgwLVx0XHRpZiAoYWRkciA9PSBETUFfTUFQUElOR19FUlJPUilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTkyNT1zdGF0aWMgdm9pZCBpYXZmX3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkyNjpcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5Mjc6XHRcdFx0IHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTkyOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkzNzpcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkX3B0KSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTM4Olx0aXB2NiA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWRfcHQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzUtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5NzY6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzctaWF2Zl9sZWdhY3lfcnhfY3N1bShjb25zdCBzdHJ1Y3QgaWF2Zl92c2kgKnZzaSwgdTY0IHF3MSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTc4Olx0XHQgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05Nzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5ODA6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTgyOlx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2NoZWNrc3VtKHZzaS1cdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05ODMtXHRcdHJldHVybiBjc3VtX2JpdHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAwNjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDctaWF2Zl9mbGV4X3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHU2NCBxdzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwMDg6XHRcdCAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMDpcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMjpcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bSh2c2ktXHUwMDNlbmV0ZGV2LCBkZWNvZGVkX3B0KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMy1cdFx0cmV0dXJuIGNzdW1fYml0cztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEwMzc9c3RhdGljIHZvaWQgaWF2Zl9sZWdhY3lfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDM4LVx0XHRcdFx0X19sZTY0IHF3MSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAzOTpcdFx0XHRcdGNvbnN0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDQ0Olx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ4LVx0XHRoYXNoID0gbGU2NF9nZXRfYml0cyhxdzAsIElBVkZfUlhEX0xFR0FDWV9SU1NfTSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNDk6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWRfcHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDUwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTA2Mz1zdGF0aWMgdm9pZCBpYXZmX2ZsZXhfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY0LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNjU6XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNzA6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyaW5nLVx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzUtXHRcdGhhc2ggPSBsZTY0X2dldF9iaXRzKHF3MSwgSUFWRl9SWERfRkxFWF9SU1NfSEFTSF9NKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTA3NjpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZF9wdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTMxPXN0YXRpYyB2b2lkIGlhdmZfcHJvY2Vzc19za2JfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTM1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTEzNjpcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExMzc6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTExMzgtXHRfX2xlNjQgcXcwID0gcnhfZGVzYy1cdTAwM2VxdzA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTk3PXN0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExOTg6XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTk5LVx0XHRcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMjE3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEyMTg6XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjE5LVx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMjU0PXN0YXRpYyBib29sIGlhdmZfaXNfbm9uX2VvcChzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjU1Olx0XHRcdCAgICBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI1Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjg2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjg3OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyODgtaWF2Zl9leHRyYWN0X2xlZ2FjeV9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTMtXHR1NjQgcXcyID0gbGU2NF90b19jcHUocnhfZGVzYy1cdTAwM2VxdzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjk0Olx0c3RydWN0IGxpYmV0aF9ycWVfaW5mbyBmaWVsZHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTUtXHRib29sIGwydGFnMXAsIGwydGFnMnA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzMyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzMzOnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzQtaWF2Zl9leHRyYWN0X2ZsZXhfcnhfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTMzNzpcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzgtXHR1NjQgcXcwID0gbGU2NF90b19jcHUocnhfZGVzYy1cdTAwM2VxdzApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTM2NjpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzY3LWlhdmZfZXh0cmFjdF9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEzODk9c3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM5OC1cdHdoaWxlIChsaWtlbHkodG90YWxfcnhfcGFja2V0cyBcdTAwM2MgKHVuc2lnbmVkIGludClidWRnZXQpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEzOTk6XHRcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxNDAwOlx0XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDAxLVx0XHRzdHJ1Y3QgaWF2Zl9yeF9kZXNjICpyeF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTQzMC1cdFx0cnhfYnVmZmVyID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW3J4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjE0MzE6XHRcdGlmICghX19saWJldGhfcnhfc3luY19mb3JfY3B1KHBwLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDMyLVx0XHRcdGdvdG8gc2tpcF9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4Lmg9MjE4PXN0cnVjdCBpYXZmX3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmgtMjI2LVx0dW5pb24ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaDoyMjc6XHRcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9mcWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaC0yMjgtXHRcdHN0cnVjdCBpYXZmX3R4X2J1ZmZlciAqdHhfYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM9NjA3PXN0YXRpYyBpbnQgaWNlX3J4cV9wcF9jcmVhdGUoc3RydWN0IGljZV9yeF9yaW5nICpycSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYwOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MDk6XHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjEwLVx0XHQuY291bnRcdFx0PSBycS1cdTAwM2Vjb3VudCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MTg6XHRlcnIgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFx1MDAyNmZxLCBcdTAwMjZycS1cdTAwM2VxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxOS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM6NjMwOlx0ZnEgPSAoc3RydWN0IGxpYmV0aF9mcSl7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzEtXHRcdC5jb3VudFx0XHQ9IHJxLVx1MDAzZWNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYzNzpcdGVyciA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXHUwMDI2ZnEsIFx1MDAyNnJxLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjM4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMi0jaW5jbHVkZSBcdTAwM2NuZXQvZGNibmwuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6MTM6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC9yeC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYz0xMjMyPXN0YXRpYyBpbnQgaWNlX2xidGVzdF9yZWNlaXZlX2ZyYW1lcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMjMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jOjEyMzQ6XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtMTIzNS1cdGludCB2YWxpZF9mcmFtZXMsIGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjExOiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgveGRwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyLSNpbmNsdWRlIFx1MDAzY25ldC9kc2ZpZWxkLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz0xMTQ9aWNlX3VubWFwX2FuZF9mcmVlX3R4X2J1ZihzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI5LVx0Y2FzZSBJQ0VfVFhfQlVGX1hEUF9UWDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEzMDpcdFx0bGliZXRoX3hkcF9yZXR1cm5fdmEodHhfYnVmLVx1MDAzZXJhd19idWYsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTEyPXZvaWQgaWNlX3J4cV9wcF9kZXN0cm95KHN0cnVjdCBpY2VfcnhfcmluZyAqcnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTE0Olx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUxNS1cdFx0LmZxZXNcdD0gcnEtXHUwMDNlcnhfZnFlcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1MTk6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjAtXHRycS1cdTAwM2VyeF9mcWVzID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1Mjk6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MzAtXHRycS1cdTAwM2VoZHJfZnFlcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTM4PXZvaWQgaWNlX2NsZWFuX3J4X3Jpbmcoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjU1MTpcdGxpYmV0aF94ZHBfcmV0dXJuX3N0YXNoKFx1MDAyNnJ4X3JpbmctXHUwMDNleGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTQtXHRmb3IgKHUzMiBpID0gcnhfcmluZy1cdTAwM2VuZXh0X3RvX2NsZWFuOyBpICE9IHJ4X3JpbmctXHUwMDNlbmV4dF90b191c2U7ICkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTU1Olx0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KHJ4X3JpbmctXHUwMDNlcnhfZnFlc1tpXS5uZXRtZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU3LVx0XHRpZiAocnhfcmluZy1cdTAwM2VoZHJfcHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1NTg6XHRcdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhyeF9yaW5nLVx1MDAzZWhkcl9mcWVzW2ldLm5ldG1lbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NjUxPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjY1MjppY2VfcnVuX3hkcChzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY1My1cdCAgICBzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nLCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY4OS1cdGNhc2UgWERQX0RST1A6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo2OTA6XHRcdGxpYmV0aF94ZHBfcmV0dXJuX2J1ZmYoeGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY5MS1cdFx0cmV0ID0gSUNFX1hEUF9DT05TVU1FRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz04MjU9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHVuc2lnbmVkIGludCBjbGVhbmVkX2NvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjgyNzpcdGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgaGRyX2ZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODI4LVx0XHQucHBcdFx0PSByeF9yaW5nLVx1MDAzZWhkcl9wcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MzItXHR9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODMzOlx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgzNC1cdFx0LnBwXHRcdD0gcnhfcmluZy1cdTAwM2VwcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NTI6XHRcdGFkZHIgPSBsaWJldGhfcnhfYWxsb2MoXHUwMDI2ZnEsIG50dSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTMtXHRcdGlmIChhZGRyID09IERNQV9NQVBQSU5HX0VSUk9SKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODY2Olx0XHRhZGRyID0gbGliZXRoX3J4X2FsbG9jKFx1MDAyNmhkcl9mcSwgbnR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2Ny1cdFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NzA6XHRcdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhmcS5mcWVzW250dV0ubmV0bWVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg3MS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz05NDY9c3RhdGljIGludCBpY2VfY2xlYW5fcnhfaXJxKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5NTg6XHRsaWJldGhfeGRwX2luaXRfYnVmZih4ZHAsIFx1MDAyNnJ4X3JpbmctXHUwMDNleGRwLCBcdTAwMjZyeF9yaW5nLVx1MDAzZXhkcF9yeHEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTk2OC1cdFx0dW5pb24gaWNlXzMyYl9yeF9mbGV4X2Rlc2MgKnJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5Njk6XHRcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NzAtXHRcdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMC1cdFx0cnhfYnVmID0gXHUwMDI2cnhfcmluZy1cdTAwM2VoZHJfZnFlc1tudGNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTAxMTpcdFx0bGliZXRoX3hkcF9wcm9jZXNzX2J1ZmYoeGRwLCByeF9idWYsIHNpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMi1cdFx0cnhfYnVmLVx1MDAzZW5ldG1lbSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAyMS1cdFx0cnhfYnVmID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW250Y107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDIyOlx0XHRsaWJldGhfeGRwX3Byb2Nlc3NfYnVmZih4ZHAsIHJ4X2J1Ziwgc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwNDgtXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDQ5Olx0XHRcdGxpYmV0aF94ZHBfcmV0dXJuX2J1ZmZfc2xvdyh4ZHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA1MC1cdFx0XHRpY2Vfc3RhdHNfaW5jKHJ4X3JpbmctXHUwMDNlcmluZ19zdGF0cywgcnhfYnVmX2ZhaWxlZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwNzc6XHRsaWJldGhfeGRwX3NhdmVfYnVmZihcdTAwMjZyeF9yaW5nLVx1MDAzZXhkcCwgeGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjc6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC90eXBlcy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTI4NS1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjI4NjpcdFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0yODctXHRcdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9idWY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAwLVx0c3RydWN0IHBhZ2VfcG9vbCAqaGRyX3BwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzAxOlx0c3RydWN0IGxpYmV0aF9mcWUgKmhkcl9mcWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMxNy1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjMxODpcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB4ZHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMTk6XHRcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhzaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMyMC1cdH07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo2OiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgveGRwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz02NT1pY2VfcnhfaGFzaF90b19za2IoY29uc3Qgc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy02OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Njk6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzAtXHR1MzIgaGFzaDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzItXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocnhfcHR5cGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjczOlx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc3LVx0aWYgKGxpa2VseShoYXNoKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo3ODpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz0xMDg9aWNlX3J4X2NzdW0oc3RydWN0IGljZV9yeF9yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjExMTpcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTItXHR1MTYgcnhfc3RhdHVzMCwgcnhfc3RhdHVzMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTE4LVx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHB0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzoxMTk6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTEyMC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTM4Olx0aXB2NCA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjEzOTpcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xNDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTI3MT1pY2VfY2xlYW5feGRwX3R4X2J1ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTI3NS1cdGNhc2UgSUNFX1RYX0JVRl9YRFBfVFg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Mjc2Olx0XHRsaWJldGhfeGRwX3JldHVybl92YSh0eF9idWYtXHUwMDNlcmF3X2J1ZiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMjc3LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTIzPXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9od190cyhjb25zdCBzdHJ1Y3QgeGRwX21kICpjdHgsIHU2NCAqdHNfbnMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTI0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1MjU6XHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTI2LVx0c3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1Mjg6XHRyeF9yaW5nID0gbGliZXRoX3hkcF9idWZmX3RvX3JxKHhkcF9leHQsIHR5cGVvZigqcnhfcmluZyksIHhkcF9yeHEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTU2PXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9oYXNoKGNvbnN0IHN0cnVjdCB4ZHBfbWQgKmN0eCwgdTMyICpoYXNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01NTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjU1OTpcdGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcF9leHQgPSAodm9pZCAqKWN0eDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01NjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTU3OD1zdGF0aWMgaW50IGljZV94ZHBfcnhfdmxhbl90YWcoY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCBfX2JlMTYgKnZsYW5fcHJvdG8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTgxOlx0Y29uc3Qgc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwX2V4dCA9ICh2b2lkICopY3R4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4Mi1cdHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTg0Olx0cnhfcmluZyA9IGxpYmV0aF94ZHBfYnVmZl90b19ycSh4ZHBfZXh0LCB0eXBlb2YoKnJ4X3JpbmcpLCB4ZHBfcnhxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01ODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Vucm9sbC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03LSNpbmNsdWRlIFx1MDAzY25ldC94ZHBfc29ja19kcnYuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjMyOlx0XHQoKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKilmaXJzdCktXHUwMDNlZGVzYyA9IHJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY3Ni1cdHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiA9IG50YztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6Njc3Olx0cnhfcmluZy1cdTAwM2V4c2sgPSAoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKWZpcnN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9Njc1PXN0cnVjdCBpZHBmX2FkYXB0ZXIge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNDpcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNpbmdsZXFfcHRfbGt1cDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNTpcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNwbGl0cV9wdF9sa3VwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzA2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTE4OD1zdGF0aWMgdm9pZCBpZHBmX3R4X3NpbmdsZXFfZG1hX21hcF9lcnJvcihzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0xOTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjE5MjpcdHN0cnVjdCBsaWJldGhfc3FfbmFwaV9zdGF0cyBzcyA9IHsgfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoxOTM6XHRzdHJ1Y3QgbGliZXRoX2NxX3BwIGNwID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTE5NC1cdFx0LmRldlx0PSB0eHEtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0yMDYtXHRcdHR4X2J1ZiA9IFx1MDAyNnR4cS1cdTAwM2V0eF9idWZbaWR4XTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoyMDc6XHRcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFx1MDAyNmNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0yMDgtXHRcdGlmICh0eF9idWYgPT0gZmlyc3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTQ4MT1zdGF0aWMgYm9vbCBpZHBmX3R4X3NpbmdsZXFfY2xlYW4oc3RydWN0IGlkcGZfdHhfcXVldWUgKnR4X3EsIGludCBuYXBpX2J1ZGdldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDgzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0ODQ6XHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMgc3MgPSB7IH07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg1LVx0c3RydWN0IGlkcGZfYmFzZV90eF9kZXNjICp0eF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy00ODctXHRzMTYgbnRjID0gdHhfcS1cdTAwM2VuZXh0X3RvX2NsZWFuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ4ODpcdHN0cnVjdCBsaWJldGhfY3FfcHAgY3AgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg5LVx0XHQuZGV2XHQ9IHR4X3EtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MjgtXHRcdC8qIHVwZGF0ZSB0aGUgc3RhdGlzdGljcyBmb3IgdGhpcyBwYWNrZXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1Mjk6XHRcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFx1MDAyNmNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0Mi1cdFx0XHQvKiB1bm1hcCBhbnkgcmVtYWluaW5nIHBhZ2VkIGRhdGEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1NDM6XHRcdFx0bGliZXRoX3R4X2NvbXBsZXRlKHR4X2J1ZiwgXHUwMDI2Y3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0NC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz02NDk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2NzdW0oc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4cSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTAtXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTE6XHRcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTI6XHRcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1Ni1cdC8qIGNoZWNrIGlmIFJ4IGNoZWNrc3VtIGlzIGVuYWJsZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTc6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocnhxLVx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY2NDpcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NjU6XHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTYtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjcxNzpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE4LWlkcGZfcnhfc2luZ2xlcV9iYXNlX2NzdW0oY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3MjA6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0geyB9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcyMS1cdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc1MjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzUzLWlkcGZfcnhfc2luZ2xlcV9mbGV4X2NzdW0oY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzU0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3NTU6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0geyB9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1Ni1cdHUxNiByeF9zdGF0dXMwLCByeF9zdGF0dXMxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz03ODk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2Jhc2VfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzkxLVx0XHRcdFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzkyOlx0XHRcdFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3OTY6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyeF9xLVx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjgwNTpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz04MTk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2ZsZXhfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODIxLVx0XHRcdFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODIyOlx0XHRcdFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgyMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODI0Olx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcS1cdTAwM2V4ZHBfcnhxLmRldiwgZGVjb2RlZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODI1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MzE6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9ODQ4PV9faWRwZl9yeF9zaW5nbGVxX3Byb2Nlc3Nfc2tiX2ZpZWxkcyhzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4NTM6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQgPSByeF9xLVx1MDAzZXJ4X3B0eXBlX2xrdXBbcHR5cGVdO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MDA0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHRvdWNoZXMgYGxpYmV0aGAsIHdoaWNoIGlzIHVzZWQgYnkgc2V2ZXJhbCBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzOiBgaTQwZWAsIGBpYXZmYCwgYGljZWAsIGFuZCBgaWRwZmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHN5emthbGxlciBjYW4gcmVhY2ggYW55IG9mIHRoZSBjb2RlIGFmZmVjdGVkIGJ5IHRoZSBwYXRjaC4gSSBrbm93IGBpZHBmYCBpcyBhbiBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gZHJpdmVyIGFuZCBpcyB2ZW5kb3Itc3BlY2lmaWMgUENJZS4gYGljZWAgYW5kIGBpNDBlYCBhcmUgYWxzbyBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLCBzbyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBhcyB3ZWxsLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3l6a2FsbGVyIGZ1enogdGhlbT8gQW5kIG9mIGNvdXJzZSwgYGlhdmZgIGlzIGEgdmlydHVhbCBmdW5jdGlvbiAoVkYpIGRyaXZlci4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGZvY3VzaW5nIG9uIGNvZGUgdGhhdCYjMzk7cyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEl0IGdpdmVzIGV4YW1wbGVzIGxpa2UgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgZm9yIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVcyB0aGF0IHJlbHkgb24gcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4KCkFyZSBkcml2ZXJzIGxpa2UgYGk0MGVgLCBgaWNlYCwgYGlhdmZgIGNvbnNpZGVyZWQgdGhpcyB0eXBlIG9mIGRyaXZlcj8gTm90IGluIHRoZSBzdHJpY3Rlc3Qgc2Vuc2Ugb2YgdGhlIGV4YW1wbGVzIHByb3ZpZGVkLCBidXQgdGhleSBhcmUgSW50ZWwgRXRoZXJuZXQgTklDIGRyaXZlcnMgYW5kIHRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBoYXJkd2FyZSB0aGF0IGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIHRoZSBrZXkuIElmIHRoZXkgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgYW5kIHRoYXQgaGFyZHdhcmUgaXNuJiMzOTt0IGVtdWxhdGVkIGluIFFFTVUsIHRoZW4gdGhleSYjMzk7cmUgdW5yZWFjaGFibGUsIHJpZ2h0PyBBbmQgSSYjMzk7ZCBiZXQgdGhlIGFuc3dlciBpcyB0aGF0IHRoZXkgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gYSBzdGFuZGFyZCBHQ0Ugb3IgUUVNVSBzZXR1cCB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mIHNvZnR3YXJlIGVtdWxhdGlvbi4gU3l6a2FsbGVyIG1pZ2h0IGhhdmUgc29tZSBlbXVsYXRpb24gZm9yICpzb21lKiBkZXZpY2VzLCBidXQgaXQmIzM5O3Mgbm90IGEgZ2VuZXJhbCBjYXNlLgoKU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBkb2VzIHN5emthbGxlciBlbXVsYXRlIHRoZXNlIGRyaXZlcnM/IENhbiBJIHRyaWdnZXIgYGlhdmZgIGNvZGUgd2l0aG91dCB0aGUgaGFyZHdhcmU/IEl0IHByb2JlcyBmb3IgYSBzcGVjaWZpYyBQQ0kgSUQsIHNvIGlmIHRoZSBkZXZpY2UgaXNuJiMzOTt0IHByZXNlbnQsIHRoZSBkcml2ZXIgd29uJiMzOTt0IGV2ZW4gYmluZC4gRG9lcyBzeXprYWxsZXImIzM5O3MgYHN5el9wY2lfZGV2aWNlYCBlbXVsYXRlIHRoZXNlPyBJIGNhbiYjMzk7dCBjaGVjayBzeXprYWxsZXIgZGlyZWN0bHkgYnV0IGNhbiBJIHVzZSBzb21lIHRyaWNrcyB0byBpbmZlciBhbnl0aGluZywgYnkgbG9va2luZyBhdCBleGlzdGluZyBidWdzIHJlcG9ydGVkIGZvciBgaWF2ZmA/IEkgbmVlZCBpbnRlcm5ldCBhY2Nlc3MgZm9yIHRoaXMuCgpUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgdGhhdCBjb2RlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIChsaWtlIGB1c2IgZ2FkZ2V0YCwgYG1hYzgwMjExX2h3c2ltYCksIHNob3VsZCByZXN1bHQgaW4gYFdvcnRoRnV6emluZz1mYWxzZWAuIGBpYXZmYCBpcyBkZWZpbml0ZWx5IGFuIEludGVsIEV0aGVybmV0IFZGIGRyaXZlciB0aGF0IHJlcXVpcmVzIGFuIEludGVsIE5JQy4gUUVNVSBkZWZpbml0ZWx5IGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIEludGVsIEFWRi4KCkFuZCBiZWNhdXNlIGBsaWJldGhgIGlzIHVzZWQgYnkgYWxsIHRoZXNlIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGBpYXZmYCwgYGk0MGVgLCBgaWNlYCwgYW5kIGBpZHBmYCksIHRoZSBjb25jbHVzaW9uIGlzIHRoZSBzYW1lIGZvciB0aGUgcGF0Y2ggLSB0aGUgY29kZSBwYXRocyBhZmZlY3RlZCBieSB0aGUgcGF0Y2ggdGhhdCByZWxhdGUgdG8gSW50ZWwgRXRoZXJuZXQgZHJpdmVycyBjYW4mIzM5O3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCBRRU1VLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQuIFFFTVUgZG9lcyBlbXVsYXRlIG90aGVyIEV0aGVybmV0IGludGVyZmFjZXMgbGlrZSBgZTEwMDBgLCBgZTEwMDBlYCwgYW5kIGBpZ2JgLiBTbyBub3cgSSBoYXZlIHRvIGNoZWNrLCBhcmUgdGhvc2UgaW50ZXJmYWNlcyB1c2luZyBsaWJldGg/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NTI0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZC4KCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBlMTAwMGUqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRvIGNoZWNrIHRoZSBgZTEwMDBlYC4gSnVzdCB0aGUgbWVudGlvbiBvZiB0aGF0IG5hbWUgY29uanVyZXMgdXAgYSBzcGVjaWZpYyBzZXQgb2YgaGFyZHdhcmUgYW5kIHBvdGVudGlhbCBzb2Z0d2FyZSBpbXBsaWNhdGlvbnMuIEkga25vdyBpbW1lZGlhdGVseSB0aGF0IHRoaXMgcmVmZXJzIHRvIGEgcGFydGljdWxhciBJbnRlbCBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIgZmFtaWx5LiBNeSBtaW5kIGp1bXBzIHRvIHRoZSBkcml2ZXJzLCB0aGUgZmlybXdhcmUgdmVyc2lvbnMsIGtub3duIGJ1Z3MgYW5kIHZ1bG5lcmFiaWxpdGllcywgYW5kIHRoZSBjb21tb24gY29uZmlndXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIHByb2JhYmx5IHBvaW50cyB0b3dhcmRzIGFuIGlzc3VlIHJlbGF0ZWQgdG8gbmV0d29yayBjb25uZWN0aXZpdHkgYW5kIGhvdyBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBob3N0IHN5c3RlbS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgbG93LWxldmVsIGRyaXZlcnMgYW5kIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgcmVsYXRlZCB0byB0aGUgYGUxMDAwZWAgY29udHJvbGxlci4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTc3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXBseSBmYW1pbGlhciB3aXRoIHRoZSByZWxldmFudCB0ZWNobmljYWwgZG9tYWluIGFuZCBjb250ZXh0LgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IGUxMDAwIENoZWNrKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aG91Z2h0IGlzIHNpbXBsZTogKmUxMDAwKi4gVGhpcyBpcyBsaWtlbHkgYSB2ZXJ5IHNwZWNpZmljIGlkZW50aWZpZXIgb3IgcmVmZXJlbmNlLiBHaXZlbiBteSBleHBlcnRpc2UsIG15IG1pbmQgaW5zdGFudGx5IGp1bXBzIHRvIHBvc3NpYmxlIG1lYW5pbmdzLiBDb3VsZCBiZSBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbXBvbmVudCwgYSBzb2Z0d2FyZSBtb2R1bGUsIGFuIGVycm9yIGNvZGUsIGEgY29uZmlndXJhdGlvbiBmaWxlLCBhIGRlYnVnZ2luZyB0b29sLi4uIHRoZSBwb3NzaWJpbGl0aWVzIGFyZSBudW1lcm91cywgYnV0IHRoZSBicmV2aXR5IHN1Z2dlc3RzIGEgZmFtaWxpYXIgYW5kIGNvbW1vbmx5IHJlZmVyZW5jZWQgZWxlbWVudCB3aXRoaW4gdGhpcyBjb250ZXh0LgoKTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBxdWlja2x5IHBlcmZvcm0gYSBtZW50YWwgY2hlY2tsaXN0LCBzdGFydGluZyB3aXRoIHdoYXQgSSAqZXhwZWN0KiB0byBmaW5kIGJhc2VkIG9uIHByaW9yIGV4cGVyaWVuY2UuIFdoYXQgYXJlIHRoZSBjb21tb24gcGl0ZmFsbHM/IFdoYXQgdXN1YWxseSBnb2VzIHdyb25nIHdpdGggYGUxMDAwYD8gV2hlcmUgZG8gSSBoYXZlIHJlY2VudCBleHBlcmllbmNlIHdpdGggdGhpcyBjb21wb25lbnQ/IFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgSSB3YXMgd29ya2luZyBpbiB0aGF0IG1heSByZXF1aXJlIHRoaXMgY2hlY2s/CgpUaGlzIGlzIHdoZXJlIG15IHllYXJzIG9mIGV4cGVyaWVuY2Uga2ljayBpbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBtb3N0IGxpa2VseSBhbmQgbW92ZSB0aHJvdWdoIHRoZSBsZXNzIGxpa2VseSwgc3RhcnRpbmcgd2l0aCB0aGUgYXJlYSBJIGhhdmUgdGhlIGdyZWF0ZXN0IGNvbmZpZGVuY2UgaW4uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG5lZWRzIGF0dGVudGlvbiwgb3Igd2hhdCB0aGUgcHJvbXB0IGlzIGFjdHVhbGx5IHJlbGF0ZWQgdG8sIHNpbmNlIGUxMDAwIGNvdWxkIGJlIGEgcmVmZXJlbmNlIHRvIGEgbG90IG9mIHN0dWZmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMTAzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBsaWJldGhgIFVzYWdlIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGBsaWJldGhgIGlzIGJlaW5nIHV0aWxpemVkLCBhbmQgaXQgc2VlbXMgY29uZmluZWQgdG8gdGhlIGBpNDBlYCwgYGlhdmZgLCBgaWNlYCwgYW5kIGBpZHBmYCBkcml2ZXJzLiAgTm9uZSBvZiB0aG9zZSBhcmUgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBhbnkgb2YgdGhlc2UgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBpYXZmYCwgYXJlIGV2ZW4gKmZ1enphYmxlKiBpbiB0aGUgZmlyc3QgcGxhY2UuCgpIb2xkIG9uLCBsZXQgbWUgY2hlY2sgdGhhdCBwYXRjaC4uLiBBaCwgaXQgd2FzIGF1dGhvcmVkIGJ5IHRoZSBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AgYWNjb3VudC4gQnV0IHRoaXMgaXNuJiMzOTt0IGEgc21va2luZyBndW4uIFRoZSBjb21taXQgbWVzc2FnZSByZWFkczogJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gVGhpcyBpcyBqdXN0IGEgYm9pbGVycGxhdGUgbWVzc2FnZSB0aGF0IHRoZSBwYXRjaCBhcHBsaWNhdGlvbiBzeXN0ZW0gYWRkcy4gSXQgZGVmaW5pdGVseSAqZG9lc24mIzM5O3QqIG1lYW4gU3l6a2FsbGVyIGZvdW5kIGEgdnVsbmVyYWJpbGl0eSBoZXJlLiBUaGUgc3lzdGVtIGFwcGxpZWQgaXQgZm9yIG15IHJldmlldy4gSSBzaG91bGRuJiMzOTt0IGp1bXAgdG8gY29uY2x1c2lvbnMuCgpBbHJpZ2h0LCBiYWNrIHRvIHRoZSBxdWVzdGlvbiBvZiByZWFjaGFiaWxpdHkuIENvdWxkIEkgcG9zc2libHkgZnV6eiBgaWF2ZmAgb3IgYGljZWAgc29tZWhvdz8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSBhIGhhcmQgbm8uIFRoZXkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbiBjb3JyZWN0bHksIG1lYW5pbmcgdGhvc2UgY29kZSBwYXRocyBhcmUgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCBsaWtlIEdDRSBvciBRRU1VLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2suIEkmIzM5O2xsIHZlcmlmeSBpZiBgaWF2ZmAgY2FuIGJlIGluc3RhbnRpYXRlZCBpbiBzb21lIHZpcnR1YWwgYnVzIG9yIHNvZnR3YXJlLiBPa2F5LCB0aGF0IGNvbmZpcm1zIGl0OiBgaWF2ZmAgaXMgYSBQQ0kgZHJpdmVyLiBUaGlzIG1lYW5zIGl0IHJlbGllcyBvbiBkaXJlY3QgaGFyZHdhcmUgaW50ZXJhY3Rpb24gYW5kIGlzbiYjMzk7dCByZWxldmFudCBmb3IgUUVNVSBmdXp6aW5nLiBUaGlzIGlzIHNvbWV0aGluZyBJIHNob3VsZCBoYXZlIHJlbWVtYmVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jPTU2Njg9c3RhdGljIGludCBfX2luaXQgaWF2Zl9pbml0X21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTY3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmM6NTY3NDpcdHJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmlhdmZfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTY3NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwODg3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlhYmlsaXR5IG9mIGBpYXZmYCBhbmQgYGxpYmV0aGAgQ2hhbmdlcyBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpcyBQQ0kgZHJpdmVyIEkmIzM5O20gbG9va2luZyBhdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQsIFFFTVUsIGV2ZW4gKnN1cHBvcnRzKiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFib3V0IHdoZXRoZXIgUUVNVSBlbXVsYXRlcyBgaWF2ZmAgb3IgYGk0MGVgLiBOb3BlLCBzdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGRvIGBpYXZmYCwgYW5kIHdoaWxlIHRoZXJlIG1pZ2h0IGJlIHNvbWUgb3V0LW9mLXRyZWUgcGF0Y2hlcyBmb3IgYGk0MGVgLCBpdCYjMzk7cyBub3QgYSBzdGFuZGFyZCBmZWF0dXJlLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IG15IGtub3dsZWRnZSBvZiB3aGF0ICppcyogZW11bGF0ZWQgaW4gUUVNVS4gUmlnaHQsIGl0IGRvZXMgYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHZteG5ldDNgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgaTgyNTU5ZXJgLCBhbmQgYHR1bGlwYC4gT2theSwgdGhhdCYjMzk7cyBhIGdvb2QgbWVudGFsIGNoZWNrbGlzdC4gV2FpdCwgSSBzaG91bGQgZG91YmxlIGNoZWNrIGBpNDBlYCwganVzdCB0byBiZSBjZXJ0YWluLiBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSBjaGVjayBRRU1VJiMzOTtzIHNvdXJjZSByaWdodCBub3csIGJ1dCBJIGtub3cgYGlnYmAgd2FzIGFkZGVkIHNvbWV3aGF0IHJlY2VudGx5LCBtZWFuaW5nLCB0aGF0IGlmIGBpNDBlYCBpc24mIzM5O3QgaW4gc3RhbmRhcmQgUUVNVSB5ZXQsIHRoZW4gaXQgbWF5IGJlIHdvcnRoIHJldmlzaXRpbmcgdGhhdCBjb2RlIGJhc2UuCgpOb3csIGV2ZW4gaWYgYGk0MGVgICp3ZXJlKiBlbXVsYXRlZCwgYGlhdmZgIGlzIHRoZSBWRiBkcml2ZXIsIGFuZCBlbXVsYXRpbmcgU1ItSU9WIGFuZCBWRnMgaXMgdXN1YWxseSBub3QgZG9uZSBpbiBzdGFuZGFyZCBRRU1VIGZvciB0aGVzZSBkZXZpY2VzLCBldmVuIHRob3VnaCBgaWdiYCBkb2VzIGhhdmUgc29tZSBTUi1JT1Ygc3VwcG9ydC4gQnV0IGBpYXZmYCBpcyBzcGVjaWZpY2FsbHkgZm9yIEludGVsIDcwMCBTZXJpZXMgKGk0MGUpIGFuZCA4MDAgU2VyaWVzIChpY2UpIFZGcy4KClNpbmNlIGBpYXZmYCByZXF1aXJlcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBmYWxscyB1bmRlciB0aGUgY2F0ZWdvcnkgb2YsICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpOb3csIHRoZSBleGFtcGxlICpkb2VzbiYjMzk7dCogZXhwbGljaXRseSBsaXN0IHN0YW5kYXJkIEV0aGVybmV0IGRyaXZlcnMsIGJ1dCB0aGUgb3ZlcmFyY2hpbmcgcHJpbmNpcGxlIGlzICYjMzQ7cmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IElzIGFuIEludGVsIEV0aGVybmV0IE5JQyBhICYjMzQ7cGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDs/IFllcywgaXQgaXMuCgpUaGVyZWZvcmUsIGNoYW5nZXMgdG8gYGlhdmZgIGFuZCBgbGliZXRoYCAod2hpY2ggaXMgb25seSB1c2VkIGJ5IHRoZXNlIEludGVsIGRyaXZlcnMpIGFyZSBub3QgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYGxpYmV0aGAgaXMgbm90IHVzZWQgYnkgYW55dGhpbmcgZWxzZSB0aG91Z2gsIGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTg4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfSU5URUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSUJFVEgpICYjNDM7PSBsaWJldGgvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZS03LW9iai15ICYjNDM7PSBsaWJpZS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jPTE3NDI9c3RhdGljIGlubGluZSB2b2lkIGk0MGVfcnhfY2hlY2tzdW0oc3RydWN0IGk0MGVfdnNpICp2c2ksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xNzQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTc0NjpcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc0Ny1cdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc1Ny1cdGRlY29kZWQgPSBsaWJpZV9yeF9wdF9wYXJzZShwdHlwZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3NTg6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVx1MDAzZW5ldGRldiwgZGVjb2RlZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NTktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njg6XHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njk6XHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYz0xODE0PXN0YXRpYyBpbmxpbmUgdm9pZCBpNDBlX3J4X2hhc2goc3RydWN0IGk0MGVfcmluZyAqcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxODE5Olx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODIwLVx0dTMyIGhhc2g7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODI1LVx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHJ4X3B0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgyNjpcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgzMC1cdFx0aGFzaCA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2MtXHUwMDNld2IucXdvcmQwLmhpX2R3b3JkLnJzcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE4MzE6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODMyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9NzExPXN0YXRpYyB2b2lkIGlhdmZfY2xlYW5fcnhfcmluZyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzIzLVx0Zm9yICh1MzIgaSA9IHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbjsgaSAhPSByeF9yaW5nLVx1MDAzZW5leHRfdG9fdXNlOyApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzI0Olx0XHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfZnFlcyA9IFx1MDAyNnJ4X3JpbmctXHUwMDNlcnhfZnFlc1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3MjY6XHRcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfZnFlcy1cdTAwM2VuZXRtZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03MjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03NDI9dm9pZCBpYXZmX2ZyZWVfcnhfcmVzb3VyY2VzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc0NDpcdHN0cnVjdCBsaWJldGhfZnEgZnEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0NS1cdFx0LmZxZXNcdD0gcnhfcmluZy1cdTAwM2VyeF9mcWVzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3NTc6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc1OC1cdHJ4X3JpbmctXHUwMDNlcnhfZnFlcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03Njg9aW50IGlhdmZfc2V0dXBfcnhfZGVzY3JpcHRvcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzY5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzcwOlx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzcxLVx0XHQuY291bnRcdFx0PSByeF9yaW5nLVx1MDAzZWNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3Nzc6XHRyZXQgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFx1MDAyNmZxLCBcdTAwMjZyeF9yaW5nLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODA1LWVycjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6ODA2Olx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXHUwMDI2ZnEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04MDctXHRyeF9yaW5nLVx1MDAzZXJ4X2ZxZXMgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9ODU5PWJvb2wgaWF2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHUxNiBjbGVhbmVkX2NvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4NjE6XHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NjItXHRcdC5wcFx0XHQ9IHJ4X3JpbmctXHUwMDNlcHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjg3OTpcdFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcdTAwMjZmcSwgbnR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODgwLVx0XHRpZiAoYWRkciA9PSBETUFfTUFQUElOR19FUlJPUilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTkyNT1zdGF0aWMgdm9pZCBpYXZmX3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkyNjpcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5Mjc6XHRcdFx0IHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTkyOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkzNzpcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkX3B0KSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTM4Olx0aXB2NiA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWRfcHQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzUtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5NzY6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzctaWF2Zl9sZWdhY3lfcnhfY3N1bShjb25zdCBzdHJ1Y3QgaWF2Zl92c2kgKnZzaSwgdTY0IHF3MSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTc4Olx0XHQgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05Nzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5ODA6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTgyOlx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2NoZWNrc3VtKHZzaS1cdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05ODMtXHRcdHJldHVybiBjc3VtX2JpdHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAwNjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDctaWF2Zl9mbGV4X3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHU2NCBxdzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwMDg6XHRcdCAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMDpcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMjpcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bSh2c2ktXHUwMDNlbmV0ZGV2LCBkZWNvZGVkX3B0KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMy1cdFx0cmV0dXJuIGNzdW1fYml0cztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEwMzc9c3RhdGljIHZvaWQgaWF2Zl9sZWdhY3lfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDM4LVx0XHRcdFx0X19sZTY0IHF3MSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAzOTpcdFx0XHRcdGNvbnN0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDQ0Olx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ4LVx0XHRoYXNoID0gbGU2NF9nZXRfYml0cyhxdzAsIElBVkZfUlhEX0xFR0FDWV9SU1NfTSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNDk6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWRfcHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDUwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTA2Mz1zdGF0aWMgdm9pZCBpYXZmX2ZsZXhfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY0LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNjU6XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNzA6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyaW5nLVx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzUtXHRcdGhhc2ggPSBsZTY0X2dldF9iaXRzKHF3MSwgSUFWRl9SWERfRkxFWF9SU1NfSEFTSF9NKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTA3NjpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZF9wdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTMxPXN0YXRpYyB2b2lkIGlhdmZfcHJvY2Vzc19za2JfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTM1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTEzNjpcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExMzc6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTExMzgtXHRfX2xlNjQgcXcwID0gcnhfZGVzYy1cdTAwM2VxdzA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTk3PXN0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExOTg6XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTk5LVx0XHRcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMjE3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEyMTg6XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjE5LVx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMjU0PXN0YXRpYyBib29sIGlhdmZfaXNfbm9uX2VvcChzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjU1Olx0XHRcdCAgICBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI1Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjg2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjg3OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyODgtaWF2Zl9leHRyYWN0X2xlZ2FjeV9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTMtXHR1NjQgcXcyID0gbGU2NF90b19jcHUocnhfZGVzYy1cdTAwM2VxdzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjk0Olx0c3RydWN0IGxpYmV0aF9ycWVfaW5mbyBmaWVsZHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTUtXHRib29sIGwydGFnMXAsIGwydGFnMnA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzMyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzMzOnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzQtaWF2Zl9leHRyYWN0X2ZsZXhfcnhfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTMzNzpcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzgtXHR1NjQgcXcwID0gbGU2NF90b19jcHUocnhfZGVzYy1cdTAwM2VxdzApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTM2NjpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzY3LWlhdmZfZXh0cmFjdF9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEzODk9c3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM5OC1cdHdoaWxlIChsaWtlbHkodG90YWxfcnhfcGFja2V0cyBcdTAwM2MgKHVuc2lnbmVkIGludClidWRnZXQpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEzOTk6XHRcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxNDAwOlx0XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDAxLVx0XHRzdHJ1Y3QgaWF2Zl9yeF9kZXNjICpyeF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTQzMC1cdFx0cnhfYnVmZmVyID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW3J4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjE0MzE6XHRcdGlmICghX19saWJldGhfcnhfc3luY19mb3JfY3B1KHBwLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDMyLVx0XHRcdGdvdG8gc2tpcF9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4Lmg9MjE4PXN0cnVjdCBpYXZmX3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmgtMjI2LVx0dW5pb24ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaDoyMjc6XHRcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9mcWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaC0yMjgtXHRcdHN0cnVjdCBpYXZmX3R4X2J1ZmZlciAqdHhfYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM9NjA3PXN0YXRpYyBpbnQgaWNlX3J4cV9wcF9jcmVhdGUoc3RydWN0IGljZV9yeF9yaW5nICpycSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYwOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MDk6XHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjEwLVx0XHQuY291bnRcdFx0PSBycS1cdTAwM2Vjb3VudCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MTg6XHRlcnIgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFx1MDAyNmZxLCBcdTAwMjZycS1cdTAwM2VxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxOS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM6NjMwOlx0ZnEgPSAoc3RydWN0IGxpYmV0aF9mcSl7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzEtXHRcdC5jb3VudFx0XHQ9IHJxLVx1MDAzZWNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYzNzpcdGVyciA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXHUwMDI2ZnEsIFx1MDAyNnJxLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjM4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMi0jaW5jbHVkZSBcdTAwM2NuZXQvZGNibmwuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6MTM6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC9yeC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYz0xMjMyPXN0YXRpYyBpbnQgaWNlX2xidGVzdF9yZWNlaXZlX2ZyYW1lcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMjMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jOjEyMzQ6XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtMTIzNS1cdGludCB2YWxpZF9mcmFtZXMsIGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjExOiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgveGRwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyLSNpbmNsdWRlIFx1MDAzY25ldC9kc2ZpZWxkLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz0xMTQ9aWNlX3VubWFwX2FuZF9mcmVlX3R4X2J1ZihzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI5LVx0Y2FzZSBJQ0VfVFhfQlVGX1hEUF9UWDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEzMDpcdFx0bGliZXRoX3hkcF9yZXR1cm5fdmEodHhfYnVmLVx1MDAzZXJhd19idWYsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTEyPXZvaWQgaWNlX3J4cV9wcF9kZXN0cm95KHN0cnVjdCBpY2VfcnhfcmluZyAqcnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTE0Olx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUxNS1cdFx0LmZxZXNcdD0gcnEtXHUwMDNlcnhfZnFlcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1MTk6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjAtXHRycS1cdTAwM2VyeF9mcWVzID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1Mjk6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MzAtXHRycS1cdTAwM2VoZHJfZnFlcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTM4PXZvaWQgaWNlX2NsZWFuX3J4X3Jpbmcoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjU1MTpcdGxpYmV0aF94ZHBfcmV0dXJuX3N0YXNoKFx1MDAyNnJ4X3JpbmctXHUwMDNleGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTQtXHRmb3IgKHUzMiBpID0gcnhfcmluZy1cdTAwM2VuZXh0X3RvX2NsZWFuOyBpICE9IHJ4X3JpbmctXHUwMDNlbmV4dF90b191c2U7ICkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTU1Olx0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KHJ4X3JpbmctXHUwMDNlcnhfZnFlc1tpXS5uZXRtZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU3LVx0XHRpZiAocnhfcmluZy1cdTAwM2VoZHJfcHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1NTg6XHRcdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhyeF9yaW5nLVx1MDAzZWhkcl9mcWVzW2ldLm5ldG1lbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NjUxPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjY1MjppY2VfcnVuX3hkcChzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY1My1cdCAgICBzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nLCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY4OS1cdGNhc2UgWERQX0RST1A6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo2OTA6XHRcdGxpYmV0aF94ZHBfcmV0dXJuX2J1ZmYoeGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY5MS1cdFx0cmV0ID0gSUNFX1hEUF9DT05TVU1FRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz04MjU9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHVuc2lnbmVkIGludCBjbGVhbmVkX2NvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjgyNzpcdGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgaGRyX2ZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODI4LVx0XHQucHBcdFx0PSByeF9yaW5nLVx1MDAzZWhkcl9wcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MzItXHR9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODMzOlx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgzNC1cdFx0LnBwXHRcdD0gcnhfcmluZy1cdTAwM2VwcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NTI6XHRcdGFkZHIgPSBsaWJldGhfcnhfYWxsb2MoXHUwMDI2ZnEsIG50dSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTMtXHRcdGlmIChhZGRyID09IERNQV9NQVBQSU5HX0VSUk9SKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODY2Olx0XHRhZGRyID0gbGliZXRoX3J4X2FsbG9jKFx1MDAyNmhkcl9mcSwgbnR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2Ny1cdFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NzA6XHRcdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhmcS5mcWVzW250dV0ubmV0bWVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg3MS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz05NDY9c3RhdGljIGludCBpY2VfY2xlYW5fcnhfaXJxKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5NTg6XHRsaWJldGhfeGRwX2luaXRfYnVmZih4ZHAsIFx1MDAyNnJ4X3JpbmctXHUwMDNleGRwLCBcdTAwMjZyeF9yaW5nLVx1MDAzZXhkcF9yeHEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTk2OC1cdFx0dW5pb24gaWNlXzMyYl9yeF9mbGV4X2Rlc2MgKnJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5Njk6XHRcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NzAtXHRcdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMC1cdFx0cnhfYnVmID0gXHUwMDI2cnhfcmluZy1cdTAwM2VoZHJfZnFlc1tudGNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTAxMTpcdFx0bGliZXRoX3hkcF9wcm9jZXNzX2J1ZmYoeGRwLCByeF9idWYsIHNpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMi1cdFx0cnhfYnVmLVx1MDAzZW5ldG1lbSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAyMS1cdFx0cnhfYnVmID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW250Y107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDIyOlx0XHRsaWJldGhfeGRwX3Byb2Nlc3NfYnVmZih4ZHAsIHJ4X2J1Ziwgc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwNDgtXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDQ5Olx0XHRcdGxpYmV0aF94ZHBfcmV0dXJuX2J1ZmZfc2xvdyh4ZHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA1MC1cdFx0XHRpY2Vfc3RhdHNfaW5jKHJ4X3JpbmctXHUwMDNlcmluZ19zdGF0cywgcnhfYnVmX2ZhaWxlZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwNzc6XHRsaWJldGhfeGRwX3NhdmVfYnVmZihcdTAwMjZyeF9yaW5nLVx1MDAzZXhkcCwgeGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjc6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC90eXBlcy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTI4NS1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjI4NjpcdFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0yODctXHRcdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9idWY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAwLVx0c3RydWN0IHBhZ2VfcG9vbCAqaGRyX3BwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzAxOlx0c3RydWN0IGxpYmV0aF9mcWUgKmhkcl9mcWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMxNy1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjMxODpcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB4ZHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMTk6XHRcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhzaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMyMC1cdH07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo2OiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgveGRwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz02NT1pY2VfcnhfaGFzaF90b19za2IoY29uc3Qgc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy02OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Njk6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzAtXHR1MzIgaGFzaDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzItXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocnhfcHR5cGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjczOlx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc3LVx0aWYgKGxpa2VseShoYXNoKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo3ODpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz0xMDg9aWNlX3J4X2NzdW0oc3RydWN0IGljZV9yeF9yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjExMTpcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTItXHR1MTYgcnhfc3RhdHVzMCwgcnhfc3RhdHVzMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTE4LVx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHB0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzoxMTk6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTEyMC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTM4Olx0aXB2NCA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjEzOTpcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xNDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTI3MT1pY2VfY2xlYW5feGRwX3R4X2J1ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTI3NS1cdGNhc2UgSUNFX1RYX0JVRl9YRFBfVFg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Mjc2Olx0XHRsaWJldGhfeGRwX3JldHVybl92YSh0eF9idWYtXHUwMDNlcmF3X2J1ZiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMjc3LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTIzPXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9od190cyhjb25zdCBzdHJ1Y3QgeGRwX21kICpjdHgsIHU2NCAqdHNfbnMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTI0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1MjU6XHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTI2LVx0c3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1Mjg6XHRyeF9yaW5nID0gbGliZXRoX3hkcF9idWZmX3RvX3JxKHhkcF9leHQsIHR5cGVvZigqcnhfcmluZyksIHhkcF9yeHEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTU2PXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9oYXNoKGNvbnN0IHN0cnVjdCB4ZHBfbWQgKmN0eCwgdTMyICpoYXNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01NTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjU1OTpcdGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcF9leHQgPSAodm9pZCAqKWN0eDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01NjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTU3OD1zdGF0aWMgaW50IGljZV94ZHBfcnhfdmxhbl90YWcoY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCBfX2JlMTYgKnZsYW5fcHJvdG8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTgxOlx0Y29uc3Qgc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwX2V4dCA9ICh2b2lkICopY3R4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4Mi1cdHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTg0Olx0cnhfcmluZyA9IGxpYmV0aF94ZHBfYnVmZl90b19ycSh4ZHBfZXh0LCB0eXBlb2YoKnJ4X3JpbmcpLCB4ZHBfcnhxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01ODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Vucm9sbC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03LSNpbmNsdWRlIFx1MDAzY25ldC94ZHBfc29ja19kcnYuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjMyOlx0XHQoKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKilmaXJzdCktXHUwMDNlZGVzYyA9IHJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY3Ni1cdHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiA9IG50YztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6Njc3Olx0cnhfcmluZy1cdTAwM2V4c2sgPSAoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKWZpcnN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9Njc1PXN0cnVjdCBpZHBmX2FkYXB0ZXIge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNDpcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNpbmdsZXFfcHRfbGt1cDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNTpcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNwbGl0cV9wdF9sa3VwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzA2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTE4OD1zdGF0aWMgdm9pZCBpZHBmX3R4X3NpbmdsZXFfZG1hX21hcF9lcnJvcihzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0xOTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjE5MjpcdHN0cnVjdCBsaWJldGhfc3FfbmFwaV9zdGF0cyBzcyA9IHsgfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoxOTM6XHRzdHJ1Y3QgbGliZXRoX2NxX3BwIGNwID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTE5NC1cdFx0LmRldlx0PSB0eHEtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0yMDYtXHRcdHR4X2J1ZiA9IFx1MDAyNnR4cS1cdTAwM2V0eF9idWZbaWR4XTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoyMDc6XHRcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFx1MDAyNmNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0yMDgtXHRcdGlmICh0eF9idWYgPT0gZmlyc3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTQ4MT1zdGF0aWMgYm9vbCBpZHBmX3R4X3NpbmdsZXFfY2xlYW4oc3RydWN0IGlkcGZfdHhfcXVldWUgKnR4X3EsIGludCBuYXBpX2J1ZGdldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDgzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0ODQ6XHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMgc3MgPSB7IH07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg1LVx0c3RydWN0IGlkcGZfYmFzZV90eF9kZXNjICp0eF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy00ODctXHRzMTYgbnRjID0gdHhfcS1cdTAwM2VuZXh0X3RvX2NsZWFuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ4ODpcdHN0cnVjdCBsaWJldGhfY3FfcHAgY3AgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg5LVx0XHQuZGV2XHQ9IHR4X3EtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MjgtXHRcdC8qIHVwZGF0ZSB0aGUgc3RhdGlzdGljcyBmb3IgdGhpcyBwYWNrZXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1Mjk6XHRcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFx1MDAyNmNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0Mi1cdFx0XHQvKiB1bm1hcCBhbnkgcmVtYWluaW5nIHBhZ2VkIGRhdGEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1NDM6XHRcdFx0bGliZXRoX3R4X2NvbXBsZXRlKHR4X2J1ZiwgXHUwMDI2Y3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0NC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz02NDk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2NzdW0oc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4cSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTAtXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTE6XHRcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTI6XHRcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1Ni1cdC8qIGNoZWNrIGlmIFJ4IGNoZWNrc3VtIGlzIGVuYWJsZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTc6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocnhxLVx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY2NDpcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NjU6XHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTYtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjcxNzpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE4LWlkcGZfcnhfc2luZ2xlcV9iYXNlX2NzdW0oY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3MjA6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0geyB9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcyMS1cdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc1MjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzUzLWlkcGZfcnhfc2luZ2xlcV9mbGV4X2NzdW0oY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzU0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3NTU6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0geyB9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1Ni1cdHUxNiByeF9zdGF0dXMwLCByeF9zdGF0dXMxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz03ODk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2Jhc2VfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzkxLVx0XHRcdFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzkyOlx0XHRcdFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3OTY6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyeF9xLVx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjgwNTpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz04MTk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2ZsZXhfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODIxLVx0XHRcdFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODIyOlx0XHRcdFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgyMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODI0Olx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcS1cdTAwM2V4ZHBfcnhxLmRldiwgZGVjb2RlZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODI1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MzE6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9ODQ4PV9faWRwZl9yeF9zaW5nbGVxX3Byb2Nlc3Nfc2tiX2ZpZWxkcyhzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4NTM6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQgPSByeF9xLVx1MDAzZXJ4X3B0eXBlX2xrdXBbcHR5cGVdO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MjQyCgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogNTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enphYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXNuJiMzOTt0IGZ1enphYmxlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQsIGFuZCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGF0IGNvbmNsdXNpb24uIEZpcnN0LCBJIGtub3cgdGhhdCBgbGliZXRoYCBpcyBleGNsdXNpdmVseSB1c2VkIGJ5IEludGVsIEV0aGVybmV0IGRyaXZlcnMuIFRoZSBwYXRjaCB0b3VjaGVzIGJvdGggYGlhdmZfdHhyeC5jYCBhbmQgYGluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oYC4gU2luY2UgYGlhdmZgIGFuZCBgbGliZXRoYCBhcmUgYm90aCBJbnRlbC1zcGVjaWZpYywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgdGhlIGBkcml2ZXJzL25ldC9gIGRpcmVjdG9yeSBhbmQgY29uZmlybWVkIOKAkyBubyBvdGhlciBkcml2ZXJzIHV0aWxpemUgYGxpYmV0aGAsIGl0JiMzOTtzIHN0cmljdGx5IEludGVsIEV0aGVybmV0LiBBbmQgSW50ZWwgRXRoZXJuZXQgZHJpdmVycywgbGlrZSBgaTQwZWAsIGBpYXZmYCwgYGljZWAsIGFuZCBgaWRwZmAsIGluaGVyZW50bHkgZGVwZW5kIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBub3QgdGhlIGVtdWxhdGVkIG5ldHdvcmsgY2FyZHMgYXZhaWxhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIFRoZXJlZm9yZSwgYW55IGNvZGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhvc2UgZHJpdmVycyBhcmUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuCgpJIGRpZCwgaG93ZXZlciwgbmVlZCB0byBjb25maXJtIHRoYXQgYGlhdmZgIGNvdWxkIG5vdCBiZSBmdXp6ZWQgaW4gYSBzcGVjaWZpYyBjaXJjdW1zdGFuY2UuIEkgcmVtZW1iZXJlZCB0aGF0IHN5emthbGxlciBoYXMgc29tZSBtZWNoYW5pc21zIGZvciBmdXp6aW5nIFBDSSBkZXZpY2VzIHZpYSBgc3l6X3BjaV9kZXZpY2VgLCBidXQgdGhhdCB3b3VsZCBkZXBlbmQgb24gYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgUENJIGRldmljZSYjMzk7cyBCQVJzIGFuZCByZWdpc3RlcnMuIEV2ZW4gaWYgdGhhdCB3ZXJlIHBvc3NpYmxlLCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgcGF0Y2hlcyBtb2RpZnlpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG5vdCB0byBiZSBjb25zaWRlcmVkIGZ1enphYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBpcyB2ZXJ5IGNsZWFyOiB0aGlzIGluY2x1ZGVzIGRyaXZlcnMgbGlrZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzIChgaWF2ZmAsIGBpY2VgLCBldGMuKS4gVGhlc2UgSW50ZWwgZHJpdmVycyAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgcGF0Y2ggaGl0cyB0aGF0IHNwZWNpZmljIGV4Y2x1c2lvbiBjcml0ZXJpYSBkaXJlY3RseS4KCkdpdmVuIGFsbCBvZiB0aGF0LCBJIGNhbiBkZWZpbml0aXZlbHkgc3RhdGUgdGhhdCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiAoaWF2ZikgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgSW50ZWwgRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKSwgd2hpY2ggYXJlIGJvdGggdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gcGh5c2ljYWwgSW50ZWwgbmV0d29yayBoYXJkd2FyZSwgYW5kIG5vdCBlbXVsYXRlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0JiMzOTtzIG15IHJlYXNvbmluZy4KCk15IGZpbmFsIHJlcG9ydCB3aWxsIGJlOgoqICAgUmVhc29uaW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4KKiAgIFdvcnRoRnV6emluZzogZmFsc2UKKiAgIEZvY3VzU3ltYm9sczogXFsgXQoqICAgRW5hYmxlQ29uZmlnczogXFsgXQoKSSBjYW4gbm93IGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiAoaWF2ZikgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgSW50ZWwgRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKS4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEludGVsIG5ldHdvcmsgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzozNy4xNjYzNjE0MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTMyMjYyMTcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjM3LjE2NjM2NzcxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1MDUyOTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmJmNTZlZjMxNDI2ZjUwYTQ4ZTg1MTNjYzUzNWQzOGYyMjU5NzE4MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIzOjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXFxuaW5kZXggYzMwYWJmMTdjZjVkMy4uOWRjNWYwNzYxZDhiYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguY1xcbkBAIC0xMTg0LDYgKzExODQsNyBAQCBzdGF0aWMgYm9vbCBpYXZmX2NsZWFudXBfaGVhZGVycyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXG4gLyoqXFxuICAqIGlhdmZfYWRkX3J4X2ZyYWcgLSBBZGQgY29udGVudHMgb2YgUnggYnVmZmVyIHRvIHNrX2J1ZmZcXG4rICogQHBwOiBwYWdlIHBvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cXG4gICogQHNrYjogc2tfYnVmZiB0byBwbGFjZSB0aGUgZGF0YSBpbnRvXFxuICAqIEByeF9idWZmZXI6IGJ1ZmZlciBjb250YWluaW5nIHBhZ2UgdG8gYWRkXFxuICAqIEBzaXplOiBwYWNrZXQgbGVuZ3RoIGZyb20gcnhfZGVzY1xcbkBAIC0xMTkzLDExICsxMTk0LDExIEBAIHN0YXRpYyBib29sIGlhdmZfY2xlYW51cF9oZWFkZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IpXFxuICAqXFxuICAqIFRoZSBmdW5jdGlvbiB3aWxsIHRoZW4gdXBkYXRlIHRoZSBwYWdlIG9mZnNldC5cXG4gICoqL1xcbi1zdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKHN0cnVjdCBza19idWZmICpza2IsXFxuK3N0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcXG4gXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4ge1xcbi1cXHR1MzIgaHIgPSBuZXRtZW1fZ2V0X3BwKHJ4X2J1ZmZlci1cXHUwMDNlbmV0bWVtKS1cXHUwMDNlcC5vZmZzZXQ7XFxuK1xcdHUzMiBociA9IHBwLVxcdTAwM2VwLm9mZnNldDtcXG4gXFxuIFxcdHNrYl9hZGRfcnhfZnJhZ19uZXRtZW0oc2tiLCBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZW5yX2ZyYWdzLFxcbiBcXHRcXHRcXHQgICAgICAgcnhfYnVmZmVyLVxcdTAwM2VuZXRtZW0sIHJ4X2J1ZmZlci1cXHUwMDNlb2Zmc2V0ICsgaHIsXFxuQEAgLTEyMDYsMTcgKzEyMDcsMTkgQEAgc3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gLyoqXFxuICAqIGlhdmZfYnVpbGRfc2tiIC0gQnVpbGQgc2tiIGFyb3VuZCBhbiBleGlzdGluZyBidWZmZXJcXG4rICogQHBwOiBwYWdlIHBvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cXG4gICogQHJ4X2J1ZmZlcjogUnggYnVmZmVyIHRvIHB1bGwgZGF0YSBmcm9tXFxuICAqIEBzaXplOiBzaXplIG9mIGJ1ZmZlciB0byBhZGQgdG8gc2tiXFxuICAqXFxuICAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGFuIHNrYiBhcm91bmQgYW4gZXhpc3RpbmcgUnggYnVmZmVyLCB0YWtpbmcgY2FyZVxcbiAgKiB0byBzZXQgdXAgdGhlIHNrYiBjb3JyZWN0bHkgYW5kIGF2b2lkIGFueSBtZW1jcHkgb3ZlcmhlYWQuXFxuICAqL1xcbi1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlhdmZfYnVpbGRfc2tiKGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWZmZXIsXFxuK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXFxuK1xcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWZmZXIsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBzaXplKVxcbiB7XFxuIFxcdHN0cnVjdCBwYWdlICpidWZfcGFnZSA9IF9fbmV0bWVtX3RvX3BhZ2UocnhfYnVmZmVyLVxcdTAwM2VuZXRtZW0pO1xcbi1cXHR1MzIgaHIgPSBwcF9wYWdlX3RvX25tZGVzYyhidWZfcGFnZSktXFx1MDAzZXBwLVxcdTAwM2VwLm9mZnNldDtcXG4rXFx0dTMyIGhyID0gcHAtXFx1MDAzZXAub2Zmc2V0O1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiBcXHR2b2lkICp2YTtcXG4gXFxuQEAgLTEzODcsNiArMTM5MCw3IEBAIHN0YXRpYyBpbnQgaWF2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcXG4ge1xcbiBcXHRib29sIGZsZXggPSByeF9yaW5nLVxcdTAwM2VyeGRpZCA9PSBWSVJUQ0hOTF9SWERJRF8yX0ZMRVhfU1FfTklDO1xcbiBcXHR1bnNpZ25lZCBpbnQgdG90YWxfcnhfYnl0ZXMgPSAwLCB0b3RhbF9yeF9wYWNrZXRzID0gMDtcXG4rXFx0Y29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAgPSByeF9yaW5nLVxcdTAwM2VwcDtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHJ4X3JpbmctXFx1MDAzZXNrYjtcXG4gXFx0dTE2IGNsZWFuZWRfY291bnQgPSBJQVZGX0RFU0NfVU5VU0VEKHJ4X3JpbmcpO1xcbiBcXHRib29sIGZhaWx1cmUgPSBmYWxzZTtcXG5AQCAtMTQyNCwxNCArMTQyOCwxNCBAQCBzdGF0aWMgaW50IGlhdmZfY2xlYW5fcnhfaXJxKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIGludCBidWRnZXQpXFxuIFxcdFxcdGlhdmZfdHJhY2UoY2xlYW5fcnhfaXJxLCByeF9yaW5nLCByeF9kZXNjLCBza2IpO1xcbiBcXG4gXFx0XFx0cnhfYnVmZmVyID0gXFx1MDAyNnJ4X3JpbmctXFx1MDAzZXJ4X2ZxZXNbcnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbl07XFxuLVxcdFxcdGlmICghbGliZXRoX3J4X3N5bmNfZm9yX2NwdShyeF9idWZmZXIsIGZpZWxkcy5sZW4pKVxcbitcXHRcXHRpZiAoIV9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKSlcXG4gXFx0XFx0XFx0Z290byBza2lwX2RhdGE7XFxuIFxcbiBcXHRcXHQvKiByZXRyaWV2ZSBhIGJ1ZmZlciBmcm9tIHRoZSByaW5nICovXFxuIFxcdFxcdGlmIChza2IpXFxuLVxcdFxcdFxcdGlhdmZfYWRkX3J4X2ZyYWcoc2tiLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pO1xcbitcXHRcXHRcXHRpYXZmX2FkZF9yeF9mcmFnKHBwLCBza2IsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XFxuIFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0c2tiID0gaWF2Zl9idWlsZF9za2IocnhfYnVmZmVyLCBmaWVsZHMubGVuKTtcXG4rXFx0XFx0XFx0c2tiID0gaWF2Zl9idWlsZF9za2IocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XFxuIFxcbiBcXHRcXHQvKiBleGl0IGlmIHdlIGZhaWxlZCB0byByZXRyaWV2ZSBhIGJ1ZmZlciAqL1xcbiBcXHRcXHRpZiAoIXNrYikge1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgvcnguaCBiL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXFxuaW5kZXggNWQ5OTE0MDQ4NDVlNi4uZmRkYWMwODRlMDAxZSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9saWJldGgvcnguaFxcbisrKyBiL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXFxuQEAgLTExOCwzNiArMTE4LDUxIEBAIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBsaWJldGhfcnhfYWxsb2MoY29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCAqZnEsIHUzMiBpKVxcbiB2b2lkIGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cobmV0bWVtX3JlZiBuZXRtZW0pO1xcbiBcXG4gLyoqXFxuLSAqIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxcbisgKiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxcbisgKiBAcG9vbDogXFx1MDAyNnBhZ2VfcG9vbCB0aGUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgZnJvbVxcbiAgKiBAZnFlOiBidWZmZXIgdG8gcHJvY2Vzc1xcbiAgKiBAbGVuOiBmcmFtZSBsZW5ndGggZnJvbSB0aGUgZGVzY3JpcHRvclxcbiAgKlxcbi0gKiBQcm9jZXNzIHRoZSBidWZmZXIgYWZ0ZXIgaXQncyB3cml0dGVuIGJ5IEhXLiBUaGUgcmVndWxhciBwYXRoIGlzIHRvXFxuLSAqIHN5bmNocm9uaXplIERNQSBmb3IgQ1BVLCBidXQgaW4gY2FzZSBvZiBubyBkYXRhIGl0IHdpbGwgYmUgaW1tZWRpYXRlbHlcXG4tICogcmVjeWNsZWQgYmFjayB0byBpdHMgUFAuXFxuKyAqIFZhcmlhbnQgZm9yIGNhbGxlcnMgd2hpY2ggYWxyZWFkeSBrbm93IHRoZSBidWZmZXIncyBwb29sLCB0eXBpY2FsbHlcXG4rICogdGhlaXIgUnggcXVldWUncyBmaWxsIHF1ZXVlIHBvb2wuXFxuICAqXFxuICAqIFJldHVybjogdHJ1ZSB3aGVuIHRoZXJlJ3MgZGF0YSB0byBwcm9jZXNzLCBmYWxzZSBvdGhlcndpc2UuXFxuICAqL1xcbi1zdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3J4X3N5bmNfZm9yX2NwdShjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqZnFlLFxcbi1cXHRcXHRcXHRcXHRcXHQgIHUzMiBsZW4pXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICB1MzIgbGVuKVxcbiB7XFxuLVxcdG5ldG1lbV9yZWYgbmV0bWVtID0gZnFlLVxcdTAwM2VuZXRtZW07XFxuLVxcbiBcXHQvKiBWZXJ5IHJhcmUsIGJ1dCBwb3NzaWJsZSBjYXNlLiBUaGUgbW9zdCBjb21tb24gcmVhc29uOlxcbiBcXHQgKiB0aGUgbGFzdCBmcmFnbWVudCBjb250YWluZWQgRkNTIG9ubHksIHdoaWNoIHdhcyB0aGVuXFxuIFxcdCAqIHN0cmlwcGVkIGJ5IHRoZSBIVy5cXG4gXFx0ICovXFxuIFxcdGlmICh1bmxpa2VseSghbGVuKSkge1xcbi1cXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KG5ldG1lbSk7XFxuK1xcdFxcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3coZnFlLVxcdTAwM2VuZXRtZW0pO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gXFxuLVxcdHBhZ2VfcG9vbF9kbWFfc3luY19uZXRtZW1fZm9yX2NwdShuZXRtZW1fZ2V0X3BwKG5ldG1lbSksIG5ldG1lbSxcXG4tXFx0XFx0XFx0XFx0XFx0ICBmcWUtXFx1MDAzZW9mZnNldCwgbGVuKTtcXG4rXFx0cGFnZV9wb29sX2RtYV9zeW5jX25ldG1lbV9mb3JfY3B1KHBvb2wsIGZxZS1cXHUwMDNlbmV0bWVtLCBmcWUtXFx1MDAzZW9mZnNldCwgbGVuKTtcXG4gXFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbisvKipcXG4rICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXFxuKyAqIEBmcWU6IGJ1ZmZlciB0byBwcm9jZXNzXFxuKyAqIEBsZW46IGZyYW1lIGxlbmd0aCBmcm9tIHRoZSBkZXNjcmlwdG9yXFxuKyAqXFxuKyAqIFByb2Nlc3MgdGhlIGJ1ZmZlciBhZnRlciBpdCdzIHdyaXR0ZW4gYnkgSFcuIFRoZSByZWd1bGFyIHBhdGggaXMgdG9cXG4rICogc3luY2hyb25pemUgRE1BIGZvciBDUFUsIGJ1dCBpbiBjYXNlIG9mIG5vIGRhdGEgaXQgd2lsbCBiZSBpbW1lZGlhdGVseVxcbisgKiByZWN5Y2xlZCBiYWNrIHRvIGl0cyBQUC5cXG4rICpcXG4rICogUmV0dXJuOiB0cnVlIHdoZW4gdGhlcmUncyBkYXRhIHRvIHByb2Nlc3MsIGZhbHNlIG90aGVyd2lzZS5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBsaWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgdTMyIGxlbilcXG4re1xcbitcXHRyZXR1cm4gX19saWJldGhfcnhfc3luY19mb3JfY3B1KG5ldG1lbV9nZXRfcHAoZnFlLVxcdTAwM2VuZXRtZW0pLCBmcWUsIGxlbik7XFxuK31cXG4rXFxuIC8qIENvbnZlcnRpbmcgYWJzdHJhY3QgcGFja2V0IHR5cGUgbnVtYmVycyBpbnRvIGEgc29mdHdhcmUgc3RydWN0dXJlIHdpdGhcXG4gICogdGhlIHBhY2tldCBwYXJhbWV0ZXJzIHRvIGRvIE8oMSkgbG9va3VwIG9uIFJ4LlxcbiAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MzcuNTgyMzIzMzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3ODkwNjY1MDg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJiZjU2ZWYzMTQyNmY1MGE0OGU4NTEzY2M1MzVkMzhmMjI1OTcxODJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIzOjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmNcbmluZGV4IGMzMGFiZjE3Y2Y1ZDMuLjlkYzVmMDc2MWQ4YmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXG5AQCAtMTE4NCw2ICsxMTg0LDcgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcbiAvKipcbiAgKiBpYXZmX2FkZF9yeF9mcmFnIC0gQWRkIGNvbnRlbnRzIG9mIFJ4IGJ1ZmZlciB0byBza19idWZmXG4rICogQHBwOiBwYWdlIHBvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cbiAgKiBAc2tiOiBza19idWZmIHRvIHBsYWNlIHRoZSBkYXRhIGludG9cbiAgKiBAcnhfYnVmZmVyOiBidWZmZXIgY29udGFpbmluZyBwYWdlIHRvIGFkZFxuICAqIEBzaXplOiBwYWNrZXQgbGVuZ3RoIGZyb20gcnhfZGVzY1xuQEAgLTExOTMsMTEgKzExOTQsMTEgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgKlxuICAqIFRoZSBmdW5jdGlvbiB3aWxsIHRoZW4gdXBkYXRlIHRoZSBwYWdlIG9mZnNldC5cbiAgKiovXG4tc3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK3N0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXG4ge1xuLVx0dTMyIGhyID0gbmV0bWVtX2dldF9wcChyeF9idWZmZXItXHUwMDNlbmV0bWVtKS1cdTAwM2VwLm9mZnNldDtcbitcdHUzMiBociA9IHBwLVx1MDAzZXAub2Zmc2V0O1xuIFxuIFx0c2tiX2FkZF9yeF9mcmFnX25ldG1lbShza2IsIHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncyxcbiBcdFx0XHQgICAgICAgcnhfYnVmZmVyLVx1MDAzZW5ldG1lbSwgcnhfYnVmZmVyLVx1MDAzZW9mZnNldCArIGhyLFxuQEAgLTEyMDYsMTcgKzEyMDcsMTkgQEAgc3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIC8qKlxuICAqIGlhdmZfYnVpbGRfc2tiIC0gQnVpbGQgc2tiIGFyb3VuZCBhbiBleGlzdGluZyBidWZmZXJcbisgKiBAcHA6IHBhZ2UgcG9vbCB0aGUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgZnJvbVxuICAqIEByeF9idWZmZXI6IFJ4IGJ1ZmZlciB0byBwdWxsIGRhdGEgZnJvbVxuICAqIEBzaXplOiBzaXplIG9mIGJ1ZmZlciB0byBhZGQgdG8gc2tiXG4gICpcbiAgKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBhbiBza2IgYXJvdW5kIGFuIGV4aXN0aW5nIFJ4IGJ1ZmZlciwgdGFraW5nIGNhcmVcbiAgKiB0byBzZXQgdXAgdGhlIHNrYiBjb3JyZWN0bHkgYW5kIGF2b2lkIGFueSBtZW1jcHkgb3ZlcmhlYWQuXG4gICovXG4tc3RhdGljIHN0cnVjdCBza19idWZmICppYXZmX2J1aWxkX3NrYihjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXG4rXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuIFx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHNpemUpXG4ge1xuIFx0c3RydWN0IHBhZ2UgKmJ1Zl9wYWdlID0gX19uZXRtZW1fdG9fcGFnZShyeF9idWZmZXItXHUwMDNlbmV0bWVtKTtcbi1cdHUzMiBociA9IHBwX3BhZ2VfdG9fbm1kZXNjKGJ1Zl9wYWdlKS1cdTAwM2VwcC1cdTAwM2VwLm9mZnNldDtcbitcdHUzMiBociA9IHBwLVx1MDAzZXAub2Zmc2V0O1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdHZvaWQgKnZhO1xuIFxuQEAgLTEzODcsNiArMTM5MCw3IEBAIHN0YXRpYyBpbnQgaWF2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcbiB7XG4gXHRib29sIGZsZXggPSByeF9yaW5nLVx1MDAzZXJ4ZGlkID09IFZJUlRDSE5MX1JYRElEXzJfRkxFWF9TUV9OSUM7XG4gXHR1bnNpZ25lZCBpbnQgdG90YWxfcnhfYnl0ZXMgPSAwLCB0b3RhbF9yeF9wYWNrZXRzID0gMDtcbitcdGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwID0gcnhfcmluZy1cdTAwM2VwcDtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSByeF9yaW5nLVx1MDAzZXNrYjtcbiBcdHUxNiBjbGVhbmVkX2NvdW50ID0gSUFWRl9ERVNDX1VOVVNFRChyeF9yaW5nKTtcbiBcdGJvb2wgZmFpbHVyZSA9IGZhbHNlO1xuQEAgLTE0MjQsMTQgKzE0MjgsMTQgQEAgc3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxuIFx0XHRpYXZmX3RyYWNlKGNsZWFuX3J4X2lycSwgcnhfcmluZywgcnhfZGVzYywgc2tiKTtcbiBcbiBcdFx0cnhfYnVmZmVyID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW3J4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbl07XG4tXHRcdGlmICghbGliZXRoX3J4X3N5bmNfZm9yX2NwdShyeF9idWZmZXIsIGZpZWxkcy5sZW4pKVxuK1x0XHRpZiAoIV9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKSlcbiBcdFx0XHRnb3RvIHNraXBfZGF0YTtcbiBcbiBcdFx0LyogcmV0cmlldmUgYSBidWZmZXIgZnJvbSB0aGUgcmluZyAqL1xuIFx0XHRpZiAoc2tiKVxuLVx0XHRcdGlhdmZfYWRkX3J4X2ZyYWcoc2tiLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pO1xuK1x0XHRcdGlhdmZfYWRkX3J4X2ZyYWcocHAsIHNrYiwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKTtcbiBcdFx0ZWxzZVxuLVx0XHRcdHNrYiA9IGlhdmZfYnVpbGRfc2tiKHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XG4rXHRcdFx0c2tiID0gaWF2Zl9idWlsZF9za2IocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XG4gXG4gXHRcdC8qIGV4aXQgaWYgd2UgZmFpbGVkIHRvIHJldHJpZXZlIGEgYnVmZmVyICovXG4gXHRcdGlmICghc2tiKSB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmggYi9pbmNsdWRlL25ldC9saWJldGgvcnguaFxuaW5kZXggNWQ5OTE0MDQ4NDVlNi4uZmRkYWMwODRlMDAxZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXG4rKysgYi9pbmNsdWRlL25ldC9saWJldGgvcnguaFxuQEAgLTExOCwzNiArMTE4LDUxIEBAIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBsaWJldGhfcnhfYWxsb2MoY29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCAqZnEsIHUzMiBpKVxuIHZvaWQgbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW1fcmVmIG5ldG1lbSk7XG4gXG4gLyoqXG4tICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXG4rICogX19saWJldGhfcnhfc3luY19mb3JfY3B1IC0gc3luY2hyb25pemUgb3IgcmVjeWNsZSBidWZmZXIgcG9zdCBETUFcbisgKiBAcG9vbDogXHUwMDI2cGFnZV9wb29sIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCBmcm9tXG4gICogQGZxZTogYnVmZmVyIHRvIHByb2Nlc3NcbiAgKiBAbGVuOiBmcmFtZSBsZW5ndGggZnJvbSB0aGUgZGVzY3JpcHRvclxuICAqXG4tICogUHJvY2VzcyB0aGUgYnVmZmVyIGFmdGVyIGl0J3Mgd3JpdHRlbiBieSBIVy4gVGhlIHJlZ3VsYXIgcGF0aCBpcyB0b1xuLSAqIHN5bmNocm9uaXplIERNQSBmb3IgQ1BVLCBidXQgaW4gY2FzZSBvZiBubyBkYXRhIGl0IHdpbGwgYmUgaW1tZWRpYXRlbHlcbi0gKiByZWN5Y2xlZCBiYWNrIHRvIGl0cyBQUC5cbisgKiBWYXJpYW50IGZvciBjYWxsZXJzIHdoaWNoIGFscmVhZHkga25vdyB0aGUgYnVmZmVyJ3MgcG9vbCwgdHlwaWNhbGx5XG4rICogdGhlaXIgUnggcXVldWUncyBmaWxsIHF1ZXVlIHBvb2wuXG4gICpcbiAgKiBSZXR1cm46IHRydWUgd2hlbiB0aGVyZSdzIGRhdGEgdG8gcHJvY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAqL1xuLXN0YXRpYyBpbmxpbmUgYm9vbCBsaWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXG4tXHRcdFx0XHRcdCAgdTMyIGxlbilcbitzdGF0aWMgaW5saW5lIGJvb2wgX19saWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wsXG4rXHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqZnFlLFxuK1x0XHRcdFx0XHQgICAgdTMyIGxlbilcbiB7XG4tXHRuZXRtZW1fcmVmIG5ldG1lbSA9IGZxZS1cdTAwM2VuZXRtZW07XG4tXG4gXHQvKiBWZXJ5IHJhcmUsIGJ1dCBwb3NzaWJsZSBjYXNlLiBUaGUgbW9zdCBjb21tb24gcmVhc29uOlxuIFx0ICogdGhlIGxhc3QgZnJhZ21lbnQgY29udGFpbmVkIEZDUyBvbmx5LCB3aGljaCB3YXMgdGhlblxuIFx0ICogc3RyaXBwZWQgYnkgdGhlIEhXLlxuIFx0ICovXG4gXHRpZiAodW5saWtlbHkoIWxlbikpIHtcbi1cdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW0pO1xuK1x0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KGZxZS1cdTAwM2VuZXRtZW0pO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4tXHRwYWdlX3Bvb2xfZG1hX3N5bmNfbmV0bWVtX2Zvcl9jcHUobmV0bWVtX2dldF9wcChuZXRtZW0pLCBuZXRtZW0sXG4tXHRcdFx0XHRcdCAgZnFlLVx1MDAzZW9mZnNldCwgbGVuKTtcbitcdHBhZ2VfcG9vbF9kbWFfc3luY19uZXRtZW1fZm9yX2NwdShwb29sLCBmcWUtXHUwMDNlbmV0bWVtLCBmcWUtXHUwMDNlb2Zmc2V0LCBsZW4pO1xuIFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuKy8qKlxuKyAqIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxuKyAqIEBmcWU6IGJ1ZmZlciB0byBwcm9jZXNzXG4rICogQGxlbjogZnJhbWUgbGVuZ3RoIGZyb20gdGhlIGRlc2NyaXB0b3JcbisgKlxuKyAqIFByb2Nlc3MgdGhlIGJ1ZmZlciBhZnRlciBpdCdzIHdyaXR0ZW4gYnkgSFcuIFRoZSByZWd1bGFyIHBhdGggaXMgdG9cbisgKiBzeW5jaHJvbml6ZSBETUEgZm9yIENQVSwgYnV0IGluIGNhc2Ugb2Ygbm8gZGF0YSBpdCB3aWxsIGJlIGltbWVkaWF0ZWx5XG4rICogcmVjeWNsZWQgYmFjayB0byBpdHMgUFAuXG4rICpcbisgKiBSZXR1cm46IHRydWUgd2hlbiB0aGVyZSdzIGRhdGEgdG8gcHJvY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgYm9vbCBsaWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXG4rXHRcdFx0XHRcdCAgdTMyIGxlbilcbit7XG4rXHRyZXR1cm4gX19saWJldGhfcnhfc3luY19mb3JfY3B1KG5ldG1lbV9nZXRfcHAoZnFlLVx1MDAzZW5ldG1lbSksIGZxZSwgbGVuKTtcbit9XG4rXG4gLyogQ29udmVydGluZyBhYnN0cmFjdCBwYWNrZXQgdHlwZSBudW1iZXJzIGludG8gYSBzb2Z0d2FyZSBzdHJ1Y3R1cmUgd2l0aFxuICAqIHRoZSBwYWNrZXQgcGFyYW1ldGVycyB0byBkbyBPKDEpIGxvb2t1cCBvbiBSeC5cbiAgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjM3LjU4MjMyNTA4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE4MDc5Nzk0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElBVkYgUGF0Y2ggYW5kIGl0cyBJbXBsaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIG1ha2luZyBzb21lIHByZXR0eSBzcGVjaWZpYyBjaGFuZ2VzIHdpdGhpbiB0aGUgSW50ZWwgSUFWRiBkcml2ZXIuIEl0J3MgdG91Y2hpbmcgYGlhdmZfdHhyeC5jYCBhbmQgYHJ4LmhgLCBhbmQgc3BlY2lmaWNhbGx5LCBpdCdzIHVwZGF0aW5nIGhvdyB0aGUgYHBhZ2VfcG9vbGAgaXMgaGFuZGxlZCB3aXRoaW4gYGlhdmZfYWRkX3J4X2ZyYWdgLCBgaWF2Zl9idWlsZF9za2JgLCBhbmQgYGlhdmZfY2xlYW5fcnhfaXJxYC4gVGhlIGltcG9ydGFudCB0aGluZyBJJ20gc2VlaW5nIGlzIHRoYXQgaXQncyBubyBsb25nZXIgaW1wbGljaXRseSBkZXJpdmluZyB0aGUgYHBhZ2VfcG9vbGAgZnJvbSBhIGBuZXRtZW1gIHJlZmVyZW5jZS4gSXQncyBiZWVuIG1hZGUgZXhwbGljaXQuIEl0IGFsc28gbG9va3MgbGlrZSBhIG5ldyBmdW5jdGlvbiBjYWxsZWQgYF9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdWAgaGFzIGJlZW4gaW50cm9kdWNlZCwgYWdhaW4gdGFraW5nIGEgYHBhZ2VfcG9vbGAgcG9pbnRlci4gYGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHVgIGhhcyBhbHNvIGJlZW4gbW9kaWZpZWQgdG8gdXNlIHRoZSBgcGFnZV9wb29sYCBwb2ludGVyLlxuXG5Ob3csIHRoZSBgaWF2ZmAgZHJpdmVyLi4uIHRoYXQncyB0aGUgSW50ZWwgRXRoZXJuZXQgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIFJpZ2h0LCBpdCdzIGEgVkYgZHJpdmVyLiBTbywgdGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCByaWdodD8gRXNwZWNpYWxseSB3aGVuIHlvdSdyZSB0YWxraW5nIGFib3V0IFNSLUlPVi4gQW5kIHRoYXQgbWVhbnMgaXQgaXMgYSBWaXJ0dWFsIEZ1bmN0aW9uLCB3aGljaCBuZWVkcyB0aGUgcGh5c2ljYWwgTklDIChsaWtlIGFuIGk0MGUgb3IgaWNlKSB0byBiZSBwcmVzZW50IHRvIHdvcmsuIFxuXG5UaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGV2ZW4gKnRlc3QqIHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBRRU1VIGRvZXNuJ3QgbmF0aXZlbHkgZW11bGF0ZSBJbnRlbCBBVkZzLiBIbW1tLCBjb3VsZCB0aGVyZSBiZSBzb21lIHdheSB0byBmdWRnZSBpdCB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtYXliZSBpZiBpdCdzIGNvbnNpZGVyZWQgY29yZSBlbm91Z2g/XG5cbldhaXQsIHRoZSBwcm9tcHQgc2F5cyBzb21ldGhpbmcgdGhhdCBtaWdodCBhcHBseTogXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgVGhpcyBpcyBleGFjdGx5IHdoYXQgSSdtIGRlYWxpbmcgd2l0aC4gSXMgYGlhdmZgIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlPyBZZXMsIHRoYXQncyB3aGF0IGEgVkYgZHJpdmVyIGlzIGxpa2UuIFVzdWFsbHksIFZGIGRyaXZlcnMgcmVxdWlyZSB0aGUgcGh5c2ljYWwgUEYgZHJpdmVyIGFuZCBwaHlzaWNhbCBoYXJkd2FyZSwgdW5sZXNzIEkgY2FuIGZpbmQgYW4gZW11bGF0b3IuXG5cbkFscmlnaHQsIHNvIHRoZSBrZXkgdGhpbmcgaXMgd2hldGhlciBgaWF2ZmAgKmNhbiogYmUgZnV6emVkIGluIGFueSByZWFzb25hYmxlIHdheSBvciBpZiBJIGFic29sdXRlbHkgbmVlZCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gdGVzdCB0aGlzLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYSBQQ0kgZHJpdmVyLCBgaWF2ZmAuIEJldHRlciBjaGVjayB0aGUga2VybmVsIHNvdXJjZSB0byBtYWtlIHN1cmUgdGhhdCdzIGFjY3VyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NDUuNzYzMTI1Njc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODQ0NzM1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpYXZmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzM2NiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS0zLSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlOjQ6IyBNYWtlZmlsZSBmb3IgdGhlIEludGVsKFIpIEV0aGVybmV0IEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS01LSMgZHJpdmVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlPTEwPXN1YmRpci1jY2ZsYWdzLXkgKz0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlLTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0lBVkYpICs9IGlhdmYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGUtMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZToxNDppYXZmLXkgOj0gaWF2Zl9tYWluLm8gaWF2Zl9ldGh0b29sLm8gaWF2Zl92aXJ0Y2hubC5vIGlhdmZfZmRpci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlOjE1OlxcdCAgaWF2Zl9hZHZfcnNzLm8gaWF2Zl90eHJ4Lm8gaWF2Zl9jb21tb24ubyBpYXZmX2FkbWlucS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlOjE3OmlhdmYtJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spICs9IGlhdmZfcHRwLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjM5OiNpbmNsdWRlIFxcXCJpYXZmX3R5cGUuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00MC0jaW5jbHVkZSBcXHUwMDNjbGludXgvYXZmL3ZpcnRjaG5sLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDE6I2luY2x1ZGUgXFxcImlhdmZfdHhyeC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQyOiNpbmNsdWRlIFxcXCJpYXZmX2ZkaXIuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0MzojaW5jbHVkZSBcXFwiaWF2Zl9hZHZfcnNzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDQ6I2luY2x1ZGUgXFxcImlhdmZfdHlwZXMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NS0jaW5jbHVkZSBcXHUwMDNjbGludXgvYml0bWFwLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00Ny0jZGVmaW5lIERFRkFVTFRfREVCVUdfTEVWRUxfU0hJRlQgM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ4OiNkZWZpbmUgUEZYIFxcXCJpYXZmOiBcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTA6aW50IGlhdmZfc3RhdHVzX3RvX2Vycm5vKGVudW0gaWF2Zl9zdGF0dXMgc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MS1pbnQgdmlydGNobmxfc3RhdHVzX3RvX2Vycm5vKGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgdl9zdGF0dXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTMtLyogVlNJIHN0YXRlIGZsYWdzIHNoYXJlZCB3aXRoIGNvbW1vbiBjb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTQ6ZW51bSBpYXZmX3ZzaV9zdGF0ZV90IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NS1cXHRfX0lBVkZfVlNJX0RPV04sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC02MC0vKiBkdW1teSBzdHJ1Y3QgdG8gbWFrZSBjb21tb24gY29kZSBsZXNzIHBhaW5mdWwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTpzdHJ1Y3QgaWF2Zl92c2kge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYyOlxcdHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmJhY2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjg2OiNkZWZpbmUgSUFWRl9SWF9ERVNDKFIsIGkpIChcXHUwMDI2KCgoc3RydWN0IGlhdmZfcnhfZGVzYyAqKSgoUiktXFx1MDAzZWRlc2MpKVtpXSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6ODc6I2RlZmluZSBJQVZGX1RYX0RFU0MoUiwgaSkgKFxcdTAwMjYoKChzdHJ1Y3QgaWF2Zl90eF9kZXNjICopKChSKS1cXHUwMDNlZGVzYykpW2ldKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC04OC0jZGVmaW5lIElBVkZfVFhfQ1RYVERFU0MoUiwgaSkgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjg5OlxcdChcXHUwMDI2KCgoc3RydWN0IGlhdmZfdHhfY29udGV4dF9kZXNjICopKChSKS1cXHUwMDNlZGVzYykpW2ldKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC05MC0jZGVmaW5lIElBVkZfTUFYX1JFUV9RVUVVRVMgMTZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTEwMy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxMDQ6c3RydWN0IGlhdmZfcV92ZWN0b3Ige1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEwNTpcXHRzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEwNjpcXHRzdHJ1Y3QgaWF2Zl92c2kgKnZzaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xMDctXFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTA4OlxcdHN0cnVjdCBpYXZmX3JpbmdfY29udGFpbmVyIHJ4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEwOTpcXHRzdHJ1Y3QgaWF2Zl9yaW5nX2NvbnRhaW5lciB0eDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xMTAtXFx0dTMyIHJpbmdfbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTEyMC0gKiBBbmQgeWVzLCBpdCdzIHRoZSBzYW1lIG1hdGggZ29pbmcgYm90aCB3YXlzLiAgVGhlIGxvd2VzdCB2YWx1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEyMTogKiBzdXBwb3J0ZWQgYnkgYWxsIG9mIHRoZSBpYXZmIGhhcmR3YXJlIGlzIDguXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTIyLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTM4LSNkZWZpbmUgSUFWRl9GUkVFX1ZFQ1RPUiAweDdGRkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxMzk6c3RydWN0IGlhdmZfbWFjX2ZpbHRlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTQwLVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNTI6I2RlZmluZSBJQVZGX1ZMQU4odmlkLCB0cGlkKSAoKHN0cnVjdCBpYXZmX3ZsYW4peyB2aWQsIHRwaWQgfSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNTM6c3RydWN0IGlhdmZfdmxhbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTU0LVxcdHUxNiB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTU4OmVudW0gaWF2Zl92bGFuX3N0YXRlX3Qge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE1OS1cXHRJQVZGX1ZMQU5fSU5WQUxJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNjc6c3RydWN0IGlhdmZfdmxhbl9maWx0ZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE2OC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTY5OlxcdHN0cnVjdCBpYXZmX3ZsYW4gdmxhbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNzA6XFx0ZW51bSBpYXZmX3ZsYW5fc3RhdGVfdCBzdGF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNzEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE3NC0vKiBTdGF0ZSBvZiB0cmFmZmljIGNsYXNzIGNyZWF0aW9uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTc1OmVudW0gaWF2Zl90Y19zdGF0ZV90IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNzYtXFx0X19JQVZGX1RDX0lOVkFMSUQsIC8qIG5vIHRyYWZmaWMgY2xhc3MsIGRlZmF1bHQgc3RhdGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE4MC0vKiBjaGFubmVsIGluZm8gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxODE6c3RydWN0IGlhdmZfY2hhbm5lbF9jb25maWcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE4Mi1cXHRzdHJ1Y3QgdmlydGNobmxfY2hhbm5lbF9pbmZvIGNoX2luZm9bSUFWRl9NQVhfVFJBRkZJQ19DTEFTU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTgzOlxcdGVudW0gaWF2Zl90Y19zdGF0ZV90IHN0YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE4NC1cXHR1OCB0b3RhbF9xcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xODctLyogU3RhdGUgb2YgY2xvdWQgZmlsdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTg4OmVudW0gaWF2Zl9jbG91ZF9maWx0ZXJfc3RhdGVfdCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTg5LVxcdF9fSUFWRl9DRl9JTlZBTElELFxcdCAvKiBjbG91ZCBmaWx0ZXIgbm90IGFkZGVkICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xOTUtLyogRHJpdmVyIHN0YXRlLiBUaGUgb3JkZXIgb2YgdGhlc2UgaXMgaW1wb3J0YW50ISAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjE5NjplbnVtIGlhdmZfc3RhdGVfdCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTk3LVxcdF9fSUFWRl9TVEFSVFVQLFxcdFxcdC8qIGRyaXZlciBsb2FkZWQsIHByb2JlIGNvbXBsZXRlICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjE0OmVudW0gaWF2Zl9jcml0aWNhbF9zZWN0aW9uX3Qge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTIxNS1cXHRfX0lBVkZfSU5fUkVNT1ZFX1RBU0ssXFx0LyogZGV2aWNlIGJlaW5nIHJlbW92ZWQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTIzOC0vKiBib29ra2VlcGluZyBvZiBjbG91ZCBmaWx0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjM5OnN0cnVjdCBpYXZmX2Nsb3VkX2ZpbHRlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjQwOlxcdGVudW0gaWF2Zl9jbG91ZF9maWx0ZXJfc3RhdGVfdCBzdGF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNDEtXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjU1LS8qIGJvYXJkIHNwZWNpZmljIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoyNTY6c3RydWN0IGlhdmZfYWRhcHRlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjU3LVxcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTI2Mi1cXHR3YWl0X3F1ZXVlX2hlYWRfdCB2Y193YWl0cXVldWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjYzOlxcdHN0cnVjdCBpYXZmX3FfdmVjdG9yICpxX3ZlY3RvcnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjY0LVxcdHN0cnVjdCBsaXN0X2hlYWQgdmxhbl9maWx0ZXJfbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTI3NC1cXHQvKiBUWCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI3NTpcXHRzdHJ1Y3QgaWF2Zl9yaW5nICp0eF9yaW5ncztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNzYtXFx0dTMyIHR4X3RpbWVvdXRfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNzktXFx0LyogUlggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoyODA6XFx0c3RydWN0IGlhdmZfcmluZyAqcnhfcmluZ3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjgxLVxcdHU2NCBod19jc3VtX3J4X2Vycm9yO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMzg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjM4ODpcXHRzdHJ1Y3QgaWF2Zl9odyBodzsgLyogZGVmaW5lZCBpbiBpYXZmX3R5cGUuaCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTM4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDozOTA6XFx0ZW51bSBpYXZmX3N0YXRlX3Qgc3RhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MzkxOlxcdGVudW0gaWF2Zl9zdGF0ZV90IGxhc3Rfc3RhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMzkyLVxcdHVuc2lnbmVkIGxvbmcgY3JpdF9zZWN0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDQ2LVxcdHU2NCBzdXBwX3J4ZGlkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0NDc6XFx0c3RydWN0IGlhdmZfcHRwIHB0cDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NDgtXFx0dTE2IG1zZ19lbmFibGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDQ5OlxcdHN0cnVjdCBpYXZmX2V0aF9zdGF0cyBjdXJyZW50X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ1MC1cXHRzdHJ1Y3QgdmlydGNobmxfcW9zX2NhcF9saXN0ICpxb3NfY2FwcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0NTE6XFx0c3RydWN0IGlhdmZfdnNpIHZzaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NTItXFx0dTMyIGFxX3dhaXRfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NjAtXFx0LyogQURRIHJlbGF0ZWQgbWVtYmVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ2MTpcXHRzdHJ1Y3QgaWF2Zl9jaGFubmVsX2NvbmZpZyBjaF9jb25maWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDYyLVxcdHU4IG51bV90YztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ4My0vKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGZkaXJfZmx0cl9sb2NrIGxvY2sgaGVsZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ4NDpzdGF0aWMgaW5saW5lIGJvb2wgaWF2Zl9mZGlyX21heF9yZWFjaGVkKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oPTQ5MD1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0OTE6aWF2Zl9pbmNfZmRpcl9hY3RpdmVfZmx0cihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ5MjpcXHRcXHRcXHQgIHN0cnVjdCBpYXZmX2ZkaXJfZmx0ciAqZmx0cilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00OTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ5NDpcXHRpZiAoaWF2Zl9pc19yYXdfZmRpcihmbHRyKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00OTUtXFx0XFx0YWRhcHRlci1cXHUwMDNlcmF3X2ZkaXJfYWN0aXZlX2ZsdHIrKztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oPTUwMD1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1MDE6aWF2Zl9kZWNfZmRpcl9hY3RpdmVfZmx0cihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUwMjpcXHRcXHRcXHQgIHN0cnVjdCBpYXZmX2ZkaXJfZmx0ciAqZmx0cilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MDMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUwNDpcXHRpZiAoaWF2Zl9pc19yYXdfZmRpcihmbHRyKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MDUtXFx0XFx0YWRhcHRlci1cXHUwMDNlcmF3X2ZkaXJfYWN0aXZlX2ZsdHItLTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1MTI6LyogbmVlZGVkIGJ5IGlhdmZfZXRodG9vbC5jICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTEzOmV4dGVybiBjaGFyIGlhdmZfZHJpdmVyX25hbWVbXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTE1OnN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqaWF2Zl9zdGF0ZV9zdHIoZW51bSBpYXZmX3N0YXRlX3Qgc3RhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NTE6c3RhdGljIGlubGluZSB2b2lkIGlhdmZfY2hhbmdlX3N0YXRlKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTUyOlxcdFxcdFxcdFxcdCAgICAgZW51bSBpYXZmX3N0YXRlX3Qgc3RhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU1OS1cXHRcXHRcXFwic3RhdGUgdHJhbnNpdGlvbiBmcm9tOiVzIHRvOiVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU2MDpcXHRcXHRpYXZmX3N0YXRlX3N0cihhZGFwdGVyLVxcdTAwM2VsYXN0X3N0YXRlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjE6XFx0XFx0aWF2Zl9zdGF0ZV9zdHIoYWRhcHRlci1cXHUwMDNlc3RhdGUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NjItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjQ6dm9pZCBpYXZmX2Rvd24oc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTY1OmludCBpYXZmX3Byb2Nlc3NfY29uZmlnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU2NjppbnQgaWF2Zl9wYXJzZV92Zl9yZXNvdXJjZV9tc2coc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTY3OnZvaWQgaWF2Zl9zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU2ODp2b2lkIGlhdmZfc2NoZWR1bGVfYXFfcmVxdWVzdChzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU2OTp2b2lkIGlhdmZfc2NoZWR1bGVfZmluaXNoX2NvbmZpZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzA6dm9pZCBpYXZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzE6dm9pZCBpYXZmX2ZyZWVfYWxsX3R4X3Jlc291cmNlcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzI6dm9pZCBpYXZmX2ZyZWVfYWxsX3J4X3Jlc291cmNlcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc0OmludCBpYXZmX3NlbmRfYXBpX3ZlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzU6aW50IGlhdmZfdmVyaWZ5X2FwaV92ZXIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc2OmludCBpYXZmX3NlbmRfdmZfY29uZmlnX21zZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Nzc6aW50IGlhdmZfZ2V0X3ZmX2NvbmZpZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Nzg6aW50IGlhdmZfZ2V0X3ZmX3ZsYW5fdjJfY2FwcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Nzk6aW50IGlhdmZfc2VuZF92Zl9vZmZsb2FkX3ZsYW5fdjJfbXNnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU4MDppbnQgaWF2Zl9zZW5kX3ZmX3N1cHBvcnRlZF9yeGRpZHNfbXNnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU4MTppbnQgaWF2Zl9nZXRfdmZfc3VwcG9ydGVkX3J4ZGlkcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODI6aW50IGlhdmZfc2VuZF92Zl9wdHBfY2Fwc19tc2coc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTgzOmludCBpYXZmX2dldF92Zl9wdHBfY2FwcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODQ6dm9pZCBpYXZmX3NldF9xdWV1ZV92bGFuX3RhZ19sb2Moc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg1OnUxNiBpYXZmX2dldF9udW1fdmxhbnNfYWRkZWQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg2OnZvaWQgaWF2Zl9pcnFfZW5hYmxlKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wgZmx1c2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU4Nzp2b2lkIGlhdmZfY29uZmlndXJlX3F1ZXVlcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODg6dm9pZCBpYXZmX2VuYWJsZV9xdWV1ZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg5OnZvaWQgaWF2Zl9kaXNhYmxlX3F1ZXVlcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1OTA6dm9pZCBpYXZmX21hcF9xdWV1ZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkxOnZvaWQgaWF2Zl9hZGRfZXRoZXJfYWRkcnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkyOnZvaWQgaWF2Zl9kZWxfZXRoZXJfYWRkcnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkzOnZvaWQgaWF2Zl9hZGRfdmxhbnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk0OnZvaWQgaWF2Zl9kZWxfdmxhbnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk1OnZvaWQgaWF2Zl9zZXRfcHJvbWlzY3VvdXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk2OmJvb2wgaWF2Zl9wcm9taXNjdW91c19tb2RlX2NoYW5nZWQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk3OnZvaWQgaWF2Zl9yZXF1ZXN0X3N0YXRzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU5ODppbnQgaWF2Zl9yZXF1ZXN0X3Jlc2V0KHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU5OTp2b2lkIGlhdmZfZ2V0X3Jzc19oYXNoY2ZnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwMDp2b2lkIGlhdmZfc2V0X3Jzc19oYXNoY2ZnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwMTp2b2lkIGlhdmZfc2V0X3Jzc19rZXkoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjAyOnZvaWQgaWF2Zl9zZXRfcnNzX2x1dChzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MDM6dm9pZCBpYXZmX3NldF9yc3NfaGZ1bmMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA0OnZvaWQgaWF2Zl9lbmFibGVfdmxhbl9zdHJpcHBpbmcoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA1OnZvaWQgaWF2Zl9kaXNhYmxlX3ZsYW5fc3RyaXBwaW5nKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwNjp2b2lkIGlhdmZfdmlydGNobmxfY29tcGxldGlvbihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTYwNy1cXHRcXHRcXHQgICAgICBlbnVtIHZpcnRjaG5sX29wcyB2X29wY29kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MDg6XFx0XFx0XFx0ICAgICAgZW51bSBpYXZmX3N0YXR1cyB2X3JldHZhbCwgdTggKm1zZywgdTE2IG1zZ2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA5OmludCBpYXZmX2NvbmZpZ19yc3Moc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjEwOnZvaWQgaWF2Zl9jZmdfcXVldWVzX2J3KHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYxMTp2b2lkIGlhdmZfY2ZnX3F1ZXVlc19xdWFudGFfc2l6ZShzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTI6dm9pZCBpYXZmX2dldF9xb3NfY2FwcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTM6dm9pZCBpYXZmX2VuYWJsZV9jaGFubmVscyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTQ6dm9pZCBpYXZmX2Rpc2FibGVfY2hhbm5lbHMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE1OnZvaWQgaWF2Zl9hZGRfY2xvdWRfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYxNjp2b2lkIGlhdmZfZGVsX2Nsb3VkX2ZpbHRlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTc6dm9pZCBpYXZmX2VuYWJsZV92bGFuX3N0cmlwcGluZ192MihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1MTYgdHBpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE4OnZvaWQgaWF2Zl9kaXNhYmxlX3ZsYW5fc3RyaXBwaW5nX3YyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiB0cGlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTk6dm9pZCBpYXZmX2VuYWJsZV92bGFuX2luc2VydGlvbl92MihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1MTYgdHBpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjIwOnZvaWQgaWF2Zl9kaXNhYmxlX3ZsYW5faW5zZXJ0aW9uX3YyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiB0cGlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjE6dm9pZCBpYXZmX2FkZF9mZGlyX2ZpbHRlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjI6dm9pZCBpYXZmX2RlbF9mZGlyX2ZpbHRlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjM6dm9pZCBpYXZmX2FkZF9hZHZfcnNzX2NmZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjQ6dm9pZCBpYXZmX2RlbF9hZHZfcnNzX2NmZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjU6c3RydWN0IGlhdmZfbWFjX2ZpbHRlciAqaWF2Zl9hZGRfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjI2LVxcdFxcdFxcdFxcdFxcdGNvbnN0IHU4ICptYWNhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2Mjc6dm9pZCBpYXZmX3Jlc2V0X3N0ZXAoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjI4LSNlbmRpZiAvKiBfSUFWRl9IXyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ6I2luY2x1ZGUgXFxcImlhdmZfc3RhdHVzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjU6I2luY2x1ZGUgXFxcImlhdmZfdHlwZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2OiNpbmNsdWRlIFxcXCJpYXZmX3JlZ2lzdGVyLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjc6I2luY2x1ZGUgXFxcImlhdmZfYWRtaW5xLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjg6I2luY2x1ZGUgXFxcImlhdmZfcHJvdG90eXBlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxMTogKiAgaWF2Zl9hbGxvY19hZG1pbnFfYXNxX3JpbmcgLSBBbGxvY2F0ZSBBZG1pbiBRdWV1ZSBzZW5kIHJpbmdzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEyLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xMy0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE0OnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfYWxsb2NfYWRtaW5xX2FzcV9yaW5nKHN0cnVjdCBpYXZmX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNjpcXHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTg6XFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRlc2NfYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxOTpcXHRcXHRcXHRcXHRcXHQgaWF2Zl9tZW1fYXRxX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIwLVxcdFxcdFxcdFxcdFxcdCAoaHctXFx1MDAzZWFxLm51bV9hc3FfZW50cmllcyAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI2OlxcdHJldF9jb2RlID0gaWF2Zl9hbGxvY2F0ZV92aXJ0X21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3EuY21kX2J1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjctXFx0XFx0XFx0XFx0XFx0ICAoaHctXFx1MDAzZWFxLm51bV9hc3FfZW50cmllcyAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI4OlxcdFxcdFxcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCBpYXZmX2FzcV9jbWRfZGV0YWlscykpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjktXFx0aWYgKHJldF9jb2RlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMwOlxcdFxcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFzcS5kZXNjX2J1Zik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMxLVxcdFxcdHJldHVybiByZXRfY29kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6Mzg6ICogIGlhdmZfYWxsb2NfYWRtaW5xX2FycV9yaW5nIC0gQWxsb2NhdGUgQWRtaW4gUXVldWUgcmVjZWl2ZSByaW5nc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zOS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDAtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0MTpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2FsbG9jX2FkbWlucV9hcnFfcmluZyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDM6XFx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1OlxcdHJldF9jb2RlID0gaWF2Zl9hbGxvY2F0ZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFycS5kZXNjX2J1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDY6XFx0XFx0XFx0XFx0XFx0IGlhdmZfbWVtX2FycV9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00Ny1cXHRcXHRcXHRcXHRcXHQgKGh3LVxcdTAwM2VhcS5udW1fYXJxX2VudHJpZXMgKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTU0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo1NTogKiAgaWF2Zl9mcmVlX2FkbWlucV9hc3EgLSBGcmVlIEFkbWluIFF1ZXVlIHNlbmQgcmluZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNTYtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjAtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2MTpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYWRtaW5xX2FzcShzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTYyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NjM6XFx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRlc2NfYnVmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTY2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2NzogKiAgaWF2Zl9mcmVlX2FkbWlucV9hcnEgLSBGcmVlIEFkbWluIFF1ZXVlIHJlY2VpdmUgcmluZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjgtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNzItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo3MzpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYWRtaW5xX2FycShzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTc0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NzU6XFx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLmRlc2NfYnVmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTc4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo3OTogKiAgaWF2Zl9hbGxvY19hcnFfYnVmcyAtIEFsbG9jYXRlIHByZS1wb3N0ZWQgYnVmZmVycyBmb3IgdGhlIHJlY2VpdmUgcXVldWVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtODAtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTgxLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6ODI6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9hbGxvY19hcnFfYnVmcyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTgzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtODQtXFx0c3RydWN0IGxpYmllX2FxX2Rlc2MgKmRlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjg1OlxcdHN0cnVjdCBpYXZmX2RtYV9tZW0gKmJpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo4NjpcXHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy04Ny1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy05My1cXHQvKiBidWZmZXJfaW5mbyBzdHJ1Y3R1cmVzIGRvIG5vdCBuZWVkIGFsaWdubWVudCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo5NDpcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NhdGVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLmRtYV9oZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy05NS1cXHRcXHRcXHRcXHRcXHQgIChody1cXHUwMDNlYXEubnVtX2FycV9lbnRyaWVzICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6OTY6XFx0XFx0XFx0XFx0XFx0ICAgc2l6ZW9mKHN0cnVjdCBpYXZmX2RtYV9tZW0pKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTk3LVxcdGlmIChyZXRfY29kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtOTgtXFx0XFx0Z290byBhbGxvY19hcnFfYnVmcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6OTk6XFx0aHctXFx1MDAzZWFxLmFycS5yLmFycV9iaSA9IChzdHJ1Y3QgaWF2Zl9kbWFfbWVtICopaHctXFx1MDAzZWFxLmFycS5kbWFfaGVhZC52YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEwMy1cXHRcXHRiaSA9IFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxMDQ6XFx0XFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX2RtYV9tZW0oaHcsIGJpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxMDU6XFx0XFx0XFx0XFx0XFx0XFx0IGlhdmZfbWVtX2FycV9idWYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEwNi1cXHRcXHRcXHRcXHRcXHRcXHQgaHctXFx1MDAzZWFxLmFycV9idWZfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xMzktXFx0Zm9yICg7IGkgXFx1MDAzZT0gMDsgaS0tKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNDA6XFx0XFx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTQxOlxcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hcnEuZG1hX2hlYWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTQ2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNDc6ICogIGlhdmZfYWxsb2NfYXNxX2J1ZnMgLSBBbGxvY2F0ZSBlbXB0eSBidWZmZXIgc3RydWN0cyBmb3IgdGhlIHNlbmQgcXVldWVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTQ4LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNDktICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNTA6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9hbGxvY19hc3FfYnVmcyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE1MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE1MjpcXHRzdHJ1Y3QgaWF2Zl9kbWFfbWVtICpiaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTUzOlxcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE1NC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNTYtXFx0LyogTm8gbWFwcGVkIG1lbW9yeSBuZWVkZWQgeWV0LCBqdXN0IHRoZSBidWZmZXIgaW5mbyBzdHJ1Y3R1cmVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE1NzpcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NhdGVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRtYV9oZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNTgtXFx0XFx0XFx0XFx0XFx0ICAoaHctXFx1MDAzZWFxLm51bV9hc3FfZW50cmllcyAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE1OTpcXHRcXHRcXHRcXHRcXHQgICBzaXplb2Yoc3RydWN0IGlhdmZfZG1hX21lbSkpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTYwLVxcdGlmIChyZXRfY29kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTYxLVxcdFxcdGdvdG8gYWxsb2NfYXNxX2J1ZnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE2MjpcXHRody1cXHUwMDNlYXEuYXNxLnIuYXNxX2JpID0gKHN0cnVjdCBpYXZmX2RtYV9tZW0gKilody1cXHUwMDNlYXEuYXNxLmRtYV9oZWFkLnZhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTY2LVxcdFxcdGJpID0gXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3Euci5hc3FfYmlbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE2NzpcXHRcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NhdGVfZG1hX21lbShodywgYmksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE2ODpcXHRcXHRcXHRcXHRcXHRcXHQgaWF2Zl9tZW1fYXNxX2J1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTY5LVxcdFxcdFxcdFxcdFxcdFxcdCBody1cXHUwMDNlYXEuYXNxX2J1Zl9zaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4MC1cXHRmb3IgKDsgaSBcXHUwMDNlPSAwOyBpLS0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE4MTpcXHRcXHRpYXZmX2ZyZWVfZG1hX21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxODI6XFx0aWF2Zl9mcmVlX3ZpcnRfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFzcS5kbWFfaGVhZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xODctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE4ODogKiAgaWF2Zl9mcmVlX2FycV9idWZzIC0gRnJlZSByZWNlaXZlIHF1ZXVlIGJ1ZmZlciBpbmZvIGVsZW1lbnRzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4OS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTkwLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTkxOnN0YXRpYyB2b2lkIGlhdmZfZnJlZV9hcnFfYnVmcyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTk2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBody1cXHUwMDNlYXEubnVtX2FycV9lbnRyaWVzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE5NzpcXHRcXHRpYXZmX2ZyZWVfZG1hX21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hcnEuci5hcnFfYmlbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE5OS1cXHQvKiBmcmVlIHRoZSBkZXNjcmlwdG9yIG1lbW9yeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMDA6XFx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLmRlc2NfYnVmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDItXFx0LyogZnJlZSB0aGUgZG1hIGhlYWRlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMDM6XFx0aWF2Zl9mcmVlX3ZpcnRfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFycS5kbWFfaGVhZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIwNC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMDc6ICogIGlhdmZfZnJlZV9hc3FfYnVmcyAtIEZyZWUgc2VuZCBxdWV1ZSBidWZmZXIgaW5mbyBlbGVtZW50c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDgtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIwOS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIxMDpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYXNxX2J1ZnMoc3RydWN0IGlhdmZfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIxNi1cXHRcXHRpZiAoaHctXFx1MDAzZWFxLmFzcS5yLmFzcV9iaVtpXS5wYSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjE3OlxcdFxcdFxcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFzcS5yLmFzcV9iaVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjE5LVxcdC8qIGZyZWUgdGhlIGJ1ZmZlciBpbmZvIGxpc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjIwOlxcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3EuY21kX2J1Zik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjIyLVxcdC8qIGZyZWUgdGhlIGRlc2NyaXB0b3IgbWVtb3J5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIyMzpcXHRpYXZmX2ZyZWVfZG1hX21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3EuZGVzY19idWYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIyNS1cXHQvKiBmcmVlIHRoZSBkbWEgaGVhZGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIyNjpcXHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRtYV9oZWFkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjI3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMjktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIzMDogKiAgaWF2Zl9jb25maWdfYXNxX3JlZ3MgLSBjb25maWd1cmUgQVNRIHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMzEtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjM0LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjM1OnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfY29uZmlnX2FzcV9yZWdzKHN0cnVjdCBpYXZmX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjM2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjM3OlxcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMzgtXFx0dTMyIHJlZyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjU4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyNTk6ICogIGlhdmZfY29uZmlnX2FycV9yZWdzIC0gQVJRIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjYwLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI2My0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI2NDpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2NvbmZpZ19hcnFfcmVncyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI2NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI2NjpcXHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjY3LVxcdHUzMiByZWcgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI5MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjkxOiAqICBpYXZmX2luaXRfYXNxIC0gbWFpbiBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBBU1FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjkyLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMwMi0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMwMzpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2luaXRfYXNxKHN0cnVjdCBpYXZmX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzA0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzA1OlxcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zMDYtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzI0LVxcdC8qIGFsbG9jYXRlIHRoZSByaW5nIG1lbW9yeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozMjU6XFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jX2FkbWlucV9hc3FfcmluZyhodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMyNi1cXHRpZiAocmV0X2NvZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzI5LVxcdC8qIGFsbG9jYXRlIGJ1ZmZlcnMgaW4gdGhlIHJpbmdzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMzMDpcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NfYXNxX2J1ZnMoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zMzEtXFx0aWYgKHJldF9jb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMzNC1cXHQvKiBpbml0aWFsaXplIGJhc2UgcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMzNTpcXHRyZXRfY29kZSA9IGlhdmZfY29uZmlnX2FzcV9yZWdzKGh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzM2LVxcdGlmIChyZXRfY29kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNDQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGh3LVxcdTAwM2VhcS5udW1fYXNxX2VudHJpZXM7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzQ1OlxcdFxcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFzcS5yLmFzcV9iaVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM0NjpcXHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRtYV9oZWFkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNDgtaW5pdF9hZG1pbnFfZnJlZV9yaW5nczpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzQ5OlxcdGlhdmZfZnJlZV9hZG1pbnFfYXNxKGh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM1NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzU2OiAqICBpYXZmX2luaXRfYXJxIC0gaW5pdGlhbGl6ZSBBUlFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzU3LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM2Ny0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM2ODpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2luaXRfYXJxKHN0cnVjdCBpYXZmX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzY5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzcwOlxcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNzEtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzg5LVxcdC8qIGFsbG9jYXRlIHRoZSByaW5nIG1lbW9yeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozOTA6XFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jX2FkbWlucV9hcnFfcmluZyhodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM5MS1cXHRpZiAocmV0X2NvZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzk0LVxcdC8qIGFsbG9jYXRlIGJ1ZmZlcnMgaW4gdGhlIHJpbmdzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM5NTpcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NfYXJxX2J1ZnMoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zOTYtXFx0aWYgKHJldF9jb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM5OS1cXHQvKiBpbml0aWFsaXplIGJhc2UgcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQwMDpcXHRyZXRfY29kZSA9IGlhdmZfY29uZmlnX2FycV9yZWdzKGh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDAxLVxcdGlmIChyZXRfY29kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MDktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGh3LVxcdTAwM2VhcS5udW1fYXJxX2VudHJpZXM7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDEwOlxcdFxcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFycS5yLmFycV9iaVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQxMTpcXHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLmRtYV9oZWFkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDEyLWluaXRfYWRtaW5xX2ZyZWVfcmluZ3M6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQxMzpcXHRpYXZmX2ZyZWVfYWRtaW5xX2FycShodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MTktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQyMDogKiAgaWF2Zl9zaHV0ZG93bl9hc3EgLSBzaHV0ZG93biB0aGUgQVNRXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQyMS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MjQtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0MjU6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9zaHV0ZG93bl9hc3Eoc3RydWN0IGlhdmZfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0Mjc6XFx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZSA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NDUtXFx0LyogZnJlZSByaW5nIGJ1ZmZlcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDQ2OlxcdGlhdmZfZnJlZV9hc3FfYnVmcyhodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NTMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1NDogKiAgaWF2Zl9zaHV0ZG93bl9hcnEgLSBzaHV0ZG93biBBUlFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDU1LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ1OC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1OTpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX3NodXRkb3duX2FycShzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ2MTpcXHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ3OS1cXHQvKiBmcmVlIHJpbmcgYnVmZmVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0ODA6XFx0aWF2Zl9mcmVlX2FycV9idWZzKGh3KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NDUuODcxNTgwMDY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUxODc0NDcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJQVZGIERyaXZlciBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgaWF2ZmAgZHJpdmVyIOKAkyBJbnRlbCdzIEV0aGVybmV0IEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyLiBUaGUgYE1ha2VmaWxlYCBjb25maXJtcyBpdCwgYW5kIHRoZSBuYW1lIGFsb25lIHNjcmVhbXMgdmlydHVhbGl6YXRpb24sIHdoaWNoIG1ha2VzIG1lIHRoaW5rIG9mIFNSLUlPVi4gIEFoLCByaWdodCwgVkYgZHJpdmVycyBhcmUgKnNwZWNpZmljYWxseSogZm9yIFZNcyB3aXRoIFNSLUlPVi4gIEJ1dCB0aGUgY3JpdGljYWwgcGllY2UgaXMgdGhhdCB0aGV5IG5lZWQgZGVkaWNhdGVkIGhhcmR3YXJlLCBwYXNzZWQgdGhyb3VnaCB2aWEgUENJIHBhc3N0aHJvdWdoLiAgQ2FuIGBpYXZmYCBiZSBlbXVsYXRlZCB0aGVuPyAgTm8sIFFFTVUgZG9lc24ndCBuYXRpdmVseSBlbXVsYXRlIHRoZSBJbnRlbCBBVkYuXG5cblRoZSBuZXh0IHF1ZXN0aW9uIHRoZW4gYmVjb21lczogZG9lcyBzeXprYWxsZXIgZnV6eiB0aGlzPyBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgcHJvbXB0IG1lbnRpb25zIGEgcmVzdHJpY3Rpb24sIGZvY3VzaW5nIG9uIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCBsaWtlIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1LCB0aGF0IGRlcGVuZCBvbiAqYWN0dWFsKiBQQ0llIGhhcmR3YXJlLiBJcyBgaWF2ZmAgb25lIG9mICp0aG9zZSo/IFdlbGwsIGl0J3MgYW4gSW50ZWwgRXRoZXJuZXQgZHJpdmVyLCBzbyB5ZXMsIEknZCBzYXkgdGhhdCBmaXRzIHRoZSBkZXNjcmlwdGlvbi5cblxuQnV0IHdhaXQgYSBtaW51dGUsIHN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X3BjaV9kZXZpY2VgLCB3aGljaCAqY2FuKiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJIG5lZWQgdG8gY2xhcmlmeSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIHdpdGggdGhpcyBtZWNoYW5pc20sIGFuZCBob3cgaXQgaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgcGh5c2ljYWwgYW5kIHZpcnR1YWwgY29tcG9uZW50cy4gUGVyaGFwcyBpdCBjYW4gaGFuZGxlIGBpYXZmYD8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGEgZGVzY3JpcHRpb24gaW4gc3l6a2FsbGVyIGZvciBgaWF2ZmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDg1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjUyLjM5MDMyODYxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODEyMDg2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWF2ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzo1Mi40NTg0NTc5NzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjY1ODMyOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBUYXNrIGFuZCBBdmFpbGFibGUgVG9vbHMqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZXN0cmljdGlvbnMuIEkgc2VlIHRoZSBwcm9tcHQgZXhwbGljaXRseSBmb3JiaWRzIHVzaW5nIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBzZWFyY2ggd2l0aGluIGBzeXMvYC4gVGhhdCdzIGEga2V5IGRldGFpbCDigJMgaXQgc2VlbXMgbGlrZSB0aGVzZSBgc3l6XypgIGNhbGxzIGFyZSBzcGVjaWZpYyB0byBzeXprYWxsZXIgYW5kIG5vdCBkaXJlY3RseSBwcmVzZW50IGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlLiBJIHdhcyBleHBlY3RpbmcgYHJlYWQtc3l6LXNwZWNgIGFuZCBgc3l6LWdyZXBwZXJgIGJ1dCBJIGRvbid0IHNlZSB0aG9zZSB0b29scyBsaXN0ZWQuIEkgYW0gY29uc3RyYWluZWQgdG8gdXNpbmcgYGRlZmF1bHRfYXBpOmdyZXBwZXJgLCBgZGVmYXVsdF9hcGk6Y29kZXNlYXJjaC1kaXItaW5kZXhgLCBgZGVmYXVsdF9hcGk6cmVhZC1maWxlYCwgYW5kIGBkZWZhdWx0X2FwaTpzZXQtcmVzdWx0c2AuIFJpZ2h0LCBJIGhhdmUgdG8gd29yayB3aXRoIHdoYXQncyBhdmFpbGFibGUuXG5cbk5vdywgSSBuZWVkIHRvIGFwcGx5IHRoZSBydWxlOiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5JIHNlZSBgaWF2ZmAgbWVudGlvbmVkLiBJcyB0aGF0IGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyPyBZZXMsIGl0J3MgYW4gSW50ZWwgRXRoZXJuZXQgZHJpdmVyLiBPa2F5LCBidXQgdGhlIG5leHQgcXVlc3Rpb24gaXMgaWYgaXQncyBlbXVsYXRlZCBpbiBRRU1VLiBMZXQncyBzZWUuLi4gUUVNVSBlbXVsYXRlcyBgZTEwMDBgLCBgZTEwMDBlYCwgYHJ0bDgxMzlgLCBgdmlydGlvLW5ldGAsIGB2bXhuZXQzYCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYGk4MjU1OWVyYCwgYHR1bGlwYC4gTm8sIGl0IGRvZXNuJ3QgZW11bGF0ZSBgaWF2ZmAuXG5cbldhaXQsIHdoYXQgYWJvdXQgYGxpYmV0aGA/IFRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBpbmNsdWRlL25ldC9saWJldGgvcnguaGAuIEknZCBiZXR0ZXIgZmlndXJlIG91dCB3aGF0IGBsaWJldGhgIGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDcxNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzo1OS4xMjQyOTM5MjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyMDQyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L2xpYmV0aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjUzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC05LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjEwOiAqIGxpYmV0aF9jYWNoZWxpbmVfZ3JvdXBfYXNzZXJ0IC0gbWFrZSBzdXJlIGNhY2hlbGluZSBncm91cCBzaXplIGlzIGV4cGVjdGVkXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMTEtICogQHR5cGU6IHR5cGUgb2YgdGhlIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBncm91cFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMTUtI2lmIGRlZmluZWQoQ09ORklHXzY0QklUKSBcXHUwMDI2XFx1MDAyNiBTTVBfQ0FDSEVfQllURVMgPT0gNjRcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDoxNjojZGVmaW5lIGxpYmV0aF9jYWNoZWxpbmVfZ3JvdXBfYXNzZXJ0KHR5cGUsIGdycCwgc3opXFx0XFx0XFx0ICAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTE3LVxcdHN0YXRpY19hc3NlcnQob2Zmc2V0b2YodHlwZSwgX19jYWNoZWxpbmVfZ3JvdXBfZW5kX18jI2dycCkgLVxcdCAgICAgIFxcXFxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTE5LVxcdFxcdCAgICAgIChzeikpXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6MjA6I2RlZmluZSBfX2xpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCh0eXBlLCBzeilcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMjEtXFx0c3RhdGljX2Fzc2VydChzaXplb2YodHlwZSkgPT0gKHN6KSlcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0yMi0jZWxzZSAvKiAhQ09ORklHXzY0QklUIHx8IFNNUF9DQUNIRV9CWVRFUyAhPSA2NCAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjIzOiNkZWZpbmUgbGliZXRoX2NhY2hlbGluZV9ncm91cF9hc3NlcnQodHlwZSwgZ3JwLCBzeilcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMjQtXFx0c3RhdGljX2Fzc2VydChvZmZzZXRvZih0eXBlLCBfX2NhY2hlbGluZV9ncm91cF9lbmRfXyMjZ3JwKSAtXFx0ICAgICAgXFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMjYtXFx0XFx0ICAgICAgKHN6KSlcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDoyNzojZGVmaW5lIF9fbGliZXRoX2NhY2hlbGluZV9zdHJ1Y3RfYXNzZXJ0KHR5cGUsIHN6KVxcdFxcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0yOC1cXHRzdGF0aWNfYXNzZXJ0KHNpemVvZih0eXBlKSBcXHUwMDNjPSAoc3opKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMzAtXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6MzE6I2RlZmluZSBfX2xpYmV0aF9jbHMxKHN6MSlcXHRTTVBfQ0FDSEVfQUxJR04oc3oxKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjMyOiNkZWZpbmUgX19saWJldGhfY2xzMihzejEsIHN6MilcXHQoU01QX0NBQ0hFX0FMSUdOKHN6MSkgKyBTTVBfQ0FDSEVfQUxJR04oc3oyKSlcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDozMzojZGVmaW5lIF9fbGliZXRoX2NsczMoc3oxLCBzejIsIHN6MylcXHRcXHRcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMzQtXFx0KFNNUF9DQUNIRV9BTElHTihzejEpICsgU01QX0NBQ0hFX0FMSUdOKHN6MikgKyBTTVBfQ0FDSEVfQUxJR04oc3ozKSlcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDozNTojZGVmaW5lIF9fbGliZXRoX2NscyguLi4pXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjM2OlxcdENPTkNBVEVOQVRFKF9fbGliZXRoX2NscywgQ09VTlRfQVJHUyhfX1ZBX0FSR1NfXykpKF9fVkFfQVJHU19fKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTM3LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTM4LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjM5OiAqIGxpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCAtIG1ha2Ugc3VyZSBDTC1iYXNlZCBzdHJ1Y3Qgc2l6ZSBpcyBleHBlY3RlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTQwLSAqIEB0eXBlOiB0eXBlIG9mIHRoZSBzdHJ1Y3RcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTQ2LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjQ3OiNkZWZpbmUgbGliZXRoX2NhY2hlbGluZV9zdHJ1Y3RfYXNzZXJ0KHR5cGUsIC4uLilcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NDg6XFx0X19saWJldGhfY2FjaGVsaW5lX3N0cnVjdF9hc3NlcnQodHlwZSwgX19saWJldGhfY2xzKF9fVkFfQVJHU19fKSk7ICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC00OS1cXHRzdGF0aWNfYXNzZXJ0KF9fYWxpZ25vZih0eXBlKSBcXHUwMDNlPSBTTVBfQ0FDSEVfQllURVMpXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC01MS0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo1MjogKiBsaWJldGhfY2FjaGVsaW5lX3NldF9hc3NlcnQgLSBtYWtlIHN1cmUgQ0wtYmFzZWQgc3RydWN0IGxheW91dCBpcyBleHBlY3RlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTUzLSAqIEB0eXBlOiB0eXBlIG9mIHRoZSBzdHJ1Y3RcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTU5LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjYwOiNkZWZpbmUgbGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0KHR5cGUsIHJvLCBydywgYylcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjE6XFx0bGliZXRoX2NhY2hlbGluZV9ncm91cF9hc3NlcnQodHlwZSwgcmVhZF9tb3N0bHksIHJvKTtcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjI6XFx0bGliZXRoX2NhY2hlbGluZV9ncm91cF9hc3NlcnQodHlwZSwgcmVhZF93cml0ZSwgcncpO1xcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo2MzpcXHRsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCh0eXBlLCBjb2xkLCBjKTtcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjQ6XFx0bGliZXRoX2NhY2hlbGluZV9zdHJ1Y3RfYXNzZXJ0KHR5cGUsIHJvLCBydywgYylcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC02NS1cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTM0LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjM1OiAqIHN0cnVjdCBsaWJldGhfZnFlIC0gc3RydWN0dXJlIHJlcHJlc2VudGluZyBhbiBSeCBidWZmZXIgKGZpbGwgcXVldWUgZWxlbWVudClcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zNi0gKiBAbmV0bWVtOiBuZXR3b3JrIG1lbW9yeSByZWZlcmVuY2UgaG9sZGluZyB0aGUgYnVmZmVyXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC00My0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo0NDpzdHJ1Y3QgbGliZXRoX2ZxZSB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNDUtXFx0bmV0bWVtX3JlZlxcdFxcdG5ldG1lbTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTUwLS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjUxOiAqIGVudW0gbGliZXRoX2ZxZV90eXBlIC0gZW51bSByZXByZXNlbnRpbmcgdHlwZXMgb2YgUnggYnVmZmVyc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTUyLSAqIEBMSUJFVEhfRlFFX01UVTogYnVmZmVyIHNpemUgaXMgZGV0ZXJtaW5lZCBieSBNVFVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTU1LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjU2OmVudW0gbGliZXRoX2ZxZV90eXBlIHtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC01Ny1cXHRMSUJFVEhfRlFFX01UVVxcdFxcdD0gMFUsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC02Mi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo2MzogKiBzdHJ1Y3QgbGliZXRoX2ZxIC0gc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIGJ1ZmZlciAoZmlsbCkgcXVldWVcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC02NC0gKiBAZnA6IGhvdHBhdGggcGFydCBvZiB0aGUgc3RydWN0dXJlXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC03NC0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3NTpzdHJ1Y3QgbGliZXRoX2ZxIHtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3NjpcXHRzdHJ1Y3RfZ3JvdXBfdGFnZ2VkKGxpYmV0aF9mcV9mcCwgZnAsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNzctXFx0XFx0c3RydWN0IHBhZ2VfcG9vbFxcdCpwcDtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3ODpcXHRcXHRzdHJ1Y3QgbGliZXRoX2ZxZVxcdCpmcWVzO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTc5LVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtODQtXFx0LyogQ29sZCBmaWVsZHMgKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo4NTpcXHRlbnVtIGxpYmV0aF9mcWVfdHlwZVxcdHR5cGU6MjtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC04Ni1cXHRib29sXFx0XFx0XFx0aHNwbGl0OjE7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05Mi1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo5MzppbnQgbGliZXRoX3J4X2ZxX2NyZWF0ZShzdHJ1Y3QgbGliZXRoX2ZxICpmcSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo5NDp2b2lkIGxpYmV0aF9yeF9mcV9kZXN0cm95KHN0cnVjdCBsaWJldGhfZnEgKmZxKTtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05NS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05Ni0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo5NzogKiBsaWJldGhfcnhfYWxsb2MgLSBhbGxvY2F0ZSBhIG5ldyBSeCBidWZmZXJcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05OC0gKiBAZnE6IGZpbGwgcXVldWUgdG8gYWxsb2NhdGUgZm9yXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMDMtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTA0OnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBsaWJldGhfcnhfYWxsb2MoY29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCAqZnEsIHUzMiBpKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEwNS17XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTA2OlxcdHN0cnVjdCBsaWJldGhfZnFlICpidWYgPSBcXHUwMDI2ZnEtXFx1MDAzZWZxZXNbaV07XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTA3LVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTE3LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjExODp2b2lkIGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cobmV0bWVtX3JlZiBuZXRtZW0pO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTExOS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMjAtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTIxOiAqIF9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTIyLSAqIEBwb29sOiBcXHUwMDI2cGFnZV9wb29sIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCBmcm9tXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMzAtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTMxOnN0YXRpYyBpbmxpbmUgYm9vbCBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCxcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxMzI6XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTMzLVxcdFxcdFxcdFxcdFxcdCAgICB1MzIgbGVuKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTM5LVxcdGlmICh1bmxpa2VseSghbGVuKSkge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjE0MDpcXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KGZxZS1cXHUwMDNlbmV0bWVtKTtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNDEtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTQ5LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjE1MDogKiBsaWJldGhfcnhfc3luY19mb3JfY3B1IC0gc3luY2hyb25pemUgb3IgcmVjeWNsZSBidWZmZXIgcG9zdCBETUFcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNTEtICogQGZxZTogYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTE1OS0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxNjA6c3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNjEtXFx0XFx0XFx0XFx0XFx0ICB1MzIgbGVuKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTE2Mi17XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTYzOlxcdHJldHVybiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUobmV0bWVtX2dldF9wcChmcWUtXFx1MDAzZW5ldG1lbSksIGZxZSwgbGVuKTtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNjQtfVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg9MTk1PWVudW0ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjA4LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjIwOTpzdHJ1Y3QgbGliZXRoX3J4X3B0IHtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yMTAtXFx0dTMyXFx0XFx0XFx0XFx0XFx0b3V0ZXJfaXA6MjtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTIyMi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoyMjM6ICogc3RydWN0IGxpYmV0aF9yeF9jc3VtIC0gY2hlY2tzdW0gb2ZmbG9hZCBiaXRzIGRlY29kZWQgZnJvbSB0aGUgUnggZGVzY3JpcHRvclxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTIyNC0gKiBAbDNsNHA6IGRldGVjdGFibGUgTDMgYW5kIEw0IGludGVncml0eSBjaGVjayBpcyBwcm9jZXNzZWQgYnkgdGhlIGhhcmR3YXJlXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yMzUtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjM2OnN0cnVjdCBsaWJldGhfcnhfY3N1bSB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjM3LVxcdHUzMlxcdFxcdFxcdFxcdFxcdGwzbDRwOjE7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNTEtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjUyOiAqIHN0cnVjdCBsaWJldGhfcnFlX2luZm8gLSByZWNlaXZlIHF1ZXVlIGVsZW1lbnQgaW5mb1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI1My0gKiBAbGVuOiBwYWNrZXQgbGVuZ3RoXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNTgtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjU5OnN0cnVjdCBsaWJldGhfcnFlX2luZm8ge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI2MC1cXHR1MzJcXHRcXHRcXHRcXHRcXHRsZW47XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNjgtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjY5OnZvaWQgbGliZXRoX3J4X3B0X2dlbl9oYXNoX3R5cGUoc3RydWN0IGxpYmV0aF9yeF9wdCAqcHQpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI3MC1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNzEtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjcyOiAqIGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyIC0gZ2V0IElQIHZlcnNpb24gZnJvbSBhIHBhY2tldCB0eXBlIHN0cnVjdHVyZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI3My0gKiBAcHQ6IHBhY2tldCB0eXBlIHBhcmFtc1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjc5LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjI4MDpzdGF0aWMgaW5saW5lIHUzMiBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihzdHJ1Y3QgbGliZXRoX3J4X3B0IHB0KVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI4MS17XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yOTMtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6Mjk0Oi8qIGxpYmV0aF9oYXNfKigpIGNhbiBiZSB1c2VkIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciB0aGUgSFcgbWV0YWRhdGEgaXNcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yOTUtICogYXZhaWxhYmxlIHRvIGF2b2lkIGZ1cnRoZXIgZXhwZW5zaXZlIHByb2Nlc3Npbmcgc3VjaCBhcyBkZXNjcmlwdG9yIHJlYWRzLlxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjk5LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMwMDpzdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMwMTpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMzAyLXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTMwOS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMTA6c3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9wdF9oYXNfaGFzaChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMxMTpcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGxpYmV0aF9yeF9wdCBwdClcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMTIte1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMzE3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMxODogKiBsaWJldGhfcnhfcHRfc2V0X2hhc2ggLSBmaWxsIGluIHNrYiBoYXNoIHZhbHVlIGJhc2luZyBvbiB0aGUgUFRcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMTktICogQHNrYjogc2tiIHRvIGZpbGwgdGhlIGhhc2ggaW5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTMyMi0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMjM6c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF9yeF9wdF9zZXRfaGFzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaGFzaCxcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMjQ6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMzI1LXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTgtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6OTojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC90eXBlcy5oXFx1MDAzZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTEwLVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTQ6ICogZW51bSBsaWJldGhfc3FlX3R5cGUgLSB0eXBlIG9mIFxcdTAwMjZsaWJldGhfc3FlIHRvIGFjdCBvbiBUeCBjb21wbGV0aW9uXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTUtICogQExJQkVUSF9TUUVfRU1QVFk6IHVudXNlZC9lbXB0eSBPUiBYRFBfVFgvWFNrIGZyYW1lLCBubyBhY3Rpb24gcmVxdWlyZWRcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTIwLSAqIEBfX0xJQkVUSF9TUUVfWERQX1NUQVJUOiBzZXBhcmF0b3IgYmV0d2VlbiBza2IgYW5kIFhEUCB0eXBlc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjIxOiAqIEBMSUJFVEhfU1FFX1hEUF9UWDogXFx1MDAyNnNrYl9zaGFyZWRfaW5mbywgbGliZXRoX3hkcF9yZXR1cm5fYnVmZl9idWxrKCksIHN0YXRzXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMjItICogQExJQkVUSF9TUUVfWERQX1hNSVQ6IFxcdTAwMjZ4ZHBfZnJhbWUsIHVubWFwIGFuZCB4ZHBfcmV0dXJuX2ZyYW1lX2J1bGsoKSwgc3RhdHNcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0yMy0gKiBATElCRVRIX1NRRV9YRFBfWE1JVF9GUkFHOiBcXHUwMDI2eGRwX2ZyYW1lIGZyYWcsIG9ubHkgdW5tYXAgRE1BXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MjQ6ICogQExJQkVUSF9TUUVfWFNLX1RYOiBcXHUwMDI2bGliZXRoX3hkcF9idWZmIG9uIFhTayBxdWV1ZSwgeHNrX2J1ZmZfZnJlZSgpLCBzdGF0c1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjI1OiAqIEBMSUJFVEhfU1FFX1hTS19UWF9GUkFHOiBcXHUwMDI2bGliZXRoX3hkcF9idWZmIGZyYWcgb24gWFNrIHF1ZXVlLCB4c2tfYnVmZl9mcmVlKClcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0yNi0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoyNzplbnVtIGxpYmV0aF9zcWVfdHlwZSB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMjgtXFx0TElCRVRIX1NRRV9FTVBUWVxcdFxcdD0gMFUsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC00Mi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo0MzogKiBzdHJ1Y3QgbGliZXRoX3NxZSAtIHJlcHJlc2VudHMgYSBTZW5kIFF1ZXVlIEVsZW1lbnQgLyBUeCBidWZmZXJcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC00NC0gKiBAdHlwZTogdHlwZSBvZiB0aGUgYnVmZmVyLCBzZWUgdGhlIGVudW0gYWJvdmVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTU3LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjU4OnN0cnVjdCBsaWJldGhfc3FlIHtcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo1OTpcXHRlbnVtIGxpYmV0aF9zcWVfdHlwZVxcdFxcdHR5cGU6MzI7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtNjAtXFx0dTMyXFx0XFx0XFx0XFx0cnNfaWR4O1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtNjYtXFx0XFx0c3RydWN0IHhkcF9mcmFtZVxcdFxcdCp4ZHBmO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjY3OlxcdFxcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmZcXHRcXHQqeHNrO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTY4LVxcdH07XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04MS0gKiBMSUJFVEhfU1FFX0NIRUNLX1BSSVYgLSBjaGVjayB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBTUUUgZGF0YVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjgyOiAqIEBwOiB0eXBlIG9yIG5hbWUgb2YgdGhlIG9iamVjdCB0aGUgZHJpdmVyIHdhbnRzIHRvIGZpdCBpbnRvIFxcdTAwMjZsaWJldGhfc3FlXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtODMtICpcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo4NDogKiBNYWtlIHN1cmUgdGhlIGRyaXZlcidzIHByaXZhdGUgZGF0YSBmaXRzIGludG8gbGliZXRoX3NxZTo6cHJpdi4gVG8gYmUgdXNlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTg1LSAqIHJpZ2h0IGFmdGVyIGl0cyBkZWNsYXJhdGlvbi5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTg3LSNkZWZpbmUgTElCRVRIX1NRRV9DSEVDS19QUklWKHApXFx0XFx0XFx0XFx0XFx0ICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6ODg6XFx0c3RhdGljX2Fzc2VydChzaXplb2YocCkgXFx1MDAzYz0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBsaWJldGhfc3FlLCBwcml2KSlcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04OS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC05MC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo5MTogKiBzdHJ1Y3QgbGliZXRoX2NxX3BwIC0gY29tcGxldGlvbiBxdWV1ZSBwb2xsIHBhcmFtc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTkyLSAqIEBkZXY6IFxcdTAwMjZkZXZpY2UgdG8gcGVyZm9ybSBETUEgdW5tYXBwaW5nXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC05OC0gKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjk5OiAqIGxpYmV0aCB1c2VzIHRoaXMgc3RydWN0dXJlIHRvIGFjY2VzcyBvYmplY3RzIG5lZWRlZCBmb3IgcGVyZm9ybWluZyBmdWxsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTAwLSAqIFR4IGNvbXBsZXRlIG9wZXJhdGlvbiB3aXRob3V0IHBhc3NpbmcgbG90cyBvZiBhcmd1bWVudHMgYW5kIGNoYW5nZSB0aGVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTEwMi0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxMDM6c3RydWN0IGxpYmV0aF9jcV9wcCB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTA0LVxcdHN0cnVjdCBkZXZpY2VcXHRcXHRcXHQqZGV2O1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTA3LVxcdHVuaW9uIHtcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxMDg6XFx0XFx0c3RydWN0IGxpYmV0aF9zcV9uYXBpX3N0YXRzXFx0KnNzO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjEwOTpcXHRcXHRzdHJ1Y3QgbGliZXRoX3hkcHNxX25hcGlfc3RhdHNcXHQqeHNzO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTExMC1cXHR9O1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTE2LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjExNzogKiBsaWJldGhfdHhfY29tcGxldGUgLSBwZXJmb3JtIFR4IGNvbXBsZXRpb24gZm9yIG9uZSBTUUVcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xMTgtICogQHNxZTogU1FFIHRvIGNvbXBsZXRlXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xMjMtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTI0OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfdHhfY29tcGxldGUoc3RydWN0IGxpYmV0aF9zcWUgKnNxZSxcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxMjU6XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9jcV9wcCAqY3ApXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTI2LXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTE1Ni1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxNTc6dm9pZCBsaWJldGhfdHhfY29tcGxldGVfYW55KHN0cnVjdCBsaWJldGhfc3FlICpzcWUsIHN0cnVjdCBsaWJldGhfY3FfcHAgKmNwKTtcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xNTgtXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMS0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMjogKiBzdHJ1Y3QgbGliZXRoX3JxX25hcGlfc3RhdHMgLSBcXFwiaG90XFxcIiBjb3VudGVycyB0byB1cGRhdGUgaW4gUnggcG9sbGluZyBsb29wXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTMtICogQHBhY2tldHM6IHJlY2VpdmVkIGZyYW1lcyBjb3VudGVyXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xOC0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxOTpzdHJ1Y3QgbGliZXRoX3JxX25hcGlfc3RhdHMge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTIwLVxcdHVuaW9uIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTMxLS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjMyOiAqIHN0cnVjdCBsaWJldGhfc3FfbmFwaV9zdGF0cyAtIFxcXCJob3RcXFwiIGNvdW50ZXJzIHRvIHVwZGF0ZSBpbiBUeCBjb21wbGV0aW9uIGxvb3BcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0zMy0gKiBAcGFja2V0czogY29tcGxldGVkIGZyYW1lcyBjb3VudGVyXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0zNi0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDozNzpzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTM4LVxcdHVuaW9uIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTQ3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjQ4OiAqIHN0cnVjdCBsaWJldGhfeGRwc3FfbmFwaV9zdGF0cyAtIFxcXCJob3RcXFwiIGNvdW50ZXJzIHRvIHVwZGF0ZSBpbiBYRFAgVHhcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC00OS0gKlxcdFxcdFxcdFxcdCAgICBjb21wbGV0aW9uIGxvb3BcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTU0LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjU1OnN0cnVjdCBsaWJldGhfeGRwc3FfbmFwaV9zdGF0cyB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNTYtXFx0dW5pb24ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNjktICogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmVzIHNob3VsZCBiZSBlbWJlZGRlZCBpbnRvIGRyaXZlcidzIHF1ZXVlIHN0cnVjdHVyZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjcwOiAqIGFuZCBwYXNzZWQgdG8gdGhlIGxpYmV0aF94ZHAgaGVscGVycywgbmV2ZXIgdXNlZCBkaXJlY3RseS5cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC03MS0gKi9cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTc1LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjc2OiAqIHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAtIGxvY2tpbmcgcHJpbWl0aXZlIGZvciBzaGFyaW5nIFhEUFNRc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTc3LSAqIEBsb2NrOiBzcGlubG9jayBmb3IgbG9ja2luZyB0aGUgcXVldWVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTc5LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjgwOnN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtODEtXFx0c3BpbmxvY2tfdFxcdFxcdFxcdGxvY2s7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC04Ny0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo4ODogKiBzdHJ1Y3QgbGliZXRoX3hkcHNxX3RpbWVyIC0gdGltZXIgZm9yIGNsZWFuaW5nIHVwIFhEUFNRcyB3L28gaW50ZXJydXB0c1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTg5LSAqIEB4ZHBzcTogcXVldWUgdGhpcyB0aW1lciBiZWxvbmdzIHRvXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC05Ni0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo5NzpzdHJ1Y3QgbGliZXRoX3hkcHNxX3RpbWVyIHtcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC05OC1cXHR2b2lkXFx0XFx0XFx0XFx0KnhkcHNxO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjk5OlxcdHN0cnVjdCBsaWJldGhfeGRwc3FfbG9ja1xcdCpsb2NrO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwMC1cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwNi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMDc6ICogc3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCAtIHN0cnVjdCBmb3Igc3Rhc2hpbmcgXFx1MDAyNnhkcF9idWZmIG9udG8gYSBxdWV1ZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwOC0gKiBAZGF0YTogcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZyYW1lLCB4ZHBfYnVmZi5kYXRhXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMTMtICpcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMTQ6ICogXFx1MDAyNnhkcF9idWZmIGlzIDU2IGJ5dGVzIGxvbmcgb24geDY0LCBcXHUwMDI2bGliZXRoX3hkcF9idWZmIGlzIDY0IGJ5dGVzLiBUaGlzXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTE1LSAqIHN0cnVjdHVyZSBjYXJyaWVzIG9ubHkgbmVjZXNzYXJ5IGZpZWxkcyB0byBzYXZlL3Jlc3RvcmUgYSBwYXJ0aWFsbHkgYnVpbHRcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTExNy0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMTg6c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTE5LVxcdHZvaWRcXHRcXHRcXHRcXHQqZGF0YTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC05LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMDojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC9yeC5oXFx1MDAzZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMTojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC90eC5oXFx1MDAzZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMi0jaW5jbHVkZSBcXHUwMDNjbmV0L3hza19idWZmX3Bvb2wuaFxcdTAwM2VcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaD0xOD1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNi0vKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzogKiBcXHUwMDI2eGRwX2J1ZmZfeHNrIGlzIHRoZSBsYXJnZXN0IHN0cnVjdHVyZSBcXHUwMDI2bGliZXRoX3hkcF9idWZmIGdldHMgY2FzdGVkIHRvLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yOC0gKiBwaWNrIG1heGltdW0gcG9pbnRlci1jb21wYXRpYmxlIGFsaWdubWVudC5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0zNS0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MzY6ICogc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAtIGxpYmV0aCBleHRlbnNpb24gb3ZlciBcXHUwMDI2eGRwX2J1ZmZcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMzctICogQGJhc2U6IG1haW4gXFx1MDAyNnhkcF9idWZmXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNDYtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjQ3OnN0cnVjdCBsaWJldGhfeGRwX2J1ZmYge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC00OC1cXHR1bmlvbiB7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNTYtfSBfX2FsaWduZWQoX19MSUJFVEhfWERQX0JVRkZfQUxJR04pO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo1NzpzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYsIGRhdGEpID09XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTU4LVxcdCAgICAgIG9mZnNldG9mKHN0cnVjdCB4ZHBfYnVmZl94c2ssIHhkcC5kYXRhKSk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjU5OnN0YXRpY19hc3NlcnQob2Zmc2V0b2Yoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgZGVzYykgPT1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjAtXFx0ICAgICAgb2Zmc2V0b2Yoc3RydWN0IHhkcF9idWZmX3hzaywgY2IpKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9NjE9c3RhdGljX2Fzc2VydChJU19BTElHTkVEKHNpemVvZihzdHJ1Y3QgeGRwX2J1ZmZfeHNrKSxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NjI6XFx0XFx0XFx0IF9fYWxpZ25vZihzdHJ1Y3QgbGliZXRoX3hkcF9idWZmKSkpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC02My1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjQtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjY1OiAqIF9fTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYgLSBkZWNsYXJlIGEgXFx1MDAyNmxpYmV0aF94ZHBfYnVmZiBvbiB0aGUgc3RhY2tcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjYtICogQG5hbWU6IG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGRlY2xhcmVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC03MS0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NzI6ICogTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYgLSBkZWNsYXJlIGEgXFx1MDAyNmxpYmV0aF94ZHBfYnVmZiBvbiB0aGUgc3RhY2tcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNzMtICogQG5hbWU6IG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGRlY2xhcmVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC03Ni0jZGVmaW5lIExJQkVUSF9YRFBfT05TVEFDS19CVUZGKG5hbWUsIC4uLilcXHRcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjc3OlxcdF9fTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYobmFtZSwgX19saWJldGhfeGRwX3ByaXZfc3ooX19WQV9BUkdTX18pKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC03OC1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNzktI2RlZmluZSBfX19MSUJFVEhfWERQX09OU1RBQ0tfQlVGRihuYW1lLCAuLi4pXFx0XFx0XFx0XFx0ICAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4MDpcXHRfX0RFRklORV9GTEVYKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYsIG5hbWUsIHByaXYsXFx0XFx0ICAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04MS1cXHRcXHQgICAgICBMSUJFVEhfWERQX1BSSVZfU1ooX19WQV9BUkdTX18gKyAwKSxcXHRcXHQgICAgICBcXFxcXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtODQtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjg1OiNkZWZpbmUgX19saWJldGhfeGRwX3ByaXZfc3ooLi4uKVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6ODY6XFx0Q09OQ0FURU5BVEUoX19saWJldGhfeGRwX3BzeiwgQ09VTlRfQVJHUyhfX1ZBX0FSR1NfXykpKF9fVkFfQVJHU19fKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04Ny1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6ODg6I2RlZmluZSBfX2xpYmV0aF94ZHBfcHN6MCguLi4pXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjg5OiNkZWZpbmUgX19saWJldGhfeGRwX3BzejEoLi4uKVxcdFxcdHNpemVvZihfX1ZBX0FSR1NfXylcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTAtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTkxLSNkZWZpbmUgTElCRVRIX1hEUF9QUklWX1NaKHN6KVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6OTI6XFx0KEFMSUdOKHN6LCBfX2FsaWdub2Yoc3RydWN0IGxpYmV0aF94ZHBfYnVmZikpIC8gc2l6ZW9mKGxvbmcpKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC05My1cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC05Ni1cXHRzdGF0aWNfYXNzZXJ0KG9mZnNldG9mZW5kKHN0cnVjdCB4ZHBfYnVmZl94c2ssIGNiKSBcXHUwMDNlPVxcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6OTc6XFx0XFx0ICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3QgbGliZXRoX3hkcF9idWZmLCBwcml2LFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTgtXFx0XFx0XFx0XFx0ICAgIExJQkVUSF9YRFBfUFJJVl9TWihzeikpKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEwMS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTAyOkRFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShsaWJldGhfeGRwc3Ffc2hhcmUpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDMtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEwNC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTA1OiAqIGxpYmV0aF94ZHBzcV9udW0gLSBjYWxjdWxhdGUgb3B0aW1hbCBudW1iZXIgb2YgWERQU1FzIGZvciB0aGlzIGRldmljZSArIHN5c1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDYtICogQHJ4cTogY3VycmVudCBudW1iZXIgb2YgYWN0aXZlIFJ4IHF1ZXVlc1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTExNS0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTE2OnN0YXRpYyBpbmxpbmUgdTMyIGxpYmV0aF94ZHBzcV9udW0odTMyIHJ4cSwgdTMyIHR4cSwgdTMyIG1heClcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTE3LXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjEtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjEyMjogKiBsaWJldGhfeGRwc3Ffc2hhcmVkIC0gd2hldGhlciBYRFBTUXMgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIHNldmVyYWwgQ1BVc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjMtICogQG51bTogbnVtYmVyIG9mIGFjdGl2ZSBYRFBTUXNcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjYtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjEyNzpzdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3hkcHNxX3NoYXJlZCh1MzIgbnVtKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjgte1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEzMi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTMzOiAqIGxpYmV0aF94ZHBzcV9pZCAtIGdldCBYRFBTUSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ1BVXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEzNC0gKiBAbnVtOiBudW1iZXIgb2YgYWN0aXZlIFhEUFNRc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzUtICpcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTM2OiAqIEhlbHBlciBmb3IgbGliZXRoX3hkcCByb3V0aW5lcywgZG8gbm90IHVzZSBpbiBkcml2ZXJzIGRpcmVjdGx5LlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzctICpcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzktICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE0MDpzdGF0aWMgaW5saW5lIHUzMiBsaWJldGhfeGRwc3FfaWQodTMyIG51bSlcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTQxLXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNDMtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE0NDpcXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2bGliZXRoX3hkcHNxX3NoYXJlKSBcXHUwMDI2XFx1MDAyNlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNDU6XFx0ICAgIGxpYmV0aF94ZHBzcV9zaGFyZWQobnVtKSlcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTQ2LVxcdFxcdHJldCAlPSBudW07XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTUwLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNTE6dm9pZCBfX2xpYmV0aF94ZHBzcV9nZXQoc3RydWN0IGxpYmV0aF94ZHBzcV9sb2NrICpsb2NrLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTItXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE1Mzp2b2lkIF9fbGliZXRoX3hkcHNxX3B1dChzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE1NC1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTYtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE1NzogKiBsaWJldGhfeGRwc3FfZ2V0IC0gaW5pdGlhbGl6ZSBcXHUwMDI2bGliZXRoX3hkcHNxX2xvY2tcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTU4LSAqIEBsb2NrOiBsb2NrIHRvIGluaXRpYWxpemVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNjQtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE2NTpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX2dldChzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE2Ni1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNjktXFx0aWYgKHVubGlrZWx5KHNoYXJlKSlcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTcwOlxcdFxcdF9fbGliZXRoX3hkcHNxX2dldChsb2NrLCBkZXYpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNzEtfVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3My0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTc0OiAqIGxpYmV0aF94ZHBzcV9wdXQgLSBkZWluaXRpYWxpemUgXFx1MDAyNmxpYmV0aF94ZHBzcV9sb2NrXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3NS0gKiBAbG9jazogbG9jayB0byBkZWluaXRpYWxpemVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODAtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4MTpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX3B1dChzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4Mi1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgzLXtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTg0OlxcdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFxcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFxcdTAwMjZcXHUwMDI2IGxvY2stXFx1MDAzZXNoYXJlKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODU6XFx0XFx0X19saWJldGhfeGRwc3FfcHV0KGxvY2ssIGRldik7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4Ni19XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4Ny1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTg4OnZvaWQgX19saWJldGhfeGRwc3FfbG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODk6dm9pZCBfX2xpYmV0aF94ZHBzcV91bmxvY2soc3RydWN0IGxpYmV0aF94ZHBzcV9sb2NrICpsb2NrKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTkwLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTEtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE5MjogKiBsaWJldGhfeGRwc3FfbG9jayAtIGdyYWIgXFx1MDAyNmxpYmV0aF94ZHBzcV9sb2NrIGlmIG5lZWRlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTMtICogQGxvY2s6IGxvY2sgdG8gdGFrZVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE5Ny0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTk4OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfbG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE5OS17XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIwMDpcXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2bGliZXRoX3hkcHNxX3NoYXJlKSBcXHUwMDI2XFx1MDAyNiBsb2NrLVxcdTAwM2VzaGFyZSlcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjAxOlxcdFxcdF9fbGliZXRoX3hkcHNxX2xvY2sobG9jayk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIwMi19XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjA0LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMDU6ICogbGliZXRoX3hkcHNxX3VubG9jayAtIGZyZWUgXFx1MDAyNmxpYmV0aF94ZHBzcV9sb2NrIGlmIG5lZWRlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMDYtICogQGxvY2s6IGxvY2sgdG8gZnJlZVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIxMC0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjExOnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfdW5sb2NrKHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jaylcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjEyLXtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjEzOlxcdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFxcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFxcdTAwMjZcXHUwMDI2IGxvY2stXFx1MDAzZXNoYXJlKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMTQ6XFx0XFx0X19saWJldGhfeGRwc3FfdW5sb2NrKGxvY2spO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMTUtfVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIxOC1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjE5OnZvaWQgbGliZXRoX3hkcHNxX2luaXRfdGltZXIoc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIsIHZvaWQgKnhkcHNxLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMjA6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIyMS1cXHRcXHRcXHQgICAgIHZvaWQgKCpwb2xsKShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspKTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMjMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIyNDogKiBsaWJldGhfeGRwc3FfZGVpbml0X3RpbWVyIC0gZGVpbml0aWFsaXplIFxcdTAwMjZsaWJldGhfeGRwc3FfdGltZXJcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjI1LSAqIEB0aW1lcjogdGltZXIgdG8gZGVpbml0aWFsaXplXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjI4LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMjk6c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF94ZHBzcV9kZWluaXRfdGltZXIoc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIpXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIzMC17XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjM0LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMzU6ICogbGliZXRoX3hkcHNxX3F1ZXVlX3RpbWVyIC0gcnVuIFxcdTAwMjZsaWJldGhfeGRwc3FfdGltZXJcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjM2LSAqIEB0aW1lcjogdGltZXIgdG8gcXVldWVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNDMtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI0NDpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX3F1ZXVlX3RpbWVyKHN0cnVjdCBsaWJldGhfeGRwc3FfdGltZXIgKnRpbWVyKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNDUte1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI1MC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjUxOiAqIGxpYmV0aF94ZHBzcV9ydW5fdGltZXIgLSB3cmFwcGVyIHRvIHJ1biBhIHF1ZXVlIGNsZWFuLXVwIG9uIGEgdGltZXIgZXZlbnRcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjUyLSAqIEB3b3JrOiB3b3JrcXVldWUgYmVsb25naW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRpbWVyXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9MjU5PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjA6bGliZXRoX3hkcHNxX3J1bl90aW1lcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2MS1cXHRcXHQgICAgICAgdTMyICgqcG9sbCkodm9pZCAqeGRwc3EsIHUzMiBidWRnZXQpKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNjIte1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjM6XFx0c3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCp0aW1lciksXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRkd29yay53b3JrKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjY1LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjY6XFx0bGliZXRoX3hkcHNxX2xvY2sodGltZXItXFx1MDAzZWxvY2spO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNjctXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2OC1cXHRpZiAocG9sbCh0aW1lci1cXHUwMDNleGRwc3EsIFUzMl9NQVgpKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjk6XFx0XFx0bGliZXRoX3hkcHNxX3F1ZXVlX3RpbWVyKHRpbWVyKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjcwLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzE6XFx0bGliZXRoX3hkcHNxX3VubG9jayh0aW1lci1cXHUwMDNlbG9jayk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI3Mi19XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjc2LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzc6ICogZW51bSAtIGxpYmV0aF94ZHAgaW50ZXJuYWwgVHggZmxhZ3NcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjc4LSAqIEBMSUJFVEhfWERQX1RYX0JVTEs6IG9uZSBidWxrIHNpemUgYXQgd2hpY2ggaXQgd2lsbCBiZSBmbHVzaGVkIHRvIHRoZSBxdWV1ZVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTI4ND1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yOTMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI5NDogKiBlbnVtIC0gXFx1MDAyNmxpYmV0aF94ZHBfdHhfZnJhbWUgYW5kIFxcdTAwMjZsaWJldGhfeGRwX3R4X2Rlc2MgZmxhZ3NcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjk1LSAqIEBMSUJFVEhfWERQX1RYX0xFTjogb25seSBmb3IgYGBYRFBfVFhgYCwgWzE1OjBdIG9mIDo6bGVuX2ZsIGlzIGFjdHVhbCBsZW5ndGhcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NTkuMTgxNTA0MzA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0Mzk4NzM0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaCBvZiBhIFBhdGNoIGFuZCBpdHMgSW1wbGljYXRpb25zIGZvciBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCB0b3VjaGVzIGBsaWJldGhgLCB3aGljaCBhcHBlYXJzIHRvIGJlIGEgZ2VuZXJpYyBFdGhlcm5ldCBkcml2ZXIgbGlicmFyeS4gVGhpcyBsaWJyYXJ5IGlzIGxpa2VseSB1c2VkIGJ5IGBpYXZmYCBhbmQgbWF5YmUgc29tZSBvdGhlciBkcml2ZXJzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGlhdmZfdHhyeC5jYCB3aGljaCBpcyBzcGVjaWZpYyB0byB0aGUgSW50ZWwgQVZGIGRyaXZlciwgYW5kIGFsc28gYGluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oYCwgYnV0IHRob3NlIGNoYW5nZXMgYXJlIGp1c3QgaW5saW5lIGZ1bmN0aW9ucy4gTXkgZmlyc3QgaW1wcmVzc2lvbiBpcywgdGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQsIHBvdGVudGlhbGx5IGEgbWlub3IgdXBkYXRlLlxuXG5CdXQgdGhlbiBJIHJlLXJlYWQgdGhlIHByb21wdC4gSXQncyBmb2N1c2VkIG9uIGNvZGUgaW4gKnZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzKiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4gVGhlIHByb21wdCBzYXlzIGl0J3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFdhaXQgYSBtaW51dGUsIGlzIGBpYXZmYCBvbmUgb2YgdGhvc2UgZHJpdmVycz9cblxuWWVzLCBpdCBpcyEgYGlhdmZgIGlzIHRoZSBJbnRlbCBFdGhlcm5ldCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlci4gWW91IG5lZWQgYW4gSW50ZWwgcGh5c2ljYWwgTklDIChsaWtlIGk0MGUgb3IgaWNlKSB0byBjcmVhdGUgdGhlIFZGLCB3aGljaCBpcyB0aGVuIHBhc3NlZCB0byB0aGUgVk0uIFFFTVUgZGVmaW5pdGVseSBkb2Vzbid0IGVtdWxhdGUgYGlhdmZgIG5hdGl2ZWx5LiBJJ20gc3RhcnRpbmcgdG8gc2VlIHdoZXJlIHRoaXMgaXMgZ29pbmcuIENhbiBJIGV2ZW4gZnV6eiBpdCB3aXRoIFN5emthbGxlcj9cblxuU3l6a2FsbGVyIGRvZXMgaGF2ZSBgc3l6X3BjaV9kZXZpY2VgLCB3aGljaCBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcywgYnV0IG9ubHkgaWYgdGhleSBoYXZlIGRldmljZSBkZXNjcmlwdGlvbnMuIEkgbmVlZCB0byBjaGVjayBpZiBTeXprYWxsZXIgYWN0dWFsbHkgZnV6emVkIGBpYXZmYC4gSSBjYW4ndCBsb29rIHRoYXQgdXAgb25saW5lIHJpZ2h0IG5vdywgYnV0IEkgY2FuIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSBpZiBgaWF2ZmAgaXMgY29uc2lkZXJlZCBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIuXG5cblllcywgaXQncyB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9gLiBEZWZpbml0ZWx5IHZlbmRvci1zcGVjaWZpYy4gQnV0IGlzIGl0IGEgU21hcnROSUMgb3IgUENJZSBzd2l0Y2g/IE5vLCBpdCdzIGp1c3QgYSBzdGFuZGFyZCBFdGhlcm5ldCBWRiBkcml2ZXIuXG5cbk9rYXksIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRoZSBwcm9tcHQsIHdoaWNoIHNheXMsICpcInZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLlwiKiBTdGFuZGFyZCBFdGhlcm5ldCBkcml2ZXJzIGxpa2UgYGUxMDAwZWAsIGBpZ2JgLCBgaXhnYmVgLCBgaTQwZWAsIGBpY2VgLCBhbmQgYGlhdmZgIGFyZSBhbGwgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywgcmlnaHQ/IEFuZCB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdW5sZXNzIGVtdWxhdGVkPyBSaWdodCBhZ2FpbiEgUUVNVSBkb2VzIGVtdWxhdGUgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCAqcmVjZW50bHkqIGBpZ2JgLCBidXQgaXQgKmRvZXMgbm90KiBlbXVsYXRlIGBpYXZmYC5cblxuU28sIGBpYXZmYCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZS4gVGhhdCBtZWFucyBpdCdzIG5vdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIHN0YW5kYXJkIFFFTVUuIFRoYXQncyBhIHNpZ25pZmljYW50IGNvbnN0cmFpbnQuIEJ1dCwgdGhlIHBhdGNoIGRvZXMgdG91Y2ggYGxpYmV0aGAuIElmIGBsaWJldGhgIGlzIHVzZWQgYnkgKm90aGVyKiBkcml2ZXJzLCB0aGVyZSBtaWdodCBiZSBhIHJvdXRlIHRvIHJlYWNoIHRoZSBjaGFuZ2VzIGlmIHRob3NlIGRyaXZlcnMgKmFyZSogZW11bGF0ZWQuIFRpbWUgdG8gY2hlY2sgd2hhdCBvdGhlciBkcml2ZXJzIHVzZSBgbGliZXRoYC4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDgyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjA5LjYyMTM5MTc1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc4NTkzMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5ODggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9JTlRFTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxOTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjAtc291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJpZS9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSUJFVEgpICs9IGxpYmV0aC9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZS03LW9iai15ICs9IGxpYmllL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYz0xNzQyPXN0YXRpYyBpbmxpbmUgdm9pZCBpNDBlX3J4X2NoZWNrc3VtKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xNzQ1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3NDY6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc0Ny1cXHR1MzIgcnhfZXJyb3IsIHJ4X3N0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc1Ny1cXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocHR5cGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTc1ODpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVxcdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc1OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxNzY4OlxcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njk6XFx0aXB2NiA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM9MTgxND1zdGF0aWMgaW5saW5lIHZvaWQgaTQwZV9yeF9oYXNoKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgxOTpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODIwLVxcdHUzMiBoYXNoO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODI1LVxcdGRlY29kZWQgPSBsaWJpZV9yeF9wdF9wYXJzZShyeF9wdHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxODI2OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXFx1MDAzZW5ldGRldiwgZGVjb2RlZCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODI3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgzMC1cXHRcXHRoYXNoID0gbGUzMl90b19jcHUocnhfZGVzYy1cXHUwMDNld2IucXdvcmQwLmhpX2R3b3JkLnJzcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxODMxOlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgzMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTcxMT1zdGF0aWMgdm9pZCBpYXZmX2NsZWFuX3J4X3Jpbmcoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzIzLVxcdGZvciAodTMyIGkgPSByeF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuOyBpICE9IHJ4X3JpbmctXFx1MDAzZW5leHRfdG9fdXNlOyApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjcyNDpcXHRcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfZnFlcyA9IFxcdTAwMjZyeF9yaW5nLVxcdTAwM2VyeF9mcWVzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzI2OlxcdFxcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfZnFlcy1cXHUwMDNlbmV0bWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTcyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9NzQyPXZvaWQgaWF2Zl9mcmVlX3J4X3Jlc291cmNlcyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzQzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc0NDpcXHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzQ1LVxcdFxcdC5mcWVzXFx0PSByeF9yaW5nLVxcdTAwM2VyeF9mcWVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3NTc6XFx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXFx1MDAyNmZxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc1OC1cXHRyeF9yaW5nLVxcdTAwM2VyeF9mcWVzID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9NzY4PWludCBpYXZmX3NldHVwX3J4X2Rlc2NyaXB0b3JzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03Njkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzcwOlxcdHN0cnVjdCBsaWJldGhfZnEgZnEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NzEtXFx0XFx0LmNvdW50XFx0XFx0PSByeF9yaW5nLVxcdTAwM2Vjb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6Nzc3OlxcdHJldCA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXFx1MDAyNmZxLCBcXHUwMDI2cnhfcmluZy1cXHUwMDNlcV92ZWN0b3ItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTgwNS1lcnI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4MDY6XFx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXFx1MDAyNmZxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTgwNy1cXHRyeF9yaW5nLVxcdTAwM2VyeF9mcWVzID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9ODU5PWJvb2wgaWF2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHUxNiBjbGVhbmVkX2NvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODYwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjg2MTpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODYyLVxcdFxcdC5wcFxcdFxcdD0gcnhfcmluZy1cXHUwMDNlcHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTg3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjg3OTpcXHRcXHRhZGRyID0gbGliZXRoX3J4X2FsbG9jKFxcdTAwMjZmcSwgbnR1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTg4MC1cXHRcXHRpZiAoYWRkciA9PSBETUFfTUFQUElOR19FUlJPUilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9OTI1PXN0YXRpYyB2b2lkIGlhdmZfcnhfY3N1bShjb25zdCBzdHJ1Y3QgaWF2Zl92c2kgKnZzaSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkyNjpcXHRcXHRcXHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTI3OlxcdFxcdFxcdCBzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTM3OlxcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkX3B0KSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkzODpcXHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZF9wdCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk3NS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5NzY6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTc3LWlhdmZfbGVnYWN5X3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHU2NCBxdzEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5Nzg6XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk3OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5ODA6XFx0c3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyA9IHt9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTgyOlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bSh2c2ktXFx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05ODMtXFx0XFx0cmV0dXJuIGNzdW1fYml0cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAwNS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDA2OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3J4X2NzdW1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDctaWF2Zl9mbGV4X3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHU2NCBxdzEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDA4OlxcdFxcdCAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAwOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDEwOlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDEyOlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bSh2c2ktXFx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDEzLVxcdFxcdHJldHVybiBjc3VtX2JpdHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEwMzc9c3RhdGljIHZvaWQgaWF2Zl9sZWdhY3lfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAzOC1cXHRcXHRcXHRcXHRfX2xlNjQgcXcxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAzOTpcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNDQ6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocmluZy1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkX3B0KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNDUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ4LVxcdFxcdGhhc2ggPSBsZTY0X2dldF9iaXRzKHF3MCwgSUFWRl9SWERfTEVHQUNZX1JTU19NKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNDk6XFx0XFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZF9wdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDUwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTA2Mz1zdGF0aWMgdm9pZCBpYXZmX2ZsZXhfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA2NC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTA2NTpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNzA6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocmluZy1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkX3B0KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDc1LVxcdFxcdGhhc2ggPSBsZTY0X2dldF9iaXRzKHF3MSwgSUFWRl9SWERfRkxFWF9SU1NfSEFTSF9NKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNzY6XFx0XFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZF9wdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDc3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTEzMT1zdGF0aWMgdm9pZCBpYXZmX3Byb2Nlc3Nfc2tiX2ZpZWxkcyhjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTM1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExMzY6XFx0c3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExMzc6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTEzOC1cXHRfX2xlNjQgcXcwID0gcnhfZGVzYy1cXHUwMDNlcXcwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTk3PXN0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMTk4OlxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTExOTktXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTIxNz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlhdmZfYnVpbGRfc2tiKGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTIxODpcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTIxOS1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTI1ND1zdGF0aWMgYm9vbCBpYXZmX2lzX25vbl9lb3Aoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEyNTU6XFx0XFx0XFx0ICAgIHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyODYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjg3OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjg4LWlhdmZfZXh0cmFjdF9sZWdhY3lfcnhfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTMtXFx0dTY0IHF3MiA9IGxlNjRfdG9fY3B1KHJ4X2Rlc2MtXFx1MDAzZXF3Mik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjk0OlxcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI5NS1cXHRib29sIGwydGFnMXAsIGwydGFnMnA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzMzOnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM0LWlhdmZfZXh0cmFjdF9mbGV4X3J4X2ZpZWxkcyhjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEzMzc6XFx0c3RydWN0IGxpYmV0aF9ycWVfaW5mbyBmaWVsZHMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzgtXFx0dTY0IHF3MCA9IGxlNjRfdG9fY3B1KHJ4X2Rlc2MtXFx1MDAzZXF3MCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzY2OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzY3LWlhdmZfZXh0cmFjdF9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTM4OT1zdGF0aWMgaW50IGlhdmZfY2xlYW5fcnhfaXJxKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzOTgtXFx0d2hpbGUgKGxpa2VseSh0b3RhbF9yeF9wYWNrZXRzIFxcdTAwM2MgKHVuc2lnbmVkIGludClidWRnZXQpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzk5OlxcdFxcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTQwMDpcXHRcXHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTQwMS1cXHRcXHRzdHJ1Y3QgaWF2Zl9yeF9kZXNjICpyeF9kZXNjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDMwLVxcdFxcdHJ4X2J1ZmZlciA9IFxcdTAwMjZyeF9yaW5nLVxcdTAwM2VyeF9mcWVzW3J4X3JpbmctXFx1MDAzZW5leHRfdG9fY2xlYW5dO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTQzMTpcXHRcXHRpZiAoIV9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTE0MzItXFx0XFx0XFx0Z290byBza2lwX2RhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5oPTIxOD1zdHJ1Y3QgaWF2Zl9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmgtMjI2LVxcdHVuaW9uIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5oOjIyNzpcXHRcXHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfZnFlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5oLTIyOC1cXHRcXHRzdHJ1Y3QgaWF2Zl90eF9idWZmZXIgKnR4X2JpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM9NjA3PXN0YXRpYyBpbnQgaWNlX3J4cV9wcF9jcmVhdGUoc3RydWN0IGljZV9yeF9yaW5nICpycSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MDgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYwOTpcXHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxMC1cXHRcXHQuY291bnRcXHRcXHQ9IHJxLVxcdTAwM2Vjb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MTg6XFx0ZXJyID0gbGliZXRoX3J4X2ZxX2NyZWF0ZShcXHUwMDI2ZnEsIFxcdTAwMjZycS1cXHUwMDNlcV92ZWN0b3ItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxOS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYzMDpcXHRmcSA9IChzdHJ1Y3QgbGliZXRoX2ZxKXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzEtXFx0XFx0LmNvdW50XFx0XFx0PSBycS1cXHUwMDNlY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM6NjM3OlxcdGVyciA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXFx1MDAyNmZxLCBcXHUwMDI2cnEtXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTEyLSNpbmNsdWRlIFxcdTAwM2NuZXQvZGNibmwuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzoxMzojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC9yeC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9MTIzMj1zdGF0aWMgaW50IGljZV9sYnRlc3RfcmVjZWl2ZV9mcmFtZXMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTEyMzMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jOjEyMzQ6XFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMjM1LVxcdGludCB2YWxpZF9mcmFtZXMsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTE6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveGRwLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTItI2luY2x1ZGUgXFx1MDAzY25ldC9kc2ZpZWxkLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz0xMTQ9aWNlX3VubWFwX2FuZF9mcmVlX3R4X2J1ZihzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMjktXFx0Y2FzZSBJQ0VfVFhfQlVGX1hEUF9UWDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMzA6XFx0XFx0bGliZXRoX3hkcF9yZXR1cm5fdmEodHhfYnVmLVxcdTAwM2VyYXdfYnVmLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTEyPXZvaWQgaWNlX3J4cV9wcF9kZXN0cm95KHN0cnVjdCBpY2VfcnhfcmluZyAqcnEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTEzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1MTQ6XFx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTUtXFx0XFx0LmZxZXNcXHQ9IHJxLVxcdTAwM2VyeF9mcWVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjUxOTpcXHRsaWJldGhfcnhfZnFfZGVzdHJveShcXHUwMDI2ZnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUyMC1cXHRycS1cXHUwMDNlcnhfZnFlcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTI5OlxcdGxpYmV0aF9yeF9mcV9kZXN0cm95KFxcdTAwMjZmcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTMwLVxcdHJxLVxcdTAwM2VoZHJfZnFlcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz01Mzg9dm9pZCBpY2VfY2xlYW5fcnhfcmluZyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTUxOlxcdGxpYmV0aF94ZHBfcmV0dXJuX3N0YXNoKFxcdTAwMjZyeF9yaW5nLVxcdTAwM2V4ZHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1NC1cXHRmb3IgKHUzMiBpID0gcnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbjsgaSAhPSByeF9yaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTsgKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTU1OlxcdFxcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfcmluZy1cXHUwMDNlcnhfZnFlc1tpXS5uZXRtZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTctXFx0XFx0aWYgKHJ4X3JpbmctXFx1MDAzZWhkcl9wcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1NTg6XFx0XFx0XFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhyeF9yaW5nLVxcdTAwM2VoZHJfZnFlc1tpXS5uZXRtZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTY1MT1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NjUyOmljZV9ydW5feGRwKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZywgc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY1My1cXHQgICAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZywgc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY4OS1cXHRjYXNlIFhEUF9EUk9QOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjY5MDpcXHRcXHRsaWJldGhfeGRwX3JldHVybl9idWZmKHhkcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNjkxLVxcdFxcdHJldCA9IElDRV9YRFBfQ09OU1VNRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz04MjU9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHVuc2lnbmVkIGludCBjbGVhbmVkX2NvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgyNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODI3OlxcdGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgaGRyX2ZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgyOC1cXHRcXHQucHBcXHRcXHQ9IHJ4X3JpbmctXFx1MDAzZWhkcl9wcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgzMi1cXHR9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjgzMzpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgzNC1cXHRcXHQucHBcXHRcXHQ9IHJ4X3JpbmctXFx1MDAzZXBwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjg1MjpcXHRcXHRhZGRyID0gbGliZXRoX3J4X2FsbG9jKFxcdTAwMjZmcSwgbnR1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTMtXFx0XFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NjY6XFx0XFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcXHUwMDI2aGRyX2ZxLCBudHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2Ny1cXHRcXHRpZiAoYWRkciA9PSBETUFfTUFQUElOR19FUlJPUikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjg3MDpcXHRcXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KGZxLmZxZXNbbnR1XS5uZXRtZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg3MS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTk0Nj1zdGF0aWMgaW50IGljZV9jbGVhbl9yeF9pcnEoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjk1ODpcXHRsaWJldGhfeGRwX2luaXRfYnVmZih4ZHAsIFxcdTAwMjZyeF9yaW5nLVxcdTAwM2V4ZHAsIFxcdTAwMjZyeF9yaW5nLVxcdTAwM2V4ZHBfcnhxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NjgtXFx0XFx0dW5pb24gaWNlXzMyYl9yeF9mbGV4X2Rlc2MgKnJ4X2Rlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6OTY5OlxcdFxcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTcwLVxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDEwLVxcdFxcdHJ4X2J1ZiA9IFxcdTAwMjZyeF9yaW5nLVxcdTAwM2VoZHJfZnFlc1tudGNdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwMTE6XFx0XFx0bGliZXRoX3hkcF9wcm9jZXNzX2J1ZmYoeGRwLCByeF9idWYsIHNpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwMTItXFx0XFx0cnhfYnVmLVxcdTAwM2VuZXRtZW0gPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAyMS1cXHRcXHRyeF9idWYgPSBcXHUwMDI2cnhfcmluZy1cXHUwMDNlcnhfZnFlc1tudGNdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwMjI6XFx0XFx0bGliZXRoX3hkcF9wcm9jZXNzX2J1ZmYoeGRwLCByeF9idWYsIHNpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDQ4LVxcdFxcdGlmICghc2tiKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTA0OTpcXHRcXHRcXHRsaWJldGhfeGRwX3JldHVybl9idWZmX3Nsb3coeGRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDUwLVxcdFxcdFxcdGljZV9zdGF0c19pbmMocnhfcmluZy1cXHUwMDNlcmluZ19zdGF0cywgcnhfYnVmX2ZhaWxlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwNzc6XFx0bGliZXRoX3hkcF9zYXZlX2J1ZmYoXFx1MDAyNnJ4X3JpbmctXFx1MDAzZXhkcCwgeGRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDo3OiNpbmNsdWRlIFxcdTAwM2NuZXQvbGliZXRoL3R5cGVzLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMjg1LVxcdHVuaW9uIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDoyODY6XFx0XFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMjg3LVxcdFxcdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9idWY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDAtXFx0c3RydWN0IHBhZ2VfcG9vbCAqaGRyX3BwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjMwMTpcXHRzdHJ1Y3QgbGliZXRoX2ZxZSAqaGRyX2ZxZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzE3LVxcdHVuaW9uIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMTg6XFx0XFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB4ZHA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzE5OlxcdFxcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhzaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMjAtXFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXQvaW50ZWwvbGliaWUvcnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NjojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz02NT1pY2VfcnhfaGFzaF90b19za2IoY29uc3Qgc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTY4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Njk6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03MC1cXHR1MzIgaGFzaDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03Mi1cXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocnhfcHR5cGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo3MzpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyeF9yaW5nLVxcdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzctXFx0aWYgKGxpa2VseShoYXNoKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Nzg6XFx0XFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz0xMDg9aWNlX3J4X2NzdW0oc3RydWN0IGljZV9yeF9yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTExMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjExMTpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTExMi1cXHR1MTYgcnhfc3RhdHVzMCwgcnhfc3RhdHVzMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTgtXFx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHB0eXBlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTE5OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bShyaW5nLVxcdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMjAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTM4OlxcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTM5OlxcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTI3MT1pY2VfY2xlYW5feGRwX3R4X2J1ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMjc1LVxcdGNhc2UgSUNFX1RYX0JVRl9YRFBfVFg6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjI3NjpcXHRcXHRsaWJldGhfeGRwX3JldHVybl92YSh0eF9idWYtXFx1MDAzZXJhd19idWYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0yNzctXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTIzPXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9od190cyhjb25zdCBzdHJ1Y3QgeGRwX21kICpjdHgsIHU2NCAqdHNfbnMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjUyNTpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNi1cXHRzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTI4OlxcdHJ4X3JpbmcgPSBsaWJldGhfeGRwX2J1ZmZfdG9fcnEoeGRwX2V4dCwgdHlwZW9mKCpyeF9yaW5nKSwgeGRwX3J4cSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz01NTY9c3RhdGljIGludCBpY2VfeGRwX3J4X2hhc2goY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCB1MzIgKmhhc2gsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTU4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTU5OlxcdGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcF9leHQgPSAodm9pZCAqKWN0eDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTU3OD1zdGF0aWMgaW50IGljZV94ZHBfcnhfdmxhbl90YWcoY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCBfX2JlMTYgKnZsYW5fcHJvdG8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTgwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTgxOlxcdGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcF9leHQgPSAodm9pZCAqKWN0eDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTgyLVxcdHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1ODQ6XFx0cnhfcmluZyA9IGxpYmV0aF94ZHBfYnVmZl90b19ycSh4ZHBfZXh0LCB0eXBlb2YoKnJ4X3JpbmcpLCB4ZHBfcnhxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTg1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01LSNpbmNsdWRlIFxcdTAwM2NsaW51eC91bnJvbGwuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveGRwLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03LSNpbmNsdWRlIFxcdTAwM2NuZXQveGRwX3NvY2tfZHJ2LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTU2Nz1pbnQgaWNlX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjYzMjpcXHRcXHQoKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKilmaXJzdCktXFx1MDAzZWRlc2MgPSByeF9kZXNjO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NzYtXFx0cnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbiA9IG50YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY3NzpcXHRyeF9yaW5nLVxcdTAwM2V4c2sgPSAoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKWZpcnN0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9Njc1PXN0cnVjdCBpZHBmX2FkYXB0ZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNDpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0ICpzaW5nbGVxX3B0X2xrdXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzA1OlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNwbGl0cV9wdF9sa3VwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0zLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0OiNpbmNsdWRlIFxcdTAwM2NuZXQvbGliZXRoL3hkcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTE4OD1zdGF0aWMgdm9pZCBpZHBmX3R4X3NpbmdsZXFfZG1hX21hcF9lcnJvcihzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTE5MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjE5MjpcXHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMgc3MgPSB7IH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjE5MzpcXHRzdHJ1Y3QgbGliZXRoX2NxX3BwIGNwID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0xOTQtXFx0XFx0LmRldlxcdD0gdHhxLVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtMjA2LVxcdFxcdHR4X2J1ZiA9IFxcdTAwMjZ0eHEtXFx1MDAzZXR4X2J1ZltpZHhdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoyMDc6XFx0XFx0bGliZXRoX3R4X2NvbXBsZXRlKHR4X2J1ZiwgXFx1MDAyNmNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtMjA4LVxcdFxcdGlmICh0eF9idWYgPT0gZmlyc3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9NDgxPXN0YXRpYyBib29sIGlkcGZfdHhfc2luZ2xlcV9jbGVhbihzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqdHhfcSwgaW50IG5hcGlfYnVkZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTQ4My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ4NDpcXHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMgc3MgPSB7IH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTQ4NS1cXHRzdHJ1Y3QgaWRwZl9iYXNlX3R4X2Rlc2MgKnR4X2Rlc2M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg3LVxcdHMxNiBudGMgPSB0eF9xLVxcdTAwM2VuZXh0X3RvX2NsZWFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0ODg6XFx0c3RydWN0IGxpYmV0aF9jcV9wcCBjcCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg5LVxcdFxcdC5kZXZcXHQ9IHR4X3EtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MjgtXFx0XFx0LyogdXBkYXRlIHRoZSBzdGF0aXN0aWNzIGZvciB0aGlzIHBhY2tldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1Mjk6XFx0XFx0bGliZXRoX3R4X2NvbXBsZXRlKHR4X2J1ZiwgXFx1MDAyNmNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNTMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0Mi1cXHRcXHRcXHQvKiB1bm1hcCBhbnkgcmVtYWluaW5nIHBhZ2VkIGRhdGEgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NTQzOlxcdFxcdFxcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFxcdTAwMjZjcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0NC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9NjQ5PXN0YXRpYyB2b2lkIGlkcGZfcnhfc2luZ2xlcV9jc3VtKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1MC1cXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjUxOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTI6XFx0XFx0XFx0XFx0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTYtXFx0LyogY2hlY2sgaWYgUnggY2hlY2tzdW0gaXMgZW5hYmxlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTc6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2NoZWNrc3VtKHJ4cS1cXHUwMDNleGRwX3J4cS5kZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjY0OlxcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjY1OlxcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcxNi0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjcxNzpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcxOC1pZHBmX3J4X3NpbmdsZXFfYmFzZV9jc3VtKGNvbnN0IHVuaW9uIHZpcnRjaG5sMl9yeF9kZXNjICpyeF9kZXNjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3MjA6XFx0c3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyA9IHsgfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzIxLVxcdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1MS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc1MjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1My1pZHBmX3J4X3NpbmdsZXFfZmxleF9jc3VtKGNvbnN0IHVuaW9uIHZpcnRjaG5sMl9yeF9kZXNjICpyeF9kZXNjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3NTU6XFx0c3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyA9IHsgfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzU2LVxcdHUxNiByeF9zdGF0dXMwLCByeF9zdGF0dXMxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTc4OT1zdGF0aWMgdm9pZCBpZHBmX3J4X3NpbmdsZXFfYmFzZV9oYXNoKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeF9xLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5MS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCB1bmlvbiB2aXJ0Y2hubDJfcnhfZGVzYyAqcnhfZGVzYyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzkyOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc5NjpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyeF9xLVxcdTAwM2V4ZHBfcnhxLmRldiwgZGVjb2RlZCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MDU6XFx0XFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgwNi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9ODE5PXN0YXRpYyB2b2lkIGlkcGZfcnhfc2luZ2xlcV9mbGV4X2hhc2goc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4X3EsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODIxLVxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHVuaW9uIHZpcnRjaG5sMl9yeF9kZXNjICpyeF9kZXNjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MjI6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MjQ6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcS1cXHUwMDNleGRwX3J4cS5kZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MjUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODMxOlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MzItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTg0OD1fX2lkcGZfcnhfc2luZ2xlcV9wcm9jZXNzX3NrYl9maWVsZHMoc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4X3EsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODUzOlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZCA9IHJ4X3EtXFx1MDAzZXJ4X3B0eXBlX2xrdXBbcHR5cGVdO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDowOS43NzkyNTkwOTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE2ODgwMDk2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCB0b3VjaGVzIGBsaWJldGhgLCB3aGljaCBpcyB1c2VkIGJ5IHNldmVyYWwgSW50ZWwgRXRoZXJuZXQgZHJpdmVyczogYGk0MGVgLCBgaWF2ZmAsIGBpY2VgLCBhbmQgYGlkcGZgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiBzeXprYWxsZXIgY2FuIHJlYWNoIGFueSBvZiB0aGUgY29kZSBhZmZlY3RlZCBieSB0aGUgcGF0Y2guIEkga25vdyBgaWRwZmAgaXMgYW4gSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIGRyaXZlciBhbmQgaXMgdmVuZG9yLXNwZWNpZmljIFBDSWUuIGBpY2VgIGFuZCBgaTQwZWAgYXJlIGFsc28gSW50ZWwgRXRoZXJuZXQgZHJpdmVycywgc28gdmVuZG9yLXNwZWNpZmljIFBDSWUgYXMgd2VsbC4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHN5emthbGxlciBmdXp6IHRoZW0/IEFuZCBvZiBjb3Vyc2UsIGBpYXZmYCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24gKFZGKSBkcml2ZXIuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGZvY3VzaW5nIG9uIGNvZGUgdGhhdCdzICppbXBvc3NpYmxlKiB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSXQgZ2l2ZXMgZXhhbXBsZXMgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLlxuXG5BcmUgZHJpdmVycyBsaWtlIGBpNDBlYCwgYGljZWAsIGBpYXZmYCBjb25zaWRlcmVkIHRoaXMgdHlwZSBvZiBkcml2ZXI/IE5vdCBpbiB0aGUgc3RyaWN0ZXN0IHNlbnNlIG9mIHRoZSBleGFtcGxlcyBwcm92aWRlZCwgYnV0IHRoZXkgYXJlIEludGVsIEV0aGVybmV0IE5JQyBkcml2ZXJzIGFuZCB0aGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCB0aGVzZSBkcml2ZXJzIHJlcXVpcmUgaGFyZHdhcmUgdGhhdCBpc24ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgdGhlIGtleS4gSWYgdGhleSBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgdGhhdCBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZCBpbiBRRU1VLCB0aGVuIHRoZXkncmUgdW5yZWFjaGFibGUsIHJpZ2h0PyBBbmQgSSdkIGJldCB0aGUgYW5zd2VyIGlzIHRoYXQgdGhleSBjYW4ndCBiZSByZWFjaGVkIGluIGEgc3RhbmRhcmQgR0NFIG9yIFFFTVUgc2V0dXAgdW5sZXNzIHRoZXJlJ3Mgc29tZSBraW5kIG9mIHNvZnR3YXJlIGVtdWxhdGlvbi4gU3l6a2FsbGVyIG1pZ2h0IGhhdmUgc29tZSBlbXVsYXRpb24gZm9yICpzb21lKiBkZXZpY2VzLCBidXQgaXQncyBub3QgYSBnZW5lcmFsIGNhc2UuXG5cblNvLCB0aGUgcXVlc3Rpb24gYmVjb21lczogZG9lcyBzeXprYWxsZXIgZW11bGF0ZSB0aGVzZSBkcml2ZXJzPyBDYW4gSSB0cmlnZ2VyIGBpYXZmYCBjb2RlIHdpdGhvdXQgdGhlIGhhcmR3YXJlPyBJdCBwcm9iZXMgZm9yIGEgc3BlY2lmaWMgUENJIElELCBzbyBpZiB0aGUgZGV2aWNlIGlzbid0IHByZXNlbnQsIHRoZSBkcml2ZXIgd29uJ3QgZXZlbiBiaW5kLiBEb2VzIHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZWAgZW11bGF0ZSB0aGVzZT8gSSBjYW4ndCBjaGVjayBzeXprYWxsZXIgZGlyZWN0bHkgYnV0IGNhbiBJIHVzZSBzb21lIHRyaWNrcyB0byBpbmZlciBhbnl0aGluZywgYnkgbG9va2luZyBhdCBleGlzdGluZyBidWdzIHJlcG9ydGVkIGZvciBgaWF2ZmA/IEkgbmVlZCBpbnRlcm5ldCBhY2Nlc3MgZm9yIHRoaXMuXG5cblRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IGNvZGUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUgKGxpa2UgYHVzYiBnYWRnZXRgLCBgbWFjODAyMTFfaHdzaW1gKSwgc2hvdWxkIHJlc3VsdCBpbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gYGlhdmZgIGlzIGRlZmluaXRlbHkgYW4gSW50ZWwgRXRoZXJuZXQgVkYgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYW4gSW50ZWwgTklDLiBRRU1VIGRlZmluaXRlbHkgZG9lc24ndCBlbXVsYXRlIHRoZSBJbnRlbCBBVkYuXG5cbkFuZCBiZWNhdXNlIGBsaWJldGhgIGlzIHVzZWQgYnkgYWxsIHRoZXNlIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGBpYXZmYCwgYGk0MGVgLCBgaWNlYCwgYW5kIGBpZHBmYCksIHRoZSBjb25jbHVzaW9uIGlzIHRoZSBzYW1lIGZvciB0aGUgcGF0Y2ggLSB0aGUgY29kZSBwYXRocyBhZmZlY3RlZCBieSB0aGUgcGF0Y2ggdGhhdCByZWxhdGUgdG8gSW50ZWwgRXRoZXJuZXQgZHJpdmVycyBjYW4ndCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIFFFTVUsIGJlY2F1c2UgdGhleSByZXF1aXJlIGhhcmR3YXJlIG5vdCBlbXVsYXRlZC4gUUVNVSBkb2VzIGVtdWxhdGUgb3RoZXIgRXRoZXJuZXQgaW50ZXJmYWNlcyBsaWtlIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgYGlnYmAuIFNvIG5vdyBJIGhhdmUgdG8gY2hlY2ssIGFyZSB0aG9zZSBpbnRlcmZhY2VzIHVzaW5nIGxpYmV0aD9cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwMDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjQ6MjEuNDY3MjcxNzIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAwOTg2ODksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpYmV0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDoyMS41NjczNzgyMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI5MDIwODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogZTEwMDBlKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRvIGNoZWNrIHRoZSBgZTEwMDBlYC4gSnVzdCB0aGUgbWVudGlvbiBvZiB0aGF0IG5hbWUgY29uanVyZXMgdXAgYSBzcGVjaWZpYyBzZXQgb2YgaGFyZHdhcmUgYW5kIHBvdGVudGlhbCBzb2Z0d2FyZSBpbXBsaWNhdGlvbnMuIEkga25vdyBpbW1lZGlhdGVseSB0aGF0IHRoaXMgcmVmZXJzIHRvIGEgcGFydGljdWxhciBJbnRlbCBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIgZmFtaWx5LiBNeSBtaW5kIGp1bXBzIHRvIHRoZSBkcml2ZXJzLCB0aGUgZmlybXdhcmUgdmVyc2lvbnMsIGtub3duIGJ1Z3MgYW5kIHZ1bG5lcmFiaWxpdGllcywgYW5kIHRoZSBjb21tb24gY29uZmlndXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIHByb2JhYmx5IHBvaW50cyB0b3dhcmRzIGFuIGlzc3VlIHJlbGF0ZWQgdG8gbmV0d29yayBjb25uZWN0aXZpdHkgYW5kIGhvdyBpdCdzIGludGVyYWN0aW5nIHdpdGggdGhlIGhvc3Qgc3lzdGVtLiBNeSBpbml0aWFsIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBsb3ctbGV2ZWwgZHJpdmVycyBhbmQgdGhlIGludGVycnVwdCBoYW5kbGluZyByZWxhdGVkIHRvIHRoZSBgZTEwMDBlYCBjb250cm9sbGVyLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1MjQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDoyNS4yOTY0MDM0MzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MjUwMjExNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjI1LjY2ODkxMzUzOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQzNTk5NDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB0aGUgcmVsZXZhbnQgdGVjaG5pY2FsIGRvbWFpbiBhbmQgY29udGV4dC5cblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IGUxMDAwIENoZWNrKipcblxuQWxyaWdodCwgdGhlIGZpcnN0IHRob3VnaHQgaXMgc2ltcGxlOiAqZTEwMDAqLiBUaGlzIGlzIGxpa2VseSBhIHZlcnkgc3BlY2lmaWMgaWRlbnRpZmllciBvciByZWZlcmVuY2UuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgbWluZCBpbnN0YW50bHkganVtcHMgdG8gcG9zc2libGUgbWVhbmluZ3MuIENvdWxkIGJlIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50LCBhIHNvZnR3YXJlIG1vZHVsZSwgYW4gZXJyb3IgY29kZSwgYSBjb25maWd1cmF0aW9uIGZpbGUsIGEgZGVidWdnaW5nIHRvb2wuLi4gdGhlIHBvc3NpYmlsaXRpZXMgYXJlIG51bWVyb3VzLCBidXQgdGhlIGJyZXZpdHkgc3VnZ2VzdHMgYSBmYW1pbGlhciBhbmQgY29tbW9ubHkgcmVmZXJlbmNlZCBlbGVtZW50IHdpdGhpbiB0aGlzIGNvbnRleHQuXG5cbk15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gcXVpY2tseSBwZXJmb3JtIGEgbWVudGFsIGNoZWNrbGlzdCwgc3RhcnRpbmcgd2l0aCB3aGF0IEkgKmV4cGVjdCogdG8gZmluZCBiYXNlZCBvbiBwcmlvciBleHBlcmllbmNlLiBXaGF0IGFyZSB0aGUgY29tbW9uIHBpdGZhbGxzPyBXaGF0IHVzdWFsbHkgZ29lcyB3cm9uZyB3aXRoIGBlMTAwMGA/IFdoZXJlIGRvIEkgaGF2ZSByZWNlbnQgZXhwZXJpZW5jZSB3aXRoIHRoaXMgY29tcG9uZW50PyBXaGF0J3MgdGhlIGNvbnRleHQgSSB3YXMgd29ya2luZyBpbiB0aGF0IG1heSByZXF1aXJlIHRoaXMgY2hlY2s/XG5cblRoaXMgaXMgd2hlcmUgbXkgeWVhcnMgb2YgZXhwZXJpZW5jZSBraWNrIGluLiBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgbW9zdCBsaWtlbHkgYW5kIG1vdmUgdGhyb3VnaCB0aGUgbGVzcyBsaWtlbHksIHN0YXJ0aW5nIHdpdGggdGhlIGFyZWEgSSBoYXZlIHRoZSBncmVhdGVzdCBjb25maWRlbmNlIGluLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG5lZWRzIGF0dGVudGlvbiwgb3Igd2hhdCB0aGUgcHJvbXB0IGlzIGFjdHVhbGx5IHJlbGF0ZWQgdG8sIHNpbmNlIGUxMDAwIGNvdWxkIGJlIGEgcmVmZXJlbmNlIHRvIGEgbG90IG9mIHN0dWZmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTc3NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjMwLjAxMjUxNjIwM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1MzY1MzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpYmV0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjMwLjA3MjA1OTU3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjQ1NzU0MjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBsaWJldGhgIFVzYWdlIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBgbGliZXRoYCBpcyBiZWluZyB1dGlsaXplZCwgYW5kIGl0IHNlZW1zIGNvbmZpbmVkIHRvIHRoZSBgaTQwZWAsIGBpYXZmYCwgYGljZWAsIGFuZCBgaWRwZmAgZHJpdmVycy4gIE5vbmUgb2YgdGhvc2UgYXJlIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYW55IG9mIHRoZXNlIGRyaXZlcnMsIHNwZWNpZmljYWxseSBgaWF2ZmAsIGFyZSBldmVuICpmdXp6YWJsZSogaW4gdGhlIGZpcnN0IHBsYWNlLlxuXG5Ib2xkIG9uLCBsZXQgbWUgY2hlY2sgdGhhdCBwYXRjaC4uLiBBaCwgaXQgd2FzIGF1dGhvcmVkIGJ5IHRoZSBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgIGFjY291bnQuIEJ1dCB0aGlzIGlzbid0IGEgc21va2luZyBndW4uIFRoZSBjb21taXQgbWVzc2FnZSByZWFkczogXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIi4gVGhpcyBpcyBqdXN0IGEgYm9pbGVycGxhdGUgbWVzc2FnZSB0aGF0IHRoZSBwYXRjaCBhcHBsaWNhdGlvbiBzeXN0ZW0gYWRkcy4gSXQgZGVmaW5pdGVseSAqZG9lc24ndCogbWVhbiBTeXprYWxsZXIgZm91bmQgYSB2dWxuZXJhYmlsaXR5IGhlcmUuIFRoZSBzeXN0ZW0gYXBwbGllZCBpdCBmb3IgbXkgcmV2aWV3LiBJIHNob3VsZG4ndCBqdW1wIHRvIGNvbmNsdXNpb25zLlxuXG5BbHJpZ2h0LCBiYWNrIHRvIHRoZSBxdWVzdGlvbiBvZiByZWFjaGFiaWxpdHkuIENvdWxkIEkgcG9zc2libHkgZnV6eiBgaWF2ZmAgb3IgYGljZWAgc29tZWhvdz8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSBhIGhhcmQgbm8uIFRoZXkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbiBjb3JyZWN0bHksIG1lYW5pbmcgdGhvc2UgY29kZSBwYXRocyBhcmUgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCBsaWtlIEdDRSBvciBRRU1VLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjay4gSSdsbCB2ZXJpZnkgaWYgYGlhdmZgIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gc29tZSB2aXJ0dWFsIGJ1cyBvciBzb2Z0d2FyZS4gT2theSwgdGhhdCBjb25maXJtcyBpdDogYGlhdmZgIGlzIGEgUENJIGRyaXZlci4gVGhpcyBtZWFucyBpdCByZWxpZXMgb24gZGlyZWN0IGhhcmR3YXJlIGludGVyYWN0aW9uIGFuZCBpc24ndCByZWxldmFudCBmb3IgUUVNVSBmdXp6aW5nLiBUaGlzIGlzIHNvbWV0aGluZyBJIHNob3VsZCBoYXZlIHJlbWVtYmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTAzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjM2LjcxNzgxNzU5M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMjMxNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYz01NjY4PXN0YXRpYyBpbnQgX19pbml0IGlhdmZfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTY3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjU2NzQ6XFx0cmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmlhdmZfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jLTU2NzUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDozNi44NzAwNTY4OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTU4MDgzNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVmlhYmlsaXR5IG9mIGBpYXZmYCBhbmQgYGxpYmV0aGAgQ2hhbmdlcyBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgUENJIGRyaXZlciBJJ20gbG9va2luZyBhdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQsIFFFTVUsIGV2ZW4gKnN1cHBvcnRzKiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFib3V0IHdoZXRoZXIgUUVNVSBlbXVsYXRlcyBgaWF2ZmAgb3IgYGk0MGVgLiBOb3BlLCBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZG8gYGlhdmZgLCBhbmQgd2hpbGUgdGhlcmUgbWlnaHQgYmUgc29tZSBvdXQtb2YtdHJlZSBwYXRjaGVzIGZvciBgaTQwZWAsIGl0J3Mgbm90IGEgc3RhbmRhcmQgZmVhdHVyZS5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgbXkga25vd2xlZGdlIG9mIHdoYXQgKmlzKiBlbXVsYXRlZCBpbiBRRU1VLiBSaWdodCwgaXQgZG9lcyBgZTEwMDBgLCBgZTEwMDBlYCwgYGlnYmAsIGBydGw4MTM5YCwgYHZpcnRpby1uZXRgLCBgdm14bmV0M2AsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGBpODI1NTllcmAsIGFuZCBgdHVsaXBgLiBPa2F5LCB0aGF0J3MgYSBnb29kIG1lbnRhbCBjaGVja2xpc3QuIFdhaXQsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBgaTQwZWAsIGp1c3QgdG8gYmUgY2VydGFpbi4gSSBjYW4ndCBpbW1lZGlhdGVseSBjaGVjayBRRU1VJ3Mgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkga25vdyBgaWdiYCB3YXMgYWRkZWQgc29tZXdoYXQgcmVjZW50bHksIG1lYW5pbmcsIHRoYXQgaWYgYGk0MGVgIGlzbid0IGluIHN0YW5kYXJkIFFFTVUgeWV0LCB0aGVuIGl0IG1heSBiZSB3b3J0aCByZXZpc2l0aW5nIHRoYXQgY29kZSBiYXNlLlxuXG5Ob3csIGV2ZW4gaWYgYGk0MGVgICp3ZXJlKiBlbXVsYXRlZCwgYGlhdmZgIGlzIHRoZSBWRiBkcml2ZXIsIGFuZCBlbXVsYXRpbmcgU1ItSU9WIGFuZCBWRnMgaXMgdXN1YWxseSBub3QgZG9uZSBpbiBzdGFuZGFyZCBRRU1VIGZvciB0aGVzZSBkZXZpY2VzLCBldmVuIHRob3VnaCBgaWdiYCBkb2VzIGhhdmUgc29tZSBTUi1JT1Ygc3VwcG9ydC4gQnV0IGBpYXZmYCBpcyBzcGVjaWZpY2FsbHkgZm9yIEludGVsIDcwMCBTZXJpZXMgKGk0MGUpIGFuZCA4MDAgU2VyaWVzIChpY2UpIFZGcy5cblxuU2luY2UgYGlhdmZgIHJlcXVpcmVzIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0J3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoaXMgZmFsbHMgdW5kZXIgdGhlIGNhdGVnb3J5IG9mLCBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5Ob3csIHRoZSBleGFtcGxlICpkb2Vzbid0KiBleHBsaWNpdGx5IGxpc3Qgc3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVycywgYnV0IHRoZSBvdmVyYXJjaGluZyBwcmluY2lwbGUgaXMgXCJyZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgSXMgYW4gSW50ZWwgRXRoZXJuZXQgTklDIGEgXCJwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIj8gWWVzLCBpdCBpcy5cblxuVGhlcmVmb3JlLCBjaGFuZ2VzIHRvIGBpYXZmYCBhbmQgYGxpYmV0aGAgKHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGVzZSBJbnRlbCBkcml2ZXJzKSBhcmUgbm90IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBsaWJldGhgIGlzIG5vdCB1c2VkIGJ5IGFueXRoaW5nIGVsc2UgdGhvdWdoLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODg3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjQ1LjgyODE0Mzc3NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5NDE3NTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpYmV0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTg4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfSU5URUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTk6c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTElCRVRIKSArPSBsaWJldGgvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvTWFrZWZpbGUtNy1vYmoteSArPSBsaWJpZS9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM9MTc0Mj1zdGF0aWMgaW5saW5lIHZvaWQgaTQwZV9yeF9jaGVja3N1bShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc0NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxNzQ2OlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NDctXFx0dTMyIHJ4X2Vycm9yLCByeF9zdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NTctXFx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHB0eXBlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3NTg6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2NoZWNrc3VtKHZzaS1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NTktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xNzY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTc2ODpcXHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxNzY5OlxcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jPTE4MTQ9c3RhdGljIGlubGluZSB2b2lkIGk0MGVfcnhfaGFzaChzdHJ1Y3QgaTQwZV9yaW5nICpyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODE4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE4MTk6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyMC1cXHR1MzIgaGFzaDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyNS1cXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocnhfcHR5cGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgyNjpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyaW5nLVxcdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyNy1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MzAtXFx0XFx0aGFzaCA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2MtXFx1MDAzZXdiLnF3b3JkMC5oaV9kd29yZC5yc3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgzMTpcXHRcXHRsaWJldGhfcnhfcHRfc2V0X2hhc2goc2tiLCBoYXNoLCBkZWNvZGVkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MzItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03MTE9c3RhdGljIHZvaWQgaWF2Zl9jbGVhbl9yeF9yaW5nKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTcyMy1cXHRmb3IgKHUzMiBpID0gcnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbjsgaSAhPSByeF9yaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTsgKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3MjQ6XFx0XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXMgPSBcXHUwMDI2cnhfcmluZy1cXHUwMDNlcnhfZnFlc1tpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTcyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjcyNjpcXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KHJ4X2ZxZXMtXFx1MDAzZW5ldG1lbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03MjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTc0Mj12b2lkIGlhdmZfZnJlZV9yeF9yZXNvdXJjZXMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3NDQ6XFx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0NS1cXHRcXHQuZnFlc1xcdD0gcnhfcmluZy1cXHUwMDNlcnhfZnFlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzU3OlxcdGxpYmV0aF9yeF9mcV9kZXN0cm95KFxcdTAwMjZmcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NTgtXFx0cnhfcmluZy1cXHUwMDNlcnhfZnFlcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTc2OD1pbnQgaWF2Zl9zZXR1cF9yeF9kZXNjcmlwdG9ycyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzY5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc3MDpcXHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzcxLVxcdFxcdC5jb3VudFxcdFxcdD0gcnhfcmluZy1cXHUwMDNlY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc3NzpcXHRyZXQgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFxcdTAwMjZmcSwgXFx1MDAyNnJ4X3JpbmctXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc3OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04MDUtZXJyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6ODA2OlxcdGxpYmV0aF9yeF9mcV9kZXN0cm95KFxcdTAwMjZmcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04MDctXFx0cnhfcmluZy1cXHUwMDNlcnhfZnFlcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTg1OT1ib29sIGlhdmZfYWxsb2NfcnhfYnVmZmVycyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCB1MTYgY2xlYW5lZF9jb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTg2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4NjE6XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTg2Mi1cXHRcXHQucHBcXHRcXHQ9IHJ4X3JpbmctXFx1MDAzZXBwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4Nzk6XFx0XFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcXHUwMDI2ZnEsIG50dSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04ODAtXFx0XFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTkyNT1zdGF0aWMgdm9pZCBpYXZmX3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5MjY6XFx0XFx0XFx0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkyNzpcXHRcXHRcXHQgc3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTkyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTkzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkzNzpcXHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZF9wdCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5Mzg6XFx0aXB2NiA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWRfcHQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzUtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTc2OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3J4X2NzdW1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk3Ny1pYXZmX2xlZ2FjeV9yeF9jc3VtKGNvbnN0IHN0cnVjdCBpYXZmX3ZzaSAqdnNpLCB1NjQgcXcxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTc4OlxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05Nzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTgwOlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjk4MjpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVxcdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTgzLVxcdFxcdHJldHVybiBjc3VtX2JpdHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDUtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAwNjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA3LWlhdmZfZmxleF9yeF9jc3VtKGNvbnN0IHN0cnVjdCBpYXZmX3ZzaSAqdnNpLCB1NjQgcXcxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAwODpcXHRcXHQgIGNvbnN0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMDpcXHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMjpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVxcdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMy1cXHRcXHRyZXR1cm4gY3N1bV9iaXRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMDM3PXN0YXRpYyB2b2lkIGlhdmZfbGVnYWN5X3J4X2hhc2goY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcmluZywgX19sZTY0IHF3MCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMzgtXFx0XFx0XFx0XFx0X19sZTY0IHF3MSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwMzk6XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDQ0OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXFx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0OC1cXHRcXHRoYXNoID0gbGU2NF9nZXRfYml0cyhxdzAsIElBVkZfUlhEX0xFR0FDWV9SU1NfTSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDQ5OlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWRfcHQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA1MC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEwNjM9c3RhdGljIHZvaWQgaWF2Zl9mbGV4X3J4X2hhc2goY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcmluZywgX19sZTY0IHF3MSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNjQtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNjU6XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDcwOlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXFx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDcxLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA3NS1cXHRcXHRoYXNoID0gbGU2NF9nZXRfYml0cyhxdzEsIElBVkZfUlhEX0ZMRVhfUlNTX0hBU0hfTSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDc2OlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWRfcHQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA3Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTExMzE9c3RhdGljIHZvaWQgaWF2Zl9wcm9jZXNzX3NrYl9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTEzNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMTM2OlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMTM3OlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTExMzgtXFx0X19sZTY0IHF3MCA9IHJ4X2Rlc2MtXFx1MDAzZXF3MDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTE5Nz1zdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTE5ODpcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWZmZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTk5LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEyMTc9c3RhdGljIHN0cnVjdCBza19idWZmICppYXZmX2J1aWxkX3NrYihjb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEyMTg6XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyMTktXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEyNTQ9c3RhdGljIGJvb2wgaWF2Zl9pc19ub25fZW9wKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjU1OlxcdFxcdFxcdCAgICBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyNTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjg2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTI4NzpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI4OC1pYXZmX2V4dHJhY3RfbGVnYWN5X3J4X2ZpZWxkcyhjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjkzLVxcdHU2NCBxdzIgPSBsZTY0X3RvX2NwdShyeF9kZXNjLVxcdTAwM2VxdzIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTI5NDpcXHRzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTUtXFx0Ym9vbCBsMnRhZzFwLCBsMnRhZzJwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzMyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTMzMzpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTMzNC1pYXZmX2V4dHJhY3RfZmxleF9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTMzNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzM3OlxcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM4LVxcdHU2NCBxdzAgPSBsZTY0X3RvX2NwdShyeF9kZXNjLVxcdTAwM2VxdzApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTM2NjpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM2Ny1pYXZmX2V4dHJhY3RfcnhfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEzODk9c3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzk4LVxcdHdoaWxlIChsaWtlbHkodG90YWxfcnhfcGFja2V0cyBcXHUwMDNjICh1bnNpZ25lZCBpbnQpYnVkZ2V0KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTM5OTpcXHRcXHRzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjE0MDA6XFx0XFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTE0MDEtXFx0XFx0c3RydWN0IGlhdmZfcnhfZGVzYyAqcnhfZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTQzMC1cXHRcXHRyeF9idWZmZXIgPSBcXHUwMDI2cnhfcmluZy1cXHUwMDNlcnhfZnFlc1tyeF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjE0MzE6XFx0XFx0aWYgKCFfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDMyLVxcdFxcdFxcdGdvdG8gc2tpcF9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaD0yMTg9c3RydWN0IGlhdmZfcmluZyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5oLTIyNi1cXHR1bmlvbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaDoyMjc6XFx0XFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaC0yMjgtXFx0XFx0c3RydWN0IGlhdmZfdHhfYnVmZmVyICp0eF9iaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jPTYwNz1zdGF0aWMgaW50IGljZV9yeHFfcHBfY3JlYXRlKHN0cnVjdCBpY2VfcnhfcmluZyAqcnEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjA4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MDk6XFx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTAtXFx0XFx0LmNvdW50XFx0XFx0PSBycS1cXHUwMDNlY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM6NjE4OlxcdGVyciA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXFx1MDAyNmZxLCBcXHUwMDI2cnEtXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MzA6XFx0ZnEgPSAoc3RydWN0IGxpYmV0aF9mcSl7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjMxLVxcdFxcdC5jb3VudFxcdFxcdD0gcnEtXFx1MDAzZWNvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYzNzpcXHRlcnIgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFxcdTAwMjZmcSwgXFx1MDAyNnJxLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjM4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMi0jaW5jbHVkZSBcXHUwMDNjbmV0L2RjYm5sLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6MTM6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgvcnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jPTEyMzI9c3RhdGljIGludCBpY2VfbGJ0ZXN0X3JlY2VpdmVfZnJhbWVzKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMjMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzoxMjM0OlxcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtMTIzNS1cXHRpbnQgdmFsaWRfZnJhbWVzLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldC9pbnRlbC9saWJpZS9yeC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjExOiNpbmNsdWRlIFxcdTAwM2NuZXQvbGliZXRoL3hkcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyLSNpbmNsdWRlIFxcdTAwM2NuZXQvZHNmaWVsZC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9MTE0PWljZV91bm1hcF9hbmRfZnJlZV90eF9idWYoc3RydWN0IGljZV90eF9yaW5nICpyaW5nLCBzdHJ1Y3QgaWNlX3R4X2J1ZiAqdHhfYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI5LVxcdGNhc2UgSUNFX1RYX0JVRl9YRFBfVFg6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTMwOlxcdFxcdGxpYmV0aF94ZHBfcmV0dXJuX3ZhKHR4X2J1Zi1cXHUwMDNlcmF3X2J1ZiwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTUxMj12b2lkIGljZV9yeHFfcHBfZGVzdHJveShzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUxMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTE0OlxcdHN0cnVjdCBsaWJldGhfZnEgZnEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTE1LVxcdFxcdC5mcWVzXFx0PSBycS1cXHUwMDNlcnhfZnFlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1MTk6XFx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXFx1MDAyNmZxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjAtXFx0cnEtXFx1MDAzZXJ4X2ZxZXMgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjUyOTpcXHRsaWJldGhfcnhfZnFfZGVzdHJveShcXHUwMDI2ZnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUzMC1cXHRycS1cXHUwMDNlaGRyX2ZxZXMgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTM4PXZvaWQgaWNlX2NsZWFuX3J4X3Jpbmcoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjU1MTpcXHRsaWJldGhfeGRwX3JldHVybl9zdGFzaChcXHUwMDI2cnhfcmluZy1cXHUwMDNleGRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTQtXFx0Zm9yICh1MzIgaSA9IHJ4X3JpbmctXFx1MDAzZW5leHRfdG9fY2xlYW47IGkgIT0gcnhfcmluZy1cXHUwMDNlbmV4dF90b191c2U7ICkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjU1NTpcXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KHJ4X3JpbmctXFx1MDAzZXJ4X2ZxZXNbaV0ubmV0bWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU3LVxcdFxcdGlmIChyeF9yaW5nLVxcdTAwM2VoZHJfcHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTU4OlxcdFxcdFxcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfcmluZy1cXHUwMDNlaGRyX2ZxZXNbaV0ubmV0bWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz02NTE9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjY1MjppY2VfcnVuX3hkcChzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy02NTMtXFx0ICAgIHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2csIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy02ODktXFx0Y2FzZSBYRFBfRFJPUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo2OTA6XFx0XFx0bGliZXRoX3hkcF9yZXR1cm5fYnVmZih4ZHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY5MS1cXHRcXHRyZXQgPSBJQ0VfWERQX0NPTlNVTUVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9ODI1PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCB1bnNpZ25lZCBpbnQgY2xlYW5lZF9jb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjgyNzpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGhkcl9mcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MjgtXFx0XFx0LnBwXFx0XFx0PSByeF9yaW5nLVxcdTAwM2VoZHJfcHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MzItXFx0fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4MzM6XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MzQtXFx0XFx0LnBwXFx0XFx0PSByeF9yaW5nLVxcdTAwM2VwcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NTI6XFx0XFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcXHUwMDI2ZnEsIG50dSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODUzLVxcdFxcdGlmIChhZGRyID09IERNQV9NQVBQSU5HX0VSUk9SKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODY2OlxcdFxcdGFkZHIgPSBsaWJldGhfcnhfYWxsb2MoXFx1MDAyNmhkcl9mcSwgbnR1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NjctXFx0XFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NzA6XFx0XFx0XFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhmcS5mcWVzW250dV0ubmV0bWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NzEtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz05NDY9c3RhdGljIGludCBpY2VfY2xlYW5fcnhfaXJxKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTk1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5NTg6XFx0bGliZXRoX3hkcF9pbml0X2J1ZmYoeGRwLCBcXHUwMDI2cnhfcmluZy1cXHUwMDNleGRwLCBcXHUwMDI2cnhfcmluZy1cXHUwMDNleGRwX3J4cSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTY4LVxcdFxcdHVuaW9uIGljZV8zMmJfcnhfZmxleF9kZXNjICpyeF9kZXNjO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjk2OTpcXHRcXHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTk3MC1cXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMC1cXHRcXHRyeF9idWYgPSBcXHUwMDI2cnhfcmluZy1cXHUwMDNlaGRyX2ZxZXNbbnRjXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDExOlxcdFxcdGxpYmV0aF94ZHBfcHJvY2Vzc19idWZmKHhkcCwgcnhfYnVmLCBzaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDEyLVxcdFxcdHJ4X2J1Zi1cXHUwMDNlbmV0bWVtID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwMjEtXFx0XFx0cnhfYnVmID0gXFx1MDAyNnJ4X3JpbmctXFx1MDAzZXJ4X2ZxZXNbbnRjXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDIyOlxcdFxcdGxpYmV0aF94ZHBfcHJvY2Vzc19idWZmKHhkcCwgcnhfYnVmLCBzaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA0OC1cXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwNDk6XFx0XFx0XFx0bGliZXRoX3hkcF9yZXR1cm5fYnVmZl9zbG93KHhkcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA1MC1cXHRcXHRcXHRpY2Vfc3RhdHNfaW5jKHJ4X3JpbmctXFx1MDAzZXJpbmdfc3RhdHMsIHJ4X2J1Zl9mYWlsZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDc3OlxcdGxpYmV0aF94ZHBfc2F2ZV9idWZmKFxcdTAwMjZyeF9yaW5nLVxcdTAwM2V4ZHAsIHhkcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6NzojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC90eXBlcy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaD0yNzc9c3RydWN0IGljZV9yeF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTI4NS1cXHR1bmlvbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6Mjg2OlxcdFxcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9mcWVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTI4Ny1cXHRcXHRzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHBfYnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAwLVxcdHN0cnVjdCBwYWdlX3Bvb2wgKmhkcl9wcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMDE6XFx0c3RydWN0IGxpYmV0aF9mcWUgKmhkcl9mcWVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMxNy1cXHR1bmlvbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzE4OlxcdFxcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmZfc3Rhc2ggeGRwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjMxOTpcXHRcXHRzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4c2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzIwLVxcdH07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNS0jaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjY6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveGRwLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NjU9aWNlX3J4X2hhc2hfdG9fc2tiKGNvbnN0IHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy02OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjY5OlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzAtXFx0dTMyIGhhc2g7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzItXFx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHJ4X3B0eXBlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NzM6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcmluZy1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc3LVxcdGlmIChsaWtlbHkoaGFzaCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjc4OlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03OS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9MTA4PWljZV9yeF9jc3VtKHN0cnVjdCBpY2VfcnhfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzoxMTE6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTItXFx0dTE2IHJ4X3N0YXR1czAsIHJ4X3N0YXR1czE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTE4LVxcdGRlY29kZWQgPSBsaWJpZV9yeF9wdF9wYXJzZShwdHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjExOTpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocmluZy1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTIwLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjEzODpcXHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjEzOTpcXHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTE0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz0yNzE9aWNlX2NsZWFuX3hkcF90eF9idWYoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaWNlX3R4X2J1ZiAqdHhfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTI3NS1cXHRjYXNlIElDRV9UWF9CVUZfWERQX1RYOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzoyNzY6XFx0XFx0bGliZXRoX3hkcF9yZXR1cm5fdmEodHhfYnVmLVxcdTAwM2VyYXdfYnVmLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMjc3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTUyMz1zdGF0aWMgaW50IGljZV94ZHBfcnhfaHdfdHMoY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCB1NjQgKnRzX25zKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01MjQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1MjU6XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwX2V4dCA9ICh2b2lkICopY3R4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01MjYtXFx0c3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjUyODpcXHRyeF9yaW5nID0gbGliZXRoX3hkcF9idWZmX3RvX3JxKHhkcF9leHQsIHR5cGVvZigqcnhfcmluZyksIHhkcF9yeHEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01MjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTU2PXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9oYXNoKGNvbnN0IHN0cnVjdCB4ZHBfbWQgKmN0eCwgdTMyICpoYXNoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjU1OTpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz01Nzg9c3RhdGljIGludCBpY2VfeGRwX3J4X3ZsYW5fdGFnKGNvbnN0IHN0cnVjdCB4ZHBfbWQgKmN0eCwgX19iZTE2ICp2bGFuX3Byb3RvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjU4MTpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4Mi1cXHRzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTg0OlxcdHJ4X3JpbmcgPSBsaWJldGhfeGRwX2J1ZmZfdG9fcnEoeGRwX2V4dCwgdHlwZW9mKCpyeF9yaW5nKSwgeGRwX3J4cSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNS0jaW5jbHVkZSBcXHUwMDNjbGludXgvdW5yb2xsLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2OiNpbmNsdWRlIFxcdTAwM2NuZXQvbGliZXRoL3hkcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNy0jaW5jbHVkZSBcXHUwMDNjbmV0L3hkcF9zb2NrX2Rydi5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2MzI6XFx0XFx0KChzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICopZmlyc3QpLVxcdTAwM2VkZXNjID0gcnhfZGVzYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjc2LVxcdHJ4X3JpbmctXFx1MDAzZW5leHRfdG9fY2xlYW4gPSBudGM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2Nzc6XFx0cnhfcmluZy1cXHUwMDNleHNrID0gKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKilmaXJzdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTY3NT1zdHJ1Y3QgaWRwZl9hZGFwdGVyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3MDQ6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCAqc2luZ2xlcV9wdF9sa3VwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNTpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0ICpzcGxpdHFfcHRfbGt1cDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NDojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz0xODg9c3RhdGljIHZvaWQgaWRwZl90eF9zaW5nbGVxX2RtYV9tYXBfZXJyb3Ioc3RydWN0IGlkcGZfdHhfcXVldWUgKnR4cSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0xOTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoxOTI6XFx0c3RydWN0IGxpYmV0aF9zcV9uYXBpX3N0YXRzIHNzID0geyB9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoxOTM6XFx0c3RydWN0IGxpYmV0aF9jcV9wcCBjcCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtMTk0LVxcdFxcdC5kZXZcXHQ9IHR4cS1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTIwNi1cXHRcXHR0eF9idWYgPSBcXHUwMDI2dHhxLVxcdTAwM2V0eF9idWZbaWR4XTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6MjA3OlxcdFxcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFxcdTAwMjZjcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTIwOC1cXHRcXHRpZiAodHhfYnVmID09IGZpcnN0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTQ4MT1zdGF0aWMgYm9vbCBpZHBmX3R4X3NpbmdsZXFfY2xlYW4oc3RydWN0IGlkcGZfdHhfcXVldWUgKnR4X3EsIGludCBuYXBpX2J1ZGdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy00ODMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0ODQ6XFx0c3RydWN0IGxpYmV0aF9zcV9uYXBpX3N0YXRzIHNzID0geyB9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy00ODUtXFx0c3RydWN0IGlkcGZfYmFzZV90eF9kZXNjICp0eF9kZXNjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTQ4Ny1cXHRzMTYgbnRjID0gdHhfcS1cXHUwMDNlbmV4dF90b19jbGVhbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NDg4OlxcdHN0cnVjdCBsaWJldGhfY3FfcHAgY3AgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTQ4OS1cXHRcXHQuZGV2XFx0PSB0eF9xLVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNTI4LVxcdFxcdC8qIHVwZGF0ZSB0aGUgc3RhdGlzdGljcyBmb3IgdGhpcyBwYWNrZXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NTI5OlxcdFxcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFxcdTAwMjZjcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTUzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01NDItXFx0XFx0XFx0LyogdW5tYXAgYW55IHJlbWFpbmluZyBwYWdlZCBkYXRhICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjU0MzpcXHRcXHRcXHRsaWJldGhfdHhfY29tcGxldGUodHhfYnVmLCBcXHUwMDI2Y3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01NDQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTY0OT1zdGF0aWMgdm9pZCBpZHBmX3J4X3NpbmdsZXFfY3N1bShzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTAtXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY1MTpcXHRcXHRcXHRcXHQgc3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjUyOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjU2LVxcdC8qIGNoZWNrIGlmIFJ4IGNoZWNrc3VtIGlzIGVuYWJsZWQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjU3OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bShyeHEtXFx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY2NDpcXHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY2NTpcXHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTYtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3MTc6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTgtaWRwZl9yeF9zaW5nbGVxX2Jhc2VfY3N1bShjb25zdCB1bmlvbiB2aXJ0Y2hubDJfcnhfZGVzYyAqcnhfZGVzYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzIwOlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7IH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcyMS1cXHR1MzIgcnhfZXJyb3IsIHJ4X3N0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTEtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3NTI6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTMtaWRwZl9yeF9zaW5nbGVxX2ZsZXhfY3N1bShjb25zdCB1bmlvbiB2aXJ0Y2hubDJfcnhfZGVzYyAqcnhfZGVzYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzU0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzU1OlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7IH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1Ni1cXHR1MTYgcnhfc3RhdHVzMCwgcnhfc3RhdHVzMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz03ODk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2Jhc2VfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTEtXFx0XFx0XFx0XFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc5MjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3OTY6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcS1cXHUwMDNleGRwX3J4cS5kZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODA1OlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MDYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTgxOT1zdGF0aWMgdm9pZCBpZHBmX3J4X3NpbmdsZXFfZmxleF9oYXNoKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeF9xLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgyMS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCB1bmlvbiB2aXJ0Y2hubDJfcnhfZGVzYyAqcnhfZGVzYyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODIyOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODIzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODI0OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJ4X3EtXFx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODI1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjgzMTpcXHRcXHRsaWJldGhfcnhfcHRfc2V0X2hhc2goc2tiLCBoYXNoLCBkZWNvZGVkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODMyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz04NDg9X19pZHBmX3J4X3NpbmdsZXFfcHJvY2Vzc19za2JfZmllbGRzKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeF9xLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTg1Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjg1MzpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQgPSByeF9xLVxcdTAwM2VyeF9wdHlwZV9sa3VwW3B0eXBlXTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjQ6NDYuMDM3NTg5NjcyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNDUxMzQyMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXNuJ3QgZnV6emFibGUgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgYW5kIEknbSBjb25maWRlbnQgaW4gdGhhdCBjb25jbHVzaW9uLiBGaXJzdCwgSSBrbm93IHRoYXQgYGxpYmV0aGAgaXMgZXhjbHVzaXZlbHkgdXNlZCBieSBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLiBUaGUgcGF0Y2ggdG91Y2hlcyBib3RoIGBpYXZmX3R4cnguY2AgYW5kIGBpbmNsdWRlL25ldC9saWJldGgvcnguaGAuIFNpbmNlIGBpYXZmYCBhbmQgYGxpYmV0aGAgYXJlIGJvdGggSW50ZWwtc3BlY2lmaWMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgdGhlIGBkcml2ZXJzL25ldC9gIGRpcmVjdG9yeSBhbmQgY29uZmlybWVkIOKAkyBubyBvdGhlciBkcml2ZXJzIHV0aWxpemUgYGxpYmV0aGAsIGl0J3Mgc3RyaWN0bHkgSW50ZWwgRXRoZXJuZXQuIEFuZCBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLCBsaWtlIGBpNDBlYCwgYGlhdmZgLCBgaWNlYCwgYW5kIGBpZHBmYCwgaW5oZXJlbnRseSBkZXBlbmQgb24gcGh5c2ljYWwgaGFyZHdhcmUsIG5vdCB0aGUgZW11bGF0ZWQgbmV0d29yayBjYXJkcyBhdmFpbGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gVGhlcmVmb3JlLCBhbnkgY29kZSBtb2RpZmljYXRpb25zIHdpdGhpbiB0aG9zZSBkcml2ZXJzIGFyZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuSSBkaWQsIGhvd2V2ZXIsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBpYXZmYCBjb3VsZCBub3QgYmUgZnV6emVkIGluIGEgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlLiBJIHJlbWVtYmVyZWQgdGhhdCBzeXprYWxsZXIgaGFzIHNvbWUgbWVjaGFuaXNtcyBmb3IgZnV6emluZyBQQ0kgZGV2aWNlcyB2aWEgYHN5el9wY2lfZGV2aWNlYCwgYnV0IHRoYXQgd291bGQgZGVwZW5kIG9uIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIFBDSSBkZXZpY2UncyBCQVJzIGFuZCByZWdpc3RlcnMuIEV2ZW4gaWYgdGhhdCB3ZXJlIHBvc3NpYmxlLCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgcGF0Y2hlcyBtb2RpZnlpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG5vdCB0byBiZSBjb25zaWRlcmVkIGZ1enphYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBpcyB2ZXJ5IGNsZWFyOiB0aGlzIGluY2x1ZGVzIGRyaXZlcnMgbGlrZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzIChgaWF2ZmAsIGBpY2VgLCBldGMuKS4gVGhlc2UgSW50ZWwgZHJpdmVycyAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBwYXRjaCBoaXRzIHRoYXQgc3BlY2lmaWMgZXhjbHVzaW9uIGNyaXRlcmlhIGRpcmVjdGx5LlxuXG5HaXZlbiBhbGwgb2YgdGhhdCwgSSBjYW4gZGVmaW5pdGl2ZWx5IHN0YXRlIHRoYXQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCksIHdoaWNoIGFyZSBib3RoIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHBoeXNpY2FsIEludGVsIG5ldHdvcmsgaGFyZHdhcmUsIGFuZCBub3QgZW11bGF0ZWQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhhdCdzIG15IHJlYXNvbmluZy5cblxuTXkgZmluYWwgcmVwb3J0IHdpbGwgYmU6XG4qICAgUmVhc29uaW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cbiogICBXb3J0aEZ1enppbmc6IGZhbHNlXG4qICAgRm9jdXNTeW1ib2xzOiBcXFsgXVxuKiAgIEVuYWJsZUNvbmZpZ3M6IFxcWyBdXG5cbkkgY2FuIG5vdyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjQyLCJPdXRwdXRUb2tlbnMiOjk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjU2LjQ4ODkzNDkzNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIChpYXZmKSBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBJbnRlbCBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpLiBUaGVzZSBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgSW50ZWwgbmV0d29yayBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiAoaWF2ZikgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgSW50ZWwgRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKS4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEludGVsIG5ldHdvcmsgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowh2949[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-01 19:21:26 +0000 UTC FinishedAt: 2026-08-01 19:24:57 +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+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIChpYXZmKSBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBJbnRlbCBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpLiBUaGVzZSBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgSW50ZWwgbmV0d29yayBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMmJmNTZlZjMxNDI2ZjUwYTQ4ZTg1MTNjYzUzNWQzOGYyMjU5NzE4MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDEgMTk6MjM6MzYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmNcbmluZGV4IGMzMGFiZjE3Y2Y1ZDMuLjlkYzVmMDc2MWQ4YmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXG5AQCAtMTE4NCw2ICYjNDM7MTE4NCw3IEBAIHN0YXRpYyBib29sIGlhdmZfY2xlYW51cF9oZWFkZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IpXG4gXG4gLyoqXG4gICogaWF2Zl9hZGRfcnhfZnJhZyAtIEFkZCBjb250ZW50cyBvZiBSeCBidWZmZXIgdG8gc2tfYnVmZlxuJiM0MzsgKiBAcHA6IHBhZ2UgcG9vbCB0aGUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgZnJvbVxuICAqIEBza2I6IHNrX2J1ZmYgdG8gcGxhY2UgdGhlIGRhdGEgaW50b1xuICAqIEByeF9idWZmZXI6IGJ1ZmZlciBjb250YWluaW5nIHBhZ2UgdG8gYWRkXG4gICogQHNpemU6IHBhY2tldCBsZW5ndGggZnJvbSByeF9kZXNjXG5AQCAtMTE5MywxMSAmIzQzOzExOTQsMTEgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgKlxuICAqIFRoZSBmdW5jdGlvbiB3aWxsIHRoZW4gdXBkYXRlIHRoZSBwYWdlIG9mZnNldC5cbiAgKiovXG4tc3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuJiM0MztzdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRcdCAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcbiBcdFx0XHQgICAgIHVuc2lnbmVkIGludCBzaXplKVxuIHtcbi1cdHUzMiBociA9IG5ldG1lbV9nZXRfcHAocnhfYnVmZmVyLVx1MDAzZW5ldG1lbSktXHUwMDNlcC5vZmZzZXQ7XG4mIzQzO1x0dTMyIGhyID0gcHAtXHUwMDNlcC5vZmZzZXQ7XG4gXG4gXHRza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHNrYiwgc2tiX3NoaW5mbyhza2IpLVx1MDAzZW5yX2ZyYWdzLFxuIFx0XHRcdCAgICAgICByeF9idWZmZXItXHUwMDNlbmV0bWVtLCByeF9idWZmZXItXHUwMDNlb2Zmc2V0ICYjNDM7IGhyLFxuQEAgLTEyMDYsMTcgJiM0MzsxMjA3LDE5IEBAIHN0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcbiAvKipcbiAgKiBpYXZmX2J1aWxkX3NrYiAtIEJ1aWxkIHNrYiBhcm91bmQgYW4gZXhpc3RpbmcgYnVmZmVyXG4mIzQzOyAqIEBwcDogcGFnZSBwb29sIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCBmcm9tXG4gICogQHJ4X2J1ZmZlcjogUnggYnVmZmVyIHRvIHB1bGwgZGF0YSBmcm9tXG4gICogQHNpemU6IHNpemUgb2YgYnVmZmVyIHRvIGFkZCB0byBza2JcbiAgKlxuICAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGFuIHNrYiBhcm91bmQgYW4gZXhpc3RpbmcgUnggYnVmZmVyLCB0YWtpbmcgY2FyZVxuICAqIHRvIHNldCB1cCB0aGUgc2tiIGNvcnJlY3RseSBhbmQgYXZvaWQgYW55IG1lbWNweSBvdmVyaGVhZC5cbiAgKi9cbi1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlhdmZfYnVpbGRfc2tiKGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWZmZXIsXG4mIzQzO3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXG4mIzQzO1x0XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcbiBcdFx0XHRcdCAgICAgIHVuc2lnbmVkIGludCBzaXplKVxuIHtcbiBcdHN0cnVjdCBwYWdlICpidWZfcGFnZSA9IF9fbmV0bWVtX3RvX3BhZ2UocnhfYnVmZmVyLVx1MDAzZW5ldG1lbSk7XG4tXHR1MzIgaHIgPSBwcF9wYWdlX3RvX25tZGVzYyhidWZfcGFnZSktXHUwMDNlcHAtXHUwMDNlcC5vZmZzZXQ7XG4mIzQzO1x0dTMyIGhyID0gcHAtXHUwMDNlcC5vZmZzZXQ7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuIFx0dm9pZCAqdmE7XG4gXG5AQCAtMTM4Nyw2ICYjNDM7MTM5MCw3IEBAIHN0YXRpYyBpbnQgaWF2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcbiB7XG4gXHRib29sIGZsZXggPSByeF9yaW5nLVx1MDAzZXJ4ZGlkID09IFZJUlRDSE5MX1JYRElEXzJfRkxFWF9TUV9OSUM7XG4gXHR1bnNpZ25lZCBpbnQgdG90YWxfcnhfYnl0ZXMgPSAwLCB0b3RhbF9yeF9wYWNrZXRzID0gMDtcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwcCA9IHJ4X3JpbmctXHUwMDNlcHA7XG4gXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcnhfcmluZy1cdTAwM2Vza2I7XG4gXHR1MTYgY2xlYW5lZF9jb3VudCA9IElBVkZfREVTQ19VTlVTRUQocnhfcmluZyk7XG4gXHRib29sIGZhaWx1cmUgPSBmYWxzZTtcbkBAIC0xNDI0LDE0ICYjNDM7MTQyOCwxNCBAQCBzdGF0aWMgaW50IGlhdmZfY2xlYW5fcnhfaXJxKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIGludCBidWRnZXQpXG4gXHRcdGlhdmZfdHJhY2UoY2xlYW5fcnhfaXJxLCByeF9yaW5nLCByeF9kZXNjLCBza2IpO1xuIFxuIFx0XHRyeF9idWZmZXIgPSBcdTAwMjZyeF9yaW5nLVx1MDAzZXJ4X2ZxZXNbcnhfcmluZy1cdTAwM2VuZXh0X3RvX2NsZWFuXTtcbi1cdFx0aWYgKCFsaWJldGhfcnhfc3luY19mb3JfY3B1KHJ4X2J1ZmZlciwgZmllbGRzLmxlbikpXG4mIzQzO1x0XHRpZiAoIV9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKSlcbiBcdFx0XHRnb3RvIHNraXBfZGF0YTtcbiBcbiBcdFx0LyogcmV0cmlldmUgYSBidWZmZXIgZnJvbSB0aGUgcmluZyAqL1xuIFx0XHRpZiAoc2tiKVxuLVx0XHRcdGlhdmZfYWRkX3J4X2ZyYWcoc2tiLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pO1xuJiM0MztcdFx0XHRpYXZmX2FkZF9yeF9mcmFnKHBwLCBza2IsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XG4gXHRcdGVsc2Vcbi1cdFx0XHRza2IgPSBpYXZmX2J1aWxkX3NrYihyeF9idWZmZXIsIGZpZWxkcy5sZW4pO1xuJiM0MztcdFx0XHRza2IgPSBpYXZmX2J1aWxkX3NrYihwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKTtcbiBcbiBcdFx0LyogZXhpdCBpZiB3ZSBmYWlsZWQgdG8gcmV0cmlldmUgYSBidWZmZXIgKi9cbiBcdFx0aWYgKCFza2IpIHtcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgvcnguaCBiL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXG5pbmRleCA1ZDk5MTQwNDg0NWU2Li5mZGRhYzA4NGUwMDFlIDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXG5AQCAtMTE4LDM2ICYjNDM7MTE4LDUxIEBAIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBsaWJldGhfcnhfYWxsb2MoY29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCAqZnEsIHUzMiBpKVxuIHZvaWQgbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW1fcmVmIG5ldG1lbSk7XG4gXG4gLyoqXG4tICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXG4mIzQzOyAqIF9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXG4mIzQzOyAqIEBwb29sOiBcdTAwMjZwYWdlX3Bvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cbiAgKiBAZnFlOiBidWZmZXIgdG8gcHJvY2Vzc1xuICAqIEBsZW46IGZyYW1lIGxlbmd0aCBmcm9tIHRoZSBkZXNjcmlwdG9yXG4gICpcbi0gKiBQcm9jZXNzIHRoZSBidWZmZXIgYWZ0ZXIgaXQmIzM5O3Mgd3JpdHRlbiBieSBIVy4gVGhlIHJlZ3VsYXIgcGF0aCBpcyB0b1xuLSAqIHN5bmNocm9uaXplIERNQSBmb3IgQ1BVLCBidXQgaW4gY2FzZSBvZiBubyBkYXRhIGl0IHdpbGwgYmUgaW1tZWRpYXRlbHlcbi0gKiByZWN5Y2xlZCBiYWNrIHRvIGl0cyBQUC5cbiYjNDM7ICogVmFyaWFudCBmb3IgY2FsbGVycyB3aGljaCBhbHJlYWR5IGtub3cgdGhlIGJ1ZmZlciYjMzk7cyBwb29sLCB0eXBpY2FsbHlcbiYjNDM7ICogdGhlaXIgUnggcXVldWUmIzM5O3MgZmlsbCBxdWV1ZSBwb29sLlxuICAqXG4gICogUmV0dXJuOiB0cnVlIHdoZW4gdGhlcmUmIzM5O3MgZGF0YSB0byBwcm9jZXNzLCBmYWxzZSBvdGhlcndpc2UuXG4gICovXG4tc3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcbi1cdFx0XHRcdFx0ICB1MzIgbGVuKVxuJiM0MztzdGF0aWMgaW5saW5lIGJvb2wgX19saWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wsXG4mIzQzO1x0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcbiYjNDM7XHRcdFx0XHRcdCAgICB1MzIgbGVuKVxuIHtcbi1cdG5ldG1lbV9yZWYgbmV0bWVtID0gZnFlLVx1MDAzZW5ldG1lbTtcbi1cbiBcdC8qIFZlcnkgcmFyZSwgYnV0IHBvc3NpYmxlIGNhc2UuIFRoZSBtb3N0IGNvbW1vbiByZWFzb246XG4gXHQgKiB0aGUgbGFzdCBmcmFnbWVudCBjb250YWluZWQgRkNTIG9ubHksIHdoaWNoIHdhcyB0aGVuXG4gXHQgKiBzdHJpcHBlZCBieSB0aGUgSFcuXG4gXHQgKi9cbiBcdGlmICh1bmxpa2VseSghbGVuKSkge1xuLVx0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KG5ldG1lbSk7XG4mIzQzO1x0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KGZxZS1cdTAwM2VuZXRtZW0pO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4tXHRwYWdlX3Bvb2xfZG1hX3N5bmNfbmV0bWVtX2Zvcl9jcHUobmV0bWVtX2dldF9wcChuZXRtZW0pLCBuZXRtZW0sXG4tXHRcdFx0XHRcdCAgZnFlLVx1MDAzZW9mZnNldCwgbGVuKTtcbiYjNDM7XHRwYWdlX3Bvb2xfZG1hX3N5bmNfbmV0bWVtX2Zvcl9jcHUocG9vbCwgZnFlLVx1MDAzZW5ldG1lbSwgZnFlLVx1MDAzZW9mZnNldCwgbGVuKTtcbiBcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbiYjNDM7LyoqXG4mIzQzOyAqIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxuJiM0MzsgKiBAZnFlOiBidWZmZXIgdG8gcHJvY2Vzc1xuJiM0MzsgKiBAbGVuOiBmcmFtZSBsZW5ndGggZnJvbSB0aGUgZGVzY3JpcHRvclxuJiM0MzsgKlxuJiM0MzsgKiBQcm9jZXNzIHRoZSBidWZmZXIgYWZ0ZXIgaXQmIzM5O3Mgd3JpdHRlbiBieSBIVy4gVGhlIHJlZ3VsYXIgcGF0aCBpcyB0b1xuJiM0MzsgKiBzeW5jaHJvbml6ZSBETUEgZm9yIENQVSwgYnV0IGluIGNhc2Ugb2Ygbm8gZGF0YSBpdCB3aWxsIGJlIGltbWVkaWF0ZWx5XG4mIzQzOyAqIHJlY3ljbGVkIGJhY2sgdG8gaXRzIFBQLlxuJiM0MzsgKlxuJiM0MzsgKiBSZXR1cm46IHRydWUgd2hlbiB0aGVyZSYjMzk7cyBkYXRhIHRvIHByb2Nlc3MsIGZhbHNlIG90aGVyd2lzZS5cbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBsaWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXG4mIzQzO1x0XHRcdFx0XHQgIHUzMiBsZW4pXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gX19saWJldGhfcnhfc3luY19mb3JfY3B1KG5ldG1lbV9nZXRfcHAoZnFlLVx1MDAzZW5ldG1lbSksIGZxZSwgbGVuKTtcbiYjNDM7fVxuJiM0MztcbiAvKiBDb252ZXJ0aW5nIGFic3RyYWN0IHBhY2tldCB0eXBlIG51bWJlcnMgaW50byBhIHNvZnR3YXJlIHN0cnVjdHVyZSB3aXRoXG4gICogdGhlIHBhY2tldCBwYXJhbWV0ZXJzIHRvIGRvIE8oMSkgbG9va3VwIG9uIFJ4LlxuICAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiAoaWF2ZikgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgSW50ZWwgRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKS4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEludGVsIG5ldHdvcmsgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDJiZjU2ZWYzMTQyNmY1MGE0OGU4NTEzY2M1MzVkMzhmMjI1OTcxODIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIzOjM2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMKaW5kZXggYzMwYWJmMTdjZjVkMy4uOWRjNWYwNzYxZDhiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jCkBAIC0xMTg0LDYgJiM0MzsxMTg0LDcgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAogLyoqCiAgKiBpYXZmX2FkZF9yeF9mcmFnIC0gQWRkIGNvbnRlbnRzIG9mIFJ4IGJ1ZmZlciB0byBza19idWZmCiYjNDM7ICogQHBwOiBwYWdlIHBvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb20KICAqIEBza2I6IHNrX2J1ZmYgdG8gcGxhY2UgdGhlIGRhdGEgaW50bwogICogQHJ4X2J1ZmZlcjogYnVmZmVyIGNvbnRhaW5pbmcgcGFnZSB0byBhZGQKICAqIEBzaXplOiBwYWNrZXQgbGVuZ3RoIGZyb20gcnhfZGVzYwpAQCAtMTE5MywxMSAmIzQzOzExOTQsMTEgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYikKICAqCiAgKiBUaGUgZnVuY3Rpb24gd2lsbCB0aGVuIHVwZGF0ZSB0aGUgcGFnZSBvZmZzZXQuCiAgKiovCi1zdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKHN0cnVjdCBza19idWZmICpza2IsCiYjNDM7c3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhjb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlciwKIAkJCSAgICAgdW5zaWduZWQgaW50IHNpemUpCiB7Ci0JdTMyIGhyID0gbmV0bWVtX2dldF9wcChyeF9idWZmZXItJmd0O25ldG1lbSktJmd0O3Aub2Zmc2V0OwomIzQzOwl1MzIgaHIgPSBwcC0mZ3Q7cC5vZmZzZXQ7CiAKIAlza2JfYWRkX3J4X2ZyYWdfbmV0bWVtKHNrYiwgc2tiX3NoaW5mbyhza2IpLSZndDtucl9mcmFncywKIAkJCSAgICAgICByeF9idWZmZXItJmd0O25ldG1lbSwgcnhfYnVmZmVyLSZndDtvZmZzZXQgJiM0MzsgaHIsCkBAIC0xMjA2LDE3ICYjNDM7MTIwNywxOSBAQCBzdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKHN0cnVjdCBza19idWZmICpza2IsCiAKIC8qKgogICogaWF2Zl9idWlsZF9za2IgLSBCdWlsZCBza2IgYXJvdW5kIGFuIGV4aXN0aW5nIGJ1ZmZlcgomIzQzOyAqIEBwcDogcGFnZSBwb29sIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCBmcm9tCiAgKiBAcnhfYnVmZmVyOiBSeCBidWZmZXIgdG8gcHVsbCBkYXRhIGZyb20KICAqIEBzaXplOiBzaXplIG9mIGJ1ZmZlciB0byBhZGQgdG8gc2tiCiAgKgogICogVGhpcyBmdW5jdGlvbiBidWlsZHMgYW4gc2tiIGFyb3VuZCBhbiBleGlzdGluZyBSeCBidWZmZXIsIHRha2luZyBjYXJlCiAgKiB0byBzZXQgdXAgdGhlIHNrYiBjb3JyZWN0bHkgYW5kIGF2b2lkIGFueSBtZW1jcHkgb3ZlcmhlYWQuCiAgKi8KLXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlciwKJiM0MztzdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlhdmZfYnVpbGRfc2tiKGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwLAomIzQzOwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLAogCQkJCSAgICAgIHVuc2lnbmVkIGludCBzaXplKQogewogCXN0cnVjdCBwYWdlICpidWZfcGFnZSA9IF9fbmV0bWVtX3RvX3BhZ2UocnhfYnVmZmVyLSZndDtuZXRtZW0pOwotCXUzMiBociA9IHBwX3BhZ2VfdG9fbm1kZXNjKGJ1Zl9wYWdlKS0mZ3Q7cHAtJmd0O3Aub2Zmc2V0OwomIzQzOwl1MzIgaHIgPSBwcC0mZ3Q7cC5vZmZzZXQ7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAl2b2lkICp2YTsKIApAQCAtMTM4Nyw2ICYjNDM7MTM5MCw3IEBAIHN0YXRpYyBpbnQgaWF2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldCkKIHsKIAlib29sIGZsZXggPSByeF9yaW5nLSZndDtyeGRpZCA9PSBWSVJUQ0hOTF9SWERJRF8yX0ZMRVhfU1FfTklDOwogCXVuc2lnbmVkIGludCB0b3RhbF9yeF9ieXRlcyA9IDAsIHRvdGFsX3J4X3BhY2tldHMgPSAwOwomIzQzOwljb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwcCA9IHJ4X3JpbmctJmd0O3BwOwogCXN0cnVjdCBza19idWZmICpza2IgPSByeF9yaW5nLSZndDtza2I7CiAJdTE2IGNsZWFuZWRfY291bnQgPSBJQVZGX0RFU0NfVU5VU0VEKHJ4X3JpbmcpOwogCWJvb2wgZmFpbHVyZSA9IGZhbHNlOwpAQCAtMTQyNCwxNCAmIzQzOzE0MjgsMTQgQEAgc3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KQogCQlpYXZmX3RyYWNlKGNsZWFuX3J4X2lycSwgcnhfcmluZywgcnhfZGVzYywgc2tiKTsKIAogCQlyeF9idWZmZXIgPSAmYW1wO3J4X3JpbmctJmd0O3J4X2ZxZXNbcnhfcmluZy0mZ3Q7bmV4dF90b19jbGVhbl07Ci0JCWlmICghbGliZXRoX3J4X3N5bmNfZm9yX2NwdShyeF9idWZmZXIsIGZpZWxkcy5sZW4pKQomIzQzOwkJaWYgKCFfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbikpCiAJCQlnb3RvIHNraXBfZGF0YTsKIAogCQkvKiByZXRyaWV2ZSBhIGJ1ZmZlciBmcm9tIHRoZSByaW5nICovCiAJCWlmIChza2IpCi0JCQlpYXZmX2FkZF9yeF9mcmFnKHNrYiwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKTsKJiM0MzsJCQlpYXZmX2FkZF9yeF9mcmFnKHBwLCBza2IsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7CiAJCWVsc2UKLQkJCXNrYiA9IGlhdmZfYnVpbGRfc2tiKHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7CiYjNDM7CQkJc2tiID0gaWF2Zl9idWlsZF9za2IocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7CiAKIAkJLyogZXhpdCBpZiB3ZSBmYWlsZWQgdG8gcmV0cmlldmUgYSBidWZmZXIgKi8KIAkJaWYgKCFza2IpIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oIGIvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgKaW5kZXggNWQ5OTE0MDQ4NDVlNi4uZmRkYWMwODRlMDAxZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgKQEAgLTExOCwzNiAmIzQzOzExOCw1MSBAQCBzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgbGliZXRoX3J4X2FsbG9jKGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgKmZxLCB1MzIgaSkKIHZvaWQgbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW1fcmVmIG5ldG1lbSk7CiAKIC8qKgotICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BCiYjNDM7ICogX19saWJldGhfcnhfc3luY19mb3JfY3B1IC0gc3luY2hyb25pemUgb3IgcmVjeWNsZSBidWZmZXIgcG9zdCBETUEKJiM0MzsgKiBAcG9vbDogJmFtcDtwYWdlX3Bvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb20KICAqIEBmcWU6IGJ1ZmZlciB0byBwcm9jZXNzCiAgKiBAbGVuOiBmcmFtZSBsZW5ndGggZnJvbSB0aGUgZGVzY3JpcHRvcgogICoKLSAqIFByb2Nlc3MgdGhlIGJ1ZmZlciBhZnRlciBpdCYjMzk7cyB3cml0dGVuIGJ5IEhXLiBUaGUgcmVndWxhciBwYXRoIGlzIHRvCi0gKiBzeW5jaHJvbml6ZSBETUEgZm9yIENQVSwgYnV0IGluIGNhc2Ugb2Ygbm8gZGF0YSBpdCB3aWxsIGJlIGltbWVkaWF0ZWx5Ci0gKiByZWN5Y2xlZCBiYWNrIHRvIGl0cyBQUC4KJiM0MzsgKiBWYXJpYW50IGZvciBjYWxsZXJzIHdoaWNoIGFscmVhZHkga25vdyB0aGUgYnVmZmVyJiMzOTtzIHBvb2wsIHR5cGljYWxseQomIzQzOyAqIHRoZWlyIFJ4IHF1ZXVlJiMzOTtzIGZpbGwgcXVldWUgcG9vbC4KICAqCiAgKiBSZXR1cm46IHRydWUgd2hlbiB0aGVyZSYjMzk7cyBkYXRhIHRvIHByb2Nlc3MsIGZhbHNlIG90aGVyd2lzZS4KICAqLwotc3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSwKLQkJCQkJICB1MzIgbGVuKQomIzQzO3N0YXRpYyBpbmxpbmUgYm9vbCBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCwKJiM0MzsJCQkJCSAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqZnFlLAomIzQzOwkJCQkJICAgIHUzMiBsZW4pCiB7Ci0JbmV0bWVtX3JlZiBuZXRtZW0gPSBmcWUtJmd0O25ldG1lbTsKLQogCS8qIFZlcnkgcmFyZSwgYnV0IHBvc3NpYmxlIGNhc2UuIFRoZSBtb3N0IGNvbW1vbiByZWFzb246CiAJICogdGhlIGxhc3QgZnJhZ21lbnQgY29udGFpbmVkIEZDUyBvbmx5LCB3aGljaCB3YXMgdGhlbgogCSAqIHN0cmlwcGVkIGJ5IHRoZSBIVy4KIAkgKi8KIAlpZiAodW5saWtlbHkoIWxlbikpIHsKLQkJbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW0pOwomIzQzOwkJbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhmcWUtJmd0O25ldG1lbSk7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKLQlwYWdlX3Bvb2xfZG1hX3N5bmNfbmV0bWVtX2Zvcl9jcHUobmV0bWVtX2dldF9wcChuZXRtZW0pLCBuZXRtZW0sCi0JCQkJCSAgZnFlLSZndDtvZmZzZXQsIGxlbik7CiYjNDM7CXBhZ2VfcG9vbF9kbWFfc3luY19uZXRtZW1fZm9yX2NwdShwb29sLCBmcWUtJmd0O25ldG1lbSwgZnFlLSZndDtvZmZzZXQsIGxlbik7CiAKIAlyZXR1cm4gdHJ1ZTsKIH0KIAomIzQzOy8qKgomIzQzOyAqIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQQomIzQzOyAqIEBmcWU6IGJ1ZmZlciB0byBwcm9jZXNzCiYjNDM7ICogQGxlbjogZnJhbWUgbGVuZ3RoIGZyb20gdGhlIGRlc2NyaXB0b3IKJiM0MzsgKgomIzQzOyAqIFByb2Nlc3MgdGhlIGJ1ZmZlciBhZnRlciBpdCYjMzk7cyB3cml0dGVuIGJ5IEhXLiBUaGUgcmVndWxhciBwYXRoIGlzIHRvCiYjNDM7ICogc3luY2hyb25pemUgRE1BIGZvciBDUFUsIGJ1dCBpbiBjYXNlIG9mIG5vIGRhdGEgaXQgd2lsbCBiZSBpbW1lZGlhdGVseQomIzQzOyAqIHJlY3ljbGVkIGJhY2sgdG8gaXRzIFBQLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiB0cnVlIHdoZW4gdGhlcmUmIzM5O3MgZGF0YSB0byBwcm9jZXNzLCBmYWxzZSBvdGhlcndpc2UuCiYjNDM7ICovCiYjNDM7c3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSwKJiM0MzsJCQkJCSAgdTMyIGxlbikKJiM0Mzt7CiYjNDM7CXJldHVybiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUobmV0bWVtX2dldF9wcChmcWUtJmd0O25ldG1lbSksIGZxZSwgbGVuKTsKJiM0Mzt9CiYjNDM7CiAvKiBDb252ZXJ0aW5nIGFic3RyYWN0IHBhY2tldCB0eXBlIG51bWJlcnMgaW50byBhIHNvZnR3YXJlIHN0cnVjdHVyZSB3aXRoCiAgKiB0aGUgcGFja2V0IHBhcmFtZXRlcnMgdG8gZG8gTygxKSBsb29rdXAgb24gUnguCiAgKi8KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzk0NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIElBVkYgUGF0Y2ggYW5kIGl0cyBJbXBsaWNhdGlvbnMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBzcGVjaWZpYyBjaGFuZ2VzIHdpdGhpbiB0aGUgSW50ZWwgSUFWRiBkcml2ZXIuIEl0JiMzOTtzIHRvdWNoaW5nIGBpYXZmX3R4cnguY2AgYW5kIGByeC5oYCwgYW5kIHNwZWNpZmljYWxseSwgaXQmIzM5O3MgdXBkYXRpbmcgaG93IHRoZSBgcGFnZV9wb29sYCBpcyBoYW5kbGVkIHdpdGhpbiBgaWF2Zl9hZGRfcnhfZnJhZ2AsIGBpYXZmX2J1aWxkX3NrYmAsIGFuZCBgaWF2Zl9jbGVhbl9yeF9pcnFgLiBUaGUgaW1wb3J0YW50IHRoaW5nIEkmIzM5O20gc2VlaW5nIGlzIHRoYXQgaXQmIzM5O3Mgbm8gbG9uZ2VyIGltcGxpY2l0bHkgZGVyaXZpbmcgdGhlIGBwYWdlX3Bvb2xgIGZyb20gYSBgbmV0bWVtYCByZWZlcmVuY2UuIEl0JiMzOTtzIGJlZW4gbWFkZSBleHBsaWNpdC4gSXQgYWxzbyBsb29rcyBsaWtlIGEgbmV3IGZ1bmN0aW9uIGNhbGxlZCBgX19saWJldGhfcnhfc3luY19mb3JfY3B1YCBoYXMgYmVlbiBpbnRyb2R1Y2VkLCBhZ2FpbiB0YWtpbmcgYSBgcGFnZV9wb29sYCBwb2ludGVyLiBgbGliZXRoX3J4X3N5bmNfZm9yX2NwdWAgaGFzIGFsc28gYmVlbiBtb2RpZmllZCB0byB1c2UgdGhlIGBwYWdlX3Bvb2xgIHBvaW50ZXIuCgpOb3csIHRoZSBgaWF2ZmAgZHJpdmVyLi4uIHRoYXQmIzM5O3MgdGhlIEludGVsIEV0aGVybmV0IEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyLiBSaWdodCwgaXQmIzM5O3MgYSBWRiBkcml2ZXIuIFNvLCB0aGlzIGlzIHR5cGljYWxseSB1c2VkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIHJpZ2h0PyBFc3BlY2lhbGx5IHdoZW4geW91JiMzOTtyZSB0YWxraW5nIGFib3V0IFNSLUlPVi4gQW5kIHRoYXQgbWVhbnMgaXQgaXMgYSBWaXJ0dWFsIEZ1bmN0aW9uLCB3aGljaCBuZWVkcyB0aGUgcGh5c2ljYWwgTklDIChsaWtlIGFuIGk0MGUgb3IgaWNlKSB0byBiZSBwcmVzZW50IHRvIHdvcmsuIAoKVGhlIGltbWVkaWF0ZSBxdWVzdGlvbiB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzLCBjYW4gSSBldmVuICp0ZXN0KiB0aGlzIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudD8gUUVNVSBkb2VzbiYjMzk7dCBuYXRpdmVseSBlbXVsYXRlIEludGVsIEFWRnMuIEhtbW0sIGNvdWxkIHRoZXJlIGJlIHNvbWUgd2F5IHRvIGZ1ZGdlIGl0IHdpdGggc29mdHdhcmUgZW11bGF0aW9uIG9yIG1heWJlIGlmIGl0JiMzOTtzIGNvbnNpZGVyZWQgY29yZSBlbm91Z2g/CgpXYWl0LCB0aGUgcHJvbXB0IHNheXMgc29tZXRoaW5nIHRoYXQgbWlnaHQgYXBwbHk6ICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IFRoaXMgaXMgZXhhY3RseSB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLiBJcyBgaWF2ZmAgYSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVyIHRoYXQgcmVxdWlyZXMgcGh5c2ljYWwgaGFyZHdhcmU/IFllcywgdGhhdCYjMzk7cyB3aGF0IGEgVkYgZHJpdmVyIGlzIGxpa2UuIFVzdWFsbHksIFZGIGRyaXZlcnMgcmVxdWlyZSB0aGUgcGh5c2ljYWwgUEYgZHJpdmVyIGFuZCBwaHlzaWNhbCBoYXJkd2FyZSwgdW5sZXNzIEkgY2FuIGZpbmQgYW4gZW11bGF0b3IuCgpBbHJpZ2h0LCBzbyB0aGUga2V5IHRoaW5nIGlzIHdoZXRoZXIgYGlhdmZgICpjYW4qIGJlIGZ1enplZCBpbiBhbnkgcmVhc29uYWJsZSB3YXkgb3IgaWYgSSBhYnNvbHV0ZWx5IG5lZWQgdGhlIHBoeXNpY2FsIGhhcmR3YXJlIHRvIHRlc3QgdGhpcy4gVGhlIHBhdGNoIGlzIHRvdWNoaW5nIGEgUENJIGRyaXZlciwgYGlhdmZgLiBCZXR0ZXIgY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2UgdG8gbWFrZSBzdXJlIHRoYXQmIzM5O3MgYWNjdXJhdGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWF2ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA3MzY2IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlLTMtI1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZTo0OiMgTWFrZWZpbGUgZm9yIHRoZSBJbnRlbChSKSBFdGhlcm5ldCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIChpYXZmKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS01LSMgZHJpdmVyXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZT0xMD1zdWJkaXItY2NmbGFncy15ICYjNDM7PSAtSSQoc3JjKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS0xMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0lBVkYpICYjNDM7PSBpYXZmLm9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGUtMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlOjE0OmlhdmYteSA6PSBpYXZmX21haW4ubyBpYXZmX2V0aHRvb2wubyBpYXZmX3ZpcnRjaG5sLm8gaWF2Zl9mZGlyLm8gXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGU6MTU6XHQgIGlhdmZfYWR2X3Jzcy5vIGlhdmZfdHhyeC5vIGlhdmZfY29tbW9uLm8gaWF2Zl9hZG1pbnEub1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS0xNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGU6MTc6aWF2Zi0kKENPTkZJR19QVFBfMTU4OF9DTE9DSykgJiM0Mzs9IGlhdmZfcHRwLm9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0zOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjM5OiNpbmNsdWRlIFwmIzM0O2lhdmZfdHlwZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00MC0jaW5jbHVkZSBcdTAwM2NsaW51eC9hdmYvdmlydGNobmwuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDE6I2luY2x1ZGUgXCYjMzQ7aWF2Zl90eHJ4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQyOiNpbmNsdWRlIFwmIzM0O2lhdmZfZmRpci5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0MzojaW5jbHVkZSBcJiMzNDtpYXZmX2Fkdl9yc3MuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDQ6I2luY2x1ZGUgXCYjMzQ7aWF2Zl90eXBlcy5oXCYjMzQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NS0jaW5jbHVkZSBcdTAwM2NsaW51eC9iaXRtYXAuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ3LSNkZWZpbmUgREVGQVVMVF9ERUJVR19MRVZFTF9TSElGVCAzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0ODojZGVmaW5lIFBGWCBcJiMzNDtpYXZmOiBcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTA6aW50IGlhdmZfc3RhdHVzX3RvX2Vycm5vKGVudW0gaWF2Zl9zdGF0dXMgc3RhdHVzKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUxLWludCB2aXJ0Y2hubF9zdGF0dXNfdG9fZXJybm8oZW51bSB2aXJ0Y2hubF9zdGF0dXNfY29kZSB2X3N0YXR1cyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTMtLyogVlNJIHN0YXRlIGZsYWdzIHNoYXJlZCB3aXRoIGNvbW1vbiBjb2RlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NDplbnVtIGlhdmZfdnNpX3N0YXRlX3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTUtXHRfX0lBVkZfVlNJX0RPV04sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjAtLyogZHVtbXkgc3RydWN0IHRvIG1ha2UgY29tbW9uIGNvZGUgbGVzcyBwYWluZnVsICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTpzdHJ1Y3QgaWF2Zl92c2kge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjI6XHRzdHJ1Y3QgaWF2Zl9hZGFwdGVyICpiYWNrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjMtXHRzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTg1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6ODY6I2RlZmluZSBJQVZGX1JYX0RFU0MoUiwgaSkgKFx1MDAyNigoKHN0cnVjdCBpYXZmX3J4X2Rlc2MgKikoKFIpLVx1MDAzZWRlc2MpKVtpXSkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo4NzojZGVmaW5lIElBVkZfVFhfREVTQyhSLCBpKSAoXHUwMDI2KCgoc3RydWN0IGlhdmZfdHhfZGVzYyAqKSgoUiktXHUwMDNlZGVzYykpW2ldKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTg4LSNkZWZpbmUgSUFWRl9UWF9DVFhUREVTQyhSLCBpKSBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6ODk6XHQoXHUwMDI2KCgoc3RydWN0IGlhdmZfdHhfY29udGV4dF9kZXNjICopKChSKS1cdTAwM2VkZXNjKSlbaV0pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtOTAtI2RlZmluZSBJQVZGX01BWF9SRVFfUVVFVUVTIDE2XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTAzLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTA0OnN0cnVjdCBpYXZmX3FfdmVjdG9yIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEwNTpcdHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXI7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxMDY6XHRzdHJ1Y3QgaWF2Zl92c2kgKnZzaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTEwNy1cdHN0cnVjdCBuYXBpX3N0cnVjdCBuYXBpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTA4Olx0c3RydWN0IGlhdmZfcmluZ19jb250YWluZXIgcng7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxMDk6XHRzdHJ1Y3QgaWF2Zl9yaW5nX2NvbnRhaW5lciB0eDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTExMC1cdHUzMiByaW5nX21hc2s7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTIwLSAqIEFuZCB5ZXMsIGl0JiMzOTtzIHRoZSBzYW1lIG1hdGggZ29pbmcgYm90aCB3YXlzLiAgVGhlIGxvd2VzdCB2YWx1ZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTIxOiAqIHN1cHBvcnRlZCBieSBhbGwgb2YgdGhlIGlhdmYgaGFyZHdhcmUgaXMgOC5cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTEyMi0gKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xMzgtI2RlZmluZSBJQVZGX0ZSRUVfVkVDVE9SIDB4N0ZGRlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTM5OnN0cnVjdCBpYXZmX21hY19maWx0ZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTQwLVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE1MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjE1MjojZGVmaW5lIElBVkZfVkxBTih2aWQsIHRwaWQpICgoc3RydWN0IGlhdmZfdmxhbil7IHZpZCwgdHBpZCB9KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTUzOnN0cnVjdCBpYXZmX3ZsYW4ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTU0LVx0dTE2IHZpZDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNTg6ZW51bSBpYXZmX3ZsYW5fc3RhdGVfdCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNTktXHRJQVZGX1ZMQU5fSU5WQUxJRCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNjc6c3RydWN0IGlhdmZfdmxhbl9maWx0ZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTY4LVx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTY5Olx0c3RydWN0IGlhdmZfdmxhbiB2bGFuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTcwOlx0ZW51bSBpYXZmX3ZsYW5fc3RhdGVfdCBzdGF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE3MS19O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE3NC0vKiBTdGF0ZSBvZiB0cmFmZmljIGNsYXNzIGNyZWF0aW9uICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNzU6ZW51bSBpYXZmX3RjX3N0YXRlX3Qge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTc2LVx0X19JQVZGX1RDX0lOVkFMSUQsIC8qIG5vIHRyYWZmaWMgY2xhc3MsIGRlZmF1bHQgc3RhdGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xODAtLyogY2hhbm5lbCBpbmZvICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxODE6c3RydWN0IGlhdmZfY2hhbm5lbF9jb25maWcge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTgyLVx0c3RydWN0IHZpcnRjaG5sX2NoYW5uZWxfaW5mbyBjaF9pbmZvW0lBVkZfTUFYX1RSQUZGSUNfQ0xBU1NdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTgzOlx0ZW51bSBpYXZmX3RjX3N0YXRlX3Qgc3RhdGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xODQtXHR1OCB0b3RhbF9xcHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTg3LS8qIFN0YXRlIG9mIGNsb3VkIGZpbHRlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTg4OmVudW0gaWF2Zl9jbG91ZF9maWx0ZXJfc3RhdGVfdCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xODktXHRfX0lBVkZfQ0ZfSU5WQUxJRCxcdCAvKiBjbG91ZCBmaWx0ZXIgbm90IGFkZGVkICovXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTk1LS8qIERyaXZlciBzdGF0ZS4gVGhlIG9yZGVyIG9mIHRoZXNlIGlzIGltcG9ydGFudCEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjE5NjplbnVtIGlhdmZfc3RhdGVfdCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xOTctXHRfX0lBVkZfU1RBUlRVUCxcdFx0LyogZHJpdmVyIGxvYWRlZCwgcHJvYmUgY29tcGxldGUgKi9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yMTMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoyMTQ6ZW51bSBpYXZmX2NyaXRpY2FsX3NlY3Rpb25fdCB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yMTUtXHRfX0lBVkZfSU5fUkVNT1ZFX1RBU0ssXHQvKiBkZXZpY2UgYmVpbmcgcmVtb3ZlZCAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTIzOC0vKiBib29ra2VlcGluZyBvZiBjbG91ZCBmaWx0ZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoyMzk6c3RydWN0IGlhdmZfY2xvdWRfZmlsdGVyIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI0MDpcdGVudW0gaWF2Zl9jbG91ZF9maWx0ZXJfc3RhdGVfdCBzdGF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTI0MS1cdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNTUtLyogYm9hcmQgc3BlY2lmaWMgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjU2OnN0cnVjdCBpYXZmX2FkYXB0ZXIge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjU3LVx0c3RydWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTI2Mi1cdHdhaXRfcXVldWVfaGVhZF90IHZjX3dhaXRxdWV1ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI2MzpcdHN0cnVjdCBpYXZmX3FfdmVjdG9yICpxX3ZlY3RvcnM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNjQtXHRzdHJ1Y3QgbGlzdF9oZWFkIHZsYW5fZmlsdGVyX2xpc3Q7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjc0LVx0LyogVFggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI3NTpcdHN0cnVjdCBpYXZmX3JpbmcgKnR4X3JpbmdzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjc2LVx0dTMyIHR4X3RpbWVvdXRfY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjc5LVx0LyogUlggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI4MDpcdHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmdzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjgxLVx0dTY0IGh3X2NzdW1fcnhfZXJyb3I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMzg3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6Mzg4Olx0c3RydWN0IGlhdmZfaHcgaHc7IC8qIGRlZmluZWQgaW4gaWF2Zl90eXBlLmggKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTM4OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjM5MDpcdGVudW0gaWF2Zl9zdGF0ZV90IHN0YXRlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MzkxOlx0ZW51bSBpYXZmX3N0YXRlX3QgbGFzdF9zdGF0ZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTM5Mi1cdHVuc2lnbmVkIGxvbmcgY3JpdF9zZWN0aW9uO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ0Ni1cdHU2NCBzdXBwX3J4ZGlkcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ0NzpcdHN0cnVjdCBpYXZmX3B0cCBwdHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NDgtXHR1MTYgbXNnX2VuYWJsZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ0OTpcdHN0cnVjdCBpYXZmX2V0aF9zdGF0cyBjdXJyZW50X3N0YXRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDUwLVx0c3RydWN0IHZpcnRjaG5sX3Fvc19jYXBfbGlzdCAqcW9zX2NhcHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0NTE6XHRzdHJ1Y3QgaWF2Zl92c2kgdnNpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDUyLVx0dTMyIGFxX3dhaXRfY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDYwLVx0LyogQURRIHJlbGF0ZWQgbWVtYmVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDYxOlx0c3RydWN0IGlhdmZfY2hhbm5lbF9jb25maWcgY2hfY29uZmlnO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDYyLVx0dTggbnVtX3RjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ4My0vKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGZkaXJfZmx0cl9sb2NrIGxvY2sgaGVsZCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDg0OnN0YXRpYyBpbmxpbmUgYm9vbCBpYXZmX2ZkaXJfbWF4X3JlYWNoZWQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ4NS17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg9NDkwPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDkxOmlhdmZfaW5jX2ZkaXJfYWN0aXZlX2ZsdHIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ5MjpcdFx0XHQgIHN0cnVjdCBpYXZmX2ZkaXJfZmx0ciAqZmx0cilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ5My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0OTQ6XHRpZiAoaWF2Zl9pc19yYXdfZmRpcihmbHRyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ5NS1cdFx0YWRhcHRlci1cdTAwM2VyYXdfZmRpcl9hY3RpdmVfZmx0ciYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg9NTAwPXN0YXRpYyBpbmxpbmUgdm9pZFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTAxOmlhdmZfZGVjX2ZkaXJfYWN0aXZlX2ZsdHIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUwMjpcdFx0XHQgIHN0cnVjdCBpYXZmX2ZkaXJfZmx0ciAqZmx0cilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUwMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1MDQ6XHRpZiAoaWF2Zl9pc19yYXdfZmRpcihmbHRyKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUwNS1cdFx0YWRhcHRlci1cdTAwM2VyYXdfZmRpcl9hY3RpdmVfZmx0ci0tO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUxMjovKiBuZWVkZWQgYnkgaWF2Zl9ldGh0b29sLmMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUxMzpleHRlcm4gY2hhciBpYXZmX2RyaXZlcl9uYW1lW107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1MTU6c3RhdGljIGlubGluZSBjb25zdCBjaGFyICppYXZmX3N0YXRlX3N0cihlbnVtIGlhdmZfc3RhdGVfdCBzdGF0ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUxNi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTUxOnN0YXRpYyBpbmxpbmUgdm9pZCBpYXZmX2NoYW5nZV9zdGF0ZShzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTUyOlx0XHRcdFx0ICAgICBlbnVtIGlhdmZfc3RhdGVfdCBzdGF0ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTU5LVx0XHRcJiMzNDtzdGF0ZSB0cmFuc2l0aW9uIGZyb206JXMgdG86JXNcXG5cJiMzNDssXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjA6XHRcdGlhdmZfc3RhdGVfc3RyKGFkYXB0ZXItXHUwMDNlbGFzdF9zdGF0ZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjE6XHRcdGlhdmZfc3RhdGVfc3RyKGFkYXB0ZXItXHUwMDNlc3RhdGUpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU2Mi19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NjMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjQ6dm9pZCBpYXZmX2Rvd24oc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjU6aW50IGlhdmZfcHJvY2Vzc19jb25maWcoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjY6aW50IGlhdmZfcGFyc2VfdmZfcmVzb3VyY2VfbXNnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTY3OnZvaWQgaWF2Zl9zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgZmxhZ3MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTY4OnZvaWQgaWF2Zl9zY2hlZHVsZV9hcV9yZXF1ZXN0KHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHU2NCBmbGFncyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Njk6dm9pZCBpYXZmX3NjaGVkdWxlX2ZpbmlzaF9jb25maWcoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzA6dm9pZCBpYXZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU3MTp2b2lkIGlhdmZfZnJlZV9hbGxfdHhfcmVzb3VyY2VzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTcyOnZvaWQgaWF2Zl9mcmVlX2FsbF9yeF9yZXNvdXJjZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzQ6aW50IGlhdmZfc2VuZF9hcGlfdmVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc1OmludCBpYXZmX3ZlcmlmeV9hcGlfdmVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc2OmludCBpYXZmX3NlbmRfdmZfY29uZmlnX21zZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU3NzppbnQgaWF2Zl9nZXRfdmZfY29uZmlnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc4OmludCBpYXZmX2dldF92Zl92bGFuX3YyX2NhcHMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Nzk6aW50IGlhdmZfc2VuZF92Zl9vZmZsb2FkX3ZsYW5fdjJfbXNnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTgwOmludCBpYXZmX3NlbmRfdmZfc3VwcG9ydGVkX3J4ZGlkc19tc2coc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODE6aW50IGlhdmZfZ2V0X3ZmX3N1cHBvcnRlZF9yeGRpZHMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODI6aW50IGlhdmZfc2VuZF92Zl9wdHBfY2Fwc19tc2coc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODM6aW50IGlhdmZfZ2V0X3ZmX3B0cF9jYXBzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg0OnZvaWQgaWF2Zl9zZXRfcXVldWVfdmxhbl90YWdfbG9jKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg1OnUxNiBpYXZmX2dldF9udW1fdmxhbnNfYWRkZWQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODY6dm9pZCBpYXZmX2lycV9lbmFibGUoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlciwgYm9vbCBmbHVzaCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODc6dm9pZCBpYXZmX2NvbmZpZ3VyZV9xdWV1ZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODg6dm9pZCBpYXZmX2VuYWJsZV9xdWV1ZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODk6dm9pZCBpYXZmX2Rpc2FibGVfcXVldWVzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkwOnZvaWQgaWF2Zl9tYXBfcXVldWVzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkxOnZvaWQgaWF2Zl9hZGRfZXRoZXJfYWRkcnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1OTI6dm9pZCBpYXZmX2RlbF9ldGhlcl9hZGRycyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU5Mzp2b2lkIGlhdmZfYWRkX3ZsYW5zKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk0OnZvaWQgaWF2Zl9kZWxfdmxhbnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1OTU6dm9pZCBpYXZmX3NldF9wcm9taXNjdW91cyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU5Njpib29sIGlhdmZfcHJvbWlzY3VvdXNfbW9kZV9jaGFuZ2VkKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk3OnZvaWQgaWF2Zl9yZXF1ZXN0X3N0YXRzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk4OmludCBpYXZmX3JlcXVlc3RfcmVzZXQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1OTk6dm9pZCBpYXZmX2dldF9yc3NfaGFzaGNmZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwMDp2b2lkIGlhdmZfc2V0X3Jzc19oYXNoY2ZnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjAxOnZvaWQgaWF2Zl9zZXRfcnNzX2tleShzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwMjp2b2lkIGlhdmZfc2V0X3Jzc19sdXQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MDM6dm9pZCBpYXZmX3NldF9yc3NfaGZ1bmMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MDQ6dm9pZCBpYXZmX2VuYWJsZV92bGFuX3N0cmlwcGluZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwNTp2b2lkIGlhdmZfZGlzYWJsZV92bGFuX3N0cmlwcGluZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwNjp2b2lkIGlhdmZfdmlydGNobmxfY29tcGxldGlvbihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjA3LVx0XHRcdCAgICAgIGVudW0gdmlydGNobmxfb3BzIHZfb3Bjb2RlLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA4Olx0XHRcdCAgICAgIGVudW0gaWF2Zl9zdGF0dXMgdl9yZXR2YWwsIHU4ICptc2csIHUxNiBtc2dsZW4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA5OmludCBpYXZmX2NvbmZpZ19yc3Moc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTA6dm9pZCBpYXZmX2NmZ19xdWV1ZXNfYncoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTE6dm9pZCBpYXZmX2NmZ19xdWV1ZXNfcXVhbnRhX3NpemUoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTI6dm9pZCBpYXZmX2dldF9xb3NfY2FwcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYxMzp2b2lkIGlhdmZfZW5hYmxlX2NoYW5uZWxzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE0OnZvaWQgaWF2Zl9kaXNhYmxlX2NoYW5uZWxzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE1OnZvaWQgaWF2Zl9hZGRfY2xvdWRfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE2OnZvaWQgaWF2Zl9kZWxfY2xvdWRfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE3OnZvaWQgaWF2Zl9lbmFibGVfdmxhbl9zdHJpcHBpbmdfdjIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlciwgdTE2IHRwaWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE4OnZvaWQgaWF2Zl9kaXNhYmxlX3ZsYW5fc3RyaXBwaW5nX3YyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiB0cGlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYxOTp2b2lkIGlhdmZfZW5hYmxlX3ZsYW5faW5zZXJ0aW9uX3YyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiB0cGlkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYyMDp2b2lkIGlhdmZfZGlzYWJsZV92bGFuX2luc2VydGlvbl92MihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1MTYgdHBpZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjE6dm9pZCBpYXZmX2FkZF9mZGlyX2ZpbHRlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYyMjp2b2lkIGlhdmZfZGVsX2ZkaXJfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjIzOnZvaWQgaWF2Zl9hZGRfYWR2X3Jzc19jZmcoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjQ6dm9pZCBpYXZmX2RlbF9hZHZfcnNzX2NmZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYyNTpzdHJ1Y3QgaWF2Zl9tYWNfZmlsdGVyICppYXZmX2FkZF9maWx0ZXIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTYyNi1cdFx0XHRcdFx0Y29uc3QgdTggKm1hY2FkZHIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjI3OnZvaWQgaWF2Zl9yZXNldF9zdGVwKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjI4LSNlbmRpZiAvKiBfSUFWRl9IXyAqL1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ6I2luY2x1ZGUgXCYjMzQ7aWF2Zl9zdGF0dXMuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjU6I2luY2x1ZGUgXCYjMzQ7aWF2Zl90eXBlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2OiNpbmNsdWRlIFwmIzM0O2lhdmZfcmVnaXN0ZXIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjc6I2luY2x1ZGUgXCYjMzQ7aWF2Zl9hZG1pbnEuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjg6I2luY2x1ZGUgXCYjMzQ7aWF2Zl9wcm90b3R5cGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTE6ICogIGlhdmZfYWxsb2NfYWRtaW5xX2FzcV9yaW5nIC0gQWxsb2NhdGUgQWRtaW4gUXVldWUgc2VuZCByaW5nc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEyLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEzLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNDpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2FsbG9jX2FkbWlucV9hc3FfcmluZyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE2Olx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxODpcdHJldF9jb2RlID0gaWF2Zl9hbGxvY2F0ZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3EuZGVzY19idWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTk6XHRcdFx0XHRcdCBpYXZmX21lbV9hdHFfcmluZyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMC1cdFx0XHRcdFx0IChody1cdTAwM2VhcS5udW1fYXNxX2VudHJpZXMgKlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyNjpcdHJldF9jb2RlID0gaWF2Zl9hbGxvY2F0ZV92aXJ0X21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXNxLmNtZF9idWYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjctXHRcdFx0XHRcdCAgKGh3LVx1MDAzZWFxLm51bV9hc3FfZW50cmllcyAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6Mjg6XHRcdFx0XHRcdCAgc2l6ZW9mKHN0cnVjdCBpYXZmX2FzcV9jbWRfZGV0YWlscykpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yOS1cdGlmIChyZXRfY29kZSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMwOlx0XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXNxLmRlc2NfYnVmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zMS1cdFx0cmV0dXJuIHJldF9jb2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNy0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozODogKiAgaWF2Zl9hbGxvY19hZG1pbnFfYXJxX3JpbmcgLSBBbGxvY2F0ZSBBZG1pbiBRdWV1ZSByZWNlaXZlIHJpbmdzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzktICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDAtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQxOnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfYWxsb2NfYWRtaW5xX2FycV9yaW5nKHN0cnVjdCBpYXZmX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00Mi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDM6XHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1Olx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX2RtYV9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFycS5kZXNjX2J1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0NjpcdFx0XHRcdFx0IGlhdmZfbWVtX2FycV9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ3LVx0XHRcdFx0XHQgKGh3LVx1MDAzZWFxLm51bV9hcnFfZW50cmllcyAqXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTU0LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjU1OiAqICBpYXZmX2ZyZWVfYWRtaW5xX2FzcSAtIEZyZWUgQWRtaW4gUXVldWUgc2VuZCByaW5nc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTU2LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy02MC0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NjE6c3RhdGljIHZvaWQgaWF2Zl9mcmVlX2FkbWlucV9hc3Eoc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTYyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2MzpcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3EuZGVzY19idWYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTY0LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6Njc6ICogIGlhdmZfZnJlZV9hZG1pbnFfYXJxIC0gRnJlZSBBZG1pbiBRdWV1ZSByZWNlaXZlIHJpbmdzXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjgtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTcyLSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo3MzpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYWRtaW5xX2FycShzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjc1Olx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFycS5kZXNjX2J1Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNzYtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy03OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo3OTogKiAgaWF2Zl9hbGxvY19hcnFfYnVmcyAtIEFsbG9jYXRlIHByZS1wb3N0ZWQgYnVmZmVycyBmb3IgdGhlIHJlY2VpdmUgcXVldWVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy04MC0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy04MS0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6ODI6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9hbGxvY19hcnFfYnVmcyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtODMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTg0LVx0c3RydWN0IGxpYmllX2FxX2Rlc2MgKmRlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6ODU6XHRzdHJ1Y3QgaWF2Zl9kbWFfbWVtICpiaTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo4NjpcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGU7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtODctXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtOTMtXHQvKiBidWZmZXJfaW5mbyBzdHJ1Y3R1cmVzIGRvIG5vdCBuZWVkIGFsaWdubWVudCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjk0Olx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX3ZpcnRfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hcnEuZG1hX2hlYWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtOTUtXHRcdFx0XHRcdCAgKGh3LVx1MDAzZWFxLm51bV9hcnFfZW50cmllcyAqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6OTY6XHRcdFx0XHRcdCAgIHNpemVvZihzdHJ1Y3QgaWF2Zl9kbWFfbWVtKSkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTk3LVx0aWYgKHJldF9jb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTk4LVx0XHRnb3RvIGFsbG9jX2FycV9idWZzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjk5Olx0aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpID0gKHN0cnVjdCBpYXZmX2RtYV9tZW0gKilody1cdTAwM2VhcS5hcnEuZG1hX2hlYWQudmE7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTAwLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xMDMtXHRcdGJpID0gXHUwMDI2aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjEwNDpcdFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX2RtYV9tZW0oaHcsIGJpLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjEwNTpcdFx0XHRcdFx0XHQgaWF2Zl9tZW1fYXJxX2J1ZixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xMDYtXHRcdFx0XHRcdFx0IGh3LVx1MDAzZWFxLmFycV9idWZfc2l6ZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTM5LVx0Zm9yICg7IGkgXHUwMDNlPSAwOyBpLS0pXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTQwOlx0XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNDE6XHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFycS5kbWFfaGVhZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTQyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNDYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTQ3OiAqICBpYXZmX2FsbG9jX2FzcV9idWZzIC0gQWxsb2NhdGUgZW1wdHkgYnVmZmVyIHN0cnVjdHMgZm9yIHRoZSBzZW5kIHF1ZXVlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTQ4LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE0OS0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTUwOnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfYWxsb2NfYXNxX2J1ZnMoc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE1MS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTUyOlx0c3RydWN0IGlhdmZfZG1hX21lbSAqYmk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTUzOlx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNTQtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTU2LVx0LyogTm8gbWFwcGVkIG1lbW9yeSBuZWVkZWQgeWV0LCBqdXN0IHRoZSBidWZmZXIgaW5mbyBzdHJ1Y3R1cmVzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTU3Olx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX3ZpcnRfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3EuZG1hX2hlYWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTU4LVx0XHRcdFx0XHQgIChody1cdTAwM2VhcS5udW1fYXNxX2VudHJpZXMgKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE1OTpcdFx0XHRcdFx0ICAgc2l6ZW9mKHN0cnVjdCBpYXZmX2RtYV9tZW0pKSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTYwLVx0aWYgKHJldF9jb2RlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE2MS1cdFx0Z290byBhbGxvY19hc3FfYnVmcztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNjI6XHRody1cdTAwM2VhcS5hc3Euci5hc3FfYmkgPSAoc3RydWN0IGlhdmZfZG1hX21lbSAqKWh3LVx1MDAzZWFxLmFzcS5kbWFfaGVhZC52YTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNjMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE2Ni1cdFx0YmkgPSBcdTAwMjZody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTY3Olx0XHRyZXRfY29kZSA9IGlhdmZfYWxsb2NhdGVfZG1hX21lbShodywgYmksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTY4Olx0XHRcdFx0XHRcdCBpYXZmX21lbV9hc3FfYnVmLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE2OS1cdFx0XHRcdFx0XHQgaHctXHUwMDNlYXEuYXNxX2J1Zl9zaXplLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xODAtXHRmb3IgKDsgaSBcdTAwM2U9IDA7IGktLSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxODE6XHRcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE4MjpcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXNxLmRtYV9oZWFkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xODMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4Ny0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxODg6ICogIGlhdmZfZnJlZV9hcnFfYnVmcyAtIEZyZWUgcmVjZWl2ZSBxdWV1ZSBidWZmZXIgaW5mbyBlbGVtZW50c1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4OS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xOTAtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE5MTpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYXJxX2J1ZnMoc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE5Mi17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE5Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGh3LVx1MDAzZWFxLm51bV9hcnFfZW50cmllczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTk3Olx0XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xOTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTk5LVx0LyogZnJlZSB0aGUgZGVzY3JpcHRvciBtZW1vcnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMDA6XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLmRlc2NfYnVmKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjAyLVx0LyogZnJlZSB0aGUgZG1hIGhlYWRlciAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIwMzpcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLmRtYV9oZWFkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDQtfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjA3OiAqICBpYXZmX2ZyZWVfYXNxX2J1ZnMgLSBGcmVlIHNlbmQgcXVldWUgYnVmZmVyIGluZm8gZWxlbWVudHNcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDgtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjA5LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMTA6c3RhdGljIHZvaWQgaWF2Zl9mcmVlX2FzcV9idWZzKHN0cnVjdCBpYXZmX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMTEte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMTYtXHRcdGlmIChody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0ucGEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjE3Olx0XHRcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIxOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMTktXHQvKiBmcmVlIHRoZSBidWZmZXIgaW5mbyBsaXN0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjIwOlx0aWF2Zl9mcmVlX3ZpcnRfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3EuY21kX2J1Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjIxLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIyMi1cdC8qIGZyZWUgdGhlIGRlc2NyaXB0b3IgbWVtb3J5ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjIzOlx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFzcS5kZXNjX2J1Zik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjI0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIyNS1cdC8qIGZyZWUgdGhlIGRtYSBoZWFkZXIgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMjY6XHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFzcS5kbWFfaGVhZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjI3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjI5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIzMDogKiAgaWF2Zl9jb25maWdfYXNxX3JlZ3MgLSBjb25maWd1cmUgQVNRIHJlZ2lzdGVyc1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIzMS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjM0LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMzU6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9jb25maWdfYXNxX3JlZ3Moc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIzNi17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjM3Olx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjM4LVx0dTMyIHJlZyA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI1OC0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyNTk6ICogIGlhdmZfY29uZmlnX2FycV9yZWdzIC0gQVJRIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yNjAtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI2My0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjY0OnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfY29uZmlnX2FycV9yZWdzKHN0cnVjdCBpYXZmX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yNjUte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI2NjpcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI2Ny1cdHUzMiByZWcgPSAwO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yOTAtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjkxOiAqICBpYXZmX2luaXRfYXNxIC0gbWFpbiBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBBU1FcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yOTItICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMwMi0gKiovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzAzOnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfaW5pdF9hc3Eoc3RydWN0IGlhdmZfaHcgKmh3KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMwNC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzA1Olx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZSA9IDA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzA2LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMyNC1cdC8qIGFsbG9jYXRlIHRoZSByaW5nIG1lbW9yeSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMyNTpcdHJldF9jb2RlID0gaWF2Zl9hbGxvY19hZG1pbnFfYXNxX3JpbmcoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMyNi1cdGlmIChyZXRfY29kZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzI5LVx0LyogYWxsb2NhdGUgYnVmZmVycyBpbiB0aGUgcmluZ3MgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozMzA6XHRyZXRfY29kZSA9IGlhdmZfYWxsb2NfYXNxX2J1ZnMoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMzMS1cdGlmIChyZXRfY29kZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzM0LVx0LyogaW5pdGlhbGl6ZSBiYXNlIHJlZ2lzdGVycyAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMzNTpcdHJldF9jb2RlID0gaWF2Zl9jb25maWdfYXNxX3JlZ3MoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMzNi1cdGlmIChyZXRfY29kZSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzQ0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgaHctXHUwMDNlYXEubnVtX2FzcV9lbnRyaWVzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozNDU6XHRcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcdTAwMjZody1cdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM0NjpcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXNxLmRtYV9oZWFkKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNDctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzQ4LWluaXRfYWRtaW5xX2ZyZWVfcmluZ3M6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzQ5Olx0aWF2Zl9mcmVlX2FkbWlucV9hc3EoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM1MC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzU1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM1NjogKiAgaWF2Zl9pbml0X2FycSAtIGluaXRpYWxpemUgQVJRXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzU3LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNjctICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM2ODpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2luaXRfYXJxKHN0cnVjdCBpYXZmX2h3ICpodylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNjkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM3MDpcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM3MS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zODktXHQvKiBhbGxvY2F0ZSB0aGUgcmluZyBtZW1vcnkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozOTA6XHRyZXRfY29kZSA9IGlhdmZfYWxsb2NfYWRtaW5xX2FycV9yaW5nKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zOTEtXHRpZiAocmV0X2NvZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM5NC1cdC8qIGFsbG9jYXRlIGJ1ZmZlcnMgaW4gdGhlIHJpbmdzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6Mzk1Olx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jX2FycV9idWZzKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zOTYtXHRpZiAocmV0X2NvZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM5OS1cdC8qIGluaXRpYWxpemUgYmFzZSByZWdpc3RlcnMgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0MDA6XHRyZXRfY29kZSA9IGlhdmZfY29uZmlnX2FycV9yZWdzKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MDEtXHRpZiAocmV0X2NvZGUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQwOS1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGh3LVx1MDAzZWFxLm51bV9hcnFfZW50cmllczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDEwOlx0XHRpYXZmX2ZyZWVfZG1hX21lbShodywgXHUwMDI2aHctXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0MTE6XHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFx1MDAyNmh3LVx1MDAzZWFxLmFycS5kbWFfaGVhZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDEyLWluaXRfYWRtaW5xX2ZyZWVfcmluZ3M6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDEzOlx0aWF2Zl9mcmVlX2FkbWlucV9hcnEoaHcpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQxNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDE5LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQyMDogKiAgaWF2Zl9zaHV0ZG93bl9hc3EgLSBzaHV0ZG93biB0aGUgQVNRXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDIxLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MjQtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQyNTpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX3NodXRkb3duX2FzcShzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0Mjc6XHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MjgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ0NS1cdC8qIGZyZWUgcmluZyBidWZmZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDQ2Olx0aWF2Zl9mcmVlX2FzcV9idWZzKGh3KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NDctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ1My0vKipcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0NTQ6ICogIGlhdmZfc2h1dGRvd25fYXJxIC0gc2h1dGRvd24gQVJRXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDU1LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NTgtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1OTpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX3NodXRkb3duX2FycShzdHJ1Y3QgaWF2Zl9odyAqaHcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDYwLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0NjE6XHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlID0gMDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NjItXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ3OS1cdC8qIGZyZWUgcmluZyBidWZmZXJzICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDgwOlx0aWF2Zl9mcmVlX2FycV9idWZzKGh3KTtcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMDg1CgkJCQkJCQlvdXRwdXQ6IDI0CgkJCQkJCQl0aG91Z2h0czogMjc5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIElBVkYgRHJpdmVyIGFuZCBpdHMgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGlhdmZgIGRyaXZlciDigJMgSW50ZWwmIzM5O3MgRXRoZXJuZXQgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIFRoZSBgTWFrZWZpbGVgIGNvbmZpcm1zIGl0LCBhbmQgdGhlIG5hbWUgYWxvbmUgc2NyZWFtcyB2aXJ0dWFsaXphdGlvbiwgd2hpY2ggbWFrZXMgbWUgdGhpbmsgb2YgU1ItSU9WLiAgQWgsIHJpZ2h0LCBWRiBkcml2ZXJzIGFyZSAqc3BlY2lmaWNhbGx5KiBmb3IgVk1zIHdpdGggU1ItSU9WLiAgQnV0IHRoZSBjcml0aWNhbCBwaWVjZSBpcyB0aGF0IHRoZXkgbmVlZCBkZWRpY2F0ZWQgaGFyZHdhcmUsIHBhc3NlZCB0aHJvdWdoIHZpYSBQQ0kgcGFzc3Rocm91Z2guICBDYW4gYGlhdmZgIGJlIGVtdWxhdGVkIHRoZW4/ICBObywgUUVNVSBkb2VzbiYjMzk7dCBuYXRpdmVseSBlbXVsYXRlIHRoZSBJbnRlbCBBVkYuCgpUaGUgbmV4dCBxdWVzdGlvbiB0aGVuIGJlY29tZXM6IGRvZXMgc3l6a2FsbGVyIGZ1enogdGhpcz8gSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhlIHByb21wdCBtZW50aW9ucyBhIHJlc3RyaWN0aW9uLCBmb2N1c2luZyBvbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycywgbGlrZSBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSwgdGhhdCBkZXBlbmQgb24gKmFjdHVhbCogUENJZSBoYXJkd2FyZS4gSXMgYGlhdmZgIG9uZSBvZiAqdGhvc2UqPyBXZWxsLCBpdCYjMzk7cyBhbiBJbnRlbCBFdGhlcm5ldCBkcml2ZXIsIHNvIHllcywgSSYjMzk7ZCBzYXkgdGhhdCBmaXRzIHRoZSBkZXNjcmlwdGlvbi4KCkJ1dCB3YWl0IGEgbWludXRlLCBzeXprYWxsZXIgKmRvZXMqIGhhdmUgYHN5el9wY2lfZGV2aWNlYCwgd2hpY2ggKmNhbiogZW11bGF0ZSBQQ0kgZGV2aWNlcy4gSSBuZWVkIHRvIGNsYXJpZnkgd2hhdCB0aGUgaW1wbGljYXRpb25zIGFyZSB3aXRoIHRoaXMgbWVjaGFuaXNtLCBhbmQgaG93IGl0IGhhbmRsZXMgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIHBoeXNpY2FsIGFuZCB2aXJ0dWFsIGNvbXBvbmVudHMuIFBlcmhhcHMgaXQgY2FuIGhhbmRsZSBgaWF2ZmA/IEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhIGRlc2NyaXB0aW9uIGluIHN5emthbGxlciBmb3IgYGlhdmZgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWF2ZiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O3N5cy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzE3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBUYXNrIGFuZCBBdmFpbGFibGUgVG9vbHMqKgoKT2theSwgZmlyc3QgdGhpbmdzIGZpcnN0LCBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVzdHJpY3Rpb25zLiBJIHNlZSB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgZm9yYmlkcyB1c2luZyBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gc2VhcmNoIHdpdGhpbiBgc3lzL2AuIFRoYXQmIzM5O3MgYSBrZXkgZGV0YWlsIOKAkyBpdCBzZWVtcyBsaWtlIHRoZXNlIGBzeXpfKmAgY2FsbHMgYXJlIHNwZWNpZmljIHRvIHN5emthbGxlciBhbmQgbm90IGRpcmVjdGx5IHByZXNlbnQgaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UuIEkgd2FzIGV4cGVjdGluZyBgcmVhZC1zeXotc3BlY2AgYW5kIGBzeXotZ3JlcHBlcmAgYnV0IEkgZG9uJiMzOTt0IHNlZSB0aG9zZSB0b29scyBsaXN0ZWQuIEkgYW0gY29uc3RyYWluZWQgdG8gdXNpbmcgYGRlZmF1bHRfYXBpOmdyZXBwZXJgLCBgZGVmYXVsdF9hcGk6Y29kZXNlYXJjaC1kaXItaW5kZXhgLCBgZGVmYXVsdF9hcGk6cmVhZC1maWxlYCwgYW5kIGBkZWZhdWx0X2FwaTpzZXQtcmVzdWx0c2AuIFJpZ2h0LCBJIGhhdmUgdG8gd29yayB3aXRoIHdoYXQmIzM5O3MgYXZhaWxhYmxlLgoKTm93LCBJIG5lZWQgdG8gYXBwbHkgdGhlIHJ1bGU6ICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpJIHNlZSBgaWF2ZmAgbWVudGlvbmVkLiBJcyB0aGF0IGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyPyBZZXMsIGl0JiMzOTtzIGFuIEludGVsIEV0aGVybmV0IGRyaXZlci4gT2theSwgYnV0IHRoZSBuZXh0IHF1ZXN0aW9uIGlzIGlmIGl0JiMzOTtzIGVtdWxhdGVkIGluIFFFTVUuIExldCYjMzk7cyBzZWUuLi4gUUVNVSBlbXVsYXRlcyBgZTEwMDBgLCBgZTEwMDBlYCwgYHJ0bDgxMzlgLCBgdmlydGlvLW5ldGAsIGB2bXhuZXQzYCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYGk4MjU1OWVyYCwgYHR1bGlwYC4gTm8sIGl0IGRvZXNuJiMzOTt0IGVtdWxhdGUgYGlhdmZgLgoKV2FpdCwgd2hhdCBhYm91dCBgbGliZXRoYD8gVGhlIHBhdGNoIGFsc28gbW9kaWZpZXMgYGluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oYC4gSSYjMzk7ZCBiZXR0ZXIgZmlndXJlIG91dCB3aGF0IGBsaWJldGhgIGlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L2xpYmV0aC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE2NTMgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTktLyoqXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDoxMDogKiBsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCAtIG1ha2Ugc3VyZSBjYWNoZWxpbmUgZ3JvdXAgc2l6ZSBpcyBleHBlY3RlZFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMTEtICogQHR5cGU6IHR5cGUgb2YgdGhlIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBncm91cFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTE1LSNpZiBkZWZpbmVkKENPTkZJR182NEJJVCkgXHUwMDI2XHUwMDI2IFNNUF9DQUNIRV9CWVRFUyA9PSA2NFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6MTY6I2RlZmluZSBsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCh0eXBlLCBncnAsIHN6KVx0XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0xNy1cdHN0YXRpY19hc3NlcnQob2Zmc2V0b2YodHlwZSwgX19jYWNoZWxpbmVfZ3JvdXBfZW5kX18jI2dycCkgLVx0ICAgICAgXFxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0xOS1cdFx0ICAgICAgKHN6KSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjIwOiNkZWZpbmUgX19saWJldGhfY2FjaGVsaW5lX3N0cnVjdF9hc3NlcnQodHlwZSwgc3opXHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTIxLVx0c3RhdGljX2Fzc2VydChzaXplb2YodHlwZSkgPT0gKHN6KSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTIyLSNlbHNlIC8qICFDT05GSUdfNjRCSVQgfHwgU01QX0NBQ0hFX0JZVEVTICE9IDY0ICovXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDoyMzojZGVmaW5lIGxpYmV0aF9jYWNoZWxpbmVfZ3JvdXBfYXNzZXJ0KHR5cGUsIGdycCwgc3opXHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTI0LVx0c3RhdGljX2Fzc2VydChvZmZzZXRvZih0eXBlLCBfX2NhY2hlbGluZV9ncm91cF9lbmRfXyMjZ3JwKSAtXHQgICAgICBcXFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTI2LVx0XHQgICAgICAoc3opKVxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6Mjc6I2RlZmluZSBfX2xpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCh0eXBlLCBzeilcdFx0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMjgtXHRzdGF0aWNfYXNzZXJ0KHNpemVvZih0eXBlKSBcdTAwM2M9IChzeikpXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMzAtXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDozMTojZGVmaW5lIF9fbGliZXRoX2NsczEoc3oxKVx0U01QX0NBQ0hFX0FMSUdOKHN6MSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjMyOiNkZWZpbmUgX19saWJldGhfY2xzMihzejEsIHN6MilcdChTTVBfQ0FDSEVfQUxJR04oc3oxKSAmIzQzOyBTTVBfQ0FDSEVfQUxJR04oc3oyKSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjMzOiNkZWZpbmUgX19saWJldGhfY2xzMyhzejEsIHN6Miwgc3ozKVx0XHRcdFx0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMzQtXHQoU01QX0NBQ0hFX0FMSUdOKHN6MSkgJiM0MzsgU01QX0NBQ0hFX0FMSUdOKHN6MikgJiM0MzsgU01QX0NBQ0hFX0FMSUdOKHN6MykpXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDozNTojZGVmaW5lIF9fbGliZXRoX2NscyguLi4pXHRcdFx0XHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjM2Olx0Q09OQ0FURU5BVEUoX19saWJldGhfY2xzLCBDT1VOVF9BUkdTKF9fVkFfQVJHU19fKSkoX19WQV9BUkdTX18pXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0zNy1cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTM4LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6Mzk6ICogbGliZXRoX2NhY2hlbGluZV9zdHJ1Y3RfYXNzZXJ0IC0gbWFrZSBzdXJlIENMLWJhc2VkIHN0cnVjdCBzaXplIGlzIGV4cGVjdGVkXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC00MC0gKiBAdHlwZTogdHlwZSBvZiB0aGUgc3RydWN0XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtNDYtICovXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo0NzojZGVmaW5lIGxpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCh0eXBlLCAuLi4pXHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjQ4Olx0X19saWJldGhfY2FjaGVsaW5lX3N0cnVjdF9hc3NlcnQodHlwZSwgX19saWJldGhfY2xzKF9fVkFfQVJHU19fKSk7ICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC00OS1cdHN0YXRpY19hc3NlcnQoX19hbGlnbm9mKHR5cGUpIFx1MDAzZT0gU01QX0NBQ0hFX0JZVEVTKVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTUxLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NTI6ICogbGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0IC0gbWFrZSBzdXJlIENMLWJhc2VkIHN0cnVjdCBsYXlvdXQgaXMgZXhwZWN0ZWRcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTUzLSAqIEB0eXBlOiB0eXBlIG9mIHRoZSBzdHJ1Y3Rcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC01OS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjYwOiNkZWZpbmUgbGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0KHR5cGUsIHJvLCBydywgYylcdFx0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjE6XHRsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCh0eXBlLCByZWFkX21vc3RseSwgcm8pO1x0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjI6XHRsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCh0eXBlLCByZWFkX3dyaXRlLCBydyk7XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo2MzpcdGxpYmV0aF9jYWNoZWxpbmVfZ3JvdXBfYXNzZXJ0KHR5cGUsIGNvbGQsIGMpO1x0XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo2NDpcdGxpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCh0eXBlLCBybywgcncsIGMpXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC02NS1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zNC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjM1OiAqIHN0cnVjdCBsaWJldGhfZnFlIC0gc3RydWN0dXJlIHJlcHJlc2VudGluZyBhbiBSeCBidWZmZXIgKGZpbGwgcXVldWUgZWxlbWVudClcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTM2LSAqIEBuZXRtZW06IG5ldHdvcmsgbWVtb3J5IHJlZmVyZW5jZSBob2xkaW5nIHRoZSBidWZmZXJcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC00My0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjQ0OnN0cnVjdCBsaWJldGhfZnFlIHtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTQ1LVx0bmV0bWVtX3JlZlx0XHRuZXRtZW07XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNTAtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo1MTogKiBlbnVtIGxpYmV0aF9mcWVfdHlwZSAtIGVudW0gcmVwcmVzZW50aW5nIHR5cGVzIG9mIFJ4IGJ1ZmZlcnNcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTUyLSAqIEBMSUJFVEhfRlFFX01UVTogYnVmZmVyIHNpemUgaXMgZGV0ZXJtaW5lZCBieSBNVFVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC01NS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjU2OmVudW0gbGliZXRoX2ZxZV90eXBlIHtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTU3LVx0TElCRVRIX0ZRRV9NVFVcdFx0PSAwVSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC02Mi0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjYzOiAqIHN0cnVjdCBsaWJldGhfZnEgLSBzdHJ1Y3R1cmUgcmVwcmVzZW50aW5nIGEgYnVmZmVyIChmaWxsKSBxdWV1ZVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNjQtICogQGZwOiBob3RwYXRoIHBhcnQgb2YgdGhlIHN0cnVjdHVyZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTc0LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6NzU6c3RydWN0IGxpYmV0aF9mcSB7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3NjpcdHN0cnVjdF9ncm91cF90YWdnZWQobGliZXRoX2ZxX2ZwLCBmcCxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTc3LVx0XHRzdHJ1Y3QgcGFnZV9wb29sXHQqcHA7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3ODpcdFx0c3RydWN0IGxpYmV0aF9mcWVcdCpmcWVzO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNzktXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtODQtXHQvKiBDb2xkIGZpZWxkcyAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6ODU6XHRlbnVtIGxpYmV0aF9mcWVfdHlwZVx0dHlwZToyO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtODYtXHRib29sXHRcdFx0aHNwbGl0OjE7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtOTItXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo5MzppbnQgbGliZXRoX3J4X2ZxX2NyZWF0ZShzdHJ1Y3QgbGliZXRoX2ZxICpmcSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjk0OnZvaWQgbGliZXRoX3J4X2ZxX2Rlc3Ryb3koc3RydWN0IGxpYmV0aF9mcSAqZnEpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtOTUtXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05Ni0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjk3OiAqIGxpYmV0aF9yeF9hbGxvYyAtIGFsbG9jYXRlIGEgbmV3IFJ4IGJ1ZmZlclxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtOTgtICogQGZxOiBmaWxsIHF1ZXVlIHRvIGFsbG9jYXRlIGZvclxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEwMy0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjEwNDpzdGF0aWMgaW5saW5lIGRtYV9hZGRyX3QgbGliZXRoX3J4X2FsbG9jKGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgKmZxLCB1MzIgaSlcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEwNS17XG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxMDY6XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqYnVmID0gXHUwMDI2ZnEtXHUwMDNlZnFlc1tpXTtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEwNy1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMTctXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxMTg6dm9pZCBsaWJldGhfcnhfcmVjeWNsZV9zbG93KG5ldG1lbV9yZWYgbmV0bWVtKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTExOS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEyMC0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjEyMTogKiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTIyLSAqIEBwb29sOiBcdTAwMjZwYWdlX3Bvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMzAtICovXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxMzE6c3RhdGljIGlubGluZSBib29sIF9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShjb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwb29sLFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTMyOlx0XHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEzMy1cdFx0XHRcdFx0ICAgIHUzMiBsZW4pXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTM5LVx0aWYgKHVubGlrZWx5KCFsZW4pKSB7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxNDA6XHRcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3coZnFlLVx1MDAzZW5ldG1lbSk7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNDEtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNDktLyoqXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxNTA6ICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNTEtICogQGZxZTogYnVmZmVyIHRvIHByb2Nlc3Ncbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNTktICovXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxNjA6c3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTE2MS1cdFx0XHRcdFx0ICB1MzIgbGVuKVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTYyLXtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjE2MzpcdHJldHVybiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUobmV0bWVtX2dldF9wcChmcWUtXHUwMDNlbmV0bWVtKSwgZnFlLCBsZW4pO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTY0LX1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaD0xOTU9ZW51bSB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjA4LVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjA5OnN0cnVjdCBsaWJldGhfcnhfcHQge1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjEwLVx0dTMyXHRcdFx0XHRcdG91dGVyX2lwOjI7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjIyLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjIzOiAqIHN0cnVjdCBsaWJldGhfcnhfY3N1bSAtIGNoZWNrc3VtIG9mZmxvYWQgYml0cyBkZWNvZGVkIGZyb20gdGhlIFJ4IGRlc2NyaXB0b3JcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTIyNC0gKiBAbDNsNHA6IGRldGVjdGFibGUgTDMgYW5kIEw0IGludGVncml0eSBjaGVjayBpcyBwcm9jZXNzZWQgYnkgdGhlIGhhcmR3YXJlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjM1LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjM2OnN0cnVjdCBsaWJldGhfcnhfY3N1bSB7XG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yMzctXHR1MzJcdFx0XHRcdFx0bDNsNHA6MTtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNTEtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoyNTI6ICogc3RydWN0IGxpYmV0aF9ycWVfaW5mbyAtIHJlY2VpdmUgcXVldWUgZWxlbWVudCBpbmZvXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNTMtICogQGxlbjogcGFja2V0IGxlbmd0aFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI1OC0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjI1OTpzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIHtcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI2MC1cdHUzMlx0XHRcdFx0XHRsZW47XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjY4LVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjY5OnZvaWQgbGliZXRoX3J4X3B0X2dlbl9oYXNoX3R5cGUoc3RydWN0IGxpYmV0aF9yeF9wdCAqcHQpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjcwLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjcxLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjcyOiAqIGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyIC0gZ2V0IElQIHZlcnNpb24gZnJvbSBhIHBhY2tldCB0eXBlIHN0cnVjdHVyZVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjczLSAqIEBwdDogcGFja2V0IHR5cGUgcGFyYW1zXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjc5LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjgwOnN0YXRpYyBpbmxpbmUgdTMyIGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yODEte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI5My1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjI5NDovKiBsaWJldGhfaGFzXyooKSBjYW4gYmUgdXNlZCB0byBxdWlja2x5IGNoZWNrIHdoZXRoZXIgdGhlIEhXIG1ldGFkYXRhIGlzXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yOTUtICogYXZhaWxhYmxlIHRvIGF2b2lkIGZ1cnRoZXIgZXhwZW5zaXZlIHByb2Nlc3Npbmcgc3VjaCBhcyBkZXNjcmlwdG9yIHJlYWRzLlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI5OS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMwMDpzdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MzAxOlx0XHRcdFx0XHQgICAgIHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMDIte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTMwOS1cbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMxMDpzdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3J4X3B0X2hhc19oYXNoKGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMTE6XHRcdFx0XHRcdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IHB0KVxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMzEyLXtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMTctLyoqXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMTg6ICogbGliZXRoX3J4X3B0X3NldF9oYXNoIC0gZmlsbCBpbiBza2IgaGFzaCB2YWx1ZSBiYXNpbmcgb24gdGhlIFBUXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMTktICogQHNrYjogc2tiIHRvIGZpbGwgdGhlIGhhc2ggaW5cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMjItICovXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMjM6c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF9yeF9wdF9zZXRfaGFzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaGFzaCxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMyNDpcdFx0XHRcdFx0IHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMjUte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTgtXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo5OiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgvdHlwZXMuaFx1MDAzZVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTAtXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTMtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxNDogKiBlbnVtIGxpYmV0aF9zcWVfdHlwZSAtIHR5cGUgb2YgXHUwMDI2bGliZXRoX3NxZSB0byBhY3Qgb24gVHggY29tcGxldGlvblxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTUtICogQExJQkVUSF9TUUVfRU1QVFk6IHVudXNlZC9lbXB0eSBPUiBYRFBfVFgvWFNrIGZyYW1lLCBubyBhY3Rpb24gcmVxdWlyZWRcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0yMC0gKiBAX19MSUJFVEhfU1FFX1hEUF9TVEFSVDogc2VwYXJhdG9yIGJldHdlZW4gc2tiIGFuZCBYRFAgdHlwZXNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjIxOiAqIEBMSUJFVEhfU1FFX1hEUF9UWDogXHUwMDI2c2tiX3NoYXJlZF9pbmZvLCBsaWJldGhfeGRwX3JldHVybl9idWZmX2J1bGsoKSwgc3RhdHNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTIyLSAqIEBMSUJFVEhfU1FFX1hEUF9YTUlUOiBcdTAwMjZ4ZHBfZnJhbWUsIHVubWFwIGFuZCB4ZHBfcmV0dXJuX2ZyYW1lX2J1bGsoKSwgc3RhdHNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTIzLSAqIEBMSUJFVEhfU1FFX1hEUF9YTUlUX0ZSQUc6IFx1MDAyNnhkcF9mcmFtZSBmcmFnLCBvbmx5IHVubWFwIERNQVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MjQ6ICogQExJQkVUSF9TUUVfWFNLX1RYOiBcdTAwMjZsaWJldGhfeGRwX2J1ZmYgb24gWFNrIHF1ZXVlLCB4c2tfYnVmZl9mcmVlKCksIHN0YXRzXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoyNTogKiBATElCRVRIX1NRRV9YU0tfVFhfRlJBRzogXHUwMDI2bGliZXRoX3hkcF9idWZmIGZyYWcgb24gWFNrIHF1ZXVlLCB4c2tfYnVmZl9mcmVlKClcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTI2LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6Mjc6ZW51bSBsaWJldGhfc3FlX3R5cGUge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMjgtXHRMSUJFVEhfU1FFX0VNUFRZXHRcdD0gMFUsXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtNDItLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo0MzogKiBzdHJ1Y3QgbGliZXRoX3NxZSAtIHJlcHJlc2VudHMgYSBTZW5kIFF1ZXVlIEVsZW1lbnQgLyBUeCBidWZmZXJcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTQ0LSAqIEB0eXBlOiB0eXBlIG9mIHRoZSBidWZmZXIsIHNlZSB0aGUgZW51bSBhYm92ZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTU3LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6NTg6c3RydWN0IGxpYmV0aF9zcWUge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6NTk6XHRlbnVtIGxpYmV0aF9zcWVfdHlwZVx0XHR0eXBlOjMyO1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtNjAtXHR1MzJcdFx0XHRcdHJzX2lkeDtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC02Ni1cdFx0c3RydWN0IHhkcF9mcmFtZVx0XHQqeGRwZjtcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjY3Olx0XHRzdHJ1Y3QgbGliZXRoX3hkcF9idWZmXHRcdCp4c2s7XG5pbmNsdWRlL25ldC9saWJldGgvdHguaC02OC1cdH07XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtODEtICogTElCRVRIX1NRRV9DSEVDS19QUklWIC0gY2hlY2sgdGhlIGRyaXZlciYjMzk7cyBwcml2YXRlIFNRRSBkYXRhXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo4MjogKiBAcDogdHlwZSBvciBuYW1lIG9mIHRoZSBvYmplY3QgdGhlIGRyaXZlciB3YW50cyB0byBmaXQgaW50byBcdTAwMjZsaWJldGhfc3FlXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04My0gKlxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6ODQ6ICogTWFrZSBzdXJlIHRoZSBkcml2ZXImIzM5O3MgcHJpdmF0ZSBkYXRhIGZpdHMgaW50byBsaWJldGhfc3FlOjpwcml2LiBUbyBiZSB1c2VkXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04NS0gKiByaWdodCBhZnRlciBpdHMgZGVjbGFyYXRpb24uXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtODctI2RlZmluZSBMSUJFVEhfU1FFX0NIRUNLX1BSSVYocClcdFx0XHRcdFx0ICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6ODg6XHRzdGF0aWNfYXNzZXJ0KHNpemVvZihwKSBcdTAwM2M9IHNpemVvZl9maWVsZChzdHJ1Y3QgbGliZXRoX3NxZSwgcHJpdikpXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04OS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTkwLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6OTE6ICogc3RydWN0IGxpYmV0aF9jcV9wcCAtIGNvbXBsZXRpb24gcXVldWUgcG9sbCBwYXJhbXNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTkyLSAqIEBkZXY6IFx1MDAyNmRldmljZSB0byBwZXJmb3JtIERNQSB1bm1hcHBpbmdcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC05OC0gKlxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6OTk6ICogbGliZXRoIHVzZXMgdGhpcyBzdHJ1Y3R1cmUgdG8gYWNjZXNzIG9iamVjdHMgbmVlZGVkIGZvciBwZXJmb3JtaW5nIGZ1bGxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTEwMC0gKiBUeCBjb21wbGV0ZSBvcGVyYXRpb24gd2l0aG91dCBwYXNzaW5nIGxvdHMgb2YgYXJndW1lbnRzIGFuZCBjaGFuZ2UgdGhlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTAyLSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTAzOnN0cnVjdCBsaWJldGhfY3FfcHAge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTA0LVx0c3RydWN0IGRldmljZVx0XHRcdCpkZXY7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTA3LVx0dW5pb24ge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTA4Olx0XHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHNcdCpzcztcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjEwOTpcdFx0c3RydWN0IGxpYmV0aF94ZHBzcV9uYXBpX3N0YXRzXHQqeHNzO1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTEwLVx0fTtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xMTYtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxMTc6ICogbGliZXRoX3R4X2NvbXBsZXRlIC0gcGVyZm9ybSBUeCBjb21wbGV0aW9uIGZvciBvbmUgU1FFXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xMTgtICogQHNxZTogU1FFIHRvIGNvbXBsZXRlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTIzLSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTI0OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfdHhfY29tcGxldGUoc3RydWN0IGxpYmV0aF9zcWUgKnNxZSxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjEyNTpcdFx0XHRcdCAgICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfY3FfcHAgKmNwKVxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTI2LXtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xNTYtXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxNTc6dm9pZCBsaWJldGhfdHhfY29tcGxldGVfYW55KHN0cnVjdCBsaWJldGhfc3FlICpzcWUsIHN0cnVjdCBsaWJldGhfY3FfcHAgKmNwKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTE1OC1cbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMS0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjEyOiAqIHN0cnVjdCBsaWJldGhfcnFfbmFwaV9zdGF0cyAtIFwmIzM0O2hvdFwmIzM0OyBjb3VudGVycyB0byB1cGRhdGUgaW4gUnggcG9sbGluZyBsb29wXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMy0gKiBAcGFja2V0czogcmVjZWl2ZWQgZnJhbWVzIGNvdW50ZXJcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xOC0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjE5OnN0cnVjdCBsaWJldGhfcnFfbmFwaV9zdGF0cyB7XG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0yMC1cdHVuaW9uIHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0zMS0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjMyOiAqIHN0cnVjdCBsaWJldGhfc3FfbmFwaV9zdGF0cyAtIFwmIzM0O2hvdFwmIzM0OyBjb3VudGVycyB0byB1cGRhdGUgaW4gVHggY29tcGxldGlvbiBsb29wXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0zMy0gKiBAcGFja2V0czogY29tcGxldGVkIGZyYW1lcyBjb3VudGVyXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMzYtICovXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDozNzpzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMge1xuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMzgtXHR1bmlvbiB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNDctLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo0ODogKiBzdHJ1Y3QgbGliZXRoX3hkcHNxX25hcGlfc3RhdHMgLSBcJiMzNDtob3RcJiMzNDsgY291bnRlcnMgdG8gdXBkYXRlIGluIFhEUCBUeFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNDktICpcdFx0XHRcdCAgICBjb21wbGV0aW9uIGxvb3Bcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC01NC0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjU1OnN0cnVjdCBsaWJldGhfeGRwc3FfbmFwaV9zdGF0cyB7XG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC01Ni1cdHVuaW9uIHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC02OS0gKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZXMgc2hvdWxkIGJlIGVtYmVkZGVkIGludG8gZHJpdmVyJiMzOTtzIHF1ZXVlIHN0cnVjdHVyZVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmg6NzA6ICogYW5kIHBhc3NlZCB0byB0aGUgbGliZXRoX3hkcCBoZWxwZXJzLCBuZXZlciB1c2VkIGRpcmVjdGx5LlxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNzEtICovXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNzUtLyoqXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo3NjogKiBzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgLSBsb2NraW5nIHByaW1pdGl2ZSBmb3Igc2hhcmluZyBYRFBTUXNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTc3LSAqIEBsb2NrOiBzcGlubG9jayBmb3IgbG9ja2luZyB0aGUgcXVldWVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC03OS0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjgwOnN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayB7XG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC04MS1cdHNwaW5sb2NrX3RcdFx0XHRsb2NrO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTg3LS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmg6ODg6ICogc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAtIHRpbWVyIGZvciBjbGVhbmluZyB1cCBYRFBTUXMgdy9vIGludGVycnVwdHNcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTg5LSAqIEB4ZHBzcTogcXVldWUgdGhpcyB0aW1lciBiZWxvbmdzIHRvXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtOTYtICovXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo5NzpzdHJ1Y3QgbGliZXRoX3hkcHNxX3RpbWVyIHtcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTk4LVx0dm9pZFx0XHRcdFx0KnhkcHNxO1xuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmg6OTk6XHRzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2tcdCpsb2NrO1xuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTAwLVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwNi0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjEwNzogKiBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmX3N0YXNoIC0gc3RydWN0IGZvciBzdGFzaGluZyBcdTAwMjZ4ZHBfYnVmZiBvbnRvIGEgcXVldWVcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwOC0gKiBAZGF0YTogcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZyYW1lLCB4ZHBfYnVmZi5kYXRhXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTEzLSAqXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMTQ6ICogXHUwMDI2eGRwX2J1ZmYgaXMgNTYgYnl0ZXMgbG9uZyBvbiB4NjQsIFx1MDAyNmxpYmV0aF94ZHBfYnVmZiBpcyA2NCBieXRlcy4gVGhpc1xuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTE1LSAqIHN0cnVjdHVyZSBjYXJyaWVzIG9ubHkgbmVjZXNzYXJ5IGZpZWxkcyB0byBzYXZlL3Jlc3RvcmUgYSBwYXJ0aWFsbHkgYnVpbHRcbi0tXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMTctICovXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMTg6c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB7XG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMTktXHR2b2lkXHRcdFx0XHQqZGF0YTtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMDojaW5jbHVkZSBcdTAwM2NuZXQvbGliZXRoL3J4LmhcdTAwM2VcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMTojaW5jbHVkZSBcdTAwM2NuZXQvbGliZXRoL3R4LmhcdTAwM2VcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMi0jaW5jbHVkZSBcdTAwM2NuZXQveHNrX2J1ZmZfcG9vbC5oXHUwMDNlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTE4PWVudW0ge1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNi0vKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI3OiAqIFx1MDAyNnhkcF9idWZmX3hzayBpcyB0aGUgbGFyZ2VzdCBzdHJ1Y3R1cmUgXHUwMDI2bGliZXRoX3hkcF9idWZmIGdldHMgY2FzdGVkIHRvLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI4LSAqIHBpY2sgbWF4aW11bSBwb2ludGVyLWNvbXBhdGlibGUgYWxpZ25tZW50LlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0zNS0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDozNjogKiBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmIC0gbGliZXRoIGV4dGVuc2lvbiBvdmVyIFx1MDAyNnhkcF9idWZmXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMzctICogQGJhc2U6IG1haW4gXHUwMDI2eGRwX2J1ZmZcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNDYtICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NDc6c3RydWN0IGxpYmV0aF94ZHBfYnVmZiB7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNDgtXHR1bmlvbiB7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTU2LX0gX19hbGlnbmVkKF9fTElCRVRIX1hEUF9CVUZGX0FMSUdOKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo1NzpzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYsIGRhdGEpID09XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNTgtXHQgICAgICBvZmZzZXRvZihzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCB4ZHAuZGF0YSkpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjU5OnN0YXRpY19hc3NlcnQob2Zmc2V0b2Yoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgZGVzYykgPT1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC02MC1cdCAgICAgIG9mZnNldG9mKHN0cnVjdCB4ZHBfYnVmZl94c2ssIGNiKSk7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9NjE9c3RhdGljX2Fzc2VydChJU19BTElHTkVEKHNpemVvZihzdHJ1Y3QgeGRwX2J1ZmZfeHNrKSxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo2MjpcdFx0XHQgX19hbGlnbm9mKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYpKSk7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjMtXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NjU6ICogX19MSUJFVEhfWERQX09OU1RBQ0tfQlVGRiAtIGRlY2xhcmUgYSBcdTAwMjZsaWJldGhfeGRwX2J1ZmYgb24gdGhlIHN0YWNrXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjYtICogQG5hbWU6IG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGRlY2xhcmVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNzEtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NzI6ICogTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYgLSBkZWNsYXJlIGEgXHUwMDI2bGliZXRoX3hkcF9idWZmIG9uIHRoZSBzdGFja1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTczLSAqIEBuYW1lOiBuYW1lIG9mIHRoZSB2YXJpYWJsZSB0byBkZWNsYXJlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTc2LSNkZWZpbmUgTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYobmFtZSwgLi4uKVx0XHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo3NzpcdF9fTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYobmFtZSwgX19saWJldGhfeGRwX3ByaXZfc3ooX19WQV9BUkdTX18pKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTc4LVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTc5LSNkZWZpbmUgX19fTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYobmFtZSwgLi4uKVx0XHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4MDpcdF9fREVGSU5FX0ZMRVgoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgbmFtZSwgcHJpdixcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04MS1cdFx0ICAgICAgTElCRVRIX1hEUF9QUklWX1NaKF9fVkFfQVJHU19fICYjNDM7IDApLFx0XHQgICAgICBcXFxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04NC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4NTojZGVmaW5lIF9fbGliZXRoX3hkcF9wcml2X3N6KC4uLilcdFx0XHRcdFx0ICAgICAgXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4NjpcdENPTkNBVEVOQVRFKF9fbGliZXRoX3hkcF9wc3osIENPVU5UX0FSR1MoX19WQV9BUkdTX18pKShfX1ZBX0FSR1NfXylcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04Ny1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4ODojZGVmaW5lIF9fbGliZXRoX3hkcF9wc3owKC4uLilcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4OTojZGVmaW5lIF9fbGliZXRoX3hkcF9wc3oxKC4uLilcdFx0c2l6ZW9mKF9fVkFfQVJHU19fKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTkwLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTkxLSNkZWZpbmUgTElCRVRIX1hEUF9QUklWX1NaKHN6KVx0XHRcdFx0XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6OTI6XHQoQUxJR04oc3osIF9fYWxpZ25vZihzdHJ1Y3QgbGliZXRoX3hkcF9idWZmKSkgLyBzaXplb2YobG9uZykpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTMtXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTk2LVx0c3RhdGljX2Fzc2VydChvZmZzZXRvZmVuZChzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCBjYikgXHUwMDNlPVx0XHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjk3Olx0XHQgICAgICBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYsIHByaXYsXHQgICAgICBcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTk4LVx0XHRcdFx0ICAgIExJQkVUSF9YRFBfUFJJVl9TWihzeikpKVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDEtXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTAyOkRFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShsaWJldGhfeGRwc3Ffc2hhcmUpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEwMy1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTA1OiAqIGxpYmV0aF94ZHBzcV9udW0gLSBjYWxjdWxhdGUgb3B0aW1hbCBudW1iZXIgb2YgWERQU1FzIGZvciB0aGlzIGRldmljZSAmIzQzOyBzeXNcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDYtICogQHJ4cTogY3VycmVudCBudW1iZXIgb2YgYWN0aXZlIFJ4IHF1ZXVlc1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMTUtICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTE2OnN0YXRpYyBpbmxpbmUgdTMyIGxpYmV0aF94ZHBzcV9udW0odTMyIHJ4cSwgdTMyIHR4cSwgdTMyIG1heClcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMTcte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjEtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTIyOiAqIGxpYmV0aF94ZHBzcV9zaGFyZWQgLSB3aGV0aGVyIFhEUFNRcyBjYW4gYmUgc2hhcmVkIGJldHdlZW4gc2V2ZXJhbCBDUFVzXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTIzLSAqIEBudW06IG51bWJlciBvZiBhY3RpdmUgWERQU1FzXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEyNi0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMjc6c3RhdGljIGlubGluZSBib29sIGxpYmV0aF94ZHBzcV9zaGFyZWQodTMyIG51bSlcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjgte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzItLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTMzOiAqIGxpYmV0aF94ZHBzcV9pZCAtIGdldCBYRFBTUSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ1BVXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTM0LSAqIEBudW06IG51bWJlciBvZiBhY3RpdmUgWERQU1FzXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTM1LSAqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTM2OiAqIEhlbHBlciBmb3IgbGliZXRoX3hkcCByb3V0aW5lcywgZG8gbm90IHVzZSBpbiBkcml2ZXJzIGRpcmVjdGx5LlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEzNy0gKlxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzktICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTQwOnN0YXRpYyBpbmxpbmUgdTMyIGxpYmV0aF94ZHBzcV9pZCh1MzIgbnVtKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE0MS17XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE0My1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNDQ6XHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFx1MDAyNlx1MDAyNlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE0NTpcdCAgICBsaWJldGhfeGRwc3Ffc2hhcmVkKG51bSkpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTQ2LVx0XHRyZXQgJT0gbnVtO1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTAtXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTUxOnZvaWQgX19saWJldGhfeGRwc3FfZ2V0KHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jayxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTItXHRcdFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTUzOnZvaWQgX19saWJldGhfeGRwc3FfcHV0KHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jayxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTQtXHRcdFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE1Ni0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNTc6ICogbGliZXRoX3hkcHNxX2dldCAtIGluaXRpYWxpemUgXHUwMDI2bGliZXRoX3hkcHNxX2xvY2tcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTgtICogQGxvY2s6IGxvY2sgdG8gaW5pdGlhbGl6ZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNjQtICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTY1OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfZ2V0KHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jayxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNjYtXHRcdFx0XHQgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTY5LVx0aWYgKHVubGlrZWx5KHNoYXJlKSlcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNzA6XHRcdF9fbGliZXRoX3hkcHNxX2dldChsb2NrLCBkZXYpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3MS19XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3My0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNzQ6ICogbGliZXRoX3hkcHNxX3B1dCAtIGRlaW5pdGlhbGl6ZSBcdTAwMjZsaWJldGhfeGRwc3FfbG9ja1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3NS0gKiBAbG9jazogbG9jayB0byBkZWluaXRpYWxpemVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgwLSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4MTpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX3B1dChzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgyLVx0XHRcdFx0ICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgzLXtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODQ6XHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFx1MDAyNlx1MDAyNiBsb2NrLVx1MDAzZXNoYXJlKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4NTpcdFx0X19saWJldGhfeGRwc3FfcHV0KGxvY2ssIGRldik7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTg2LX1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODctXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTg4OnZvaWQgX19saWJldGhfeGRwc3FfbG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4OTp2b2lkIF9fbGliZXRoX3hkcHNxX3VubG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE5MC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTEtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTkyOiAqIGxpYmV0aF94ZHBzcV9sb2NrIC0gZ3JhYiBcdTAwMjZsaWJldGhfeGRwc3FfbG9jayBpZiBuZWVkZWRcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTMtICogQGxvY2s6IGxvY2sgdG8gdGFrZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTctICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTk4OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfbG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTk5LXtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMDA6XHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFx1MDAyNlx1MDAyNiBsb2NrLVx1MDAzZXNoYXJlKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIwMTpcdFx0X19saWJldGhfeGRwc3FfbG9jayhsb2NrKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMDItfVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMDQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjA1OiAqIGxpYmV0aF94ZHBzcV91bmxvY2sgLSBmcmVlIFx1MDAyNmxpYmV0aF94ZHBzcV9sb2NrIGlmIG5lZWRlZFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIwNi0gKiBAbG9jazogbG9jayB0byBmcmVlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIxMC0gKi9cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMTE6c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF94ZHBzcV91bmxvY2soc3RydWN0IGxpYmV0aF94ZHBzcV9sb2NrICpsb2NrKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIxMi17XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjEzOlx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXHUwMDI2bGliZXRoX3hkcHNxX3NoYXJlKSBcdTAwMjZcdTAwMjYgbG9jay1cdTAwM2VzaGFyZSlcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMTQ6XHRcdF9fbGliZXRoX3hkcHNxX3VubG9jayhsb2NrKTtcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMTUtfVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMTgtXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjE5OnZvaWQgbGliZXRoX3hkcHNxX2luaXRfdGltZXIoc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIsIHZvaWQgKnhkcHNxLFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIyMDpcdFx0XHQgICAgIHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jayxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMjEtXHRcdFx0ICAgICB2b2lkICgqcG9sbCkoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKSk7XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIyMy0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMjQ6ICogbGliZXRoX3hkcHNxX2RlaW5pdF90aW1lciAtIGRlaW5pdGlhbGl6ZSBcdTAwMjZsaWJldGhfeGRwc3FfdGltZXJcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMjUtICogQHRpbWVyOiB0aW1lciB0byBkZWluaXRpYWxpemVcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjI4LSAqL1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIyOTpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX2RlaW5pdF90aW1lcihzdHJ1Y3QgbGliZXRoX3hkcHNxX3RpbWVyICp0aW1lcilcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMzAte1xuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMzQtLyoqXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjM1OiAqIGxpYmV0aF94ZHBzcV9xdWV1ZV90aW1lciAtIHJ1biBcdTAwMjZsaWJldGhfeGRwc3FfdGltZXJcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMzYtICogQHRpbWVyOiB0aW1lciB0byBxdWV1ZVxuLS1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNDMtICovXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjQ0OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfcXVldWVfdGltZXIoc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjQ1LXtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjUwLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI1MTogKiBsaWJldGhfeGRwc3FfcnVuX3RpbWVyIC0gd3JhcHBlciB0byBydW4gYSBxdWV1ZSBjbGVhbi11cCBvbiBhIHRpbWVyIGV2ZW50XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjUyLSAqIEB3b3JrOiB3b3JrcXVldWUgYmVsb25naW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRpbWVyXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTI1OT1zdGF0aWMgX19hbHdheXNfaW5saW5lIHZvaWRcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjA6bGliZXRoX3hkcHNxX3J1bl90aW1lcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmssXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjYxLVx0XHQgICAgICAgdTMyICgqcG9sbCkodm9pZCAqeGRwc3EsIHUzMiBidWRnZXQpKVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2Mi17XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjYzOlx0c3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCp0aW1lciksXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjY0LVx0XHRcdFx0XHRcdFx0ZHdvcmsud29yayk7XG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjY1LVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI2NjpcdGxpYmV0aF94ZHBzcV9sb2NrKHRpbWVyLVx1MDAzZWxvY2spO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2Ny1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNjgtXHRpZiAocG9sbCh0aW1lci1cdTAwM2V4ZHBzcSwgVTMyX01BWCkpXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjY5Olx0XHRsaWJldGhfeGRwc3FfcXVldWVfdGltZXIodGltZXIpO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI3MC1cbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzE6XHRsaWJldGhfeGRwc3FfdW5sb2NrKHRpbWVyLVx1MDAzZWxvY2spO1xuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI3Mi19XG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI3Ni0vKipcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzc6ICogZW51bSAtIGxpYmV0aF94ZHAgaW50ZXJuYWwgVHggZmxhZ3NcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNzgtICogQExJQkVUSF9YRFBfVFhfQlVMSzogb25lIGJ1bGsgc2l6ZSBhdCB3aGljaCBpdCB3aWxsIGJlIGZsdXNoZWQgdG8gdGhlIHF1ZXVlXG4tLVxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTI4ND1lbnVtIHtcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjkzLS8qKlxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI5NDogKiBlbnVtIC0gXHUwMDI2bGliZXRoX3hkcF90eF9mcmFtZSBhbmQgXHUwMDI2bGliZXRoX3hkcF90eF9kZXNjIGZsYWdzXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjk1LSAqIEBMSUJFVEhfWERQX1RYX0xFTjogb25seSBmb3IgYGBYRFBfVFhgYCwgWzE1OjBdIG9mIDo6bGVuX2ZsIGlzIGFjdHVhbCBsZW5ndGhcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjIzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNDgyCgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2ggb2YgYSBQYXRjaCBhbmQgaXRzIEltcGxpY2F0aW9ucyBmb3IgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCB0b3VjaGVzIGBsaWJldGhgLCB3aGljaCBhcHBlYXJzIHRvIGJlIGEgZ2VuZXJpYyBFdGhlcm5ldCBkcml2ZXIgbGlicmFyeS4gVGhpcyBsaWJyYXJ5IGlzIGxpa2VseSB1c2VkIGJ5IGBpYXZmYCBhbmQgbWF5YmUgc29tZSBvdGhlciBkcml2ZXJzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGlhdmZfdHhyeC5jYCB3aGljaCBpcyBzcGVjaWZpYyB0byB0aGUgSW50ZWwgQVZGIGRyaXZlciwgYW5kIGFsc28gYGluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oYCwgYnV0IHRob3NlIGNoYW5nZXMgYXJlIGp1c3QgaW5saW5lIGZ1bmN0aW9ucy4gTXkgZmlyc3QgaW1wcmVzc2lvbiBpcywgdGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQsIHBvdGVudGlhbGx5IGEgbWlub3IgdXBkYXRlLgoKQnV0IHRoZW4gSSByZS1yZWFkIHRoZSBwcm9tcHQuIEl0JiMzOTtzIGZvY3VzZWQgb24gY29kZSBpbiAqdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMqIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLiBUaGUgcHJvbXB0IHNheXMgaXQmIzM5O3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFdhaXQgYSBtaW51dGUsIGlzIGBpYXZmYCBvbmUgb2YgdGhvc2UgZHJpdmVycz8KClllcywgaXQgaXMhIGBpYXZmYCBpcyB0aGUgSW50ZWwgRXRoZXJuZXQgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIFlvdSBuZWVkIGFuIEludGVsIHBoeXNpY2FsIE5JQyAobGlrZSBpNDBlIG9yIGljZSkgdG8gY3JlYXRlIHRoZSBWRiwgd2hpY2ggaXMgdGhlbiBwYXNzZWQgdG8gdGhlIFZNLiBRRU1VIGRlZmluaXRlbHkgZG9lc24mIzM5O3QgZW11bGF0ZSBgaWF2ZmAgbmF0aXZlbHkuIEkmIzM5O20gc3RhcnRpbmcgdG8gc2VlIHdoZXJlIHRoaXMgaXMgZ29pbmcuIENhbiBJIGV2ZW4gZnV6eiBpdCB3aXRoIFN5emthbGxlcj8KClN5emthbGxlciBkb2VzIGhhdmUgYHN5el9wY2lfZGV2aWNlYCwgd2hpY2ggY2FuIGVtdWxhdGUgUENJIGRldmljZXMsIGJ1dCBvbmx5IGlmIHRoZXkgaGF2ZSBkZXZpY2UgZGVzY3JpcHRpb25zLiBJIG5lZWQgdG8gY2hlY2sgaWYgU3l6a2FsbGVyIGFjdHVhbGx5IGZ1enplZCBgaWF2ZmAuIEkgY2FuJiMzOTt0IGxvb2sgdGhhdCB1cCBvbmxpbmUgcmlnaHQgbm93LCBidXQgSSBjYW4gY2hlY2sgdGhlIGtlcm5lbCBzb3VyY2UgdG8gc2VlIGlmIGBpYXZmYCBpcyBjb25zaWRlcmVkIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlci4KClllcywgaXQmIzM5O3MgdW5kZXIgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvYC4gRGVmaW5pdGVseSB2ZW5kb3Itc3BlY2lmaWMuIEJ1dCBpcyBpdCBhIFNtYXJ0TklDIG9yIFBDSWUgc3dpdGNoPyBObywgaXQmIzM5O3MganVzdCBhIHN0YW5kYXJkIEV0aGVybmV0IFZGIGRyaXZlci4KCk9rYXksIGxldCYjMzk7cyBjaXJjbGUgYmFjayB0byB0aGUgcHJvbXB0LCB3aGljaCBzYXlzLCAqJiMzNDt2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycy4mIzM0OyogU3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVycyBsaWtlIGBlMTAwMGVgLCBgaWdiYCwgYGl4Z2JlYCwgYGk0MGVgLCBgaWNlYCwgYW5kIGBpYXZmYCBhcmUgYWxsIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMsIHJpZ2h0PyBBbmQgdGhleSByZXF1aXJlIHBoeXNpY2FsIGhhcmR3YXJlIHVubGVzcyBlbXVsYXRlZD8gUmlnaHQgYWdhaW4hIFFFTVUgZG9lcyBlbXVsYXRlIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgKnJlY2VudGx5KiBgaWdiYCwgYnV0IGl0ICpkb2VzIG5vdCogZW11bGF0ZSBgaWF2ZmAuCgpTbywgYGlhdmZgIHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGF0IG1lYW5zIGl0JiMzOTtzIG5vdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIHN0YW5kYXJkIFFFTVUuIFRoYXQmIzM5O3MgYSBzaWduaWZpY2FudCBjb25zdHJhaW50LiBCdXQsIHRoZSBwYXRjaCBkb2VzIHRvdWNoIGBsaWJldGhgLiBJZiBgbGliZXRoYCBpcyB1c2VkIGJ5ICpvdGhlciogZHJpdmVycywgdGhlcmUgbWlnaHQgYmUgYSByb3V0ZSB0byByZWFjaCB0aGUgY2hhbmdlcyBpZiB0aG9zZSBkcml2ZXJzICphcmUqIGVtdWxhdGVkLiBUaW1lIHRvIGNoZWNrIHdoYXQgb3RoZXIgZHJpdmVycyB1c2UgYGxpYmV0aGAuIFRoYXQmIzM5O3MgdGhlIG5leHQgc3RlcC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTg4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfSU5URUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSUJFVEgpICYjNDM7PSBsaWJldGgvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZS03LW9iai15ICYjNDM7PSBsaWJpZS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jPTE3NDI9c3RhdGljIGlubGluZSB2b2lkIGk0MGVfcnhfY2hlY2tzdW0oc3RydWN0IGk0MGVfdnNpICp2c2ksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xNzQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTc0NjpcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc0Ny1cdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc1Ny1cdGRlY29kZWQgPSBsaWJpZV9yeF9wdF9wYXJzZShwdHlwZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3NTg6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVx1MDAzZW5ldGRldiwgZGVjb2RlZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NTktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njg6XHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njk6XHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYz0xODE0PXN0YXRpYyBpbmxpbmUgdm9pZCBpNDBlX3J4X2hhc2goc3RydWN0IGk0MGVfcmluZyAqcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxODE5Olx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODIwLVx0dTMyIGhhc2g7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODI1LVx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHJ4X3B0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgyNjpcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgzMC1cdFx0aGFzaCA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2MtXHUwMDNld2IucXdvcmQwLmhpX2R3b3JkLnJzcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE4MzE6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODMyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9NzExPXN0YXRpYyB2b2lkIGlhdmZfY2xlYW5fcnhfcmluZyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzIzLVx0Zm9yICh1MzIgaSA9IHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbjsgaSAhPSByeF9yaW5nLVx1MDAzZW5leHRfdG9fdXNlOyApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzI0Olx0XHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfZnFlcyA9IFx1MDAyNnJ4X3JpbmctXHUwMDNlcnhfZnFlc1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3MjY6XHRcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfZnFlcy1cdTAwM2VuZXRtZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03MjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03NDI9dm9pZCBpYXZmX2ZyZWVfcnhfcmVzb3VyY2VzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc0NDpcdHN0cnVjdCBsaWJldGhfZnEgZnEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0NS1cdFx0LmZxZXNcdD0gcnhfcmluZy1cdTAwM2VyeF9mcWVzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3NTc6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc1OC1cdHJ4X3JpbmctXHUwMDNlcnhfZnFlcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03Njg9aW50IGlhdmZfc2V0dXBfcnhfZGVzY3JpcHRvcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzY5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzcwOlx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzcxLVx0XHQuY291bnRcdFx0PSByeF9yaW5nLVx1MDAzZWNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3Nzc6XHRyZXQgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFx1MDAyNmZxLCBcdTAwMjZyeF9yaW5nLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODA1LWVycjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6ODA2Olx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXHUwMDI2ZnEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04MDctXHRyeF9yaW5nLVx1MDAzZXJ4X2ZxZXMgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9ODU5PWJvb2wgaWF2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHUxNiBjbGVhbmVkX2NvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4NjE6XHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NjItXHRcdC5wcFx0XHQ9IHJ4X3JpbmctXHUwMDNlcHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjg3OTpcdFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcdTAwMjZmcSwgbnR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODgwLVx0XHRpZiAoYWRkciA9PSBETUFfTUFQUElOR19FUlJPUilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTkyNT1zdGF0aWMgdm9pZCBpYXZmX3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkyNjpcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5Mjc6XHRcdFx0IHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTkyOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkzNzpcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkX3B0KSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTM4Olx0aXB2NiA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWRfcHQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzUtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5NzY6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzctaWF2Zl9sZWdhY3lfcnhfY3N1bShjb25zdCBzdHJ1Y3QgaWF2Zl92c2kgKnZzaSwgdTY0IHF3MSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTc4Olx0XHQgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05Nzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5ODA6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTgyOlx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2NoZWNrc3VtKHZzaS1cdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05ODMtXHRcdHJldHVybiBjc3VtX2JpdHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAwNjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDctaWF2Zl9mbGV4X3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHU2NCBxdzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwMDg6XHRcdCAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMDpcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMjpcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bSh2c2ktXHUwMDNlbmV0ZGV2LCBkZWNvZGVkX3B0KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMy1cdFx0cmV0dXJuIGNzdW1fYml0cztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEwMzc9c3RhdGljIHZvaWQgaWF2Zl9sZWdhY3lfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDM4LVx0XHRcdFx0X19sZTY0IHF3MSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAzOTpcdFx0XHRcdGNvbnN0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDQ0Olx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ4LVx0XHRoYXNoID0gbGU2NF9nZXRfYml0cyhxdzAsIElBVkZfUlhEX0xFR0FDWV9SU1NfTSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNDk6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWRfcHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDUwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTA2Mz1zdGF0aWMgdm9pZCBpYXZmX2ZsZXhfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY0LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNjU6XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNzA6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyaW5nLVx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzUtXHRcdGhhc2ggPSBsZTY0X2dldF9iaXRzKHF3MSwgSUFWRl9SWERfRkxFWF9SU1NfSEFTSF9NKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTA3NjpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZF9wdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTMxPXN0YXRpYyB2b2lkIGlhdmZfcHJvY2Vzc19za2JfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTM1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTEzNjpcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExMzc6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTExMzgtXHRfX2xlNjQgcXcwID0gcnhfZGVzYy1cdTAwM2VxdzA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTk3PXN0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExOTg6XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTk5LVx0XHRcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMjE3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEyMTg6XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjE5LVx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMjU0PXN0YXRpYyBib29sIGlhdmZfaXNfbm9uX2VvcChzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjU1Olx0XHRcdCAgICBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI1Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjg2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjg3OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyODgtaWF2Zl9leHRyYWN0X2xlZ2FjeV9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTMtXHR1NjQgcXcyID0gbGU2NF90b19jcHUocnhfZGVzYy1cdTAwM2VxdzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjk0Olx0c3RydWN0IGxpYmV0aF9ycWVfaW5mbyBmaWVsZHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTUtXHRib29sIGwydGFnMXAsIGwydGFnMnA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzMyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzMzOnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzQtaWF2Zl9leHRyYWN0X2ZsZXhfcnhfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTMzNzpcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzgtXHR1NjQgcXcwID0gbGU2NF90b19jcHUocnhfZGVzYy1cdTAwM2VxdzApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTM2NjpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzY3LWlhdmZfZXh0cmFjdF9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEzODk9c3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM5OC1cdHdoaWxlIChsaWtlbHkodG90YWxfcnhfcGFja2V0cyBcdTAwM2MgKHVuc2lnbmVkIGludClidWRnZXQpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEzOTk6XHRcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxNDAwOlx0XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDAxLVx0XHRzdHJ1Y3QgaWF2Zl9yeF9kZXNjICpyeF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTQzMC1cdFx0cnhfYnVmZmVyID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW3J4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjE0MzE6XHRcdGlmICghX19saWJldGhfcnhfc3luY19mb3JfY3B1KHBwLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDMyLVx0XHRcdGdvdG8gc2tpcF9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4Lmg9MjE4PXN0cnVjdCBpYXZmX3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmgtMjI2LVx0dW5pb24ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaDoyMjc6XHRcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9mcWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaC0yMjgtXHRcdHN0cnVjdCBpYXZmX3R4X2J1ZmZlciAqdHhfYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM9NjA3PXN0YXRpYyBpbnQgaWNlX3J4cV9wcF9jcmVhdGUoc3RydWN0IGljZV9yeF9yaW5nICpycSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYwOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MDk6XHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjEwLVx0XHQuY291bnRcdFx0PSBycS1cdTAwM2Vjb3VudCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MTg6XHRlcnIgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFx1MDAyNmZxLCBcdTAwMjZycS1cdTAwM2VxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxOS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM6NjMwOlx0ZnEgPSAoc3RydWN0IGxpYmV0aF9mcSl7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzEtXHRcdC5jb3VudFx0XHQ9IHJxLVx1MDAzZWNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYzNzpcdGVyciA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXHUwMDI2ZnEsIFx1MDAyNnJxLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjM4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMi0jaW5jbHVkZSBcdTAwM2NuZXQvZGNibmwuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6MTM6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC9yeC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYz0xMjMyPXN0YXRpYyBpbnQgaWNlX2xidGVzdF9yZWNlaXZlX2ZyYW1lcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMjMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jOjEyMzQ6XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtMTIzNS1cdGludCB2YWxpZF9mcmFtZXMsIGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjExOiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgveGRwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyLSNpbmNsdWRlIFx1MDAzY25ldC9kc2ZpZWxkLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz0xMTQ9aWNlX3VubWFwX2FuZF9mcmVlX3R4X2J1ZihzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI5LVx0Y2FzZSBJQ0VfVFhfQlVGX1hEUF9UWDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEzMDpcdFx0bGliZXRoX3hkcF9yZXR1cm5fdmEodHhfYnVmLVx1MDAzZXJhd19idWYsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTEyPXZvaWQgaWNlX3J4cV9wcF9kZXN0cm95KHN0cnVjdCBpY2VfcnhfcmluZyAqcnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTE0Olx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUxNS1cdFx0LmZxZXNcdD0gcnEtXHUwMDNlcnhfZnFlcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1MTk6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjAtXHRycS1cdTAwM2VyeF9mcWVzID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1Mjk6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MzAtXHRycS1cdTAwM2VoZHJfZnFlcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTM4PXZvaWQgaWNlX2NsZWFuX3J4X3Jpbmcoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjU1MTpcdGxpYmV0aF94ZHBfcmV0dXJuX3N0YXNoKFx1MDAyNnJ4X3JpbmctXHUwMDNleGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTQtXHRmb3IgKHUzMiBpID0gcnhfcmluZy1cdTAwM2VuZXh0X3RvX2NsZWFuOyBpICE9IHJ4X3JpbmctXHUwMDNlbmV4dF90b191c2U7ICkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTU1Olx0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KHJ4X3JpbmctXHUwMDNlcnhfZnFlc1tpXS5uZXRtZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU3LVx0XHRpZiAocnhfcmluZy1cdTAwM2VoZHJfcHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1NTg6XHRcdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhyeF9yaW5nLVx1MDAzZWhkcl9mcWVzW2ldLm5ldG1lbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NjUxPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjY1MjppY2VfcnVuX3hkcChzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY1My1cdCAgICBzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nLCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY4OS1cdGNhc2UgWERQX0RST1A6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo2OTA6XHRcdGxpYmV0aF94ZHBfcmV0dXJuX2J1ZmYoeGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY5MS1cdFx0cmV0ID0gSUNFX1hEUF9DT05TVU1FRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz04MjU9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHVuc2lnbmVkIGludCBjbGVhbmVkX2NvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjgyNzpcdGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgaGRyX2ZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODI4LVx0XHQucHBcdFx0PSByeF9yaW5nLVx1MDAzZWhkcl9wcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MzItXHR9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODMzOlx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgzNC1cdFx0LnBwXHRcdD0gcnhfcmluZy1cdTAwM2VwcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NTI6XHRcdGFkZHIgPSBsaWJldGhfcnhfYWxsb2MoXHUwMDI2ZnEsIG50dSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTMtXHRcdGlmIChhZGRyID09IERNQV9NQVBQSU5HX0VSUk9SKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODY2Olx0XHRhZGRyID0gbGliZXRoX3J4X2FsbG9jKFx1MDAyNmhkcl9mcSwgbnR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2Ny1cdFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NzA6XHRcdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhmcS5mcWVzW250dV0ubmV0bWVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg3MS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz05NDY9c3RhdGljIGludCBpY2VfY2xlYW5fcnhfaXJxKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5NTg6XHRsaWJldGhfeGRwX2luaXRfYnVmZih4ZHAsIFx1MDAyNnJ4X3JpbmctXHUwMDNleGRwLCBcdTAwMjZyeF9yaW5nLVx1MDAzZXhkcF9yeHEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTk2OC1cdFx0dW5pb24gaWNlXzMyYl9yeF9mbGV4X2Rlc2MgKnJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5Njk6XHRcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NzAtXHRcdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMC1cdFx0cnhfYnVmID0gXHUwMDI2cnhfcmluZy1cdTAwM2VoZHJfZnFlc1tudGNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTAxMTpcdFx0bGliZXRoX3hkcF9wcm9jZXNzX2J1ZmYoeGRwLCByeF9idWYsIHNpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMi1cdFx0cnhfYnVmLVx1MDAzZW5ldG1lbSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAyMS1cdFx0cnhfYnVmID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW250Y107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDIyOlx0XHRsaWJldGhfeGRwX3Byb2Nlc3NfYnVmZih4ZHAsIHJ4X2J1Ziwgc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwNDgtXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDQ5Olx0XHRcdGxpYmV0aF94ZHBfcmV0dXJuX2J1ZmZfc2xvdyh4ZHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA1MC1cdFx0XHRpY2Vfc3RhdHNfaW5jKHJ4X3JpbmctXHUwMDNlcmluZ19zdGF0cywgcnhfYnVmX2ZhaWxlZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwNzc6XHRsaWJldGhfeGRwX3NhdmVfYnVmZihcdTAwMjZyeF9yaW5nLVx1MDAzZXhkcCwgeGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjc6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC90eXBlcy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTI4NS1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjI4NjpcdFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0yODctXHRcdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9idWY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAwLVx0c3RydWN0IHBhZ2VfcG9vbCAqaGRyX3BwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzAxOlx0c3RydWN0IGxpYmV0aF9mcWUgKmhkcl9mcWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMxNy1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjMxODpcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB4ZHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMTk6XHRcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhzaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMyMC1cdH07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo2OiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgveGRwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz02NT1pY2VfcnhfaGFzaF90b19za2IoY29uc3Qgc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy02OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Njk6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzAtXHR1MzIgaGFzaDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzItXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocnhfcHR5cGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjczOlx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc3LVx0aWYgKGxpa2VseShoYXNoKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo3ODpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz0xMDg9aWNlX3J4X2NzdW0oc3RydWN0IGljZV9yeF9yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjExMTpcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTItXHR1MTYgcnhfc3RhdHVzMCwgcnhfc3RhdHVzMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTE4LVx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHB0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzoxMTk6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTEyMC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTM4Olx0aXB2NCA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjEzOTpcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xNDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTI3MT1pY2VfY2xlYW5feGRwX3R4X2J1ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTI3NS1cdGNhc2UgSUNFX1RYX0JVRl9YRFBfVFg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Mjc2Olx0XHRsaWJldGhfeGRwX3JldHVybl92YSh0eF9idWYtXHUwMDNlcmF3X2J1ZiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMjc3LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTIzPXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9od190cyhjb25zdCBzdHJ1Y3QgeGRwX21kICpjdHgsIHU2NCAqdHNfbnMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTI0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1MjU6XHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTI2LVx0c3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1Mjg6XHRyeF9yaW5nID0gbGliZXRoX3hkcF9idWZmX3RvX3JxKHhkcF9leHQsIHR5cGVvZigqcnhfcmluZyksIHhkcF9yeHEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTU2PXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9oYXNoKGNvbnN0IHN0cnVjdCB4ZHBfbWQgKmN0eCwgdTMyICpoYXNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01NTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjU1OTpcdGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcF9leHQgPSAodm9pZCAqKWN0eDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01NjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTU3OD1zdGF0aWMgaW50IGljZV94ZHBfcnhfdmxhbl90YWcoY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCBfX2JlMTYgKnZsYW5fcHJvdG8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTgxOlx0Y29uc3Qgc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwX2V4dCA9ICh2b2lkICopY3R4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4Mi1cdHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTg0Olx0cnhfcmluZyA9IGxpYmV0aF94ZHBfYnVmZl90b19ycSh4ZHBfZXh0LCB0eXBlb2YoKnJ4X3JpbmcpLCB4ZHBfcnhxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01ODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Vucm9sbC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03LSNpbmNsdWRlIFx1MDAzY25ldC94ZHBfc29ja19kcnYuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjMyOlx0XHQoKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKilmaXJzdCktXHUwMDNlZGVzYyA9IHJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY3Ni1cdHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiA9IG50YztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6Njc3Olx0cnhfcmluZy1cdTAwM2V4c2sgPSAoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKWZpcnN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9Njc1PXN0cnVjdCBpZHBmX2FkYXB0ZXIge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNDpcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNpbmdsZXFfcHRfbGt1cDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNTpcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNwbGl0cV9wdF9sa3VwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzA2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTE4OD1zdGF0aWMgdm9pZCBpZHBmX3R4X3NpbmdsZXFfZG1hX21hcF9lcnJvcihzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0xOTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjE5MjpcdHN0cnVjdCBsaWJldGhfc3FfbmFwaV9zdGF0cyBzcyA9IHsgfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoxOTM6XHRzdHJ1Y3QgbGliZXRoX2NxX3BwIGNwID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTE5NC1cdFx0LmRldlx0PSB0eHEtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0yMDYtXHRcdHR4X2J1ZiA9IFx1MDAyNnR4cS1cdTAwM2V0eF9idWZbaWR4XTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoyMDc6XHRcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFx1MDAyNmNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0yMDgtXHRcdGlmICh0eF9idWYgPT0gZmlyc3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTQ4MT1zdGF0aWMgYm9vbCBpZHBmX3R4X3NpbmdsZXFfY2xlYW4oc3RydWN0IGlkcGZfdHhfcXVldWUgKnR4X3EsIGludCBuYXBpX2J1ZGdldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDgzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0ODQ6XHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMgc3MgPSB7IH07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg1LVx0c3RydWN0IGlkcGZfYmFzZV90eF9kZXNjICp0eF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy00ODctXHRzMTYgbnRjID0gdHhfcS1cdTAwM2VuZXh0X3RvX2NsZWFuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ4ODpcdHN0cnVjdCBsaWJldGhfY3FfcHAgY3AgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg5LVx0XHQuZGV2XHQ9IHR4X3EtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MjgtXHRcdC8qIHVwZGF0ZSB0aGUgc3RhdGlzdGljcyBmb3IgdGhpcyBwYWNrZXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1Mjk6XHRcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFx1MDAyNmNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0Mi1cdFx0XHQvKiB1bm1hcCBhbnkgcmVtYWluaW5nIHBhZ2VkIGRhdGEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1NDM6XHRcdFx0bGliZXRoX3R4X2NvbXBsZXRlKHR4X2J1ZiwgXHUwMDI2Y3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0NC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz02NDk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2NzdW0oc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4cSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTAtXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTE6XHRcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTI6XHRcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1Ni1cdC8qIGNoZWNrIGlmIFJ4IGNoZWNrc3VtIGlzIGVuYWJsZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTc6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocnhxLVx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY2NDpcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NjU6XHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTYtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjcxNzpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE4LWlkcGZfcnhfc2luZ2xlcV9iYXNlX2NzdW0oY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3MjA6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0geyB9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcyMS1cdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc1MjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzUzLWlkcGZfcnhfc2luZ2xlcV9mbGV4X2NzdW0oY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzU0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3NTU6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0geyB9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1Ni1cdHUxNiByeF9zdGF0dXMwLCByeF9zdGF0dXMxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz03ODk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2Jhc2VfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzkxLVx0XHRcdFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzkyOlx0XHRcdFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3OTY6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyeF9xLVx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjgwNTpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz04MTk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2ZsZXhfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODIxLVx0XHRcdFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODIyOlx0XHRcdFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgyMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODI0Olx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcS1cdTAwM2V4ZHBfcnhxLmRldiwgZGVjb2RlZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODI1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MzE6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9ODQ4PV9faWRwZl9yeF9zaW5nbGVxX3Byb2Nlc3Nfc2tiX2ZpZWxkcyhzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4NTM6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQgPSByeF9xLVx1MDAzZXJ4X3B0eXBlX2xrdXBbcHR5cGVdO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ4MDA0CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogODIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRnV6emluZyBQb3RlbnRpYWwgb2YgVGhpcyBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHRvdWNoZXMgYGxpYmV0aGAsIHdoaWNoIGlzIHVzZWQgYnkgc2V2ZXJhbCBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzOiBgaTQwZWAsIGBpYXZmYCwgYGljZWAsIGFuZCBgaWRwZmAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBmaWd1cmUgb3V0IGlmIHN5emthbGxlciBjYW4gcmVhY2ggYW55IG9mIHRoZSBjb2RlIGFmZmVjdGVkIGJ5IHRoZSBwYXRjaC4gSSBrbm93IGBpZHBmYCBpcyBhbiBJbnRlbCBJbmZyYXN0cnVjdHVyZSBEYXRhIFBhdGggRnVuY3Rpb24gZHJpdmVyIGFuZCBpcyB2ZW5kb3Itc3BlY2lmaWMgUENJZS4gYGljZWAgYW5kIGBpNDBlYCBhcmUgYWxzbyBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLCBzbyB2ZW5kb3Itc3BlY2lmaWMgUENJZSBhcyB3ZWxsLiBUaGUgcXVlc3Rpb24gaXMsIGRvZXMgc3l6a2FsbGVyIGZ1enogdGhlbT8gQW5kIG9mIGNvdXJzZSwgYGlhdmZgIGlzIGEgdmlydHVhbCBmdW5jdGlvbiAoVkYpIGRyaXZlci4KClRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGZvY3VzaW5nIG9uIGNvZGUgdGhhdCYjMzk7cyAqaW1wb3NzaWJsZSogdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuIEl0IGdpdmVzIGV4YW1wbGVzIGxpa2UgdmVuZG9yLXNwZWNpZmljIGRyaXZlcnMgZm9yIFBDSWUgc3dpdGNoZXMsIFNtYXJ0TklDcywgb3IgR1BVcyB0aGF0IHJlbHkgb24gcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4KCkFyZSBkcml2ZXJzIGxpa2UgYGk0MGVgLCBgaWNlYCwgYGlhdmZgIGNvbnNpZGVyZWQgdGhpcyB0eXBlIG9mIGRyaXZlcj8gTm90IGluIHRoZSBzdHJpY3Rlc3Qgc2Vuc2Ugb2YgdGhlIGV4YW1wbGVzIHByb3ZpZGVkLCBidXQgdGhleSBhcmUgSW50ZWwgRXRoZXJuZXQgTklDIGRyaXZlcnMgYW5kIHRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IHRoZXNlIGRyaXZlcnMgcmVxdWlyZSBoYXJkd2FyZSB0aGF0IGlzbiYjMzk7dCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIHRoZSBrZXkuIElmIHRoZXkgbmVlZCBwaHlzaWNhbCBoYXJkd2FyZSwgYW5kIHRoYXQgaGFyZHdhcmUgaXNuJiMzOTt0IGVtdWxhdGVkIGluIFFFTVUsIHRoZW4gdGhleSYjMzk7cmUgdW5yZWFjaGFibGUsIHJpZ2h0PyBBbmQgSSYjMzk7ZCBiZXQgdGhlIGFuc3dlciBpcyB0aGF0IHRoZXkgY2FuJiMzOTt0IGJlIHJlYWNoZWQgaW4gYSBzdGFuZGFyZCBHQ0Ugb3IgUUVNVSBzZXR1cCB1bmxlc3MgdGhlcmUmIzM5O3Mgc29tZSBraW5kIG9mIHNvZnR3YXJlIGVtdWxhdGlvbi4gU3l6a2FsbGVyIG1pZ2h0IGhhdmUgc29tZSBlbXVsYXRpb24gZm9yICpzb21lKiBkZXZpY2VzLCBidXQgaXQmIzM5O3Mgbm90IGEgZ2VuZXJhbCBjYXNlLgoKU28sIHRoZSBxdWVzdGlvbiBiZWNvbWVzOiBkb2VzIHN5emthbGxlciBlbXVsYXRlIHRoZXNlIGRyaXZlcnM/IENhbiBJIHRyaWdnZXIgYGlhdmZgIGNvZGUgd2l0aG91dCB0aGUgaGFyZHdhcmU/IEl0IHByb2JlcyBmb3IgYSBzcGVjaWZpYyBQQ0kgSUQsIHNvIGlmIHRoZSBkZXZpY2UgaXNuJiMzOTt0IHByZXNlbnQsIHRoZSBkcml2ZXIgd29uJiMzOTt0IGV2ZW4gYmluZC4gRG9lcyBzeXprYWxsZXImIzM5O3MgYHN5el9wY2lfZGV2aWNlYCBlbXVsYXRlIHRoZXNlPyBJIGNhbiYjMzk7dCBjaGVjayBzeXprYWxsZXIgZGlyZWN0bHkgYnV0IGNhbiBJIHVzZSBzb21lIHRyaWNrcyB0byBpbmZlciBhbnl0aGluZywgYnkgbG9va2luZyBhdCBleGlzdGluZyBidWdzIHJlcG9ydGVkIGZvciBgaWF2ZmA/IEkgbmVlZCBpbnRlcm5ldCBhY2Nlc3MgZm9yIHRoaXMuCgpUaGUgcHJvbXB0IGVtcGhhc2l6ZXMgdGhhdCBjb2RlIHVucmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cywgZXZlbiB3aXRoIGVtdWxhdGVkIGhhcmR3YXJlIChsaWtlIGB1c2IgZ2FkZ2V0YCwgYG1hYzgwMjExX2h3c2ltYCksIHNob3VsZCByZXN1bHQgaW4gYFdvcnRoRnV6emluZz1mYWxzZWAuIGBpYXZmYCBpcyBkZWZpbml0ZWx5IGFuIEludGVsIEV0aGVybmV0IFZGIGRyaXZlciB0aGF0IHJlcXVpcmVzIGFuIEludGVsIE5JQy4gUUVNVSBkZWZpbml0ZWx5IGRvZXNuJiMzOTt0IGVtdWxhdGUgdGhlIEludGVsIEFWRi4KCkFuZCBiZWNhdXNlIGBsaWJldGhgIGlzIHVzZWQgYnkgYWxsIHRoZXNlIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGBpYXZmYCwgYGk0MGVgLCBgaWNlYCwgYW5kIGBpZHBmYCksIHRoZSBjb25jbHVzaW9uIGlzIHRoZSBzYW1lIGZvciB0aGUgcGF0Y2ggLSB0aGUgY29kZSBwYXRocyBhZmZlY3RlZCBieSB0aGUgcGF0Y2ggdGhhdCByZWxhdGUgdG8gSW50ZWwgRXRoZXJuZXQgZHJpdmVycyBjYW4mIzM5O3QgYmUgcmVhY2hlZCBpbiBzdGFuZGFyZCBRRU1VLCBiZWNhdXNlIHRoZXkgcmVxdWlyZSBoYXJkd2FyZSBub3QgZW11bGF0ZWQuIFFFTVUgZG9lcyBlbXVsYXRlIG90aGVyIEV0aGVybmV0IGludGVyZmFjZXMgbGlrZSBgZTEwMDBgLCBgZTEwMDBlYCwgYW5kIGBpZ2JgLiBTbyBub3cgSSBoYXZlIHRvIGNoZWNrLCBhcmUgdGhvc2UgaW50ZXJmYWNlcyB1c2luZyBsaWJldGg/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NTI0CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSYjMzk7bSBhbiBleHBlcnQgaW4gdGhpcyBmaWVsZC4KCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBlMTAwMGUqKgoKQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRvIGNoZWNrIHRoZSBgZTEwMDBlYC4gSnVzdCB0aGUgbWVudGlvbiBvZiB0aGF0IG5hbWUgY29uanVyZXMgdXAgYSBzcGVjaWZpYyBzZXQgb2YgaGFyZHdhcmUgYW5kIHBvdGVudGlhbCBzb2Z0d2FyZSBpbXBsaWNhdGlvbnMuIEkga25vdyBpbW1lZGlhdGVseSB0aGF0IHRoaXMgcmVmZXJzIHRvIGEgcGFydGljdWxhciBJbnRlbCBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIgZmFtaWx5LiBNeSBtaW5kIGp1bXBzIHRvIHRoZSBkcml2ZXJzLCB0aGUgZmlybXdhcmUgdmVyc2lvbnMsIGtub3duIGJ1Z3MgYW5kIHZ1bG5lcmFiaWxpdGllcywgYW5kIHRoZSBjb21tb24gY29uZmlndXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIHByb2JhYmx5IHBvaW50cyB0b3dhcmRzIGFuIGlzc3VlIHJlbGF0ZWQgdG8gbmV0d29yayBjb25uZWN0aXZpdHkgYW5kIGhvdyBpdCYjMzk7cyBpbnRlcmFjdGluZyB3aXRoIHRoZSBob3N0IHN5c3RlbS4gTXkgaW5pdGlhbCBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgbG93LWxldmVsIGRyaXZlcnMgYW5kIHRoZSBpbnRlcnJ1cHQgaGFuZGxpbmcgcmVsYXRlZCB0byB0aGUgYGUxMDAwZWAgY29udHJvbGxlci4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTc3NwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXBseSBmYW1pbGlhciB3aXRoIHRoZSByZWxldmFudCB0ZWNobmljYWwgZG9tYWluIGFuZCBjb250ZXh0LgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IGUxMDAwIENoZWNrKioKCkFscmlnaHQsIHRoZSBmaXJzdCB0aG91Z2h0IGlzIHNpbXBsZTogKmUxMDAwKi4gVGhpcyBpcyBsaWtlbHkgYSB2ZXJ5IHNwZWNpZmljIGlkZW50aWZpZXIgb3IgcmVmZXJlbmNlLiBHaXZlbiBteSBleHBlcnRpc2UsIG15IG1pbmQgaW5zdGFudGx5IGp1bXBzIHRvIHBvc3NpYmxlIG1lYW5pbmdzLiBDb3VsZCBiZSBhIHNwZWNpZmljIGhhcmR3YXJlIGNvbXBvbmVudCwgYSBzb2Z0d2FyZSBtb2R1bGUsIGFuIGVycm9yIGNvZGUsIGEgY29uZmlndXJhdGlvbiBmaWxlLCBhIGRlYnVnZ2luZyB0b29sLi4uIHRoZSBwb3NzaWJpbGl0aWVzIGFyZSBudW1lcm91cywgYnV0IHRoZSBicmV2aXR5IHN1Z2dlc3RzIGEgZmFtaWxpYXIgYW5kIGNvbW1vbmx5IHJlZmVyZW5jZWQgZWxlbWVudCB3aXRoaW4gdGhpcyBjb250ZXh0LgoKTXkgaW5pdGlhbCByZWFjdGlvbiBpcyB0byBxdWlja2x5IHBlcmZvcm0gYSBtZW50YWwgY2hlY2tsaXN0LCBzdGFydGluZyB3aXRoIHdoYXQgSSAqZXhwZWN0KiB0byBmaW5kIGJhc2VkIG9uIHByaW9yIGV4cGVyaWVuY2UuIFdoYXQgYXJlIHRoZSBjb21tb24gcGl0ZmFsbHM/IFdoYXQgdXN1YWxseSBnb2VzIHdyb25nIHdpdGggYGUxMDAwYD8gV2hlcmUgZG8gSSBoYXZlIHJlY2VudCBleHBlcmllbmNlIHdpdGggdGhpcyBjb21wb25lbnQ/IFdoYXQmIzM5O3MgdGhlIGNvbnRleHQgSSB3YXMgd29ya2luZyBpbiB0aGF0IG1heSByZXF1aXJlIHRoaXMgY2hlY2s/CgpUaGlzIGlzIHdoZXJlIG15IHllYXJzIG9mIGV4cGVyaWVuY2Uga2ljayBpbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIHRoZSBtb3N0IGxpa2VseSBhbmQgbW92ZSB0aHJvdWdoIHRoZSBsZXNzIGxpa2VseSwgc3RhcnRpbmcgd2l0aCB0aGUgYXJlYSBJIGhhdmUgdGhlIGdyZWF0ZXN0IGNvbmZpZGVuY2UgaW4uIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG5lZWRzIGF0dGVudGlvbiwgb3Igd2hhdCB0aGUgcHJvbXB0IGlzIGFjdHVhbGx5IHJlbGF0ZWQgdG8sIHNpbmNlIGUxMDAwIGNvdWxkIGJlIGEgcmVmZXJlbmNlIHRvIGEgbG90IG9mIHN0dWZmLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMSAxOToyNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xpYmV0aCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwMTAzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjU2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBsaWJldGhgIFVzYWdlIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGBsaWJldGhgIGlzIGJlaW5nIHV0aWxpemVkLCBhbmQgaXQgc2VlbXMgY29uZmluZWQgdG8gdGhlIGBpNDBlYCwgYGlhdmZgLCBgaWNlYCwgYW5kIGBpZHBmYCBkcml2ZXJzLiAgTm9uZSBvZiB0aG9zZSBhcmUgZW11bGF0ZWQgaW4gYSBzdGFuZGFyZCBRRU1VIHNldHVwLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSBmbGFnLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBhbnkgb2YgdGhlc2UgZHJpdmVycywgc3BlY2lmaWNhbGx5IGBpYXZmYCwgYXJlIGV2ZW4gKmZ1enphYmxlKiBpbiB0aGUgZmlyc3QgcGxhY2UuCgpIb2xkIG9uLCBsZXQgbWUgY2hlY2sgdGhhdCBwYXRjaC4uLiBBaCwgaXQgd2FzIGF1dGhvcmVkIGJ5IHRoZSBgc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0O2AgYWNjb3VudC4gQnV0IHRoaXMgaXNuJiMzOTt0IGEgc21va2luZyBndW4uIFRoZSBjb21taXQgbWVzc2FnZSByZWFkczogJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0Oy4gVGhpcyBpcyBqdXN0IGEgYm9pbGVycGxhdGUgbWVzc2FnZSB0aGF0IHRoZSBwYXRjaCBhcHBsaWNhdGlvbiBzeXN0ZW0gYWRkcy4gSXQgZGVmaW5pdGVseSAqZG9lc24mIzM5O3QqIG1lYW4gU3l6a2FsbGVyIGZvdW5kIGEgdnVsbmVyYWJpbGl0eSBoZXJlLiBUaGUgc3lzdGVtIGFwcGxpZWQgaXQgZm9yIG15IHJldmlldy4gSSBzaG91bGRuJiMzOTt0IGp1bXAgdG8gY29uY2x1c2lvbnMuCgpBbHJpZ2h0LCBiYWNrIHRvIHRoZSBxdWVzdGlvbiBvZiByZWFjaGFiaWxpdHkuIENvdWxkIEkgcG9zc2libHkgZnV6eiBgaWF2ZmAgb3IgYGljZWAgc29tZWhvdz8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSBhIGhhcmQgbm8uIFRoZXkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbiBjb3JyZWN0bHksIG1lYW5pbmcgdGhvc2UgY29kZSBwYXRocyBhcmUgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCBsaWtlIEdDRSBvciBRRU1VLgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIGxldCBtZSBkb3VibGUtY2hlY2suIEkmIzM5O2xsIHZlcmlmeSBpZiBgaWF2ZmAgY2FuIGJlIGluc3RhbnRpYXRlZCBpbiBzb21lIHZpcnR1YWwgYnVzIG9yIHNvZnR3YXJlLiBPa2F5LCB0aGF0IGNvbmZpcm1zIGl0OiBgaWF2ZmAgaXMgYSBQQ0kgZHJpdmVyLiBUaGlzIG1lYW5zIGl0IHJlbGllcyBvbiBkaXJlY3QgaGFyZHdhcmUgaW50ZXJhY3Rpb24gYW5kIGlzbiYjMzk7dCByZWxldmFudCBmb3IgUUVNVSBmdXp6aW5nLiBUaGlzIGlzIHNvbWV0aGluZyBJIHNob3VsZCBoYXZlIHJlbWVtYmVyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3BjaV9yZWdpc3Rlcl9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jPTU2Njg9c3RhdGljIGludCBfX2luaXQgaWF2Zl9pbml0X21vZHVsZSh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTY3My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmM6NTY3NDpcdHJldHVybiBwY2lfcmVnaXN0ZXJfZHJpdmVyKFx1MDAyNmlhdmZfZHJpdmVyKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTY3NS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwODg3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNDkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVmlhYmlsaXR5IG9mIGBpYXZmYCBhbmQgYGxpYmV0aGAgQ2hhbmdlcyBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpcyBQQ0kgZHJpdmVyIEkmIzM5O20gbG9va2luZyBhdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQsIFFFTVUsIGV2ZW4gKnN1cHBvcnRzKiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFib3V0IHdoZXRoZXIgUUVNVSBlbXVsYXRlcyBgaWF2ZmAgb3IgYGk0MGVgLiBOb3BlLCBzdGFuZGFyZCBRRU1VIGRvZXNuJiMzOTt0IGRvIGBpYXZmYCwgYW5kIHdoaWxlIHRoZXJlIG1pZ2h0IGJlIHNvbWUgb3V0LW9mLXRyZWUgcGF0Y2hlcyBmb3IgYGk0MGVgLCBpdCYjMzk7cyBub3QgYSBzdGFuZGFyZCBmZWF0dXJlLgoKTGV0JiMzOTtzIHF1aWNrbHkgdmVyaWZ5IG15IGtub3dsZWRnZSBvZiB3aGF0ICppcyogZW11bGF0ZWQgaW4gUUVNVS4gUmlnaHQsIGl0IGRvZXMgYGUxMDAwYCwgYGUxMDAwZWAsIGBpZ2JgLCBgcnRsODEzOWAsIGB2aXJ0aW8tbmV0YCwgYHZteG5ldDNgLCBgcGNuZXRgLCBgbmUya19wY2lgLCBgaTgyNTU5ZXJgLCBhbmQgYHR1bGlwYC4gT2theSwgdGhhdCYjMzk7cyBhIGdvb2QgbWVudGFsIGNoZWNrbGlzdC4gV2FpdCwgSSBzaG91bGQgZG91YmxlIGNoZWNrIGBpNDBlYCwganVzdCB0byBiZSBjZXJ0YWluLiBJIGNhbiYjMzk7dCBpbW1lZGlhdGVseSBjaGVjayBRRU1VJiMzOTtzIHNvdXJjZSByaWdodCBub3csIGJ1dCBJIGtub3cgYGlnYmAgd2FzIGFkZGVkIHNvbWV3aGF0IHJlY2VudGx5LCBtZWFuaW5nLCB0aGF0IGlmIGBpNDBlYCBpc24mIzM5O3QgaW4gc3RhbmRhcmQgUUVNVSB5ZXQsIHRoZW4gaXQgbWF5IGJlIHdvcnRoIHJldmlzaXRpbmcgdGhhdCBjb2RlIGJhc2UuCgpOb3csIGV2ZW4gaWYgYGk0MGVgICp3ZXJlKiBlbXVsYXRlZCwgYGlhdmZgIGlzIHRoZSBWRiBkcml2ZXIsIGFuZCBlbXVsYXRpbmcgU1ItSU9WIGFuZCBWRnMgaXMgdXN1YWxseSBub3QgZG9uZSBpbiBzdGFuZGFyZCBRRU1VIGZvciB0aGVzZSBkZXZpY2VzLCBldmVuIHRob3VnaCBgaWdiYCBkb2VzIGhhdmUgc29tZSBTUi1JT1Ygc3VwcG9ydC4gQnV0IGBpYXZmYCBpcyBzcGVjaWZpY2FsbHkgZm9yIEludGVsIDcwMCBTZXJpZXMgKGk0MGUpIGFuZCA4MDAgU2VyaWVzIChpY2UpIFZGcy4KClNpbmNlIGBpYXZmYCByZXF1aXJlcyB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdGhhdCYjMzk7cyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSwgdGhpcyBmYWxscyB1bmRlciB0aGUgY2F0ZWdvcnkgb2YsICYjMzQ7Q29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7CgpOb3csIHRoZSBleGFtcGxlICpkb2VzbiYjMzk7dCogZXhwbGljaXRseSBsaXN0IHN0YW5kYXJkIEV0aGVybmV0IGRyaXZlcnMsIGJ1dCB0aGUgb3ZlcmFyY2hpbmcgcHJpbmNpcGxlIGlzICYjMzQ7cmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiYjMzQ7IElzIGFuIEludGVsIEV0aGVybmV0IE5JQyBhICYjMzQ7cGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VJiMzNDs/IFllcywgaXQgaXMuCgpUaGVyZWZvcmUsIGNoYW5nZXMgdG8gYGlhdmZgIGFuZCBgbGliZXRoYCAod2hpY2ggaXMgb25seSB1c2VkIGJ5IHRoZXNlIEludGVsIGRyaXZlcnMpIGFyZSBub3QgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoYXQgYGxpYmV0aGAgaXMgbm90IHVzZWQgYnkgYW55dGhpbmcgZWxzZSB0aG91Z2gsIGp1c3QgdG8gYmUgc3VyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bGliZXRoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTg4IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfSU5URUxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnOjE5OnNvdXJjZSBcJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZ1wmIzM0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZy0yMC1zb3VyY2UgXCYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlLTUtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSUJFVEgpICYjNDM7PSBsaWJldGgvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZS03LW9iai15ICYjNDM7PSBsaWJpZS9cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jPTE3NDI9c3RhdGljIGlubGluZSB2b2lkIGk0MGVfcnhfY2hlY2tzdW0oc3RydWN0IGk0MGVfdnNpICp2c2ksXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xNzQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTc0NjpcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc0Ny1cdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc1Ny1cdGRlY29kZWQgPSBsaWJpZV9yeF9wdF9wYXJzZShwdHlwZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3NTg6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVx1MDAzZW5ldGRldiwgZGVjb2RlZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NTktXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NjctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njg6XHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njk6XHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYz0xODE0PXN0YXRpYyBpbmxpbmUgdm9pZCBpNDBlX3J4X2hhc2goc3RydWN0IGk0MGVfcmluZyAqcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxODE5Olx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODIwLVx0dTMyIGhhc2g7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODI1LVx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHJ4X3B0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgyNjpcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgzMC1cdFx0aGFzaCA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2MtXHUwMDNld2IucXdvcmQwLmhpX2R3b3JkLnJzcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE4MzE6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODMyLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9NzExPXN0YXRpYyB2b2lkIGlhdmZfY2xlYW5fcnhfcmluZyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzIzLVx0Zm9yICh1MzIgaSA9IHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbjsgaSAhPSByeF9yaW5nLVx1MDAzZW5leHRfdG9fdXNlOyApIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzI0Olx0XHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfZnFlcyA9IFx1MDAyNnJ4X3JpbmctXHUwMDNlcnhfZnFlc1tpXTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzI1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3MjY6XHRcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfZnFlcy1cdTAwM2VuZXRtZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03MjctXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03NDI9dm9pZCBpYXZmX2ZyZWVfcnhfcmVzb3VyY2VzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0My17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc0NDpcdHN0cnVjdCBsaWJldGhfZnEgZnEgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0NS1cdFx0LmZxZXNcdD0gcnhfcmluZy1cdTAwM2VyeF9mcWVzLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3NTc6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc1OC1cdHJ4X3JpbmctXHUwMDNlcnhfZnFlcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03Njg9aW50IGlhdmZfc2V0dXBfcnhfZGVzY3JpcHRvcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzY5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzcwOlx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzcxLVx0XHQuY291bnRcdFx0PSByeF9yaW5nLVx1MDAzZWNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzc2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3Nzc6XHRyZXQgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFx1MDAyNmZxLCBcdTAwMjZyeF9yaW5nLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NzgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODA1LWVycjpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6ODA2Olx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXHUwMDI2ZnEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04MDctXHRyeF9yaW5nLVx1MDAzZXJ4X2ZxZXMgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9ODU5PWJvb2wgaWF2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHUxNiBjbGVhbmVkX2NvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NjAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4NjE6XHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NjItXHRcdC5wcFx0XHQ9IHJ4X3JpbmctXHUwMDNlcHAsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjg3OTpcdFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcdTAwMjZmcSwgbnR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODgwLVx0XHRpZiAoYWRkciA9PSBETUFfTUFQUElOR19FUlJPUilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTkyNT1zdGF0aWMgdm9pZCBpYXZmX3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkyNjpcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5Mjc6XHRcdFx0IHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTkyOC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkzNzpcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkX3B0KSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTM4Olx0aXB2NiA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWRfcHQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY2O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzUtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5NzY6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzctaWF2Zl9sZWdhY3lfcnhfY3N1bShjb25zdCBzdHJ1Y3QgaWF2Zl92c2kgKnZzaSwgdTY0IHF3MSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTc4Olx0XHQgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05Nzkte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5ODA6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk4MS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTgyOlx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2NoZWNrc3VtKHZzaS1cdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05ODMtXHRcdHJldHVybiBjc3VtX2JpdHM7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA1LSAqKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAwNjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDctaWF2Zl9mbGV4X3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHU2NCBxdzEsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwMDg6XHRcdCAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMDpcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7fTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMjpcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bSh2c2ktXHUwMDNlbmV0ZGV2LCBkZWNvZGVkX3B0KSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMy1cdFx0cmV0dXJuIGNzdW1fYml0cztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEwMzc9c3RhdGljIHZvaWQgaWF2Zl9sZWdhY3lfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcwLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDM4LVx0XHRcdFx0X19sZTY0IHF3MSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAzOTpcdFx0XHRcdGNvbnN0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0MC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDQ0Olx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ4LVx0XHRoYXNoID0gbGU2NF9nZXRfYml0cyhxdzAsIElBVkZfUlhEX0xFR0FDWV9SU1NfTSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNDk6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWRfcHQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDUwLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTA2Mz1zdGF0aWMgdm9pZCBpYXZmX2ZsZXhfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcxLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY0LVx0XHRcdCAgICAgIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNjU6XHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNzA6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyaW5nLVx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzEtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzUtXHRcdGhhc2ggPSBsZTY0X2dldF9iaXRzKHF3MSwgSUFWRl9SWERfRkxFWF9SU1NfSEFTSF9NKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTA3NjpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZF9wdCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzctXHR9XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTMxPXN0YXRpYyB2b2lkIGlhdmZfcHJvY2Vzc19za2JfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTM1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTEzNjpcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExMzc6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTExMzgtXHRfX2xlNjQgcXcwID0gcnhfZGVzYy1cdTAwM2VxdzA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTk3PXN0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExOTg6XHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTk5LVx0XHRcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMjE3PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEyMTg6XHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjE5LVx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHNpemUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMjU0PXN0YXRpYyBib29sIGlhdmZfaXNfbm9uX2VvcChzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjU1Olx0XHRcdCAgICBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI1Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjg2LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjg3OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyODgtaWF2Zl9leHRyYWN0X2xlZ2FjeV9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTMtXHR1NjQgcXcyID0gbGU2NF90b19jcHUocnhfZGVzYy1cdTAwM2VxdzIpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjk0Olx0c3RydWN0IGxpYmV0aF9ycWVfaW5mbyBmaWVsZHM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTUtXHRib29sIGwydGFnMXAsIGwydGFnMnA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzMyLSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzMzOnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzQtaWF2Zl9leHRyYWN0X2ZsZXhfcnhfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTMzNzpcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzID0ge307XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzgtXHR1NjQgcXcwID0gbGU2NF90b19jcHUocnhfZGVzYy1cdTAwM2VxdzApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTM2NjpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzY3LWlhdmZfZXh0cmFjdF9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEzODk9c3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM5OC1cdHdoaWxlIChsaWtlbHkodG90YWxfcnhfcGFja2V0cyBcdTAwM2MgKHVuc2lnbmVkIGludClidWRnZXQpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEzOTk6XHRcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxNDAwOlx0XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDAxLVx0XHRzdHJ1Y3QgaWF2Zl9yeF9kZXNjICpyeF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTQzMC1cdFx0cnhfYnVmZmVyID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW3J4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbl07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjE0MzE6XHRcdGlmICghX19saWJldGhfcnhfc3luY19mb3JfY3B1KHBwLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDMyLVx0XHRcdGdvdG8gc2tpcF9kYXRhO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4Lmg9MjE4PXN0cnVjdCBpYXZmX3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmgtMjI2LVx0dW5pb24ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaDoyMjc6XHRcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9mcWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaC0yMjgtXHRcdHN0cnVjdCBpYXZmX3R4X2J1ZmZlciAqdHhfYmk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM9NjA3PXN0YXRpYyBpbnQgaWNlX3J4cV9wcF9jcmVhdGUoc3RydWN0IGljZV9yeF9yaW5nICpycSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYwOC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MDk6XHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjEwLVx0XHQuY291bnRcdFx0PSBycS1cdTAwM2Vjb3VudCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MTg6XHRlcnIgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFx1MDAyNmZxLCBcdTAwMjZycS1cdTAwM2VxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxOS1cdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjI5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM6NjMwOlx0ZnEgPSAoc3RydWN0IGxpYmV0aF9mcSl7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzEtXHRcdC5jb3VudFx0XHQ9IHJxLVx1MDAzZWNvdW50LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYzNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYzNzpcdGVyciA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXHUwMDI2ZnEsIFx1MDAyNnJxLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjM4LVx0aWYgKGVycilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMi0jaW5jbHVkZSBcdTAwM2NuZXQvZGNibmwuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6MTM6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC9yeC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xNC1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYz0xMjMyPXN0YXRpYyBpbnQgaWNlX2xidGVzdF9yZWNlaXZlX2ZyYW1lcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMjMzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jOjEyMzQ6XHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtMTIzNS1cdGludCB2YWxpZF9mcmFtZXMsIGk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjExOiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgveGRwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyLSNpbmNsdWRlIFx1MDAzY25ldC9kc2ZpZWxkLmhcdTAwM2Vcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz0xMTQ9aWNlX3VubWFwX2FuZF9mcmVlX3R4X2J1ZihzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI5LVx0Y2FzZSBJQ0VfVFhfQlVGX1hEUF9UWDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEzMDpcdFx0bGliZXRoX3hkcF9yZXR1cm5fdmEodHhfYnVmLVx1MDAzZXJhd19idWYsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMS1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTEyPXZvaWQgaWNlX3J4cV9wcF9kZXN0cm95KHN0cnVjdCBpY2VfcnhfcmluZyAqcnEpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTMte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTE0Olx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUxNS1cdFx0LmZxZXNcdD0gcnEtXHUwMDNlcnhfZnFlcyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1MTk6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjAtXHRycS1cdTAwM2VyeF9mcWVzID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1Mjk6XHRsaWJldGhfcnhfZnFfZGVzdHJveShcdTAwMjZmcSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MzAtXHRycS1cdTAwM2VoZHJfZnFlcyA9IE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTM4PXZvaWQgaWNlX2NsZWFuX3J4X3Jpbmcoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjU1MTpcdGxpYmV0aF94ZHBfcmV0dXJuX3N0YXNoKFx1MDAyNnJ4X3JpbmctXHUwMDNleGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1Mi1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTQtXHRmb3IgKHUzMiBpID0gcnhfcmluZy1cdTAwM2VuZXh0X3RvX2NsZWFuOyBpICE9IHJ4X3JpbmctXHUwMDNlbmV4dF90b191c2U7ICkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTU1Olx0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KHJ4X3JpbmctXHUwMDNlcnhfZnFlc1tpXS5uZXRtZW0pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU3LVx0XHRpZiAocnhfcmluZy1cdTAwM2VoZHJfcHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1NTg6XHRcdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhyeF9yaW5nLVx1MDAzZWhkcl9mcWVzW2ldLm5ldG1lbSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTktXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NjUxPXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjY1MjppY2VfcnVuX3hkcChzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY1My1cdCAgICBzdHJ1Y3QgYnBmX3Byb2cgKnhkcF9wcm9nLCBzdHJ1Y3QgaWNlX3R4X3JpbmcgKnhkcF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY4OS1cdGNhc2UgWERQX0RST1A6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo2OTA6XHRcdGxpYmV0aF94ZHBfcmV0dXJuX2J1ZmYoeGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY5MS1cdFx0cmV0ID0gSUNFX1hEUF9DT05TVU1FRDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz04MjU9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHVuc2lnbmVkIGludCBjbGVhbmVkX2NvdW50KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODI2LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjgyNzpcdGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgaGRyX2ZxID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODI4LVx0XHQucHBcdFx0PSByeF9yaW5nLVx1MDAzZWhkcl9wcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MzItXHR9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODMzOlx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCBmcSA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgzNC1cdFx0LnBwXHRcdD0gcnhfcmluZy1cdTAwM2VwcCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NTI6XHRcdGFkZHIgPSBsaWJldGhfcnhfYWxsb2MoXHUwMDI2ZnEsIG50dSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTMtXHRcdGlmIChhZGRyID09IERNQV9NQVBQSU5HX0VSUk9SKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODY1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODY2Olx0XHRhZGRyID0gbGliZXRoX3J4X2FsbG9jKFx1MDAyNmhkcl9mcSwgbnR1KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2Ny1cdFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NjktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NzA6XHRcdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhmcS5mcWVzW250dV0ubmV0bWVtKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg3MS1cdFx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz05NDY9c3RhdGljIGludCBpY2VfY2xlYW5fcnhfaXJxKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NTctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5NTg6XHRsaWJldGhfeGRwX2luaXRfYnVmZih4ZHAsIFx1MDAyNnJ4X3JpbmctXHUwMDNleGRwLCBcdTAwMjZyeF9yaW5nLVx1MDAzZXhkcF9yeHEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTU5LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTk2OC1cdFx0dW5pb24gaWNlXzMyYl9yeF9mbGV4X2Rlc2MgKnJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5Njk6XHRcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NzAtXHRcdHN0cnVjdCBza19idWZmICpza2I7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMC1cdFx0cnhfYnVmID0gXHUwMDI2cnhfcmluZy1cdTAwM2VoZHJfZnFlc1tudGNdO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTAxMTpcdFx0bGliZXRoX3hkcF9wcm9jZXNzX2J1ZmYoeGRwLCByeF9idWYsIHNpemUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMi1cdFx0cnhfYnVmLVx1MDAzZW5ldG1lbSA9IDA7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAyMS1cdFx0cnhfYnVmID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW250Y107XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDIyOlx0XHRsaWJldGhfeGRwX3Byb2Nlc3NfYnVmZih4ZHAsIHJ4X2J1Ziwgc2l6ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDIzLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwNDgtXHRcdGlmICghc2tiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDQ5Olx0XHRcdGxpYmV0aF94ZHBfcmV0dXJuX2J1ZmZfc2xvdyh4ZHApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA1MC1cdFx0XHRpY2Vfc3RhdHNfaW5jKHJ4X3JpbmctXHUwMDNlcmluZ19zdGF0cywgcnhfYnVmX2ZhaWxlZCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA3Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwNzc6XHRsaWJldGhfeGRwX3NhdmVfYnVmZihcdTAwMjZyeF9yaW5nLVx1MDAzZXhkcCwgeGRwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwNzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjc6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC90eXBlcy5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC04LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTI4NS1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjI4NjpcdFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXM7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0yODctXHRcdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9idWY7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAwLVx0c3RydWN0IHBhZ2VfcG9vbCAqaGRyX3BwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzAxOlx0c3RydWN0IGxpYmV0aF9mcWUgKmhkcl9mcWVzO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAyLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMxNy1cdHVuaW9uIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjMxODpcdFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB4ZHA7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMTk6XHRcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhzaztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMyMC1cdH07XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUtI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo2OiNpbmNsdWRlIFx1MDAzY25ldC9saWJldGgveGRwLmhcdTAwM2VcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz02NT1pY2VfcnhfaGFzaF90b19za2IoY29uc3Qgc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy02OC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Njk6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQ7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzAtXHR1MzIgaGFzaDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzItXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocnhfcHR5cGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjczOlx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc3LVx0aWYgKGxpa2VseShoYXNoKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo3ODpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzktfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz0xMDg9aWNlX3J4X2NzdW0oc3RydWN0IGljZV9yeF9yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTAte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjExMTpcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTItXHR1MTYgcnhfc3RhdHVzMCwgcnhfc3RhdHVzMTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTE4LVx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHB0eXBlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzoxMTk6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocmluZy1cdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTEyMC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMzctXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTM4Olx0aXB2NCA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjEzOTpcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xNDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTI3MT1pY2VfY2xlYW5feGRwX3R4X2J1ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTI3NS1cdGNhc2UgSUNFX1RYX0JVRl9YRFBfVFg6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Mjc2Olx0XHRsaWJldGhfeGRwX3JldHVybl92YSh0eF9idWYtXHUwMDNlcmF3X2J1ZiwgdHJ1ZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMjc3LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTIzPXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9od190cyhjb25zdCBzdHJ1Y3QgeGRwX21kICpjdHgsIHU2NCAqdHNfbnMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTI0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1MjU6XHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTI2LVx0c3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1Mjg6XHRyeF9yaW5nID0gbGliZXRoX3hkcF9idWZmX3RvX3JxKHhkcF9leHQsIHR5cGVvZigqcnhfcmluZyksIHhkcF9yeHEpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyOS1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTU2PXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9oYXNoKGNvbnN0IHN0cnVjdCB4ZHBfbWQgKmN0eCwgdTMyICpoYXNoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01NTgte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjU1OTpcdGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcF9leHQgPSAodm9pZCAqKWN0eDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01NjAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTU3OD1zdGF0aWMgaW50IGljZV94ZHBfcnhfdmxhbl90YWcoY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCBfX2JlMTYgKnZsYW5fcHJvdG8sXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4MC17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTgxOlx0Y29uc3Qgc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwX2V4dCA9ICh2b2lkICopY3R4O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4Mi1cdHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01ODMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTg0Olx0cnhfcmluZyA9IGxpYmV0aF94ZHBfYnVmZl90b19ycSh4ZHBfZXh0LCB0eXBlb2YoKnJ4X3JpbmcpLCB4ZHBfcnhxKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01ODUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3Vucm9sbC5oXHUwMDNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03LSNpbmNsdWRlIFx1MDAzY25ldC94ZHBfc29ja19kcnYuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM9NTY3PWludCBpY2VfY2xlYW5fcnhfaXJxX3pjKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6NjMyOlx0XHQoKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKilmaXJzdCktXHUwMDNlZGVzYyA9IHJ4X2Rlc2M7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMy1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY3Ni1cdHJ4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbiA9IG50YztcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmM6Njc3Olx0cnhfcmluZy1cdTAwM2V4c2sgPSAoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKWZpcnN0O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NzgtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9Njc1PXN0cnVjdCBpZHBmX2FkYXB0ZXIge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwMy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNDpcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNpbmdsZXFfcHRfbGt1cDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNTpcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNwbGl0cV9wdF9sa3VwO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzA2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0zLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ6I2luY2x1ZGUgXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFx1MDAzZVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTE4OD1zdGF0aWMgdm9pZCBpZHBmX3R4X3NpbmdsZXFfZG1hX21hcF9lcnJvcihzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqdHhxLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0xOTEte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjE5MjpcdHN0cnVjdCBsaWJldGhfc3FfbmFwaV9zdGF0cyBzcyA9IHsgfTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoxOTM6XHRzdHJ1Y3QgbGliZXRoX2NxX3BwIGNwID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTE5NC1cdFx0LmRldlx0PSB0eHEtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0yMDYtXHRcdHR4X2J1ZiA9IFx1MDAyNnR4cS1cdTAwM2V0eF9idWZbaWR4XTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoyMDc6XHRcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFx1MDAyNmNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0yMDgtXHRcdGlmICh0eF9idWYgPT0gZmlyc3QpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTQ4MT1zdGF0aWMgYm9vbCBpZHBmX3R4X3NpbmdsZXFfY2xlYW4oc3RydWN0IGlkcGZfdHhfcXVldWUgKnR4X3EsIGludCBuYXBpX2J1ZGdldCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDgzLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0ODQ6XHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMgc3MgPSB7IH07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg1LVx0c3RydWN0IGlkcGZfYmFzZV90eF9kZXNjICp0eF9kZXNjO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy00ODctXHRzMTYgbnRjID0gdHhfcS1cdTAwM2VuZXh0X3RvX2NsZWFuO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ4ODpcdHN0cnVjdCBsaWJldGhfY3FfcHAgY3AgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg5LVx0XHQuZGV2XHQ9IHR4X3EtXHUwMDNlZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MjgtXHRcdC8qIHVwZGF0ZSB0aGUgc3RhdGlzdGljcyBmb3IgdGhpcyBwYWNrZXQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1Mjk6XHRcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFx1MDAyNmNwKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MzAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0Mi1cdFx0XHQvKiB1bm1hcCBhbnkgcmVtYWluaW5nIHBhZ2VkIGRhdGEgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1NDM6XHRcdFx0bGliZXRoX3R4X2NvbXBsZXRlKHR4X2J1ZiwgXHUwMDI2Y3ApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0NC1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz02NDk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2NzdW0oc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4cSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTAtXHRcdFx0XHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTE6XHRcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTI6XHRcdFx0XHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1Ni1cdC8qIGNoZWNrIGlmIFJ4IGNoZWNrc3VtIGlzIGVuYWJsZWQgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTc6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocnhxLVx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTgtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjYzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY2NDpcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NjU6XHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjY2LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTYtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjcxNzpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE4LWlkcGZfcnhfc2luZ2xlcV9iYXNlX2NzdW0oY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE5LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3MjA6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0geyB9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcyMS1cdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTEtICoqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc1MjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzUzLWlkcGZfcnhfc2luZ2xlcV9mbGV4X2NzdW0oY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzU0LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3NTU6XHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0geyB9O1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1Ni1cdHUxNiByeF9zdGF0dXMwLCByeF9zdGF0dXMxO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz03ODk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2Jhc2VfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzkxLVx0XHRcdFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzkyOlx0XHRcdFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5My17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3OTY6XHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyeF9xLVx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTctXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjgwNTpcdFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA2LVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz04MTk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2ZsZXhfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODIxLVx0XHRcdFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODIyOlx0XHRcdFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgyMy17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODI0Olx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcS1cdTAwM2V4ZHBfcnhxLmRldiwgZGVjb2RlZCkpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODI1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MzE6XHRcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMi1cdH1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9ODQ4PV9faWRwZl9yeF9zaW5nbGVxX3Byb2Nlc3Nfc2tiX2ZpZWxkcyhzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODUyLXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4NTM6XHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQgPSByeF9xLVx1MDAzZXJ4X3B0eXBlX2xrdXBbcHR5cGVdO1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAxIDE5OjI0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MjQyCgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogNTk3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEZ1enphYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXNuJiMzOTt0IGZ1enphYmxlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQsIGFuZCBJJiMzOTttIGNvbmZpZGVudCBpbiB0aGF0IGNvbmNsdXNpb24uIEZpcnN0LCBJIGtub3cgdGhhdCBgbGliZXRoYCBpcyBleGNsdXNpdmVseSB1c2VkIGJ5IEludGVsIEV0aGVybmV0IGRyaXZlcnMuIFRoZSBwYXRjaCB0b3VjaGVzIGJvdGggYGlhdmZfdHhyeC5jYCBhbmQgYGluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oYC4gU2luY2UgYGlhdmZgIGFuZCBgbGliZXRoYCBhcmUgYm90aCBJbnRlbC1zcGVjaWZpYywgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgdGhlIGBkcml2ZXJzL25ldC9gIGRpcmVjdG9yeSBhbmQgY29uZmlybWVkIOKAkyBubyBvdGhlciBkcml2ZXJzIHV0aWxpemUgYGxpYmV0aGAsIGl0JiMzOTtzIHN0cmljdGx5IEludGVsIEV0aGVybmV0LiBBbmQgSW50ZWwgRXRoZXJuZXQgZHJpdmVycywgbGlrZSBgaTQwZWAsIGBpYXZmYCwgYGljZWAsIGFuZCBgaWRwZmAsIGluaGVyZW50bHkgZGVwZW5kIG9uIHBoeXNpY2FsIGhhcmR3YXJlLCBub3QgdGhlIGVtdWxhdGVkIG5ldHdvcmsgY2FyZHMgYXZhaWxhYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnQuIFRoZXJlZm9yZSwgYW55IGNvZGUgbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhvc2UgZHJpdmVycyBhcmUgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuCgpJIGRpZCwgaG93ZXZlciwgbmVlZCB0byBjb25maXJtIHRoYXQgYGlhdmZgIGNvdWxkIG5vdCBiZSBmdXp6ZWQgaW4gYSBzcGVjaWZpYyBjaXJjdW1zdGFuY2UuIEkgcmVtZW1iZXJlZCB0aGF0IHN5emthbGxlciBoYXMgc29tZSBtZWNoYW5pc21zIGZvciBmdXp6aW5nIFBDSSBkZXZpY2VzIHZpYSBgc3l6X3BjaV9kZXZpY2VgLCBidXQgdGhhdCB3b3VsZCBkZXBlbmQgb24gYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB0aGUgUENJIGRldmljZSYjMzk7cyBCQVJzIGFuZCByZWdpc3RlcnMuIEV2ZW4gaWYgdGhhdCB3ZXJlIHBvc3NpYmxlLCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgcGF0Y2hlcyBtb2RpZnlpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG5vdCB0byBiZSBjb25zaWRlcmVkIGZ1enphYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBpcyB2ZXJ5IGNsZWFyOiB0aGlzIGluY2x1ZGVzIGRyaXZlcnMgbGlrZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzIChgaWF2ZmAsIGBpY2VgLCBldGMuKS4gVGhlc2UgSW50ZWwgZHJpdmVycyAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCBhcmVuJiMzOTt0IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoaXMgcGF0Y2ggaGl0cyB0aGF0IHNwZWNpZmljIGV4Y2x1c2lvbiBjcml0ZXJpYSBkaXJlY3RseS4KCkdpdmVuIGFsbCBvZiB0aGF0LCBJIGNhbiBkZWZpbml0aXZlbHkgc3RhdGUgdGhhdCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuIFRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiAoaWF2ZikgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgSW50ZWwgRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKSwgd2hpY2ggYXJlIGJvdGggdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IGFyZSBkZXBlbmRlbnQgb24gcGh5c2ljYWwgSW50ZWwgbmV0d29yayBoYXJkd2FyZSwgYW5kIG5vdCBlbXVsYXRlZCBpbiBlbnZpcm9ubWVudHMgbGlrZSBRRU1VLiBUaGF0JiMzOTtzIG15IHJlYXNvbmluZy4KCk15IGZpbmFsIHJlcG9ydCB3aWxsIGJlOgoqICAgUmVhc29uaW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4KKiAgIFdvcnRoRnV6emluZzogZmFsc2UKKiAgIEZvY3VzU3ltYm9sczogXFsgXQoqICAgRW5hYmxlQ29uZmlnczogXFsgXQoKSSBjYW4gbm93IGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDEgMTk6MjQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiAoaWF2ZikgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgSW50ZWwgRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKS4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEludGVsIG5ldHdvcmsgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzozNy4xNjYzNjE0MzZaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTMyMjYyMTcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjM3LjE2NjM2NzcxNloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDE1MDUyOTE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMmJmNTZlZjMxNDI2ZjUwYTQ4ZTg1MTNjYzUzNWQzOGYyMjU5NzE4MlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIzOjM2IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXFxuaW5kZXggYzMwYWJmMTdjZjVkMy4uOWRjNWYwNzYxZDhiYSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguY1xcbkBAIC0xMTg0LDYgKzExODQsNyBAQCBzdGF0aWMgYm9vbCBpYXZmX2NsZWFudXBfaGVhZGVycyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbiBcXG4gLyoqXFxuICAqIGlhdmZfYWRkX3J4X2ZyYWcgLSBBZGQgY29udGVudHMgb2YgUnggYnVmZmVyIHRvIHNrX2J1ZmZcXG4rICogQHBwOiBwYWdlIHBvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cXG4gICogQHNrYjogc2tfYnVmZiB0byBwbGFjZSB0aGUgZGF0YSBpbnRvXFxuICAqIEByeF9idWZmZXI6IGJ1ZmZlciBjb250YWluaW5nIHBhZ2UgdG8gYWRkXFxuICAqIEBzaXplOiBwYWNrZXQgbGVuZ3RoIGZyb20gcnhfZGVzY1xcbkBAIC0xMTkzLDExICsxMTk0LDExIEBAIHN0YXRpYyBib29sIGlhdmZfY2xlYW51cF9oZWFkZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBza19idWZmICpza2IpXFxuICAqXFxuICAqIFRoZSBmdW5jdGlvbiB3aWxsIHRoZW4gdXBkYXRlIHRoZSBwYWdlIG9mZnNldC5cXG4gICoqL1xcbi1zdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKHN0cnVjdCBza19idWZmICpza2IsXFxuK3N0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcXG4gXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4ge1xcbi1cXHR1MzIgaHIgPSBuZXRtZW1fZ2V0X3BwKHJ4X2J1ZmZlci1cXHUwMDNlbmV0bWVtKS1cXHUwMDNlcC5vZmZzZXQ7XFxuK1xcdHUzMiBociA9IHBwLVxcdTAwM2VwLm9mZnNldDtcXG4gXFxuIFxcdHNrYl9hZGRfcnhfZnJhZ19uZXRtZW0oc2tiLCBza2Jfc2hpbmZvKHNrYiktXFx1MDAzZW5yX2ZyYWdzLFxcbiBcXHRcXHRcXHQgICAgICAgcnhfYnVmZmVyLVxcdTAwM2VuZXRtZW0sIHJ4X2J1ZmZlci1cXHUwMDNlb2Zmc2V0ICsgaHIsXFxuQEAgLTEyMDYsMTcgKzEyMDcsMTkgQEAgc3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbiBcXG4gLyoqXFxuICAqIGlhdmZfYnVpbGRfc2tiIC0gQnVpbGQgc2tiIGFyb3VuZCBhbiBleGlzdGluZyBidWZmZXJcXG4rICogQHBwOiBwYWdlIHBvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cXG4gICogQHJ4X2J1ZmZlcjogUnggYnVmZmVyIHRvIHB1bGwgZGF0YSBmcm9tXFxuICAqIEBzaXplOiBzaXplIG9mIGJ1ZmZlciB0byBhZGQgdG8gc2tiXFxuICAqXFxuICAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIGFuIHNrYiBhcm91bmQgYW4gZXhpc3RpbmcgUnggYnVmZmVyLCB0YWtpbmcgY2FyZVxcbiAgKiB0byBzZXQgdXAgdGhlIHNrYiBjb3JyZWN0bHkgYW5kIGF2b2lkIGFueSBtZW1jcHkgb3ZlcmhlYWQuXFxuICAqL1xcbi1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlhdmZfYnVpbGRfc2tiKGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWZmZXIsXFxuK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXFxuK1xcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWZmZXIsXFxuIFxcdFxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGludCBzaXplKVxcbiB7XFxuIFxcdHN0cnVjdCBwYWdlICpidWZfcGFnZSA9IF9fbmV0bWVtX3RvX3BhZ2UocnhfYnVmZmVyLVxcdTAwM2VuZXRtZW0pO1xcbi1cXHR1MzIgaHIgPSBwcF9wYWdlX3RvX25tZGVzYyhidWZfcGFnZSktXFx1MDAzZXBwLVxcdTAwM2VwLm9mZnNldDtcXG4rXFx0dTMyIGhyID0gcHAtXFx1MDAzZXAub2Zmc2V0O1xcbiBcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbiBcXHR2b2lkICp2YTtcXG4gXFxuQEAgLTEzODcsNiArMTM5MCw3IEBAIHN0YXRpYyBpbnQgaWF2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcXG4ge1xcbiBcXHRib29sIGZsZXggPSByeF9yaW5nLVxcdTAwM2VyeGRpZCA9PSBWSVJUQ0hOTF9SWERJRF8yX0ZMRVhfU1FfTklDO1xcbiBcXHR1bnNpZ25lZCBpbnQgdG90YWxfcnhfYnl0ZXMgPSAwLCB0b3RhbF9yeF9wYWNrZXRzID0gMDtcXG4rXFx0Y29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAgPSByeF9yaW5nLVxcdTAwM2VwcDtcXG4gXFx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHJ4X3JpbmctXFx1MDAzZXNrYjtcXG4gXFx0dTE2IGNsZWFuZWRfY291bnQgPSBJQVZGX0RFU0NfVU5VU0VEKHJ4X3JpbmcpO1xcbiBcXHRib29sIGZhaWx1cmUgPSBmYWxzZTtcXG5AQCAtMTQyNCwxNCArMTQyOCwxNCBAQCBzdGF0aWMgaW50IGlhdmZfY2xlYW5fcnhfaXJxKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIGludCBidWRnZXQpXFxuIFxcdFxcdGlhdmZfdHJhY2UoY2xlYW5fcnhfaXJxLCByeF9yaW5nLCByeF9kZXNjLCBza2IpO1xcbiBcXG4gXFx0XFx0cnhfYnVmZmVyID0gXFx1MDAyNnJ4X3JpbmctXFx1MDAzZXJ4X2ZxZXNbcnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbl07XFxuLVxcdFxcdGlmICghbGliZXRoX3J4X3N5bmNfZm9yX2NwdShyeF9idWZmZXIsIGZpZWxkcy5sZW4pKVxcbitcXHRcXHRpZiAoIV9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKSlcXG4gXFx0XFx0XFx0Z290byBza2lwX2RhdGE7XFxuIFxcbiBcXHRcXHQvKiByZXRyaWV2ZSBhIGJ1ZmZlciBmcm9tIHRoZSByaW5nICovXFxuIFxcdFxcdGlmIChza2IpXFxuLVxcdFxcdFxcdGlhdmZfYWRkX3J4X2ZyYWcoc2tiLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pO1xcbitcXHRcXHRcXHRpYXZmX2FkZF9yeF9mcmFnKHBwLCBza2IsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XFxuIFxcdFxcdGVsc2VcXG4tXFx0XFx0XFx0c2tiID0gaWF2Zl9idWlsZF9za2IocnhfYnVmZmVyLCBmaWVsZHMubGVuKTtcXG4rXFx0XFx0XFx0c2tiID0gaWF2Zl9idWlsZF9za2IocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XFxuIFxcbiBcXHRcXHQvKiBleGl0IGlmIHdlIGZhaWxlZCB0byByZXRyaWV2ZSBhIGJ1ZmZlciAqL1xcbiBcXHRcXHRpZiAoIXNrYikge1xcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9saWJldGgvcnguaCBiL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXFxuaW5kZXggNWQ5OTE0MDQ4NDVlNi4uZmRkYWMwODRlMDAxZSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL25ldC9saWJldGgvcnguaFxcbisrKyBiL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXFxuQEAgLTExOCwzNiArMTE4LDUxIEBAIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBsaWJldGhfcnhfYWxsb2MoY29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCAqZnEsIHUzMiBpKVxcbiB2b2lkIGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cobmV0bWVtX3JlZiBuZXRtZW0pO1xcbiBcXG4gLyoqXFxuLSAqIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxcbisgKiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxcbisgKiBAcG9vbDogXFx1MDAyNnBhZ2VfcG9vbCB0aGUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgZnJvbVxcbiAgKiBAZnFlOiBidWZmZXIgdG8gcHJvY2Vzc1xcbiAgKiBAbGVuOiBmcmFtZSBsZW5ndGggZnJvbSB0aGUgZGVzY3JpcHRvclxcbiAgKlxcbi0gKiBQcm9jZXNzIHRoZSBidWZmZXIgYWZ0ZXIgaXQncyB3cml0dGVuIGJ5IEhXLiBUaGUgcmVndWxhciBwYXRoIGlzIHRvXFxuLSAqIHN5bmNocm9uaXplIERNQSBmb3IgQ1BVLCBidXQgaW4gY2FzZSBvZiBubyBkYXRhIGl0IHdpbGwgYmUgaW1tZWRpYXRlbHlcXG4tICogcmVjeWNsZWQgYmFjayB0byBpdHMgUFAuXFxuKyAqIFZhcmlhbnQgZm9yIGNhbGxlcnMgd2hpY2ggYWxyZWFkeSBrbm93IHRoZSBidWZmZXIncyBwb29sLCB0eXBpY2FsbHlcXG4rICogdGhlaXIgUnggcXVldWUncyBmaWxsIHF1ZXVlIHBvb2wuXFxuICAqXFxuICAqIFJldHVybjogdHJ1ZSB3aGVuIHRoZXJlJ3MgZGF0YSB0byBwcm9jZXNzLCBmYWxzZSBvdGhlcndpc2UuXFxuICAqL1xcbi1zdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3J4X3N5bmNfZm9yX2NwdShjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqZnFlLFxcbi1cXHRcXHRcXHRcXHRcXHQgIHUzMiBsZW4pXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCxcXG4rXFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICB1MzIgbGVuKVxcbiB7XFxuLVxcdG5ldG1lbV9yZWYgbmV0bWVtID0gZnFlLVxcdTAwM2VuZXRtZW07XFxuLVxcbiBcXHQvKiBWZXJ5IHJhcmUsIGJ1dCBwb3NzaWJsZSBjYXNlLiBUaGUgbW9zdCBjb21tb24gcmVhc29uOlxcbiBcXHQgKiB0aGUgbGFzdCBmcmFnbWVudCBjb250YWluZWQgRkNTIG9ubHksIHdoaWNoIHdhcyB0aGVuXFxuIFxcdCAqIHN0cmlwcGVkIGJ5IHRoZSBIVy5cXG4gXFx0ICovXFxuIFxcdGlmICh1bmxpa2VseSghbGVuKSkge1xcbi1cXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KG5ldG1lbSk7XFxuK1xcdFxcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3coZnFlLVxcdTAwM2VuZXRtZW0pO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gXFxuLVxcdHBhZ2VfcG9vbF9kbWFfc3luY19uZXRtZW1fZm9yX2NwdShuZXRtZW1fZ2V0X3BwKG5ldG1lbSksIG5ldG1lbSxcXG4tXFx0XFx0XFx0XFx0XFx0ICBmcWUtXFx1MDAzZW9mZnNldCwgbGVuKTtcXG4rXFx0cGFnZV9wb29sX2RtYV9zeW5jX25ldG1lbV9mb3JfY3B1KHBvb2wsIGZxZS1cXHUwMDNlbmV0bWVtLCBmcWUtXFx1MDAzZW9mZnNldCwgbGVuKTtcXG4gXFxuIFxcdHJldHVybiB0cnVlO1xcbiB9XFxuIFxcbisvKipcXG4rICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXFxuKyAqIEBmcWU6IGJ1ZmZlciB0byBwcm9jZXNzXFxuKyAqIEBsZW46IGZyYW1lIGxlbmd0aCBmcm9tIHRoZSBkZXNjcmlwdG9yXFxuKyAqXFxuKyAqIFByb2Nlc3MgdGhlIGJ1ZmZlciBhZnRlciBpdCdzIHdyaXR0ZW4gYnkgSFcuIFRoZSByZWd1bGFyIHBhdGggaXMgdG9cXG4rICogc3luY2hyb25pemUgRE1BIGZvciBDUFUsIGJ1dCBpbiBjYXNlIG9mIG5vIGRhdGEgaXQgd2lsbCBiZSBpbW1lZGlhdGVseVxcbisgKiByZWN5Y2xlZCBiYWNrIHRvIGl0cyBQUC5cXG4rICpcXG4rICogUmV0dXJuOiB0cnVlIHdoZW4gdGhlcmUncyBkYXRhIHRvIHByb2Nlc3MsIGZhbHNlIG90aGVyd2lzZS5cXG4rICovXFxuK3N0YXRpYyBpbmxpbmUgYm9vbCBsaWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXFxuK1xcdFxcdFxcdFxcdFxcdCAgdTMyIGxlbilcXG4re1xcbitcXHRyZXR1cm4gX19saWJldGhfcnhfc3luY19mb3JfY3B1KG5ldG1lbV9nZXRfcHAoZnFlLVxcdTAwM2VuZXRtZW0pLCBmcWUsIGxlbik7XFxuK31cXG4rXFxuIC8qIENvbnZlcnRpbmcgYWJzdHJhY3QgcGFja2V0IHR5cGUgbnVtYmVycyBpbnRvIGEgc29mdHdhcmUgc3RydWN0dXJlIHdpdGhcXG4gICogdGhlIHBhY2tldCBwYXJhbWV0ZXJzIHRvIGRvIE8oMSkgbG9va3VwIG9uIFJ4LlxcbiAgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6MzcuNTgyMzIzMzhaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3ODkwNjY1MDg0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDJiZjU2ZWYzMTQyNmY1MGE0OGU4NTEzY2M1MzVkMzhmMjI1OTcxODJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyAxIDE5OjIzOjM2IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmNcbmluZGV4IGMzMGFiZjE3Y2Y1ZDMuLjlkYzVmMDc2MWQ4YmEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jXG5AQCAtMTE4NCw2ICsxMTg0LDcgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcbiAvKipcbiAgKiBpYXZmX2FkZF9yeF9mcmFnIC0gQWRkIGNvbnRlbnRzIG9mIFJ4IGJ1ZmZlciB0byBza19idWZmXG4rICogQHBwOiBwYWdlIHBvb2wgdGhlIGJ1ZmZlciB3YXMgYWxsb2NhdGVkIGZyb21cbiAgKiBAc2tiOiBza19idWZmIHRvIHBsYWNlIHRoZSBkYXRhIGludG9cbiAgKiBAcnhfYnVmZmVyOiBidWZmZXIgY29udGFpbmluZyBwYWdlIHRvIGFkZFxuICAqIEBzaXplOiBwYWNrZXQgbGVuZ3RoIGZyb20gcnhfZGVzY1xuQEAgLTExOTMsMTEgKzExOTQsMTEgQEAgc3RhdGljIGJvb2wgaWF2Zl9jbGVhbnVwX2hlYWRlcnMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiAgKlxuICAqIFRoZSBmdW5jdGlvbiB3aWxsIHRoZW4gdXBkYXRlIHRoZSBwYWdlIG9mZnNldC5cbiAgKiovXG4tc3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuK3N0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXG4gXHRcdFx0ICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuIFx0XHRcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXG4ge1xuLVx0dTMyIGhyID0gbmV0bWVtX2dldF9wcChyeF9idWZmZXItXHUwMDNlbmV0bWVtKS1cdTAwM2VwLm9mZnNldDtcbitcdHUzMiBociA9IHBwLVx1MDAzZXAub2Zmc2V0O1xuIFxuIFx0c2tiX2FkZF9yeF9mcmFnX25ldG1lbShza2IsIHNrYl9zaGluZm8oc2tiKS1cdTAwM2Vucl9mcmFncyxcbiBcdFx0XHQgICAgICAgcnhfYnVmZmVyLVx1MDAzZW5ldG1lbSwgcnhfYnVmZmVyLVx1MDAzZW9mZnNldCArIGhyLFxuQEAgLTEyMDYsMTcgKzEyMDcsMTkgQEAgc3RhdGljIHZvaWQgaWF2Zl9hZGRfcnhfZnJhZyhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFxuIC8qKlxuICAqIGlhdmZfYnVpbGRfc2tiIC0gQnVpbGQgc2tiIGFyb3VuZCBhbiBleGlzdGluZyBidWZmZXJcbisgKiBAcHA6IHBhZ2UgcG9vbCB0aGUgYnVmZmVyIHdhcyBhbGxvY2F0ZWQgZnJvbVxuICAqIEByeF9idWZmZXI6IFJ4IGJ1ZmZlciB0byBwdWxsIGRhdGEgZnJvbVxuICAqIEBzaXplOiBzaXplIG9mIGJ1ZmZlciB0byBhZGQgdG8gc2tiXG4gICpcbiAgKiBUaGlzIGZ1bmN0aW9uIGJ1aWxkcyBhbiBza2IgYXJvdW5kIGFuIGV4aXN0aW5nIFJ4IGJ1ZmZlciwgdGFraW5nIGNhcmVcbiAgKiB0byBzZXQgdXAgdGhlIHNrYiBjb3JyZWN0bHkgYW5kIGF2b2lkIGFueSBtZW1jcHkgb3ZlcmhlYWQuXG4gICovXG4tc3RhdGljIHN0cnVjdCBza19idWZmICppYXZmX2J1aWxkX3NrYihjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuK3N0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWF2Zl9idWlsZF9za2IoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsXG4rXHRcdFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxuIFx0XHRcdFx0ICAgICAgdW5zaWduZWQgaW50IHNpemUpXG4ge1xuIFx0c3RydWN0IHBhZ2UgKmJ1Zl9wYWdlID0gX19uZXRtZW1fdG9fcGFnZShyeF9idWZmZXItXHUwMDNlbmV0bWVtKTtcbi1cdHUzMiBociA9IHBwX3BhZ2VfdG9fbm1kZXNjKGJ1Zl9wYWdlKS1cdTAwM2VwcC1cdTAwM2VwLm9mZnNldDtcbitcdHUzMiBociA9IHBwLVx1MDAzZXAub2Zmc2V0O1xuIFx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbiBcdHZvaWQgKnZhO1xuIFxuQEAgLTEzODcsNiArMTM5MCw3IEBAIHN0YXRpYyBpbnQgaWF2Zl9jbGVhbl9yeF9pcnEoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcbiB7XG4gXHRib29sIGZsZXggPSByeF9yaW5nLVx1MDAzZXJ4ZGlkID09IFZJUlRDSE5MX1JYRElEXzJfRkxFWF9TUV9OSUM7XG4gXHR1bnNpZ25lZCBpbnQgdG90YWxfcnhfYnl0ZXMgPSAwLCB0b3RhbF9yeF9wYWNrZXRzID0gMDtcbitcdGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwID0gcnhfcmluZy1cdTAwM2VwcDtcbiBcdHN0cnVjdCBza19idWZmICpza2IgPSByeF9yaW5nLVx1MDAzZXNrYjtcbiBcdHUxNiBjbGVhbmVkX2NvdW50ID0gSUFWRl9ERVNDX1VOVVNFRChyeF9yaW5nKTtcbiBcdGJvb2wgZmFpbHVyZSA9IGZhbHNlO1xuQEAgLTE0MjQsMTQgKzE0MjgsMTQgQEAgc3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxuIFx0XHRpYXZmX3RyYWNlKGNsZWFuX3J4X2lycSwgcnhfcmluZywgcnhfZGVzYywgc2tiKTtcbiBcbiBcdFx0cnhfYnVmZmVyID0gXHUwMDI2cnhfcmluZy1cdTAwM2VyeF9mcWVzW3J4X3JpbmctXHUwMDNlbmV4dF90b19jbGVhbl07XG4tXHRcdGlmICghbGliZXRoX3J4X3N5bmNfZm9yX2NwdShyeF9idWZmZXIsIGZpZWxkcy5sZW4pKVxuK1x0XHRpZiAoIV9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKSlcbiBcdFx0XHRnb3RvIHNraXBfZGF0YTtcbiBcbiBcdFx0LyogcmV0cmlldmUgYSBidWZmZXIgZnJvbSB0aGUgcmluZyAqL1xuIFx0XHRpZiAoc2tiKVxuLVx0XHRcdGlhdmZfYWRkX3J4X2ZyYWcoc2tiLCByeF9idWZmZXIsIGZpZWxkcy5sZW4pO1xuK1x0XHRcdGlhdmZfYWRkX3J4X2ZyYWcocHAsIHNrYiwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKTtcbiBcdFx0ZWxzZVxuLVx0XHRcdHNrYiA9IGlhdmZfYnVpbGRfc2tiKHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XG4rXHRcdFx0c2tiID0gaWF2Zl9idWlsZF9za2IocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbik7XG4gXG4gXHRcdC8qIGV4aXQgaWYgd2UgZmFpbGVkIHRvIHJldHJpZXZlIGEgYnVmZmVyICovXG4gXHRcdGlmICghc2tiKSB7XG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbGliZXRoL3J4LmggYi9pbmNsdWRlL25ldC9saWJldGgvcnguaFxuaW5kZXggNWQ5OTE0MDQ4NDVlNi4uZmRkYWMwODRlMDAxZSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbmV0L2xpYmV0aC9yeC5oXG4rKysgYi9pbmNsdWRlL25ldC9saWJldGgvcnguaFxuQEAgLTExOCwzNiArMTE4LDUxIEBAIHN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBsaWJldGhfcnhfYWxsb2MoY29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCAqZnEsIHUzMiBpKVxuIHZvaWQgbGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW1fcmVmIG5ldG1lbSk7XG4gXG4gLyoqXG4tICogbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXG4rICogX19saWJldGhfcnhfc3luY19mb3JfY3B1IC0gc3luY2hyb25pemUgb3IgcmVjeWNsZSBidWZmZXIgcG9zdCBETUFcbisgKiBAcG9vbDogXHUwMDI2cGFnZV9wb29sIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCBmcm9tXG4gICogQGZxZTogYnVmZmVyIHRvIHByb2Nlc3NcbiAgKiBAbGVuOiBmcmFtZSBsZW5ndGggZnJvbSB0aGUgZGVzY3JpcHRvclxuICAqXG4tICogUHJvY2VzcyB0aGUgYnVmZmVyIGFmdGVyIGl0J3Mgd3JpdHRlbiBieSBIVy4gVGhlIHJlZ3VsYXIgcGF0aCBpcyB0b1xuLSAqIHN5bmNocm9uaXplIERNQSBmb3IgQ1BVLCBidXQgaW4gY2FzZSBvZiBubyBkYXRhIGl0IHdpbGwgYmUgaW1tZWRpYXRlbHlcbi0gKiByZWN5Y2xlZCBiYWNrIHRvIGl0cyBQUC5cbisgKiBWYXJpYW50IGZvciBjYWxsZXJzIHdoaWNoIGFscmVhZHkga25vdyB0aGUgYnVmZmVyJ3MgcG9vbCwgdHlwaWNhbGx5XG4rICogdGhlaXIgUnggcXVldWUncyBmaWxsIHF1ZXVlIHBvb2wuXG4gICpcbiAgKiBSZXR1cm46IHRydWUgd2hlbiB0aGVyZSdzIGRhdGEgdG8gcHJvY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICAqL1xuLXN0YXRpYyBpbmxpbmUgYm9vbCBsaWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXG4tXHRcdFx0XHRcdCAgdTMyIGxlbilcbitzdGF0aWMgaW5saW5lIGJvb2wgX19saWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBvb2wsXG4rXHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqZnFlLFxuK1x0XHRcdFx0XHQgICAgdTMyIGxlbilcbiB7XG4tXHRuZXRtZW1fcmVmIG5ldG1lbSA9IGZxZS1cdTAwM2VuZXRtZW07XG4tXG4gXHQvKiBWZXJ5IHJhcmUsIGJ1dCBwb3NzaWJsZSBjYXNlLiBUaGUgbW9zdCBjb21tb24gcmVhc29uOlxuIFx0ICogdGhlIGxhc3QgZnJhZ21lbnQgY29udGFpbmVkIEZDUyBvbmx5LCB3aGljaCB3YXMgdGhlblxuIFx0ICogc3RyaXBwZWQgYnkgdGhlIEhXLlxuIFx0ICovXG4gXHRpZiAodW5saWtlbHkoIWxlbikpIHtcbi1cdFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhuZXRtZW0pO1xuK1x0XHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KGZxZS1cdTAwM2VuZXRtZW0pO1xuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXHR9XG4gXG4tXHRwYWdlX3Bvb2xfZG1hX3N5bmNfbmV0bWVtX2Zvcl9jcHUobmV0bWVtX2dldF9wcChuZXRtZW0pLCBuZXRtZW0sXG4tXHRcdFx0XHRcdCAgZnFlLVx1MDAzZW9mZnNldCwgbGVuKTtcbitcdHBhZ2VfcG9vbF9kbWFfc3luY19uZXRtZW1fZm9yX2NwdShwb29sLCBmcWUtXHUwMDNlbmV0bWVtLCBmcWUtXHUwMDNlb2Zmc2V0LCBsZW4pO1xuIFxuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuKy8qKlxuKyAqIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUgLSBzeW5jaHJvbml6ZSBvciByZWN5Y2xlIGJ1ZmZlciBwb3N0IERNQVxuKyAqIEBmcWU6IGJ1ZmZlciB0byBwcm9jZXNzXG4rICogQGxlbjogZnJhbWUgbGVuZ3RoIGZyb20gdGhlIGRlc2NyaXB0b3JcbisgKlxuKyAqIFByb2Nlc3MgdGhlIGJ1ZmZlciBhZnRlciBpdCdzIHdyaXR0ZW4gYnkgSFcuIFRoZSByZWd1bGFyIHBhdGggaXMgdG9cbisgKiBzeW5jaHJvbml6ZSBETUEgZm9yIENQVSwgYnV0IGluIGNhc2Ugb2Ygbm8gZGF0YSBpdCB3aWxsIGJlIGltbWVkaWF0ZWx5XG4rICogcmVjeWNsZWQgYmFjayB0byBpdHMgUFAuXG4rICpcbisgKiBSZXR1cm46IHRydWUgd2hlbiB0aGVyZSdzIGRhdGEgdG8gcHJvY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLlxuKyAqL1xuK3N0YXRpYyBpbmxpbmUgYm9vbCBsaWJldGhfcnhfc3luY19mb3JfY3B1KGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXG4rXHRcdFx0XHRcdCAgdTMyIGxlbilcbit7XG4rXHRyZXR1cm4gX19saWJldGhfcnhfc3luY19mb3JfY3B1KG5ldG1lbV9nZXRfcHAoZnFlLVx1MDAzZW5ldG1lbSksIGZxZSwgbGVuKTtcbit9XG4rXG4gLyogQ29udmVydGluZyBhYnN0cmFjdCBwYWNrZXQgdHlwZSBudW1iZXJzIGludG8gYSBzb2Z0d2FyZSBzdHJ1Y3R1cmUgd2l0aFxuICAqIHRoZSBwYWNrZXQgcGFyYW1ldGVycyB0byBkbyBPKDEpIGxvb2t1cCBvbiBSeC5cbiAgKi9cbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjM3LjU4MjMyNTA4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODE4MDc5Nzk0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIElBVkYgUGF0Y2ggYW5kIGl0cyBJbXBsaWNhdGlvbnMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpdCdzIG1ha2luZyBzb21lIHByZXR0eSBzcGVjaWZpYyBjaGFuZ2VzIHdpdGhpbiB0aGUgSW50ZWwgSUFWRiBkcml2ZXIuIEl0J3MgdG91Y2hpbmcgYGlhdmZfdHhyeC5jYCBhbmQgYHJ4LmhgLCBhbmQgc3BlY2lmaWNhbGx5LCBpdCdzIHVwZGF0aW5nIGhvdyB0aGUgYHBhZ2VfcG9vbGAgaXMgaGFuZGxlZCB3aXRoaW4gYGlhdmZfYWRkX3J4X2ZyYWdgLCBgaWF2Zl9idWlsZF9za2JgLCBhbmQgYGlhdmZfY2xlYW5fcnhfaXJxYC4gVGhlIGltcG9ydGFudCB0aGluZyBJJ20gc2VlaW5nIGlzIHRoYXQgaXQncyBubyBsb25nZXIgaW1wbGljaXRseSBkZXJpdmluZyB0aGUgYHBhZ2VfcG9vbGAgZnJvbSBhIGBuZXRtZW1gIHJlZmVyZW5jZS4gSXQncyBiZWVuIG1hZGUgZXhwbGljaXQuIEl0IGFsc28gbG9va3MgbGlrZSBhIG5ldyBmdW5jdGlvbiBjYWxsZWQgYF9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdWAgaGFzIGJlZW4gaW50cm9kdWNlZCwgYWdhaW4gdGFraW5nIGEgYHBhZ2VfcG9vbGAgcG9pbnRlci4gYGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHVgIGhhcyBhbHNvIGJlZW4gbW9kaWZpZWQgdG8gdXNlIHRoZSBgcGFnZV9wb29sYCBwb2ludGVyLlxuXG5Ob3csIHRoZSBgaWF2ZmAgZHJpdmVyLi4uIHRoYXQncyB0aGUgSW50ZWwgRXRoZXJuZXQgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiBkcml2ZXIuIFJpZ2h0LCBpdCdzIGEgVkYgZHJpdmVyLiBTbywgdGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCByaWdodD8gRXNwZWNpYWxseSB3aGVuIHlvdSdyZSB0YWxraW5nIGFib3V0IFNSLUlPVi4gQW5kIHRoYXQgbWVhbnMgaXQgaXMgYSBWaXJ0dWFsIEZ1bmN0aW9uLCB3aGljaCBuZWVkcyB0aGUgcGh5c2ljYWwgTklDIChsaWtlIGFuIGk0MGUgb3IgaWNlKSB0byBiZSBwcmVzZW50IHRvIHdvcmsuIFxuXG5UaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIHRoYXQgcG9wcyBpbnRvIG15IGhlYWQgaXMsIGNhbiBJIGV2ZW4gKnRlc3QqIHRoaXMgaW4gYSBzdGFuZGFyZCBRRU1VIGVudmlyb25tZW50PyBRRU1VIGRvZXNuJ3QgbmF0aXZlbHkgZW11bGF0ZSBJbnRlbCBBVkZzLiBIbW1tLCBjb3VsZCB0aGVyZSBiZSBzb21lIHdheSB0byBmdWRnZSBpdCB3aXRoIHNvZnR3YXJlIGVtdWxhdGlvbiBvciBtYXliZSBpZiBpdCdzIGNvbnNpZGVyZWQgY29yZSBlbm91Z2g/XG5cbldhaXQsIHRoZSBwcm9tcHQgc2F5cyBzb21ldGhpbmcgdGhhdCBtaWdodCBhcHBseTogXCJDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgVGhpcyBpcyBleGFjdGx5IHdoYXQgSSdtIGRlYWxpbmcgd2l0aC4gSXMgYGlhdmZgIGEgdmVuZG9yLXNwZWNpZmljIGRyaXZlciB0aGF0IHJlcXVpcmVzIHBoeXNpY2FsIGhhcmR3YXJlPyBZZXMsIHRoYXQncyB3aGF0IGEgVkYgZHJpdmVyIGlzIGxpa2UuIFVzdWFsbHksIFZGIGRyaXZlcnMgcmVxdWlyZSB0aGUgcGh5c2ljYWwgUEYgZHJpdmVyIGFuZCBwaHlzaWNhbCBoYXJkd2FyZSwgdW5sZXNzIEkgY2FuIGZpbmQgYW4gZW11bGF0b3IuXG5cbkFscmlnaHQsIHNvIHRoZSBrZXkgdGhpbmcgaXMgd2hldGhlciBgaWF2ZmAgKmNhbiogYmUgZnV6emVkIGluIGFueSByZWFzb25hYmxlIHdheSBvciBpZiBJIGFic29sdXRlbHkgbmVlZCB0aGUgcGh5c2ljYWwgaGFyZHdhcmUgdG8gdGVzdCB0aGlzLiBUaGUgcGF0Y2ggaXMgdG91Y2hpbmcgYSBQQ0kgZHJpdmVyLCBgaWF2ZmAuIEJldHRlciBjaGVjayB0aGUga2VybmVsIHNvdXJjZSB0byBtYWtlIHN1cmUgdGhhdCdzIGFjY3VyYXRlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTQ3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NDUuNzYzMTI1Njc3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODQ0NzM1OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpYXZmXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgNzM2NiBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS0zLSNcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlOjQ6IyBNYWtlZmlsZSBmb3IgdGhlIEludGVsKFIpIEV0aGVybmV0IEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS01LSMgZHJpdmVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlPTEwPXN1YmRpci1jY2ZsYWdzLXkgKz0gLUkkKHNyYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlLTExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0lBVkYpICs9IGlhdmYub1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvTWFrZWZpbGUtMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZToxNDppYXZmLXkgOj0gaWF2Zl9tYWluLm8gaWF2Zl9ldGh0b29sLm8gaWF2Zl92aXJ0Y2hubC5vIGlhdmZfZmRpci5vIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlOjE1OlxcdCAgaWF2Zl9hZHZfcnNzLm8gaWF2Zl90eHJ4Lm8gaWF2Zl9jb21tb24ubyBpYXZmX2FkbWlucS5vXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9NYWtlZmlsZS0xNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL01ha2VmaWxlOjE3OmlhdmYtJChDT05GSUdfUFRQXzE1ODhfQ0xPQ0spICs9IGlhdmZfcHRwLm9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjM5OiNpbmNsdWRlIFxcXCJpYXZmX3R5cGUuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00MC0jaW5jbHVkZSBcXHUwMDNjbGludXgvYXZmL3ZpcnRjaG5sLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDE6I2luY2x1ZGUgXFxcImlhdmZfdHhyeC5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQyOiNpbmNsdWRlIFxcXCJpYXZmX2ZkaXIuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0MzojaW5jbHVkZSBcXFwiaWF2Zl9hZHZfcnNzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDQ6I2luY2x1ZGUgXFxcImlhdmZfdHlwZXMuaFxcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NS0jaW5jbHVkZSBcXHUwMDNjbGludXgvYml0bWFwLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00Ny0jZGVmaW5lIERFRkFVTFRfREVCVUdfTEVWRUxfU0hJRlQgM1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ4OiNkZWZpbmUgUEZYIFxcXCJpYXZmOiBcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTA6aW50IGlhdmZfc3RhdHVzX3RvX2Vycm5vKGVudW0gaWF2Zl9zdGF0dXMgc3RhdHVzKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MS1pbnQgdmlydGNobmxfc3RhdHVzX3RvX2Vycm5vKGVudW0gdmlydGNobmxfc3RhdHVzX2NvZGUgdl9zdGF0dXMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTMtLyogVlNJIHN0YXRlIGZsYWdzIHNoYXJlZCB3aXRoIGNvbW1vbiBjb2RlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTQ6ZW51bSBpYXZmX3ZzaV9zdGF0ZV90IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NS1cXHRfX0lBVkZfVlNJX0RPV04sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC02MC0vKiBkdW1teSBzdHJ1Y3QgdG8gbWFrZSBjb21tb24gY29kZSBsZXNzIHBhaW5mdWwgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTpzdHJ1Y3QgaWF2Zl92c2kge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYyOlxcdHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmJhY2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjMtXFx0c3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTg1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjg2OiNkZWZpbmUgSUFWRl9SWF9ERVNDKFIsIGkpIChcXHUwMDI2KCgoc3RydWN0IGlhdmZfcnhfZGVzYyAqKSgoUiktXFx1MDAzZWRlc2MpKVtpXSkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6ODc6I2RlZmluZSBJQVZGX1RYX0RFU0MoUiwgaSkgKFxcdTAwMjYoKChzdHJ1Y3QgaWF2Zl90eF9kZXNjICopKChSKS1cXHUwMDNlZGVzYykpW2ldKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC04OC0jZGVmaW5lIElBVkZfVFhfQ1RYVERFU0MoUiwgaSkgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjg5OlxcdChcXHUwMDI2KCgoc3RydWN0IGlhdmZfdHhfY29udGV4dF9kZXNjICopKChSKS1cXHUwMDNlZGVzYykpW2ldKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC05MC0jZGVmaW5lIElBVkZfTUFYX1JFUV9RVUVVRVMgMTZcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTEwMy0gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxMDQ6c3RydWN0IGlhdmZfcV92ZWN0b3Ige1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEwNTpcXHRzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEwNjpcXHRzdHJ1Y3QgaWF2Zl92c2kgKnZzaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xMDctXFx0c3RydWN0IG5hcGlfc3RydWN0IG5hcGk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTA4OlxcdHN0cnVjdCBpYXZmX3JpbmdfY29udGFpbmVyIHJ4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEwOTpcXHRzdHJ1Y3QgaWF2Zl9yaW5nX2NvbnRhaW5lciB0eDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xMTAtXFx0dTMyIHJpbmdfbWFzaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTEyMC0gKiBBbmQgeWVzLCBpdCdzIHRoZSBzYW1lIG1hdGggZ29pbmcgYm90aCB3YXlzLiAgVGhlIGxvd2VzdCB2YWx1ZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjEyMTogKiBzdXBwb3J0ZWQgYnkgYWxsIG9mIHRoZSBpYXZmIGhhcmR3YXJlIGlzIDguXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTIyLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTM4LSNkZWZpbmUgSUFWRl9GUkVFX1ZFQ1RPUiAweDdGRkZcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxMzk6c3RydWN0IGlhdmZfbWFjX2ZpbHRlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTQwLVxcdHN0cnVjdCBsaXN0X2hlYWQgbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNTI6I2RlZmluZSBJQVZGX1ZMQU4odmlkLCB0cGlkKSAoKHN0cnVjdCBpYXZmX3ZsYW4peyB2aWQsIHRwaWQgfSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNTM6c3RydWN0IGlhdmZfdmxhbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTU0LVxcdHUxNiB2aWQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTU4OmVudW0gaWF2Zl92bGFuX3N0YXRlX3Qge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE1OS1cXHRJQVZGX1ZMQU5fSU5WQUxJRCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNjc6c3RydWN0IGlhdmZfdmxhbl9maWx0ZXIge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE2OC1cXHRzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTY5OlxcdHN0cnVjdCBpYXZmX3ZsYW4gdmxhbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxNzA6XFx0ZW51bSBpYXZmX3ZsYW5fc3RhdGVfdCBzdGF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNzEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE3NC0vKiBTdGF0ZSBvZiB0cmFmZmljIGNsYXNzIGNyZWF0aW9uICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTc1OmVudW0gaWF2Zl90Y19zdGF0ZV90IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xNzYtXFx0X19JQVZGX1RDX0lOVkFMSUQsIC8qIG5vIHRyYWZmaWMgY2xhc3MsIGRlZmF1bHQgc3RhdGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE4MC0vKiBjaGFubmVsIGluZm8gKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoxODE6c3RydWN0IGlhdmZfY2hhbm5lbF9jb25maWcge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE4Mi1cXHRzdHJ1Y3QgdmlydGNobmxfY2hhbm5lbF9pbmZvIGNoX2luZm9bSUFWRl9NQVhfVFJBRkZJQ19DTEFTU107XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTgzOlxcdGVudW0gaWF2Zl90Y19zdGF0ZV90IHN0YXRlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTE4NC1cXHR1OCB0b3RhbF9xcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xODctLyogU3RhdGUgb2YgY2xvdWQgZmlsdGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MTg4OmVudW0gaWF2Zl9jbG91ZF9maWx0ZXJfc3RhdGVfdCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTg5LVxcdF9fSUFWRl9DRl9JTlZBTElELFxcdCAvKiBjbG91ZCBmaWx0ZXIgbm90IGFkZGVkICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0xOTUtLyogRHJpdmVyIHN0YXRlLiBUaGUgb3JkZXIgb2YgdGhlc2UgaXMgaW1wb3J0YW50ISAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjE5NjplbnVtIGlhdmZfc3RhdGVfdCB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMTk3LVxcdF9fSUFWRl9TVEFSVFVQLFxcdFxcdC8qIGRyaXZlciBsb2FkZWQsIHByb2JlIGNvbXBsZXRlICovXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yMTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjE0OmVudW0gaWF2Zl9jcml0aWNhbF9zZWN0aW9uX3Qge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTIxNS1cXHRfX0lBVkZfSU5fUkVNT1ZFX1RBU0ssXFx0LyogZGV2aWNlIGJlaW5nIHJlbW92ZWQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTIzOC0vKiBib29ra2VlcGluZyBvZiBjbG91ZCBmaWx0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjM5OnN0cnVjdCBpYXZmX2Nsb3VkX2ZpbHRlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjQwOlxcdGVudW0gaWF2Zl9jbG91ZF9maWx0ZXJfc3RhdGVfdCBzdGF0ZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNDEtXFx0c3RydWN0IGxpc3RfaGVhZCBsaXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjU1LS8qIGJvYXJkIHNwZWNpZmljIHByaXZhdGUgZGF0YSBzdHJ1Y3R1cmUgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoyNTY6c3RydWN0IGlhdmZfYWRhcHRlciB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjU3LVxcdHN0cnVjdCB3b3JrcXVldWVfc3RydWN0ICp3cTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTI2Mi1cXHR3YWl0X3F1ZXVlX2hlYWRfdCB2Y193YWl0cXVldWU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MjYzOlxcdHN0cnVjdCBpYXZmX3FfdmVjdG9yICpxX3ZlY3RvcnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjY0LVxcdHN0cnVjdCBsaXN0X2hlYWQgdmxhbl9maWx0ZXJfbGlzdDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTI3NC1cXHQvKiBUWCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjI3NTpcXHRzdHJ1Y3QgaWF2Zl9yaW5nICp0eF9yaW5ncztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNzYtXFx0dTMyIHR4X3RpbWVvdXRfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC0yNzktXFx0LyogUlggKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDoyODA6XFx0c3RydWN0IGlhdmZfcmluZyAqcnhfcmluZ3M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMjgxLVxcdHU2NCBod19jc3VtX3J4X2Vycm9yO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMzg3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjM4ODpcXHRzdHJ1Y3QgaWF2Zl9odyBodzsgLyogZGVmaW5lZCBpbiBpYXZmX3R5cGUuaCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTM4OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDozOTA6XFx0ZW51bSBpYXZmX3N0YXRlX3Qgc3RhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6MzkxOlxcdGVudW0gaWF2Zl9zdGF0ZV90IGxhc3Rfc3RhdGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtMzkyLVxcdHVuc2lnbmVkIGxvbmcgY3JpdF9zZWN0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDQ2LVxcdHU2NCBzdXBwX3J4ZGlkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0NDc6XFx0c3RydWN0IGlhdmZfcHRwIHB0cDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NDgtXFx0dTE2IG1zZ19lbmFibGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NDQ5OlxcdHN0cnVjdCBpYXZmX2V0aF9zdGF0cyBjdXJyZW50X3N0YXRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ1MC1cXHRzdHJ1Y3QgdmlydGNobmxfcW9zX2NhcF9saXN0ICpxb3NfY2FwcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0NTE6XFx0c3RydWN0IGlhdmZfdnNpIHZzaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NTItXFx0dTMyIGFxX3dhaXRfY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00NjAtXFx0LyogQURRIHJlbGF0ZWQgbWVtYmVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ2MTpcXHRzdHJ1Y3QgaWF2Zl9jaGFubmVsX2NvbmZpZyBjaF9jb25maWc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDYyLVxcdHU4IG51bV90YztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTQ4My0vKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGZkaXJfZmx0cl9sb2NrIGxvY2sgaGVsZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ4NDpzdGF0aWMgaW5saW5lIGJvb2wgaWF2Zl9mZGlyX21heF9yZWFjaGVkKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNDg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oPTQ5MD1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo0OTE6aWF2Zl9pbmNfZmRpcl9hY3RpdmVfZmx0cihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ5MjpcXHRcXHRcXHQgIHN0cnVjdCBpYXZmX2ZkaXJfZmx0ciAqZmx0cilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00OTMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjQ5NDpcXHRpZiAoaWF2Zl9pc19yYXdfZmRpcihmbHRyKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC00OTUtXFx0XFx0YWRhcHRlci1cXHUwMDNlcmF3X2ZkaXJfYWN0aXZlX2ZsdHIrKztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oPTUwMD1zdGF0aWMgaW5saW5lIHZvaWRcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1MDE6aWF2Zl9kZWNfZmRpcl9hY3RpdmVfZmx0cihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUwMjpcXHRcXHRcXHQgIHN0cnVjdCBpYXZmX2ZkaXJfZmx0ciAqZmx0cilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MDMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjUwNDpcXHRpZiAoaWF2Zl9pc19yYXdfZmRpcihmbHRyKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MDUtXFx0XFx0YWRhcHRlci1cXHUwMDNlcmF3X2ZkaXJfYWN0aXZlX2ZsdHItLTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTUxMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1MTI6LyogbmVlZGVkIGJ5IGlhdmZfZXRodG9vbC5jICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTEzOmV4dGVybiBjaGFyIGlhdmZfZHJpdmVyX25hbWVbXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01MTQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTE1OnN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciAqaWF2Zl9zdGF0ZV9zdHIoZW51bSBpYXZmX3N0YXRlX3Qgc3RhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTE2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NTE6c3RhdGljIGlubGluZSB2b2lkIGlhdmZfY2hhbmdlX3N0YXRlKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTUyOlxcdFxcdFxcdFxcdCAgICAgZW51bSBpYXZmX3N0YXRlX3Qgc3RhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNTUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU1OS1cXHRcXHRcXFwic3RhdGUgdHJhbnNpdGlvbiBmcm9tOiVzIHRvOiVzXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU2MDpcXHRcXHRpYXZmX3N0YXRlX3N0cihhZGFwdGVyLVxcdTAwM2VsYXN0X3N0YXRlKSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjE6XFx0XFx0aWF2Zl9zdGF0ZV9zdHIoYWRhcHRlci1cXHUwMDNlc3RhdGUpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NjItfVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTU2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NjQ6dm9pZCBpYXZmX2Rvd24oc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTY1OmludCBpYXZmX3Byb2Nlc3NfY29uZmlnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU2NjppbnQgaWF2Zl9wYXJzZV92Zl9yZXNvdXJjZV9tc2coc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTY3OnZvaWQgaWF2Zl9zY2hlZHVsZV9yZXNldChzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU2ODp2b2lkIGlhdmZfc2NoZWR1bGVfYXFfcmVxdWVzdChzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1NjQgZmxhZ3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU2OTp2b2lkIGlhdmZfc2NoZWR1bGVfZmluaXNoX2NvbmZpZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzA6dm9pZCBpYXZmX3NldF9ldGh0b29sX29wcyhzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzE6dm9pZCBpYXZmX2ZyZWVfYWxsX3R4X3Jlc291cmNlcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzI6dm9pZCBpYXZmX2ZyZWVfYWxsX3J4X3Jlc291cmNlcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaC01NzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc0OmludCBpYXZmX3NlbmRfYXBpX3ZlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1NzU6aW50IGlhdmZfdmVyaWZ5X2FwaV92ZXIoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTc2OmludCBpYXZmX3NlbmRfdmZfY29uZmlnX21zZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Nzc6aW50IGlhdmZfZ2V0X3ZmX2NvbmZpZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Nzg6aW50IGlhdmZfZ2V0X3ZmX3ZsYW5fdjJfY2FwcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1Nzk6aW50IGlhdmZfc2VuZF92Zl9vZmZsb2FkX3ZsYW5fdjJfbXNnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU4MDppbnQgaWF2Zl9zZW5kX3ZmX3N1cHBvcnRlZF9yeGRpZHNfbXNnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU4MTppbnQgaWF2Zl9nZXRfdmZfc3VwcG9ydGVkX3J4ZGlkcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODI6aW50IGlhdmZfc2VuZF92Zl9wdHBfY2Fwc19tc2coc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTgzOmludCBpYXZmX2dldF92Zl9wdHBfY2FwcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODQ6dm9pZCBpYXZmX3NldF9xdWV1ZV92bGFuX3RhZ19sb2Moc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg1OnUxNiBpYXZmX2dldF9udW1fdmxhbnNfYWRkZWQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg2OnZvaWQgaWF2Zl9pcnFfZW5hYmxlKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIGJvb2wgZmx1c2gpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU4Nzp2b2lkIGlhdmZfY29uZmlndXJlX3F1ZXVlcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1ODg6dm9pZCBpYXZmX2VuYWJsZV9xdWV1ZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTg5OnZvaWQgaWF2Zl9kaXNhYmxlX3F1ZXVlcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo1OTA6dm9pZCBpYXZmX21hcF9xdWV1ZXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkxOnZvaWQgaWF2Zl9hZGRfZXRoZXJfYWRkcnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkyOnZvaWQgaWF2Zl9kZWxfZXRoZXJfYWRkcnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTkzOnZvaWQgaWF2Zl9hZGRfdmxhbnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk0OnZvaWQgaWF2Zl9kZWxfdmxhbnMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk1OnZvaWQgaWF2Zl9zZXRfcHJvbWlzY3VvdXMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk2OmJvb2wgaWF2Zl9wcm9taXNjdW91c19tb2RlX2NoYW5nZWQoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NTk3OnZvaWQgaWF2Zl9yZXF1ZXN0X3N0YXRzKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU5ODppbnQgaWF2Zl9yZXF1ZXN0X3Jlc2V0KHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjU5OTp2b2lkIGlhdmZfZ2V0X3Jzc19oYXNoY2ZnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwMDp2b2lkIGlhdmZfc2V0X3Jzc19oYXNoY2ZnKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwMTp2b2lkIGlhdmZfc2V0X3Jzc19rZXkoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjAyOnZvaWQgaWF2Zl9zZXRfcnNzX2x1dChzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MDM6dm9pZCBpYXZmX3NldF9yc3NfaGZ1bmMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA0OnZvaWQgaWF2Zl9lbmFibGVfdmxhbl9zdHJpcHBpbmcoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA1OnZvaWQgaWF2Zl9kaXNhYmxlX3ZsYW5fc3RyaXBwaW5nKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYwNjp2b2lkIGlhdmZfdmlydGNobmxfY29tcGxldGlvbihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oLTYwNy1cXHRcXHRcXHQgICAgICBlbnVtIHZpcnRjaG5sX29wcyB2X29wY29kZSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MDg6XFx0XFx0XFx0ICAgICAgZW51bSBpYXZmX3N0YXR1cyB2X3JldHZhbCwgdTggKm1zZywgdTE2IG1zZ2xlbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjA5OmludCBpYXZmX2NvbmZpZ19yc3Moc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjEwOnZvaWQgaWF2Zl9jZmdfcXVldWVzX2J3KHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYxMTp2b2lkIGlhdmZfY2ZnX3F1ZXVlc19xdWFudGFfc2l6ZShzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTI6dm9pZCBpYXZmX2dldF9xb3NfY2FwcyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTM6dm9pZCBpYXZmX2VuYWJsZV9jaGFubmVscyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTQ6dm9pZCBpYXZmX2Rpc2FibGVfY2hhbm5lbHMoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE1OnZvaWQgaWF2Zl9hZGRfY2xvdWRfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zi5oOjYxNjp2b2lkIGlhdmZfZGVsX2Nsb3VkX2ZpbHRlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTc6dm9pZCBpYXZmX2VuYWJsZV92bGFuX3N0cmlwcGluZ192MihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1MTYgdHBpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjE4OnZvaWQgaWF2Zl9kaXNhYmxlX3ZsYW5fc3RyaXBwaW5nX3YyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiB0cGlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MTk6dm9pZCBpYXZmX2VuYWJsZV92bGFuX2luc2VydGlvbl92MihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyLCB1MTYgdHBpZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmg6NjIwOnZvaWQgaWF2Zl9kaXNhYmxlX3ZsYW5faW5zZXJ0aW9uX3YyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsIHUxNiB0cGlkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjE6dm9pZCBpYXZmX2FkZF9mZGlyX2ZpbHRlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjI6dm9pZCBpYXZmX2RlbF9mZGlyX2ZpbHRlcihzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjM6dm9pZCBpYXZmX2FkZF9hZHZfcnNzX2NmZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjQ6dm9pZCBpYXZmX2RlbF9hZHZfcnNzX2NmZyhzdHJ1Y3QgaWF2Zl9hZGFwdGVyICphZGFwdGVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2MjU6c3RydWN0IGlhdmZfbWFjX2ZpbHRlciAqaWF2Zl9hZGRfZmlsdGVyKHN0cnVjdCBpYXZmX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjI2LVxcdFxcdFxcdFxcdFxcdGNvbnN0IHU4ICptYWNhZGRyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmYuaDo2Mjc6dm9pZCBpYXZmX3Jlc2V0X3N0ZXAoc3RydWN0IGlhdmZfYWRhcHRlciAqYWRhcHRlcik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmLmgtNjI4LSNlbmRpZiAvKiBfSUFWRl9IXyAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ6I2luY2x1ZGUgXFxcImlhdmZfc3RhdHVzLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjU6I2luY2x1ZGUgXFxcImlhdmZfdHlwZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2OiNpbmNsdWRlIFxcXCJpYXZmX3JlZ2lzdGVyLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjc6I2luY2x1ZGUgXFxcImlhdmZfYWRtaW5xLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjg6I2luY2x1ZGUgXFxcImlhdmZfcHJvdG90eXBlLmhcXFwiXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEwLS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxMTogKiAgaWF2Zl9hbGxvY19hZG1pbnFfYXNxX3JpbmcgLSBBbGxvY2F0ZSBBZG1pbiBRdWV1ZSBzZW5kIHJpbmdzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEyLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xMy0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE0OnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfYWxsb2NfYWRtaW5xX2FzcV9yaW5nKHN0cnVjdCBpYXZmX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTUte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNjpcXHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTg6XFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRlc2NfYnVmLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxOTpcXHRcXHRcXHRcXHRcXHQgaWF2Zl9tZW1fYXRxX3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIwLVxcdFxcdFxcdFxcdFxcdCAoaHctXFx1MDAzZWFxLm51bV9hc3FfZW50cmllcyAqXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI2OlxcdHJldF9jb2RlID0gaWF2Zl9hbGxvY2F0ZV92aXJ0X21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3EuY21kX2J1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjctXFx0XFx0XFx0XFx0XFx0ICAoaHctXFx1MDAzZWFxLm51bV9hc3FfZW50cmllcyAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI4OlxcdFxcdFxcdFxcdFxcdCAgc2l6ZW9mKHN0cnVjdCBpYXZmX2FzcV9jbWRfZGV0YWlscykpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjktXFx0aWYgKHJldF9jb2RlKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMwOlxcdFxcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFzcS5kZXNjX2J1Zik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMxLVxcdFxcdHJldHVybiByZXRfY29kZTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6Mzg6ICogIGlhdmZfYWxsb2NfYWRtaW5xX2FycV9yaW5nIC0gQWxsb2NhdGUgQWRtaW4gUXVldWUgcmVjZWl2ZSByaW5nc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zOS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDAtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0MTpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2FsbG9jX2FkbWlucV9hcnFfcmluZyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDM6XFx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1OlxcdHJldF9jb2RlID0gaWF2Zl9hbGxvY2F0ZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFycS5kZXNjX2J1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDY6XFx0XFx0XFx0XFx0XFx0IGlhdmZfbWVtX2FycV9yaW5nLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00Ny1cXHRcXHRcXHRcXHRcXHQgKGh3LVxcdTAwM2VhcS5udW1fYXJxX2VudHJpZXMgKlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTU0LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo1NTogKiAgaWF2Zl9mcmVlX2FkbWlucV9hc3EgLSBGcmVlIEFkbWluIFF1ZXVlIHNlbmQgcmluZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNTYtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjAtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2MTpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYWRtaW5xX2FzcShzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTYyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NjM6XFx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRlc2NfYnVmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjQtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTY2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo2NzogKiAgaWF2Zl9mcmVlX2FkbWlucV9hcnEgLSBGcmVlIEFkbWluIFF1ZXVlIHJlY2VpdmUgcmluZ3NcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNjgtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNzItICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo3MzpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYWRtaW5xX2FycShzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTc0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NzU6XFx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLmRlc2NfYnVmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTc4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo3OTogKiAgaWF2Zl9hbGxvY19hcnFfYnVmcyAtIEFsbG9jYXRlIHByZS1wb3N0ZWQgYnVmZmVycyBmb3IgdGhlIHJlY2VpdmUgcXVldWVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtODAtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTgxLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6ODI6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9hbGxvY19hcnFfYnVmcyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTgzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtODQtXFx0c3RydWN0IGxpYmllX2FxX2Rlc2MgKmRlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjg1OlxcdHN0cnVjdCBpYXZmX2RtYV9tZW0gKmJpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo4NjpcXHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy04Ny1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy05My1cXHQvKiBidWZmZXJfaW5mbyBzdHJ1Y3R1cmVzIGRvIG5vdCBuZWVkIGFsaWdubWVudCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo5NDpcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NhdGVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLmRtYV9oZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy05NS1cXHRcXHRcXHRcXHRcXHQgIChody1cXHUwMDNlYXEubnVtX2FycV9lbnRyaWVzICpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6OTY6XFx0XFx0XFx0XFx0XFx0ICAgc2l6ZW9mKHN0cnVjdCBpYXZmX2RtYV9tZW0pKSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTk3LVxcdGlmIChyZXRfY29kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtOTgtXFx0XFx0Z290byBhbGxvY19hcnFfYnVmcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6OTk6XFx0aHctXFx1MDAzZWFxLmFycS5yLmFycV9iaSA9IChzdHJ1Y3QgaWF2Zl9kbWFfbWVtICopaHctXFx1MDAzZWFxLmFycS5kbWFfaGVhZC52YTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEwMy1cXHRcXHRiaSA9IFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxMDQ6XFx0XFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jYXRlX2RtYV9tZW0oaHcsIGJpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxMDU6XFx0XFx0XFx0XFx0XFx0XFx0IGlhdmZfbWVtX2FycV9idWYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTEwNi1cXHRcXHRcXHRcXHRcXHRcXHQgaHctXFx1MDAzZWFxLmFycV9idWZfc2l6ZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xMzktXFx0Zm9yICg7IGkgXFx1MDAzZT0gMDsgaS0tKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNDA6XFx0XFx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLnIuYXJxX2JpW2ldKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTQxOlxcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hcnEuZG1hX2hlYWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNDItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTQ2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNDc6ICogIGlhdmZfYWxsb2NfYXNxX2J1ZnMgLSBBbGxvY2F0ZSBlbXB0eSBidWZmZXIgc3RydWN0cyBmb3IgdGhlIHNlbmQgcXVldWVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTQ4LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNDktICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxNTA6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9hbGxvY19hc3FfYnVmcyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE1MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE1MjpcXHRzdHJ1Y3QgaWF2Zl9kbWFfbWVtICpiaTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTUzOlxcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGU7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE1NC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNTYtXFx0LyogTm8gbWFwcGVkIG1lbW9yeSBuZWVkZWQgeWV0LCBqdXN0IHRoZSBidWZmZXIgaW5mbyBzdHJ1Y3R1cmVzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE1NzpcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NhdGVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRtYV9oZWFkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNTgtXFx0XFx0XFx0XFx0XFx0ICAoaHctXFx1MDAzZWFxLm51bV9hc3FfZW50cmllcyAqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE1OTpcXHRcXHRcXHRcXHRcXHQgICBzaXplb2Yoc3RydWN0IGlhdmZfZG1hX21lbSkpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTYwLVxcdGlmIChyZXRfY29kZSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTYxLVxcdFxcdGdvdG8gYWxsb2NfYXNxX2J1ZnM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE2MjpcXHRody1cXHUwMDNlYXEuYXNxLnIuYXNxX2JpID0gKHN0cnVjdCBpYXZmX2RtYV9tZW0gKilody1cXHUwMDNlYXEuYXNxLmRtYV9oZWFkLnZhO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xNjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTY2LVxcdFxcdGJpID0gXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3Euci5hc3FfYmlbaV07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE2NzpcXHRcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NhdGVfZG1hX21lbShodywgYmksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE2ODpcXHRcXHRcXHRcXHRcXHRcXHQgaWF2Zl9tZW1fYXNxX2J1ZixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTY5LVxcdFxcdFxcdFxcdFxcdFxcdCBody1cXHUwMDNlYXEuYXNxX2J1Zl9zaXplLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4MC1cXHRmb3IgKDsgaSBcXHUwMDNlPSAwOyBpLS0pXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE4MTpcXHRcXHRpYXZmX2ZyZWVfZG1hX21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3Euci5hc3FfYmlbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoxODI6XFx0aWF2Zl9mcmVlX3ZpcnRfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFzcS5kbWFfaGVhZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4My1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xODctLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE4ODogKiAgaWF2Zl9mcmVlX2FycV9idWZzIC0gRnJlZSByZWNlaXZlIHF1ZXVlIGJ1ZmZlciBpbmZvIGVsZW1lbnRzXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE4OS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTkwLSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MTkxOnN0YXRpYyB2b2lkIGlhdmZfZnJlZV9hcnFfYnVmcyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE5Mi17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMTk2LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBody1cXHUwMDNlYXEubnVtX2FycV9lbnRyaWVzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjE5NzpcXHRcXHRpYXZmX2ZyZWVfZG1hX21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hcnEuci5hcnFfYmlbaV0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0xOTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTE5OS1cXHQvKiBmcmVlIHRoZSBkZXNjcmlwdG9yIG1lbW9yeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMDA6XFx0aWF2Zl9mcmVlX2RtYV9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLmRlc2NfYnVmKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjAxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDItXFx0LyogZnJlZSB0aGUgZG1hIGhlYWRlciAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMDM6XFx0aWF2Zl9mcmVlX3ZpcnRfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFycS5kbWFfaGVhZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIwNC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjA2LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyMDc6ICogIGlhdmZfZnJlZV9hc3FfYnVmcyAtIEZyZWUgc2VuZCBxdWV1ZSBidWZmZXIgaW5mbyBlbGVtZW50c1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMDgtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIwOS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIxMDpzdGF0aWMgdm9pZCBpYXZmX2ZyZWVfYXNxX2J1ZnMoc3RydWN0IGlhdmZfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIxNi1cXHRcXHRpZiAoaHctXFx1MDAzZWFxLmFzcS5yLmFzcV9iaVtpXS5wYSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjE3OlxcdFxcdFxcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFzcS5yLmFzcV9iaVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjE5LVxcdC8qIGZyZWUgdGhlIGJ1ZmZlciBpbmZvIGxpc3QgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjIwOlxcdGlhdmZfZnJlZV92aXJ0X21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3EuY21kX2J1Zik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIyMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjIyLVxcdC8qIGZyZWUgdGhlIGRlc2NyaXB0b3IgbWVtb3J5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIyMzpcXHRpYXZmX2ZyZWVfZG1hX21lbShodywgXFx1MDAyNmh3LVxcdTAwM2VhcS5hc3EuZGVzY19idWYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMjQtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTIyNS1cXHQvKiBmcmVlIHRoZSBkbWEgaGVhZGVyICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIyNjpcXHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRtYV9oZWFkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjI3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMjktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjIzMDogKiAgaWF2Zl9jb25maWdfYXNxX3JlZ3MgLSBjb25maWd1cmUgQVNRIHJlZ2lzdGVyc1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMzEtICogIEBodzogcG9pbnRlciB0byB0aGUgaGFyZHdhcmUgc3RydWN0dXJlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjM0LSAqKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjM1OnN0YXRpYyBlbnVtIGlhdmZfc3RhdHVzIGlhdmZfY29uZmlnX2FzcV9yZWdzKHN0cnVjdCBpYXZmX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjM2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjM3OlxcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0yMzgtXFx0dTMyIHJlZyA9IDA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjU4LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzoyNTk6ICogIGlhdmZfY29uZmlnX2FycV9yZWdzIC0gQVJRIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb25cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjYwLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI2My0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI2NDpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2NvbmZpZ19hcnFfcmVncyhzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI2NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjI2NjpcXHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjY3LVxcdHUzMiByZWcgPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTI5MC0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MjkxOiAqICBpYXZmX2luaXRfYXNxIC0gbWFpbiBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciBBU1FcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMjkyLSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMwMi0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMwMzpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2luaXRfYXNxKHN0cnVjdCBpYXZmX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzA0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzA1OlxcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zMDYtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzI0LVxcdC8qIGFsbG9jYXRlIHRoZSByaW5nIG1lbW9yeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozMjU6XFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jX2FkbWlucV9hc3FfcmluZyhodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMyNi1cXHRpZiAocmV0X2NvZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzI5LVxcdC8qIGFsbG9jYXRlIGJ1ZmZlcnMgaW4gdGhlIHJpbmdzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMzMDpcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NfYXNxX2J1ZnMoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zMzEtXFx0aWYgKHJldF9jb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTMzNC1cXHQvKiBpbml0aWFsaXplIGJhc2UgcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjMzNTpcXHRyZXRfY29kZSA9IGlhdmZfY29uZmlnX2FzcV9yZWdzKGh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzM2LVxcdGlmIChyZXRfY29kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNDQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGh3LVxcdTAwM2VhcS5udW1fYXNxX2VudHJpZXM7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzQ1OlxcdFxcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFzcS5yLmFzcV9iaVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM0NjpcXHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXNxLmRtYV9oZWFkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzQ3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNDgtaW5pdF9hZG1pbnFfZnJlZV9yaW5nczpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzQ5OlxcdGlhdmZfZnJlZV9hZG1pbnFfYXNxKGh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzUwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM1NS0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzU2OiAqICBpYXZmX2luaXRfYXJxIC0gaW5pdGlhbGl6ZSBBUlFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzU3LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM2Ny0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM2ODpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX2luaXRfYXJxKHN0cnVjdCBpYXZmX2h3ICpodylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzY5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6MzcwOlxcdGVudW0gaWF2Zl9zdGF0dXMgcmV0X2NvZGUgPSAwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zNzEtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzg5LVxcdC8qIGFsbG9jYXRlIHRoZSByaW5nIG1lbW9yeSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzozOTA6XFx0cmV0X2NvZGUgPSBpYXZmX2FsbG9jX2FkbWlucV9hcnFfcmluZyhodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM5MS1cXHRpZiAocmV0X2NvZGUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtMzk0LVxcdC8qIGFsbG9jYXRlIGJ1ZmZlcnMgaW4gdGhlIHJpbmdzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjM5NTpcXHRyZXRfY29kZSA9IGlhdmZfYWxsb2NfYXJxX2J1ZnMoaHcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy0zOTYtXFx0aWYgKHJldF9jb2RlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTM5OS1cXHQvKiBpbml0aWFsaXplIGJhc2UgcmVnaXN0ZXJzICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQwMDpcXHRyZXRfY29kZSA9IGlhdmZfY29uZmlnX2FycV9yZWdzKGh3KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDAxLVxcdGlmIChyZXRfY29kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MDktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGh3LVxcdTAwM2VhcS5udW1fYXJxX2VudHJpZXM7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDEwOlxcdFxcdGlhdmZfZnJlZV9kbWFfbWVtKGh3LCBcXHUwMDI2aHctXFx1MDAzZWFxLmFycS5yLmFycV9iaVtpXSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQxMTpcXHRpYXZmX2ZyZWVfdmlydF9tZW0oaHcsIFxcdTAwMjZody1cXHUwMDNlYXEuYXJxLmRtYV9oZWFkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDEyLWluaXRfYWRtaW5xX2ZyZWVfcmluZ3M6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQxMzpcXHRpYXZmX2ZyZWVfYWRtaW5xX2FycShodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQxNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MTktLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQyMDogKiAgaWF2Zl9zaHV0ZG93bl9hc3EgLSBzaHV0ZG93biB0aGUgQVNRXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQyMS0gKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBoYXJkd2FyZSBzdHJ1Y3R1cmVcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MjQtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0MjU6c3RhdGljIGVudW0gaWF2Zl9zdGF0dXMgaWF2Zl9zaHV0ZG93bl9hc3Eoc3RydWN0IGlhdmZfaHcgKmh3KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0Mjc6XFx0ZW51bSBpYXZmX3N0YXR1cyByZXRfY29kZSA9IDA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQyOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NDUtXFx0LyogZnJlZSByaW5nIGJ1ZmZlcnMgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmM6NDQ2OlxcdGlhdmZfZnJlZV9hc3FfYnVmcyhodyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ0Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYy00NTMtLyoqXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1NDogKiAgaWF2Zl9zaHV0ZG93bl9hcnEgLSBzaHV0ZG93biBBUlFcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDU1LSAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIGhhcmR3YXJlIHN0cnVjdHVyZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ1OC0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ1OTpzdGF0aWMgZW51bSBpYXZmX3N0YXR1cyBpYXZmX3NodXRkb3duX2FycShzdHJ1Y3QgaWF2Zl9odyAqaHcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jOjQ2MTpcXHRlbnVtIGlhdmZfc3RhdHVzIHJldF9jb2RlID0gMDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfYWRtaW5xLmMtNDYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX2FkbWlucS5jLTQ3OS1cXHQvKiBmcmVlIHJpbmcgYnVmZmVycyAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9hZG1pbnEuYzo0ODA6XFx0aWF2Zl9mcmVlX2FycV9idWZzKGh3KTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NDUuODcxNTgwMDY1WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjUxODc0NDcwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJQVZGIERyaXZlciBhbmQgaXRzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgaWF2ZmAgZHJpdmVyIOKAkyBJbnRlbCdzIEV0aGVybmV0IEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gZHJpdmVyLiBUaGUgYE1ha2VmaWxlYCBjb25maXJtcyBpdCwgYW5kIHRoZSBuYW1lIGFsb25lIHNjcmVhbXMgdmlydHVhbGl6YXRpb24sIHdoaWNoIG1ha2VzIG1lIHRoaW5rIG9mIFNSLUlPVi4gIEFoLCByaWdodCwgVkYgZHJpdmVycyBhcmUgKnNwZWNpZmljYWxseSogZm9yIFZNcyB3aXRoIFNSLUlPVi4gIEJ1dCB0aGUgY3JpdGljYWwgcGllY2UgaXMgdGhhdCB0aGV5IG5lZWQgZGVkaWNhdGVkIGhhcmR3YXJlLCBwYXNzZWQgdGhyb3VnaCB2aWEgUENJIHBhc3N0aHJvdWdoLiAgQ2FuIGBpYXZmYCBiZSBlbXVsYXRlZCB0aGVuPyAgTm8sIFFFTVUgZG9lc24ndCBuYXRpdmVseSBlbXVsYXRlIHRoZSBJbnRlbCBBVkYuXG5cblRoZSBuZXh0IHF1ZXN0aW9uIHRoZW4gYmVjb21lczogZG9lcyBzeXprYWxsZXIgZnV6eiB0aGlzPyBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGUgcHJvbXB0IG1lbnRpb25zIGEgcmVzdHJpY3Rpb24sIGZvY3VzaW5nIG9uIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLCBsaWtlIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1LCB0aGF0IGRlcGVuZCBvbiAqYWN0dWFsKiBQQ0llIGhhcmR3YXJlLiBJcyBgaWF2ZmAgb25lIG9mICp0aG9zZSo/IFdlbGwsIGl0J3MgYW4gSW50ZWwgRXRoZXJuZXQgZHJpdmVyLCBzbyB5ZXMsIEknZCBzYXkgdGhhdCBmaXRzIHRoZSBkZXNjcmlwdGlvbi5cblxuQnV0IHdhaXQgYSBtaW51dGUsIHN5emthbGxlciAqZG9lcyogaGF2ZSBgc3l6X3BjaV9kZXZpY2VgLCB3aGljaCAqY2FuKiBlbXVsYXRlIFBDSSBkZXZpY2VzLiBJIG5lZWQgdG8gY2xhcmlmeSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlIHdpdGggdGhpcyBtZWNoYW5pc20sIGFuZCBob3cgaXQgaGFuZGxlcyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgcGh5c2ljYWwgYW5kIHZpcnR1YWwgY29tcG9uZW50cy4gUGVyaGFwcyBpdCBjYW4gaGFuZGxlIGBpYXZmYD8gSSBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGlzIGEgZGVzY3JpcHRpb24gaW4gc3l6a2FsbGVyIGZvciBgaWF2ZmAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMDg1LCJPdXRwdXRUb2tlbnMiOjI0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjIzOjUyLjM5MDMyODYxN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2ODEyMDg2OSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWF2ZlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJzeXMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzo1Mi40NTg0NTc5NzZaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjY1ODMyOTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBUYXNrIGFuZCBBdmFpbGFibGUgVG9vbHMqKlxuXG5Pa2F5LCBmaXJzdCB0aGluZ3MgZmlyc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZXN0cmljdGlvbnMuIEkgc2VlIHRoZSBwcm9tcHQgZXhwbGljaXRseSBmb3JiaWRzIHVzaW5nIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBzZWFyY2ggd2l0aGluIGBzeXMvYC4gVGhhdCdzIGEga2V5IGRldGFpbCDigJMgaXQgc2VlbXMgbGlrZSB0aGVzZSBgc3l6XypgIGNhbGxzIGFyZSBzcGVjaWZpYyB0byBzeXprYWxsZXIgYW5kIG5vdCBkaXJlY3RseSBwcmVzZW50IGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlLiBJIHdhcyBleHBlY3RpbmcgYHJlYWQtc3l6LXNwZWNgIGFuZCBgc3l6LWdyZXBwZXJgIGJ1dCBJIGRvbid0IHNlZSB0aG9zZSB0b29scyBsaXN0ZWQuIEkgYW0gY29uc3RyYWluZWQgdG8gdXNpbmcgYGRlZmF1bHRfYXBpOmdyZXBwZXJgLCBgZGVmYXVsdF9hcGk6Y29kZXNlYXJjaC1kaXItaW5kZXhgLCBgZGVmYXVsdF9hcGk6cmVhZC1maWxlYCwgYW5kIGBkZWZhdWx0X2FwaTpzZXQtcmVzdWx0c2AuIFJpZ2h0LCBJIGhhdmUgdG8gd29yayB3aXRoIHdoYXQncyBhdmFpbGFibGUuXG5cbk5vdywgSSBuZWVkIHRvIGFwcGx5IHRoZSBydWxlOiBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5JIHNlZSBgaWF2ZmAgbWVudGlvbmVkLiBJcyB0aGF0IGEgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVyPyBZZXMsIGl0J3MgYW4gSW50ZWwgRXRoZXJuZXQgZHJpdmVyLiBPa2F5LCBidXQgdGhlIG5leHQgcXVlc3Rpb24gaXMgaWYgaXQncyBlbXVsYXRlZCBpbiBRRU1VLiBMZXQncyBzZWUuLi4gUUVNVSBlbXVsYXRlcyBgZTEwMDBgLCBgZTEwMDBlYCwgYHJ0bDgxMzlgLCBgdmlydGlvLW5ldGAsIGB2bXhuZXQzYCwgYHBjbmV0YCwgYG5lMmtfcGNpYCwgYGk4MjU1OWVyYCwgYHR1bGlwYC4gTm8sIGl0IGRvZXNuJ3QgZW11bGF0ZSBgaWF2ZmAuXG5cbldhaXQsIHdoYXQgYWJvdXQgYGxpYmV0aGA/IFRoZSBwYXRjaCBhbHNvIG1vZGlmaWVzIGBpbmNsdWRlL25ldC9saWJldGgvcnguaGAuIEknZCBiZXR0ZXIgZmlndXJlIG91dCB3aGF0IGBsaWJldGhgIGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDcxNywiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyMzo1OS4xMjQyOTM5MjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTcyMDQyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbmV0L2xpYmV0aC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxNjUzIGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC05LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjEwOiAqIGxpYmV0aF9jYWNoZWxpbmVfZ3JvdXBfYXNzZXJ0IC0gbWFrZSBzdXJlIGNhY2hlbGluZSBncm91cCBzaXplIGlzIGV4cGVjdGVkXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMTEtICogQHR5cGU6IHR5cGUgb2YgdGhlIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBncm91cFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMTUtI2lmIGRlZmluZWQoQ09ORklHXzY0QklUKSBcXHUwMDI2XFx1MDAyNiBTTVBfQ0FDSEVfQllURVMgPT0gNjRcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDoxNjojZGVmaW5lIGxpYmV0aF9jYWNoZWxpbmVfZ3JvdXBfYXNzZXJ0KHR5cGUsIGdycCwgc3opXFx0XFx0XFx0ICAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTE3LVxcdHN0YXRpY19hc3NlcnQob2Zmc2V0b2YodHlwZSwgX19jYWNoZWxpbmVfZ3JvdXBfZW5kX18jI2dycCkgLVxcdCAgICAgIFxcXFxcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTE5LVxcdFxcdCAgICAgIChzeikpXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6MjA6I2RlZmluZSBfX2xpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCh0eXBlLCBzeilcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMjEtXFx0c3RhdGljX2Fzc2VydChzaXplb2YodHlwZSkgPT0gKHN6KSlcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0yMi0jZWxzZSAvKiAhQ09ORklHXzY0QklUIHx8IFNNUF9DQUNIRV9CWVRFUyAhPSA2NCAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjIzOiNkZWZpbmUgbGliZXRoX2NhY2hlbGluZV9ncm91cF9hc3NlcnQodHlwZSwgZ3JwLCBzeilcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMjQtXFx0c3RhdGljX2Fzc2VydChvZmZzZXRvZih0eXBlLCBfX2NhY2hlbGluZV9ncm91cF9lbmRfXyMjZ3JwKSAtXFx0ICAgICAgXFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMjYtXFx0XFx0ICAgICAgKHN6KSlcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDoyNzojZGVmaW5lIF9fbGliZXRoX2NhY2hlbGluZV9zdHJ1Y3RfYXNzZXJ0KHR5cGUsIHN6KVxcdFxcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC0yOC1cXHRzdGF0aWNfYXNzZXJ0KHNpemVvZih0eXBlKSBcXHUwMDNjPSAoc3opKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMzAtXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6MzE6I2RlZmluZSBfX2xpYmV0aF9jbHMxKHN6MSlcXHRTTVBfQ0FDSEVfQUxJR04oc3oxKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjMyOiNkZWZpbmUgX19saWJldGhfY2xzMihzejEsIHN6MilcXHQoU01QX0NBQ0hFX0FMSUdOKHN6MSkgKyBTTVBfQ0FDSEVfQUxJR04oc3oyKSlcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDozMzojZGVmaW5lIF9fbGliZXRoX2NsczMoc3oxLCBzejIsIHN6MylcXHRcXHRcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmgtMzQtXFx0KFNNUF9DQUNIRV9BTElHTihzejEpICsgU01QX0NBQ0hFX0FMSUdOKHN6MikgKyBTTVBfQ0FDSEVfQUxJR04oc3ozKSlcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDozNTojZGVmaW5lIF9fbGliZXRoX2NscyguLi4pXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjM2OlxcdENPTkNBVEVOQVRFKF9fbGliZXRoX2NscywgQ09VTlRfQVJHUyhfX1ZBX0FSR1NfXykpKF9fVkFfQVJHU19fKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTM3LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTM4LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjM5OiAqIGxpYmV0aF9jYWNoZWxpbmVfc3RydWN0X2Fzc2VydCAtIG1ha2Ugc3VyZSBDTC1iYXNlZCBzdHJ1Y3Qgc2l6ZSBpcyBleHBlY3RlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTQwLSAqIEB0eXBlOiB0eXBlIG9mIHRoZSBzdHJ1Y3RcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTQ2LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjQ3OiNkZWZpbmUgbGliZXRoX2NhY2hlbGluZV9zdHJ1Y3RfYXNzZXJ0KHR5cGUsIC4uLilcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NDg6XFx0X19saWJldGhfY2FjaGVsaW5lX3N0cnVjdF9hc3NlcnQodHlwZSwgX19saWJldGhfY2xzKF9fVkFfQVJHU19fKSk7ICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC00OS1cXHRzdGF0aWNfYXNzZXJ0KF9fYWxpZ25vZih0eXBlKSBcXHUwMDNlPSBTTVBfQ0FDSEVfQllURVMpXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC01MS0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo1MjogKiBsaWJldGhfY2FjaGVsaW5lX3NldF9hc3NlcnQgLSBtYWtlIHN1cmUgQ0wtYmFzZWQgc3RydWN0IGxheW91dCBpcyBleHBlY3RlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTUzLSAqIEB0eXBlOiB0eXBlIG9mIHRoZSBzdHJ1Y3RcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oLTU5LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9jYWNoZS5oOjYwOiNkZWZpbmUgbGliZXRoX2NhY2hlbGluZV9zZXRfYXNzZXJ0KHR5cGUsIHJvLCBydywgYylcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjE6XFx0bGliZXRoX2NhY2hlbGluZV9ncm91cF9hc3NlcnQodHlwZSwgcmVhZF9tb3N0bHksIHJvKTtcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjI6XFx0bGliZXRoX2NhY2hlbGluZV9ncm91cF9hc3NlcnQodHlwZSwgcmVhZF93cml0ZSwgcncpO1xcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaDo2MzpcXHRsaWJldGhfY2FjaGVsaW5lX2dyb3VwX2Fzc2VydCh0eXBlLCBjb2xkLCBjKTtcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL2NhY2hlLmg6NjQ6XFx0bGliZXRoX2NhY2hlbGluZV9zdHJ1Y3RfYXNzZXJ0KHR5cGUsIHJvLCBydywgYylcXG5pbmNsdWRlL25ldC9saWJldGgvY2FjaGUuaC02NS1cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTM0LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjM1OiAqIHN0cnVjdCBsaWJldGhfZnFlIC0gc3RydWN0dXJlIHJlcHJlc2VudGluZyBhbiBSeCBidWZmZXIgKGZpbGwgcXVldWUgZWxlbWVudClcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zNi0gKiBAbmV0bWVtOiBuZXR3b3JrIG1lbW9yeSByZWZlcmVuY2UgaG9sZGluZyB0aGUgYnVmZmVyXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC00My0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo0NDpzdHJ1Y3QgbGliZXRoX2ZxZSB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNDUtXFx0bmV0bWVtX3JlZlxcdFxcdG5ldG1lbTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTUwLS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjUxOiAqIGVudW0gbGliZXRoX2ZxZV90eXBlIC0gZW51bSByZXByZXNlbnRpbmcgdHlwZXMgb2YgUnggYnVmZmVyc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTUyLSAqIEBMSUJFVEhfRlFFX01UVTogYnVmZmVyIHNpemUgaXMgZGV0ZXJtaW5lZCBieSBNVFVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTU1LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjU2OmVudW0gbGliZXRoX2ZxZV90eXBlIHtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC01Ny1cXHRMSUJFVEhfRlFFX01UVVxcdFxcdD0gMFUsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC02Mi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo2MzogKiBzdHJ1Y3QgbGliZXRoX2ZxIC0gc3RydWN0dXJlIHJlcHJlc2VudGluZyBhIGJ1ZmZlciAoZmlsbCkgcXVldWVcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC02NC0gKiBAZnA6IGhvdHBhdGggcGFydCBvZiB0aGUgc3RydWN0dXJlXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC03NC0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3NTpzdHJ1Y3QgbGliZXRoX2ZxIHtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3NjpcXHRzdHJ1Y3RfZ3JvdXBfdGFnZ2VkKGxpYmV0aF9mcV9mcCwgZnAsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtNzctXFx0XFx0c3RydWN0IHBhZ2VfcG9vbFxcdCpwcDtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo3ODpcXHRcXHRzdHJ1Y3QgbGliZXRoX2ZxZVxcdCpmcWVzO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTc5LVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtODQtXFx0LyogQ29sZCBmaWVsZHMgKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo4NTpcXHRlbnVtIGxpYmV0aF9mcWVfdHlwZVxcdHR5cGU6MjtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC04Ni1cXHRib29sXFx0XFx0XFx0aHNwbGl0OjE7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05Mi1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo5MzppbnQgbGliZXRoX3J4X2ZxX2NyZWF0ZShzdHJ1Y3QgbGliZXRoX2ZxICpmcSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKTtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo5NDp2b2lkIGxpYmV0aF9yeF9mcV9kZXN0cm95KHN0cnVjdCBsaWJldGhfZnEgKmZxKTtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05NS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05Ni0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDo5NzogKiBsaWJldGhfcnhfYWxsb2MgLSBhbGxvY2F0ZSBhIG5ldyBSeCBidWZmZXJcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC05OC0gKiBAZnE6IGZpbGwgcXVldWUgdG8gYWxsb2NhdGUgZm9yXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMDMtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTA0OnN0YXRpYyBpbmxpbmUgZG1hX2FkZHJfdCBsaWJldGhfcnhfYWxsb2MoY29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCAqZnEsIHUzMiBpKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTEwNS17XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTA2OlxcdHN0cnVjdCBsaWJldGhfZnFlICpidWYgPSBcXHUwMDI2ZnEtXFx1MDAzZWZxZXNbaV07XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTA3LVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTE3LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjExODp2b2lkIGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cobmV0bWVtX3JlZiBuZXRtZW0pO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTExOS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMjAtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTIxOiAqIF9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdSAtIHN5bmNocm9uaXplIG9yIHJlY3ljbGUgYnVmZmVyIHBvc3QgRE1BXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTIyLSAqIEBwb29sOiBcXHUwMDI2cGFnZV9wb29sIHRoZSBidWZmZXIgd2FzIGFsbG9jYXRlZCBmcm9tXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xMzAtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTMxOnN0YXRpYyBpbmxpbmUgYm9vbCBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcG9vbCxcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxMzI6XFx0XFx0XFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpmcWUsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTMzLVxcdFxcdFxcdFxcdFxcdCAgICB1MzIgbGVuKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTM5LVxcdGlmICh1bmxpa2VseSghbGVuKSkge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjE0MDpcXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KGZxZS1cXHUwMDNlbmV0bWVtKTtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNDEtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMTQ5LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjE1MDogKiBsaWJldGhfcnhfc3luY19mb3JfY3B1IC0gc3luY2hyb25pemUgb3IgcmVjeWNsZSBidWZmZXIgcG9zdCBETUFcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNTEtICogQGZxZTogYnVmZmVyIHRvIHByb2Nlc3NcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTE1OS0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoxNjA6c3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9zeW5jX2Zvcl9jcHUoY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKmZxZSxcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNjEtXFx0XFx0XFx0XFx0XFx0ICB1MzIgbGVuKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTE2Mi17XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MTYzOlxcdHJldHVybiBfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUobmV0bWVtX2dldF9wcChmcWUtXFx1MDAzZW5ldG1lbSksIGZxZSwgbGVuKTtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0xNjQtfVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg9MTk1PWVudW0ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjA4LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjIwOTpzdHJ1Y3QgbGliZXRoX3J4X3B0IHtcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yMTAtXFx0dTMyXFx0XFx0XFx0XFx0XFx0b3V0ZXJfaXA6MjtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTIyMi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDoyMjM6ICogc3RydWN0IGxpYmV0aF9yeF9jc3VtIC0gY2hlY2tzdW0gb2ZmbG9hZCBiaXRzIGRlY29kZWQgZnJvbSB0aGUgUnggZGVzY3JpcHRvclxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTIyNC0gKiBAbDNsNHA6IGRldGVjdGFibGUgTDMgYW5kIEw0IGludGVncml0eSBjaGVjayBpcyBwcm9jZXNzZWQgYnkgdGhlIGhhcmR3YXJlXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yMzUtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjM2OnN0cnVjdCBsaWJldGhfcnhfY3N1bSB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjM3LVxcdHUzMlxcdFxcdFxcdFxcdFxcdGwzbDRwOjE7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNTEtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjUyOiAqIHN0cnVjdCBsaWJldGhfcnFlX2luZm8gLSByZWNlaXZlIHF1ZXVlIGVsZW1lbnQgaW5mb1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI1My0gKiBAbGVuOiBwYWNrZXQgbGVuZ3RoXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNTgtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjU5OnN0cnVjdCBsaWJldGhfcnFlX2luZm8ge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI2MC1cXHR1MzJcXHRcXHRcXHRcXHRcXHRsZW47XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNjgtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjY5OnZvaWQgbGliZXRoX3J4X3B0X2dlbl9oYXNoX3R5cGUoc3RydWN0IGxpYmV0aF9yeF9wdCAqcHQpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI3MC1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yNzEtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6MjcyOiAqIGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyIC0gZ2V0IElQIHZlcnNpb24gZnJvbSBhIHBhY2tldCB0eXBlIHN0cnVjdHVyZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI3My0gKiBAcHQ6IHBhY2tldCB0eXBlIHBhcmFtc1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjc5LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjI4MDpzdGF0aWMgaW5saW5lIHUzMiBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihzdHJ1Y3QgbGliZXRoX3J4X3B0IHB0KVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTI4MS17XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yOTMtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4Lmg6Mjk0Oi8qIGxpYmV0aF9oYXNfKigpIGNhbiBiZSB1c2VkIHRvIHF1aWNrbHkgY2hlY2sgd2hldGhlciB0aGUgSFcgbWV0YWRhdGEgaXNcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0yOTUtICogYXZhaWxhYmxlIHRvIGF2b2lkIGZ1cnRoZXIgZXhwZW5zaXZlIHByb2Nlc3Npbmcgc3VjaCBhcyBkZXNjcmlwdG9yIHJlYWRzLlxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMjk5LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMwMDpzdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bShjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMwMTpcXHRcXHRcXHRcXHRcXHQgICAgIHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMzAyLXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTMwOS1cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMTA6c3RhdGljIGlubGluZSBib29sIGxpYmV0aF9yeF9wdF9oYXNfaGFzaChjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMxMTpcXHRcXHRcXHRcXHRcXHQgc3RydWN0IGxpYmV0aF9yeF9wdCBwdClcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMTIte1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMzE3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oOjMxODogKiBsaWJldGhfcnhfcHRfc2V0X2hhc2ggLSBmaWxsIGluIHNrYiBoYXNoIHZhbHVlIGJhc2luZyBvbiB0aGUgUFRcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaC0zMTktICogQHNrYjogc2tiIHRvIGZpbGwgdGhlIGhhc2ggaW5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oLTMyMi0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMjM6c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF9yeF9wdF9zZXRfaGFzaChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgaGFzaCxcXG5pbmNsdWRlL25ldC9saWJldGgvcnguaDozMjQ6XFx0XFx0XFx0XFx0XFx0IHN0cnVjdCBsaWJldGhfcnhfcHQgcHQpXFxuaW5jbHVkZS9uZXQvbGliZXRoL3J4LmgtMzI1LXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTgtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6OTojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC90eXBlcy5oXFx1MDAzZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTEwLVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTQ6ICogZW51bSBsaWJldGhfc3FlX3R5cGUgLSB0eXBlIG9mIFxcdTAwMjZsaWJldGhfc3FlIHRvIGFjdCBvbiBUeCBjb21wbGV0aW9uXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTUtICogQExJQkVUSF9TUUVfRU1QVFk6IHVudXNlZC9lbXB0eSBPUiBYRFBfVFgvWFNrIGZyYW1lLCBubyBhY3Rpb24gcmVxdWlyZWRcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTIwLSAqIEBfX0xJQkVUSF9TUUVfWERQX1NUQVJUOiBzZXBhcmF0b3IgYmV0d2VlbiBza2IgYW5kIFhEUCB0eXBlc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjIxOiAqIEBMSUJFVEhfU1FFX1hEUF9UWDogXFx1MDAyNnNrYl9zaGFyZWRfaW5mbywgbGliZXRoX3hkcF9yZXR1cm5fYnVmZl9idWxrKCksIHN0YXRzXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMjItICogQExJQkVUSF9TUUVfWERQX1hNSVQ6IFxcdTAwMjZ4ZHBfZnJhbWUsIHVubWFwIGFuZCB4ZHBfcmV0dXJuX2ZyYW1lX2J1bGsoKSwgc3RhdHNcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0yMy0gKiBATElCRVRIX1NRRV9YRFBfWE1JVF9GUkFHOiBcXHUwMDI2eGRwX2ZyYW1lIGZyYWcsIG9ubHkgdW5tYXAgRE1BXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MjQ6ICogQExJQkVUSF9TUUVfWFNLX1RYOiBcXHUwMDI2bGliZXRoX3hkcF9idWZmIG9uIFhTayBxdWV1ZSwgeHNrX2J1ZmZfZnJlZSgpLCBzdGF0c1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjI1OiAqIEBMSUJFVEhfU1FFX1hTS19UWF9GUkFHOiBcXHUwMDI2bGliZXRoX3hkcF9idWZmIGZyYWcgb24gWFNrIHF1ZXVlLCB4c2tfYnVmZl9mcmVlKClcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0yNi0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoyNzplbnVtIGxpYmV0aF9zcWVfdHlwZSB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMjgtXFx0TElCRVRIX1NRRV9FTVBUWVxcdFxcdD0gMFUsXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC00Mi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo0MzogKiBzdHJ1Y3QgbGliZXRoX3NxZSAtIHJlcHJlc2VudHMgYSBTZW5kIFF1ZXVlIEVsZW1lbnQgLyBUeCBidWZmZXJcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC00NC0gKiBAdHlwZTogdHlwZSBvZiB0aGUgYnVmZmVyLCBzZWUgdGhlIGVudW0gYWJvdmVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTU3LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjU4OnN0cnVjdCBsaWJldGhfc3FlIHtcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo1OTpcXHRlbnVtIGxpYmV0aF9zcWVfdHlwZVxcdFxcdHR5cGU6MzI7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtNjAtXFx0dTMyXFx0XFx0XFx0XFx0cnNfaWR4O1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtNjYtXFx0XFx0c3RydWN0IHhkcF9mcmFtZVxcdFxcdCp4ZHBmO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjY3OlxcdFxcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmZcXHRcXHQqeHNrO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTY4LVxcdH07XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04MS0gKiBMSUJFVEhfU1FFX0NIRUNLX1BSSVYgLSBjaGVjayB0aGUgZHJpdmVyJ3MgcHJpdmF0ZSBTUUUgZGF0YVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjgyOiAqIEBwOiB0eXBlIG9yIG5hbWUgb2YgdGhlIG9iamVjdCB0aGUgZHJpdmVyIHdhbnRzIHRvIGZpdCBpbnRvIFxcdTAwMjZsaWJldGhfc3FlXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtODMtICpcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo4NDogKiBNYWtlIHN1cmUgdGhlIGRyaXZlcidzIHByaXZhdGUgZGF0YSBmaXRzIGludG8gbGliZXRoX3NxZTo6cHJpdi4gVG8gYmUgdXNlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTg1LSAqIHJpZ2h0IGFmdGVyIGl0cyBkZWNsYXJhdGlvbi5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTg3LSNkZWZpbmUgTElCRVRIX1NRRV9DSEVDS19QUklWKHApXFx0XFx0XFx0XFx0XFx0ICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6ODg6XFx0c3RhdGljX2Fzc2VydChzaXplb2YocCkgXFx1MDAzYz0gc2l6ZW9mX2ZpZWxkKHN0cnVjdCBsaWJldGhfc3FlLCBwcml2KSlcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC04OS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC05MC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDo5MTogKiBzdHJ1Y3QgbGliZXRoX2NxX3BwIC0gY29tcGxldGlvbiBxdWV1ZSBwb2xsIHBhcmFtc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTkyLSAqIEBkZXY6IFxcdTAwMjZkZXZpY2UgdG8gcGVyZm9ybSBETUEgdW5tYXBwaW5nXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC05OC0gKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjk5OiAqIGxpYmV0aCB1c2VzIHRoaXMgc3RydWN0dXJlIHRvIGFjY2VzcyBvYmplY3RzIG5lZWRlZCBmb3IgcGVyZm9ybWluZyBmdWxsXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTAwLSAqIFR4IGNvbXBsZXRlIG9wZXJhdGlvbiB3aXRob3V0IHBhc3NpbmcgbG90cyBvZiBhcmd1bWVudHMgYW5kIGNoYW5nZSB0aGVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTEwMi0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxMDM6c3RydWN0IGxpYmV0aF9jcV9wcCB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTA0LVxcdHN0cnVjdCBkZXZpY2VcXHRcXHRcXHQqZGV2O1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTA3LVxcdHVuaW9uIHtcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxMDg6XFx0XFx0c3RydWN0IGxpYmV0aF9zcV9uYXBpX3N0YXRzXFx0KnNzO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjEwOTpcXHRcXHRzdHJ1Y3QgbGliZXRoX3hkcHNxX25hcGlfc3RhdHNcXHQqeHNzO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTExMC1cXHR9O1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTE2LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oOjExNzogKiBsaWJldGhfdHhfY29tcGxldGUgLSBwZXJmb3JtIFR4IGNvbXBsZXRpb24gZm9yIG9uZSBTUUVcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xMTgtICogQHNxZTogU1FFIHRvIGNvbXBsZXRlXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xMjMtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4Lmg6MTI0OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfdHhfY29tcGxldGUoc3RydWN0IGxpYmV0aF9zcWUgKnNxZSxcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxMjU6XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9jcV9wcCAqY3ApXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R4LmgtMTI2LXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eC5oLTE1Ni1cXG5pbmNsdWRlL25ldC9saWJldGgvdHguaDoxNTc6dm9pZCBsaWJldGhfdHhfY29tcGxldGVfYW55KHN0cnVjdCBsaWJldGhfc3FlICpzcWUsIHN0cnVjdCBsaWJldGhfY3FfcHAgKmNwKTtcXG5pbmNsdWRlL25ldC9saWJldGgvdHguaC0xNTgtXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMS0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMjogKiBzdHJ1Y3QgbGliZXRoX3JxX25hcGlfc3RhdHMgLSBcXFwiaG90XFxcIiBjb3VudGVycyB0byB1cGRhdGUgaW4gUnggcG9sbGluZyBsb29wXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTMtICogQHBhY2tldHM6IHJlY2VpdmVkIGZyYW1lcyBjb3VudGVyXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xOC0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxOTpzdHJ1Y3QgbGliZXRoX3JxX25hcGlfc3RhdHMge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTIwLVxcdHVuaW9uIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTMxLS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjMyOiAqIHN0cnVjdCBsaWJldGhfc3FfbmFwaV9zdGF0cyAtIFxcXCJob3RcXFwiIGNvdW50ZXJzIHRvIHVwZGF0ZSBpbiBUeCBjb21wbGV0aW9uIGxvb3BcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0zMy0gKiBAcGFja2V0czogY29tcGxldGVkIGZyYW1lcyBjb3VudGVyXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0zNi0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDozNzpzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTM4LVxcdHVuaW9uIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTQ3LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjQ4OiAqIHN0cnVjdCBsaWJldGhfeGRwc3FfbmFwaV9zdGF0cyAtIFxcXCJob3RcXFwiIGNvdW50ZXJzIHRvIHVwZGF0ZSBpbiBYRFAgVHhcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC00OS0gKlxcdFxcdFxcdFxcdCAgICBjb21wbGV0aW9uIGxvb3BcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTU0LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjU1OnN0cnVjdCBsaWJldGhfeGRwc3FfbmFwaV9zdGF0cyB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNTYtXFx0dW5pb24ge1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtNjktICogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmVzIHNob3VsZCBiZSBlbWJlZGRlZCBpbnRvIGRyaXZlcidzIHF1ZXVlIHN0cnVjdHVyZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjcwOiAqIGFuZCBwYXNzZWQgdG8gdGhlIGxpYmV0aF94ZHAgaGVscGVycywgbmV2ZXIgdXNlZCBkaXJlY3RseS5cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC03MS0gKi9cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTc1LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjc2OiAqIHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAtIGxvY2tpbmcgcHJpbWl0aXZlIGZvciBzaGFyaW5nIFhEUFNRc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTc3LSAqIEBsb2NrOiBzcGlubG9jayBmb3IgbG9ja2luZyB0aGUgcXVldWVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTc5LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjgwOnN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtODEtXFx0c3BpbmxvY2tfdFxcdFxcdFxcdGxvY2s7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC04Ny0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo4ODogKiBzdHJ1Y3QgbGliZXRoX3hkcHNxX3RpbWVyIC0gdGltZXIgZm9yIGNsZWFuaW5nIHVwIFhEUFNRcyB3L28gaW50ZXJydXB0c1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTg5LSAqIEB4ZHBzcTogcXVldWUgdGhpcyB0aW1lciBiZWxvbmdzIHRvXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC05Ni0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDo5NzpzdHJ1Y3QgbGliZXRoX3hkcHNxX3RpbWVyIHtcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC05OC1cXHR2b2lkXFx0XFx0XFx0XFx0KnhkcHNxO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oOjk5OlxcdHN0cnVjdCBsaWJldGhfeGRwc3FfbG9ja1xcdCpsb2NrO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwMC1cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwNi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMDc6ICogc3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCAtIHN0cnVjdCBmb3Igc3Rhc2hpbmcgXFx1MDAyNnhkcF9idWZmIG9udG8gYSBxdWV1ZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTEwOC0gKiBAZGF0YTogcG9pbnRlciB0byB0aGUgc3RhcnQgb2YgdGhlIGZyYW1lLCB4ZHBfYnVmZi5kYXRhXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaC0xMTMtICpcXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMTQ6ICogXFx1MDAyNnhkcF9idWZmIGlzIDU2IGJ5dGVzIGxvbmcgb24geDY0LCBcXHUwMDI2bGliZXRoX3hkcF9idWZmIGlzIDY0IGJ5dGVzLiBUaGlzXFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTE1LSAqIHN0cnVjdHVyZSBjYXJyaWVzIG9ubHkgbmVjZXNzYXJ5IGZpZWxkcyB0byBzYXZlL3Jlc3RvcmUgYSBwYXJ0aWFsbHkgYnVpbHRcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC90eXBlcy5oLTExNy0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgvdHlwZXMuaDoxMTg6c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3R5cGVzLmgtMTE5LVxcdHZvaWRcXHRcXHRcXHRcXHQqZGF0YTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC05LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMDojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC9yeC5oXFx1MDAzZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxMTojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC90eC5oXFx1MDAzZVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMi0jaW5jbHVkZSBcXHUwMDNjbmV0L3hza19idWZmX3Bvb2wuaFxcdTAwM2VcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaD0xOD1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNi0vKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzogKiBcXHUwMDI2eGRwX2J1ZmZfeHNrIGlzIHRoZSBsYXJnZXN0IHN0cnVjdHVyZSBcXHUwMDI2bGliZXRoX3hkcF9idWZmIGdldHMgY2FzdGVkIHRvLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yOC0gKiBwaWNrIG1heGltdW0gcG9pbnRlci1jb21wYXRpYmxlIGFsaWdubWVudC5cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0zNS0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MzY6ICogc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAtIGxpYmV0aCBleHRlbnNpb24gb3ZlciBcXHUwMDI2eGRwX2J1ZmZcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMzctICogQGJhc2U6IG1haW4gXFx1MDAyNnhkcF9idWZmXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNDYtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjQ3OnN0cnVjdCBsaWJldGhfeGRwX2J1ZmYge1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC00OC1cXHR1bmlvbiB7XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNTYtfSBfX2FsaWduZWQoX19MSUJFVEhfWERQX0JVRkZfQUxJR04pO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo1NzpzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYsIGRhdGEpID09XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTU4LVxcdCAgICAgIG9mZnNldG9mKHN0cnVjdCB4ZHBfYnVmZl94c2ssIHhkcC5kYXRhKSk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjU5OnN0YXRpY19hc3NlcnQob2Zmc2V0b2Yoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgZGVzYykgPT1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjAtXFx0ICAgICAgb2Zmc2V0b2Yoc3RydWN0IHhkcF9idWZmX3hzaywgY2IpKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9NjE9c3RhdGljX2Fzc2VydChJU19BTElHTkVEKHNpemVvZihzdHJ1Y3QgeGRwX2J1ZmZfeHNrKSxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NjI6XFx0XFx0XFx0IF9fYWxpZ25vZihzdHJ1Y3QgbGliZXRoX3hkcF9idWZmKSkpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC02My1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjQtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjY1OiAqIF9fTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYgLSBkZWNsYXJlIGEgXFx1MDAyNmxpYmV0aF94ZHBfYnVmZiBvbiB0aGUgc3RhY2tcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNjYtICogQG5hbWU6IG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGRlY2xhcmVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC03MS0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6NzI6ICogTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYgLSBkZWNsYXJlIGEgXFx1MDAyNmxpYmV0aF94ZHBfYnVmZiBvbiB0aGUgc3RhY2tcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNzMtICogQG5hbWU6IG5hbWUgb2YgdGhlIHZhcmlhYmxlIHRvIGRlY2xhcmVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC03Ni0jZGVmaW5lIExJQkVUSF9YRFBfT05TVEFDS19CVUZGKG5hbWUsIC4uLilcXHRcXHRcXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjc3OlxcdF9fTElCRVRIX1hEUF9PTlNUQUNLX0JVRkYobmFtZSwgX19saWJldGhfeGRwX3ByaXZfc3ooX19WQV9BUkdTX18pKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC03OC1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtNzktI2RlZmluZSBfX19MSUJFVEhfWERQX09OU1RBQ0tfQlVGRihuYW1lLCAuLi4pXFx0XFx0XFx0XFx0ICAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDo4MDpcXHRfX0RFRklORV9GTEVYKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYsIG5hbWUsIHByaXYsXFx0XFx0ICAgICAgXFxcXFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04MS1cXHRcXHQgICAgICBMSUJFVEhfWERQX1BSSVZfU1ooX19WQV9BUkdTX18gKyAwKSxcXHRcXHQgICAgICBcXFxcXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtODQtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjg1OiNkZWZpbmUgX19saWJldGhfeGRwX3ByaXZfc3ooLi4uKVxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6ODY6XFx0Q09OQ0FURU5BVEUoX19saWJldGhfeGRwX3BzeiwgQ09VTlRfQVJHUyhfX1ZBX0FSR1NfXykpKF9fVkFfQVJHU19fKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC04Ny1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6ODg6I2RlZmluZSBfX2xpYmV0aF94ZHBfcHN6MCguLi4pXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjg5OiNkZWZpbmUgX19saWJldGhfeGRwX3BzejEoLi4uKVxcdFxcdHNpemVvZihfX1ZBX0FSR1NfXylcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTAtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTkxLSNkZWZpbmUgTElCRVRIX1hEUF9QUklWX1NaKHN6KVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6OTI6XFx0KEFMSUdOKHN6LCBfX2FsaWdub2Yoc3RydWN0IGxpYmV0aF94ZHBfYnVmZikpIC8gc2l6ZW9mKGxvbmcpKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC05My1cXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC05Ni1cXHRzdGF0aWNfYXNzZXJ0KG9mZnNldG9mZW5kKHN0cnVjdCB4ZHBfYnVmZl94c2ssIGNiKSBcXHUwMDNlPVxcdFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6OTc6XFx0XFx0ICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3QgbGliZXRoX3hkcF9idWZmLCBwcml2LFxcdCAgICAgIFxcXFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTgtXFx0XFx0XFx0XFx0ICAgIExJQkVUSF9YRFBfUFJJVl9TWihzeikpKVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEwMS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTAyOkRFQ0xBUkVfU1RBVElDX0tFWV9GQUxTRShsaWJldGhfeGRwc3Ffc2hhcmUpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDMtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEwNC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTA1OiAqIGxpYmV0aF94ZHBzcV9udW0gLSBjYWxjdWxhdGUgb3B0aW1hbCBudW1iZXIgb2YgWERQU1FzIGZvciB0aGlzIGRldmljZSArIHN5c1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMDYtICogQHJ4cTogY3VycmVudCBudW1iZXIgb2YgYWN0aXZlIFJ4IHF1ZXVlc1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTExNS0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTE2OnN0YXRpYyBpbmxpbmUgdTMyIGxpYmV0aF94ZHBzcV9udW0odTMyIHJ4cSwgdTMyIHR4cSwgdTMyIG1heClcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTE3LXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjEtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjEyMjogKiBsaWJldGhfeGRwc3Ffc2hhcmVkIC0gd2hldGhlciBYRFBTUXMgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIHNldmVyYWwgQ1BVc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjMtICogQG51bTogbnVtYmVyIG9mIGFjdGl2ZSBYRFBTUXNcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjYtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjEyNzpzdGF0aWMgaW5saW5lIGJvb2wgbGliZXRoX3hkcHNxX3NoYXJlZCh1MzIgbnVtKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMjgte1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEzMi0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTMzOiAqIGxpYmV0aF94ZHBzcV9pZCAtIGdldCBYRFBTUSBpbmRleCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgQ1BVXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTEzNC0gKiBAbnVtOiBudW1iZXIgb2YgYWN0aXZlIFhEUFNRc1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzUtICpcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTM2OiAqIEhlbHBlciBmb3IgbGliZXRoX3hkcCByb3V0aW5lcywgZG8gbm90IHVzZSBpbiBkcml2ZXJzIGRpcmVjdGx5LlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzctICpcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xMzktICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE0MDpzdGF0aWMgaW5saW5lIHUzMiBsaWJldGhfeGRwc3FfaWQodTMyIG51bSlcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTQxLXtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNDMtXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE0NDpcXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2bGliZXRoX3hkcHNxX3NoYXJlKSBcXHUwMDI2XFx1MDAyNlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNDU6XFx0ICAgIGxpYmV0aF94ZHBzcV9zaGFyZWQobnVtKSlcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTQ2LVxcdFxcdHJldCAlPSBudW07XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTUwLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxNTE6dm9pZCBfX2xpYmV0aF94ZHBzcV9nZXQoc3RydWN0IGxpYmV0aF94ZHBzcV9sb2NrICpsb2NrLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTItXFx0XFx0XFx0Y29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE1Mzp2b2lkIF9fbGliZXRoX3hkcHNxX3B1dChzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE1NC1cXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNTYtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE1NzogKiBsaWJldGhfeGRwc3FfZ2V0IC0gaW5pdGlhbGl6ZSBcXHUwMDI2bGliZXRoX3hkcHNxX2xvY2tcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTU4LSAqIEBsb2NrOiBsb2NrIHRvIGluaXRpYWxpemVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNjQtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE2NTpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX2dldChzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE2Ni1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNjktXFx0aWYgKHVubGlrZWx5KHNoYXJlKSlcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTcwOlxcdFxcdF9fbGliZXRoX3hkcHNxX2dldChsb2NrLCBkZXYpO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xNzEtfVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3My0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTc0OiAqIGxpYmV0aF94ZHBzcV9wdXQgLSBkZWluaXRpYWxpemUgXFx1MDAyNmxpYmV0aF94ZHBzcV9sb2NrXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE3NS0gKiBAbG9jazogbG9jayB0byBkZWluaXRpYWxpemVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xODAtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE4MTpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX3B1dChzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4Mi1cXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTgzLXtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTg0OlxcdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFxcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFxcdTAwMjZcXHUwMDI2IGxvY2stXFx1MDAzZXNoYXJlKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODU6XFx0XFx0X19saWJldGhfeGRwc3FfcHV0KGxvY2ssIGRldik7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4Ni19XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE4Ny1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTg4OnZvaWQgX19saWJldGhfeGRwc3FfbG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoxODk6dm9pZCBfX2xpYmV0aF94ZHBzcV91bmxvY2soc3RydWN0IGxpYmV0aF94ZHBzcV9sb2NrICpsb2NrKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMTkwLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTEtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjE5MjogKiBsaWJldGhfeGRwc3FfbG9jayAtIGdyYWIgXFx1MDAyNmxpYmV0aF94ZHBzcV9sb2NrIGlmIG5lZWRlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0xOTMtICogQGxvY2s6IGxvY2sgdG8gdGFrZVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE5Ny0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MTk4OnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfbG9jayhzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2spXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTE5OS17XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIwMDpcXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcXHUwMDI2bGliZXRoX3hkcHNxX3NoYXJlKSBcXHUwMDI2XFx1MDAyNiBsb2NrLVxcdTAwM2VzaGFyZSlcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjAxOlxcdFxcdF9fbGliZXRoX3hkcHNxX2xvY2sobG9jayk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIwMi19XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjA0LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMDU6ICogbGliZXRoX3hkcHNxX3VubG9jayAtIGZyZWUgXFx1MDAyNmxpYmV0aF94ZHBzcV9sb2NrIGlmIG5lZWRlZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMDYtICogQGxvY2s6IGxvY2sgdG8gZnJlZVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIxMC0gKi9cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjExOnN0YXRpYyBpbmxpbmUgdm9pZCBsaWJldGhfeGRwc3FfdW5sb2NrKHN0cnVjdCBsaWJldGhfeGRwc3FfbG9jayAqbG9jaylcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjEyLXtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjEzOlxcdGlmIChzdGF0aWNfYnJhbmNoX3VubGlrZWx5KFxcdTAwMjZsaWJldGhfeGRwc3Ffc2hhcmUpIFxcdTAwMjZcXHUwMDI2IGxvY2stXFx1MDAzZXNoYXJlKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMTQ6XFx0XFx0X19saWJldGhfeGRwc3FfdW5sb2NrKGxvY2spO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMTUtfVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIxOC1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjE5OnZvaWQgbGliZXRoX3hkcHNxX2luaXRfdGltZXIoc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIsIHZvaWQgKnhkcHNxLFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMjA6XFx0XFx0XFx0ICAgICBzdHJ1Y3QgbGliZXRoX3hkcHNxX2xvY2sgKmxvY2ssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIyMS1cXHRcXHRcXHQgICAgIHZvaWQgKCpwb2xsKShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspKTtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yMjMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjIyNDogKiBsaWJldGhfeGRwc3FfZGVpbml0X3RpbWVyIC0gZGVpbml0aWFsaXplIFxcdTAwMjZsaWJldGhfeGRwc3FfdGltZXJcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjI1LSAqIEB0aW1lcjogdGltZXIgdG8gZGVpbml0aWFsaXplXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjI4LSAqL1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMjk6c3RhdGljIGlubGluZSB2b2lkIGxpYmV0aF94ZHBzcV9kZWluaXRfdGltZXIoc3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIpXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTIzMC17XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjM0LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyMzU6ICogbGliZXRoX3hkcHNxX3F1ZXVlX3RpbWVyIC0gcnVuIFxcdTAwMjZsaWJldGhfeGRwc3FfdGltZXJcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjM2LSAqIEB0aW1lcjogdGltZXIgdG8gcXVldWVcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNDMtICovXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI0NDpzdGF0aWMgaW5saW5lIHZvaWQgbGliZXRoX3hkcHNxX3F1ZXVlX3RpbWVyKHN0cnVjdCBsaWJldGhfeGRwc3FfdGltZXIgKnRpbWVyKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNDUte1xcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI1MC0vKipcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6MjUxOiAqIGxpYmV0aF94ZHBzcV9ydW5fdGltZXIgLSB3cmFwcGVyIHRvIHJ1biBhIHF1ZXVlIGNsZWFuLXVwIG9uIGEgdGltZXIgZXZlbnRcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjUyLSAqIEB3b3JrOiB3b3JrcXVldWUgYmVsb25naW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRpbWVyXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9MjU5PXN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZFxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjA6bGliZXRoX3hkcHNxX3J1bl90aW1lcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmssXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2MS1cXHRcXHQgICAgICAgdTMyICgqcG9sbCkodm9pZCAqeGRwc3EsIHUzMiBidWRnZXQpKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNjIte1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjM6XFx0c3RydWN0IGxpYmV0aF94ZHBzcV90aW1lciAqdGltZXIgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCp0aW1lciksXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2NC1cXHRcXHRcXHRcXHRcXHRcXHRcXHRkd29yay53b3JrKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjY1LVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjY6XFx0bGliZXRoX3hkcHNxX2xvY2sodGltZXItXFx1MDAzZWxvY2spO1xcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yNjctXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI2OC1cXHRpZiAocG9sbCh0aW1lci1cXHUwMDNleGRwc3EsIFUzMl9NQVgpKVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNjk6XFx0XFx0bGliZXRoX3hkcHNxX3F1ZXVlX3RpbWVyKHRpbWVyKTtcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjcwLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzE6XFx0bGliZXRoX3hkcHNxX3VubG9jayh0aW1lci1cXHUwMDNlbG9jayk7XFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTI3Mi19XFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjc2LS8qKlxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaDoyNzc6ICogZW51bSAtIGxpYmV0aF94ZHAgaW50ZXJuYWwgVHggZmxhZ3NcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjc4LSAqIEBMSUJFVEhfWERQX1RYX0JVTEs6IG9uZSBidWxrIHNpemUgYXQgd2hpY2ggaXQgd2lsbCBiZSBmbHVzaGVkIHRvIHRoZSBxdWV1ZVxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTI4ND1lbnVtIHtcXG4tLVxcbmluY2x1ZGUvbmV0L2xpYmV0aC94ZHAuaC0yOTMtLyoqXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjI5NDogKiBlbnVtIC0gXFx1MDAyNmxpYmV0aF94ZHBfdHhfZnJhbWUgYW5kIFxcdTAwMjZsaWJldGhfeGRwX3R4X2Rlc2MgZmxhZ3NcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtMjk1LSAqIEBMSUJFVEhfWERQX1RYX0xFTjogb25seSBmb3IgYGBYRFBfVFhgYCwgWzE1OjBdIG9mIDo6bGVuX2ZsIGlzIGFjdHVhbCBsZW5ndGhcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjM6NTkuMTgxNTA0MzA1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA0Mzk4NzM0NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaCBvZiBhIFBhdGNoIGFuZCBpdHMgSW1wbGljYXRpb25zIGZvciBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBpdCB0b3VjaGVzIGBsaWJldGhgLCB3aGljaCBhcHBlYXJzIHRvIGJlIGEgZ2VuZXJpYyBFdGhlcm5ldCBkcml2ZXIgbGlicmFyeS4gVGhpcyBsaWJyYXJ5IGlzIGxpa2VseSB1c2VkIGJ5IGBpYXZmYCBhbmQgbWF5YmUgc29tZSBvdGhlciBkcml2ZXJzLiBUaGUgcGF0Y2ggbW9kaWZpZXMgYGlhdmZfdHhyeC5jYCB3aGljaCBpcyBzcGVjaWZpYyB0byB0aGUgSW50ZWwgQVZGIGRyaXZlciwgYW5kIGFsc28gYGluY2x1ZGUvbmV0L2xpYmV0aC9yeC5oYCwgYnV0IHRob3NlIGNoYW5nZXMgYXJlIGp1c3QgaW5saW5lIGZ1bmN0aW9ucy4gTXkgZmlyc3QgaW1wcmVzc2lvbiBpcywgdGhpcyBzZWVtcyBzdHJhaWdodGZvcndhcmQsIHBvdGVudGlhbGx5IGEgbWlub3IgdXBkYXRlLlxuXG5CdXQgdGhlbiBJIHJlLXJlYWQgdGhlIHByb21wdC4gSXQncyBmb2N1c2VkIG9uIGNvZGUgaW4gKnZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzKiB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZS4gVGhlIHByb21wdCBzYXlzIGl0J3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFdhaXQgYSBtaW51dGUsIGlzIGBpYXZmYCBvbmUgb2YgdGhvc2UgZHJpdmVycz9cblxuWWVzLCBpdCBpcyEgYGlhdmZgIGlzIHRoZSBJbnRlbCBFdGhlcm5ldCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIGRyaXZlci4gWW91IG5lZWQgYW4gSW50ZWwgcGh5c2ljYWwgTklDIChsaWtlIGk0MGUgb3IgaWNlKSB0byBjcmVhdGUgdGhlIFZGLCB3aGljaCBpcyB0aGVuIHBhc3NlZCB0byB0aGUgVk0uIFFFTVUgZGVmaW5pdGVseSBkb2Vzbid0IGVtdWxhdGUgYGlhdmZgIG5hdGl2ZWx5LiBJJ20gc3RhcnRpbmcgdG8gc2VlIHdoZXJlIHRoaXMgaXMgZ29pbmcuIENhbiBJIGV2ZW4gZnV6eiBpdCB3aXRoIFN5emthbGxlcj9cblxuU3l6a2FsbGVyIGRvZXMgaGF2ZSBgc3l6X3BjaV9kZXZpY2VgLCB3aGljaCBjYW4gZW11bGF0ZSBQQ0kgZGV2aWNlcywgYnV0IG9ubHkgaWYgdGhleSBoYXZlIGRldmljZSBkZXNjcmlwdGlvbnMuIEkgbmVlZCB0byBjaGVjayBpZiBTeXprYWxsZXIgYWN0dWFsbHkgZnV6emVkIGBpYXZmYC4gSSBjYW4ndCBsb29rIHRoYXQgdXAgb25saW5lIHJpZ2h0IG5vdywgYnV0IEkgY2FuIGNoZWNrIHRoZSBrZXJuZWwgc291cmNlIHRvIHNlZSBpZiBgaWF2ZmAgaXMgY29uc2lkZXJlZCBhIHZlbmRvci1zcGVjaWZpYyBkcml2ZXIuXG5cblllcywgaXQncyB1bmRlciBgZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9gLiBEZWZpbml0ZWx5IHZlbmRvci1zcGVjaWZpYy4gQnV0IGlzIGl0IGEgU21hcnROSUMgb3IgUENJZSBzd2l0Y2g/IE5vLCBpdCdzIGp1c3QgYSBzdGFuZGFyZCBFdGhlcm5ldCBWRiBkcml2ZXIuXG5cbk9rYXksIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRoZSBwcm9tcHQsIHdoaWNoIHNheXMsICpcInZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzLlwiKiBTdGFuZGFyZCBFdGhlcm5ldCBkcml2ZXJzIGxpa2UgYGUxMDAwZWAsIGBpZ2JgLCBgaXhnYmVgLCBgaTQwZWAsIGBpY2VgLCBhbmQgYGlhdmZgIGFyZSBhbGwgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycywgcmlnaHQ/IEFuZCB0aGV5IHJlcXVpcmUgcGh5c2ljYWwgaGFyZHdhcmUgdW5sZXNzIGVtdWxhdGVkPyBSaWdodCBhZ2FpbiEgUUVNVSBkb2VzIGVtdWxhdGUgYGUxMDAwYCwgYGUxMDAwZWAsIGFuZCAqcmVjZW50bHkqIGBpZ2JgLCBidXQgaXQgKmRvZXMgbm90KiBlbXVsYXRlIGBpYXZmYC5cblxuU28sIGBpYXZmYCByZXF1aXJlcyBwaHlzaWNhbCBoYXJkd2FyZS4gVGhhdCBtZWFucyBpdCdzIG5vdCByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIHN0YW5kYXJkIFFFTVUuIFRoYXQncyBhIHNpZ25pZmljYW50IGNvbnN0cmFpbnQuIEJ1dCwgdGhlIHBhdGNoIGRvZXMgdG91Y2ggYGxpYmV0aGAuIElmIGBsaWJldGhgIGlzIHVzZWQgYnkgKm90aGVyKiBkcml2ZXJzLCB0aGVyZSBtaWdodCBiZSBhIHJvdXRlIHRvIHJlYWNoIHRoZSBjaGFuZ2VzIGlmIHRob3NlIGRyaXZlcnMgKmFyZSogZW11bGF0ZWQuIFRpbWUgdG8gY2hlY2sgd2hhdCBvdGhlciBkcml2ZXJzIHVzZSBgbGliZXRoYC4gVGhhdCdzIHRoZSBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDgyLCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjA5LjYyMTM5MTc1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTc4NTkzMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE5ODggbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc9MTc9aWYgTkVUX1ZFTkRPUl9JTlRFTFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMTgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvS2NvbmZpZzoxOTpzb3VyY2UgXFxcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2xpYmV0aC9LY29uZmlnXFxcIlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWctMjAtc291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJpZS9LY29uZmlnXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvTWFrZWZpbGUtNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZTo2Om9iai0kKENPTkZJR19MSUJFVEgpICs9IGxpYmV0aC9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9NYWtlZmlsZS03LW9iai15ICs9IGxpYmllL1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYz0xNzQyPXN0YXRpYyBpbmxpbmUgdm9pZCBpNDBlX3J4X2NoZWNrc3VtKHN0cnVjdCBpNDBlX3ZzaSAqdnNpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xNzQ1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3NDY6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc0Ny1cXHR1MzIgcnhfZXJyb3IsIHJ4X3N0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc1Ny1cXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocHR5cGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTc1ODpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVxcdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc1OS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxNzY4OlxcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3Njk6XFx0aXB2NiA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc3MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM9MTgxND1zdGF0aWMgaW5saW5lIHZvaWQgaTQwZV9yeF9oYXNoKHN0cnVjdCBpNDBlX3JpbmcgKnJpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MTgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgxOTpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODIwLVxcdHUzMiBoYXNoO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODI1LVxcdGRlY29kZWQgPSBsaWJpZV9yeF9wdF9wYXJzZShyeF9wdHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxODI2OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXFx1MDAzZW5ldGRldiwgZGVjb2RlZCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODI3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgzMC1cXHRcXHRoYXNoID0gbGUzMl90b19jcHUocnhfZGVzYy1cXHUwMDNld2IucXdvcmQwLmhpX2R3b3JkLnJzcyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxODMxOlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgzMi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTcxMT1zdGF0aWMgdm9pZCBpYXZmX2NsZWFuX3J4X3Jpbmcoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzIzLVxcdGZvciAodTMyIGkgPSByeF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuOyBpICE9IHJ4X3JpbmctXFx1MDAzZW5leHRfdG9fdXNlOyApIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjcyNDpcXHRcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfZnFlcyA9IFxcdTAwMjZyeF9yaW5nLVxcdTAwM2VyeF9mcWVzW2ldO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzI1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzI2OlxcdFxcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfZnFlcy1cXHUwMDNlbmV0bWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTcyNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9NzQyPXZvaWQgaWF2Zl9mcmVlX3J4X3Jlc291cmNlcyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzQzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc0NDpcXHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzQ1LVxcdFxcdC5mcWVzXFx0PSByeF9yaW5nLVxcdTAwM2VyeF9mcWVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3NTc6XFx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXFx1MDAyNmZxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc1OC1cXHRyeF9yaW5nLVxcdTAwM2VyeF9mcWVzID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9NzY4PWludCBpYXZmX3NldHVwX3J4X2Rlc2NyaXB0b3JzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03Njkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzcwOlxcdHN0cnVjdCBsaWJldGhfZnEgZnEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NzEtXFx0XFx0LmNvdW50XFx0XFx0PSByeF9yaW5nLVxcdTAwM2Vjb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6Nzc3OlxcdHJldCA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXFx1MDAyNmZxLCBcXHUwMDI2cnhfcmluZy1cXHUwMDNlcV92ZWN0b3ItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzc4LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTgwNS1lcnI6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4MDY6XFx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXFx1MDAyNmZxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTgwNy1cXHRyeF9yaW5nLVxcdTAwM2VyeF9mcWVzID0gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9ODU5PWJvb2wgaWF2Zl9hbGxvY19yeF9idWZmZXJzKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIHUxNiBjbGVhbmVkX2NvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODYwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjg2MTpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtODYyLVxcdFxcdC5wcFxcdFxcdD0gcnhfcmluZy1cXHUwMDNlcHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTg3OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjg3OTpcXHRcXHRhZGRyID0gbGliZXRoX3J4X2FsbG9jKFxcdTAwMjZmcSwgbnR1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTg4MC1cXHRcXHRpZiAoYWRkciA9PSBETUFfTUFQUElOR19FUlJPUilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9OTI1PXN0YXRpYyB2b2lkIGlhdmZfcnhfY3N1bShjb25zdCBzdHJ1Y3QgaWF2Zl92c2kgKnZzaSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkyNjpcXHRcXHRcXHQgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTI3OlxcdFxcdFxcdCBzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTI4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTM3OlxcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkX3B0KSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkzODpcXHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZF9wdCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05MzktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk3NS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5NzY6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTc3LWlhdmZfbGVnYWN5X3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHU2NCBxdzEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5Nzg6XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk3OS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5ODA6XFx0c3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyA9IHt9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTgxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTgyOlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bSh2c2ktXFx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05ODMtXFx0XFx0cmV0dXJuIGNzdW1fYml0cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAwNS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDA2OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3J4X2NzdW1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDctaWF2Zl9mbGV4X3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHU2NCBxdzEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDA4OlxcdFxcdCAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAwOS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDEwOlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDEyOlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bSh2c2ktXFx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDEzLVxcdFxcdHJldHVybiBjc3VtX2JpdHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEwMzc9c3RhdGljIHZvaWQgaWF2Zl9sZWdhY3lfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAzOC1cXHRcXHRcXHRcXHRfX2xlNjQgcXcxLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAzOTpcXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNDQ6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocmluZy1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkX3B0KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNDUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ4LVxcdFxcdGhhc2ggPSBsZTY0X2dldF9iaXRzKHF3MCwgSUFWRl9SWERfTEVHQUNZX1JTU19NKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNDk6XFx0XFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZF9wdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDUwLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTA2Mz1zdGF0aWMgdm9pZCBpYXZmX2ZsZXhfcnhfaGFzaChjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyaW5nLCBfX2xlNjQgcXcxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA2NC1cXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTA2NTpcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNzA6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocmluZy1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkX3B0KSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNzEtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDc1LVxcdFxcdGhhc2ggPSBsZTY0X2dldF9iaXRzKHF3MSwgSUFWRl9SWERfRkxFWF9SU1NfSEFTSF9NKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNzY6XFx0XFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZF9wdCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDc3LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTEzMT1zdGF0aWMgdm9pZCBpYXZmX3Byb2Nlc3Nfc2tiX2ZpZWxkcyhjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTM1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExMzY6XFx0c3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjExMzc6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTEzOC1cXHRfX2xlNjQgcXcwID0gcnhfZGVzYy1cXHUwMDNlcXcwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMTk3PXN0YXRpYyB2b2lkIGlhdmZfYWRkX3J4X2ZyYWcoY29uc3Qgc3RydWN0IHBhZ2VfcG9vbCAqcHAsIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMTk4OlxcdFxcdFxcdCAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTExOTktXFx0XFx0XFx0ICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTIxNz1zdGF0aWMgc3RydWN0IHNrX2J1ZmYgKmlhdmZfYnVpbGRfc2tiKGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTIxODpcXHRcXHRcXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTIxOS1cXHRcXHRcXHRcXHQgICAgICB1bnNpZ25lZCBpbnQgc2l6ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTI1ND1zdGF0aWMgYm9vbCBpYXZmX2lzX25vbl9lb3Aoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEyNTU6XFx0XFx0XFx0ICAgIHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI1Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyODYtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjg3OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjg4LWlhdmZfZXh0cmFjdF9sZWdhY3lfcnhfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTMtXFx0dTY0IHF3MiA9IGxlNjRfdG9fY3B1KHJ4X2Rlc2MtXFx1MDAzZXF3Mik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjk0OlxcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI5NS1cXHRib29sIGwydGFnMXAsIGwydGFnMnA7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzItICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzMzOnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM0LWlhdmZfZXh0cmFjdF9mbGV4X3J4X2ZpZWxkcyhjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM2LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEzMzc6XFx0c3RydWN0IGxpYmV0aF9ycWVfaW5mbyBmaWVsZHMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzMzgtXFx0dTY0IHF3MCA9IGxlNjRfdG9fY3B1KHJ4X2Rlc2MtXFx1MDAzZXF3MCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzNjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzY2OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzY3LWlhdmZfZXh0cmFjdF9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTM4OT1zdGF0aWMgaW50IGlhdmZfY2xlYW5fcnhfaXJxKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsIGludCBidWRnZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEzOTgtXFx0d2hpbGUgKGxpa2VseSh0b3RhbF9yeF9wYWNrZXRzIFxcdTAwM2MgKHVuc2lnbmVkIGludClidWRnZXQpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzk5OlxcdFxcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTQwMDpcXHRcXHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmZmVyO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTQwMS1cXHRcXHRzdHJ1Y3QgaWF2Zl9yeF9kZXNjICpyeF9kZXNjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDMwLVxcdFxcdHJ4X2J1ZmZlciA9IFxcdTAwMjZyeF9yaW5nLVxcdTAwM2VyeF9mcWVzW3J4X3JpbmctXFx1MDAzZW5leHRfdG9fY2xlYW5dO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTQzMTpcXHRcXHRpZiAoIV9fbGliZXRoX3J4X3N5bmNfZm9yX2NwdShwcCwgcnhfYnVmZmVyLCBmaWVsZHMubGVuKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTE0MzItXFx0XFx0XFx0Z290byBza2lwX2RhdGE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5oPTIxOD1zdHJ1Y3QgaWF2Zl9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmgtMjI2LVxcdHVuaW9uIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5oOjIyNzpcXHRcXHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfZnFlcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5oLTIyOC1cXHRcXHRzdHJ1Y3QgaWF2Zl90eF9idWZmZXIgKnR4X2JpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM9NjA3PXN0YXRpYyBpbnQgaWNlX3J4cV9wcF9jcmVhdGUoc3RydWN0IGljZV9yeF9yaW5nICpycSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MDgte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYwOTpcXHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxMC1cXHRcXHQuY291bnRcXHRcXHQ9IHJxLVxcdTAwM2Vjb3VudCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MTg6XFx0ZXJyID0gbGliZXRoX3J4X2ZxX2NyZWF0ZShcXHUwMDI2ZnEsIFxcdTAwMjZycS1cXHUwMDNlcV92ZWN0b3ItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYxOS1cXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjI5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYzMDpcXHRmcSA9IChzdHJ1Y3QgbGliZXRoX2ZxKXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzEtXFx0XFx0LmNvdW50XFx0XFx0PSBycS1cXHUwMDNlY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM6NjM3OlxcdGVyciA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXFx1MDAyNmZxLCBcXHUwMDI2cnEtXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MzgtXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTEyLSNpbmNsdWRlIFxcdTAwM2NuZXQvZGNibmwuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzoxMzojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC9yeC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTE0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM9MTIzMj1zdGF0aWMgaW50IGljZV9sYnRlc3RfcmVjZWl2ZV9mcmFtZXMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jLTEyMzMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jOjEyMzQ6XFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMjM1LVxcdGludCB2YWxpZF9mcmFtZXMsIGk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTE6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveGRwLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTItI2luY2x1ZGUgXFx1MDAzY25ldC9kc2ZpZWxkLmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz0xMTQ9aWNlX3VubWFwX2FuZF9mcmVlX3R4X2J1ZihzdHJ1Y3QgaWNlX3R4X3JpbmcgKnJpbmcsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMjktXFx0Y2FzZSBJQ0VfVFhfQlVGX1hEUF9UWDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMzA6XFx0XFx0bGliZXRoX3hkcF9yZXR1cm5fdmEodHhfYnVmLVxcdTAwM2VyYXdfYnVmLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTMxLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTEyPXZvaWQgaWNlX3J4cV9wcF9kZXN0cm95KHN0cnVjdCBpY2VfcnhfcmluZyAqcnEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTEzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1MTQ6XFx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MTUtXFx0XFx0LmZxZXNcXHQ9IHJxLVxcdTAwM2VyeF9mcWVzLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjUxOTpcXHRsaWJldGhfcnhfZnFfZGVzdHJveShcXHUwMDI2ZnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUyMC1cXHRycS1cXHUwMDNlcnhfZnFlcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTI5OlxcdGxpYmV0aF9yeF9mcV9kZXN0cm95KFxcdTAwMjZmcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTMwLVxcdHJxLVxcdTAwM2VoZHJfZnFlcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz01Mzg9dm9pZCBpY2VfY2xlYW5fcnhfcmluZyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTUxOlxcdGxpYmV0aF94ZHBfcmV0dXJuX3N0YXNoKFxcdTAwMjZyeF9yaW5nLVxcdTAwM2V4ZHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1NC1cXHRmb3IgKHUzMiBpID0gcnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbjsgaSAhPSByeF9yaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTsgKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTU1OlxcdFxcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfcmluZy1cXHUwMDNlcnhfZnFlc1tpXS5uZXRtZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTctXFx0XFx0aWYgKHJ4X3JpbmctXFx1MDAzZWhkcl9wcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1NTg6XFx0XFx0XFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhyeF9yaW5nLVxcdTAwM2VoZHJfZnFlc1tpXS5uZXRtZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTU1OS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTY1MT1zdGF0aWMgdTMyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NjUyOmljZV9ydW5feGRwKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZywgc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY1My1cXHQgICAgc3RydWN0IGJwZl9wcm9nICp4ZHBfcHJvZywgc3RydWN0IGljZV90eF9yaW5nICp4ZHBfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY4OS1cXHRjYXNlIFhEUF9EUk9QOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjY5MDpcXHRcXHRsaWJldGhfeGRwX3JldHVybl9idWZmKHhkcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNjkxLVxcdFxcdHJldCA9IElDRV9YRFBfQ09OU1VNRUQ7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz04MjU9Ym9vbCBpY2VfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHVuc2lnbmVkIGludCBjbGVhbmVkX2NvdW50KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgyNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODI3OlxcdGNvbnN0IHN0cnVjdCBsaWJldGhfZnFfZnAgaGRyX2ZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgyOC1cXHRcXHQucHBcXHRcXHQ9IHJ4X3JpbmctXFx1MDAzZWhkcl9wcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgzMi1cXHR9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjgzMzpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTgzNC1cXHRcXHQucHBcXHRcXHQ9IHJ4X3JpbmctXFx1MDAzZXBwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjg1MjpcXHRcXHRhZGRyID0gbGliZXRoX3J4X2FsbG9jKFxcdTAwMjZmcSwgbnR1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NTMtXFx0XFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NjY6XFx0XFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcXHUwMDI2aGRyX2ZxLCBudHUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2Ny1cXHRcXHRpZiAoYWRkciA9PSBETUFfTUFQUElOR19FUlJPUikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODY5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjg3MDpcXHRcXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KGZxLmZxZXNbbnR1XS5uZXRtZW0pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg3MS1cXHRcXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTk0Nj1zdGF0aWMgaW50IGljZV9jbGVhbl9yeF9pcnEoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTU3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjk1ODpcXHRsaWJldGhfeGRwX2luaXRfYnVmZih4ZHAsIFxcdTAwMjZyeF9yaW5nLVxcdTAwM2V4ZHAsIFxcdTAwMjZyeF9yaW5nLVxcdTAwM2V4ZHBfcnhxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy05NjgtXFx0XFx0dW5pb24gaWNlXzMyYl9yeF9mbGV4X2Rlc2MgKnJ4X2Rlc2M7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6OTY5OlxcdFxcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTcwLVxcdFxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDEwLVxcdFxcdHJ4X2J1ZiA9IFxcdTAwMjZyeF9yaW5nLVxcdTAwM2VoZHJfZnFlc1tudGNdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwMTE6XFx0XFx0bGliZXRoX3hkcF9wcm9jZXNzX2J1ZmYoeGRwLCByeF9idWYsIHNpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwMTItXFx0XFx0cnhfYnVmLVxcdTAwM2VuZXRtZW0gPSAwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAyMS1cXHRcXHRyeF9idWYgPSBcXHUwMDI2cnhfcmluZy1cXHUwMDNlcnhfZnFlc1tudGNdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwMjI6XFx0XFx0bGliZXRoX3hkcF9wcm9jZXNzX2J1ZmYoeGRwLCByeF9idWYsIHNpemUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDQ4LVxcdFxcdGlmICghc2tiKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTA0OTpcXHRcXHRcXHRsaWJldGhfeGRwX3JldHVybl9idWZmX3Nsb3coeGRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDUwLVxcdFxcdFxcdGljZV9zdGF0c19pbmMocnhfcmluZy1cXHUwMDNlcmluZ19zdGF0cywgcnhfYnVmX2ZhaWxlZCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDc2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwNzc6XFx0bGliZXRoX3hkcF9zYXZlX2J1ZmYoXFx1MDAyNnJ4X3JpbmctXFx1MDAzZXhkcCwgeGRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDo3OiNpbmNsdWRlIFxcdTAwM2NuZXQvbGliZXRoL3R5cGVzLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtOC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oPTI3Nz1zdHJ1Y3QgaWNlX3J4X3Jpbmcge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMjg1LVxcdHVuaW9uIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDoyODY6XFx0XFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMjg3LVxcdFxcdHN0cnVjdCB4ZHBfYnVmZiAqKnhkcF9idWY7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMDAtXFx0c3RydWN0IHBhZ2VfcG9vbCAqaGRyX3BwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjMwMTpcXHRzdHJ1Y3QgbGliZXRoX2ZxZSAqaGRyX2ZxZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzE3LVxcdHVuaW9uIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMTg6XFx0XFx0c3RydWN0IGxpYmV0aF94ZHBfYnVmZl9zdGFzaCB4ZHA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzE5OlxcdFxcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhzaztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaC0zMjAtXFx0fTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01LSNpbmNsdWRlIFxcdTAwM2NsaW51eC9uZXQvaW50ZWwvbGliaWUvcnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NjojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz02NT1pY2VfcnhfaGFzaF90b19za2IoY29uc3Qgc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTY4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Njk6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03MC1cXHR1MzIgaGFzaDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03Mi1cXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocnhfcHR5cGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo3MzpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyeF9yaW5nLVxcdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03NC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzctXFx0aWYgKGxpa2VseShoYXNoKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6Nzg6XFx0XFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc5LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz0xMDg9aWNlX3J4X2NzdW0oc3RydWN0IGljZV9yeF9yaW5nICpyaW5nLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTExMC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjExMTpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTExMi1cXHR1MTYgcnhfc3RhdHVzMCwgcnhfc3RhdHVzMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTgtXFx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHB0eXBlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTE5OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bShyaW5nLVxcdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMjAtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTEzNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTM4OlxcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6MTM5OlxcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTQwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTI3MT1pY2VfY2xlYW5feGRwX3R4X2J1ZihzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBpY2VfdHhfYnVmICp0eF9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMjc1LVxcdGNhc2UgSUNFX1RYX0JVRl9YRFBfVFg6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjI3NjpcXHRcXHRsaWJldGhfeGRwX3JldHVybl92YSh0eF9idWYtXFx1MDAzZXJhd19idWYsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0yNzctXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTIzPXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9od190cyhjb25zdCBzdHJ1Y3QgeGRwX21kICpjdHgsIHU2NCAqdHNfbnMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjUyNTpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNi1cXHRzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTI4OlxcdHJ4X3JpbmcgPSBsaWJldGhfeGRwX2J1ZmZfdG9fcnEoeGRwX2V4dCwgdHlwZW9mKCpyeF9yaW5nKSwgeGRwX3J4cSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTUyOS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz01NTY9c3RhdGljIGludCBpY2VfeGRwX3J4X2hhc2goY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCB1MzIgKmhhc2gsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTU4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTU5OlxcdGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcF9leHQgPSAodm9pZCAqKWN0eDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTYwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTU3OD1zdGF0aWMgaW50IGljZV94ZHBfcnhfdmxhbl90YWcoY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCBfX2JlMTYgKnZsYW5fcHJvdG8sXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTgwLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTgxOlxcdGNvbnN0IHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcF9leHQgPSAodm9pZCAqKWN0eDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTgyLVxcdHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTgzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1ODQ6XFx0cnhfcmluZyA9IGxpYmV0aF94ZHBfYnVmZl90b19ycSh4ZHBfZXh0LCB0eXBlb2YoKnJ4X3JpbmcpLCB4ZHBfcnhxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNTg1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy01LSNpbmNsdWRlIFxcdTAwM2NsaW51eC91bnJvbGwuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveGRwLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy03LSNpbmNsdWRlIFxcdTAwM2NuZXQveGRwX3NvY2tfZHJ2LmhcXHUwMDNlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jPTU2Nz1pbnQgaWNlX2NsZWFuX3J4X2lycV96YyhzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjYzMjpcXHRcXHQoKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKilmaXJzdCktXFx1MDAzZWRlc2MgPSByeF9kZXNjO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjMzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02NzYtXFx0cnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbiA9IG50YztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jOjY3NzpcXHRyeF9yaW5nLVxcdTAwM2V4c2sgPSAoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqKWZpcnN0O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjc4LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg9Njc1PXN0cnVjdCBpZHBmX2FkYXB0ZXIge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmgtNzAzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNDpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0ICpzaW5nbGVxX3B0X2xrdXA7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmLmg6NzA1OlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgKnNwbGl0cV9wdF9sa3VwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0zLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0OiNpbmNsdWRlIFxcdTAwM2NuZXQvbGliZXRoL3hkcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTE4OD1zdGF0aWMgdm9pZCBpZHBmX3R4X3NpbmdsZXFfZG1hX21hcF9lcnJvcihzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqdHhxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTE5MS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjE5MjpcXHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMgc3MgPSB7IH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjE5MzpcXHRzdHJ1Y3QgbGliZXRoX2NxX3BwIGNwID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0xOTQtXFx0XFx0LmRldlxcdD0gdHhxLVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtMjA2LVxcdFxcdHR4X2J1ZiA9IFxcdTAwMjZ0eHEtXFx1MDAzZXR4X2J1ZltpZHhdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoyMDc6XFx0XFx0bGliZXRoX3R4X2NvbXBsZXRlKHR4X2J1ZiwgXFx1MDAyNmNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtMjA4LVxcdFxcdGlmICh0eF9idWYgPT0gZmlyc3QpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9NDgxPXN0YXRpYyBib29sIGlkcGZfdHhfc2luZ2xlcV9jbGVhbihzdHJ1Y3QgaWRwZl90eF9xdWV1ZSAqdHhfcSwgaW50IG5hcGlfYnVkZ2V0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTQ4My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjQ4NDpcXHRzdHJ1Y3QgbGliZXRoX3NxX25hcGlfc3RhdHMgc3MgPSB7IH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTQ4NS1cXHRzdHJ1Y3QgaWRwZl9iYXNlX3R4X2Rlc2MgKnR4X2Rlc2M7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg3LVxcdHMxNiBudGMgPSB0eF9xLVxcdTAwM2VuZXh0X3RvX2NsZWFuO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0ODg6XFx0c3RydWN0IGxpYmV0aF9jcV9wcCBjcCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNDg5LVxcdFxcdC5kZXZcXHQ9IHR4X3EtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01MjgtXFx0XFx0LyogdXBkYXRlIHRoZSBzdGF0aXN0aWNzIGZvciB0aGlzIHBhY2tldCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo1Mjk6XFx0XFx0bGliZXRoX3R4X2NvbXBsZXRlKHR4X2J1ZiwgXFx1MDAyNmNwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNTMwLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0Mi1cXHRcXHRcXHQvKiB1bm1hcCBhbnkgcmVtYWluaW5nIHBhZ2VkIGRhdGEgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NTQzOlxcdFxcdFxcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFxcdTAwMjZjcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTU0NC1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9NjQ5PXN0YXRpYyB2b2lkIGlkcGZfcnhfc2luZ2xlcV9jc3VtKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeHEsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1MC1cXHRcXHRcXHRcXHQgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjUxOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTI6XFx0XFx0XFx0XFx0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjUzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTYtXFx0LyogY2hlY2sgaWYgUnggY2hlY2tzdW0gaXMgZW5hYmxlZCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo2NTc6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2NoZWNrc3VtKHJ4cS1cXHUwMDNleGRwX3J4cS5kZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTgtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY2My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjY0OlxcdGlwdjQgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjY1OlxcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjY2LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcxNi0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjcxNzpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcxOC1pZHBmX3J4X3NpbmdsZXFfYmFzZV9jc3VtKGNvbnN0IHVuaW9uIHZpcnRjaG5sMl9yeF9kZXNjICpyeF9kZXNjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3MjA6XFx0c3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyA9IHsgfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzIxLVxcdHUzMiByeF9lcnJvciwgcnhfc3RhdHVzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1MS0gKiovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc1MjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1My1pZHBmX3J4X3NpbmdsZXFfZmxleF9jc3VtKGNvbnN0IHVuaW9uIHZpcnRjaG5sMl9yeF9kZXNjICpyeF9kZXNjKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3NTU6XFx0c3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyA9IHsgfTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzU2LVxcdHUxNiByeF9zdGF0dXMwLCByeF9zdGF0dXMxO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTc4OT1zdGF0aWMgdm9pZCBpZHBmX3J4X3NpbmdsZXFfYmFzZV9oYXNoKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeF9xLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5MS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCB1bmlvbiB2aXJ0Y2hubDJfcnhfZGVzYyAqcnhfZGVzYyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzkyOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzkzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc5NjpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyeF9xLVxcdTAwM2V4ZHBfcnhxLmRldiwgZGVjb2RlZCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5Ny1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODA0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MDU6XFx0XFx0bGliZXRoX3J4X3B0X3NldF9oYXNoKHNrYiwgaGFzaCwgZGVjb2RlZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgwNi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM9ODE5PXN0YXRpYyB2b2lkIGlkcGZfcnhfc2luZ2xlcV9mbGV4X2hhc2goc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4X3EsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODIxLVxcdFxcdFxcdFxcdCAgICAgIGNvbnN0IHVuaW9uIHZpcnRjaG5sMl9yeF9kZXNjICpyeF9kZXNjLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MjI6XFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MjMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo4MjQ6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcS1cXHUwMDNleGRwX3J4cS5kZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MjUtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgzMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODMxOlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MzItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTg0OD1fX2lkcGZfcnhfc2luZ2xlcV9wcm9jZXNzX3NrYl9maWVsZHMoc3RydWN0IGlkcGZfcnhfcXVldWUgKnJ4X3EsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODUyLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODUzOlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZCA9IHJ4X3EtXFx1MDAzZXJ4X3B0eXBlX2xrdXBbcHR5cGVdO1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDowOS43NzkyNTkwOTdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE2ODgwMDk2NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBUaGlzIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCB0b3VjaGVzIGBsaWJldGhgLCB3aGljaCBpcyB1c2VkIGJ5IHNldmVyYWwgSW50ZWwgRXRoZXJuZXQgZHJpdmVyczogYGk0MGVgLCBgaWF2ZmAsIGBpY2VgLCBhbmQgYGlkcGZgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZmlndXJlIG91dCBpZiBzeXprYWxsZXIgY2FuIHJlYWNoIGFueSBvZiB0aGUgY29kZSBhZmZlY3RlZCBieSB0aGUgcGF0Y2guIEkga25vdyBgaWRwZmAgaXMgYW4gSW50ZWwgSW5mcmFzdHJ1Y3R1cmUgRGF0YSBQYXRoIEZ1bmN0aW9uIGRyaXZlciBhbmQgaXMgdmVuZG9yLXNwZWNpZmljIFBDSWUuIGBpY2VgIGFuZCBgaTQwZWAgYXJlIGFsc28gSW50ZWwgRXRoZXJuZXQgZHJpdmVycywgc28gdmVuZG9yLXNwZWNpZmljIFBDSWUgYXMgd2VsbC4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIHN5emthbGxlciBmdXp6IHRoZW0/IEFuZCBvZiBjb3Vyc2UsIGBpYXZmYCBpcyBhIHZpcnR1YWwgZnVuY3Rpb24gKFZGKSBkcml2ZXIuXG5cblRoZSBwcm9tcHQgc3BlY2lmaWNhbGx5IG1lbnRpb25zIGZvY3VzaW5nIG9uIGNvZGUgdGhhdCdzICppbXBvc3NpYmxlKiB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS4gSXQgZ2l2ZXMgZXhhbXBsZXMgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyBmb3IgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVseSBvbiBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlLlxuXG5BcmUgZHJpdmVycyBsaWtlIGBpNDBlYCwgYGljZWAsIGBpYXZmYCBjb25zaWRlcmVkIHRoaXMgdHlwZSBvZiBkcml2ZXI/IE5vdCBpbiB0aGUgc3RyaWN0ZXN0IHNlbnNlIG9mIHRoZSBleGFtcGxlcyBwcm92aWRlZCwgYnV0IHRoZXkgYXJlIEludGVsIEV0aGVybmV0IE5JQyBkcml2ZXJzIGFuZCB0aGUgY3JpdGljYWwgcG9pbnQgaXMgdGhhdCB0aGVzZSBkcml2ZXJzIHJlcXVpcmUgaGFyZHdhcmUgdGhhdCBpc24ndCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0J3MgdGhlIGtleS4gSWYgdGhleSBuZWVkIHBoeXNpY2FsIGhhcmR3YXJlLCBhbmQgdGhhdCBoYXJkd2FyZSBpc24ndCBlbXVsYXRlZCBpbiBRRU1VLCB0aGVuIHRoZXkncmUgdW5yZWFjaGFibGUsIHJpZ2h0PyBBbmQgSSdkIGJldCB0aGUgYW5zd2VyIGlzIHRoYXQgdGhleSBjYW4ndCBiZSByZWFjaGVkIGluIGEgc3RhbmRhcmQgR0NFIG9yIFFFTVUgc2V0dXAgdW5sZXNzIHRoZXJlJ3Mgc29tZSBraW5kIG9mIHNvZnR3YXJlIGVtdWxhdGlvbi4gU3l6a2FsbGVyIG1pZ2h0IGhhdmUgc29tZSBlbXVsYXRpb24gZm9yICpzb21lKiBkZXZpY2VzLCBidXQgaXQncyBub3QgYSBnZW5lcmFsIGNhc2UuXG5cblNvLCB0aGUgcXVlc3Rpb24gYmVjb21lczogZG9lcyBzeXprYWxsZXIgZW11bGF0ZSB0aGVzZSBkcml2ZXJzPyBDYW4gSSB0cmlnZ2VyIGBpYXZmYCBjb2RlIHdpdGhvdXQgdGhlIGhhcmR3YXJlPyBJdCBwcm9iZXMgZm9yIGEgc3BlY2lmaWMgUENJIElELCBzbyBpZiB0aGUgZGV2aWNlIGlzbid0IHByZXNlbnQsIHRoZSBkcml2ZXIgd29uJ3QgZXZlbiBiaW5kLiBEb2VzIHN5emthbGxlcidzIGBzeXpfcGNpX2RldmljZWAgZW11bGF0ZSB0aGVzZT8gSSBjYW4ndCBjaGVjayBzeXprYWxsZXIgZGlyZWN0bHkgYnV0IGNhbiBJIHVzZSBzb21lIHRyaWNrcyB0byBpbmZlciBhbnl0aGluZywgYnkgbG9va2luZyBhdCBleGlzdGluZyBidWdzIHJlcG9ydGVkIGZvciBgaWF2ZmA/IEkgbmVlZCBpbnRlcm5ldCBhY2Nlc3MgZm9yIHRoaXMuXG5cblRoZSBwcm9tcHQgZW1waGFzaXplcyB0aGF0IGNvZGUgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCBldmVuIHdpdGggZW11bGF0ZWQgaGFyZHdhcmUgKGxpa2UgYHVzYiBnYWRnZXRgLCBgbWFjODAyMTFfaHdzaW1gKSwgc2hvdWxkIHJlc3VsdCBpbiBgV29ydGhGdXp6aW5nPWZhbHNlYC4gYGlhdmZgIGlzIGRlZmluaXRlbHkgYW4gSW50ZWwgRXRoZXJuZXQgVkYgZHJpdmVyIHRoYXQgcmVxdWlyZXMgYW4gSW50ZWwgTklDLiBRRU1VIGRlZmluaXRlbHkgZG9lc24ndCBlbXVsYXRlIHRoZSBJbnRlbCBBVkYuXG5cbkFuZCBiZWNhdXNlIGBsaWJldGhgIGlzIHVzZWQgYnkgYWxsIHRoZXNlIEludGVsIEV0aGVybmV0IGRyaXZlcnMgKGBpYXZmYCwgYGk0MGVgLCBgaWNlYCwgYW5kIGBpZHBmYCksIHRoZSBjb25jbHVzaW9uIGlzIHRoZSBzYW1lIGZvciB0aGUgcGF0Y2ggLSB0aGUgY29kZSBwYXRocyBhZmZlY3RlZCBieSB0aGUgcGF0Y2ggdGhhdCByZWxhdGUgdG8gSW50ZWwgRXRoZXJuZXQgZHJpdmVycyBjYW4ndCBiZSByZWFjaGVkIGluIHN0YW5kYXJkIFFFTVUsIGJlY2F1c2UgdGhleSByZXF1aXJlIGhhcmR3YXJlIG5vdCBlbXVsYXRlZC4gUUVNVSBkb2VzIGVtdWxhdGUgb3RoZXIgRXRoZXJuZXQgaW50ZXJmYWNlcyBsaWtlIGBlMTAwMGAsIGBlMTAwMGVgLCBhbmQgYGlnYmAuIFNvIG5vdyBJIGhhdmUgdG8gY2hlY2ssIGFyZSB0aG9zZSBpbnRlcmZhY2VzIHVzaW5nIGxpYmV0aD9cblxuXG4iLCJJbnB1dFRva2VucyI6NDgwMDQsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjQ6MjEuNDY3MjcxNzIxWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAwOTg2ODksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpYmV0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDoyMS41NjczNzgyMloiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzI5MDIwODQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93biwgYXNzdW1pbmcgSSdtIGFuIGV4cGVydCBpbiB0aGlzIGZpZWxkLlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudDogZTEwMDBlKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRvIGNoZWNrIHRoZSBgZTEwMDBlYC4gSnVzdCB0aGUgbWVudGlvbiBvZiB0aGF0IG5hbWUgY29uanVyZXMgdXAgYSBzcGVjaWZpYyBzZXQgb2YgaGFyZHdhcmUgYW5kIHBvdGVudGlhbCBzb2Z0d2FyZSBpbXBsaWNhdGlvbnMuIEkga25vdyBpbW1lZGlhdGVseSB0aGF0IHRoaXMgcmVmZXJzIHRvIGEgcGFydGljdWxhciBJbnRlbCBHaWdhYml0IEV0aGVybmV0IGNvbnRyb2xsZXIgZmFtaWx5LiBNeSBtaW5kIGp1bXBzIHRvIHRoZSBkcml2ZXJzLCB0aGUgZmlybXdhcmUgdmVyc2lvbnMsIGtub3duIGJ1Z3MgYW5kIHZ1bG5lcmFiaWxpdGllcywgYW5kIHRoZSBjb21tb24gY29uZmlndXJhdGlvbnMgYXNzb2NpYXRlZCB3aXRoIGl0LiBUaGlzIHByb2JhYmx5IHBvaW50cyB0b3dhcmRzIGFuIGlzc3VlIHJlbGF0ZWQgdG8gbmV0d29yayBjb25uZWN0aXZpdHkgYW5kIGhvdyBpdCdzIGludGVyYWN0aW5nIHdpdGggdGhlIGhvc3Qgc3lzdGVtLiBNeSBpbml0aWFsIGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIHRoZSBsb3ctbGV2ZWwgZHJpdmVycyBhbmQgdGhlIGludGVycnVwdCBoYW5kbGluZyByZWxhdGVkIHRvIHRoZSBgZTEwMDBlYCBjb250cm9sbGVyLiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1MjQsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDoyNS4yOTY0MDM0MzRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3MjUwMjExNCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGliZXRoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjI1LjY2ODkxMzUzOFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzQzNTk5NDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwbHkgZmFtaWxpYXIgd2l0aCB0aGUgcmVsZXZhbnQgdGVjaG5pY2FsIGRvbWFpbiBhbmQgY29udGV4dC5cblxuKipJbml0aWFsIEFzc2Vzc21lbnQ6IGUxMDAwIENoZWNrKipcblxuQWxyaWdodCwgdGhlIGZpcnN0IHRob3VnaHQgaXMgc2ltcGxlOiAqZTEwMDAqLiBUaGlzIGlzIGxpa2VseSBhIHZlcnkgc3BlY2lmaWMgaWRlbnRpZmllciBvciByZWZlcmVuY2UuIEdpdmVuIG15IGV4cGVydGlzZSwgbXkgbWluZCBpbnN0YW50bHkganVtcHMgdG8gcG9zc2libGUgbWVhbmluZ3MuIENvdWxkIGJlIGEgc3BlY2lmaWMgaGFyZHdhcmUgY29tcG9uZW50LCBhIHNvZnR3YXJlIG1vZHVsZSwgYW4gZXJyb3IgY29kZSwgYSBjb25maWd1cmF0aW9uIGZpbGUsIGEgZGVidWdnaW5nIHRvb2wuLi4gdGhlIHBvc3NpYmlsaXRpZXMgYXJlIG51bWVyb3VzLCBidXQgdGhlIGJyZXZpdHkgc3VnZ2VzdHMgYSBmYW1pbGlhciBhbmQgY29tbW9ubHkgcmVmZXJlbmNlZCBlbGVtZW50IHdpdGhpbiB0aGlzIGNvbnRleHQuXG5cbk15IGluaXRpYWwgcmVhY3Rpb24gaXMgdG8gcXVpY2tseSBwZXJmb3JtIGEgbWVudGFsIGNoZWNrbGlzdCwgc3RhcnRpbmcgd2l0aCB3aGF0IEkgKmV4cGVjdCogdG8gZmluZCBiYXNlZCBvbiBwcmlvciBleHBlcmllbmNlLiBXaGF0IGFyZSB0aGUgY29tbW9uIHBpdGZhbGxzPyBXaGF0IHVzdWFsbHkgZ29lcyB3cm9uZyB3aXRoIGBlMTAwMGA/IFdoZXJlIGRvIEkgaGF2ZSByZWNlbnQgZXhwZXJpZW5jZSB3aXRoIHRoaXMgY29tcG9uZW50PyBXaGF0J3MgdGhlIGNvbnRleHQgSSB3YXMgd29ya2luZyBpbiB0aGF0IG1heSByZXF1aXJlIHRoaXMgY2hlY2s/XG5cblRoaXMgaXMgd2hlcmUgbXkgeWVhcnMgb2YgZXhwZXJpZW5jZSBraWNrIGluLiBJJ20gZ29pbmcgdG8gc3RhcnQgd2l0aCB0aGUgbW9zdCBsaWtlbHkgYW5kIG1vdmUgdGhyb3VnaCB0aGUgbGVzcyBsaWtlbHksIHN0YXJ0aW5nIHdpdGggdGhlIGFyZWEgSSBoYXZlIHRoZSBncmVhdGVzdCBjb25maWRlbmNlIGluLiBJJ2xsIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IG5lZWRzIGF0dGVudGlvbiwgb3Igd2hhdCB0aGUgcHJvbXB0IGlzIGFjdHVhbGx5IHJlbGF0ZWQgdG8sIHNpbmNlIGUxMDAwIGNvdWxkIGJlIGEgcmVmZXJlbmNlIHRvIGEgbG90IG9mIHN0dWZmLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTc3NywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjMwLjAxMjUxNjIwM1oiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk1MzY1MzAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpYmV0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjMwLjA3MjA1OTU3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjQ1NzU0MjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBsaWJldGhgIFVzYWdlIGFuZCBGdXp6aW5nIFBvdGVudGlhbCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IGhvdyBgbGliZXRoYCBpcyBiZWluZyB1dGlsaXplZCwgYW5kIGl0IHNlZW1zIGNvbmZpbmVkIHRvIHRoZSBgaTQwZWAsIGBpYXZmYCwgYGljZWAsIGFuZCBgaWRwZmAgZHJpdmVycy4gIE5vbmUgb2YgdGhvc2UgYXJlIGVtdWxhdGVkIGluIGEgc3RhbmRhcmQgUUVNVSBzZXR1cCwgd2hpY2ggaW1tZWRpYXRlbHkgcmFpc2VzIGEgZmxhZy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgYW55IG9mIHRoZXNlIGRyaXZlcnMsIHNwZWNpZmljYWxseSBgaWF2ZmAsIGFyZSBldmVuICpmdXp6YWJsZSogaW4gdGhlIGZpcnN0IHBsYWNlLlxuXG5Ib2xkIG9uLCBsZXQgbWUgY2hlY2sgdGhhdCBwYXRjaC4uLiBBaCwgaXQgd2FzIGF1dGhvcmVkIGJ5IHRoZSBgc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VgIGFjY291bnQuIEJ1dCB0aGlzIGlzbid0IGEgc21va2luZyBndW4uIFRoZSBjb21taXQgbWVzc2FnZSByZWFkczogXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIi4gVGhpcyBpcyBqdXN0IGEgYm9pbGVycGxhdGUgbWVzc2FnZSB0aGF0IHRoZSBwYXRjaCBhcHBsaWNhdGlvbiBzeXN0ZW0gYWRkcy4gSXQgZGVmaW5pdGVseSAqZG9lc24ndCogbWVhbiBTeXprYWxsZXIgZm91bmQgYSB2dWxuZXJhYmlsaXR5IGhlcmUuIFRoZSBzeXN0ZW0gYXBwbGllZCBpdCBmb3IgbXkgcmV2aWV3LiBJIHNob3VsZG4ndCBqdW1wIHRvIGNvbmNsdXNpb25zLlxuXG5BbHJpZ2h0LCBiYWNrIHRvIHRoZSBxdWVzdGlvbiBvZiByZWFjaGFiaWxpdHkuIENvdWxkIEkgcG9zc2libHkgZnV6eiBgaWF2ZmAgb3IgYGljZWAgc29tZWhvdz8gVGhlIGFuc3dlciBpcyBwcm9iYWJseSBhIGhhcmQgbm8uIFRoZXkgcmVxdWlyZSBwaHlzaWNhbCBoYXJkd2FyZSB0byBmdW5jdGlvbiBjb3JyZWN0bHksIG1lYW5pbmcgdGhvc2UgY29kZSBwYXRocyBhcmUgaW5hY2Nlc3NpYmxlIGluIGEgdmlydHVhbGl6ZWQgY29udGV4dCBsaWtlIEdDRSBvciBRRU1VLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0IG1lIGRvdWJsZS1jaGVjay4gSSdsbCB2ZXJpZnkgaWYgYGlhdmZgIGNhbiBiZSBpbnN0YW50aWF0ZWQgaW4gc29tZSB2aXJ0dWFsIGJ1cyBvciBzb2Z0d2FyZS4gT2theSwgdGhhdCBjb25maXJtcyBpdDogYGlhdmZgIGlzIGEgUENJIGRyaXZlci4gVGhpcyBtZWFucyBpdCByZWxpZXMgb24gZGlyZWN0IGhhcmR3YXJlIGludGVyYWN0aW9uIGFuZCBpc24ndCByZWxldmFudCBmb3IgUUVNVSBmdXp6aW5nLiBUaGlzIGlzIHNvbWV0aGluZyBJIHNob3VsZCBoYXZlIHJlbWVtYmVyZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwMTAzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjM2LjcxNzgxNzU5M1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTUyMjMxNDU4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBjaV9yZWdpc3Rlcl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX21haW4uYz01NjY4PXN0YXRpYyBpbnQgX19pbml0IGlhdmZfaW5pdF9tb2R1bGUodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl9tYWluLmMtNTY3My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jOjU2NzQ6XFx0cmV0dXJuIHBjaV9yZWdpc3Rlcl9kcml2ZXIoXFx1MDAyNmlhdmZfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfbWFpbi5jLTU2NzUtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMVQxOToyNDozNi44NzAwNTY4OVoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4OTU4MDgzNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVmlhYmlsaXR5IG9mIGBpYXZmYCBhbmQgYGxpYmV0aGAgQ2hhbmdlcyBpbiBhIFZpcnR1YWxpemVkIEVudmlyb25tZW50KipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgUENJIGRyaXZlciBJJ20gbG9va2luZyBhdC4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSB0YXJnZXQgZW52aXJvbm1lbnQsIFFFTVUsIGV2ZW4gKnN1cHBvcnRzKiB0aGUgdW5kZXJseWluZyBoYXJkd2FyZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIGFib3V0IHdoZXRoZXIgUUVNVSBlbXVsYXRlcyBgaWF2ZmAgb3IgYGk0MGVgLiBOb3BlLCBzdGFuZGFyZCBRRU1VIGRvZXNuJ3QgZG8gYGlhdmZgLCBhbmQgd2hpbGUgdGhlcmUgbWlnaHQgYmUgc29tZSBvdXQtb2YtdHJlZSBwYXRjaGVzIGZvciBgaTQwZWAsIGl0J3Mgbm90IGEgc3RhbmRhcmQgZmVhdHVyZS5cblxuTGV0J3MgcXVpY2tseSB2ZXJpZnkgbXkga25vd2xlZGdlIG9mIHdoYXQgKmlzKiBlbXVsYXRlZCBpbiBRRU1VLiBSaWdodCwgaXQgZG9lcyBgZTEwMDBgLCBgZTEwMDBlYCwgYGlnYmAsIGBydGw4MTM5YCwgYHZpcnRpby1uZXRgLCBgdm14bmV0M2AsIGBwY25ldGAsIGBuZTJrX3BjaWAsIGBpODI1NTllcmAsIGFuZCBgdHVsaXBgLiBPa2F5LCB0aGF0J3MgYSBnb29kIG1lbnRhbCBjaGVja2xpc3QuIFdhaXQsIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBgaTQwZWAsIGp1c3QgdG8gYmUgY2VydGFpbi4gSSBjYW4ndCBpbW1lZGlhdGVseSBjaGVjayBRRU1VJ3Mgc291cmNlIHJpZ2h0IG5vdywgYnV0IEkga25vdyBgaWdiYCB3YXMgYWRkZWQgc29tZXdoYXQgcmVjZW50bHksIG1lYW5pbmcsIHRoYXQgaWYgYGk0MGVgIGlzbid0IGluIHN0YW5kYXJkIFFFTVUgeWV0LCB0aGVuIGl0IG1heSBiZSB3b3J0aCByZXZpc2l0aW5nIHRoYXQgY29kZSBiYXNlLlxuXG5Ob3csIGV2ZW4gaWYgYGk0MGVgICp3ZXJlKiBlbXVsYXRlZCwgYGlhdmZgIGlzIHRoZSBWRiBkcml2ZXIsIGFuZCBlbXVsYXRpbmcgU1ItSU9WIGFuZCBWRnMgaXMgdXN1YWxseSBub3QgZG9uZSBpbiBzdGFuZGFyZCBRRU1VIGZvciB0aGVzZSBkZXZpY2VzLCBldmVuIHRob3VnaCBgaWdiYCBkb2VzIGhhdmUgc29tZSBTUi1JT1Ygc3VwcG9ydC4gQnV0IGBpYXZmYCBpcyBzcGVjaWZpY2FsbHkgZm9yIEludGVsIDcwMCBTZXJpZXMgKGk0MGUpIGFuZCA4MDAgU2VyaWVzIChpY2UpIFZGcy5cblxuU2luY2UgYGlhdmZgIHJlcXVpcmVzIHRoZSBwaHlzaWNhbCBoYXJkd2FyZSB0aGF0J3Mgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUsIHRoaXMgZmFsbHMgdW5kZXIgdGhlIGNhdGVnb3J5IG9mLCBcIkNvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLCBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cIlxuXG5Ob3csIHRoZSBleGFtcGxlICpkb2Vzbid0KiBleHBsaWNpdGx5IGxpc3Qgc3RhbmRhcmQgRXRoZXJuZXQgZHJpdmVycywgYnV0IHRoZSBvdmVyYXJjaGluZyBwcmluY2lwbGUgaXMgXCJyZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXCIgSXMgYW4gSW50ZWwgRXRoZXJuZXQgTklDIGEgXCJwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmQgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVVcIj8gWWVzLCBpdCBpcy5cblxuVGhlcmVmb3JlLCBjaGFuZ2VzIHRvIGBpYXZmYCBhbmQgYGxpYmV0aGAgKHdoaWNoIGlzIG9ubHkgdXNlZCBieSB0aGVzZSBJbnRlbCBkcml2ZXJzKSBhcmUgbm90IHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGF0IGBsaWJldGhgIGlzIG5vdCB1c2VkIGJ5IGFueXRoaW5nIGVsc2UgdGhvdWdoLCBqdXN0IHRvIGJlIHN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwODg3LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDkxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjQ1LjgyODE0Mzc3NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA5NDE3NTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImxpYmV0aFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAxOTg4IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnPTE3PWlmIE5FVF9WRU5ET1JfSU5URUxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTE4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL0tjb25maWc6MTk6c291cmNlIFxcXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9saWJldGgvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9LY29uZmlnLTIwLXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvbGliaWUvS2NvbmZpZ1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL01ha2VmaWxlLTUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfTElCRVRIKSArPSBsaWJldGgvXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvTWFrZWZpbGUtNy1vYmoteSArPSBsaWJpZS9cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM9MTc0Mj1zdGF0aWMgaW5saW5lIHZvaWQgaTQwZV9yeF9jaGVja3N1bShzdHJ1Y3QgaTQwZV92c2kgKnZzaSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTc0NS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxNzQ2OlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NDctXFx0dTMyIHJ4X2Vycm9yLCByeF9zdGF0dXM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NTctXFx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHB0eXBlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE3NTg6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2NoZWNrc3VtKHZzaS1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NTktXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xNzY3LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTc2ODpcXHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYzoxNzY5OlxcdGlwdjYgPSBsaWJldGhfcnhfcHRfZ2V0X2lwX3ZlcihkZWNvZGVkKSA9PSBMSUJFVEhfUlhfUFRfT1VURVJfSVBWNjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE3NzAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jPTE4MTQ9c3RhdGljIGlubGluZSB2b2lkIGk0MGVfcnhfaGFzaChzdHJ1Y3QgaTQwZV9yaW5nICpyaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaTQwZS9pNDBlX3R4cnguYy0xODE4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jOjE4MTk6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyMC1cXHR1MzIgaGFzaDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyNS1cXHRkZWNvZGVkID0gbGliaWVfcnhfcHRfcGFyc2UocnhfcHR5cGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgyNjpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfaGFzaChyaW5nLVxcdTAwM2VuZXRkZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmMtMTgyNy1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MzAtXFx0XFx0aGFzaCA9IGxlMzJfdG9fY3B1KHJ4X2Rlc2MtXFx1MDAzZXdiLnF3b3JkMC5oaV9kd29yZC5yc3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2k0MGUvaTQwZV90eHJ4LmM6MTgzMTpcXHRcXHRsaWJldGhfcnhfcHRfc2V0X2hhc2goc2tiLCBoYXNoLCBkZWNvZGVkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pNDBlL2k0MGVfdHhyeC5jLTE4MzItXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz03MTE9c3RhdGljIHZvaWQgaWF2Zl9jbGVhbl9yeF9yaW5nKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTcyMy1cXHRmb3IgKHUzMiBpID0gcnhfcmluZy1cXHUwMDNlbmV4dF90b19jbGVhbjsgaSAhPSByeF9yaW5nLVxcdTAwM2VuZXh0X3RvX3VzZTsgKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3MjQ6XFx0XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXMgPSBcXHUwMDI2cnhfcmluZy1cXHUwMDNlcnhfZnFlc1tpXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTcyNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjcyNjpcXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KHJ4X2ZxZXMtXFx1MDAzZW5ldG1lbSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03MjctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTc0Mj12b2lkIGlhdmZfZnJlZV9yeF9yZXNvdXJjZXMoc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0My17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo3NDQ6XFx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc0NS1cXHRcXHQuZnFlc1xcdD0gcnhfcmluZy1cXHUwMDNlcnhfZnFlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzU2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6NzU3OlxcdGxpYmV0aF9yeF9mcV9kZXN0cm95KFxcdTAwMjZmcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy03NTgtXFx0cnhfcmluZy1cXHUwMDNlcnhfZnFlcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTc2OD1pbnQgaWF2Zl9zZXR1cF9yeF9kZXNjcmlwdG9ycyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzY5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc3MDpcXHRzdHJ1Y3QgbGliZXRoX2ZxIGZxID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtNzcxLVxcdFxcdC5jb3VudFxcdFxcdD0gcnhfcmluZy1cXHUwMDNlY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjc3NzpcXHRyZXQgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFxcdTAwMjZmcSwgXFx1MDAyNnJ4X3JpbmctXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTc3OC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04MDUtZXJyOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6ODA2OlxcdGxpYmV0aF9yeF9mcV9kZXN0cm95KFxcdTAwMjZmcSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04MDctXFx0cnhfcmluZy1cXHUwMDNlcnhfZnFlcyA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTg1OT1ib29sIGlhdmZfYWxsb2NfcnhfYnVmZmVycyhzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCB1MTYgY2xlYW5lZF9jb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTg2MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4NjE6XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTg2Mi1cXHRcXHQucHBcXHRcXHQ9IHJ4X3JpbmctXFx1MDAzZXBwLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04NzgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo4Nzk6XFx0XFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcXHUwMDI2ZnEsIG50dSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy04ODAtXFx0XFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTkyNT1zdGF0aWMgdm9pZCBpYXZmX3J4X2NzdW0oY29uc3Qgc3RydWN0IGlhdmZfdnNpICp2c2ksIHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5MjY6XFx0XFx0XFx0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkyNzpcXHRcXHRcXHQgc3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTkyOC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTkzNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjkzNzpcXHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZF9wdCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzo5Mzg6XFx0aXB2NiA9IGxpYmV0aF9yeF9wdF9nZXRfaXBfdmVyKGRlY29kZWRfcHQpID09IExJQkVUSF9SWF9QVF9PVVRFUl9JUFY2O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTM5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05NzUtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTc2OnN0YXRpYyBzdHJ1Y3QgbGliZXRoX3J4X2NzdW1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk3Ny1pYXZmX2xlZ2FjeV9yeF9jc3VtKGNvbnN0IHN0cnVjdCBpYXZmX3ZzaSAqdnNpLCB1NjQgcXcxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTc4OlxcdFxcdCAgICBjb25zdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWRfcHQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy05Nzkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6OTgwOlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTk4MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjk4MjpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVxcdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtOTgzLVxcdFxcdHJldHVybiBjc3VtX2JpdHM7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDUtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAwNjpzdGF0aWMgc3RydWN0IGxpYmV0aF9yeF9jc3VtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDA3LWlhdmZfZmxleF9yeF9jc3VtKGNvbnN0IHN0cnVjdCBpYXZmX3ZzaSAqdnNpLCB1NjQgcXcxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAwODpcXHRcXHQgIGNvbnN0IHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMDkte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMDpcXHRzdHJ1Y3QgbGliZXRoX3J4X2NzdW0gY3N1bV9iaXRzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDExLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTAxMjpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0odnNpLVxcdTAwM2VuZXRkZXYsIGRlY29kZWRfcHQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTAxMy1cXHRcXHRyZXR1cm4gY3N1bV9iaXRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYz0xMDM3PXN0YXRpYyB2b2lkIGlhdmZfbGVnYWN5X3J4X2hhc2goY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcmluZywgX19sZTY0IHF3MCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwMzgtXFx0XFx0XFx0XFx0X19sZTY0IHF3MSwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwMzk6XFx0XFx0XFx0XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0MC17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDQ0OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXFx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDQ1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA0OC1cXHRcXHRoYXNoID0gbGU2NF9nZXRfYml0cyhxdzAsIElBVkZfUlhEX0xFR0FDWV9SU1NfTSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDQ5OlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWRfcHQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA1MC1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEwNjM9c3RhdGljIHZvaWQgaWF2Zl9mbGV4X3J4X2hhc2goY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcmluZywgX19sZTY0IHF3MSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNjQtXFx0XFx0XFx0ICAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEwNjU6XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkX3B0KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEwNjktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDcwOlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJpbmctXFx1MDAzZW5ldGRldiwgZGVjb2RlZF9wdCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMDcxLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA3NS1cXHRcXHRoYXNoID0gbGU2NF9nZXRfYml0cyhxdzEsIElBVkZfUlhEX0ZMRVhfUlNTX0hBU0hfTSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMDc2OlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWRfcHQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTA3Ny1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTExMzE9c3RhdGljIHZvaWQgaWF2Zl9wcm9jZXNzX3NrYl9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTEzNS17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMTM2OlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMTM3OlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZF9wdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTExMzgtXFx0X19sZTY0IHF3MCA9IHJ4X2Rlc2MtXFx1MDAzZXF3MDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM9MTE5Nz1zdGF0aWMgdm9pZCBpYXZmX2FkZF9yeF9mcmFnKGNvbnN0IHN0cnVjdCBwYWdlX3Bvb2wgKnBwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTE5ODpcXHRcXHRcXHQgICAgIGNvbnN0IHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWZmZXIsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMTk5LVxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEyMTc9c3RhdGljIHN0cnVjdCBza19idWZmICppYXZmX2J1aWxkX3NrYihjb25zdCBzdHJ1Y3QgcGFnZV9wb29sICpwcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjEyMTg6XFx0XFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyMTktXFx0XFx0XFx0XFx0ICAgICAgdW5zaWduZWQgaW50IHNpemUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEyNTQ9c3RhdGljIGJvb2wgaWF2Zl9pc19ub25fZW9wKHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMjU1OlxcdFxcdFxcdCAgICBzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyNTYte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjg2LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTI4NzpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTI4OC1pYXZmX2V4dHJhY3RfbGVnYWN5X3J4X2ZpZWxkcyhjb25zdCBzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMjkzLVxcdHU2NCBxdzIgPSBsZTY0X3RvX2NwdShyeF9kZXNjLVxcdTAwM2VxdzIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTI5NDpcXHRzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTEyOTUtXFx0Ym9vbCBsMnRhZzFwLCBsMnRhZzJwO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzMyLSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTMzMzpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTMzNC1pYXZmX2V4dHJhY3RfZmxleF9yeF9maWVsZHMoY29uc3Qgc3RydWN0IGlhdmZfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTMzNi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYzoxMzM3OlxcdHN0cnVjdCBsaWJldGhfcnFlX2luZm8gZmllbGRzID0ge307XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzM4LVxcdHU2NCBxdzAgPSBsZTY0X3RvX2NwdShyeF9kZXNjLVxcdTAwM2VxdzApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzY1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTM2NjpzdGF0aWMgc3RydWN0IGxpYmV0aF9ycWVfaW5mb1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTM2Ny1pYXZmX2V4dHJhY3RfcnhfZmllbGRzKGNvbnN0IHN0cnVjdCBpYXZmX3JpbmcgKnJ4X3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jPTEzODk9c3RhdGljIGludCBpYXZmX2NsZWFuX3J4X2lycShzdHJ1Y3QgaWF2Zl9yaW5nICpyeF9yaW5nLCBpbnQgYnVkZ2V0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xMzk4LVxcdHdoaWxlIChsaWtlbHkodG90YWxfcnhfcGFja2V0cyBcXHUwMDNjICh1bnNpZ25lZCBpbnQpYnVkZ2V0KSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmM6MTM5OTpcXHRcXHRzdHJ1Y3QgbGliZXRoX3JxZV9pbmZvIGZpZWxkcztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjE0MDA6XFx0XFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2J1ZmZlcjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jLTE0MDEtXFx0XFx0c3RydWN0IGlhdmZfcnhfZGVzYyAqcnhfZGVzYztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lhdmYvaWF2Zl90eHJ4LmMtMTQzMC1cXHRcXHRyeF9idWZmZXIgPSBcXHUwMDI2cnhfcmluZy1cXHUwMDNlcnhfZnFlc1tyeF9yaW5nLVxcdTAwM2VuZXh0X3RvX2NsZWFuXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5jOjE0MzE6XFx0XFx0aWYgKCFfX2xpYmV0aF9yeF9zeW5jX2Zvcl9jcHUocHAsIHJ4X2J1ZmZlciwgZmllbGRzLmxlbikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguYy0xNDMyLVxcdFxcdFxcdGdvdG8gc2tpcF9kYXRhO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaD0yMTg9c3RydWN0IGlhdmZfcmluZyB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pYXZmL2lhdmZfdHhyeC5oLTIyNi1cXHR1bmlvbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaDoyMjc6XFx0XFx0c3RydWN0IGxpYmV0aF9mcWUgKnJ4X2ZxZXM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWF2Zi9pYXZmX3R4cnguaC0yMjgtXFx0XFx0c3RydWN0IGlhdmZfdHhfYnVmZmVyICp0eF9iaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jPTYwNz1zdGF0aWMgaW50IGljZV9yeHFfcHBfY3JlYXRlKHN0cnVjdCBpY2VfcnhfcmluZyAqcnEpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjA4LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MDk6XFx0c3RydWN0IGxpYmV0aF9mcSBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTAtXFx0XFx0LmNvdW50XFx0XFx0PSBycS1cXHUwMDNlY291bnQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmM6NjE4OlxcdGVyciA9IGxpYmV0aF9yeF9mcV9jcmVhdGUoXFx1MDAyNmZxLCBcXHUwMDI2cnEtXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYy02MTktXFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jLTYyOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2Jhc2UuYzo2MzA6XFx0ZnEgPSAoc3RydWN0IGxpYmV0aF9mcSl7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjMxLVxcdFxcdC5jb3VudFxcdFxcdD0gcnEtXFx1MDAzZWNvdW50LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjM2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfYmFzZS5jOjYzNzpcXHRlcnIgPSBsaWJldGhfcnhfZnFfY3JlYXRlKFxcdTAwMjZmcSwgXFx1MDAyNnJxLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9iYXNlLmMtNjM4LVxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMi0jaW5jbHVkZSBcXHUwMDNjbmV0L2RjYm5sLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmM6MTM6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgvcnguaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xNC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZXRodG9vbC5jPTEyMzI9c3RhdGljIGludCBpY2VfbGJ0ZXN0X3JlY2VpdmVfZnJhbWVzKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYy0xMjMzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2V0aHRvb2wuYzoxMjM0OlxcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9idWY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9ldGh0b29sLmMtMTIzNS1cXHRpbnQgdmFsaWRfZnJhbWVzLCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAtI2luY2x1ZGUgXFx1MDAzY2xpbnV4L25ldC9pbnRlbC9saWJpZS9yeC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjExOiNpbmNsdWRlIFxcdTAwM2NuZXQvbGliZXRoL3hkcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEyLSNpbmNsdWRlIFxcdTAwM2NuZXQvZHNmaWVsZC5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9MTE0PWljZV91bm1hcF9hbmRfZnJlZV90eF9idWYoc3RydWN0IGljZV90eF9yaW5nICpyaW5nLCBzdHJ1Y3QgaWNlX3R4X2J1ZiAqdHhfYnVmKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTI5LVxcdGNhc2UgSUNFX1RYX0JVRl9YRFBfVFg6XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6MTMwOlxcdFxcdGxpYmV0aF94ZHBfcmV0dXJuX3ZhKHR4X2J1Zi1cXHUwMDNlcmF3X2J1ZiwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEzMS1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jPTUxMj12b2lkIGljZV9yeHFfcHBfZGVzdHJveShzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJxKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUxMy17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTE0OlxcdHN0cnVjdCBsaWJldGhfZnEgZnEgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTE1LVxcdFxcdC5mcWVzXFx0PSBycS1cXHUwMDNlcnhfZnFlcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUxOC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo1MTk6XFx0bGliZXRoX3J4X2ZxX2Rlc3Ryb3koXFx1MDAyNmZxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01MjAtXFx0cnEtXFx1MDAzZXJ4X2ZxZXMgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTI4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjUyOTpcXHRsaWJldGhfcnhfZnFfZGVzdHJveShcXHUwMDI2ZnEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTUzMC1cXHRycS1cXHUwMDNlaGRyX2ZxZXMgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9NTM4PXZvaWQgaWNlX2NsZWFuX3J4X3Jpbmcoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTUwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjU1MTpcXHRsaWJldGhfeGRwX3JldHVybl9zdGFzaChcXHUwMDI2cnhfcmluZy1cXHUwMDNleGRwKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTItXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTQtXFx0Zm9yICh1MzIgaSA9IHJ4X3JpbmctXFx1MDAzZW5leHRfdG9fY2xlYW47IGkgIT0gcnhfcmluZy1cXHUwMDNlbmV4dF90b191c2U7ICkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjU1NTpcXHRcXHRsaWJldGhfcnhfcmVjeWNsZV9zbG93KHJ4X3JpbmctXFx1MDAzZXJ4X2ZxZXNbaV0ubmV0bWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtNTU3LVxcdFxcdGlmIChyeF9yaW5nLVxcdTAwM2VoZHJfcHApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6NTU4OlxcdFxcdFxcdGxpYmV0aF9yeF9yZWN5Y2xlX3Nsb3cocnhfcmluZy1cXHUwMDNlaGRyX2ZxZXNbaV0ubmV0bWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy01NTktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz02NTE9c3RhdGljIHUzMlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjY1MjppY2VfcnVuX3hkcChzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3JpbmcsIHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKnhkcCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy02NTMtXFx0ICAgIHN0cnVjdCBicGZfcHJvZyAqeGRwX3Byb2csIHN0cnVjdCBpY2VfdHhfcmluZyAqeGRwX3JpbmcsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy02ODktXFx0Y2FzZSBYRFBfRFJPUDpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo2OTA6XFx0XFx0bGliZXRoX3hkcF9yZXR1cm5fYnVmZih4ZHApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTY5MS1cXHRcXHRyZXQgPSBJQ0VfWERQX0NPTlNVTUVEO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM9ODI1PWJvb2wgaWNlX2FsbG9jX3J4X2J1ZnMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLCB1bnNpZ25lZCBpbnQgY2xlYW5lZF9jb3VudClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MjYte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjgyNzpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX2ZxX2ZwIGhkcl9mcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MjgtXFx0XFx0LnBwXFx0XFx0PSByeF9yaW5nLVxcdTAwM2VoZHJfcHAsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MzItXFx0fTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4MzM6XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF9mcV9mcCBmcSA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04MzQtXFx0XFx0LnBwXFx0XFx0PSByeF9yaW5nLVxcdTAwM2VwcCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg1MS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NTI6XFx0XFx0YWRkciA9IGxpYmV0aF9yeF9hbGxvYyhcXHUwMDI2ZnEsIG50dSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtODUzLVxcdFxcdGlmIChhZGRyID09IERNQV9NQVBQSU5HX0VSUk9SKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmM6ODY2OlxcdFxcdGFkZHIgPSBsaWJldGhfcnhfYWxsb2MoXFx1MDAyNmhkcl9mcSwgbnR1KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NjctXFx0XFx0aWYgKGFkZHIgPT0gRE1BX01BUFBJTkdfRVJST1IpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTg2OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo4NzA6XFx0XFx0XFx0bGliZXRoX3J4X3JlY3ljbGVfc2xvdyhmcS5mcWVzW250dV0ubmV0bWVtKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy04NzEtXFx0XFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYz05NDY9c3RhdGljIGludCBpY2VfY2xlYW5fcnhfaXJxKHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZywgaW50IGJ1ZGdldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTk1Ny1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzo5NTg6XFx0bGliZXRoX3hkcF9pbml0X2J1ZmYoeGRwLCBcXHUwMDI2cnhfcmluZy1cXHUwMDNleGRwLCBcXHUwMDI2cnhfcmluZy1cXHUwMDNleGRwX3J4cSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtOTY4LVxcdFxcdHVuaW9uIGljZV8zMmJfcnhfZmxleF9kZXNjICpyeF9kZXNjO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjk2OTpcXHRcXHRzdHJ1Y3QgbGliZXRoX2ZxZSAqcnhfYnVmO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTk3MC1cXHRcXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTAxMC1cXHRcXHRyeF9idWYgPSBcXHUwMDI2cnhfcmluZy1cXHUwMDNlaGRyX2ZxZXNbbnRjXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDExOlxcdFxcdGxpYmV0aF94ZHBfcHJvY2Vzc19idWZmKHhkcCwgcnhfYnVmLCBzaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDEyLVxcdFxcdHJ4X2J1Zi1cXHUwMDNlbmV0bWVtID0gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jLTEwMjEtXFx0XFx0cnhfYnVmID0gXFx1MDAyNnJ4X3JpbmctXFx1MDAzZXJ4X2ZxZXNbbnRjXTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDIyOlxcdFxcdGxpYmV0aF94ZHBfcHJvY2Vzc19idWZmKHhkcCwgcnhfYnVmLCBzaXplKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYy0xMDIzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA0OC1cXHRcXHRpZiAoIXNrYikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5jOjEwNDk6XFx0XFx0XFx0bGliZXRoX3hkcF9yZXR1cm5fYnVmZl9zbG93KHhkcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA1MC1cXHRcXHRcXHRpY2Vfc3RhdHNfaW5jKHJ4X3JpbmctXFx1MDAzZXJpbmdfc3RhdHMsIHJ4X2J1Zl9mYWlsZWQpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA3Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguYzoxMDc3OlxcdGxpYmV0aF94ZHBfc2F2ZV9idWZmKFxcdTAwMjZyeF9yaW5nLVxcdTAwM2V4ZHAsIHhkcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmMtMTA3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTYtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6NzojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC90eXBlcy5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTgtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaD0yNzc9c3RydWN0IGljZV9yeF9yaW5nIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTI4NS1cXHR1bmlvbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6Mjg2OlxcdFxcdHN0cnVjdCBsaWJldGhfZnFlICpyeF9mcWVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTI4Ny1cXHRcXHRzdHJ1Y3QgeGRwX2J1ZmYgKip4ZHBfYnVmO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzAwLVxcdHN0cnVjdCBwYWdlX3Bvb2wgKmhkcl9wcDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnguaDozMDE6XFx0c3RydWN0IGxpYmV0aF9mcWUgKmhkcl9mcWVzO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMwMi1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oLTMxNy1cXHR1bmlvbiB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4Lmg6MzE4OlxcdFxcdHN0cnVjdCBsaWJldGhfeGRwX2J1ZmZfc3Rhc2ggeGRwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeC5oOjMxOTpcXHRcXHRzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4c2s7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4LmgtMzIwLVxcdH07XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNS0jaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0L2ludGVsL2xpYmllL3J4LmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjY6I2luY2x1ZGUgXFx1MDAzY25ldC9saWJldGgveGRwLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTctXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NjU9aWNlX3J4X2hhc2hfdG9fc2tiKGNvbnN0IHN0cnVjdCBpY2VfcnhfcmluZyAqcnhfcmluZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy02OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjY5OlxcdHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzAtXFx0dTMyIGhhc2g7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzItXFx0ZGVjb2RlZCA9IGxpYmllX3J4X3B0X3BhcnNlKHJ4X3B0eXBlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NzM6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcmluZy1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtNzQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTc3LVxcdGlmIChsaWtlbHkoaGFzaCkpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjc4OlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy03OS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9MTA4PWljZV9yeF9jc3VtKHN0cnVjdCBpY2VfcnhfcmluZyAqcmluZywgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTAte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzoxMTE6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCBkZWNvZGVkO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMTItXFx0dTE2IHJ4X3N0YXR1czAsIHJ4X3N0YXR1czE7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTE4LVxcdGRlY29kZWQgPSBsaWJpZV9yeF9wdF9wYXJzZShwdHlwZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjExOTpcXHRpZiAoIWxpYmV0aF9yeF9wdF9oYXNfY2hlY2tzdW0ocmluZy1cXHUwMDNlbmV0ZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMTIwLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy0xMzctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjEzODpcXHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjEzOTpcXHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTE0MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz0yNzE9aWNlX2NsZWFuX3hkcF90eF9idWYoc3RydWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgaWNlX3R4X2J1ZiAqdHhfYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTI3NS1cXHRjYXNlIElDRV9UWF9CVUZfWERQX1RYOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzoyNzY6XFx0XFx0bGliZXRoX3hkcF9yZXR1cm5fdmEodHhfYnVmLVxcdTAwM2VyYXdfYnVmLCB0cnVlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmMtMjc3LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jPTUyMz1zdGF0aWMgaW50IGljZV94ZHBfcnhfaHdfdHMoY29uc3Qgc3RydWN0IHhkcF9tZCAqY3R4LCB1NjQgKnRzX25zKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01MjQte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYzo1MjU6XFx0Y29uc3Qgc3RydWN0IGxpYmV0aF94ZHBfYnVmZiAqeGRwX2V4dCA9ICh2b2lkICopY3R4O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01MjYtXFx0c3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjUyODpcXHRyeF9yaW5nID0gbGliZXRoX3hkcF9idWZmX3RvX3JxKHhkcF9leHQsIHR5cGVvZigqcnhfcmluZyksIHhkcF9yeHEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYy01MjktXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM9NTU2PXN0YXRpYyBpbnQgaWNlX3hkcF9yeF9oYXNoKGNvbnN0IHN0cnVjdCB4ZHBfbWQgKmN0eCwgdTMyICpoYXNoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU1OC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjU1OTpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU2MC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfdHhyeF9saWIuYz01Nzg9c3RhdGljIGludCBpY2VfeGRwX3J4X3ZsYW5fdGFnKGNvbnN0IHN0cnVjdCB4ZHBfbWQgKmN0eCwgX19iZTE2ICp2bGFuX3Byb3RvLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4MC17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jOjU4MTpcXHRjb25zdCBzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICp4ZHBfZXh0ID0gKHZvaWQgKiljdHg7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4Mi1cXHRzdHJ1Y3QgaWNlX3J4X3JpbmcgKnJ4X3Jpbmc7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3R4cnhfbGliLmM6NTg0OlxcdHJ4X3JpbmcgPSBsaWJldGhfeGRwX2J1ZmZfdG9fcnEoeGRwX2V4dCwgdHlwZW9mKCpyeF9yaW5nKSwgeGRwX3J4cSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV90eHJ4X2xpYi5jLTU4NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNS0jaW5jbHVkZSBcXHUwMDNjbGludXgvdW5yb2xsLmhcXHUwMDNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2OiNpbmNsdWRlIFxcdTAwM2NuZXQvbGliZXRoL3hkcC5oXFx1MDAzZVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNy0jaW5jbHVkZSBcXHUwMDNjbmV0L3hkcF9zb2NrX2Rydi5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYz01Njc9aW50IGljZV9jbGVhbl9yeF9pcnFfemMoc3RydWN0IGljZV9yeF9yaW5nICpyeF9yaW5nLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYy02MzEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2MzI6XFx0XFx0KChzdHJ1Y3QgbGliZXRoX3hkcF9idWZmICopZmlyc3QpLVxcdTAwM2VkZXNjID0gcnhfZGVzYztcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTYzMy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfeHNrLmMtNjc2LVxcdHJ4X3JpbmctXFx1MDAzZW5leHRfdG9fY2xlYW4gPSBudGM7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV94c2suYzo2Nzc6XFx0cnhfcmluZy1cXHUwMDNleHNrID0gKHN0cnVjdCBsaWJldGhfeGRwX2J1ZmYgKilmaXJzdDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX3hzay5jLTY3OC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oPTY3NT1zdHJ1Y3QgaWRwZl9hZGFwdGVyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oLTcwMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaDo3MDQ6XFx0c3RydWN0IGxpYmV0aF9yeF9wdCAqc2luZ2xlcV9wdF9sa3VwO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZi5oOjcwNTpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0ICpzcGxpdHFfcHRfbGt1cDtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGYuaC03MDYtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NDojaW5jbHVkZSBcXHUwMDNjbmV0L2xpYmV0aC94ZHAuaFxcdTAwM2VcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz0xODg9c3RhdGljIHZvaWQgaWRwZl90eF9zaW5nbGVxX2RtYV9tYXBfZXJyb3Ioc3RydWN0IGlkcGZfdHhfcXVldWUgKnR4cSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy0xOTEte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoxOTI6XFx0c3RydWN0IGxpYmV0aF9zcV9uYXBpX3N0YXRzIHNzID0geyB9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzoxOTM6XFx0c3RydWN0IGxpYmV0aF9jcV9wcCBjcCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtMTk0LVxcdFxcdC5kZXZcXHQ9IHR4cS1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTIwNi1cXHRcXHR0eF9idWYgPSBcXHUwMDI2dHhxLVxcdTAwM2V0eF9idWZbaWR4XTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6MjA3OlxcdFxcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFxcdTAwMjZjcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTIwOC1cXHRcXHRpZiAodHhfYnVmID09IGZpcnN0KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTQ4MT1zdGF0aWMgYm9vbCBpZHBmX3R4X3NpbmdsZXFfY2xlYW4oc3RydWN0IGlkcGZfdHhfcXVldWUgKnR4X3EsIGludCBuYXBpX2J1ZGdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy00ODMte1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo0ODQ6XFx0c3RydWN0IGxpYmV0aF9zcV9uYXBpX3N0YXRzIHNzID0geyB9O1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy00ODUtXFx0c3RydWN0IGlkcGZfYmFzZV90eF9kZXNjICp0eF9kZXNjO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTQ4Ny1cXHRzMTYgbnRjID0gdHhfcS1cXHUwMDNlbmV4dF90b19jbGVhbjtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NDg4OlxcdHN0cnVjdCBsaWJldGhfY3FfcHAgY3AgPSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTQ4OS1cXHRcXHQuZGV2XFx0PSB0eF9xLVxcdTAwM2VkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNTI4LVxcdFxcdC8qIHVwZGF0ZSB0aGUgc3RhdGlzdGljcyBmb3IgdGhpcyBwYWNrZXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NTI5OlxcdFxcdGxpYmV0aF90eF9jb21wbGV0ZSh0eF9idWYsIFxcdTAwMjZjcCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTUzMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01NDItXFx0XFx0XFx0LyogdW5tYXAgYW55IHJlbWFpbmluZyBwYWdlZCBkYXRhICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjU0MzpcXHRcXHRcXHRsaWJldGhfdHhfY29tcGxldGUodHhfYnVmLCBcXHUwMDI2Y3ApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy01NDQtXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTY0OT1zdGF0aWMgdm9pZCBpZHBmX3J4X3NpbmdsZXFfY3N1bShzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhxLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NTAtXFx0XFx0XFx0XFx0IHN0cnVjdCBza19idWZmICpza2IsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY1MTpcXHRcXHRcXHRcXHQgc3RydWN0IGxpYmV0aF9yeF9jc3VtIGNzdW1fYml0cyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjUyOlxcdFxcdFxcdFxcdCBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY1My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjU2LVxcdC8qIGNoZWNrIGlmIFJ4IGNoZWNrc3VtIGlzIGVuYWJsZWQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NjU3OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19jaGVja3N1bShyeHEtXFx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNjU4LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy02NjMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY2NDpcXHRpcHY0ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjQ7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjY2NTpcXHRpcHY2ID0gbGliZXRoX3J4X3B0X2dldF9pcF92ZXIoZGVjb2RlZCkgPT0gTElCRVRIX1JYX1BUX09VVEVSX0lQVjY7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTY2Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTYtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3MTc6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03MTgtaWRwZl9yeF9zaW5nbGVxX2Jhc2VfY3N1bShjb25zdCB1bmlvbiB2aXJ0Y2hubDJfcnhfZGVzYyAqcnhfZGVzYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzE5LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzIwOlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7IH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTcyMS1cXHR1MzIgcnhfZXJyb3IsIHJ4X3N0YXR1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTEtICoqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3NTI6c3RhdGljIHN0cnVjdCBsaWJldGhfcnhfY3N1bVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03NTMtaWRwZl9yeF9zaW5nbGVxX2ZsZXhfY3N1bShjb25zdCB1bmlvbiB2aXJ0Y2hubDJfcnhfZGVzYyAqcnhfZGVzYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzU0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6NzU1OlxcdHN0cnVjdCBsaWJldGhfcnhfY3N1bSBjc3VtX2JpdHMgPSB7IH07XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc1Ni1cXHR1MTYgcnhfc3RhdHVzMCwgcnhfc3RhdHVzMTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz03ODk9c3RhdGljIHZvaWQgaWRwZl9yeF9zaW5nbGVxX2Jhc2VfaGFzaChzdHJ1Y3QgaWRwZl9yeF9xdWV1ZSAqcnhfcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTEtXFx0XFx0XFx0XFx0ICAgICAgY29uc3QgdW5pb24gdmlydGNobmwyX3J4X2Rlc2MgKnJ4X2Rlc2MsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjc5MjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTc5My17XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtNzk1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYzo3OTY6XFx0aWYgKCFsaWJldGhfcnhfcHRfaGFzX2hhc2gocnhfcS1cXHUwMDNleGRwX3J4cS5kZXYsIGRlY29kZWQpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy03OTctXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgwNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODA1OlxcdFxcdGxpYmV0aF9yeF9wdF9zZXRfaGFzaChza2IsIGhhc2gsIGRlY29kZWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MDYtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jPTgxOT1zdGF0aWMgdm9pZCBpZHBmX3J4X3NpbmdsZXFfZmxleF9oYXNoKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeF9xLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTgyMS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCB1bmlvbiB2aXJ0Y2hubDJfcnhfZGVzYyAqcnhfZGVzYyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODIyOlxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBsaWJldGhfcnhfcHQgZGVjb2RlZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODIzLXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmM6ODI0OlxcdGlmICghbGliZXRoX3J4X3B0X2hhc19oYXNoKHJ4X3EtXFx1MDAzZXhkcF9yeHEuZGV2LCBkZWNvZGVkKSlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODI1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYy04MzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjgzMTpcXHRcXHRsaWJldGhfcnhfcHRfc2V0X2hhc2goc2tiLCBoYXNoLCBkZWNvZGVkKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfc2luZ2xlcV90eHJ4LmMtODMyLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl9zaW5nbGVxX3R4cnguYz04NDg9X19pZHBmX3J4X3NpbmdsZXFfcHJvY2Vzc19za2JfZmllbGRzKHN0cnVjdCBpZHBmX3J4X3F1ZXVlICpyeF9xLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jLTg1Mi17XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3NpbmdsZXFfdHhyeC5jOjg1MzpcXHRzdHJ1Y3QgbGliZXRoX3J4X3B0IGRlY29kZWQgPSByeF9xLVxcdTAwM2VyeF9wdHlwZV9sa3VwW3B0eXBlXTtcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDFUMTk6MjQ6NDYuMDM3NTg5NjcyWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwNDUxMzQyMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgRnV6emFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24gc3lzdGVtYXRpY2FsbHkuIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXNuJ3QgZnV6emFibGUgaW4gYSBzdGFuZGFyZCBlbnZpcm9ubWVudCwgYW5kIEknbSBjb25maWRlbnQgaW4gdGhhdCBjb25jbHVzaW9uLiBGaXJzdCwgSSBrbm93IHRoYXQgYGxpYmV0aGAgaXMgZXhjbHVzaXZlbHkgdXNlZCBieSBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLiBUaGUgcGF0Y2ggdG91Y2hlcyBib3RoIGBpYXZmX3R4cnguY2AgYW5kIGBpbmNsdWRlL25ldC9saWJldGgvcnguaGAuIFNpbmNlIGBpYXZmYCBhbmQgYGxpYmV0aGAgYXJlIGJvdGggSW50ZWwtc3BlY2lmaWMsIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIGFueXRoaW5nLiBJIHF1aWNrbHkgZG91YmxlLWNoZWNrZWQgdGhlIGBkcml2ZXJzL25ldC9gIGRpcmVjdG9yeSBhbmQgY29uZmlybWVkIOKAkyBubyBvdGhlciBkcml2ZXJzIHV0aWxpemUgYGxpYmV0aGAsIGl0J3Mgc3RyaWN0bHkgSW50ZWwgRXRoZXJuZXQuIEFuZCBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzLCBsaWtlIGBpNDBlYCwgYGlhdmZgLCBgaWNlYCwgYW5kIGBpZHBmYCwgaW5oZXJlbnRseSBkZXBlbmQgb24gcGh5c2ljYWwgaGFyZHdhcmUsIG5vdCB0aGUgZW11bGF0ZWQgbmV0d29yayBjYXJkcyBhdmFpbGFibGUgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudC4gVGhlcmVmb3JlLCBhbnkgY29kZSBtb2RpZmljYXRpb25zIHdpdGhpbiB0aG9zZSBkcml2ZXJzIGFyZSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cblxuSSBkaWQsIGhvd2V2ZXIsIG5lZWQgdG8gY29uZmlybSB0aGF0IGBpYXZmYCBjb3VsZCBub3QgYmUgZnV6emVkIGluIGEgc3BlY2lmaWMgY2lyY3Vtc3RhbmNlLiBJIHJlbWVtYmVyZWQgdGhhdCBzeXprYWxsZXIgaGFzIHNvbWUgbWVjaGFuaXNtcyBmb3IgZnV6emluZyBQQ0kgZGV2aWNlcyB2aWEgYHN5el9wY2lfZGV2aWNlYCwgYnV0IHRoYXQgd291bGQgZGVwZW5kIG9uIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgdGhlIFBDSSBkZXZpY2UncyBCQVJzIGFuZCByZWdpc3RlcnMuIEV2ZW4gaWYgdGhhdCB3ZXJlIHBvc3NpYmxlLCB0aGUgcHJvbXB0IGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgcGF0Y2hlcyBtb2RpZnlpbmcgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IG5lZWQgcGh5c2ljYWwgaGFyZHdhcmUgYXJlIG5vdCB0byBiZSBjb25zaWRlcmVkIGZ1enphYmxlIGluIGEgc3RhbmRhcmQgUUVNVSBlbnZpcm9ubWVudC4gVGhlIGV4Y2x1c2lvbiBjcml0ZXJpYSBpcyB2ZXJ5IGNsZWFyOiB0aGlzIGluY2x1ZGVzIGRyaXZlcnMgbGlrZSBJbnRlbCBFdGhlcm5ldCBkcml2ZXJzIChgaWF2ZmAsIGBpY2VgLCBldGMuKS4gVGhlc2UgSW50ZWwgZHJpdmVycyAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUsIGFuZCBhcmVuJ3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4gVGhpcyBwYXRjaCBoaXRzIHRoYXQgc3BlY2lmaWMgZXhjbHVzaW9uIGNyaXRlcmlhIGRpcmVjdGx5LlxuXG5HaXZlbiBhbGwgb2YgdGhhdCwgSSBjYW4gZGVmaW5pdGl2ZWx5IHN0YXRlIHRoYXQgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCksIHdoaWNoIGFyZSBib3RoIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCBhcmUgZGVwZW5kZW50IG9uIHBoeXNpY2FsIEludGVsIG5ldHdvcmsgaGFyZHdhcmUsIGFuZCBub3QgZW11bGF0ZWQgaW4gZW52aXJvbm1lbnRzIGxpa2UgUUVNVS4gVGhhdCdzIG15IHJlYXNvbmluZy5cblxuTXkgZmluYWwgcmVwb3J0IHdpbGwgYmU6XG4qICAgUmVhc29uaW5nOiBUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIEludGVsIEFkYXB0aXZlIFZpcnR1YWwgRnVuY3Rpb24gKGlhdmYpIEV0aGVybmV0IGRyaXZlciBhbmQgdGhlIEludGVsIEV0aGVybmV0IGxpYnJhcnkgKGxpYmV0aCkuIFRoZXNlIGFyZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBkcml2ZXJzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBJbnRlbCBuZXR3b3JrIGhhcmR3YXJlLCB3aGljaCBpcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVSBvciBHQ0UgZW52aXJvbm1lbnRzLiBUaGVyZWZvcmUsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSB1bnJlYWNoYWJsZSBkdXJpbmcgZnV6emluZy5cbiogICBXb3J0aEZ1enppbmc6IGZhbHNlXG4qICAgRm9jdXNTeW1ib2xzOiBcXFsgXVxuKiAgIEVuYWJsZUNvbmZpZ3M6IFxcWyBdXG5cbkkgY2FuIG5vdyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2MjQyLCJPdXRwdXRUb2tlbnMiOjk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAxVDE5OjI0OjU2LjQ4ODkzNDkzNVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBJbnRlbCBBZGFwdGl2ZSBWaXJ0dWFsIEZ1bmN0aW9uIChpYXZmKSBFdGhlcm5ldCBkcml2ZXIgYW5kIHRoZSBJbnRlbCBFdGhlcm5ldCBsaWJyYXJ5IChsaWJldGgpLiBUaGVzZSBhcmUgdmVuZG9yLXNwZWNpZmljIFBDSWUgZHJpdmVycyB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgSW50ZWwgbmV0d29yayBoYXJkd2FyZSwgd2hpY2ggaXMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUgb3IgR0NFIGVudmlyb25tZW50cy4gVGhlcmVmb3JlLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgdW5yZWFjaGFibGUgZHVyaW5nIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgSW50ZWwgQWRhcHRpdmUgVmlydHVhbCBGdW5jdGlvbiAoaWF2ZikgRXRoZXJuZXQgZHJpdmVyIGFuZCB0aGUgSW50ZWwgRXRoZXJuZXQgbGlicmFyeSAobGliZXRoKS4gVGhlc2UgYXJlIHZlbmRvci1zcGVjaWZpYyBQQ0llIGRyaXZlcnMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEludGVsIG5ldHdvcmsgaGFyZHdhcmUsIHdoaWNoIGlzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VIG9yIEdDRSBlbnZpcm9ubWVudHMuIFRoZXJlZm9yZSwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIHVucmVhY2hhYmxlIGR1cmluZyBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowh2949[1] Phase: Running StartedAt: 2026-08-01 19:25:07 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowh2949[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-01 19:25:07 +0000 UTC FinishedAt: 2026-08-01 19:25:13 +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,}