Name: series-workflowmxmng Phase: Failed StartedAt: 2026-09-08 00:34:11 +0000 UTC FinishedAt: 2026-09-08 00:37:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmng[0] Phase: Succeeded StartedAt: 2026-09-08 00:34:11 +0000 UTC FinishedAt: 2026-09-08 00:37:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmng[0].run-triage Phase: Succeeded StartedAt: 2026-09-08 00:34:11 +0000 UTC FinishedAt: 2026-09-08 00:37:14 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNoaXAgcmVzZXQgbG9naWMgKHJ0bDgzNjVtYl9yZXNldF9jaGlwKSBpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDcyBjb25uZWN0ZWQgb3ZlciBNRElPIG9yIFNNSSBidXNlcywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvS1ZNIG9uIGFtZDY0KSB1c2VkIGJ5IHN5emthbGxlci4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIyZmQ2NzM3ODFmOGJkN2NkMGViZmFjNWM5YTI5OWQxYTdmMmRjNjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDAwOjM2OjIzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jXG5pbmRleCA3MjgyMzFkOGY5NGNhLi41MDhlMWJlYThmYzVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuQEAgLTEzNiw2ICYjNDM7MTM2LDkgQEBcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0tcdDB4MDAwMlxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1x0MHgwMDAxXG4gXG4mIzQzOy8qIFRpbWUgdGhlIGNoaXAgbmVlZHMgdG8gY29tcGxldGUgYSByZXNldCwgcGVyIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiAqL1xuJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVNcdDEwMDBcbiYjNDM7XG4gLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcdDB4MTEwMFxuICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLXHQweDAwMDFcbkBAIC0yOTgwLDE4ICYjNDM7Mjk4MywzOCBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zd2l0Y2hfaW5pdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuIFxuIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiB7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBkZWFkbGluZTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHJlbWFpbmluZztcbiBcdHUzMiB2YWw7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrKHByaXYsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRyxcbiBcdFx0XHQgICAgICBGSUVMRF9QUkVQKFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0ssIDEpKTtcbiBcbiYjNDM7XHRkZWFkbGluZSA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTtcbiYjNDM7XG4gXHQvKiBSZWFsdGVrIGRvY3VtZW50YXRpb24gc2F5cyB0aGUgY2hpcCBuZWVkcyAxIHNlY29uZCB0byByZXNldC4gU2xlZXBcbiBcdCAqIGZvciAxMDAgbXMgYmVmb3JlIGFjY2Vzc2luZyBhbnkgcmVnaXN0ZXJzIHRvIHByZXZlbnQgQUNLIHRpbWVvdXRzLlxuIFx0ICovXG4gXHRtc2xlZXAoMTAwKTtcbi1cdHJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VtYXAsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRywgdmFsLFxuLVx0XHRcdFx0XHQhKHZhbCBcdTAwMjYgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSyksXG4tXHRcdFx0XHRcdDIwMDAwLCAxZTYpO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsXG4mIzQzO1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcbiYjNDM7XHRcdFx0XHQgICAgICAgMjAwMDAsIDFlNik7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBiaXQgY2xlYXJpbmcgb25seSBtZWFucyB0aGUgcmVzZXQgd2FzIGFjY2VwdGVkLCBub3QgdGhhdCB0aGVcbiYjNDM7XHQgKiBjaGlwIGlzIHJlYWR5OiByZWdpc3RlciB3cml0ZXMgaXNzdWVkIGJlZm9yZSB0aGUgZG9jdW1lbnRlZCByZXNldFxuJiM0MztcdCAqIHRpbWUgaGFzIGVsYXBzZWQgYXJlIHNpbGVudGx5IGRyb3BwZWQgYnkgYmxvY2tzIHRoYXQgYXJlIHN0aWxsXG4mIzQzO1x0ICogY29taW5nIHVwLCB3aGljaCBsZWF2ZXMgdGhlIHN3aXRjaCBoYWxmIGNvbmZpZ3VyZWQuIFdhaXQgb3V0XG4mIzQzO1x0ICogd2hhdGV2ZXIgaXMgbGVmdCBvZiB0aGF0IHNlY29uZCwgbWVhc3VyZWQgZnJvbSB0aGUgcmVzZXQgd3JpdGUsIHNvXG4mIzQzO1x0ICogdGhlIHBvbGwgYWJvdmUgZG9lcyBub3QgYWRkIHRvIHRoZSB0b3RhbC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZW1haW5pbmcgPSBkZWFkbGluZSAtIGppZmZpZXM7XG4mIzQzO1x0aWYgKChsb25nKXJlbWFpbmluZyBcdTAwM2UgMClcbiYjNDM7XHRcdG1zbGVlcChqaWZmaWVzX3RvX21zZWNzKHJlbWFpbmluZykpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MzY1bWJfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjaGlwIHJlc2V0IGxvZ2ljIChydGw4MzY1bWJfcmVzZXRfY2hpcCkgaW4gdGhlIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggQVNJQ3MgY29ubmVjdGVkIG92ZXIgTURJTyBvciBTTUkgYnVzZXMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0tWTSBvbiBhbWQ2NCkgdXNlZCBieSBzeXprYWxsZXIuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMmZkNjczNzgxZjhiZDdjZDBlYmZhYzVjOWEyOTlkMWE3ZjJkYzY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAwMDozNjoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jCmluZGV4IDcyODIzMWQ4Zjk0Y2EuLjUwOGUxYmVhOGZjNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYwpAQCAtMTM2LDYgJiM0MzsxMzYsOSBAQAogI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9TV19NQVNLCTB4MDAwMgogI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLCTB4MDAwMQogCiYjNDM7LyogVGltZSB0aGUgY2hpcCBuZWVkcyB0byBjb21wbGV0ZSBhIHJlc2V0LCBwZXIgUmVhbHRlayBkb2N1bWVudGF0aW9uICovCiYjNDM7I2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TCTEwMDAKJiM0MzsKIC8qIEludGVycnVwdCBwb2xhcml0eSByZWdpc3RlciAqLwogI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUcJMHgxMTAwCiAjZGVmaW5lICAgUlRMODM2NU1CX0lOVFJfUE9MQVJJVFlfTUFTSwkweDAwMDEKQEAgLTI5ODAsMTggJiM0MzsyOTgzLDM4IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpCiAKIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdikKIHsKJiM0MzsJdW5zaWduZWQgbG9uZyBkZWFkbGluZTsKJiM0MzsJdW5zaWduZWQgbG9uZyByZW1haW5pbmc7CiAJdTMyIHZhbDsKJiM0MzsJaW50IHJldDsKIAogCXByaXYtJmd0O3dyaXRlX3JlZ19ub2Fjayhwcml2LCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsCiAJCQkgICAgICBGSUVMRF9QUkVQKFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0ssIDEpKTsKIAomIzQzOwlkZWFkbGluZSA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTsKJiM0MzsKIAkvKiBSZWFsdGVrIGRvY3VtZW50YXRpb24gc2F5cyB0aGUgY2hpcCBuZWVkcyAxIHNlY29uZCB0byByZXNldC4gU2xlZXAKIAkgKiBmb3IgMTAwIG1zIGJlZm9yZSBhY2Nlc3NpbmcgYW55IHJlZ2lzdGVycyB0byBwcmV2ZW50IEFDSyB0aW1lb3V0cy4KIAkgKi8KIAltc2xlZXAoMTAwKTsKLQlyZXR1cm4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O21hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsCi0JCQkJCSEodmFsICZhbXA7IFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0spLAotCQkJCQkyMDAwMCwgMWU2KTsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O21hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsCiYjNDM7CQkJCSAgICAgICAhKHZhbCAmYW1wOyBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSwKJiM0MzsJCQkJICAgICAgIDIwMDAwLCAxZTYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJLyogVGhlIGJpdCBjbGVhcmluZyBvbmx5IG1lYW5zIHRoZSByZXNldCB3YXMgYWNjZXB0ZWQsIG5vdCB0aGF0IHRoZQomIzQzOwkgKiBjaGlwIGlzIHJlYWR5OiByZWdpc3RlciB3cml0ZXMgaXNzdWVkIGJlZm9yZSB0aGUgZG9jdW1lbnRlZCByZXNldAomIzQzOwkgKiB0aW1lIGhhcyBlbGFwc2VkIGFyZSBzaWxlbnRseSBkcm9wcGVkIGJ5IGJsb2NrcyB0aGF0IGFyZSBzdGlsbAomIzQzOwkgKiBjb21pbmcgdXAsIHdoaWNoIGxlYXZlcyB0aGUgc3dpdGNoIGhhbGYgY29uZmlndXJlZC4gV2FpdCBvdXQKJiM0MzsJICogd2hhdGV2ZXIgaXMgbGVmdCBvZiB0aGF0IHNlY29uZCwgbWVhc3VyZWQgZnJvbSB0aGUgcmVzZXQgd3JpdGUsIHNvCiYjNDM7CSAqIHRoZSBwb2xsIGFib3ZlIGRvZXMgbm90IGFkZCB0byB0aGUgdG90YWwuCiYjNDM7CSAqLwomIzQzOwlyZW1haW5pbmcgPSBkZWFkbGluZSAtIGppZmZpZXM7CiYjNDM7CWlmICgobG9uZylyZW1haW5pbmcgJmd0OyAwKQomIzQzOwkJbXNsZWVwKGppZmZpZXNfdG9fbXNlY3MocmVtYWluaW5nKSk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYW5hbHl6ZSB0aGlzIG1vZGlmaWNhdGlvbiB0byBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBmdW5jdGlvbi4gRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHByZWNpc2VseSB3aGF0IHRoZSBgcnRsODM2NW1iYCBkcml2ZXIgZW50YWlscy4gSXMgdGhpcyBpbmRlZWQgYSBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlIChEU0EpIGRyaXZlciB0YXJnZXRpbmcgdGhvc2UgUmVhbHRlayBSVEw4MzY1TUIgLyBSVEw4MzY2UkIgZXRoZXJuZXQgc3dpdGNoIGNoaXBzPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgaXRzIHB1cnBvc2UgYW5kIGludGVuZGVkIGVudmlyb25tZW50LgoKSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIGJyb2FkZXIgY29udGV4dCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL2AuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXImIzM5O3MgcHJvYmluZyBtZWNoYW5pc20gYW5kIHVzYWdlIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIERTQSBmcmFtZXdvcmsuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBmb3IgbWUgaXMgd2hldGhlciB0aGlzIGRyaXZlciBuZWNlc3NpdGF0ZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgZm9yIG9wZXJhdGlvbiwgb3IgaWYgaXQmIzM5O3MgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSB3aXRoaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIgb3IgUUVNVS4gVGhhdCB3aWxsIGluZm9ybSBob3cgYWdncmVzc2l2ZWx5IHRvIHB1cnN1ZSB0aGlzLgoKVG8gZ2FpbiBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIHF1aWNrbHksIEnigJlsbCBsZXZlcmFnZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZWZmaWNpZW50bHkgZGlzc2VjdCB0aGUgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb25zLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBhc3Nlc3MgdGhlIHBhdGNoJiMzOTtzIGltcGFjdCBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGw4MzY1bWImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY3NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSAmIzQzOz0gcnRsODM2NW1iLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE5OnJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIwOlx0XHQgIHJ0bDgzNjVtYl90YWJsZS5vIFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMTpcdFx0ICBydGw4MzY1bWJfdmxhbi5vIFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMjpcdFx0ICBydGw4MzY1bWJfbDIubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjM6IyBlbmQgb2YgcnRsODM2NW1iLW9ianNcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg9MTkwPWV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjZyYl92YXJpYW50O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5MTpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjovKiBGb3J3YXJkaW5nIGFuZCBtdWx0aWNhc3QgZGF0YWJhc2UgaW50ZXJmYWNlIGZvciB0aGUgcnRsODM2NW1iIHN3aXRjaCBmYW1pbHlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMtICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy04LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTojaW5jbHVkZSBcJiMzNDtydGw4MzY1bWJfbDIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTA6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX3RhYmxlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ21hcC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo5MjpzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjX2tleSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy05My1cdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy05OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwMDpzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwMTpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWNfa2V5IGtleTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEwMi1cdHU4IHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTE0OnN0cnVjdCBydGw4MzY1bWJfbDJfbWNfa2V5IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExNS1cdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjItXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMjM6c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMjQ6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSBrZXk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjUtXHR1MTYgbWVtYmVyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEzNDpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfZGF0YV90b191Yyhjb25zdCB1MTYgKmRhdGEsIHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgKnVjKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTM1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xNjMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxNjQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl91YyAqdWMsIHUxNiAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjAyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjAzOnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGNvbnN0IHUxNiAqZGF0YSwgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMDQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjIzMTpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2wyX21jICptYywgdTE2ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjMyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yNjEtLypcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI2MjogKiBydGw4MzY1bWJfbDJfZ2V0X25leHRfdWMoKSAtIGdldCB0aGUgbmV4dCBVbmljYXN0IEwyIGVudHJ5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yNjMtICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgxLSAqKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4MjppbnQgcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkciwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODMtXHRcdFx0ICAgICBzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkgKmVudHJ5KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4NS1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg2Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4Ny1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODk6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjkwLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9SRUFELCBhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI5NjpcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX3VjKGRhdGEsIFx1MDAyNnVjKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMDU6aW50IHJ0bDgzNjVtYl9sMl9hZGRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMwOS1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzEwOlx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzExLVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzI4LVx0dWMuYWdlID0gMTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMyOTpcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFx1MDAyNnVjLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMzMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMzMS1cdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMzMjpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzMtXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM0NTppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0Ni1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzQ5LVx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNTA6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHVjID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNTEtXHR1MTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjAtXHR1Yy5hZ2UgPSAwO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzYxOlx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXHUwMDI2dWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2Ny1cdCAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzY4Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2OS1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFx1MDAyNmFkZHIsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzgzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mzg0OmludCBydGw4MzY1bWJfbDJfZmx1c2goc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIHUxNiB2aWQpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ0OC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ0OTppbnQgcnRsODM2NW1iX2wyX2FkZF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1MC1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDUzLVx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NTQ6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTUtXHR1MTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjUtXHRtYy5pc19zdGF0aWMgPSAxO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDY2Olx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY4LVx0LyogRmlyc3QgbG9vayBmb3IgYW4gZXhpc3RpbmcgZW50cnkgKHRvIGdldCBleGlzdGluZyBwb3J0IG1lbWJlcnMpICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0Njk6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDcwLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9SRUFELCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3NC1cdFx0LyogVGhlcmUgaXMgYWxyZWFkeSBhbiBlbnRyeS4uLiAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDc1Olx0XHRydGw4MzY1bWJfbDJfZGF0YV90b19tYyhkYXRhLCBcdTAwMjZtYyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzYtXHRcdGRldl9kYmcocHJpdi1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDg5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDkwOlx0XHRydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShcdTAwMjZtYywgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00OTEtXHR9IGVsc2UgaWYgKHJldCA9PSAtRU5PRU5UKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTA3LVx0LyogYWRkIHRoZSBuZXcgZW50cnkgb3IgdXBkYXRlIGFuIGV4aXN0aW5nIG9uZSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTA4Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwOS1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFx1MDAyNmFkZHIsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTE5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTIwOmludCBydGw4MzY1bWJfbDJfZGVsX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTIxLVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjQtXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyNTpcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgbWMgPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyNi1cdHUxNiBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMS1cdG1jLmtleS5pdmwgPSB0cnVlO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTMyOlx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTMzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM0LVx0LyogRmlyc3QgbG9vayBmb3IgYW4gZXhpc3RpbmcgZW50cnkgKHRvIGdldCBleGlzdGluZyBwb3J0IG1lbWJlcnMpICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MzU6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM2LVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9SRUFELCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU0OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU1MDpcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGRhdGEsIFx1MDAyNm1jKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU1MS1cdGRldl9kYmcocHJpdi1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY3LVx0fVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTY4Olx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcwLVx0LyogdXBkYXRlIHRoZSBleGlzdGluZyBlbnRyeS4gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU3MTpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NzItXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0zLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoxNTppbnQgcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkciwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xNi1cdFx0XHQgICAgIHN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSAqZW50cnkpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTc6aW50IHJ0bDgzNjVtYl9sMl9hZGRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xOC1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbc3RhdGljIEVUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE5LVx0XHRcdHUxNiBlZmlkLCB1MTYgdmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjIwOmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjEtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yMi1cdFx0XHR1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMzppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjU6aW50IHJ0bDgzNjVtYl9sMl9hZGRfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNi1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNy1cdFx0XHR1MTYgdmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI4OmludCBydGw4MzY1bWJfbDJfZGVsX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjktXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQtICogcmVxdWlyZSB0aGUgcnRsODM2N2QgdmVuZG9yIGRyaXZlci4gV2l0aCBhbGwgdGhpcyB1bmNlcnRhaW50eSwgdGhlIGRyaXZlciBoYXNcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU6ICogYmVlbiBtb2Rlc3RseSBuYW1lZCBydGw4MzY1bWIuIEZ1dHVyZSBpbXBsZW1lbnRvcnMgbWF5IHdpc2ggdG8gcmVuYW1lIHRoaW5nc1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02Ni0gKiBhY2NvcmRpbmdseS5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwOS0jaW5jbHVkZSBcJiMzNDtydGw4M3h4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTEwOiNpbmNsdWRlIFwmIzM0O3J0bDgzNjVtYl9sMi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTojaW5jbHVkZSBcJiMzNDtydGw4MzY1bWJfdmxhbi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI1OS0gKiAzLWJpdCBNU0IgZmllbGQgKENUUkwxKS4gVGhlIGNoaXAgcmVzZXRzIHRoZW0gdG8gMHgxRkZGRjsgc2VlXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2MDogKiBydGw4MzY1bWJfc2RzX3JhaXNlX3JhdGVfbGltaXRzKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI2MS0gKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQyNy0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfTUFDX0xPT1BCQUNLX01BU0tcdFx0MHgwMDQwXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQyODovKiBTZWUgXHUwMDI2cnRsODM2NW1iX3ZsYW5fZWdyZXNzX21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDI5LSNkZWZpbmUgICBSVEw4MzY1TUJfUE9SVF9NSVNDX0NGR19WTEFOX0VHUkVTU19NT0RFX01BU0tcdFx0MHgwMDMwXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzItLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQzMzogKiBlbnVtIHJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlIC0gcG9ydCBWTEFOIGVncmVzcyBtb2RlXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQzNC0gKiBAUlRMODM2NU1CX1ZMQU5fRUdSRVNTX01PREVfT1JJR0lOQUw6IGZvbGxvdyB1bnRhZyBtYXNrIGluIFZMQU40ayB0YWJsZSBlbnRyeVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDQyLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0NDM6ZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0NC1cdFJUTDgzNjVNQl9WTEFOX0VHUkVTU19NT0RFX09SSUdJTkFMID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NDg3OmVudW0gcnRsODM2NW1iX21pYl9jb3VudGVyX2luZGV4IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDg4LVx0UlRMODM2NU1CX01JQl9pZkluT2N0ZXRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTQ4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NDk6c3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1MC1cdHUzMiBvZmZzZXQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjU1ODpzdGF0aWMgc3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciBydGw4MzY1bWJfbWliX2NvdW50ZXJzW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1OS1cdFJUTDgzNjVNQl9NQUtFX01JQl9DT1VOVEVSKDAsIDQsIGlmSW5PY3RldHMpLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjE4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MTk6c3RhdGljX2Fzc2VydChBUlJBWV9TSVpFKHJ0bDgzNjVtYl9taWJfY291bnRlcnMpID09IFJUTDgzNjVNQl9NSUJfRU5EKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjIwLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MjE6c3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjIyLVx0dTE2IHJlZztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyNi0vKiBMaWZ0ZWQgZnJvbSB0aGUgdmVuZG9yIGRyaXZlciBzb3VyY2VzICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYyNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjI4LVx0eyAweDEzRUIsIDB4MTVCQiB9LCB7IDB4MTMwMywgMHgwNkQ2IH0sIHsgMHgxMzA0LCAweDA3MDAgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjM2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX2luaXRfamFtX2NvbW1vbltdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzctXHR7IDB4MTIwMCwgMHg3RkNCIH0sIHsgMHgwODg0LCAweDAwMDMgfSwgeyAweDA2RUIsIDB4MDAwMSB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQ2LSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDc6ICogcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oKS5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQ4LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDk6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9zZ21paVtdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NTAtXHR7IDB4MDQ4MCwgMHgwNEQ3IH0sIHsgMHgwNDgxLCAweEY5OTQgfSwgeyAweDA0ODIsIDB4MjQyMCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjU4LSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NTk6ICogcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oKS5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYwLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NjE6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWlbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYyLVx0eyAweDA1MDAsIDB4ODJGMCB9LCB7IDB4MDUwMSwgMHhGMTk1IH0sIHsgMHgwNTAyLCAweDMxQTIgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2Ni1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjY3OmVudW0gcnRsODM2NW1iX3BoeV9pbnRlcmZhY2VfbW9kZSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2OC1cdFJUTDgzNjVNQl9QSFlfSU5URVJGQUNFX01PREVfSU5WQUwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjc4LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Nzk6ICogc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgLSBleHRlcm5hbCBpbnRlcmZhY2UgaW5mb1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODAtICogQHBvcnQ6IHRoZSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODQtICogUmVwcmVzZW50cyBhIG1hcHBpbmc6IHBvcnQgLVx1MDAzZSB7IGlkLCBzdXBwb3J0ZWRfaW50ZXJmYWNlcyB9LiBUbyBiZSBlbWJlZGRlZFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2ODU6ICogaW4gXHUwMDI2c3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gZm9yIGV2ZXJ5IHBvcnQgd2l0aCBhbiBleHRlcm5hbCBpbnRlcmZhY2UuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4Ni0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg3OnN0cnVjdCBydGw4MzY1bWJfZXh0aW50IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg4LVx0aW50IHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02OTMtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY5NDogKiBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAtIHN0YXRpYyBjaGlwLXNwZWNpZmljIGluZm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk1LSAqIEBuYW1lOiBodW1hbi1yZWFkYWJsZSBjaGlwIG5hbWVcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwMy0gKiBieSB0aGlzIGRyaXZlci4gV2hlbiBhZGRpbmcgc3VwcG9ydCBmb3IgYW5vdGhlciBjaGlwIGluIHRoZSBmYW1pbHksIGEgbmV3XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwNDogKiBjaGlwIGluZm8gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBydGw4MzY1bWJfY2hpcF9pbmZvcyBhcnJheS5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA1LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDY6c3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDctXHRjb25zdCBjaGFyICpuYW1lO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA5LVx0dTMyIGNoaXBfdmVyO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MTA6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCBleHRpbnRzW1JUTDgzNjVNQl9NQVhfTlVNX0VYVElOVFNdO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MTE6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgKmphbV90YWJsZTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzEyLVx0c2l6ZV90IGphbV9zaXplO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE2LSNkZWZpbmUgUEhZX0lOVEYoX21vZGUpIChSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFXyAjIyBfbW9kZSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyBydGw4MzY1bWJfY2hpcF9pbmZvc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MTgtXHR7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MjUtXHRcdH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcyNjpcdFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcyNzpcdFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzI4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTczNy1cdFx0fSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzM4Olx0XHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzM5Olx0XHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NDAtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzUxLVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NTI6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NTM6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc1NC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjQtXHRcdH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc2NTpcdFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc2NjpcdFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY3LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzcwOmVudW0gcnRsODM2NW1iX3N0cF9zdGF0ZSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3MS1cdFJUTDgzNjVNQl9TVFBfU1RBVEVfRElTQUJMRUQgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzc2LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Nzc6ZW51bSBydGw4MzY1bWJfY3B1X2luc2VydCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3OC1cdFJUTDgzNjVNQl9DUFVfSU5TRVJUX1RPX0FMTCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODItXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc4MzplbnVtIHJ0bDgzNjVtYl9jcHVfcG9zaXRpb24ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODQtXHRSVEw4MzY1TUJfQ1BVX1BPU19BRlRFUl9TQSA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc4ODplbnVtIHJ0bDgzNjVtYl9jcHVfZm9ybWF0IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg5LVx0UlRMODM2NU1CX0NQVV9GT1JNQVRfOEJZVEVTID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5Mi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzkzOmVudW0gcnRsODM2NW1iX2NwdV9yeGxlbiB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5NC1cdFJUTDgzNjVNQl9DUFVfUlhMRU5fNzJCWVRFUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTgtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc5OTogKiBzdHJ1Y3QgcnRsODM2NW1iX2NwdSAtIENQVSBwb3J0IGNvbmZpZ3VyYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODAwLSAqIEBlbmFibGU6IGVuYWJsZS9kaXNhYmxlIGhhcmR3YXJlIGluc2VydGlvbiBvZiBDUFUgdGFnIGluIHN3aXRjaC1cdTAwM2VDUFUgZnJhbWVzXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTAtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxMTpzdHJ1Y3QgcnRsODM2NW1iX2NwdSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxMi1cdGJvb2wgZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODE0LVx0dTMyIHRyYXBfcG9ydDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE1Olx0ZW51bSBydGw4MzY1bWJfY3B1X2luc2VydCBpbnNlcnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNjpcdGVudW0gcnRsODM2NW1iX2NwdV9wb3NpdGlvbiBwb3NpdGlvbjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE3Olx0ZW51bSBydGw4MzY1bWJfY3B1X3J4bGVuIHJ4X2xlbmd0aDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE4Olx0ZW51bSBydGw4MzY1bWJfY3B1X2Zvcm1hdCBmb3JtYXQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxOS19O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODIxLS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MjI6ICogc3RydWN0IHJ0bDgzNjVtYl9wb3J0IC0gcHJpdmF0ZSBwZXItcG9ydCBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMy0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODI0LSAqIEBpbmRleDogRFNBIHBvcnQgaW5kZXgsIHNhbWUgYXMgZHNhX3BvcnQ6OmluZGV4XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNTogKiBAc3RhdHM6IGxpbmsgc3RhdGlzdGljcyBwb3B1bGF0ZWQgYnkgcnRsODM2NW1iX3N0YXRzX3BvbGwsIHJlYWR5IGZvciBhdG9taWNcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI2OiAqICAgICAgICAgYWNjZXNzIHZpYSBydGw4MzY1bWJfZ2V0X3N0YXRzNjRcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODI3LSAqIEBzdGF0c19sb2NrOiBwcm90ZWN0IHRoZSBzdGF0cyBzdHJ1Y3R1cmUgZHVyaW5nIHJlYWQvdXBkYXRlXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjktICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgzMDpzdHJ1Y3QgcnRsODM2NW1iX3BvcnQge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MzEtXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODM4LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4Mzk6ICogc3RydWN0IHJ0bDgzNjVtYiAtIGRyaXZlciBwcml2YXRlIGRhdGFcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODQwLSAqIEBwcml2OiBwb2ludGVyIHRvIHBhcmVudCByZWFsdGVrX3ByaXYgZGF0YVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODUxLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTI6c3RydWN0IHJ0bDgzNjVtYiB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1My1cdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1NC1cdGludCBpcnE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NTpcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvICpjaGlwX2luZm87XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NjpcdHN0cnVjdCBydGw4MzY1bWJfY3B1IGNwdTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODU3LVx0c3RydWN0IG11dGV4IG1pYl9sb2NrO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTg6XHRzdHJ1Y3QgcnRsODM2NW1iX3BvcnQgcG9ydHNbUlRMODM2NU1CX01BWF9OVU1fUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTktXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODYyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjM6I2RlZmluZSBwY3NfdG9fcnRsODM2NW1iKF9wY3MpIGNvbnRhaW5lcl9vZigoX3BjcyksIHN0cnVjdCBydGw4MzY1bWIsIHBjcylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODY0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjU6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODczLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NzQ6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg3NS1cdFx0XHRcdCAgICAgdTMyIG9jcF9hZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTAzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MDQ6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNS1cdFx0XHRcdCAgdTMyIG9jcF9hZGRyLCB1MTYgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkxMjpcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTY6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTI5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MzA6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk0Ny1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTQ4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3Bfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTQ5LVx0XHRcdFx0ICAgdTMyIG9jcF9hZGRyLCB1MTYgZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTU2Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk2MDpcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3ByZXBhcmUocHJpdiwgcGh5LCBvY3BfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk2MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NzktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk4MDpcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05ODEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTg5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5OTA6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTkxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMDMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMDQ6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9yZWFkKHByaXYsIHBoeSwgb2NwX2FkZHIsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMDUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDE3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDE4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDE5LVx0XHRcdCAgICAgICB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAzMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAzMjpcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHByaXYsIHBoeSwgb2NwX2FkZHIsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMzMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNDc6cnRsODM2NW1iX2dldF9wb3J0X2V4dGludChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA0OC17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNDk6XHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHByaXYtXHUwMDNlY2hpcF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDUwLVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDUyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRMODM2NU1CX01BWF9OVU1fRVhUSU5UUzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA1MzpcdFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludCA9XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNTQtXHRcdFx0XHUwMDI2bWItXHUwMDNlY2hpcF9pbmZvLVx1MDAzZWV4dGludHNbaV07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0xMDY2PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA2NzpydGw4MzY1bWJfZ2V0X3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDY4LVx0XHRcdCAgIGVudW0gZHNhX3RhZ19wcm90b2NvbCBtcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNzAtXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA3MTpcdHN0cnVjdCBydGw4MzY1bWJfY3B1ICpjcHU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzI6XHRzdHJ1Y3QgcnRsODM2NW1iICptYjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODItXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODM6c3RhdGljIGludCBydGw4MzY1bWJfZXh0X2NvbmZpZ19yZ21paShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4NC1cdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODUte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDg2Olx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludCA9XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODc6XHRcdHJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQocHJpdiwgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODgtXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBcdTAwMjZwcml2LVx1MDAzZWRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTExNS1cdCAqIGZvcmNpbmcgdGhlIGV4dGVybmFsIGludGVyZmFjZSBpbnRvIGEgcGFydGljdWxhciBtb2RlLCB3aGljaCBpcyBkb25lXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTY6XHQgKiBpbiB0aGUgcnRsODM2NW1iX3BoeWxpbmtfbWFjX2xpbmtfe3VwLGRvd259IGZ1bmN0aW9ucy5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTExNy1cdCAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTY0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTY1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc193cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgYWRkciwgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExNjYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE4NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE4NjpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcmVhZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgYWRkciwgdTE2ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTg3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyMjctICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMjg6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3Byb2JlX29wdGlvbihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI5LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTIzMDpcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcHJpdi1cdTAwM2VjaGlwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMzE6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjMyLVx0dTMyIG9wdGlvbjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNzMtICogdGhlaXIgbWF4aW11bSBpbiBpdHMgc3dpdGNoIGluaXQsIHVuY29uZGl0aW9uYWxseSBmb3IgdGhlIHdob2xlIGNoaXBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI3NDogKiBmYW1pbHkuIFRoZSBjaGlwIHJlc2V0IGluIHJ0bDgzNjVtYl9zZXR1cCgpIHB1dHMgdGhlbSBiYWNrIHRvIHRoZWlyIHJlc2V0XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNzUtICogZGVmYXVsdCBvZiAweDFGRkZGLCBhIH4xLjA0OCBHYnBzIGxpbWl0IHdoaWNoIGNhcHMgdGhlIGFnZ3JlZ2F0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI4Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI4MzpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcmFpc2VfcmF0ZV9saW1pdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI4NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzA4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzA5OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxMC1cdFx0XHRcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzEzLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMxNDpcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqc2RzX2phbTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxNS1cdGNvbnN0IGludCBpZCA9IFJUTDgzNjVNQl9TRFNfRVhUX0lOVEVSRkFDRV9JRDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMxNjpcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcGNzX3RvX3J0bDgzNjVtYihwY3MpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzE3LVx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMjYtXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMyNzpcdFx0c2RzX2phbSA9IHJ0bDgzNjVtYl9zZHNfamFtX2hzZ21paTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMyODpcdFx0c2RzX2phbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfc2RzX2phbV9oc2dtaWkpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzI5LVx0XHRtb2RlID0gUlRMODM2NU1CX0VYVF9QT1JUX01PREVfSFNHTUlJO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzMwLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMzMTpcdFx0c2RzX2phbSA9IHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzMyOlx0XHRzZHNfamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzMy1cdFx0bW9kZSA9IFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1NHTUlJO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM2My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNkc19qYW1fc2l6ZTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTM2NDpcdFx0cmV0ID0gcnRsODM2NW1iX3Nkc193cml0ZShwcml2LCBzZHNfamFtW2ldLnJlZyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM2NS1cdFx0XHRcdFx0ICBzZHNfamFtW2ldLnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzkwLVx0ICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzOTE6XHRyZXQgPSBydGw4MzY1bWJfc2RzX3dyaXRlKHByaXYsIFJUTDgzNjVNQl9TRFNfUkVHX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzkyLVx0XHRcdFx0ICBSVEw4MzY1TUJfU0RTX1JFU0VUX0RFQVNTRVJUKTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTg5MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHJ0bDgzNjVtYmAgcHJvYmUgcHJvY2Vzcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBwaW5wb2ludCBob3cgdGhpcyBzcGVjaWZpYyBkcml2ZXIgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIHN5c3RlbS4gVG8gZG8gdGhhdCBlZmZpY2llbnRseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIGNyaXRpY2FsIHJlZ2lzdHJhdGlvbiBwb2ludHMgYXJlLCBzbyBJJiMzOTtsbCBzdGFydCBieSBmb2N1c2luZyBteSBzZWFyY2ggb24gdGhlIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGRpcmVjdG9yeS4KCkkmIzM5O2xsIGJlIHVzaW5nIGBncmVwYCB0byBmaW5kIGluc3RhbmNlcyBvZiBgcnRsODM2NW1iX3ZhcmlhbnRgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgdGhlIHZhcmlhbnQtc3BlY2lmaWMgY29kZSBsaXZlcywgYW5kIGhvcGVmdWxseSwgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBiYWNrIGZyb20gdGhlcmUgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIGl0c2VsZi4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBgcnRsODM2NW1iX3ZhcmlhbnRgIHRvIGJlIGEga2V5IGVsZW1lbnQgZm9yIGlkZW50aWZ5aW5nIHRoZSBoYXJkd2FyZSBhbmQgaW5zdGFudGlhdGluZyB0aGUgY29ycmVjdCBkcml2ZXIuIEZyb20gdGhlcmUsIEkgY2FuIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIG1vZHVsZSBhbmQgdGhlIHByb2JlIGFyZSByZWdpc3RlcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgzNjVtYl92YXJpYW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5MD1leHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTkyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM0MT1zdGF0aWMgY29uc3Qgc3RydWN0IHJlYWx0ZWtfb3BzIHJ0bDgzNjVtYl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMzYwOmNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQgPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNjEtXHQuZHNfb3BzID0gXHUwMDI2cnRsODM2NW1iX3N3aXRjaF9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzcwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ0bDgzNjVtYl9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMzcxOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsODM2NW1iXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnJ0bDgzNjVtYl92YXJpYW50LCB9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzcyLVx0eyAvKiBzZW50aW5lbCAqLyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTY1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgUlRMODM2NU1CIERyaXZlciBVc2FnZSBhbmQgUHJvYmluZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGlkZW50aWZ5IHByZWNpc2VseSB3aGljaCBkcml2ZXJzIGFyZSBsZXZlcmFnaW5nIHRoZSBgcnRsODM2NW1iX3ZhcmlhbnRgIGVudW1lcmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGBydGw4MzY1bWJgIGJhc2UgYW5kIGl0cyBzcGVjaWZpYyB2YXJpYW50cy4gS25vd2luZyB0aGUgdmFyaWFudHMgd2lsbCBnaXZlIG1lIGluc2lnaHRzIGludG8gc3BlY2lmaWMgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zLgoKVGhlbiwgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwcm9iaW5nIG1lY2hhbmlzbS4gSG93IGRvZXMgdGhlIHN5c3RlbSAqZmluZCogYW5kIGlkZW50aWZ5IHRoaXMgY2hpcD8gSSB3YW50IHRvIHRyYWNlIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIElzIGl0IGEgc3RhbmRhcmQgUENJL1NQSS9JMkMgZW51bWVyYXRpb24sIG9yIGlzIHRoZXJlIHNvbWV0aGluZyBtb3JlIGN1c3RvbSBnb2luZyBvbj8gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgZmxvdyB3aWxsIGJlIGNyaXRpY2FsIHRvIGFueSBkZWJ1Z2dpbmcgb3IgY3VzdG9taXphdGlvbiBJIG1pZ2h0IG5lZWQgdG8gZG8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXRlY3Rpb24gcHJvY2VzcyAtIHRoZSBjaGVja3MsIHRoZSByZWdpc3RlcnMgZXhhbWluZWQsIHRoZSBmYWxsYmFjayBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBpbW1lZGlhdGVseSBpZGVudGlmaWVkLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBxdWlya3Mgb3Igc3BlY2lmaWMgZmxhZ3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgaG93IHRoZSBjaGlwIGlzIGhhbmRsZWQuIEhvcGVmdWxseSwgdGhlIGNvbW1lbnRzIGFyZSBzdWZmaWNpZW50LCBidXQgSSYjMzk7bSBwcmVwYXJlZCB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBmbG93IG1ldGljdWxvdXNseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFfHJlYWx0ZWtfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1NjYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLKVx0XHQmIzQzOz0gcmVhbHRla19kc2Eub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrX2RzYS1vYmpzXHRcdFx0Oj0gcnRsODN4eC5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS00LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9NT1pZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjY6cmVhbHRla19kc2Etb2JqcyAmIzQzOz0gcmVhbHRlay1tZGlvLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTctZW5kaWZcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT05PWlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMDpyZWFsdGVrX2RzYS1vYmpzICYjNDM7PSByZWFsdGVrLXNtaS5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMS1lbmRpZlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDQ6c3RhdGljIGludCByZWFsdGVrX21kaW9fd3JpdGUodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDUte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDY6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3MjpzdGF0aWMgaW50IHJlYWx0ZWtfbWRpb19yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03My17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3NDpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03NS1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfbWRpb19pbmZvID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTA1Olx0LnJlZ19yZWFkID0gcmVhbHRla19tZGlvX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDY6XHQucmVnX3dyaXRlID0gcmVhbHRla19tZGlvX3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA3LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA5LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTEwOiAqIHJlYWx0ZWtfbWRpb19wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIE1ESU8tY29ubmVjdGVkIHN3aXRjaFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTExLSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSB0byBwcm9iZSBvbi5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjAtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjE6aW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjIte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTIzLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjQ6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI1LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEyNi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEyNzpcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXHUwMDI2cmVhbHRla19tZGlvX2luZm8pO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI4LVx0aWYgKElTX0VSUihwcml2KSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMzItXHRwcml2LVx1MDAzZW1kaW9fYWRkciA9IG1kaW9kZXYtXHUwMDNlYWRkcjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEzMzpcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE0Mi19XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDM6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19tZGlvX3Byb2JlLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDUtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDY6ICogcmVhbHRla19tZGlvX3JlbW92ZSgpIC0gUmVtb3ZlIHRoZSBkcml2ZXIgb2YgYW4gTURJTy1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDctICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHRvIGJlIHJlbW92ZWQuXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU0LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU1OnZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTYte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU3Olx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY1LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE2NjpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX21kaW9fcmVtb3ZlLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjgtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNjk6ICogcmVhbHRla19tZGlvX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgTURJTy1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzAtICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHNodXR0aW5nIGRvd24uXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTc3LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTc4OnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE3OS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxODA6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE4MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xODYtfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfbWRpb19zaHV0ZG93biwgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo4OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC05LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjEzOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxODppbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxOTp2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIwOnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTMyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0zNy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjQ3OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9jbGtfZGVsYXkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjUyOnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0YXJ0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTUzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTU4LVx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVx1MDAzZW1kaW8sIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo1OTpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Mi1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjYzOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02NC1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjY1Olx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTY4LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Njk6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTcwLVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRpbywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjcxOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03Mi1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjczOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03NC1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kaW8sIDEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjc3OnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0b3Aoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzgte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3OTpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODAtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODEtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4MjpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODMtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODQ6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg1LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODY6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg3LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODg6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg5LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkxLVx0LyogQWRkIGEgY2xpY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTI6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkzLVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTQ6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTk1LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTAyOnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGRhdGEsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMy17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwNC1cdGZvciAoOyBsZW4gXHUwMDNlIDA7IGxlbi0tKSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwNTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDgtXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kaW8sICEhKGRhdGEgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyAobGVuIC0gMSkpKSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwOTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTItXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExMzpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTQtXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExODpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9yZWFkX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGxlbiwgdTMyICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMjU6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI4LVx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMjk6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTMwLVx0XHR1ID0gISFncGlvZF9nZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEzOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTM5OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd2FpdF9mb3JfYWNrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNDYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE0NzpcdFx0cmVhbHRla19zbWlfcmVhZF9iaXRzKHByaXYsIDEsIFx1MDAyNmFjayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0OC1cdFx0aWYgKGFjayA9PSAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjA6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2MS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MjpcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgZGF0YSwgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MzpcdHJldHVybiByZWFsdGVrX3NtaV93YWl0X2Zvcl9hY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NC19XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTY2OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfYnl0ZV9ub2FjayhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjcte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjg6XHRyZWFsdGVrX3NtaV93cml0ZV9iaXRzKHByaXYsIGRhdGEsIDgpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTcyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9ieXRlMChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3Ni1cdC8qIFJlYWQgZGF0YSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNzc6XHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgOCwgXHUwMDI2dCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3OC1cdCpkYXRhID0gKHQgXHUwMDI2IDB4ZmYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgwLVx0LyogU2VuZCBhbiBBQ0sgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTgxOlx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCAweDAwLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTg1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxODY6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkX2J5dGUxKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xODcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkwLVx0LyogUmVhZCBkYXRhICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE5MTpcdHJlYWx0ZWtfc21pX3JlYWRfYml0cyhwcml2LCA4LCBcdTAwMjZ0KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkyLVx0KmRhdGEgPSAodCBcdTAwMjYgMHhmZik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTQtXHQvKiBTZW5kIGFuIEFDSyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxOTU6XHRyZWFsdGVrX3NtaV93cml0ZV9iaXRzKHByaXYsIDB4MDEsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MzIgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMDgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwOTpcdHJlYWx0ZWtfc21pX3N0YXJ0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMS1cdC8qIFNlbmQgUkVBRCBjb21tYW5kICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIxMjpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgcHJpdi1cdTAwM2V2YXJpYW50LVx1MDAzZWNtZF9yZWFkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxNi1cdC8qIFNldCBBRERSWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjE3Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjE4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMS1cdC8qIFNldCBBRERSWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyMjpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMjYtXHQvKiBSZWFkIERBVEFbNzowXSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMjc6XHRyZWFsdGVrX3NtaV9yZWFkX2J5dGUwKHByaXYsIFx1MDAyNmxvKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjI4LVx0LyogUmVhZCBEQVRBWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyOTpcdHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTEocHJpdiwgXHUwMDI2aGkpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzUtIG91dDpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjM2Olx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjM3LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcml2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjQyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0My1cdFx0XHRcdCB1MzIgYWRkciwgdTMyIGRhdGEsIGJvb2wgYWNrKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNTA6XHRyZWFsdGVrX3NtaV9zdGFydChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjUxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNTItXHQvKiBTZW5kIFdSSVRFIGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjUzOlx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBwcml2LVx1MDAzZXZhcmlhbnQtXHUwMDNlY21kX3dyaXRlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1Ny1cdC8qIFNldCBBRERSWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjU4Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2Mi1cdC8qIFNldCBBRERSWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI2MzpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjctXHQvKiBXcml0ZSBEQVRBWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjY4Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjY5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3My1cdGlmIChhY2spXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI3NDpcdFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFx1MDAzZVx1MDAzZSA4KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjc1LVx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNzY6XHRcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGVfbm9hY2socHJpdiwgZGF0YSBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yODItIG91dDpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjgzOlx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjg0LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcml2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjkzOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnX25vYWNrKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk0LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mjk1Olx0cmV0dXJuIHJlYWx0ZWtfc21pX3dyaXRlX3JlZyhjdHgsIHJlZywgdmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Ni19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAxLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzAyOlx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDQ6XHRyZXR1cm4gcmVhbHRla19zbWlfd3JpdGVfcmVnKHByaXYsIHJlZywgdmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA1LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA2LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDc6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwOC17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwOTpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzExOlx0cmV0dXJuIHJlYWx0ZWtfc21pX3JlYWRfcmVnKHByaXYsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEyLX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfc21pX2luZm8gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNTpcdC5yZWdfcmVhZCA9IHJlYWx0ZWtfc21pX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNjpcdC5yZWdfd3JpdGUgPSByZWFsdGVrX3NtaV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzE3LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTktLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMyMDogKiByZWFsdGVrX3NtaV9wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIFNNSS1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMyMS0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHRvIHByb2JlIG9uLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzMwLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzE6aW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMi17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMy1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzQ6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzUtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMzNzpcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXHUwMDI2cmVhbHRla19zbWlfaW5mbyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzOC1cdGlmIChJU19FUlIocHJpdikpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM1NDpcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19zbWlfd3JpdGVfcmVnX25vYWNrO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjMtfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNjQ6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfcHJvYmUsIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjYtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM2NzogKiByZWFsdGVrX3NtaV9yZW1vdmUoKSAtIFJlbW92ZSB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY4LSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2UgdG8gYmUgcmVtb3ZlZC5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3NS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzc2OnZvaWQgcmVhbHRla19zbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3Ny17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM3ODpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzc5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg2LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfc21pX3JlbW92ZSwgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM4OS0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzkwOiAqIHJlYWx0ZWtfc21pX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzkxLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc2h1dHRpbmcgZG93bi5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM5OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzk5OnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDAwLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NDAxOlx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDctfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo0MDg6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfc2h1dGRvd24sIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTM6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfc21pX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjE4OmludCByZWFsdGVrX3NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTk6dm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjIwOnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTIwPXN0cnVjdCBwaHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MjE6c3RydWN0IHJlYWx0ZWtfb3BzO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD00MT1zdHJ1Y3QgcnRsODM2Nl92bGFuXzRrIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNDctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NDg6c3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC00OS1cdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NTQ6c3RydWN0IHJlYWx0ZWtfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTUtXHRzdHJ1Y3QgZGV2aWNlXHRcdCpkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTgwLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjgxOlx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCAqdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC04Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtOTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6OTQ6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC05NS1cdGludFx0XHRcdCgqd3JpdGVfcmVnX25vYWNrKSh2b2lkICpjdHgsIHUzMiBhZGRyLCB1MzIgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNC0vKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwNTogKiBzdHJ1Y3QgcmVhbHRla19vcHMgLSB2dGFibGUgZm9yIHRoZSBwZXItU01JLWNoaXB0eXBlIG9wZXJhdGlvbnNcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDYtICogQGRldGVjdDogZGV0ZWN0cyB0aGUgY2hpcHR5cGVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDctICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA4OnN0cnVjdCByZWFsdGVrX29wcyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA5Olx0aW50XHQoKmRldGVjdCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEwOlx0aW50XHQoKnJlc2V0X2NoaXApKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExMTpcdGludFx0KCpzZXR1cCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEyOlx0aW50XHQoKmdldF9taWJfY291bnRlcikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMTMtXHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE1LVx0XHRcdFx0ICAgdTY0ICptaWJ2YWx1ZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTE2Olx0aW50XHQoKmdldF92bGFuX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgaW5kZXgsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE3LVx0XHRcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuX21jICp2bGFubWMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExODpcdGludFx0KCpzZXRfdmxhbl9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGluZGV4LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExOS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHJ0bDgzNjZfdmxhbl9tYyAqdmxhbm1jKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjA6XHRpbnRcdCgqZ2V0X3ZsYW5fNGspKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiB2aWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTIxLVx0XHRcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuXzRrICp2bGFuNGspO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyMjpcdGludFx0KCpzZXRfdmxhbl80aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMjMtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydGw4MzY2X3ZsYW5fNGsgKnZsYW40ayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI0Olx0aW50XHQoKmdldF9tY19pbmRleCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCAqdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjU6XHRpbnRcdCgqc2V0X21jX2luZGV4KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjY6XHRib29sXHQoKmlzX3ZsYW5fdmFsaWQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCB2bGFuKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjc6XHRpbnRcdCgqZW5hYmxlX3ZsYW4pKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjg6XHRpbnRcdCgqZW5hYmxlX3ZsYW40aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyOTpcdGludFx0KCplbmFibGVfcG9ydCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzA6XHRpbnRcdCgqcG9ydF9hZGRfaXNvbGF0aW9uKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzEtXHRcdFx0XHQgICAgICB1MzIgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTMyOlx0aW50XHQoKnBvcnRfcmVtb3ZlX2lzb2xhdGlvbikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTMzLVx0XHRcdFx0XHQgdTMyIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNDpcdGludFx0KCpwb3J0X3NldF9lZmlkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTMyIGVmaWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNTpcdGludFx0KCpwb3J0X3NldF9sZWFybmluZykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTM2LVx0XHRcdFx0ICAgICBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTM3Olx0aW50XHQoKnBvcnRfc2V0X3VjYXN0X2Zsb29kKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzgtXHRcdFx0XHRcdGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzk6XHRpbnRcdCgqcG9ydF9zZXRfbWNhc3RfZmxvb2QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0MC1cdFx0XHRcdFx0Ym9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0MTpcdGludFx0KCpwb3J0X3NldF9iY2FzdF9mbG9vZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQyLVx0XHRcdFx0XHRib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQzOlx0aW50XHQoKmwyX2FkZF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ0LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDUtXHRcdFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ2Olx0aW50XHQoKmwyX2RlbF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ3LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDgtXHRcdFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ5Olx0aW50XHQoKmwyX2dldF9uZXh0X3VjKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUwOlx0XHRcdFx0ICBpbnQgcG9ydCwgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUxOlx0aW50XHQoKmwyX2FkZF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTUyLVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUzOlx0aW50XHQoKmwyX2RlbF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTU0LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU1Olx0aW50XHQoKmwyX2ZsdXNoKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU2Olx0aW50XHQoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTc6XHRpbnRcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE1OC1cdFx0XHQgICAgIHUxNiB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTYxOnN0cnVjdCByZWFsdGVrX3ZhcmlhbnQge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2Mi1cdGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyAqZHNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2MzpcdGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyAqb3BzO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2NC1cdGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKnBoeWxpbmtfbWFjX29wcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTcxLS8qIFJUTDgzNjYgbGlicmFyeSBoZWxwZXJzICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTcyOmludCBydGw4MzY2X21jX2lzX3VzZWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IG1jX2luZGV4LCBpbnQgKnVzZWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3MzppbnQgcnRsODM2Nl9zZXRfdmxhbihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgdmlkLCB1MzIgbWVtYmVyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE3NC1cdFx0ICAgICB1MzIgdW50YWcsIHUzMiBmaWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3NTppbnQgcnRsODM2Nl9zZXRfcHZpZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNzYtXHRcdCAgICAgdW5zaWduZWQgaW50IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTc3OmludCBydGw4MzY2X2VuYWJsZV92bGFuNGsoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3ODppbnQgcnRsODM2Nl9lbmFibGVfdmxhbihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTc5OmludCBydGw4MzY2X3Jlc2V0X3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTgwLWludCBydGw4MzY2X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE4OD12b2lkIHJ0bDgzNjZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdWludDY0X3QgKmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NnJiX3ZhcmlhbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTkxOmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE5Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYz0yMzE9c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjU5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBSZWFsdGVrIERTQSBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMgbm93LCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYENPTkZJR19ORVRfRFNBX1JFQUxURUtgIGFuZCBgQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY1TUJgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZHJpdmVycyBhcmUgY29uZmlndXJlZCB3aXRoaW4gdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bSBsaWtlbHkgdHJ5aW5nIHRvIHRyYWNlIGRlcGVuZGVuY2llcywgZmluZCBvdXQgd2hhdCBvdGhlciBvcHRpb25zIHRoZXkgcmVseSBvbiwgYW5kIHVuZGVyc3RhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljLiBJcyBgUlRMODM2NU1CYCBhIHNwZWNpZmljIGNoaXA/IEkmIzM5O2xsIHByb2JhYmx5IGJlIGxvb2tpbmcgdG8gc2VlIGlmIGl0JiMzOTtzIGEgc3ViLW9wdGlvbiwgb3IgYSBnZW5lcmFsIGVuYWJsZW1lbnQgb3B0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgY29uZmlndXJhdGlvbiBpbnRlcmFjdHMgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMgb3IgcGxhdGZvcm0gZmVhdHVyZXMuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX1JFQUxURUsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MTY6aWYgTkVUX0RTQV9SRUFMVEVLXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxODpjb25maWcgTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTktXHRib29sIFwmIzM0O1JlYWx0ZWsgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI1OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfU01JXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjMyOmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfRFNBX1RBR19SVEw4XzRcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozOTpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODM2NlJCIHN3aXRjaCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDE6XHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19TTUkgfHwgTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDItXHRzZWxlY3QgTkVUX0RTQV9UQUdfUlRMNF9BXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDY6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cdGJvb2xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIChMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo1MDpcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy01MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFSylcdFx0JiM0Mzs9IHJlYWx0ZWtfZHNhLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTMtcmVhbHRla19kc2Etb2Jqc1x0XHRcdDo9IHJ0bDgzeHgub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjU6aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19NRElPXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS02LXJlYWx0ZWtfZHNhLW9ianMgJiM0Mzs9IHJlYWx0ZWstbWRpby5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT03PWVuZGlmXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6OTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTAtcmVhbHRla19kc2Etb2JqcyAmIzQzOz0gcmVhbHRlay1zbWkub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTE9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpICYjNDM7PSBydGw4MzY2Lm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE0LXJ0bDgzNjYtb2JqcyBcdFx0XHRcdDo9IHJ0bDgzNjYtY29yZS5vIHJ0bDgzNjZyYi5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxNTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xNi1ydGw4MzY2LW9ianMgXHRcdFx0XHQmIzQzOz0gcnRsODM2NnJiLWxlZHMub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSAmIzQzOz0gcnRsODM2NW1iLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE5LXJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC01LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIyOiNlbHNlIC8qIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19NRElPKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo0NjojZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUkpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD0yMD12b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0yMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MjI6I2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSSkgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD00Mj1zdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTQ1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDo0NjojZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSSkgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg9NDc9ZW51bSBydGw4MzY2X2xlZGdyb3VwX21vZGUge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg6Njg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEUylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oPTk0PXN0cnVjdCBydGw4MzY2cmIge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTk2LVx0Ym9vbCBwdmlkX2VuYWJsZWRbUlRMODM2NlJCX05VTV9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmgtOTgtXHRzdHJ1Y3QgcnRsODM2NnJiX2xlZCBsZWRzW1JUTDgzNjZSQl9OVU1fUE9SVFNdW1JUTDgzNjZSQl9OVU1fTEVER1JPVVBTXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyODYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byBSZWFsdGVrIERTQSBTd2l0Y2ggUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlc2UgYHJ0bDgzeHhgIGNoaXBzIGFuZCBEU0Egc3dpdGNoZXMgZ2V0IGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgbGlrZWx5IHdpdGggdGhlIGBydGw4M3h4X3Byb2JlYCBmdW5jdGlvbiBvciwgbW9yZSBnZW5lcmFsbHksIGhvdyB0aGVzZSBEU0Egc3dpdGNoZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIHByb2JlZC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuCgpOb3csIHdoZXJlJiMzOTtzIHRoYXQgY29kZT8gQWgsIHllcywgSSBiZWxpZXZlIEkgcmVtZW1iZXIgc2VlaW5nIFJlYWx0ZWsmIzM5O3MgRFNBIGRyaXZlciBpbiBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jYC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhleSYjMzk7dmUgaW1wbGVtZW50ZWQgdGhlIHByb2JpbmcgYW5kIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBTaG91bGQgYmUgYW4gaW50ZXJlc3RpbmcgcmVhZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCYjNDM7XG4gICAyOlx0XG4gICAzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX21kaW8uaFx1MDAzZVxuICAgNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX2JyaWRnZS5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICAgODpcdFxuICAgOTpcdCNpbmNsdWRlIFwmIzM0O3JlYWx0ZWsuaFwmIzM0O1xuICAxMDpcdCNpbmNsdWRlIFwmIzM0O3J0bDgzeHguaFwmIzM0O1xuICAxMTpcdFxuICAxMjpcdC8qKlxuICAxMzpcdCAqIHJ0bDgzeHhfbG9jaygpIC0gTG9ja3MgdGhlIG11dGV4IHVzZWQgYnkgcmVnbWFwc1xuICAxNDpcdCAqIEBjdHg6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXG4gIDE1Olx0ICpcbiAgMTY6XHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZCB0byByZWdtYXAgdG8gYmUgdXNlZCBhcyB0aGUgbG9jayBmdW5jdGlvbi5cbiAgMTc6XHQgKiBJdCBpcyBhbHNvIHVzZWQgZXh0ZXJuYWxseSB0byBibG9jayByZWdtYXAgYmVmb3JlIGV4ZWN1dGluZyBtdWx0aXBsZVxuICAxODpcdCAqIG9wZXJhdGlvbnMgdGhhdCBtdXN0IGhhcHBlbiBpbiBzZXF1ZW5jZSAod2hpY2ggd2lsbCB1c2VcbiAgMTk6XHQgKiByZWFsdGVrX3ByaXYubWFwX25vbG9jayBpbnN0ZWFkKS5cbiAgMjA6XHQgKlxuICAyMTpcdCAqIENvbnRleHQ6IENhbiBzbGVlcC4gSG9sZHMgcHJpdi1cdTAwM2VtYXBfbG9jayBsb2NrLlxuICAyMjpcdCAqIFJldHVybjogbm90aGluZ1xuICAyMzpcdCAqL1xuICAyNDpcdHZvaWQgcnRsODN4eF9sb2NrKHZvaWQgKmN0eClcbiAgMjU6XHR7XG4gIDI2Olx0XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xuICAyNzpcdFxuICAyODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZW1hcF9sb2NrKTtcbiAgMjk6XHR9XG4gIDMwOlx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF9sb2NrLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG4gIDMxOlx0XG4gIDMyOlx0LyoqXG4gIDMzOlx0ICogcnRsODN4eF91bmxvY2soKSAtIFVubG9ja3MgdGhlIG11dGV4IHVzZWQgYnkgcmVnbWFwc1xuICAzNDpcdCAqIEBjdHg6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXG4gIDM1Olx0ICpcbiAgMzY6XHQgKiBUaGlzIGZ1bmN0aW9uIHVubG9ja3MgdGhlIGxvY2sgYWNxdWlyZWQgYnkgcnRsODN4eF9sb2NrLlxuICAzNzpcdCAqXG4gIDM4Olx0ICogQ29udGV4dDogUmVsZWFzZXMgcHJpdi1cdTAwM2VtYXBfbG9jayBsb2NrLlxuICAzOTpcdCAqIFJldHVybjogbm90aGluZ1xuICA0MDpcdCAqL1xuICA0MTpcdHZvaWQgcnRsODN4eF91bmxvY2sodm9pZCAqY3R4KVxuICA0MjpcdHtcbiAgNDM6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG4gIDQ0Olx0XG4gIDQ1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtYXBfbG9jayk7XG4gIDQ2Olx0fVxuICA0NzpcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfdW5sb2NrLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG4gIDQ4Olx0XG4gIDQ5Olx0c3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtKVxuICA1MDpcdHtcbiAgNTE6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbiAgNTI6XHRcbiAgNTM6XHRcdHJldHVybiBwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfcmVhZChwcml2LCBhZGRyLCByZWdudW0pO1xuICA1NDpcdH1cbiAgNTU6XHRcbiAgNTY6XHRzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLFxuICA1NzpcdFx0XHRcdFx0ICAgdTE2IHZhbClcbiAgNTg6XHR7XG4gIDU5Olx0XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG4gIDYwOlx0XG4gIDYxOlx0XHRyZXR1cm4gcHJpdi1cdTAwM2VvcHMtXHUwMDNlcGh5X3dyaXRlKHByaXYsIGFkZHIsIHJlZ251bSwgdmFsKTtcbiAgNjI6XHR9XG4gIDYzOlx0XG4gIDY0Olx0LyoqXG4gIDY1Olx0ICogcnRsODN4eF9zZXR1cF91c2VyX21kaW8oKSAtIHJlZ2lzdGVyIHRoZSB1c2VyIG1paSBidXMgZHJpdmVyXG4gIDY2Olx0ICogQGRzOiBEU0Egc3dpdGNoIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHVzZXJfbWlpX2J1c1xuICA2NzpcdCAqXG4gIDY4Olx0ICogUmVnaXN0ZXJzIHRoZSBNRElPIGJ1cyBmb3IgYnVpbHQtaW4gRXRoZXJuZXQgUEhZcywgYW5kIGFzc29jaWF0ZXMgaXQgd2l0aFxuICA2OTpcdCAqIHRoZSBtYW5kYXRvcnkgJiMzOTttZGlvJiMzOTsgY2hpbGQgT0Ygbm9kZSBvZiB0aGUgc3dpdGNoLlxuICA3MDpcdCAqXG4gIDcxOlx0ICogQ29udGV4dDogQ2FuIHNsZWVwLlxuICA3MjpcdCAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBmb3IgZmFpbHVyZS5cbiAgNzM6XHQgKi9cbiAgNzQ6XHRpbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuICA3NTpcdHtcbiAgNzY6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuICA3NzpcdFx0c3RydWN0IGRldmljZV9ub2RlICptZGlvX25wO1xuICA3ODpcdFx0c3RydWN0IG1paV9idXMgKmJ1cztcbiAgNzk6XHRcdGludCByZXQgPSAwO1xuICA4MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODYzNgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSByZXN0IG9mIGBydGw4M3h4LmNgLiBJIG5lZWQgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODE6XHRcdG1kaW9fbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShwcml2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttZGlvXCYjMzQ7KTtcbiAgODI6XHRcdGlmICghbWRpb19ucCkge1xuICA4MzpcdFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtubyBNRElPIGJ1cyBub2RlXFxuXCYjMzQ7KTtcbiAgODQ6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gIDg1Olx0XHR9XG4gIDg2Olx0XG4gIDg3Olx0XHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MocHJpdi1cdTAwM2VkZXYpO1xuICA4ODpcdFx0aWYgKCFidXMpIHtcbiAgODk6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiAgOTA6XHRcdFx0Z290byBlcnJfcHV0X25vZGU7XG4gIDkxOlx0XHR9XG4gIDkyOlx0XG4gIDkzOlx0XHRidXMtXHUwMDNlcHJpdiA9IHByaXY7XG4gIDk0Olx0XHRidXMtXHUwMDNlbmFtZSA9IFwmIzM0O1JlYWx0ZWsgdXNlciBNSUlcJiMzNDs7XG4gIDk1Olx0XHRidXMtXHUwMDNlcmVhZCA9IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWQ7XG4gIDk2Olx0XHRidXMtXHUwMDNld3JpdGUgPSBydGw4M3h4X3VzZXJfbWRpb193cml0ZTtcbiAgOTc6XHRcdHNucHJpbnRmKGJ1cy1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcJiMzNDslczp1c2VyX21paVwmIzM0OywgZGV2X25hbWUocHJpdi1cdTAwM2VkZXYpKTtcbiAgOTg6XHRcdGJ1cy1cdTAwM2VwYXJlbnQgPSBwcml2LVx1MDAzZWRldjtcbiAgOTk6XHRcbiAxMDA6XHRcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbiAxMDE6XHRcdGlmIChyZXQpIHtcbiAxMDI6XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7dW5hYmxlIHRvIHJlZ2lzdGVyIE1ESU8gYnVzICVzXFxuXCYjMzQ7LFxuIDEwMzpcdFx0XHRcdGJ1cy1cdTAwM2VpZCk7XG4gMTA0Olx0XHRcdGdvdG8gZXJyX3B1dF9ub2RlO1xuIDEwNTpcdFx0fVxuIDEwNjpcdFxuIDEwNzpcdFx0cHJpdi1cdTAwM2V1c2VyX21paV9idXMgPSBidXM7XG4gMTA4Olx0XG4gMTA5Olx0ZXJyX3B1dF9ub2RlOlxuIDExMDpcdFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4gMTExOlx0XG4gMTEyOlx0XHRyZXR1cm4gcmV0O1xuIDExMzpcdH1cbiAxMTQ6XHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X3NldHVwX3VzZXJfbWRpbywgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuIDExNTpcdFxuIDExNjpcdC8qKlxuIDExNzpcdCAqIHJ0bDgzeHhfcHJvYmUoKSAtIHByb2JlIGEgUmVhbHRlayBzd2l0Y2hcbiAxMTg6XHQgKiBAZGV2OiB0aGUgZGV2aWNlIGJlaW5nIHByb2JlZFxuIDExOTpcdCAqIEBpbnRlcmZhY2VfaW5mbzogc3BlY2lmaWMgbWFuYWdlbWVudCBpbnRlcmZhY2UgaW5mby5cbiAxMjA6XHQgKlxuIDEyMTpcdCAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgcmVhbHRla19wcml2IGFuZCByZWFkcyBkYXRhIGZyb20gdGhlIGRldmljZSB0cmVlXG4gMTIyOlx0ICogbm9kZS4gVGhlIHN3aXRjaCBpcyBoYXJkIHJlc2V0dGVkIGlmIGEgbWV0aG9kIGlzIHByb3ZpZGVkLlxuIDEyMzpcdCAqXG4gMTI0Olx0ICogQ29udGV4dDogQ2FuIHNsZWVwLlxuIDEyNTpcdCAqIFJldHVybjogUG9pbnRlciB0byB0aGUgcmVhbHRla19wcml2IG9yIEVSUl9QVFIoKSBpbiBjYXNlIG9mIGZhaWx1cmUuXG4gMTI2Olx0ICpcbiAxMjc6XHQgKiBUaGUgcmVhbHRla19wcml2IHBvaW50ZXIgZG9lcyBub3QgbmVlZCB0byBiZSBmcmVlZCBhcyBpdCBpcyBjb250cm9sbGVkIGJ5XG4gMTI4Olx0ICogZGV2cmVzLlxuIDEyOTpcdCAqL1xuIDEzMDpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKlxuIDEzMTpcdHJ0bDgzeHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LFxuIDEzMjpcdFx0ICAgICAgY29uc3Qgc3RydWN0IHJlYWx0ZWtfaW50ZXJmYWNlX2luZm8gKmludGVyZmFjZV9pbmZvKVxuIDEzMzpcdHtcbiAxMzQ6XHRcdGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgKnZhcjtcbiAxMzU6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XG4gMTM2Olx0XHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYyA9IHtcbiAxMzc6XHRcdFx0LnJlZ19iaXRzID0gMTAsIC8qIEE0Li5BMCBSNC4uUjAgKi9cbiAxMzg6XHRcdFx0LnZhbF9iaXRzID0gMTYsXG4gMTM5Olx0XHRcdC5yZWdfc3RyaWRlID0gMSxcbiAxNDA6XHRcdFx0Lm1heF9yZWdpc3RlciA9IDB4ZmZmZixcbiAxNDE6XHRcdFx0LnJlZ19mb3JtYXRfZW5kaWFuID0gUkVHTUFQX0VORElBTl9CSUcsXG4gMTQyOlx0XHRcdC5yZWdfcmVhZCA9IGludGVyZmFjZV9pbmZvLVx1MDAzZXJlZ19yZWFkLFxuIDE0MzpcdFx0XHQucmVnX3dyaXRlID0gaW50ZXJmYWNlX2luZm8tXHUwMDNlcmVnX3dyaXRlLFxuIDE0NDpcdFx0XHQuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsXG4gMTQ1Olx0XHRcdC5sb2NrID0gcnRsODN4eF9sb2NrLFxuIDE0NjpcdFx0XHQudW5sb2NrID0gcnRsODN4eF91bmxvY2ssXG4gMTQ3Olx0XHR9O1xuIDE0ODpcdFx0aW50IHJldDtcbiAxNDk6XHRcbiAxNTA6XHRcdHZhciA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuIDE1MTpcdFx0aWYgKCF2YXIpXG4gMTUyOlx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuIDE1MzpcdFxuIDE1NDpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVfYWRkKHNpemVvZigqcHJpdiksIHZhci1cdTAwM2VjaGlwX2RhdGFfc3opLFxuIDE1NTpcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbiAxNTY6XHRcdGlmICghcHJpdilcbiAxNTc6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gMTU4Olx0XG4gMTU5Olx0XHRyZXQgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZW1hcF9sb2NrKTtcbiAxNjA6XHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTY5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYHJ0bDgzeHhfcHJvYmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgKmFmdGVyKiB0aGUgaW5pdGlhbCBzZXR1cC4gSSYjMzk7bSBhc3N1bWluZywgYmFzZWQgb24gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGVzZSBzb3J0cyBvZiBkZXZpY2UgZHJpdmVycywgdGhhdCB0aGUgbmV4dCBzdGFnZXMgd2lsbCBsaWtlbHkgaW52b2x2ZSBhIGZldyBrZXkgYXJlYXM6CgoqKkZ1cnRoZXIgRXhhbWluYXRpb24gb2YgYHJ0bDgzeHhfcHJvYmVgKioKCkZpcnN0LCBJIGV4cGVjdCB0byBzZWUgdGhlIGRyaXZlciBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZSwgbWF5YmUgY29uZmlndXJpbmcgc29tZSBiYXNpYyByZWdpc3RlcnMgb3IgaW5pdGlhbGl6aW5nIHRoZSBQSFkuIEl0JiMzOTtzIGxpa2VseSBjaGVja2luZyBmb3IgYW5kIGluaXRpYWxpemluZyBpbnRlcnJ1cHQgaGFuZGxlcnMsIHNpbmNlIGVmZmljaWVudCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGhhcmR3YXJlIGlzIGNyaXRpY2FsLiBXZSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBvZiB0aGUgZGV2aWNlJiMzOTtzIGNsb2NraW5nIGFzIHdlbGwsIHNpbmNlIHRoYXQmIzM5O3MgYW5vdGhlciBwcmVyZXF1aXNpdGUuCgpUaGVuLCB0aGVyZSYjMzk7bGwgYmUgYSBwaGFzZSBvZiByZXNvdXJjZSBhbGxvY2F0aW9uIC0gbWVtb3J5LCBJUlFzLCBwZXJoYXBzIERNQSBjaGFubmVscy4gSSYjMzk7bSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCBwaXRmYWxscyB0aGVyZTsgcmVzb3VyY2UgY29uZmxpY3RzIGNhbiBiZSBhIG1ham9yIHBhaW4gdG8gZGVidWcuIEdpdmVuIHRoaXMgaXMgYSBzd2l0Y2gsIHRoZXJlJiMzOTtsbCBkZWZpbml0ZWx5IGJlIGEgbmVlZCB0byByZWdpc3RlciB0aGUgc3dpdGNoIGRldmljZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdWJzeXN0ZW0sIHByb2JhYmx5IHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcG9ydHMsIGNhcGFiaWxpdGllcywgYW5kIHRoZSBsaWtlLiBXZSBuZWVkIHRvIGJlIGNoZWNraW5nIHRoZSBzdGF0dXMgcmV0dXJuZWQgYnkgdGhlc2UgY2FsbHMsIGVycm9ycyBmcm9tIHJlc291cmNlIGFsbG9jYXRpb25zLCBiZWNhdXNlIHRoYXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgcHJvYmxlbXMgaW4gdGhlIGtlcm5lbC4KCkZpbmFsbHksIEkmIzM5O20gYW50aWNpcGF0aW5nIHNvbWUgZm9ybSBvZiBpbml0aWFsIHN3aXRjaCBjb25maWd1cmF0aW9uLCBtYXliZSBzZXR0aW5nIHVwIFZMQU5zLCBwb3J0IHNwZWVkcywgb3Igb3RoZXIgYmFzaWMgcGFyYW1ldGVycy4gSXQmIzM5O3MgcmVhbGx5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGF0IHN3aXRjaCBjaGlwIHRoYXQgaXMga2V5IGhlcmUsIGhvdyBpdCBpbml0aWFsaXplcy4gSSYjMzk7bSBrZWVuIHRvIHNwb3QgYW55IGluZGljYXRpb25zIG9mIGVycm9yIGhhbmRsaW5nIGFuZCBob3cgcm9idXN0IGl0IGlzIHRvIHZhcmlvdXMgc2NlbmFyaW9zLiBPdmVyYWxsLCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBzdHJ1Y3R1cmVkIGFwcHJvYWNoIHRoYXQgY2FyZWZ1bGx5IHNldHMgdXAgdGhlIGhhcmR3YXJlLCByZWdpc3RlcnMgaXQgd2l0aCB0aGUgc3lzdGVtLCBhbmQgdGhlbiBicmluZ3MgaXQgaW50byBhIGtub3duIGluaXRpYWwgc3RhdGUuIFRoaXMsIG9idmlvdXNseSwgaXMgdGhlIHN0YW5kYXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYxOlx0XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gMTYyOlx0XG4gMTYzOlx0XHRyZXQgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXZsYW5fbG9jayk7XG4gMTY0Olx0XHRpZiAocmV0KVxuIDE2NTpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE2NjpcdFxuIDE2NzpcdFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXHUwMDI2cHJpdi1cdTAwM2VsMl9sb2NrKTtcbiAxNjg6XHRcdGlmIChyZXQpXG4gMTY5Olx0XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gMTcwOlx0XG4gMTcxOlx0XHRyYy5sb2NrX2FyZyA9IHByaXY7XG4gMTcyOlx0XHRwcml2LVx1MDAzZW1hcCA9IGRldm1fcmVnbWFwX2luaXQoZGV2LCBOVUxMLCBwcml2LCBcdTAwMjZyYyk7XG4gMTczOlx0XHRpZiAoSVNfRVJSKHByaXYtXHUwMDNlbWFwKSkge1xuIDE3NDpcdFx0XHRyZXQgPSBQVFJfRVJSKHByaXYtXHUwMDNlbWFwKTtcbiAxNzU6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O3JlZ21hcCBpbml0IGZhaWxlZDogJWRcXG5cJiMzNDssIHJldCk7XG4gMTc2Olx0XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gMTc3Olx0XHR9XG4gMTc4Olx0XG4gMTc5Olx0XHRyYy5kaXNhYmxlX2xvY2tpbmcgPSB0cnVlO1xuIDE4MDpcdFx0cHJpdi1cdTAwM2VtYXBfbm9sb2NrID0gZGV2bV9yZWdtYXBfaW5pdChkZXYsIE5VTEwsIHByaXYsIFx1MDAyNnJjKTtcbiAxODE6XHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VtYXBfbm9sb2NrKSkge1xuIDE4MjpcdFx0XHRyZXQgPSBQVFJfRVJSKHByaXYtXHUwMDNlbWFwX25vbG9jayk7XG4gMTgzOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtyZWdtYXAgaW5pdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDE4NDpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE4NTpcdFx0fVxuIDE4NjpcdFxuIDE4NzpcdFx0LyogTGluayBmb3J3YXJkIGFuZCBiYWNrd2FyZCAqL1xuIDE4ODpcdFx0cHJpdi1cdTAwM2VkZXYgPSBkZXY7XG4gMTg5Olx0XHRwcml2LVx1MDAzZXZhcmlhbnQgPSB2YXI7XG4gMTkwOlx0XHRwcml2LVx1MDAzZW9wcyA9IHZhci1cdTAwM2VvcHM7XG4gMTkxOlx0XHRwcml2LVx1MDAzZWNoaXBfZGF0YSA9ICh2b2lkICopcHJpdiAmIzQzOyBzaXplb2YoKnByaXYpO1xuIDE5MjpcdFxuIDE5MzpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbiAxOTQ6XHRcbiAxOTU6XHRcdHByaXYtXHUwMDNlbGVkc19kaXNhYmxlZCA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtXHUwMDNlb2Zfbm9kZSxcbiAxOTY6XHRcdFx0XHRcdFx0XHQgICAgXCYjMzQ7cmVhbHRlayxkaXNhYmxlLWxlZHNcJiMzNDspO1xuIDE5NzpcdFxuIDE5ODpcdFx0LyogVE9ETzogaWYgcG93ZXIgaXMgc29mdHdhcmUgY29udHJvbGxlZCwgc2V0IHVwIGFueSByZWd1bGF0b3JzIGhlcmUgKi9cbiAxOTk6XHRcdHByaXYtXHUwMDNlcmVzZXRfY3RsID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9vcHRpb25hbChkZXYsIE5VTEwpO1xuIDIwMDpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlc2V0X2N0bCkpXG4gMjAxOlx0XHRcdHJldHVybiBkZXZfZXJyX2Nhc3RfcHJvYmUoZGV2LCBwcml2LVx1MDAzZXJlc2V0X2N0bCxcbiAyMDI6XHRcdFx0XHRcdFx0ICBcJiMzNDtmYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcXG5cJiMzNDspO1xuIDIwMzpcdFxuIDIwNDpcdFx0cHJpdi1cdTAwM2VyZXNldCA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXCYjMzQ7cmVzZXRcJiMzNDssIEdQSU9EX09VVF9MT1cpO1xuIDIwNTpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlc2V0KSkge1xuIDIwNjpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBSRVNFVCBHUElPXFxuXCYjMzQ7KTtcbiAyMDc6XHRcdFx0cmV0dXJuIEVSUl9DQVNUKHByaXYtXHUwMDNlcmVzZXQpO1xuIDIwODpcdFx0fVxuIDIwOTpcdFxuIDIxMDpcdFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgcHJpdik7XG4gMjExOlx0XG4gMjEyOlx0XHRpZiAocHJpdi1cdTAwM2VyZXNldF9jdGwgfHwgcHJpdi1cdTAwM2VyZXNldCkge1xuIDIxMzpcdFx0XHRydGw4M3h4X3Jlc2V0X2Fzc2VydChwcml2KTtcbiAyMTQ6XHRcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O2Fzc2VydGVkIFJFU0VUXFxuXCYjMzQ7KTtcbiAyMTU6XHRcdFx0bXNsZWVwKFJFQUxURUtfSFdfU1RPUF9ERUxBWSk7XG4gMjE2Olx0XHRcdHJ0bDgzeHhfcmVzZXRfZGVhc3NlcnQocHJpdik7XG4gMjE3Olx0XHRcdG1zbGVlcChSRUFMVEVLX0hXX1NUQVJUX0RFTEFZKTtcbiAyMTg6XHRcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O2RlYXNzZXJ0ZWQgUkVTRVRcXG5cJiMzNDspO1xuIDIxOTpcdFx0fVxuIDIyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM3NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHJ0bDgzeHhfcHJvYmVgIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBhbGwgYWJvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGlzIGRyaXZlciwgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgYW5kIHdoYXQgaXRzIHNwZWNpZmljIHJlc3BvbnNpYmlsaXRpZXMgYXJlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYmV5b25kIHRoZSBpbml0aWFsIHNuaXBwZXRzIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBkYXRhIG1hbmFnZW1lbnQuIEkgd2FudCB0byBzZWUgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBpbml0aWFsaXphdGlvbiBzdGVwcy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwcm9ibGVtcykgdHlwaWNhbGx5IGhhcHBlbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBkZXRlcm1pbmUgaG93IGl0IGlkZW50aWZpZXMgdGhlIGNoaXAsIGNvbmZpZ3VyZXMgaXQsIGFuZCBpbnRlZ3JhdGVzIHdpdGggdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjay4gVGhlIGRldGFpbHMgbWF0dGVyOiByZWdpc3RlciB3cml0ZXMsIGludGVycnVwdCBjb25maWd1cmF0aW9uLCBjbG9jayBzZXR0aW5ncyDigJMgSSBuZWVkIHRvIGdldCBhIGZpcm0gZ3JpcCBvbiBhbGwgb2YgaXQuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBzdGFuZHMgb3V0LCBhbnkgb3B0aW1pemF0aW9ucywgb3IgcG90ZW50aWFsIGFyZWFzIGZvciBpbXByb3ZlbWVudC4gTGV0JiMzOTtzIHNlZSB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyMTpcdFx0cmV0dXJuIHByaXY7XG4gMjIyOlx0fVxuIDIyMzpcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfcHJvYmUsIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAyMjQ6XHRcbiAyMjU6XHQvKipcbiAyMjY6XHQgKiBydGw4M3h4X3JlZ2lzdGVyX3N3aXRjaCgpIC0gZGV0ZWN0cyBhbmQgcmVnaXN0ZXIgYSBzd2l0Y2hcbiAyMjc6XHQgKiBAcHJpdjogcmVhbHRla19wcml2IHBvaW50ZXJcbiAyMjg6XHQgKlxuIDIyOTpcdCAqIFRoaXMgZnVuY3Rpb24gZmlyc3QgY2hlY2tzIHRoZSBzd2l0Y2ggY2hpcCBJRCBhbmQgcmVnaXN0ZXIgYSBEU0FcbiAyMzA6XHQgKiBzd2l0Y2guXG4gMjMxOlx0ICpcbiAyMzI6XHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuIFRha2VzIGFuZCByZWxlYXNlcyBwcml2LVx1MDAzZW1hcF9sb2NrLlxuIDIzMzpcdCAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBmb3IgZmFpbHVyZS5cbiAyMzQ6XHQgKi9cbiAyMzU6XHRpbnQgcnRsODN4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiAyMzY6XHR7XG4gMjM3Olx0XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBcdTAwMjZwcml2LVx1MDAzZWRzO1xuIDIzODpcdFx0aW50IHJldDtcbiAyMzk6XHRcbiAyNDA6XHRcdHJldCA9IHByaXYtXHUwMDNlb3BzLVx1MDAzZWRldGVjdChwcml2KTtcbiAyNDE6XHRcdGlmIChyZXQpIHtcbiAyNDI6XHRcdFx0ZGV2X2Vycl9wcm9iZShwcml2LVx1MDAzZWRldiwgcmV0LCBcJiMzNDt1bmFibGUgdG8gZGV0ZWN0IHN3aXRjaFxcblwmIzM0Oyk7XG4gMjQzOlx0XHRcdHJldHVybiByZXQ7XG4gMjQ0Olx0XHR9XG4gMjQ1Olx0XG4gMjQ2Olx0XHRkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbiAyNDc6XHRcdGRzLVx1MDAzZWRldiA9IHByaXYtXHUwMDNlZGV2O1xuIDI0ODpcdFx0ZHMtXHUwMDNlb3BzID0gcHJpdi1cdTAwM2V2YXJpYW50LVx1MDAzZWRzX29wcztcbiAyNDk6XHRcdGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IHByaXYtXHUwMDNldmFyaWFudC1cdTAwM2VwaHlsaW5rX21hY19vcHM7XG4gMjUwOlx0XHRkcy1cdTAwM2VudW1fcG9ydHMgPSBwcml2LVx1MDAzZW51bV9wb3J0cztcbiAyNTE6XHRcbiAyNTI6XHRcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuIDI1MzpcdFx0aWYgKHJldCkge1xuIDI1NDpcdFx0XHRkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2LCByZXQsIFwmIzM0O3VuYWJsZSB0byByZWdpc3RlciBzd2l0Y2hcXG5cJiMzNDspO1xuIDI1NTpcdFx0XHRyZXR1cm4gcmV0O1xuIDI1NjpcdFx0fVxuIDI1NzpcdFxuIDI1ODpcdFx0cmV0dXJuIDA7XG4gMjU5Olx0fVxuIDI2MDpcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfcmVnaXN0ZXJfc3dpdGNoLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG4gMjYxOlx0XG4gMjYyOlx0LyoqXG4gMjYzOlx0ICogcnRsODN4eF91bnJlZ2lzdGVyX3N3aXRjaCgpIC0gdW5yZWdpc3RlciBhIHN3aXRjaFxuIDI2NDpcdCAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxuIDI2NTpcdCAqXG4gMjY2Olx0ICogVGhpcyBmdW5jdGlvbiB1bnJlZ2lzdGVyIGEgRFNBIHN3aXRjaC5cbiAyNjc6XHQgKlxuIDI2ODpcdCAqIENvbnRleHQ6IENhbiBzbGVlcC5cbiAyNjk6XHQgKiBSZXR1cm46IE5vdGhpbmcuXG4gMjcwOlx0ICovXG4gMjcxOlx0dm9pZCBydGw4M3h4X3VucmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gMjcyOlx0e1xuIDI3MzpcdFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gXHUwMDI2cHJpdi1cdTAwM2VkcztcbiAyNzQ6XHRcbiAyNzU6XHRcdGRzYV91bnJlZ2lzdGVyX3N3aXRjaChkcyk7XG4gMjc2Olx0fVxuIDI3NzpcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfdW5yZWdpc3Rlcl9zd2l0Y2gsIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAyNzg6XHRcbiAyNzk6XHQvKipcbiAyODA6XHQgKiBydGw4M3h4X3NodXRkb3duKCkgLSBzaHV0ZG93biBhIHN3aXRjaFxuIDI4MTpcdCAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxuIDI4MjpcdCAqXG4gMjgzOlx0ICogVGhpcyBmdW5jdGlvbiBzaHV0cyBkb3duIHRoZSBEU0Egc3dpdGNoIGFuZCBjbGVhbnMgdGhlIHBsYXRmb3JtIGRyaXZlciBkYXRhLFxuIDI4NDpcdCAqIHRvIHByZXZlbnQgcmVhbHRla197c21pLG1kaW99X3JlbW92ZSgpIGZyb20gcnVubmluZyBhZnRlcndhcmRzLCB3aGljaCBpc1xuIDI4NTpcdCAqIHBvc3NpYmxlIGlmIHRoZSBwYXJlbnQgYnVzIGltcGxlbWVudHMgaXRzIG93biAuc2h1dGRvd24oKSBhcyAucmVtb3ZlKCkuXG4gMjg2Olx0ICpcbiAyODc6XHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuXG4gMjg4Olx0ICogUmV0dXJuOiBOb3RoaW5nLlxuIDI4OTpcdCAqL1xuIDI5MDpcdHZvaWQgcnRsODN4eF9zaHV0ZG93bihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYzNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUmVhbHRlayBTd2l0Y2ggSW5pdGlhbGl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIGhvdyB0aGVzZSBSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBBU0lDcywgc3BlY2lmaWNhbGx5IHRob3NlIGNvbm5lY3RlZCB2aWEgTURJTyBvciBTTUkgbGlrZSB0aGUgcnRsODM2NW1iIGFuZCBydGw4MzY2cmIsIGFyZSBpbml0aWFsaXplZCBhbmQgcmVzZXQgd2l0aGluIHRoZSBzeXN0ZW0uIEkgc2VlIHRoYXQgYHJlYWx0ZWtfbWRpb19wcm9iZWAgYW5kIGByZWFsdGVrX3NtaV9wcm9iZWAgYXJlIHJlc3BvbnNpYmxlIGZvciB0aGUgcHJvYmluZyBwcm9jZXNzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZXNldCBzZXF1ZW5jZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBvZiB0aGUgcmVzZXQgZnVuY3Rpb24sIHBhcnRpY3VsYXJseSBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB3aGVyZSBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGNvZGUuIFRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIHNlYXJjaCBmb3IgYW55IG90aGVyIGluc3RhbmNlcyBvZiBgcmVzZXRfY2hpcGAgb3IsIGFzIGEgc2FuaXR5IGNoZWNrLCAgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIHBsYWNlcyB0aGF0IGFyZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzZXRfY2hpcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xMDg9c3RydWN0IHJlYWx0ZWtfb3BzIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDktXHRpbnRcdCgqZGV0ZWN0KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTA6XHRpbnRcdCgqcmVzZXRfY2hpcCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTExLVx0aW50XHQoKnNldHVwKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTI5NTQ9c3RhdGljIGludCBydGw4MzY1bWJfc3dpdGNoX2luaXQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI5ODMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI5ODQ6c3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yOTg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMwMjA9c3RhdGljIGludCBydGw4MzY1bWJfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzA0MC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzA0MTpcdHJldCA9IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMDQyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE2ODU9c3RhdGljIGludCBydGw4MzY2cmJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTcxNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jOjE3MTY6c3RhdGljIGludCBydGw4MzY2cmJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTcxNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM9MTc0Mj1zdGF0aWMgaW50IHJ0bDgzNjZyYl9kZXRlY3Qoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xNzczLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTc3NDpcdHJldCA9IHJ0bDgzNjZyYl9yZXNldF9jaGlwKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTc3NS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzIwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFJUTDgzNjVNQiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIFJlYWx0ZWsgUlRMODM2NU1CIHN3aXRjaCBkcml2ZXIuIEkgc2VlIHRoYXQgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBpcyBjYWxsZWQgYnkgYHJ0bDgzNjVtYl9zZXR1cGAuIFRoZSBgcnRsODM2NW1iX3NldHVwYCBmdW5jdGlvbiBpcyBjbGVhcmx5IGNydWNpYWwgZm9yIGluaXRpYWxpemluZyB0aGlzIHBhcnRpY3VsYXIgc3dpdGNoIG1vZGVsLCBhbmQgaXQmIzM5O3MgbG9jYXRlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYHJ0bDgzNjVtYl9zZXR1cGAsIGFuZCBob3cgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBmaXRzIGludG8gdGhlIHdob2xlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBzdXJyb3VuZGluZyBgcnRsODM2NW1iX3NldHVwYCBpbiB0aGUgYHJ0bDgzNjVtYl9tYWluLmNgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgc2V0dXAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzAxNTpcdFx0XHRtc2xlZXAoamlmZmllc190b19tc2VjcyhyZW1haW5pbmcpKTtcbjMwMTY6XHRcbjMwMTc6XHRcdHJldHVybiAwO1xuMzAxODpcdH1cbjMwMTk6XHRcbjMwMjA6XHRzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4zMDIxOlx0e1xuMzAyMjpcdFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4zMDIzOlx0XHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSAqY3B1O1xuMzAyNDpcdFx0dTMyIGRvd25wb3J0c19tYXNrID0gMDtcbjMwMjU6XHRcdHUzMiB1cHBvcnRzX21hc2sgPSAwO1xuMzAyNjpcdFx0c3RydWN0IHJ0bDgzNjVtYiAqbWI7XG4zMDI3Olx0XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwO1xuMzAyODpcdFx0aW50IHJldDtcbjMwMjk6XHRcbjMwMzA6XHRcdG1iID0gcHJpdi1cdTAwM2VjaGlwX2RhdGE7XG4zMDMxOlx0XHRjcHUgPSBcdTAwMjZtYi1cdTAwM2VjcHU7XG4zMDMyOlx0XG4zMDMzOlx0XHRtYi1cdTAwM2VwY3Mub3BzID0gXHUwMDI2cnRsODM2NW1iX3Bjc19vcHM7XG4zMDM0Olx0XG4zMDM1Olx0XHQvKiBUaGUgU2VyRGVzIGhhcyBubyBsaW5rIGludGVycnVwdCB3aXJlZCB1cCwgc28gcGh5bGluayBtdXN0IHBvbGwgdGhlXG4zMDM2Olx0XHQgKiBQQ1MgZm9yIGxpbmsgY2hhbmdlcyB3aGVuIGl0IHRyYWNrcyB0aGUgbGluayB0aHJvdWdoIHBjc19nZXRfc3RhdGUoKVxuMzAzNzpcdFx0ICogKGluLWJhbmQgbW9kZSB3aXRoIGF1dG9uZWdvdGlhdGlvbiBkaXNhYmxlZCkuXG4zMDM4Olx0XHQgKi9cbjMwMzk6XHRcdG1iLVx1MDAzZXBjcy5wb2xsID0gdHJ1ZTtcbjMwNDA6XHRcbjMwNDE6XHRcdHJldCA9IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHByaXYpO1xuMzA0MjpcdFx0aWYgKHJldCkge1xuMzA0MzpcdFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gcmVzZXQgY2hpcDogJXBlXFxuXCYjMzQ7LFxuMzA0NDpcdFx0XHRcdEVSUl9QVFIocmV0KSk7XG4zMDQ1Olx0XHRcdGdvdG8gb3V0X2Vycm9yO1xuMzA0NjpcdFx0fVxuMzA0NzpcdFxuMzA0ODpcdFx0cmV0ID0gcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24ocHJpdik7XG4zMDQ5Olx0XHRpZiAocmV0KSB7XG4zMDUwOlx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBwcm9iZSBTZXJEZXMgY2hpcCBvcHRpb246ICVwZVxcblwmIzM0OyxcbjMwNTE6XHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuMzA1MjpcdFx0XHRnb3RvIG91dF9lcnJvcjtcbjMwNTM6XHRcdH1cbjMwNTQ6XHRcbjMwNTU6XHRcdC8qIENvbmZpZ3VyZSBzd2l0Y2ggdG8gdmVuZG9yLWRlZmluZWQgaW5pdGlhbCBzdGF0ZSAqL1xuMzA1NjpcdFx0cmV0ID0gcnRsODM2NW1iX3N3aXRjaF9pbml0KHByaXYpO1xuMzA1NzpcdFx0aWYgKHJldCkge1xuMzA1ODpcdFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gaW5pdGlhbGl6ZSBzd2l0Y2g6ICVwZVxcblwmIzM0OyxcbjMwNTk6XHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuMzA2MDpcdFx0XHRnb3RvIG91dF9lcnJvcjtcbjMwNjE6XHRcdH1cbjMwNjI6XHRcbjMwNjM6XHRcdGlmIChtYi1cdTAwM2VzZHNfc3VwcG9ydGVkKSB7XG4zMDY0Olx0XHRcdHJldCA9IHJ0bDgzNjVtYl9zZHNfcmFpc2VfcmF0ZV9saW1pdHMocHJpdik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0ODI5CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBydGw4MzY1bWIgRHJpdmVyIFNldHVwKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHJ0bDgzNjVtYl9zZXR1cGAgaXMgdGhlIERTQSBzZXR1cCBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGBydGw4MzY1bWJgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0bDgzNjVtYl9zd2l0Y2hfb3BzYCBzdHJ1Y3R1cmUuIE15IG5leHQgc3RlcCwgbmF0dXJhbGx5LCBpcyB0byBwaW5wb2ludCB0aGUgZXhhY3QgZGVmaW5pdGlvbiBvZiBgcnRsODM2NW1iX3N3aXRjaF9vcHNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBob3cgYHJ0bDgzNjVtYl9zZXR1cGAgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIGRyaXZlciYjMzk7cyBvcGVyYXRpb24uIEtub3dpbmcgd2hlcmUgdGhpcyBpcyBkZWZpbmVkIHdpbGwgZ2l2ZSBtZSB2YWx1YWJsZSBjb250ZXh0IGZvciBob3cgdGhlIHN3aXRjaCBpcyBpbml0aWFsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzAwOlx0XG4zMzAxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyA9IHtcbjMzMDI6XHRcdC5tYWNfc2VsZWN0X3BjcyA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19zZWxlY3RfcGNzLFxuMzMwMzpcdFx0Lm1hY19jb25maWcgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfY29uZmlnLFxuMzMwNDpcdFx0Lm1hY19saW5rX2Rvd24gPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua19kb3duLFxuMzMwNTpcdFx0Lm1hY19saW5rX3VwID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2xpbmtfdXAsXG4zMzA2Olx0fTtcbjMzMDc6XHRcbjMzMDg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHJ0bDgzNjVtYl9zd2l0Y2hfb3BzID0ge1xuMzMwOTpcdFx0LmdldF90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfZ2V0X3RhZ19wcm90b2NvbCxcbjMzMTA6XHRcdC5jaGFuZ2VfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2NoYW5nZV90YWdfcHJvdG9jb2wsXG4zMzExOlx0XHQuc2V0dXAgPSBydGw4MzY1bWJfc2V0dXAsXG4zMzEyOlx0XHQudGVhcmRvd24gPSBydGw4MzY1bWJfdGVhcmRvd24sXG4zMzEzOlx0XHQucGh5bGlua19nZXRfY2FwcyA9IHJ0bDgzNjVtYl9waHlsaW5rX2dldF9jYXBzLFxuMzMxNDpcdFx0LnBvcnRfYnJpZGdlX2pvaW4gPSBydGw4M3h4X3BvcnRfYnJpZGdlX2pvaW4sXG4zMzE1Olx0XHQucG9ydF9icmlkZ2VfbGVhdmUgPSBydGw4M3h4X3BvcnRfYnJpZGdlX2xlYXZlLFxuMzMxNjpcdFx0LnBvcnRfcHJlX2JyaWRnZV9mbGFncyA9IHJ0bDgzNjVtYl9wb3J0X3ByZV9icmlkZ2VfZmxhZ3MsXG4zMzE3Olx0XHQucG9ydF9icmlkZ2VfZmxhZ3MgPSBydGw4M3h4X3BvcnRfYnJpZGdlX2ZsYWdzLFxuMzMxODpcdFx0LnBvcnRfc3RwX3N0YXRlX3NldCA9IHJ0bDgzNjVtYl9wb3J0X3N0cF9zdGF0ZV9zZXQsXG4zMzE5Olx0XHQucG9ydF9mYXN0X2FnZSA9IHJ0bDgzeHhfcG9ydF9mYXN0X2FnZSxcbjMzMjA6XHRcdC5wb3J0X2ZkYl9hZGQgPSBydGw4M3h4X3BvcnRfZmRiX2FkZCxcbjMzMjE6XHRcdC5wb3J0X2ZkYl9kZWwgPSBydGw4M3h4X3BvcnRfZmRiX2RlbCxcbjMzMjI6XHRcdC5wb3J0X2ZkYl9kdW1wID0gcnRsODN4eF9wb3J0X2ZkYl9kdW1wLFxuMzMyMzpcdFx0LnBvcnRfbWRiX2FkZCA9IHJ0bDgzeHhfcG9ydF9tZGJfYWRkLFxuMzMyNDpcdFx0LnBvcnRfbWRiX2RlbCA9IHJ0bDgzeHhfcG9ydF9tZGJfZGVsLFxuMzMyNTpcdFx0LnBvcnRfdmxhbl9hZGQgPSBydGw4MzY1bWJfcG9ydF92bGFuX2FkZCxcbjMzMjY6XHRcdC5wb3J0X3ZsYW5fZGVsID0gcnRsODM2NW1iX3BvcnRfdmxhbl9kZWwsXG4zMzI3Olx0XHQucG9ydF92bGFuX2ZpbHRlcmluZyA9IHJ0bDgzNjVtYl9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuMzMyODpcdFx0LmdldF9zdHJpbmdzID0gcnRsODM2NW1iX2dldF9zdHJpbmdzLFxuMzMyOTpcdFx0LmdldF9ldGh0b29sX3N0YXRzID0gcnRsODM2NW1iX2dldF9ldGh0b29sX3N0YXRzLFxuMzMzMDpcdFx0LmdldF9zc2V0X2NvdW50ID0gcnRsODM2NW1iX2dldF9zc2V0X2NvdW50LFxuMzMzMTpcdFx0LmdldF9ldGhfcGh5X3N0YXRzID0gcnRsODM2NW1iX2dldF9waHlfc3RhdHMsXG4zMzMyOlx0XHQuZ2V0X2V0aF9tYWNfc3RhdHMgPSBydGw4MzY1bWJfZ2V0X21hY19zdGF0cyxcbjMzMzM6XHRcdC5nZXRfZXRoX2N0cmxfc3RhdHMgPSBydGw4MzY1bWJfZ2V0X2N0cmxfc3RhdHMsXG4zMzM0Olx0XHQuZ2V0X3N0YXRzNjQgPSBydGw4MzY1bWJfZ2V0X3N0YXRzNjQsXG4zMzM1Olx0XHQucG9ydF9jaGFuZ2VfbXR1ID0gcnRsODM2NW1iX3BvcnRfY2hhbmdlX210dSxcbjMzMzY6XHRcdC5wb3J0X21heF9tdHUgPSBydGw4MzY1bWJfcG9ydF9tYXhfbXR1LFxuMzMzNzpcdFx0LnBvcnRfaHNyX2pvaW4gPSBkc2FfcG9ydF9zaW1wbGVfaHNyX2pvaW4sXG4zMzM4Olx0XHQucG9ydF9oc3JfbGVhdmUgPSBkc2FfcG9ydF9zaW1wbGVfaHNyX2xlYXZlLFxuMzMzOTpcdH07XG4zMzQwOlx0XG4zMzQxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyBydGw4MzY1bWJfb3BzID0ge1xuMzM0MjpcdFx0LmRldGVjdCA9IHJ0bDgzNjVtYl9kZXRlY3QsXG4zMzQzOlx0XHQucG9ydF9hZGRfaXNvbGF0aW9uID0gcnRsODM2NW1iX3BvcnRfYWRkX2lzb2xhdGlvbixcbjMzNDQ6XHRcdC5wb3J0X3JlbW92ZV9pc29sYXRpb24gPSBydGw4MzY1bWJfcG9ydF9yZW1vdmVfaXNvbGF0aW9uLFxuMzM0NTpcdFx0LnBvcnRfc2V0X2VmaWQgPSBydGw4MzY1bWJfcG9ydF9zZXRfZWZpZCxcbjMzNDY6XHRcdC5wb3J0X3NldF9sZWFybmluZyA9IHJ0bDgzNjVtYl9wb3J0X3NldF9sZWFybmluZyxcbjMzNDc6XHRcdC5wb3J0X3NldF91Y2FzdF9mbG9vZCA9IHJ0bDgzNjVtYl9wb3J0X3NldF91Y2FzdF9mbG9vZCxcbjMzNDg6XHRcdC5wb3J0X3NldF9tY2FzdF9mbG9vZCA9IHJ0bDgzNjVtYl9wb3J0X3NldF9tY2FzdF9mbG9vZCxcbjMzNDk6XHRcdC5wb3J0X3NldF9iY2FzdF9mbG9vZCA9IHJ0bDgzNjVtYl9wb3J0X3NldF9iY2FzdF9mbG9vZCxcbjMzNTA6XHRcdC5sMl9hZGRfdWMgPSBydGw4MzY1bWJfbDJfYWRkX3VjLFxuMzM1MTpcdFx0LmwyX2RlbF91YyA9IHJ0bDgzNjVtYl9sMl9kZWxfdWMsXG4zMzUyOlx0XHQubDJfZ2V0X25leHRfdWMgPSBydGw4MzY1bWJfbDJfZ2V0X25leHRfdWMsXG4zMzUzOlx0XHQubDJfYWRkX21jID0gcnRsODM2NW1iX2wyX2FkZF9tYyxcbjMzNTQ6XHRcdC5sMl9kZWxfbWMgPSBydGw4MzY1bWJfbDJfZGVsX21jLFxuMzM1NTpcdFx0LmwyX2ZsdXNoID0gcnRsODM2NW1iX2wyX2ZsdXNoLFxuMzM1NjpcdFx0LnBoeV9yZWFkID0gcnRsODM2NW1iX3BoeV9yZWFkLFxuMzM1NzpcdFx0LnBoeV93cml0ZSA9IHJ0bDgzNjVtYl9waHlfd3JpdGUsXG4zMzU4Olx0fTtcbjMzNTk6XHRcbjMzNjA6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xuMzM2MTpcdFx0LmRzX29wcyA9IFx1MDAyNnJ0bDgzNjVtYl9zd2l0Y2hfb3BzLFxuMzM2MjpcdFx0Lm9wcyA9IFx1MDAyNnJ0bDgzNjVtYl9vcHMsXG4zMzYzOlx0XHQucGh5bGlua19tYWNfb3BzID0gXHUwMDI2cnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyxcbjMzNjQ6XHRcdC5jbGtfZGVsYXkgPSAxMCxcbjMzNjU6XHRcdC5jbWRfcmVhZCA9IDB4YjksXG4zMzY2Olx0XHQuY21kX3dyaXRlID0gMHhiOCxcbjMzNjc6XHRcdC5jaGlwX2RhdGFfc3ogPSBzaXplb2Yoc3RydWN0IHJ0bDgzNjVtYiksXG4zMzY4Olx0fTtcbjMzNjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY3ODcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBydGw4MzY1bWJfdmFyaWFudCBJbnN0YW50aWF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGJ1c2VzIGFyZSBhY3R1YWxseSB1c2luZyBvciBpbnN0YW50aWF0aW5nIHRoaXMgYHJ0bDgzNjVtYl92YXJpYW50YCB0aGluZy4gVGhhdCYjMzk7cyB0aGUgY29yZSBxdWVzdGlvbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIGEgdGFyZ2V0ZWQgc2VhcmNoIGZvciBzcGVjaWZpYyBkcml2ZXJzIHJlbGF0ZWQgdG8gdGhpcyBjb21wb25lbnQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGxvb2sgZm9yIGluc3RhbmNlcyBvZiBgcnRsODM2NW1iX29mX21hdGNoYCBvciByZWxhdGVkIHRlcm1zLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBtZWNoYW5pc21zIGhlcmUuIElmIHRoaXMgaXMgYSBzd2l0Y2ggaXQgcHJvYmFibHkgaXMgY29ubmVjdGVkIGJ5IFNNSSBvciBNRElPLiBJZiB0aGUgZHJpdmVyIGlzIHdyaXR0ZW4gY29ycmVjdGx5IGl0IHdpbGwgdXNlIHRoZSBjb3JyZWN0IGNvbXBhdGlibGUgc3RyaW5nIGFuZCB0aGUgZHJpdmVyIHByb2JlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGR1cmluZyBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uLgoKTGV0JiMzOTtzIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEkgZXhwZWN0IHRoYXQgSSYjMzk7bGwgcXVpY2tseSBuYXJyb3cgZG93biB0aGUgcmVsZXZhbnQgZHJpdmVycyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBidXMgYXNzb2NpYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGw4MzY1bWJfb2ZfbWF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMzNjA9Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNjktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNzA6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNzEtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzY1bWJcJiMzNDssIC5kYXRhID0gXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzczLX07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNzQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcnRsODM2NW1iX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM3NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM3Nj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNzgtXHRcdC5uYW1lID0gXCYjMzQ7cnRsODM2NW1iLXNtaVwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzM3OTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzgwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMzODY9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBydGw4MzY1bWJfbWRpb19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzg4LVx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjVtYi1tZGlvXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMzg5Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBydGw4MzY1bWJfb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzOTAtXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzY5NAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDM2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSVEw4MzY1TUIgU3dpdGNoIERyaXZlciYjMzk7cyBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBydGw4MzY1bWJfc21pX2RyaXZlcmAsIHdoaWNoIGlzIGEgYHBsYXRmb3JtX2RyaXZlcmAsIGFuZCB0aGUgYHJ0bDgzNjVtYl9tZGlvX2RyaXZlcmAsIGFuIGBtZGlvX2RyaXZlcmAuIEJvdGggYXJlIG1hdGNoZWQgdGhyb3VnaCBEZXZpY2UgVHJlZSwgc28gaXQmIzM5O3MgYSB0eXBpY2FsIGVtYmVkZGVkIHN5c3RlbSBzZXR1cC4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgc3dpdGNoIGhhcmR3YXJlIGlzIGFjdHVhbGx5IGluc3RhbnRpYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIEFyZSB0aGVyZSBhbnkgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlcywgbGlrZSB2aXJ0aW8sIFVTQiBnYWRnZXRzLCBsb29wYmFjayBpbnRlcmZhY2VzLCBvciB0dW4vdGFwIHRoYXQgd291bGQgc3RhbmQgaW4gZm9yIHRoaXMgaGFyZHdhcmU/CgpOb3csIGNvbnNpZGVyaW5nIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgJiMzNDtyZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZSYjMzQ7LiBGdXp6aW5nIGlzIHBvaW50bGVzcyBpZiB0aGUgY29kZSAqY2Fubm90KiBleGVjdXRlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQuIFNwZWNpZmljYWxseSwgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gR0NFIG9yIFFFTVUgdXNpbmcgZW11bGF0ZWQgZGV2aWNlcywgaXQmIzM5O3MgYSBuby1nbywgcmVnYXJkbGVzcyBvZiBjb21wbGV4aXR5IG9yIGFzc2VydGlvbnMuIFRoZSBndWlkZWxpbmVzIGV4cGxpY2l0bHkgbGlzdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDIGNhcmRzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIHdoYXQgSSYjMzk7bSBjb25jZXJuZWQgYWJvdXQgaGVyZS4KClNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpczogRG9lcyB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgRFQgYmluZGluZ3Mgb24gYW4gZW1iZWRkZWQgYm9hcmQ/IFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgUmVhbHRlayBzd2l0Y2ggQVNJQyB0aGF0JiMzOTtzIGxpa2VseSBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzIG9yIEdQSU8tYmFzZWQgU01JIGJ1cyB0byBhIHJvdXRlciBTb0Mgb3Igc2ltaWxhciBlbWJlZGRlZCBib2FyZC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBjb25maXJtLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLCBhbmQgcmV2aWV3IGl0cyBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIGZ1bmN0aW9ucyB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMzNzA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY1bWJfb2ZfbWF0Y2hbXSA9IHtcbjMzNzE6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzNjVtYlwmIzM0OywgLmRhdGEgPSBcdTAwMjZydGw4MzY1bWJfdmFyaWFudCwgfSxcbjMzNzI6XHRcdHsgLyogc2VudGluZWwgKi8gfSxcbjMzNzM6XHR9O1xuMzM3NDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjVtYl9vZl9tYXRjaCk7XG4zMzc1Olx0XG4zMzc2Olx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnRsODM2NW1iX3NtaV9kcml2ZXIgPSB7XG4zMzc3Olx0XHQuZHJpdmVyID0ge1xuMzM3ODpcdFx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjVtYi1zbWlcJiMzNDssXG4zMzc5Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcbjMzODA6XHRcdH0sXG4zMzgxOlx0XHQucHJvYmUgID0gcmVhbHRla19zbWlfcHJvYmUsXG4zMzgyOlx0XHQucmVtb3ZlID0gcmVhbHRla19zbWlfcmVtb3ZlLFxuMzM4MzpcdFx0LnNodXRkb3duID0gcmVhbHRla19zbWlfc2h1dGRvd24sXG4zMzg0Olx0fTtcbjMzODU6XHRcbjMzODY6XHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjVtYl9tZGlvX2RyaXZlciA9IHtcbjMzODc6XHRcdC5tZGlvZHJ2LmRyaXZlciA9IHtcbjMzODg6XHRcdFx0Lm5hbWUgPSBcJiMzNDtydGw4MzY1bWItbWRpb1wmIzM0OyxcbjMzODk6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxuMzM5MDpcdFx0fSxcbjMzOTE6XHRcdC5wcm9iZSAgPSByZWFsdGVrX21kaW9fcHJvYmUsXG4zMzkyOlx0XHQucmVtb3ZlID0gcmVhbHRla19tZGlvX3JlbW92ZSxcbjMzOTM6XHRcdC5zaHV0ZG93biA9IHJlYWx0ZWtfbWRpb19zaHV0ZG93bixcbjMzOTQ6XHR9O1xuMzM5NTpcdFxuMzM5NjpcdHN0YXRpYyBpbnQgcnRsODM2NW1iX2luaXQodm9pZClcbjMzOTc6XHR7XG4zMzk4Olx0XHRpbnQgcmV0O1xuMzM5OTpcdFxuMzQwMDpcdFx0cmV0ID0gcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZydGw4MzY1bWJfbWRpb19kcml2ZXIpO1xuMzQwMTpcdFx0aWYgKHJldClcbjM0MDI6XHRcdFx0cmV0dXJuIHJldDtcbjM0MDM6XHRcbjM0MDQ6XHRcdHJldCA9IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZydGw4MzY1bWJfc21pX2RyaXZlcik7XG4zNDA1Olx0XHRpZiAocmV0KSB7XG4zNDA2Olx0XHRcdHJlYWx0ZWtfbWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZydGw4MzY1bWJfbWRpb19kcml2ZXIpO1xuMzQwNzpcdFx0XHRyZXR1cm4gcmV0O1xuMzQwODpcdFx0fVxuMzQwOTpcdFxuMzQxMDpcdFx0cmV0dXJuIDA7XG4zNDExOlx0fVxuMzQxMjpcdG1vZHVsZV9pbml0KHJ0bDgzNjVtYl9pbml0KTtcbjM0MTM6XHRcbjM0MTQ6XHRzdGF0aWMgdm9pZCBfX2V4aXQgcnRsODM2NW1iX2V4aXQodm9pZClcbjM0MTU6XHR7XG4zNDE2Olx0XHRyZWFsdGVrX3NtaV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZydGw4MzY1bWJfc21pX2RyaXZlcik7XG4zNDE3Olx0XHRyZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2cnRsODM2NW1iX21kaW9fZHJpdmVyKTtcbjM0MTg6XHR9XG4zNDE5Olx0bW9kdWxlX2V4aXQocnRsODM2NW1iX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTMxMgoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAzNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUlRMODM2NU1CIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgYHJ0bDgzNjVtYl9tYWluLmNgLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYSBkZWFkIGVuZCBmb3Igc3RhbmRhcmQgZnV6emluZyBzZXR1cHMuIEkgbWVhbiwgaXQmIzM5O3MgYSBkcml2ZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBldGhlcm5ldCBzd2l0Y2ggQVNJQy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gdGFsayB0byB0aGUgY2hpcCB2aWEgTURJTyBvciBHUElPIFNNSSwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIEkgY2FuIHRyaWdnZXIgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudCBvbiBhbWQ2NC4gVGhlc2UgYXJlIHZpcnR1YWxpemVkIHNldHVwczsgdGhleSYjMzk7cmUgbm90IGdvaW5nIHRvIG1hZ2ljYWxseSBlbXVsYXRlIHBoeXNpY2FsIG5ldHdvcmsgc3dpdGNoIGhhcmR3YXJlLgoKRXZlbiB0aGUgY3J1Y2lhbCBmdW5jdGlvbnMgbGlrZSBgcnRsODM2NW1iX3NldHVwKClgIGFuZCBgcnRsODM2NW1iX3Jlc2V0X2NoaXAoKWAg4oCTIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyIOKAkyBhcmUgb25seSBjYWxsZWQgd2hlbiB0aGUga2VybmVsIGFjdHVhbGx5ICpwcm9iZXMqIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBkZXZpY2UuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgaGFyZHdhcmUgZGVwZW5kZW5jeS4KCkxldCBtZSBqdXN0IHNvbGlkaWZ5IHRoaXMgaW4gbXkgbWluZCBieSBydW5uaW5nIHRocm91Z2ggdGhlIGNoZWNrbGlzdDoKCjEuICAqKkFyY2hpdGVjdHVyZToqKiBhbWQ2NCDigJMgWWVwLCBzdGFuZGFyZCBmb3IgbWFueSBmdXp6aW5nIHNldHVwcywgYnV0IGlycmVsZXZhbnQgaGVyZSBkdWUgdG8gdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50LgoyLiAgKipGaWxlOioqIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jYCDigJMgQ29uZmlybWVkLCB0aGlzIGlzIHRoZSBkcml2ZXIgY29kZSBpbiBxdWVzdGlvbi4KMy4gICoqSGFyZHdhcmU6KiogUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIEFTSUMgY29ubmVjdGVkIHZpYSBNRElPL1NNSSDigJMgQmluZ28uIFRoZSBkZWFsYnJlYWtlci4KNC4gICoqV29ydGhGdXp6aW5nOioqIEZhbHNlIOKAkyBBYnNvbHV0ZWx5LiBXZSYjMzk7cmUgbm90IGdvaW5nIHRvIGdldCBhbnkgY29kZSBjb3ZlcmFnZSBoZXJlIHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZS4KNS4gICoqUmVhc29uaW5nOioqIENvbmNpc2UgYW5kIGNvcnJlY3QuIFRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhhdCBleHBsYW5hdGlvbiBpcyBzb2xpZC4KNi4gICoqRW5hYmxlQ29uZmlnczoqKiBOdWxsIG9yIGVtcHR5IOKAkyBNYWtlcyBzZW5zZS4gTm8gY29uZmlndXJhdGlvbiBjaGFuZ2VzIHdpbGwgbWFrZSBhIHZpcnR1YWwgbWFjaGluZSBtYWdpY2FsbHkgY3JlYXRlIGEgcmVhbCBzd2l0Y2guCjcuICAqKkZvY3VzU3ltYm9sczoqKiBOdWxsIG9yIGVtcHR5IOKAkyBSaWdodCBhZ2Fpbi4gTm8gc3BlY2lmaWMgZnVuY3Rpb24gY2FsbHMgd2lsbCBjaGFuZ2UgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuCgpZZXAsIHRoYXQmIzM5O3MgaXQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBObyBwb2ludCB3YXN0aW5nIGN5Y2xlcyBvbiBzb21ldGhpbmcgdGhhdCBjYW4mIzM5O3QgYmUgcmVhY2hlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6MjMuODM0NDA2NTIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg2MjI1NzQxNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjoyMy44MzQ0MTE2OTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODc3NDc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIyZmQ2NzM3ODFmOGJkN2NkMGViZmFjNWM5YTI5OWQxYTdmMmRjNjZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwMDozNjoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbmluZGV4IDcyODIzMWQ4Zjk0Y2EuLjUwOGUxYmVhOGZjNWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcXG5AQCAtMTM2LDYgKzEzNiw5IEBAXFxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfU1dfTUFTS1xcdDB4MDAwMlxcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0tcXHQweDAwMDFcXG4gXFxuKy8qIFRpbWUgdGhlIGNoaXAgbmVlZHMgdG8gY29tcGxldGUgYSByZXNldCwgcGVyIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiAqL1xcbisjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVNcXHQxMDAwXFxuK1xcbiAvKiBJbnRlcnJ1cHQgcG9sYXJpdHkgcmVnaXN0ZXIgKi9cXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcXHQweDExMDBcXG4gI2RlZmluZSAgIFJUTDgzNjVNQl9JTlRSX1BPTEFSSVRZX01BU0tcXHQweDAwMDFcXG5AQCAtMjk4MCwxOCArMjk4MywzOCBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zd2l0Y2hfaW5pdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbiBcXG4gc3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbiB7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZGVhZGxpbmU7XFxuK1xcdHVuc2lnbmVkIGxvbmcgcmVtYWluaW5nO1xcbiBcXHR1MzIgdmFsO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0cHJpdi1cXHUwMDNld3JpdGVfcmVnX25vYWNrKHByaXYsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRyxcXG4gXFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLLCAxKSk7XFxuIFxcbitcXHRkZWFkbGluZSA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVMpO1xcbitcXG4gXFx0LyogUmVhbHRlayBkb2N1bWVudGF0aW9uIHNheXMgdGhlIGNoaXAgbmVlZHMgMSBzZWNvbmQgdG8gcmVzZXQuIFNsZWVwXFxuIFxcdCAqIGZvciAxMDAgbXMgYmVmb3JlIGFjY2Vzc2luZyBhbnkgcmVnaXN0ZXJzIHRvIHByZXZlbnQgQUNLIHRpbWVvdXRzLlxcbiBcXHQgKi9cXG4gXFx0bXNsZWVwKDEwMCk7XFxuLVxcdHJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlbWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIHZhbCxcXG4tXFx0XFx0XFx0XFx0XFx0ISh2YWwgXFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcXG4tXFx0XFx0XFx0XFx0XFx0MjAwMDAsIDFlNik7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VtYXAsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRywgdmFsLFxcbitcXHRcXHRcXHRcXHQgICAgICAgISh2YWwgXFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIDIwMDAwLCAxZTYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0LyogVGhlIGJpdCBjbGVhcmluZyBvbmx5IG1lYW5zIHRoZSByZXNldCB3YXMgYWNjZXB0ZWQsIG5vdCB0aGF0IHRoZVxcbitcXHQgKiBjaGlwIGlzIHJlYWR5OiByZWdpc3RlciB3cml0ZXMgaXNzdWVkIGJlZm9yZSB0aGUgZG9jdW1lbnRlZCByZXNldFxcbitcXHQgKiB0aW1lIGhhcyBlbGFwc2VkIGFyZSBzaWxlbnRseSBkcm9wcGVkIGJ5IGJsb2NrcyB0aGF0IGFyZSBzdGlsbFxcbitcXHQgKiBjb21pbmcgdXAsIHdoaWNoIGxlYXZlcyB0aGUgc3dpdGNoIGhhbGYgY29uZmlndXJlZC4gV2FpdCBvdXRcXG4rXFx0ICogd2hhdGV2ZXIgaXMgbGVmdCBvZiB0aGF0IHNlY29uZCwgbWVhc3VyZWQgZnJvbSB0aGUgcmVzZXQgd3JpdGUsIHNvXFxuK1xcdCAqIHRoZSBwb2xsIGFib3ZlIGRvZXMgbm90IGFkZCB0byB0aGUgdG90YWwuXFxuK1xcdCAqL1xcbitcXHRyZW1haW5pbmcgPSBkZWFkbGluZSAtIGppZmZpZXM7XFxuK1xcdGlmICgobG9uZylyZW1haW5pbmcgXFx1MDAzZSAwKVxcbitcXHRcXHRtc2xlZXAoamlmZmllc190b19tc2VjcyhyZW1haW5pbmcpKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjI0LjM3NDExOTYzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzgwODI4NDQ0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjaGlwIHJlc2V0IGxvZ2ljIChydGw4MzY1bWJfcmVzZXRfY2hpcCkgaW4gdGhlIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggQVNJQ3MgY29ubmVjdGVkIG92ZXIgTURJTyBvciBTTUkgYnVzZXMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0tWTSBvbiBhbWQ2NCkgdXNlZCBieSBzeXprYWxsZXIuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjJmZDY3Mzc4MWY4YmQ3Y2QwZWJmYWM1YzlhMjk5ZDFhN2YyZGM2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDA6MzY6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuaW5kZXggNzI4MjMxZDhmOTRjYS4uNTA4ZTFiZWE4ZmM1YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbkBAIC0xMzYsNiArMTM2LDkgQEBcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0tcdDB4MDAwMlxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1x0MHgwMDAxXG4gXG4rLyogVGltZSB0aGUgY2hpcCBuZWVkcyB0byBjb21wbGV0ZSBhIHJlc2V0LCBwZXIgUmVhbHRlayBkb2N1bWVudGF0aW9uICovXG4rI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TXHQxMDAwXG4rXG4gLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcdDB4MTEwMFxuICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLXHQweDAwMDFcbkBAIC0yOTgwLDE4ICsyOTgzLDM4IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuIHtcbitcdHVuc2lnbmVkIGxvbmcgZGVhZGxpbmU7XG4rXHR1bnNpZ25lZCBsb25nIHJlbWFpbmluZztcbiBcdHUzMiB2YWw7XG4rXHRpbnQgcmV0O1xuIFxuIFx0cHJpdi1cdTAwM2V3cml0ZV9yZWdfbm9hY2socHJpdiwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLFxuIFx0XHRcdCAgICAgIEZJRUxEX1BSRVAoUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSywgMSkpO1xuIFxuK1x0ZGVhZGxpbmUgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTtcbitcbiBcdC8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBTbGVlcFxuIFx0ICogZm9yIDEwMCBtcyBiZWZvcmUgYWNjZXNzaW5nIGFueSByZWdpc3RlcnMgdG8gcHJldmVudCBBQ0sgdGltZW91dHMuXG4gXHQgKi9cbiBcdG1zbGVlcCgxMDApO1xuLVx0cmV0dXJuIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsXG4tXHRcdFx0XHRcdCEodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcbi1cdFx0XHRcdFx0MjAwMDAsIDFlNik7XG4rXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VtYXAsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcbitcdFx0XHRcdCAgICAgICAyMDAwMCwgMWU2KTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHQvKiBUaGUgYml0IGNsZWFyaW5nIG9ubHkgbWVhbnMgdGhlIHJlc2V0IHdhcyBhY2NlcHRlZCwgbm90IHRoYXQgdGhlXG4rXHQgKiBjaGlwIGlzIHJlYWR5OiByZWdpc3RlciB3cml0ZXMgaXNzdWVkIGJlZm9yZSB0aGUgZG9jdW1lbnRlZCByZXNldFxuK1x0ICogdGltZSBoYXMgZWxhcHNlZCBhcmUgc2lsZW50bHkgZHJvcHBlZCBieSBibG9ja3MgdGhhdCBhcmUgc3RpbGxcbitcdCAqIGNvbWluZyB1cCwgd2hpY2ggbGVhdmVzIHRoZSBzd2l0Y2ggaGFsZiBjb25maWd1cmVkLiBXYWl0IG91dFxuK1x0ICogd2hhdGV2ZXIgaXMgbGVmdCBvZiB0aGF0IHNlY29uZCwgbWVhc3VyZWQgZnJvbSB0aGUgcmVzZXQgd3JpdGUsIHNvXG4rXHQgKiB0aGUgcG9sbCBhYm92ZSBkb2VzIG5vdCBhZGQgdG8gdGhlIHRvdGFsLlxuK1x0ICovXG4rXHRyZW1haW5pbmcgPSBkZWFkbGluZSAtIGppZmZpZXM7XG4rXHRpZiAoKGxvbmcpcmVtYWluaW5nIFx1MDAzZSAwKVxuK1x0XHRtc2xlZXAoamlmZmllc190b19tc2VjcyhyZW1haW5pbmcpKTtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjoyNC4zNzQxMjEyNzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDM2OTYwMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhbmFseXplIHRoaXMgbW9kaWZpY2F0aW9uIHRvIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgIGZ1bmN0aW9uLiBGaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgcHJlY2lzZWx5IHdoYXQgdGhlIGBydGw4MzY1bWJgIGRyaXZlciBlbnRhaWxzLiBJcyB0aGlzIGluZGVlZCBhIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgKERTQSkgZHJpdmVyIHRhcmdldGluZyB0aG9zZSBSZWFsdGVrIFJUTDgzNjVNQiAvIFJUTDgzNjZSQiBldGhlcm5ldCBzd2l0Y2ggY2hpcHM/IEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgcHVycG9zZSBhbmQgaW50ZW5kZWQgZW52aXJvbm1lbnQuXG5cbkknbGwgdGFrZSBhIGxvb2sgYXQgdGhlIGJyb2FkZXIgY29udGV4dCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL2AuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXIncyBwcm9iaW5nIG1lY2hhbmlzbSBhbmQgdXNhZ2Ugd2l0aGluIHRoZSBrZXJuZWwncyBEU0EgZnJhbWV3b3JrLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gZm9yIG1lIGlzIHdoZXRoZXIgdGhpcyBkcml2ZXIgbmVjZXNzaXRhdGVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGZvciBvcGVyYXRpb24sIG9yIGlmIGl0J3MgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSB3aXRoaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIgb3IgUUVNVS4gVGhhdCB3aWxsIGluZm9ybSBob3cgYWdncmVzc2l2ZWx5IHRvIHB1cnN1ZSB0aGlzLlxuXG5UbyBnYWluIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgcXVpY2tseSwgSeKAmWxsIGxldmVyYWdlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBlZmZpY2llbnRseSBkaXNzZWN0IHRoZSBkcml2ZXIgYW5kIGl0cyBpbnRlcmFjdGlvbnMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIGFzc2VzcyB0aGUgcGF0Y2gncyBpbXBhY3QgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjoyOC40MTEwODQ1NTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NzcyNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY3NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgKz0gcnRsODM2NW1iLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxOTpydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMDpcXHRcXHQgIHJ0bDgzNjVtYl90YWJsZS5vIFxcXFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMTpcXHRcXHQgIHJ0bDgzNjVtYl92bGFuLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIyOlxcdFxcdCAgcnRsODM2NW1iX2wyLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIzOiMgZW5kIG9mIHJ0bDgzNjVtYi1vYmpzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg9MTkwPWV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjZyYl92YXJpYW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOi8qIEZvcndhcmRpbmcgYW5kIG11bHRpY2FzdCBkYXRhYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBydGw4MzY1bWIgc3dpdGNoIGZhbWlseVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTojaW5jbHVkZSBcXFwicnRsODM2NW1iX2wyLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTA6I2luY2x1ZGUgXFxcInJ0bDgzNjVtYl90YWJsZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjkyOnN0cnVjdCBydGw4MzY1bWJfbDJfdWNfa2V5IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy05My1cXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy05OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDA6c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTAxOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWNfa2V5IGtleTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMDItXFx0dTggcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMTQ6c3RydWN0IHJ0bDgzNjVtYl9sMl9tY19rZXkge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExNS1cXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTIzOnN0cnVjdCBydGw4MzY1bWJfbDJfbWMge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEyNDpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSBrZXk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTI1LVxcdHUxNiBtZW1iZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTM0OnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9kYXRhX3RvX3VjKGNvbnN0IHUxNiAqZGF0YSwgc3RydWN0IHJ0bDgzNjVtYl9sMl91YyAqdWMpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTE2My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxNjQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl91YyAqdWMsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjAyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjIwMzpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfZGF0YV90b19tYyhjb25zdCB1MTYgKmRhdGEsIHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgKm1jKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjMxOnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgKm1jLCB1MTYgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI2MS0vKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI2MjogKiBydGw4MzY1bWJfbDJfZ2V0X25leHRfdWMoKSAtIGdldCB0aGUgbmV4dCBVbmljYXN0IEwyIGVudHJ5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYzLSAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgxLSAqKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODI6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4My1cXHRcXHRcXHQgICAgIHN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSAqZW50cnkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODUtXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg2OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjg3LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjg4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4OTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5MC1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1JFQUQsIGFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjk2OlxcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX3VjKGRhdGEsIFxcdTAwMjZ1Yyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjk3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMwNTppbnQgcnRsODM2NW1iX2wyX2FkZF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDYtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA5LVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMxMDpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHVjID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzExLVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzI4LVxcdHVjLmFnZSA9IDE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzI5OlxcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFxcdTAwMjZ1YywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMzMS1cXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzMyOlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMzLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM0NTppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDYtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzQ5LVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM1MDpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHVjID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzUxLVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYwLVxcdHVjLmFnZSA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzYxOlxcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFxcdTAwMjZ1YywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzY3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2ODpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2OS1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcXHUwMDI2YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozODQ6aW50IHJ0bDgzNjVtYl9sMl9mbHVzaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZClcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ0OTppbnQgcnRsODM2NW1iX2wyX2FkZF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTAtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDUzLVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ1NDpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDU1LVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY1LVxcdG1jLmlzX3N0YXRpYyA9IDE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDY2OlxcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFxcdTAwMjZtYywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2OC1cXHQvKiBGaXJzdCBsb29rIGZvciBhbiBleGlzdGluZyBlbnRyeSAodG8gZ2V0IGV4aXN0aW5nIHBvcnQgbWVtYmVycykgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0Njk6XFx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzAtXFx0XFx0XFx0XFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9SRUFELCBcXHUwMDI2YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3NC1cXHRcXHQvKiBUaGVyZSBpcyBhbHJlYWR5IGFuIGVudHJ5Li4uICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDc1OlxcdFxcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGRhdGEsIFxcdTAwMjZtYyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc2LVxcdFxcdGRldl9kYmcocHJpdi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDg5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ5MDpcXHRcXHRydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShcXHUwMDI2bWMsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ5MS1cXHR9IGVsc2UgaWYgKHJldCA9PSAtRU5PRU5UKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MDctXFx0LyogYWRkIHRoZSBuZXcgZW50cnkgb3IgdXBkYXRlIGFuIGV4aXN0aW5nIG9uZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUwODpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwOS1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcXHUwMDI2YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUxOS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MjA6aW50IHJ0bDgzNjVtYl9sMl9kZWxfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTIxLVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyNC1cXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MjU6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyBtYyA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyNi1cXHR1MTYgYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMS1cXHRtYy5rZXkuaXZsID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MzI6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM0LVxcdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzNTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNi1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1JFQUQsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU1MDpcXHRydGw4MzY1bWJfbDJfZGF0YV90b19tYyhkYXRhLCBcXHUwMDI2bWMpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU1MS1cXHRkZXZfZGJnKHByaXYtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2Ny1cXHR9XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTY4OlxcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFxcdTAwMjZtYywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU3MC1cXHQvKiB1cGRhdGUgdGhlIGV4aXN0aW5nIGVudHJ5LiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU3MTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU3Mi1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcXHUwMDI2YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyOi8qIEZvcndhcmRpbmcgYW5kIG11bHRpY2FzdCBkYXRhYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBydGw4MzY1bWIgc3dpdGNoIGZhbWlseVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjE1OmludCBydGw4MzY1bWJfbDJfZ2V0X25leHRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2ICphZGRyLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xNi1cXHRcXHRcXHQgICAgIHN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSAqZW50cnkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjE3OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE4LVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE5LVxcdFxcdFxcdHUxNiBlZmlkLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMDppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yMS1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbc3RhdGljIEVUSF9BTEVOXSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yMi1cXHRcXHRcXHR1MTYgZWZpZCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjM6aW50IHJ0bDgzNjVtYl9sMl9mbHVzaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjU6aW50IHJ0bDgzNjVtYl9sMl9hZGRfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjYtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI3LVxcdFxcdFxcdHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI4OmludCBydGw4MzY1bWJfbDJfZGVsX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI5LVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQtICogcmVxdWlyZSB0aGUgcnRsODM2N2QgdmVuZG9yIGRyaXZlci4gV2l0aCBhbGwgdGhpcyB1bmNlcnRhaW50eSwgdGhlIGRyaXZlciBoYXNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1OiAqIGJlZW4gbW9kZXN0bHkgbmFtZWQgcnRsODM2NW1iLiBGdXR1cmUgaW1wbGVtZW50b3JzIG1heSB3aXNoIHRvIHJlbmFtZSB0aGluZ3NcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2LSAqIGFjY29yZGluZ2x5Llxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDktI2luY2x1ZGUgXFxcInJ0bDgzeHguaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMDojaW5jbHVkZSBcXFwicnRsODM2NW1iX2wyLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE6I2luY2x1ZGUgXFxcInJ0bDgzNjVtYl92bGFuLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI1OS0gKiAzLWJpdCBNU0IgZmllbGQgKENUUkwxKS4gVGhlIGNoaXAgcmVzZXRzIHRoZW0gdG8gMHgxRkZGRjsgc2VlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoyNjA6ICogcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cygpLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjYxLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MjctI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX01BQ19MT09QQkFDS19NQVNLXFx0XFx0MHgwMDQwXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0Mjg6LyogU2VlIFxcdTAwMjZydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDI5LSNkZWZpbmUgICBSVEw4MzY1TUJfUE9SVF9NSVNDX0NGR19WTEFOX0VHUkVTU19NT0RFX01BU0tcXHRcXHQweDAwMzBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDMyLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NDMzOiAqIGVudW0gcnRsODM2NW1iX3ZsYW5fZWdyZXNzX21vZGUgLSBwb3J0IFZMQU4gZWdyZXNzIG1vZGVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQzNC0gKiBAUlRMODM2NU1CX1ZMQU5fRUdSRVNTX01PREVfT1JJR0lOQUw6IGZvbGxvdyB1bnRhZyBtYXNrIGluIFZMQU40ayB0YWJsZSBlbnRyeVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00NDItICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0NDM6ZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00NDQtXFx0UlRMODM2NU1CX1ZMQU5fRUdSRVNTX01PREVfT1JJR0lOQUwgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0ODc6ZW51bSBydGw4MzY1bWJfbWliX2NvdW50ZXJfaW5kZXgge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDg4LVxcdFJUTDgzNjVNQl9NSUJfaWZJbk9jdGV0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTQ5OnN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTUwLVxcdHUzMiBvZmZzZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjU1ODpzdGF0aWMgc3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciBydGw4MzY1bWJfbWliX2NvdW50ZXJzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTktXFx0UlRMODM2NU1CX01BS0VfTUlCX0NPVU5URVIoMCwgNCwgaWZJbk9jdGV0cyksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYxOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYxOTpzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUocnRsODM2NW1iX21pYl9jb3VudGVycykgPT0gUlRMODM2NU1CX01JQl9FTkQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjIwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIxOnN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjItXFx0dTE2IHJlZztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjI2LS8qIExpZnRlZCBmcm9tIHRoZSB2ZW5kb3IgZHJpdmVyIHNvdXJjZXMgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYyNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyOC1cXHR7IDB4MTNFQiwgMHgxNUJCIH0sIHsgMHgxMzAzLCAweDA2RDYgfSwgeyAweDEzMDQsIDB4MDcwMCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MzY6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfaW5pdF9qYW1fY29tbW9uW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzctXFx0eyAweDEyMDAsIDB4N0ZDQiB9LCB7IDB4MDg4NCwgMHgwMDAzIH0sIHsgMHgwNkVCLCAweDAwMDEgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQ2LSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjQ3OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NDgtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDk6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9zZ21paVtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjUwLVxcdHsgMHgwNDgwLCAweDA0RDcgfSwgeyAweDA0ODEsIDB4Rjk5NCB9LCB7IDB4MDQ4MiwgMHgyNDIwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY1OC0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1OTogKiBydGw4MzY1bWJfc2RzX3Byb2JlX29wdGlvbigpLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYwLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1faHNnbWlpW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjItXFx0eyAweDA1MDAsIDB4ODJGMCB9LCB7IDB4MDUwMSwgMHhGMTk1IH0sIHsgMHgwNTAyLCAweDMxQTIgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjY2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjY3OmVudW0gcnRsODM2NW1iX3BoeV9pbnRlcmZhY2VfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjgtXFx0UlRMODM2NU1CX1BIWV9JTlRFUkZBQ0VfTU9ERV9JTlZBTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY3OC0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY3OTogKiBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAtIGV4dGVybmFsIGludGVyZmFjZSBpbmZvXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODAtICogQHBvcnQ6IHRoZSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4NC0gKiBSZXByZXNlbnRzIGEgbWFwcGluZzogcG9ydCAtXFx1MDAzZSB7IGlkLCBzdXBwb3J0ZWRfaW50ZXJmYWNlcyB9LiBUbyBiZSBlbWJlZGRlZFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg1OiAqIGluIFxcdTAwMjZzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyBmb3IgZXZlcnkgcG9ydCB3aXRoIGFuIGV4dGVybmFsIGludGVyZmFjZS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4Ni0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY4NzpzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODgtXFx0aW50IHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5My0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY5NDogKiBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAtIHN0YXRpYyBjaGlwLXNwZWNpZmljIGluZm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5NS0gKiBAbmFtZTogaHVtYW4tcmVhZGFibGUgY2hpcCBuYW1lXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwMy0gKiBieSB0aGlzIGRyaXZlci4gV2hlbiBhZGRpbmcgc3VwcG9ydCBmb3IgYW5vdGhlciBjaGlwIGluIHRoZSBmYW1pbHksIGEgbmV3XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDQ6ICogY2hpcCBpbmZvIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgcnRsODM2NW1iX2NoaXBfaW5mb3MgYXJyYXkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDUtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDY6c3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA3LVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwOS1cXHR1MzIgY2hpcF92ZXI7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MTA6XFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgZXh0aW50c1tSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxMTpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgKmphbV90YWJsZTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxMi1cXHRzaXplX3QgamFtX3NpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxNi0jZGVmaW5lIFBIWV9JTlRGKF9tb2RlKSAoUlRMODM2NU1CX1BIWV9JTlRFUkZBQ0VfTU9ERV8gIyMgX21vZGUpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MTc6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIHJ0bDgzNjVtYl9jaGlwX2luZm9zW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MTgtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MjUtXFx0XFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcyNjpcXHRcXHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcyNzpcXHRcXHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzI4LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTczNy1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzM4OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzM5OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NDAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzUxLVxcdFxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NTI6XFx0XFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NTM6XFx0XFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc1NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjQtXFx0XFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc2NTpcXHRcXHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc2NjpcXHRcXHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY3LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3MDplbnVtIHJ0bDgzNjVtYl9zdHBfc3RhdGUge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzcxLVxcdFJUTDgzNjVNQl9TVFBfU1RBVEVfRElTQUJMRUQgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Nzc6ZW51bSBydGw4MzY1bWJfY3B1X2luc2VydCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzgtXFx0UlRMODM2NU1CX0NQVV9JTlNFUlRfVE9fQUxMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzgyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzgzOmVudW0gcnRsODM2NW1iX2NwdV9wb3NpdGlvbiB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODQtXFx0UlRMODM2NU1CX0NQVV9QT1NfQUZURVJfU0EgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODg6ZW51bSBydGw4MzY1bWJfY3B1X2Zvcm1hdCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODktXFx0UlRMODM2NU1CX0NQVV9GT1JNQVRfOEJZVEVTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzkyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzkzOmVudW0gcnRsODM2NW1iX2NwdV9yeGxlbiB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTQtXFx0UlRMODM2NU1CX0NQVV9SWExFTl83MkJZVEVTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzk4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Nzk5OiAqIHN0cnVjdCBydGw4MzY1bWJfY3B1IC0gQ1BVIHBvcnQgY29uZmlndXJhdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODAwLSAqIEBlbmFibGU6IGVuYWJsZS9kaXNhYmxlIGhhcmR3YXJlIGluc2VydGlvbiBvZiBDUFUgdGFnIGluIHN3aXRjaC1cXHUwMDNlQ1BVIGZyYW1lc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTAtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTE6c3RydWN0IHJ0bDgzNjVtYl9jcHUge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODEyLVxcdGJvb2wgZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTQtXFx0dTMyIHRyYXBfcG9ydDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNTpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfaW5zZXJ0IGluc2VydDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNjpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfcG9zaXRpb24gcG9zaXRpb247XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTc6XFx0ZW51bSBydGw4MzY1bWJfY3B1X3J4bGVuIHJ4X2xlbmd0aDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxODpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfZm9ybWF0IGZvcm1hdDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxOS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjEtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MjI6ICogc3RydWN0IHJ0bDgzNjVtYl9wb3J0IC0gcHJpdmF0ZSBwZXItcG9ydCBkYXRhXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjMtICogQHByaXY6IHBvaW50ZXIgdG8gcGFyZW50IHJlYWx0ZWtfcHJpdiBkYXRhXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjQtICogQGluZGV4OiBEU0EgcG9ydCBpbmRleCwgc2FtZSBhcyBkc2FfcG9ydDo6aW5kZXhcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNTogKiBAc3RhdHM6IGxpbmsgc3RhdGlzdGljcyBwb3B1bGF0ZWQgYnkgcnRsODM2NW1iX3N0YXRzX3BvbGwsIHJlYWR5IGZvciBhdG9taWNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNjogKiAgICAgICAgIGFjY2VzcyB2aWEgcnRsODM2NW1iX2dldF9zdGF0czY0XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjctICogQHN0YXRzX2xvY2s6IHByb3RlY3QgdGhlIHN0YXRzIHN0cnVjdHVyZSBkdXJpbmcgcmVhZC91cGRhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODI5LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODMwOnN0cnVjdCBydGw4MzY1bWJfcG9ydCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MzEtXFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODM4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODM5OiAqIHN0cnVjdCBydGw4MzY1bWIgLSBkcml2ZXIgcHJpdmF0ZSBkYXRhXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NDAtICogQHByaXY6IHBvaW50ZXIgdG8gcGFyZW50IHJlYWx0ZWtfcHJpdiBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1MS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1MjpzdHJ1Y3QgcnRsODM2NW1iIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1My1cXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODU0LVxcdGludCBpcnE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTU6XFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gKmNoaXBfaW5mbztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NjpcXHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSBjcHU7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTctXFx0c3RydWN0IG11dGV4IG1pYl9sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU4OlxcdHN0cnVjdCBydGw4MzY1bWJfcG9ydCBwb3J0c1tSVEw4MzY1TUJfTUFYX05VTV9QT1JUU107XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTktXFx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODYyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODYzOiNkZWZpbmUgcGNzX3RvX3J0bDgzNjVtYihfcGNzKSBjb250YWluZXJfb2YoKF9wY3MpLCBzdHJ1Y3QgcnRsODM2NW1iLCBwY3MpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjU6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODczLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODc0OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODc1LVxcdFxcdFxcdFxcdCAgICAgdTMyIG9jcF9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MDMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MDQ6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MDUtXFx0XFx0XFx0XFx0ICB1MzIgb2NwX2FkZHIsIHUxNiAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTExLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTEyOlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTEzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkxNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkxNjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkyOS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkzMDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkzMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NDctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5NDg6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTQ5LVxcdFxcdFxcdFxcdCAgIHUzMiBvY3BfYWRkciwgdTE2IGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1NjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5NjA6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShwcml2LCBwaHksIG9jcF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk2MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NzktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5ODA6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05ODEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTkwOnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05OTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDAzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAwNDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9yZWFkKHByaXYsIHBoeSwgb2NwX2FkZHIsIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAwNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDE4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxOS1cXHRcXHRcXHQgICAgICAgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAzMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMzI6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3Bfd3JpdGUocHJpdiwgcGh5LCBvY3BfYWRkciwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMzMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA0NzpydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA0OC17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ5OlxcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcHJpdi1cXHUwMDNlY2hpcF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1MC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUlRMODM2NU1CX01BWF9OVU1fRVhUSU5UUzsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDUzOlxcdFxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1NC1cXHRcXHRcXHRcXHUwMDI2bWItXFx1MDAzZWNoaXBfaW5mby1cXHUwMDNlZXh0aW50c1tpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MTA2Nj1zdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDY3OnJ0bDgzNjVtYl9nZXRfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDY4LVxcdFxcdFxcdCAgIGVudW0gZHNhX3RhZ19wcm90b2NvbCBtcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3MC1cXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDcxOlxcdHN0cnVjdCBydGw4MzY1bWJfY3B1ICpjcHU7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDcyOlxcdHN0cnVjdCBydGw4MzY1bWIgKm1iO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4Mi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODM6c3RhdGljIGludCBydGw4MzY1bWJfZXh0X2NvbmZpZ19yZ21paShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODQtXFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODUte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4NjpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50ID1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODc6XFx0XFx0cnRsODM2NW1iX2dldF9wb3J0X2V4dGludChwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODgtXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gXFx1MDAyNnByaXYtXFx1MDAzZWRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTE1LVxcdCAqIGZvcmNpbmcgdGhlIGV4dGVybmFsIGludGVyZmFjZSBpbnRvIGEgcGFydGljdWxhciBtb2RlLCB3aGljaCBpcyBkb25lXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE2OlxcdCAqIGluIHRoZSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua197dXAsZG93bn0gZnVuY3Rpb25zLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTExNy1cXHQgKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTY0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE2NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExODUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTg2OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiBhZGRyLCB1MTYgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIyNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMjg6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3Byb2JlX29wdGlvbihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIyOS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjMwOlxcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcHJpdi1cXHUwMDNlY2hpcF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTIzMTpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIzMi1cXHR1MzIgb3B0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjczLSAqIHRoZWlyIG1heGltdW0gaW4gaXRzIHN3aXRjaCBpbml0LCB1bmNvbmRpdGlvbmFsbHkgZm9yIHRoZSB3aG9sZSBjaGlwXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjc0OiAqIGZhbWlseS4gVGhlIGNoaXAgcmVzZXQgaW4gcnRsODM2NW1iX3NldHVwKCkgcHV0cyB0aGVtIGJhY2sgdG8gdGhlaXIgcmVzZXRcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNzUtICogZGVmYXVsdCBvZiAweDFGRkZGLCBhIH4xLjA0OCBHYnBzIGxpbWl0IHdoaWNoIGNhcHMgdGhlIGFnZ3JlZ2F0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjgyLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI4MzpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcmFpc2VfcmF0ZV9saW1pdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzA4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMwOTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzEwLVxcdFxcdFxcdFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTMte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMxNDpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgKnNkc19qYW07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzE1LVxcdGNvbnN0IGludCBpZCA9IFJUTDgzNjVNQl9TRFNfRVhUX0lOVEVSRkFDRV9JRDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMTY6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwY3NfdG9fcnRsODM2NW1iKHBjcyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzE3LVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMjYtXFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzI3OlxcdFxcdHNkc19qYW0gPSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzI4OlxcdFxcdHNkc19qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX3Nkc19qYW1faHNnbWlpKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMjktXFx0XFx0bW9kZSA9IFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX0hTR01JSTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMzAtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMzE6XFx0XFx0c2RzX2phbSA9IHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMzMjpcXHRcXHRzZHNfamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMzMtXFx0XFx0bW9kZSA9IFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1NHTUlJO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzYzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzZHNfamFtX3NpemU7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTM2NDpcXHRcXHRyZXQgPSBydGw4MzY1bWJfc2RzX3dyaXRlKHByaXYsIHNkc19qYW1baV0ucmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM2NS1cXHRcXHRcXHRcXHRcXHQgIHNkc19qYW1baV0udmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM5MC1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzOTE6XFx0cmV0ID0gcnRsODM2NW1iX3Nkc193cml0ZShwcml2LCBSVEw4MzY1TUJfU0RTX1JFR19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzOTItXFx0XFx0XFx0XFx0ICBSVEw4MzY1TUJfU0RTX1JFU0VUX0RFQVNTRVJUKTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjoyOC40NTgwNzEwNTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzA5ODY4OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgcnRsODM2NW1iYCBwcm9iZSBwcm9jZXNzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHBpbnBvaW50IGhvdyB0aGlzIHNwZWNpZmljIGRyaXZlciBpcyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUbyBkbyB0aGF0IGVmZmljaWVudGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGUgY3JpdGljYWwgcmVnaXN0cmF0aW9uIHBvaW50cyBhcmUsIHNvIEknbGwgc3RhcnQgYnkgZm9jdXNpbmcgbXkgc2VhcmNoIG9uIHRoZSBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvYCBkaXJlY3RvcnkuXG5cbkknbGwgYmUgdXNpbmcgYGdyZXBgIHRvIGZpbmQgaW5zdGFuY2VzIG9mIGBydGw4MzY1bWJfdmFyaWFudGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB3aGVyZSB0aGUgdmFyaWFudC1zcGVjaWZpYyBjb2RlIGxpdmVzLCBhbmQgaG9wZWZ1bGx5LCBJJ2xsIGJlIGFibGUgdG8gdHJhY2UgYmFjayBmcm9tIHRoZXJlIHRvIHRoZSBwcm9iZSBmdW5jdGlvbiBpdHNlbGYuIEknbSBleHBlY3RpbmcgdGhpcyBgcnRsODM2NW1iX3ZhcmlhbnRgIHRvIGJlIGEga2V5IGVsZW1lbnQgZm9yIGlkZW50aWZ5aW5nIHRoZSBoYXJkd2FyZSBhbmQgaW5zdGFudGlhdGluZyB0aGUgY29ycmVjdCBkcml2ZXIuIEZyb20gdGhlcmUsIEkgY2FuIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIG1vZHVsZSBhbmQgdGhlIHByb2JlIGFyZSByZWdpc3RlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTg5MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjMwLjc2Nzk0MjE0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODAzMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgzNjVtYl92YXJpYW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xOTA9ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NnJiX3ZhcmlhbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5MTpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTkyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgcnRsODM2NW1iX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM1OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNjA6Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudCA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNjEtXFx0LmRzX29wcyA9IFxcdTAwMjZydGw4MzY1bWJfc3dpdGNoX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM3MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY1bWJfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNzE6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZWFsdGVrLHJ0bDgzNjVtYlxcXCIsIC5kYXRhID0gXFx1MDAyNnJ0bDgzNjVtYl92YXJpYW50LCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM3Mi1cXHR7IC8qIHNlbnRpbmVsICovIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjMwLjgyMDc1MTA2MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NjQ0MzA0MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgUlRMODM2NU1CIERyaXZlciBVc2FnZSBhbmQgUHJvYmluZyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgaWRlbnRpZnkgcHJlY2lzZWx5IHdoaWNoIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgdGhlIGBydGw4MzY1bWJfdmFyaWFudGAgZW51bWVyYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYHJ0bDgzNjVtYmAgYmFzZSBhbmQgaXRzIHNwZWNpZmljIHZhcmlhbnRzLiBLbm93aW5nIHRoZSB2YXJpYW50cyB3aWxsIGdpdmUgbWUgaW5zaWdodHMgaW50byBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMgb3IgY29uZmlndXJhdGlvbnMuXG5cblRoZW4sIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwcm9iaW5nIG1lY2hhbmlzbS4gSG93IGRvZXMgdGhlIHN5c3RlbSAqZmluZCogYW5kIGlkZW50aWZ5IHRoaXMgY2hpcD8gSSB3YW50IHRvIHRyYWNlIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIElzIGl0IGEgc3RhbmRhcmQgUENJL1NQSS9JMkMgZW51bWVyYXRpb24sIG9yIGlzIHRoZXJlIHNvbWV0aGluZyBtb3JlIGN1c3RvbSBnb2luZyBvbj8gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgZmxvdyB3aWxsIGJlIGNyaXRpY2FsIHRvIGFueSBkZWJ1Z2dpbmcgb3IgY3VzdG9taXphdGlvbiBJIG1pZ2h0IG5lZWQgdG8gZG8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXRlY3Rpb24gcHJvY2VzcyAtIHRoZSBjaGVja3MsIHRoZSByZWdpc3RlcnMgZXhhbWluZWQsIHRoZSBmYWxsYmFjayBpZiB0aGUgZGV2aWNlIGlzbid0IGltbWVkaWF0ZWx5IGlkZW50aWZpZWQuIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgcXVpcmtzIG9yIHNwZWNpZmljIGZsYWdzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGhvdyB0aGUgY2hpcCBpcyBoYW5kbGVkLiBIb3BlZnVsbHksIHRoZSBjb21tZW50cyBhcmUgc3VmZmljaWVudCwgYnV0IEknbSBwcmVwYXJlZCB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBmbG93IG1ldGljdWxvdXNseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjozMy41ODUxODM4NjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExNzYzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTU9EVUxFX0RFVklDRV9UQUJMRXxyZWFsdGVrX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1NjYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFSylcXHRcXHQrPSByZWFsdGVrX2RzYS5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrX2RzYS1vYmpzXFx0XFx0XFx0Oj0gcnRsODN4eC5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT01PWlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjY6cmVhbHRla19kc2Etb2JqcyArPSByZWFsdGVrLW1kaW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTctZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlPTk9aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMDpyZWFsdGVrX2RzYS1vYmpzICs9IHJlYWx0ZWstc21pLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMS1lbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDQ6c3RhdGljIGludCByZWFsdGVrX21kaW9fd3JpdGUodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo0NjpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQ3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3MjpzdGF0aWMgaW50IHJlYWx0ZWtfbWRpb19yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzMte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjc0OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzUtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEwMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfbWRpb19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEwNTpcXHQucmVnX3JlYWQgPSByZWFsdGVrX21kaW9fcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDY6XFx0LnJlZ193cml0ZSA9IHJlYWx0ZWtfbWRpb193cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEwOS0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMTA6ICogcmVhbHRla19tZGlvX3Byb2JlKCkgLSBQcm9iZSBhIHBsYXRmb3JtIGRldmljZSBmb3IgYW4gTURJTy1jb25uZWN0ZWQgc3dpdGNoXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTExLSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSB0byBwcm9iZSBvbi5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEyMC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjE6aW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTIyLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjQ6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjUtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTI3OlxcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXFx1MDAyNnJlYWx0ZWtfbWRpb19pbmZvKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjgtXFx0aWYgKElTX0VSUihwcml2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEzMi1cXHRwcml2LVxcdTAwM2VtZGlvX2FkZHIgPSBtZGlvZGV2LVxcdTAwM2VhZGRyO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEzMzpcXHRwcml2LVxcdTAwM2V3cml0ZV9yZWdfbm9hY2sgPSByZWFsdGVrX21kaW9fd3JpdGU7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTQyLX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDM6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19tZGlvX3Byb2JlLCBcXFwiUkVBTFRFS19EU0FcXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTQ1LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE0NjogKiByZWFsdGVrX21kaW9fcmVtb3ZlKCkgLSBSZW1vdmUgdGhlIGRyaXZlciBvZiBhbiBNRElPLWNvbm5lY3RlZCBzd2l0Y2hcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDctICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHRvIGJlIHJlbW92ZWQuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTQtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU1OnZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU2LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNTc6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjUtfVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE2NjpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX21kaW9fcmVtb3ZlLCBcXFwiUkVBTFRFS19EU0FcXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE2OTogKiByZWFsdGVrX21kaW9fc2h1dGRvd24oKSAtIFNodXRkb3duIHRoZSBkcml2ZXIgb2YgYSBNRElPLWNvbm5lY3RlZCBzd2l0Y2hcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzAtICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHNodXR0aW5nIGRvd24uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzctICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTc4OnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzkte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE4MDpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE4Ni19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfbWRpb19zaHV0ZG93biwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTEyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjEzOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MTg6aW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjE5OnZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIwOnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyNDpzdGF0aWMgaW5saW5lIGludCByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTI4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjI5OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0zNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDozODpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NDI6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjQ3OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9jbGtfZGVsYXkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo1MjpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9zdGFydChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy01OC1cXHRncGlvZF9kaXJlY3Rpb25fb3V0cHV0KHByaXYtXFx1MDAzZW1kaW8sIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NTk6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTYyLVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NjM6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjQtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo2NTpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjgtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo2OTpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03MC1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3MTpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03Mi1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjczOlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTc0LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGlvLCAxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3NzpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9zdG9wKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03OC17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3OTpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04MC1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04MS1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjgyOlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTgzLVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGlvLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjg0OlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg1LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODY6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODctXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4ODpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04OS1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtOTEtXFx0LyogQWRkIGEgY2xpY2sgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjkyOlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkzLVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTQ6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtOTUtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwMjpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV93cml0ZV9iaXRzKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBkYXRhLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTAzLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwNC1cXHRmb3IgKDsgbGVuIFxcdTAwM2UgMDsgbGVuLS0pIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwNTpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwOC1cXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgISEoZGF0YSBcXHUwMDI2ICgxIFxcdTAwM2NcXHUwMDNjIChsZW4gLSAxKSkpKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwOTpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTExMi1cXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExMzpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTQtXFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTExNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExODpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9yZWFkX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGxlbiwgdTMyICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTI1OlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI4LVxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTI5OlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEzMC1cXHRcXHR1ID0gISFncGlvZF9nZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEzOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEzOTpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dhaXRfZm9yX2FjayhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTQ3OlxcdFxcdHJlYWx0ZWtfc21pX3JlYWRfYml0cyhwcml2LCAxLCBcXHUwMDI2YWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0OC1cXHRcXHRpZiAoYWNrID09IDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE1OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2MS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjI6XFx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCBkYXRhLCA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MzpcXHRyZXR1cm4gcmVhbHRla19zbWlfd2FpdF9mb3JfYWNrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTY0LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2NjpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGVfbm9hY2soc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2Ny17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjg6XFx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCBkYXRhLCA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTcxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTcyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9ieXRlMChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3Ni1cXHQvKiBSZWFkIGRhdGEgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE3NzpcXHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgOCwgXFx1MDAyNnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTc4LVxcdCpkYXRhID0gKHQgXFx1MDAyNiAweGZmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgwLVxcdC8qIFNlbmQgYW4gQUNLICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxODE6XFx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCAweDAwLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTg1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTg2OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9ieXRlMShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5MC1cXHQvKiBSZWFkIGRhdGEgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE5MTpcXHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgOCwgXFx1MDAyNnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkyLVxcdCpkYXRhID0gKHQgXFx1MDAyNiAweGZmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTk0LVxcdC8qIFNlbmQgYW4gQUNLICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxOTU6XFx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCAweDAxLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjAwOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9yZWcoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUzMiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIwOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwOTpcXHRyZWFsdGVrX3NtaV9zdGFydChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMS1cXHQvKiBTZW5kIFJFQUQgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjEyOlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgcHJpdi1cXHUwMDNldmFyaWFudC1cXHUwMDNlY21kX3JlYWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjEzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxNi1cXHQvKiBTZXQgQUREUls3OjBdICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMTc6XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFxcdTAwMjYgMHhmZik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjIxLVxcdC8qIFNldCBBRERSWzE1OjhdICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMjI6XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFxcdTAwM2VcXHUwMDNlIDgpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyNi1cXHQvKiBSZWFkIERBVEFbNzowXSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjI3OlxcdHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTAocHJpdiwgXFx1MDAyNmxvKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyOC1cXHQvKiBSZWFkIERBVEFbMTU6OF0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyOTpcXHRyZWFsdGVrX3NtaV9yZWFkX2J5dGUxKHByaXYsIFxcdTAwMjZoaSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIzNS0gb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjM2OlxcdHJlYWx0ZWtfc21pX3N0b3AocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzctXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNDEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNDI6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9yZWcoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0My1cXHRcXHRcXHRcXHQgdTMyIGFkZHIsIHUzMiBkYXRhLCBib29sIGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjUwOlxcdHJlYWx0ZWtfc21pX3N0YXJ0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjUxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjUyLVxcdC8qIFNlbmQgV1JJVEUgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjUzOlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgcHJpdi1cXHUwMDNldmFyaWFudC1cXHUwMDNlY21kX3dyaXRlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNTctXFx0LyogU2V0IEFERFJbNzowXSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjU4OlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcXHUwMDI2IDB4ZmYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2Mi1cXHQvKiBTZXQgQUREUlsxNTo4XSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjYzOlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcXHUwMDNlXFx1MDAzZSA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjctXFx0LyogV3JpdGUgREFUQVs3OjBdICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNjg6XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFxcdTAwMjYgMHhmZik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjczLVxcdGlmIChhY2spXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNzQ6XFx0XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFxcdTAwM2VcXHUwMDNlIDgpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjc1LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI3NjpcXHRcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlX25vYWNrKHByaXYsIGRhdGEgXFx1MDAzZVxcdTAwM2UgOCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjgyLSBvdXQ6XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyODM6XFx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI4NC1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Mi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI5MzpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlX3JlZ19ub2Fjayh2b2lkICpjdHgsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yOTQte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mjk1OlxcdHJldHVybiByZWFsdGVrX3NtaV93cml0ZV9yZWcoY3R4LCByZWcsIHZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzAwOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGUodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAxLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwMjpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzA0OlxcdHJldHVybiByZWFsdGVrX3NtaV93cml0ZV9yZWcocHJpdiwgcmVnLCB2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA1LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwNi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwNzpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWQodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwOC17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDk6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxMTpcXHRyZXR1cm4gcmVhbHRla19zbWlfcmVhZF9yZWcocHJpdiwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEyLX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNDpzdGF0aWMgY29uc3Qgc3RydWN0IHJlYWx0ZWtfaW50ZXJmYWNlX2luZm8gcmVhbHRla19zbWlfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNTpcXHQucmVnX3JlYWQgPSByZWFsdGVrX3NtaV9yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzE2OlxcdC5yZWdfd3JpdGUgPSByZWFsdGVrX3NtaV93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxNy19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTktLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMjA6ICogcmVhbHRla19zbWlfcHJvYmUoKSAtIFByb2JlIGEgcGxhdGZvcm0gZGV2aWNlIGZvciBhbiBTTUktY29ubmVjdGVkIHN3aXRjaFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzIxLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2UgdG8gcHJvYmUgb24uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMzMTppbnQgcmVhbHRla19zbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMi17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMzNDpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzM1LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzc6XFx0cHJpdiA9IHJ0bDgzeHhfcHJvYmUoZGV2LCBcXHUwMDI2cmVhbHRla19zbWlfaW5mbyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzgtXFx0aWYgKElTX0VSUihwcml2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzUzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzU0OlxcdHByaXYtXFx1MDAzZXdyaXRlX3JlZ19ub2FjayA9IHJlYWx0ZWtfc21pX3dyaXRlX3JlZ19ub2FjaztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzYzLX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM2NDpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX3NtaV9wcm9iZSwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjYtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNjc6ICogcmVhbHRla19zbWlfcmVtb3ZlKCkgLSBSZW1vdmUgdGhlIGRyaXZlciBvZiBhIFNNSS1jb25uZWN0ZWQgc3dpdGNoXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjgtICogQHBkZXY6IHBsYXRmb3JtX2RldmljZSB0byBiZSByZW1vdmVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNzUtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNzY6dm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3Ny17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNzg6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzc5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODYtfVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfc21pX3JlbW92ZSwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODktLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozOTA6ICogcmVhbHRla19zbWlfc2h1dGRvd24oKSAtIFNodXRkb3duIHRoZSBkcml2ZXIgb2YgYSBTTUktY29ubmVjdGVkIHN3aXRjaFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzkxLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc2h1dHRpbmcgZG93bi5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzk4LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzk5OnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTQwMC17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo0MDE6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDctfVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NDA4OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfc21pX3NodXRkb3duLCBcXFwiUkVBTFRFS19EU0FcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjEzOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTg6aW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTk6dm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyMDp2b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTIzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MjQ6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjMzOnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6Mzg6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfc21pX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTIwPXN0cnVjdCBwaHlsaW5rX21hY19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjIxOnN0cnVjdCByZWFsdGVrX29wcztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMjItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg9NDE9c3RydWN0IHJ0bDgzNjZfdmxhbl80ayB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNDctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjQ4OnN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTQ5LVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC01My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NTQ6c3RydWN0IHJlYWx0ZWtfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTU1LVxcdHN0cnVjdCBkZXZpY2VcXHRcXHQqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTgwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDo4MTpcXHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50ICp2YXJpYW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC04Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC05My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6OTQ6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTk1LVxcdGludFxcdFxcdFxcdCgqd3JpdGVfcmVnX25vYWNrKSh2b2lkICpjdHgsIHUzMiBhZGRyLCB1MzIgZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTA0LS8qXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwNTogKiBzdHJ1Y3QgcmVhbHRla19vcHMgLSB2dGFibGUgZm9yIHRoZSBwZXItU01JLWNoaXB0eXBlIG9wZXJhdGlvbnNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTA2LSAqIEBkZXRlY3Q6IGRldGVjdHMgdGhlIGNoaXB0eXBlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA4OnN0cnVjdCByZWFsdGVrX29wcyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwOTpcXHRpbnRcXHQoKmRldGVjdCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExMDpcXHRpbnRcXHQoKnJlc2V0X2NoaXApKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTE6XFx0aW50XFx0KCpzZXR1cCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExMjpcXHRpbnRcXHQoKmdldF9taWJfY291bnRlcikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTEzLVxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExNS1cXHRcXHRcXHRcXHQgICB1NjQgKm1pYnZhbHVlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTE2OlxcdGludFxcdCgqZ2V0X3ZsYW5fbWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBpbmRleCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE3LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuX21jICp2bGFubWMpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTg6XFx0aW50XFx0KCpzZXRfdmxhbl9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGluZGV4LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMTktXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydGw4MzY2X3ZsYW5fbWMgKnZsYW5tYyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyMDpcXHRpbnRcXHQoKmdldF92bGFuXzRrKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgdmlkLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMjEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBydGw4MzY2X3ZsYW5fNGsgKnZsYW40ayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyMjpcXHRpbnRcXHQoKnNldF92bGFuXzRrKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMjMtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydGw4MzY2X3ZsYW5fNGsgKnZsYW40ayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyNDpcXHRpbnRcXHQoKmdldF9tY19pbmRleCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCAqdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI1OlxcdGludFxcdCgqc2V0X21jX2luZGV4KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGluZGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI2OlxcdGJvb2xcXHQoKmlzX3ZsYW5fdmFsaWQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCB2bGFuKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI3OlxcdGludFxcdCgqZW5hYmxlX3ZsYW4pKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI4OlxcdGludFxcdCgqZW5hYmxlX3ZsYW40aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjk6XFx0aW50XFx0KCplbmFibGVfcG9ydCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTMwOlxcdGludFxcdCgqcG9ydF9hZGRfaXNvbGF0aW9uKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTMxLVxcdFxcdFxcdFxcdCAgICAgIHUzMiBtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTMyOlxcdGludFxcdCgqcG9ydF9yZW1vdmVfaXNvbGF0aW9uKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTMzLVxcdFxcdFxcdFxcdFxcdCB1MzIgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNDpcXHRpbnRcXHQoKnBvcnRfc2V0X2VmaWQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MzIgZWZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNTpcXHRpbnRcXHQoKnBvcnRfc2V0X2xlYXJuaW5nKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTM2LVxcdFxcdFxcdFxcdCAgICAgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzc6XFx0aW50XFx0KCpwb3J0X3NldF91Y2FzdF9mbG9vZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEzOC1cXHRcXHRcXHRcXHRcXHRib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzOTpcXHRpbnRcXHQoKnBvcnRfc2V0X21jYXN0X2Zsb29kKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQwLVxcdFxcdFxcdFxcdFxcdGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQxOlxcdGludFxcdCgqcG9ydF9zZXRfYmNhc3RfZmxvb2QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDItXFx0XFx0XFx0XFx0XFx0Ym9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNDM6XFx0aW50XFx0KCpsMl9hZGRfdWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDQtXFx0XFx0XFx0ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDUtXFx0XFx0XFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0NjpcXHRpbnRcXHQoKmwyX2RlbF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0Ny1cXHRcXHRcXHQgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0OC1cXHRcXHRcXHQgICAgIHUxNiBlZmlkLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ5OlxcdGludFxcdCgqbDJfZ2V0X25leHRfdWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUwOlxcdFxcdFxcdFxcdCAgaW50IHBvcnQsIHN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSAqZW50cnkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTE6XFx0aW50XFx0KCpsMl9hZGRfbWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNTItXFx0XFx0XFx0ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbRVRIX0FMRU5dLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUzOlxcdGludFxcdCgqbDJfZGVsX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTU0LVxcdFxcdFxcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1NTpcXHRpbnRcXHQoKmwyX2ZsdXNoKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1NjpcXHRpbnRcXHQoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU3OlxcdGludFxcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNTgtXFx0XFx0XFx0ICAgICB1MTYgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2MTpzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTYyLVxcdGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyAqZHNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNjM6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2NC1cXHRjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpwaHlsaW5rX21hY19vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTcxLS8qIFJUTDgzNjYgbGlicmFyeSBoZWxwZXJzICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3MjppbnQgcnRsODM2Nl9tY19pc191c2VkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBtY19pbmRleCwgaW50ICp1c2VkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTczOmludCBydGw4MzY2X3NldF92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCB2aWQsIHUzMiBtZW1iZXIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE3NC1cXHRcXHQgICAgIHUzMiB1bnRhZywgdTMyIGZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3NTppbnQgcnRsODM2Nl9zZXRfcHZpZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTc2LVxcdFxcdCAgICAgdW5zaWduZWQgaW50IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3NzppbnQgcnRsODM2Nl9lbmFibGVfdmxhbjRrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTc4OmludCBydGw4MzY2X2VuYWJsZV92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTc5OmludCBydGw4MzY2X3Jlc2V0X3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4MC1pbnQgcnRsODM2Nl92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE4OD12b2lkIHJ0bDgzNjZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdWludDY0X3QgKmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xODktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5MDpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTkxOmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYz0yMzE9c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6MzMuNjM2MzY1ODA2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0MTA3NTA2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBSZWFsdGVrIERTQSBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIG5vdywgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGBDT05GSUdfTkVUX0RTQV9SRUFMVEVLYCBhbmQgYENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2suIEknbSBsaWtlbHkgdHJ5aW5nIHRvIHRyYWNlIGRlcGVuZGVuY2llcywgZmluZCBvdXQgd2hhdCBvdGhlciBvcHRpb25zIHRoZXkgcmVseSBvbiwgYW5kIHVuZGVyc3RhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljLiBJcyBgUlRMODM2NU1CYCBhIHNwZWNpZmljIGNoaXA/IEknbGwgcHJvYmFibHkgYmUgbG9va2luZyB0byBzZWUgaWYgaXQncyBhIHN1Yi1vcHRpb24sIG9yIGEgZ2VuZXJhbCBlbmFibGVtZW50IG9wdGlvbi4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgY29uZmlndXJhdGlvbiBpbnRlcmFjdHMgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMgb3IgcGxhdGZvcm0gZmVhdHVyZXMuIEknbSBob3BpbmcgdG8gZ2V0IGEgcXVpY2sgZ3Jhc3Agb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGhvdyB0aGVzZSBvcHRpb25zIGZpdCBpbnRvIHRoZSBvdmVyYWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6MzUuODc3NDQyODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDk4MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9EU0FfUkVBTFRFS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxNjppZiBORVRfRFNBX1JFQUxURUtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MTg6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19NRElPXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xOS1cXHRib29sIFxcXCJSZWFsdGVrIE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjU6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19TTUlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIlJlYWx0ZWsgU01JIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjMyOmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM0OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDhfNFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM5OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY2UkIgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQxOlxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDItXFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDRfQVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ2OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCX0xFRFNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTQ3LVxcdGJvb2xcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ4OlxcdGRlcGVuZHMgb24gKExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0OTpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjUwOlxcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUspXFx0XFx0Kz0gcmVhbHRla19kc2Eub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTMtcmVhbHRla19kc2Etb2Jqc1xcdFxcdFxcdDo9IHJ0bDgzeHgub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6NTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS02LXJlYWx0ZWtfZHNhLW9ianMgKz0gcmVhbHRlay1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT03PWVuZGlmXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTAtcmVhbHRla19kc2Etb2JqcyArPSByZWFsdGVrLXNtaS5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTE9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQikgKz0gcnRsODM2Ni5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTQtcnRsODM2Ni1vYmpzIFxcdFxcdFxcdFxcdDo9IHJ0bDgzNjYtY29yZS5vIHJ0bDgzNjZyYi5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTU6aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE2LXJ0bDgzNjYtb2JqcyBcXHRcXHRcXHRcXHQrPSBydGw4MzY2cmItbGVkcy5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgKz0gcnRsODM2NW1iLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xOS1ydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MjI6I2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaD00Mj1zdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQ2OiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfTURJTykgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUkpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC03LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD0yMD12b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyMjojZWxzZSAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oPTQyPXN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQ2OiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaD00Nz1lbnVtIHJ0bDgzNjZfbGVkZ3JvdXBfbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaC02Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo2ODojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg9OTQ9c3RydWN0IHJ0bDgzNjZyYiB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaC05Ni1cXHRib29sIHB2aWRfZW5hYmxlZFtSVEw4MzY2UkJfTlVNX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTk4LVxcdHN0cnVjdCBydGw4MzY2cmJfbGVkIGxlZHNbUlRMODM2NlJCX05VTV9QT1JUU11bUlRMODM2NlJCX05VTV9MRURHUk9VUFNdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjozNS45MjM1NTA1MjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgyODQ0NzMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byBSZWFsdGVrIERTQSBTd2l0Y2ggUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGVzZSBgcnRsODN4eGAgY2hpcHMgYW5kIERTQSBzd2l0Y2hlcyBnZXQgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0uIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIGxpa2VseSB3aXRoIHRoZSBgcnRsODN4eF9wcm9iZWAgZnVuY3Rpb24gb3IsIG1vcmUgZ2VuZXJhbGx5LCBob3cgdGhlc2UgRFNBIHN3aXRjaGVzIGFyZSByZWdpc3RlcmVkIGFuZCBwcm9iZWQuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLlxuXG5Ob3csIHdoZXJlJ3MgdGhhdCBjb2RlPyBBaCwgeWVzLCBJIGJlbGlldmUgSSByZW1lbWJlciBzZWVpbmcgUmVhbHRlaydzIERTQSBkcml2ZXIgaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY2AuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZXkndmUgaW1wbGVtZW50ZWQgdGhlIHByb2JpbmcgYW5kIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBTaG91bGQgYmUgYW4gaW50ZXJlc3RpbmcgcmVhZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyODYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjozNy43NTIwMDAwMzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArXFxuICAgMjpcXHRcXG4gICAzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gICA0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gICA1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaWZfYnJpZGdlLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2luY2x1ZGUgXFxcInJlYWx0ZWsuaFxcXCJcXG4gIDEwOlxcdCNpbmNsdWRlIFxcXCJydGw4M3h4LmhcXFwiXFxuICAxMTpcXHRcXG4gIDEyOlxcdC8qKlxcbiAgMTM6XFx0ICogcnRsODN4eF9sb2NrKCkgLSBMb2NrcyB0aGUgbXV0ZXggdXNlZCBieSByZWdtYXBzXFxuICAxNDpcXHQgKiBAY3R4OiByZWFsdGVrX3ByaXYgcG9pbnRlclxcbiAgMTU6XFx0ICpcXG4gIDE2OlxcdCAqIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIHJlZ21hcCB0byBiZSB1c2VkIGFzIHRoZSBsb2NrIGZ1bmN0aW9uLlxcbiAgMTc6XFx0ICogSXQgaXMgYWxzbyB1c2VkIGV4dGVybmFsbHkgdG8gYmxvY2sgcmVnbWFwIGJlZm9yZSBleGVjdXRpbmcgbXVsdGlwbGVcXG4gIDE4OlxcdCAqIG9wZXJhdGlvbnMgdGhhdCBtdXN0IGhhcHBlbiBpbiBzZXF1ZW5jZSAod2hpY2ggd2lsbCB1c2VcXG4gIDE5OlxcdCAqIHJlYWx0ZWtfcHJpdi5tYXBfbm9sb2NrIGluc3RlYWQpLlxcbiAgMjA6XFx0ICpcXG4gIDIxOlxcdCAqIENvbnRleHQ6IENhbiBzbGVlcC4gSG9sZHMgcHJpdi1cXHUwMDNlbWFwX2xvY2sgbG9jay5cXG4gIDIyOlxcdCAqIFJldHVybjogbm90aGluZ1xcbiAgMjM6XFx0ICovXFxuICAyNDpcXHR2b2lkIHJ0bDgzeHhfbG9jayh2b2lkICpjdHgpXFxuICAyNTpcXHR7XFxuICAyNjpcXHRcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbiAgMjc6XFx0XFxuICAyODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtYXBfbG9jayk7XFxuICAyOTpcXHR9XFxuICAzMDpcXHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X2xvY2ssIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbiAgMzE6XFx0XFxuICAzMjpcXHQvKipcXG4gIDMzOlxcdCAqIHJ0bDgzeHhfdW5sb2NrKCkgLSBVbmxvY2tzIHRoZSBtdXRleCB1c2VkIGJ5IHJlZ21hcHNcXG4gIDM0OlxcdCAqIEBjdHg6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuICAzNTpcXHQgKlxcbiAgMzY6XFx0ICogVGhpcyBmdW5jdGlvbiB1bmxvY2tzIHRoZSBsb2NrIGFjcXVpcmVkIGJ5IHJ0bDgzeHhfbG9jay5cXG4gIDM3OlxcdCAqXFxuICAzODpcXHQgKiBDb250ZXh0OiBSZWxlYXNlcyBwcml2LVxcdTAwM2VtYXBfbG9jayBsb2NrLlxcbiAgMzk6XFx0ICogUmV0dXJuOiBub3RoaW5nXFxuICA0MDpcXHQgKi9cXG4gIDQxOlxcdHZvaWQgcnRsODN4eF91bmxvY2sodm9pZCAqY3R4KVxcbiAgNDI6XFx0e1xcbiAgNDM6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtYXBfbG9jayk7XFxuICA0NjpcXHR9XFxuICA0NzpcXHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X3VubG9jaywgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdHN0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcXG4gIDUwOlxcdHtcXG4gIDUxOlxcdFxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdHJldHVybiBwcml2LVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9yZWFkKHByaXYsIGFkZHIsIHJlZ251bSk7XFxuICA1NDpcXHR9XFxuICA1NTpcXHRcXG4gIDU2OlxcdHN0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sXFxuICA1NzpcXHRcXHRcXHRcXHRcXHQgICB1MTYgdmFsKVxcbiAgNTg6XFx0e1xcbiAgNTk6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0cmV0dXJuIHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3dyaXRlKHByaXYsIGFkZHIsIHJlZ251bSwgdmFsKTtcXG4gIDYyOlxcdH1cXG4gIDYzOlxcdFxcbiAgNjQ6XFx0LyoqXFxuICA2NTpcXHQgKiBydGw4M3h4X3NldHVwX3VzZXJfbWRpbygpIC0gcmVnaXN0ZXIgdGhlIHVzZXIgbWlpIGJ1cyBkcml2ZXJcXG4gIDY2OlxcdCAqIEBkczogRFNBIHN3aXRjaCBhc3NvY2lhdGVkIHdpdGggdGhpcyB1c2VyX21paV9idXNcXG4gIDY3OlxcdCAqXFxuICA2ODpcXHQgKiBSZWdpc3RlcnMgdGhlIE1ESU8gYnVzIGZvciBidWlsdC1pbiBFdGhlcm5ldCBQSFlzLCBhbmQgYXNzb2NpYXRlcyBpdCB3aXRoXFxuICA2OTpcXHQgKiB0aGUgbWFuZGF0b3J5ICdtZGlvJyBjaGlsZCBPRiBub2RlIG9mIHRoZSBzd2l0Y2guXFxuICA3MDpcXHQgKlxcbiAgNzE6XFx0ICogQ29udGV4dDogQ2FuIHNsZWVwLlxcbiAgNzI6XFx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlIGZvciBmYWlsdXJlLlxcbiAgNzM6XFx0ICovXFxuICA3NDpcXHRpbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbiAgNzU6XFx0e1xcbiAgNzY6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbiAgNzc6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICptZGlvX25wO1xcbiAgNzg6XFx0XFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4gIDc5OlxcdFxcdGludCByZXQgPSAwO1xcbiAgODA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjM3Ljc1MjA5Nzk5OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDMzMDc4MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYHJ0bDgzeHguY2AuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjM2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjozOS4xODUxNzg2MjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MTpcXHRcXHRtZGlvX25wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcbiAgODI6XFx0XFx0aWYgKCFtZGlvX25wKSB7XFxuICA4MzpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIm5vIE1ESU8gYnVzIG5vZGVcXFxcblxcXCIpO1xcbiAgODQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuICA4NTpcXHRcXHR9XFxuICA4NjpcXHRcXG4gIDg3OlxcdFxcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhwcml2LVxcdTAwM2VkZXYpO1xcbiAgODg6XFx0XFx0aWYgKCFidXMpIHtcXG4gIDg5OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuICA5MDpcXHRcXHRcXHRnb3RvIGVycl9wdXRfbm9kZTtcXG4gIDkxOlxcdFxcdH1cXG4gIDkyOlxcdFxcbiAgOTM6XFx0XFx0YnVzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4gIDk0OlxcdFxcdGJ1cy1cXHUwMDNlbmFtZSA9IFxcXCJSZWFsdGVrIHVzZXIgTUlJXFxcIjtcXG4gIDk1OlxcdFxcdGJ1cy1cXHUwMDNlcmVhZCA9IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWQ7XFxuICA5NjpcXHRcXHRidXMtXFx1MDAzZXdyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7XFxuICA5NzpcXHRcXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlczp1c2VyX21paVxcXCIsIGRldl9uYW1lKHByaXYtXFx1MDAzZWRldikpO1xcbiAgOTg6XFx0XFx0YnVzLVxcdTAwM2VwYXJlbnQgPSBwcml2LVxcdTAwM2VkZXY7XFxuICA5OTpcXHRcXG4gMTAwOlxcdFxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuIDEwMTpcXHRcXHRpZiAocmV0KSB7XFxuIDEwMjpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInVuYWJsZSB0byByZWdpc3RlciBNRElPIGJ1cyAlc1xcXFxuXFxcIixcXG4gMTAzOlxcdFxcdFxcdFxcdGJ1cy1cXHUwMDNlaWQpO1xcbiAxMDQ6XFx0XFx0XFx0Z290byBlcnJfcHV0X25vZGU7XFxuIDEwNTpcXHRcXHR9XFxuIDEwNjpcXHRcXG4gMTA3OlxcdFxcdHByaXYtXFx1MDAzZXVzZXJfbWlpX2J1cyA9IGJ1cztcXG4gMTA4OlxcdFxcbiAxMDk6XFx0ZXJyX3B1dF9ub2RlOlxcbiAxMTA6XFx0XFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuIDExMTpcXHRcXG4gMTEyOlxcdFxcdHJldHVybiByZXQ7XFxuIDExMzpcXHR9XFxuIDExNDpcXHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X3NldHVwX3VzZXJfbWRpbywgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuIDExNTpcXHRcXG4gMTE2OlxcdC8qKlxcbiAxMTc6XFx0ICogcnRsODN4eF9wcm9iZSgpIC0gcHJvYmUgYSBSZWFsdGVrIHN3aXRjaFxcbiAxMTg6XFx0ICogQGRldjogdGhlIGRldmljZSBiZWluZyBwcm9iZWRcXG4gMTE5OlxcdCAqIEBpbnRlcmZhY2VfaW5mbzogc3BlY2lmaWMgbWFuYWdlbWVudCBpbnRlcmZhY2UgaW5mby5cXG4gMTIwOlxcdCAqXFxuIDEyMTpcXHQgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHJlYWx0ZWtfcHJpdiBhbmQgcmVhZHMgZGF0YSBmcm9tIHRoZSBkZXZpY2UgdHJlZVxcbiAxMjI6XFx0ICogbm9kZS4gVGhlIHN3aXRjaCBpcyBoYXJkIHJlc2V0dGVkIGlmIGEgbWV0aG9kIGlzIHByb3ZpZGVkLlxcbiAxMjM6XFx0ICpcXG4gMTI0OlxcdCAqIENvbnRleHQ6IENhbiBzbGVlcC5cXG4gMTI1OlxcdCAqIFJldHVybjogUG9pbnRlciB0byB0aGUgcmVhbHRla19wcml2IG9yIEVSUl9QVFIoKSBpbiBjYXNlIG9mIGZhaWx1cmUuXFxuIDEyNjpcXHQgKlxcbiAxMjc6XFx0ICogVGhlIHJlYWx0ZWtfcHJpdiBwb2ludGVyIGRvZXMgbm90IG5lZWQgdG8gYmUgZnJlZWQgYXMgaXQgaXMgY29udHJvbGxlZCBieVxcbiAxMjg6XFx0ICogZGV2cmVzLlxcbiAxMjk6XFx0ICovXFxuIDEzMDpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpcXG4gMTMxOlxcdHJ0bDgzeHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LFxcbiAxMzI6XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHJlYWx0ZWtfaW50ZXJmYWNlX2luZm8gKmludGVyZmFjZV9pbmZvKVxcbiAxMzM6XFx0e1xcbiAxMzQ6XFx0XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCAqdmFyO1xcbiAxMzU6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG4gMTM2OlxcdFxcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjID0ge1xcbiAxMzc6XFx0XFx0XFx0LnJlZ19iaXRzID0gMTAsIC8qIEE0Li5BMCBSNC4uUjAgKi9cXG4gMTM4OlxcdFxcdFxcdC52YWxfYml0cyA9IDE2LFxcbiAxMzk6XFx0XFx0XFx0LnJlZ19zdHJpZGUgPSAxLFxcbiAxNDA6XFx0XFx0XFx0Lm1heF9yZWdpc3RlciA9IDB4ZmZmZixcXG4gMTQxOlxcdFxcdFxcdC5yZWdfZm9ybWF0X2VuZGlhbiA9IFJFR01BUF9FTkRJQU5fQklHLFxcbiAxNDI6XFx0XFx0XFx0LnJlZ19yZWFkID0gaW50ZXJmYWNlX2luZm8tXFx1MDAzZXJlZ19yZWFkLFxcbiAxNDM6XFx0XFx0XFx0LnJlZ193cml0ZSA9IGludGVyZmFjZV9pbmZvLVxcdTAwM2VyZWdfd3JpdGUsXFxuIDE0NDpcXHRcXHRcXHQuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsXFxuIDE0NTpcXHRcXHRcXHQubG9jayA9IHJ0bDgzeHhfbG9jayxcXG4gMTQ2OlxcdFxcdFxcdC51bmxvY2sgPSBydGw4M3h4X3VubG9jayxcXG4gMTQ3OlxcdFxcdH07XFxuIDE0ODpcXHRcXHRpbnQgcmV0O1xcbiAxNDk6XFx0XFxuIDE1MDpcXHRcXHR2YXIgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG4gMTUxOlxcdFxcdGlmICghdmFyKVxcbiAxNTI6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplX2FkZChzaXplb2YoKnByaXYpLCB2YXItXFx1MDAzZWNoaXBfZGF0YV9zeiksXFxuIDE1NTpcXHRcXHRcXHRcXHQgICAgR0ZQX0tFUk5FTCk7XFxuIDE1NjpcXHRcXHRpZiAoIXByaXYpXFxuIDE1NzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gMTU4OlxcdFxcbiAxNTk6XFx0XFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZW1hcF9sb2NrKTtcXG4gMTYwOlxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjM5LjE4NTI4MzEwNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTA2NDAxNzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYHJ0bDgzeHhfcHJvYmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgKmFmdGVyKiB0aGUgaW5pdGlhbCBzZXR1cC4gSSdtIGFzc3VtaW5nLCBiYXNlZCBvbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZXNlIHNvcnRzIG9mIGRldmljZSBkcml2ZXJzLCB0aGF0IHRoZSBuZXh0IHN0YWdlcyB3aWxsIGxpa2VseSBpbnZvbHZlIGEgZmV3IGtleSBhcmVhczpcblxuKipGdXJ0aGVyIEV4YW1pbmF0aW9uIG9mIGBydGw4M3h4X3Byb2JlYCoqXG5cbkZpcnN0LCBJIGV4cGVjdCB0byBzZWUgdGhlIGRyaXZlciBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZSwgbWF5YmUgY29uZmlndXJpbmcgc29tZSBiYXNpYyByZWdpc3RlcnMgb3IgaW5pdGlhbGl6aW5nIHRoZSBQSFkuIEl0J3MgbGlrZWx5IGNoZWNraW5nIGZvciBhbmQgaW5pdGlhbGl6aW5nIGludGVycnVwdCBoYW5kbGVycywgc2luY2UgZWZmaWNpZW50IGNvbW11bmljYXRpb24gd2l0aCB0aGUgaGFyZHdhcmUgaXMgY3JpdGljYWwuIFdlJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRldmljZSdzIGNsb2NraW5nIGFzIHdlbGwsIHNpbmNlIHRoYXQncyBhbm90aGVyIHByZXJlcXVpc2l0ZS5cblxuVGhlbiwgdGhlcmUnbGwgYmUgYSBwaGFzZSBvZiByZXNvdXJjZSBhbGxvY2F0aW9uIC0gbWVtb3J5LCBJUlFzLCBwZXJoYXBzIERNQSBjaGFubmVscy4gSSdtIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIHBpdGZhbGxzIHRoZXJlOyByZXNvdXJjZSBjb25mbGljdHMgY2FuIGJlIGEgbWFqb3IgcGFpbiB0byBkZWJ1Zy4gR2l2ZW4gdGhpcyBpcyBhIHN3aXRjaCwgdGhlcmUnbGwgZGVmaW5pdGVseSBiZSBhIG5lZWQgdG8gcmVnaXN0ZXIgdGhlIHN3aXRjaCBkZXZpY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3Vic3lzdGVtLCBwcm9iYWJseSBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHBvcnRzLCBjYXBhYmlsaXRpZXMsIGFuZCB0aGUgbGlrZS4gV2UgbmVlZCB0byBiZSBjaGVja2luZyB0aGUgc3RhdHVzIHJldHVybmVkIGJ5IHRoZXNlIGNhbGxzLCBlcnJvcnMgZnJvbSByZXNvdXJjZSBhbGxvY2F0aW9ucywgYmVjYXVzZSB0aGF0J3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgcHJvYmxlbXMgaW4gdGhlIGtlcm5lbC5cblxuRmluYWxseSwgSSdtIGFudGljaXBhdGluZyBzb21lIGZvcm0gb2YgaW5pdGlhbCBzd2l0Y2ggY29uZmlndXJhdGlvbiwgbWF5YmUgc2V0dGluZyB1cCBWTEFOcywgcG9ydCBzcGVlZHMsIG9yIG90aGVyIGJhc2ljIHBhcmFtZXRlcnMuIEl0J3MgcmVhbGx5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGF0IHN3aXRjaCBjaGlwIHRoYXQgaXMga2V5IGhlcmUsIGhvdyBpdCBpbml0aWFsaXplcy4gSSdtIGtlZW4gdG8gc3BvdCBhbnkgaW5kaWNhdGlvbnMgb2YgZXJyb3IgaGFuZGxpbmcgYW5kIGhvdyByb2J1c3QgaXQgaXMgdG8gdmFyaW91cyBzY2VuYXJpb3MuIE92ZXJhbGwsIEknbSBleHBlY3RpbmcgdG8gc2VlIGEgc3RydWN0dXJlZCBhcHByb2FjaCB0aGF0IGNhcmVmdWxseSBzZXRzIHVwIHRoZSBoYXJkd2FyZSwgcmVnaXN0ZXJzIGl0IHdpdGggdGhlIHN5c3RlbSwgYW5kIHRoZW4gYnJpbmdzIGl0IGludG8gYSBrbm93biBpbml0aWFsIHN0YXRlLiBUaGlzLCBvYnZpb3VzbHksIGlzIHRoZSBzdGFuZGFyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NjksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjQyLjI5MTY4NzIxMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiAxNjI6XFx0XFxuIDE2MzpcXHRcXHRyZXQgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNldmxhbl9sb2NrKTtcXG4gMTY0OlxcdFxcdGlmIChyZXQpXFxuIDE2NTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRyZXQgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlbDJfbG9jayk7XFxuIDE2ODpcXHRcXHRpZiAocmV0KVxcbiAxNjk6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gMTcwOlxcdFxcbiAxNzE6XFx0XFx0cmMubG9ja19hcmcgPSBwcml2O1xcbiAxNzI6XFx0XFx0cHJpdi1cXHUwMDNlbWFwID0gZGV2bV9yZWdtYXBfaW5pdChkZXYsIE5VTEwsIHByaXYsIFxcdTAwMjZyYyk7XFxuIDE3MzpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZW1hcCkpIHtcXG4gMTc0OlxcdFxcdFxcdHJldCA9IFBUUl9FUlIocHJpdi1cXHUwMDNlbWFwKTtcXG4gMTc1OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwicmVnbWFwIGluaXQgZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4gMTc2OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuIDE3NzpcXHRcXHR9XFxuIDE3ODpcXHRcXG4gMTc5OlxcdFxcdHJjLmRpc2FibGVfbG9ja2luZyA9IHRydWU7XFxuIDE4MDpcXHRcXHRwcml2LVxcdTAwM2VtYXBfbm9sb2NrID0gZGV2bV9yZWdtYXBfaW5pdChkZXYsIE5VTEwsIHByaXYsIFxcdTAwMjZyYyk7XFxuIDE4MTpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZW1hcF9ub2xvY2spKSB7XFxuIDE4MjpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHByaXYtXFx1MDAzZW1hcF9ub2xvY2spO1xcbiAxODM6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJyZWdtYXAgaW5pdCBmYWlsZWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbiAxODQ6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gMTg1OlxcdFxcdH1cXG4gMTg2OlxcdFxcbiAxODc6XFx0XFx0LyogTGluayBmb3J3YXJkIGFuZCBiYWNrd2FyZCAqL1xcbiAxODg6XFx0XFx0cHJpdi1cXHUwMDNlZGV2ID0gZGV2O1xcbiAxODk6XFx0XFx0cHJpdi1cXHUwMDNldmFyaWFudCA9IHZhcjtcXG4gMTkwOlxcdFxcdHByaXYtXFx1MDAzZW9wcyA9IHZhci1cXHUwMDNlb3BzO1xcbiAxOTE6XFx0XFx0cHJpdi1cXHUwMDNlY2hpcF9kYXRhID0gKHZvaWQgKilwcml2ICsgc2l6ZW9mKCpwcml2KTtcXG4gMTkyOlxcdFxcbiAxOTM6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spO1xcbiAxOTQ6XFx0XFxuIDE5NTpcXHRcXHRwcml2LVxcdTAwM2VsZWRzX2Rpc2FibGVkID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi1cXHUwMDNlb2Zfbm9kZSxcXG4gMTk2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwicmVhbHRlayxkaXNhYmxlLWxlZHNcXFwiKTtcXG4gMTk3OlxcdFxcbiAxOTg6XFx0XFx0LyogVE9ETzogaWYgcG93ZXIgaXMgc29mdHdhcmUgY29udHJvbGxlZCwgc2V0IHVwIGFueSByZWd1bGF0b3JzIGhlcmUgKi9cXG4gMTk5OlxcdFxcdHByaXYtXFx1MDAzZXJlc2V0X2N0bCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfb3B0aW9uYWwoZGV2LCBOVUxMKTtcXG4gMjAwOlxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVzZXRfY3RsKSlcXG4gMjAxOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX2Nhc3RfcHJvYmUoZGV2LCBwcml2LVxcdTAwM2VyZXNldF9jdGwsXFxuIDIwMjpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJmYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcXFxcblxcXCIpO1xcbiAyMDM6XFx0XFxuIDIwNDpcXHRcXHRwcml2LVxcdTAwM2VyZXNldCA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXFxcInJlc2V0XFxcIiwgR1BJT0RfT1VUX0xPVyk7XFxuIDIwNTpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZXJlc2V0KSkge1xcbiAyMDY6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IFJFU0VUIEdQSU9cXFxcblxcXCIpO1xcbiAyMDc6XFx0XFx0XFx0cmV0dXJuIEVSUl9DQVNUKHByaXYtXFx1MDAzZXJlc2V0KTtcXG4gMjA4OlxcdFxcdH1cXG4gMjA5OlxcdFxcbiAyMTA6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgcHJpdik7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdFxcdGlmIChwcml2LVxcdTAwM2VyZXNldF9jdGwgfHwgcHJpdi1cXHUwMDNlcmVzZXQpIHtcXG4gMjEzOlxcdFxcdFxcdHJ0bDgzeHhfcmVzZXRfYXNzZXJ0KHByaXYpO1xcbiAyMTQ6XFx0XFx0XFx0ZGV2X2RiZyhkZXYsIFxcXCJhc3NlcnRlZCBSRVNFVFxcXFxuXFxcIik7XFxuIDIxNTpcXHRcXHRcXHRtc2xlZXAoUkVBTFRFS19IV19TVE9QX0RFTEFZKTtcXG4gMjE2OlxcdFxcdFxcdHJ0bDgzeHhfcmVzZXRfZGVhc3NlcnQocHJpdik7XFxuIDIxNzpcXHRcXHRcXHRtc2xlZXAoUkVBTFRFS19IV19TVEFSVF9ERUxBWSk7XFxuIDIxODpcXHRcXHRcXHRkZXZfZGJnKGRldiwgXFxcImRlYXNzZXJ0ZWQgUkVTRVRcXFxcblxcXCIpO1xcbiAyMTk6XFx0XFx0fVxcbiAyMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjQyLjI5MTgwNDM4MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzE0MzU4NTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgcnRsODN4eF9wcm9iZWAgZnVuY3Rpb24gYW5kIHNlZSB3aGF0IGl0J3MgYWxsIGFib3V0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhpcyBkcml2ZXIsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIGFuZCB3aGF0IGl0cyBzcGVjaWZpYyByZXNwb25zaWJpbGl0aWVzIGFyZS4gSSdtIGdvaW5nIHRvIGxvb2sgYmV5b25kIHRoZSBpbml0aWFsIHNuaXBwZXRzIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBkYXRhIG1hbmFnZW1lbnQuIEkgd2FudCB0byBzZWUgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBpbml0aWFsaXphdGlvbiBzdGVwcy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwcm9ibGVtcykgdHlwaWNhbGx5IGhhcHBlbi4gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIGRldGVybWluZSBob3cgaXQgaWRlbnRpZmllcyB0aGUgY2hpcCwgY29uZmlndXJlcyBpdCwgYW5kIGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBuZXR3b3JrIHN0YWNrLiBUaGUgZGV0YWlscyBtYXR0ZXI6IHJlZ2lzdGVyIHdyaXRlcywgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24sIGNsb2NrIHNldHRpbmdzIOKAkyBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmlwIG9uIGFsbCBvZiBpdC4gSSdtIGxvb2tpbmcgZm9yIGFueXRoaW5nIHRoYXQgc3RhbmRzIG91dCwgYW55IG9wdGltaXphdGlvbnMsIG9yIHBvdGVudGlhbCBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIExldCdzIHNlZSB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEzNzUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjQ0LjYwNjE2NzE2N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMSxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyMTpcXHRcXHRyZXR1cm4gcHJpdjtcXG4gMjIyOlxcdH1cXG4gMjIzOlxcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfcHJvYmUsIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbiAyMjQ6XFx0XFxuIDIyNTpcXHQvKipcXG4gMjI2OlxcdCAqIHJ0bDgzeHhfcmVnaXN0ZXJfc3dpdGNoKCkgLSBkZXRlY3RzIGFuZCByZWdpc3RlciBhIHN3aXRjaFxcbiAyMjc6XFx0ICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuIDIyODpcXHQgKlxcbiAyMjk6XFx0ICogVGhpcyBmdW5jdGlvbiBmaXJzdCBjaGVja3MgdGhlIHN3aXRjaCBjaGlwIElEIGFuZCByZWdpc3RlciBhIERTQVxcbiAyMzA6XFx0ICogc3dpdGNoLlxcbiAyMzE6XFx0ICpcXG4gMjMyOlxcdCAqIENvbnRleHQ6IENhbiBzbGVlcC4gVGFrZXMgYW5kIHJlbGVhc2VzIHByaXYtXFx1MDAzZW1hcF9sb2NrLlxcbiAyMzM6XFx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlIGZvciBmYWlsdXJlLlxcbiAyMzQ6XFx0ICovXFxuIDIzNTpcXHRpbnQgcnRsODN4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IFxcdTAwMjZwcml2LVxcdTAwM2VkcztcXG4gMjM4OlxcdFxcdGludCByZXQ7XFxuIDIzOTpcXHRcXG4gMjQwOlxcdFxcdHJldCA9IHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlZGV0ZWN0KHByaXYpO1xcbiAyNDE6XFx0XFx0aWYgKHJldCkge1xcbiAyNDI6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZShwcml2LVxcdTAwM2VkZXYsIHJldCwgXFxcInVuYWJsZSB0byBkZXRlY3Qgc3dpdGNoXFxcXG5cXFwiKTtcXG4gMjQzOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDI0NDpcXHRcXHR9XFxuIDI0NTpcXHRcXG4gMjQ2OlxcdFxcdGRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4gMjQ3OlxcdFxcdGRzLVxcdTAwM2VkZXYgPSBwcml2LVxcdTAwM2VkZXY7XFxuIDI0ODpcXHRcXHRkcy1cXHUwMDNlb3BzID0gcHJpdi1cXHUwMDNldmFyaWFudC1cXHUwMDNlZHNfb3BzO1xcbiAyNDk6XFx0XFx0ZHMtXFx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IHByaXYtXFx1MDAzZXZhcmlhbnQtXFx1MDAzZXBoeWxpbmtfbWFjX29wcztcXG4gMjUwOlxcdFxcdGRzLVxcdTAwM2VudW1fcG9ydHMgPSBwcml2LVxcdTAwM2VudW1fcG9ydHM7XFxuIDI1MTpcXHRcXG4gMjUyOlxcdFxcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbiAyNTM6XFx0XFx0aWYgKHJldCkge1xcbiAyNTQ6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZShwcml2LVxcdTAwM2VkZXYsIHJldCwgXFxcInVuYWJsZSB0byByZWdpc3RlciBzd2l0Y2hcXFxcblxcXCIpO1xcbiAyNTU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMjU2OlxcdFxcdH1cXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0cmV0dXJuIDA7XFxuIDI1OTpcXHR9XFxuIDI2MDpcXHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X3JlZ2lzdGVyX3N3aXRjaCwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuIDI2MTpcXHRcXG4gMjYyOlxcdC8qKlxcbiAyNjM6XFx0ICogcnRsODN4eF91bnJlZ2lzdGVyX3N3aXRjaCgpIC0gdW5yZWdpc3RlciBhIHN3aXRjaFxcbiAyNjQ6XFx0ICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuIDI2NTpcXHQgKlxcbiAyNjY6XFx0ICogVGhpcyBmdW5jdGlvbiB1bnJlZ2lzdGVyIGEgRFNBIHN3aXRjaC5cXG4gMjY3OlxcdCAqXFxuIDI2ODpcXHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuXFxuIDI2OTpcXHQgKiBSZXR1cm46IE5vdGhpbmcuXFxuIDI3MDpcXHQgKi9cXG4gMjcxOlxcdHZvaWQgcnRsODN4eF91bnJlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbiAyNzI6XFx0e1xcbiAyNzM6XFx0XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gXFx1MDAyNnByaXYtXFx1MDAzZWRzO1xcbiAyNzQ6XFx0XFxuIDI3NTpcXHRcXHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbiAyNzY6XFx0fVxcbiAyNzc6XFx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF91bnJlZ2lzdGVyX3N3aXRjaCwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuIDI3ODpcXHRcXG4gMjc5OlxcdC8qKlxcbiAyODA6XFx0ICogcnRsODN4eF9zaHV0ZG93bigpIC0gc2h1dGRvd24gYSBzd2l0Y2hcXG4gMjgxOlxcdCAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxcbiAyODI6XFx0ICpcXG4gMjgzOlxcdCAqIFRoaXMgZnVuY3Rpb24gc2h1dHMgZG93biB0aGUgRFNBIHN3aXRjaCBhbmQgY2xlYW5zIHRoZSBwbGF0Zm9ybSBkcml2ZXIgZGF0YSxcXG4gMjg0OlxcdCAqIHRvIHByZXZlbnQgcmVhbHRla197c21pLG1kaW99X3JlbW92ZSgpIGZyb20gcnVubmluZyBhZnRlcndhcmRzLCB3aGljaCBpc1xcbiAyODU6XFx0ICogcG9zc2libGUgaWYgdGhlIHBhcmVudCBidXMgaW1wbGVtZW50cyBpdHMgb3duIC5zaHV0ZG93bigpIGFzIC5yZW1vdmUoKS5cXG4gMjg2OlxcdCAqXFxuIDI4NzpcXHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuXFxuIDI4ODpcXHQgKiBSZXR1cm46IE5vdGhpbmcuXFxuIDI4OTpcXHQgKi9cXG4gMjkwOlxcdHZvaWQgcnRsODN4eF9zaHV0ZG93bihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo0NC42MDYzMzI1MzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI2OTAyNTc4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVhbHRlayBTd2l0Y2ggSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiBob3cgdGhlc2UgUmVhbHRlayBFdGhlcm5ldCBzd2l0Y2ggQVNJQ3MsIHNwZWNpZmljYWxseSB0aG9zZSBjb25uZWN0ZWQgdmlhIE1ESU8gb3IgU01JIGxpa2UgdGhlIHJ0bDgzNjVtYiBhbmQgcnRsODM2NnJiLCBhcmUgaW5pdGlhbGl6ZWQgYW5kIHJlc2V0IHdpdGhpbiB0aGUgc3lzdGVtLiBJIHNlZSB0aGF0IGByZWFsdGVrX21kaW9fcHJvYmVgIGFuZCBgcmVhbHRla19zbWlfcHJvYmVgIGFyZSByZXNwb25zaWJsZSBmb3IgdGhlIHByb2JpbmcgcHJvY2Vzcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVzZXQgc2VxdWVuY2UuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggb2YgdGhlIHJlc2V0IGZ1bmN0aW9uLCBwYXJ0aWN1bGFybHkgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYC4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgd2hlcmUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBjb2RlLiBUbyBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBzZWFyY2ggZm9yIGFueSBvdGhlciBpbnN0YW5jZXMgb2YgYHJlc2V0X2NoaXBgIG9yLCBhcyBhIHNhbml0eSBjaGVjaywgIGBydGw4MzY1bWJfcmVzZXRfY2hpcGAgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBwbGFjZXMgdGhhdCBhcmUgcmVsZXZhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNjM1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6NDYuODc1MzYxMDU4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkxNDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNldF9jaGlwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xMDg9c3RydWN0IHJlYWx0ZWtfb3BzIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTA5LVxcdGludFxcdCgqZGV0ZWN0KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEwOlxcdGludFxcdCgqcmVzZXRfY2hpcCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExMS1cXHRpbnRcXHQoKnNldHVwKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9Mjk1ND1zdGF0aWMgaW50IHJ0bDgzNjVtYl9zd2l0Y2hfaW5pdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yOTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Mjk4NDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yOTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzAyMD1zdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMwNDAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMDQxOlxcdHJldCA9IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzA0Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYz0xNjg1PXN0YXRpYyBpbnQgcnRsODM2NnJiX3BoeV93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTcxNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYzoxNzE2OnN0YXRpYyBpbnQgcnRsODM2NnJiX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xNzE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE3NDI9c3RhdGljIGludCBydGw4MzY2cmJfZGV0ZWN0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xNzczLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jOjE3NzQ6XFx0cmV0ID0gcnRsODM2NnJiX3Jlc2V0X2NoaXAocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTc3NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo0Ni45MjYyODQzNDhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgxMTQzMjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFJUTDgzNjVNQiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyLiBJIHNlZSB0aGF0IGBydGw4MzY1bWJfcmVzZXRfY2hpcGAgaXMgY2FsbGVkIGJ5IGBydGw4MzY1bWJfc2V0dXBgLiBUaGUgYHJ0bDgzNjVtYl9zZXR1cGAgZnVuY3Rpb24gaXMgY2xlYXJseSBjcnVjaWFsIGZvciBpbml0aWFsaXppbmcgdGhpcyBwYXJ0aWN1bGFyIHN3aXRjaCBtb2RlbCwgYW5kIGl0J3MgbG9jYXRlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiBgcnRsODM2NW1iX3NldHVwYCwgYW5kIGhvdyBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgIGZpdHMgaW50byB0aGUgd2hvbGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIHN1cnJvdW5kaW5nIGBydGw4MzY1bWJfc2V0dXBgIGluIHRoZSBgcnRsODM2NW1iX21haW4uY2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBzZXR1cCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3MjAsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo0OS43Mzc3MTkyNzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAxNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzAxNTpcXHRcXHRcXHRtc2xlZXAoamlmZmllc190b19tc2VjcyhyZW1haW5pbmcpKTtcXG4zMDE2OlxcdFxcbjMwMTc6XFx0XFx0cmV0dXJuIDA7XFxuMzAxODpcXHR9XFxuMzAxOTpcXHRcXG4zMDIwOlxcdHN0YXRpYyBpbnQgcnRsODM2NW1iX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4zMDIxOlxcdHtcXG4zMDIyOlxcdFxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4zMDIzOlxcdFxcdHN0cnVjdCBydGw4MzY1bWJfY3B1ICpjcHU7XFxuMzAyNDpcXHRcXHR1MzIgZG93bnBvcnRzX21hc2sgPSAwO1xcbjMwMjU6XFx0XFx0dTMyIHVwcG9ydHNfbWFzayA9IDA7XFxuMzAyNjpcXHRcXHRzdHJ1Y3QgcnRsODM2NW1iICptYjtcXG4zMDI3OlxcdFxcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XFxuMzAyODpcXHRcXHRpbnQgcmV0O1xcbjMwMjk6XFx0XFxuMzAzMDpcXHRcXHRtYiA9IHByaXYtXFx1MDAzZWNoaXBfZGF0YTtcXG4zMDMxOlxcdFxcdGNwdSA9IFxcdTAwMjZtYi1cXHUwMDNlY3B1O1xcbjMwMzI6XFx0XFxuMzAzMzpcXHRcXHRtYi1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZydGw4MzY1bWJfcGNzX29wcztcXG4zMDM0OlxcdFxcbjMwMzU6XFx0XFx0LyogVGhlIFNlckRlcyBoYXMgbm8gbGluayBpbnRlcnJ1cHQgd2lyZWQgdXAsIHNvIHBoeWxpbmsgbXVzdCBwb2xsIHRoZVxcbjMwMzY6XFx0XFx0ICogUENTIGZvciBsaW5rIGNoYW5nZXMgd2hlbiBpdCB0cmFja3MgdGhlIGxpbmsgdGhyb3VnaCBwY3NfZ2V0X3N0YXRlKClcXG4zMDM3OlxcdFxcdCAqIChpbi1iYW5kIG1vZGUgd2l0aCBhdXRvbmVnb3RpYXRpb24gZGlzYWJsZWQpLlxcbjMwMzg6XFx0XFx0ICovXFxuMzAzOTpcXHRcXHRtYi1cXHUwMDNlcGNzLnBvbGwgPSB0cnVlO1xcbjMwNDA6XFx0XFxuMzA0MTpcXHRcXHRyZXQgPSBydGw4MzY1bWJfcmVzZXRfY2hpcChwcml2KTtcXG4zMDQyOlxcdFxcdGlmIChyZXQpIHtcXG4zMDQzOlxcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIHJlc2V0IGNoaXA6ICVwZVxcXFxuXFxcIixcXG4zMDQ0OlxcdFxcdFxcdFxcdEVSUl9QVFIocmV0KSk7XFxuMzA0NTpcXHRcXHRcXHRnb3RvIG91dF9lcnJvcjtcXG4zMDQ2OlxcdFxcdH1cXG4zMDQ3OlxcdFxcbjMwNDg6XFx0XFx0cmV0ID0gcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24ocHJpdik7XFxuMzA0OTpcXHRcXHRpZiAocmV0KSB7XFxuMzA1MDpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBwcm9iZSBTZXJEZXMgY2hpcCBvcHRpb246ICVwZVxcXFxuXFxcIixcXG4zMDUxOlxcdFxcdFxcdFxcdEVSUl9QVFIocmV0KSk7XFxuMzA1MjpcXHRcXHRcXHRnb3RvIG91dF9lcnJvcjtcXG4zMDUzOlxcdFxcdH1cXG4zMDU0OlxcdFxcbjMwNTU6XFx0XFx0LyogQ29uZmlndXJlIHN3aXRjaCB0byB2ZW5kb3ItZGVmaW5lZCBpbml0aWFsIHN0YXRlICovXFxuMzA1NjpcXHRcXHRyZXQgPSBydGw4MzY1bWJfc3dpdGNoX2luaXQocHJpdik7XFxuMzA1NzpcXHRcXHRpZiAocmV0KSB7XFxuMzA1ODpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBpbml0aWFsaXplIHN3aXRjaDogJXBlXFxcXG5cXFwiLFxcbjMwNTk6XFx0XFx0XFx0XFx0RVJSX1BUUihyZXQpKTtcXG4zMDYwOlxcdFxcdFxcdGdvdG8gb3V0X2Vycm9yO1xcbjMwNjE6XFx0XFx0fVxcbjMwNjI6XFx0XFxuMzA2MzpcXHRcXHRpZiAobWItXFx1MDAzZXNkc19zdXBwb3J0ZWQpIHtcXG4zMDY0OlxcdFxcdFxcdHJldCA9IHJ0bDgzNjVtYl9zZHNfcmFpc2VfcmF0ZV9saW1pdHMocHJpdik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjQ5LjczNzkwMTA5OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODIzMDg3ODk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgcnRsODM2NW1iIERyaXZlciBTZXR1cCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgcnRsODM2NW1iX3NldHVwYCBpcyB0aGUgRFNBIHNldHVwIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgYHJ0bDgzNjVtYmAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcnRsODM2NW1iX3N3aXRjaF9vcHNgIHN0cnVjdHVyZS4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBkZWZpbml0aW9uIG9mIGBydGw4MzY1bWJfc3dpdGNoX29wc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzdHJ1Y3R1cmUgYW5kIGhvdyBgcnRsODM2NW1iX3NldHVwYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgZHJpdmVyJ3Mgb3BlcmF0aW9uLiBLbm93aW5nIHdoZXJlIHRoaXMgaXMgZGVmaW5lZCB3aWxsIGdpdmUgbWUgdmFsdWFibGUgY29udGV4dCBmb3IgaG93IHRoZSBzd2l0Y2ggaXMgaW5pdGlhbGl6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0ODI5LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo1MS41NjA5OTEzMjVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzMwMCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzMwMDpcXHRcXG4zMzAxOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIHJ0bDgzNjVtYl9waHlsaW5rX21hY19vcHMgPSB7XFxuMzMwMjpcXHRcXHQubWFjX3NlbGVjdF9wY3MgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfc2VsZWN0X3BjcyxcXG4zMzAzOlxcdFxcdC5tYWNfY29uZmlnID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2NvbmZpZyxcXG4zMzA0OlxcdFxcdC5tYWNfbGlua19kb3duID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcXG4zMzA1OlxcdFxcdC5tYWNfbGlua191cCA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3VwLFxcbjMzMDY6XFx0fTtcXG4zMzA3OlxcdFxcbjMzMDg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBydGw4MzY1bWJfc3dpdGNoX29wcyA9IHtcXG4zMzA5OlxcdFxcdC5nZXRfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2wsXFxuMzMxMDpcXHRcXHQuY2hhbmdlX3RhZ19wcm90b2NvbCA9IHJ0bDgzNjVtYl9jaGFuZ2VfdGFnX3Byb3RvY29sLFxcbjMzMTE6XFx0XFx0LnNldHVwID0gcnRsODM2NW1iX3NldHVwLFxcbjMzMTI6XFx0XFx0LnRlYXJkb3duID0gcnRsODM2NW1iX3RlYXJkb3duLFxcbjMzMTM6XFx0XFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyxcXG4zMzE0OlxcdFxcdC5wb3J0X2JyaWRnZV9qb2luID0gcnRsODN4eF9wb3J0X2JyaWRnZV9qb2luLFxcbjMzMTU6XFx0XFx0LnBvcnRfYnJpZGdlX2xlYXZlID0gcnRsODN4eF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG4zMzE2OlxcdFxcdC5wb3J0X3ByZV9icmlkZ2VfZmxhZ3MgPSBydGw4MzY1bWJfcG9ydF9wcmVfYnJpZGdlX2ZsYWdzLFxcbjMzMTc6XFx0XFx0LnBvcnRfYnJpZGdlX2ZsYWdzID0gcnRsODN4eF9wb3J0X2JyaWRnZV9mbGFncyxcXG4zMzE4OlxcdFxcdC5wb3J0X3N0cF9zdGF0ZV9zZXQgPSBydGw4MzY1bWJfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbjMzMTk6XFx0XFx0LnBvcnRfZmFzdF9hZ2UgPSBydGw4M3h4X3BvcnRfZmFzdF9hZ2UsXFxuMzMyMDpcXHRcXHQucG9ydF9mZGJfYWRkID0gcnRsODN4eF9wb3J0X2ZkYl9hZGQsXFxuMzMyMTpcXHRcXHQucG9ydF9mZGJfZGVsID0gcnRsODN4eF9wb3J0X2ZkYl9kZWwsXFxuMzMyMjpcXHRcXHQucG9ydF9mZGJfZHVtcCA9IHJ0bDgzeHhfcG9ydF9mZGJfZHVtcCxcXG4zMzIzOlxcdFxcdC5wb3J0X21kYl9hZGQgPSBydGw4M3h4X3BvcnRfbWRiX2FkZCxcXG4zMzI0OlxcdFxcdC5wb3J0X21kYl9kZWwgPSBydGw4M3h4X3BvcnRfbWRiX2RlbCxcXG4zMzI1OlxcdFxcdC5wb3J0X3ZsYW5fYWRkID0gcnRsODM2NW1iX3BvcnRfdmxhbl9hZGQsXFxuMzMyNjpcXHRcXHQucG9ydF92bGFuX2RlbCA9IHJ0bDgzNjVtYl9wb3J0X3ZsYW5fZGVsLFxcbjMzMjc6XFx0XFx0LnBvcnRfdmxhbl9maWx0ZXJpbmcgPSBydGw4MzY1bWJfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG4zMzI4OlxcdFxcdC5nZXRfc3RyaW5ncyA9IHJ0bDgzNjVtYl9nZXRfc3RyaW5ncyxcXG4zMzI5OlxcdFxcdC5nZXRfZXRodG9vbF9zdGF0cyA9IHJ0bDgzNjVtYl9nZXRfZXRodG9vbF9zdGF0cyxcXG4zMzMwOlxcdFxcdC5nZXRfc3NldF9jb3VudCA9IHJ0bDgzNjVtYl9nZXRfc3NldF9jb3VudCxcXG4zMzMxOlxcdFxcdC5nZXRfZXRoX3BoeV9zdGF0cyA9IHJ0bDgzNjVtYl9nZXRfcGh5X3N0YXRzLFxcbjMzMzI6XFx0XFx0LmdldF9ldGhfbWFjX3N0YXRzID0gcnRsODM2NW1iX2dldF9tYWNfc3RhdHMsXFxuMzMzMzpcXHRcXHQuZ2V0X2V0aF9jdHJsX3N0YXRzID0gcnRsODM2NW1iX2dldF9jdHJsX3N0YXRzLFxcbjMzMzQ6XFx0XFx0LmdldF9zdGF0czY0ID0gcnRsODM2NW1iX2dldF9zdGF0czY0LFxcbjMzMzU6XFx0XFx0LnBvcnRfY2hhbmdlX210dSA9IHJ0bDgzNjVtYl9wb3J0X2NoYW5nZV9tdHUsXFxuMzMzNjpcXHRcXHQucG9ydF9tYXhfbXR1ID0gcnRsODM2NW1iX3BvcnRfbWF4X210dSxcXG4zMzM3OlxcdFxcdC5wb3J0X2hzcl9qb2luID0gZHNhX3BvcnRfc2ltcGxlX2hzcl9qb2luLFxcbjMzMzg6XFx0XFx0LnBvcnRfaHNyX2xlYXZlID0gZHNhX3BvcnRfc2ltcGxlX2hzcl9sZWF2ZSxcXG4zMzM5OlxcdH07XFxuMzM0MDpcXHRcXG4zMzQxOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgcnRsODM2NW1iX29wcyA9IHtcXG4zMzQyOlxcdFxcdC5kZXRlY3QgPSBydGw4MzY1bWJfZGV0ZWN0LFxcbjMzNDM6XFx0XFx0LnBvcnRfYWRkX2lzb2xhdGlvbiA9IHJ0bDgzNjVtYl9wb3J0X2FkZF9pc29sYXRpb24sXFxuMzM0NDpcXHRcXHQucG9ydF9yZW1vdmVfaXNvbGF0aW9uID0gcnRsODM2NW1iX3BvcnRfcmVtb3ZlX2lzb2xhdGlvbixcXG4zMzQ1OlxcdFxcdC5wb3J0X3NldF9lZmlkID0gcnRsODM2NW1iX3BvcnRfc2V0X2VmaWQsXFxuMzM0NjpcXHRcXHQucG9ydF9zZXRfbGVhcm5pbmcgPSBydGw4MzY1bWJfcG9ydF9zZXRfbGVhcm5pbmcsXFxuMzM0NzpcXHRcXHQucG9ydF9zZXRfdWNhc3RfZmxvb2QgPSBydGw4MzY1bWJfcG9ydF9zZXRfdWNhc3RfZmxvb2QsXFxuMzM0ODpcXHRcXHQucG9ydF9zZXRfbWNhc3RfZmxvb2QgPSBydGw4MzY1bWJfcG9ydF9zZXRfbWNhc3RfZmxvb2QsXFxuMzM0OTpcXHRcXHQucG9ydF9zZXRfYmNhc3RfZmxvb2QgPSBydGw4MzY1bWJfcG9ydF9zZXRfYmNhc3RfZmxvb2QsXFxuMzM1MDpcXHRcXHQubDJfYWRkX3VjID0gcnRsODM2NW1iX2wyX2FkZF91YyxcXG4zMzUxOlxcdFxcdC5sMl9kZWxfdWMgPSBydGw4MzY1bWJfbDJfZGVsX3VjLFxcbjMzNTI6XFx0XFx0LmwyX2dldF9uZXh0X3VjID0gcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjLFxcbjMzNTM6XFx0XFx0LmwyX2FkZF9tYyA9IHJ0bDgzNjVtYl9sMl9hZGRfbWMsXFxuMzM1NDpcXHRcXHQubDJfZGVsX21jID0gcnRsODM2NW1iX2wyX2RlbF9tYyxcXG4zMzU1OlxcdFxcdC5sMl9mbHVzaCA9IHJ0bDgzNjVtYl9sMl9mbHVzaCxcXG4zMzU2OlxcdFxcdC5waHlfcmVhZCA9IHJ0bDgzNjVtYl9waHlfcmVhZCxcXG4zMzU3OlxcdFxcdC5waHlfd3JpdGUgPSBydGw4MzY1bWJfcGh5X3dyaXRlLFxcbjMzNTg6XFx0fTtcXG4zMzU5OlxcdFxcbjMzNjA6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudCA9IHtcXG4zMzYxOlxcdFxcdC5kc19vcHMgPSBcXHUwMDI2cnRsODM2NW1iX3N3aXRjaF9vcHMsXFxuMzM2MjpcXHRcXHQub3BzID0gXFx1MDAyNnJ0bDgzNjVtYl9vcHMsXFxuMzM2MzpcXHRcXHQucGh5bGlua19tYWNfb3BzID0gXFx1MDAyNnJ0bDgzNjVtYl9waHlsaW5rX21hY19vcHMsXFxuMzM2NDpcXHRcXHQuY2xrX2RlbGF5ID0gMTAsXFxuMzM2NTpcXHRcXHQuY21kX3JlYWQgPSAweGI5LFxcbjMzNjY6XFx0XFx0LmNtZF93cml0ZSA9IDB4YjgsXFxuMzM2NzpcXHRcXHQuY2hpcF9kYXRhX3N6ID0gc2l6ZW9mKHN0cnVjdCBydGw4MzY1bWIpLFxcbjMzNjg6XFx0fTtcXG4zMzY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo1MS41NjExNjA4MTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUxNTI3NzgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHJ0bDgzNjVtYl92YXJpYW50IEluc3RhbnRpYXRpb24qKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBidXNlcyBhcmUgYWN0dWFsbHkgdXNpbmcgb3IgaW5zdGFudGlhdGluZyB0aGlzIGBydGw4MzY1bWJfdmFyaWFudGAgdGhpbmcuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSB0YXJnZXRlZCBzZWFyY2ggZm9yIHNwZWNpZmljIGRyaXZlcnMgcmVsYXRlZCB0byB0aGlzIGNvbXBvbmVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbG9vayBmb3IgaW5zdGFuY2VzIG9mIGBydGw4MzY1bWJfb2ZfbWF0Y2hgIG9yIHJlbGF0ZWQgdGVybXMuIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgbWVjaGFuaXNtcyBoZXJlLiBJZiB0aGlzIGlzIGEgc3dpdGNoIGl0IHByb2JhYmx5IGlzIGNvbm5lY3RlZCBieSBTTUkgb3IgTURJTy4gSWYgdGhlIGRyaXZlciBpcyB3cml0dGVuIGNvcnJlY3RseSBpdCB3aWxsIHVzZSB0aGUgY29ycmVjdCBjb21wYXRpYmxlIHN0cmluZyBhbmQgdGhlIGRyaXZlciBwcm9iZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBkdXJpbmcgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbi5cblxuTGV0J3Mgc2VlIHdoYXQgSSBjYW4gZmluZC4gSSBleHBlY3QgdGhhdCBJJ2xsIHF1aWNrbHkgbmFycm93IGRvd24gdGhlIHJlbGV2YW50IGRyaXZlcnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgYnVzIGFzc29jaWF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3ODcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjU0LjA3NjQ0MjE3N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4ODc3OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iX29mX21hdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM2MD1jb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzY5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzM3MDpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY1bWJfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNzEtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZWFsdGVrLHJ0bDgzNjVtYlxcXCIsIC5kYXRhID0gXFx1MDAyNnJ0bDgzNjVtYl92YXJpYW50LCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzczLX07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMzc0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjVtYl9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzc1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM3Nj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM3OC1cXHRcXHQubmFtZSA9IFxcXCJydGw4MzY1bWItc21pXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNzk6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM4MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzg2PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgcnRsODM2NW1iX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzg4LVxcdFxcdC5uYW1lID0gXFxcInJ0bDgzNjVtYi1tZGlvXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzODk6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM5MC1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo1NC4xMjgzMzYwMjhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4MzQ4NTI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSVEw4MzY1TUIgU3dpdGNoIERyaXZlcidzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYHJ0bDgzNjVtYl9zbWlfZHJpdmVyYCwgd2hpY2ggaXMgYSBgcGxhdGZvcm1fZHJpdmVyYCwgYW5kIHRoZSBgcnRsODM2NW1iX21kaW9fZHJpdmVyYCwgYW4gYG1kaW9fZHJpdmVyYC4gQm90aCBhcmUgbWF0Y2hlZCB0aHJvdWdoIERldmljZSBUcmVlLCBzbyBpdCdzIGEgdHlwaWNhbCBlbWJlZGRlZCBzeXN0ZW0gc2V0dXAuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIHN3aXRjaCBoYXJkd2FyZSBpcyBhY3R1YWxseSBpbnN0YW50aWF0ZWQgd2l0aGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBBcmUgdGhlcmUgYW55IHN0YW5kYXJkIGVtdWxhdGVkIGRldmljZXMsIGxpa2UgdmlydGlvLCBVU0IgZ2FkZ2V0cywgbG9vcGJhY2sgaW50ZXJmYWNlcywgb3IgdHVuL3RhcCB0aGF0IHdvdWxkIHN0YW5kIGluIGZvciB0aGlzIGhhcmR3YXJlP1xuXG5Ob3csIGNvbnNpZGVyaW5nIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgXCJyZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZVwiLiBGdXp6aW5nIGlzIHBvaW50bGVzcyBpZiB0aGUgY29kZSAqY2Fubm90KiBleGVjdXRlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQuIFNwZWNpZmljYWxseSwgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gR0NFIG9yIFFFTVUgdXNpbmcgZW11bGF0ZWQgZGV2aWNlcywgaXQncyBhIG5vLWdvLCByZWdhcmRsZXNzIG9mIGNvbXBsZXhpdHkgb3IgYXNzZXJ0aW9ucy4gVGhlIGd1aWRlbGluZXMgZXhwbGljaXRseSBsaXN0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEFTSUMgY2FyZHMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyB3aGF0IEknbSBjb25jZXJuZWQgYWJvdXQgaGVyZS5cblxuU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBEb2VzIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGRyaXZlciAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBEVCBiaW5kaW5ncyBvbiBhbiBlbWJlZGRlZCBib2FyZD8gV2UncmUgdGFsa2luZyBhYm91dCBhIFJlYWx0ZWsgc3dpdGNoIEFTSUMgdGhhdCdzIGxpa2VseSBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzIG9yIEdQSU8tYmFzZWQgU01JIGJ1cyB0byBhIHJvdXRlciBTb0Mgb3Igc2ltaWxhciBlbWJlZGRlZCBib2FyZC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBjb25maXJtLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLCBhbmQgcmV2aWV3IGl0cyBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIGZ1bmN0aW9ucyB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzY5NCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo1OC4wMTE4MjQ1MzJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM3MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY1bWJfb2ZfbWF0Y2hbXSA9IHtcXG4zMzcxOlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzY1bWJcXFwiLCAuZGF0YSA9IFxcdTAwMjZydGw4MzY1bWJfdmFyaWFudCwgfSxcXG4zMzcyOlxcdFxcdHsgLyogc2VudGluZWwgKi8gfSxcXG4zMzczOlxcdH07XFxuMzM3NDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBydGw4MzY1bWJfb2ZfbWF0Y2gpO1xcbjMzNzU6XFx0XFxuMzM3NjpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcXG4zMzc3OlxcdFxcdC5kcml2ZXIgPSB7XFxuMzM3ODpcXHRcXHRcXHQubmFtZSA9IFxcXCJydGw4MzY1bWItc21pXFxcIixcXG4zMzc5OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcXG4zMzgwOlxcdFxcdH0sXFxuMzM4MTpcXHRcXHQucHJvYmUgID0gcmVhbHRla19zbWlfcHJvYmUsXFxuMzM4MjpcXHRcXHQucmVtb3ZlID0gcmVhbHRla19zbWlfcmVtb3ZlLFxcbjMzODM6XFx0XFx0LnNodXRkb3duID0gcmVhbHRla19zbWlfc2h1dGRvd24sXFxuMzM4NDpcXHR9O1xcbjMzODU6XFx0XFxuMzM4NjpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjVtYl9tZGlvX2RyaXZlciA9IHtcXG4zMzg3OlxcdFxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG4zMzg4OlxcdFxcdFxcdC5uYW1lID0gXFxcInJ0bDgzNjVtYi1tZGlvXFxcIixcXG4zMzg5OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcXG4zMzkwOlxcdFxcdH0sXFxuMzM5MTpcXHRcXHQucHJvYmUgID0gcmVhbHRla19tZGlvX3Byb2JlLFxcbjMzOTI6XFx0XFx0LnJlbW92ZSA9IHJlYWx0ZWtfbWRpb19yZW1vdmUsXFxuMzM5MzpcXHRcXHQuc2h1dGRvd24gPSByZWFsdGVrX21kaW9fc2h1dGRvd24sXFxuMzM5NDpcXHR9O1xcbjMzOTU6XFx0XFxuMzM5NjpcXHRzdGF0aWMgaW50IHJ0bDgzNjVtYl9pbml0KHZvaWQpXFxuMzM5NzpcXHR7XFxuMzM5ODpcXHRcXHRpbnQgcmV0O1xcbjMzOTk6XFx0XFxuMzQwMDpcXHRcXHRyZXQgPSByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZydGw4MzY1bWJfbWRpb19kcml2ZXIpO1xcbjM0MDE6XFx0XFx0aWYgKHJldClcXG4zNDAyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzQwMzpcXHRcXG4zNDA0OlxcdFxcdHJldCA9IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2cnRsODM2NW1iX3NtaV9kcml2ZXIpO1xcbjM0MDU6XFx0XFx0aWYgKHJldCkge1xcbjM0MDY6XFx0XFx0XFx0cmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZydGw4MzY1bWJfbWRpb19kcml2ZXIpO1xcbjM0MDc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zNDA4OlxcdFxcdH1cXG4zNDA5OlxcdFxcbjM0MTA6XFx0XFx0cmV0dXJuIDA7XFxuMzQxMTpcXHR9XFxuMzQxMjpcXHRtb2R1bGVfaW5pdChydGw4MzY1bWJfaW5pdCk7XFxuMzQxMzpcXHRcXG4zNDE0OlxcdHN0YXRpYyB2b2lkIF9fZXhpdCBydGw4MzY1bWJfZXhpdCh2b2lkKVxcbjM0MTU6XFx0e1xcbjM0MTY6XFx0XFx0cmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNnJ0bDgzNjVtYl9zbWlfZHJpdmVyKTtcXG4zNDE3OlxcdFxcdHJlYWx0ZWtfbWRpb19kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2cnRsODM2NW1iX21kaW9fZHJpdmVyKTtcXG4zNDE4OlxcdH1cXG4zNDE5OlxcdG1vZHVsZV9leGl0KHJ0bDgzNjVtYl9leGl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6NTguMDExOTk0MTUyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0NDQ5MzU0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUlRMODM2NU1CIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgYHJ0bDgzNjVtYl9tYWluLmNgLCBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIGRlYWQgZW5kIGZvciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcy4gSSBtZWFuLCBpdCdzIGEgZHJpdmVyIGZvciB0aGUgUmVhbHRlayBSVEw4MzY1TUIgZXRoZXJuZXQgc3dpdGNoIEFTSUMuIEl0J3MgZGVzaWduZWQgdG8gdGFsayB0byB0aGUgY2hpcCB2aWEgTURJTyBvciBHUElPIFNNSSwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpc24ndCBzb21ldGhpbmcgSSBjYW4gdHJpZ2dlciBpbiBhIHN0YW5kYXJkIFFFTVUgb3Igc3l6a2FsbGVyIGVudmlyb25tZW50IG9uIGFtZDY0LiBUaGVzZSBhcmUgdmlydHVhbGl6ZWQgc2V0dXBzOyB0aGV5J3JlIG5vdCBnb2luZyB0byBtYWdpY2FsbHkgZW11bGF0ZSBwaHlzaWNhbCBuZXR3b3JrIHN3aXRjaCBoYXJkd2FyZS5cblxuRXZlbiB0aGUgY3J1Y2lhbCBmdW5jdGlvbnMgbGlrZSBgcnRsODM2NW1iX3NldHVwKClgIGFuZCBgcnRsODM2NW1iX3Jlc2V0X2NoaXAoKWAg4oCTIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyIOKAkyBhcmUgb25seSBjYWxsZWQgd2hlbiB0aGUga2VybmVsIGFjdHVhbGx5ICpwcm9iZXMqIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBkZXZpY2UuIEl0J3MgYSBmdW5kYW1lbnRhbCBoYXJkd2FyZSBkZXBlbmRlbmN5LlxuXG5MZXQgbWUganVzdCBzb2xpZGlmeSB0aGlzIGluIG15IG1pbmQgYnkgcnVubmluZyB0aHJvdWdoIHRoZSBjaGVja2xpc3Q6XG5cbjEuICAqKkFyY2hpdGVjdHVyZToqKiBhbWQ2NCDigJMgWWVwLCBzdGFuZGFyZCBmb3IgbWFueSBmdXp6aW5nIHNldHVwcywgYnV0IGlycmVsZXZhbnQgaGVyZSBkdWUgdG8gdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50LlxuMi4gICoqRmlsZToqKiBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY2Ag4oCTIENvbmZpcm1lZCwgdGhpcyBpcyB0aGUgZHJpdmVyIGNvZGUgaW4gcXVlc3Rpb24uXG4zLiAgKipIYXJkd2FyZToqKiBSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggQVNJQyBjb25uZWN0ZWQgdmlhIE1ESU8vU01JIOKAkyBCaW5nby4gVGhlIGRlYWxicmVha2VyLlxuNC4gICoqV29ydGhGdXp6aW5nOioqIEZhbHNlIOKAkyBBYnNvbHV0ZWx5LiBXZSdyZSBub3QgZ29pbmcgdG8gZ2V0IGFueSBjb2RlIGNvdmVyYWdlIGhlcmUgd2l0aG91dCB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLlxuNS4gICoqUmVhc29uaW5nOioqIENvbmNpc2UgYW5kIGNvcnJlY3QuIFRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhhdCBleHBsYW5hdGlvbiBpcyBzb2xpZC5cbjYuICAqKkVuYWJsZUNvbmZpZ3M6KiogTnVsbCBvciBlbXB0eSDigJMgTWFrZXMgc2Vuc2UuIE5vIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB3aWxsIG1ha2UgYSB2aXJ0dWFsIG1hY2hpbmUgbWFnaWNhbGx5IGNyZWF0ZSBhIHJlYWwgc3dpdGNoLlxuNy4gICoqRm9jdXNTeW1ib2xzOioqIE51bGwgb3IgZW1wdHkg4oCTIFJpZ2h0IGFnYWluLiBObyBzcGVjaWZpYyBmdW5jdGlvbiBjYWxscyB3aWxsIGNoYW5nZSB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuWWVwLCB0aGF0J3MgaXQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBObyBwb2ludCB3YXN0aW5nIGN5Y2xlcyBvbiBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSByZWFjaGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTMxMiwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNzowMi40NTY5MzMyMjNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNzowMi40NTY5NjY0OTRaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowmxmng[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-08 00:34:11 +0000 UTC FinishedAt: 2026-09-08 00:37:04 +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+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGNoaXAgcmVzZXQgbG9naWMgKHJ0bDgzNjVtYl9yZXNldF9jaGlwKSBpbiB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRXRoZXJuZXQgc3dpdGNoIGRyaXZlci4gVGhpcyBkcml2ZXIgdGFyZ2V0cyBwaHlzaWNhbCBSZWFsdGVrIHN3aXRjaCBBU0lDcyBjb25uZWN0ZWQgb3ZlciBNRElPIG9yIFNNSSBidXNlcywgd2hpY2ggYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKFFFTVUvS1ZNIG9uIGFtZDY0KSB1c2VkIGJ5IHN5emthbGxlci4gQXMgc3VjaCwgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGIyZmQ2NzM3ODFmOGJkN2NkMGViZmFjNWM5YTI5OWQxYTdmMmRjNjZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIFNlcCA4IDAwOjM2OjIzIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jXG5pbmRleCA3MjgyMzFkOGY5NGNhLi41MDhlMWJlYThmYzVjIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuQEAgLTEzNiw2ICYjNDM7MTM2LDkgQEBcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0tcdDB4MDAwMlxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1x0MHgwMDAxXG4gXG4mIzQzOy8qIFRpbWUgdGhlIGNoaXAgbmVlZHMgdG8gY29tcGxldGUgYSByZXNldCwgcGVyIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiAqL1xuJiM0MzsjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVNcdDEwMDBcbiYjNDM7XG4gLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcdDB4MTEwMFxuICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLXHQweDAwMDFcbkBAIC0yOTgwLDE4ICYjNDM7Mjk4MywzOCBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zd2l0Y2hfaW5pdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuIFxuIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiB7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBkZWFkbGluZTtcbiYjNDM7XHR1bnNpZ25lZCBsb25nIHJlbWFpbmluZztcbiBcdHUzMiB2YWw7XG4mIzQzO1x0aW50IHJldDtcbiBcbiBcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrKHByaXYsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRyxcbiBcdFx0XHQgICAgICBGSUVMRF9QUkVQKFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0ssIDEpKTtcbiBcbiYjNDM7XHRkZWFkbGluZSA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTtcbiYjNDM7XG4gXHQvKiBSZWFsdGVrIGRvY3VtZW50YXRpb24gc2F5cyB0aGUgY2hpcCBuZWVkcyAxIHNlY29uZCB0byByZXNldC4gU2xlZXBcbiBcdCAqIGZvciAxMDAgbXMgYmVmb3JlIGFjY2Vzc2luZyBhbnkgcmVnaXN0ZXJzIHRvIHByZXZlbnQgQUNLIHRpbWVvdXRzLlxuIFx0ICovXG4gXHRtc2xlZXAoMTAwKTtcbi1cdHJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VtYXAsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRywgdmFsLFxuLVx0XHRcdFx0XHQhKHZhbCBcdTAwMjYgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSyksXG4tXHRcdFx0XHRcdDIwMDAwLCAxZTYpO1xuJiM0MztcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsXG4mIzQzO1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcbiYjNDM7XHRcdFx0XHQgICAgICAgMjAwMDAsIDFlNik7XG4mIzQzO1x0aWYgKHJldClcbiYjNDM7XHRcdHJldHVybiByZXQ7XG4mIzQzO1xuJiM0MztcdC8qIFRoZSBiaXQgY2xlYXJpbmcgb25seSBtZWFucyB0aGUgcmVzZXQgd2FzIGFjY2VwdGVkLCBub3QgdGhhdCB0aGVcbiYjNDM7XHQgKiBjaGlwIGlzIHJlYWR5OiByZWdpc3RlciB3cml0ZXMgaXNzdWVkIGJlZm9yZSB0aGUgZG9jdW1lbnRlZCByZXNldFxuJiM0MztcdCAqIHRpbWUgaGFzIGVsYXBzZWQgYXJlIHNpbGVudGx5IGRyb3BwZWQgYnkgYmxvY2tzIHRoYXQgYXJlIHN0aWxsXG4mIzQzO1x0ICogY29taW5nIHVwLCB3aGljaCBsZWF2ZXMgdGhlIHN3aXRjaCBoYWxmIGNvbmZpZ3VyZWQuIFdhaXQgb3V0XG4mIzQzO1x0ICogd2hhdGV2ZXIgaXMgbGVmdCBvZiB0aGF0IHNlY29uZCwgbWVhc3VyZWQgZnJvbSB0aGUgcmVzZXQgd3JpdGUsIHNvXG4mIzQzO1x0ICogdGhlIHBvbGwgYWJvdmUgZG9lcyBub3QgYWRkIHRvIHRoZSB0b3RhbC5cbiYjNDM7XHQgKi9cbiYjNDM7XHRyZW1haW5pbmcgPSBkZWFkbGluZSAtIGppZmZpZXM7XG4mIzQzO1x0aWYgKChsb25nKXJlbWFpbmluZyBcdTAwM2UgMClcbiYjNDM7XHRcdG1zbGVlcChqaWZmaWVzX3RvX21zZWNzKHJlbWFpbmluZykpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gMDtcbiB9XG4gXG4gc3RhdGljIGludCBydGw4MzY1bWJfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjaGlwIHJlc2V0IGxvZ2ljIChydGw4MzY1bWJfcmVzZXRfY2hpcCkgaW4gdGhlIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggQVNJQ3MgY29ubmVjdGVkIG92ZXIgTURJTyBvciBTTUkgYnVzZXMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0tWTSBvbiBhbWQ2NCkgdXNlZCBieSBzeXprYWxsZXIuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBldmFsdWF0ZSB3aGV0aGVyIGl0IHdhcnJhbnRzIGZ1enppbmcgd2l0aCBzeXprYWxsZXIuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIGludGVybmFsIGFzc3VtcHRpb25zLiBZb3UgbXVzdCBhY3RpdmVseSB1c2UgeW91ciBjb2RlIGFjY2Vzcwp0b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpUaGUgZ29hbCBvZiBwYXRjaCBmdXp6aW5nIGlzIHRvIGRpc2NvdmVyIGNyYXNoZXMsIHJlZ3Jlc3Npb25zLCBleHBvc2VkIGxhdGVudCBidWdzLAphbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLgoKLSBSRUFDSEFCSUxJVFkgSVMgVEhFIFBSSU1BUlkgR0FURToKICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkCiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS4KICBJZiB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgKHNlZSBTZWN0aW9uIDIpLCBpdCBNVVNUIE5PVCBiZSBmdXp6ZWQsCiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLgoKLSBETyBOT1QgQkxJTkRMWSBUUlVTVCAmIzM0O05PIEZVTkNUSU9OQUwgQ0hBTkdFJiMzNDsgKE5GQ0kpIE9SICYjMzQ7UkVGQUNUT1JJTkcmIzM0OyBDTEFJTVM6CiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyAmIzM0O2NsZWFudXBzJiMzNDssICYjMzQ7cmVmYWN0b3JpbmdzJiMzNDssIG9yIHN0YXRlCiAgJiMzNDtObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZCYjMzQ7LiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS4KICBDb2RlIHJlZmFjdG9yaW5ncyB0aGF0IHJlYXJyYW5nZSBsb2dpYywgaW50cm9kdWNlIGhlbHBlciBmdW5jdGlvbnMsIG9yIGFsdGVyIHN0YXRlIG1hbmFnZW1lbnQKICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy4KICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLgoKLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDoKICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosCiAgQlVHX09OKiwgbG9ja2RlcF9hc3NlcnQqKSBpbiByZWFjaGFibGUgY29kZSBwYXRocywgaXQgZW5mb3JjZXMgbmV3IG9yIHN0cmljdGVyIGludmFyaWFudHMuCiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlcgogIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6CgotIE5vbi1rZXJuZWwgYW5kIG5vbi1leGVjdXRhYmxlIGNoYW5nZXM6CiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuCiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLykKICAgIHRoYXQgZG8gbm90IGFmZmVjdCB0aGUgY29tcGlsZWQga2VybmVsIGltYWdlICh2bWxpbnV4KSBvciBrZXJuZWwgbW9kdWxlcy4KICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzCiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLgogICogQnVpbGQgc3lzdGVtIG9yIEtjb25maWcgY2hhbmdlcyB0aGF0IGRvIG5vdCBhbHRlciBjb21waWxlZCBDIGxvZ2ljLgotIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZToKICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICAgIGlvbmljLCBhbWRncHUpIHJlcXVpcmluZyBwaHlzaWNhbCBBU0lDL1BDSWUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOgogICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nCiAgICBwaHlzaWNhbCBQQ0kgaG90LXVucGx1ZyBvciBtYW51YWwgc3lzZnMgZHJpdmVyIHVuYmluZGluZy4KICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUmV0dXJuIFdvcnRoRnV6emluZz10cnVlIHdoZW5ldmVyIHRoZSBwYXRjaCB0b3VjaGVzIHJlYWNoYWJsZSBleGVjdXRhYmxlIGNvZGUsIGluY2x1ZGluZzoKLSBDb3JlIFN1YnN5c3RlbXM6CiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksCiAgICBCUEYsIHNjaGVkdWxlciwgY29yZSBuZXR3b3JraW5nLCBWRlMsIG9yIHN5c2NhbGwgaGFuZGxpbmcuCi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOgogICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLgotIFJ1bnRpbWUgQXNzZXJ0aW9ucyBhbmQgRGVmZW5zaXZlIENoZWNrczoKICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy4KLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOgogICogRHJpdmVycyBhY2Nlc3NpYmxlIHZpYSB2aXJ0dWFsIGJ1c2VzICh2aXJ0aW8sIFVTQiBnYWRnZXQsIGxvb3BiYWNrLCBuZXRsaW5rLCBiaW5kZXIsIHNvY2tldHMsIGV0Yy4pLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNC4gRVhUUkFDVElORyBGb2N1c1N5bWJvbHMgKFBSRVZFTlRJTkcgRElMVVRJT04pCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOgoKLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6CiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXMKICAoaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG86IGdlbmVyYWwgbWVtb3J5IGFsbG9jYXRvcnMgYW5kIGRlYWxsb2NhdG9ycywgcGFnZSBmYXVsdAogIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLgogIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyAmIzM0O2ZvY3VzZWQmIzM0OywKICB3aGljaCBzZXZlcmVseSBkaWx1dGVzIGZ1enppbmcgZWZmb3J0IGF3YXkgZnJvbSB0aGUgYWN0dWFsIGNoYW5nZXMuCgotIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzoKICBMaXN0IGZ1bmN0aW9ucyB0aGF0IHNwZWNpZmljYWxseSBpbXBsZW1lbnQgdGhlIGxvZ2ljIGJlaW5nIGFkZGVkIG9yIGFsdGVyZWQsIG9yIGRpcmVjdCBBUEkgZW50cnlwb2ludHMKICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy4KCi0gSEFORExJTkcgU1RBVElDIElOTElORSBGVU5DVElPTlMgSU4gSEVBREVSUyAoLmgpOgogIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2sKICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy4KICBJZiB0aGUgY2hhbmdlcyBhcmUgcHJpbWFyaWx5IGluIHN0YXRpYyBpbmxpbmUgaGVscGVycywgaWRlbnRpZnkgbm9uLXN0YXRpYywgZmVhdHVyZS1zcGVjaWZpYyBjYWxsZXIKICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo1LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CklkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgY29tcGlsZSBhbmQgcmVhY2ggdGhlIG1vZGlmaWVkIGNvZGU6Ci0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KLSBDaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLgotIFN0cmlwIGFueSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5UYXJnZXQgYXJjaGl0ZWN0dXJlOiBhbWQ2NAoKRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiMmZkNjczNzgxZjhiZDdjZDBlYmZhYzVjOWEyOTlkMWE3ZjJkYzY2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBTZXAgOCAwMDozNjoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMgYi9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jCmluZGV4IDcyODIzMWQ4Zjk0Y2EuLjUwOGUxYmVhOGZjNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYwpAQCAtMTM2LDYgJiM0MzsxMzYsOSBAQAogI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9TV19NQVNLCTB4MDAwMgogI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLCTB4MDAwMQogCiYjNDM7LyogVGltZSB0aGUgY2hpcCBuZWVkcyB0byBjb21wbGV0ZSBhIHJlc2V0LCBwZXIgUmVhbHRlayBkb2N1bWVudGF0aW9uICovCiYjNDM7I2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TCTEwMDAKJiM0MzsKIC8qIEludGVycnVwdCBwb2xhcml0eSByZWdpc3RlciAqLwogI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUcJMHgxMTAwCiAjZGVmaW5lICAgUlRMODM2NU1CX0lOVFJfUE9MQVJJVFlfTUFTSwkweDAwMDEKQEAgLTI5ODAsMTggJiM0MzsyOTgzLDM4IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpCiAKIHN0YXRpYyBpbnQgcnRsODM2NW1iX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdikKIHsKJiM0MzsJdW5zaWduZWQgbG9uZyBkZWFkbGluZTsKJiM0MzsJdW5zaWduZWQgbG9uZyByZW1haW5pbmc7CiAJdTMyIHZhbDsKJiM0MzsJaW50IHJldDsKIAogCXByaXYtJmd0O3dyaXRlX3JlZ19ub2Fjayhwcml2LCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsCiAJCQkgICAgICBGSUVMRF9QUkVQKFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0ssIDEpKTsKIAomIzQzOwlkZWFkbGluZSA9IGppZmZpZXMgJiM0MzsgbXNlY3NfdG9famlmZmllcyhSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTsKJiM0MzsKIAkvKiBSZWFsdGVrIGRvY3VtZW50YXRpb24gc2F5cyB0aGUgY2hpcCBuZWVkcyAxIHNlY29uZCB0byByZXNldC4gU2xlZXAKIAkgKiBmb3IgMTAwIG1zIGJlZm9yZSBhY2Nlc3NpbmcgYW55IHJlZ2lzdGVycyB0byBwcmV2ZW50IEFDSyB0aW1lb3V0cy4KIAkgKi8KIAltc2xlZXAoMTAwKTsKLQlyZXR1cm4gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O21hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsCi0JCQkJCSEodmFsICZhbXA7IFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0spLAotCQkJCQkyMDAwMCwgMWU2KTsKJiM0MzsJcmV0ID0gcmVnbWFwX3JlYWRfcG9sbF90aW1lb3V0KHByaXYtJmd0O21hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsCiYjNDM7CQkJCSAgICAgICAhKHZhbCAmYW1wOyBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSwKJiM0MzsJCQkJICAgICAgIDIwMDAwLCAxZTYpOwomIzQzOwlpZiAocmV0KQomIzQzOwkJcmV0dXJuIHJldDsKJiM0MzsKJiM0MzsJLyogVGhlIGJpdCBjbGVhcmluZyBvbmx5IG1lYW5zIHRoZSByZXNldCB3YXMgYWNjZXB0ZWQsIG5vdCB0aGF0IHRoZQomIzQzOwkgKiBjaGlwIGlzIHJlYWR5OiByZWdpc3RlciB3cml0ZXMgaXNzdWVkIGJlZm9yZSB0aGUgZG9jdW1lbnRlZCByZXNldAomIzQzOwkgKiB0aW1lIGhhcyBlbGFwc2VkIGFyZSBzaWxlbnRseSBkcm9wcGVkIGJ5IGJsb2NrcyB0aGF0IGFyZSBzdGlsbAomIzQzOwkgKiBjb21pbmcgdXAsIHdoaWNoIGxlYXZlcyB0aGUgc3dpdGNoIGhhbGYgY29uZmlndXJlZC4gV2FpdCBvdXQKJiM0MzsJICogd2hhdGV2ZXIgaXMgbGVmdCBvZiB0aGF0IHNlY29uZCwgbWVhc3VyZWQgZnJvbSB0aGUgcmVzZXQgd3JpdGUsIHNvCiYjNDM7CSAqIHRoZSBwb2xsIGFib3ZlIGRvZXMgbm90IGFkZCB0byB0aGUgdG90YWwuCiYjNDM7CSAqLwomIzQzOwlyZW1haW5pbmcgPSBkZWFkbGluZSAtIGppZmZpZXM7CiYjNDM7CWlmICgobG9uZylyZW1haW5pbmcgJmd0OyAwKQomIzQzOwkJbXNsZWVwKGppZmZpZXNfdG9fbXNlY3MocmVtYWluaW5nKSk7CiYjNDM7CiYjNDM7CXJldHVybiAwOwogfQogCiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1MjQKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBEcml2ZXIgUGF0Y2gqKgoKT2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIHBhdGNoLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gYW5hbHl6ZSB0aGlzIG1vZGlmaWNhdGlvbiB0byBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY2AsIHNwZWNpZmljYWxseSB0aGUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBmdW5jdGlvbi4gRmlyc3QsIEkgbmVlZCB0byByZW1pbmQgbXlzZWxmIHByZWNpc2VseSB3aGF0IHRoZSBgcnRsODM2NW1iYCBkcml2ZXIgZW50YWlscy4gSXMgdGhpcyBpbmRlZWQgYSBEaXN0cmlidXRlZCBTd2l0Y2ggQXJjaGl0ZWN0dXJlIChEU0EpIGRyaXZlciB0YXJnZXRpbmcgdGhvc2UgUmVhbHRlayBSVEw4MzY1TUIgLyBSVEw4MzY2UkIgZXRoZXJuZXQgc3dpdGNoIGNoaXBzPyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgaXRzIHB1cnBvc2UgYW5kIGludGVuZGVkIGVudmlyb25tZW50LgoKSSYjMzk7bGwgdGFrZSBhIGxvb2sgYXQgdGhlIGJyb2FkZXIgY29udGV4dCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL2AuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXImIzM5O3MgcHJvYmluZyBtZWNoYW5pc20gYW5kIHVzYWdlIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIERTQSBmcmFtZXdvcmsuIFRoZSBjcml0aWNhbCBxdWVzdGlvbiBmb3IgbWUgaXMgd2hldGhlciB0aGlzIGRyaXZlciBuZWNlc3NpdGF0ZXMgc3BlY2lmaWMgcGh5c2ljYWwgaGFyZHdhcmUgZm9yIG9wZXJhdGlvbiwgb3IgaWYgaXQmIzM5O3MgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSB3aXRoaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIgb3IgUUVNVS4gVGhhdCB3aWxsIGluZm9ybSBob3cgYWdncmVzc2l2ZWx5IHRvIHB1cnN1ZSB0aGlzLgoKVG8gZ2FpbiBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIHF1aWNrbHksIEnigJlsbCBsZXZlcmFnZSBgZ3JlcHBlcmAgb3IgYHJlYWQtZmlsZWAgdG8gZWZmaWNpZW50bHkgZGlzc2VjdCB0aGUgZHJpdmVyIGFuZCBpdHMgaW50ZXJhY3Rpb25zLiBUaGlzIHNob3VsZCBwcm92aWRlIHRoZSBuZWNlc3NhcnkgY29udGV4dCB0byBhc3Nlc3MgdGhlIHBhdGNoJiMzOTtzIGltcGFjdCBhbmQgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGw4MzY1bWImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY3NyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSAmIzQzOz0gcnRsODM2NW1iLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE5OnJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIwOlx0XHQgIHJ0bDgzNjVtYl90YWJsZS5vIFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMTpcdFx0ICBydGw4MzY1bWJfdmxhbi5vIFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMjpcdFx0ICBydGw4MzY1bWJfbDIubyBcXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjM6IyBlbmQgb2YgcnRsODM2NW1iLW9ianNcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg9MTkwPWV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjZyYl92YXJpYW50O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5MTpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTItXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMS0vLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjovKiBGb3J3YXJkaW5nIGFuZCBtdWx0aWNhc3QgZGF0YWJhc2UgaW50ZXJmYWNlIGZvciB0aGUgcnRsODM2NW1iIHN3aXRjaCBmYW1pbHlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMtICpcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy04LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTojaW5jbHVkZSBcJiMzNDtydGw4MzY1bWJfbDIuaFwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTA6I2luY2x1ZGUgXCYjMzQ7cnRsODM2NW1iX3RhYmxlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3JlZ21hcC5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtOTEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo5MjpzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjX2tleSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy05My1cdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy05OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwMDpzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEwMTpcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWNfa2V5IGtleTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEwMi1cdHU4IHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTEzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTE0OnN0cnVjdCBydGw4MzY1bWJfbDJfbWNfa2V5IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExNS1cdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjItXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMjM6c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMjQ6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSBrZXk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjUtXHR1MTYgbWVtYmVyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEzMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEzNDpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfZGF0YV90b191Yyhjb25zdCB1MTYgKmRhdGEsIHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgKnVjKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTM1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xNjMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxNjQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl91YyAqdWMsIHUxNiAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTE2NS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjAyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjAzOnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGNvbnN0IHUxNiAqZGF0YSwgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMDQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIzMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjIzMTpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2wyX21jICptYywgdTE2ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjMyLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yNjEtLypcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI2MjogKiBydGw4MzY1bWJfbDJfZ2V0X25leHRfdWMoKSAtIGdldCB0aGUgbmV4dCBVbmljYXN0IEwyIGVudHJ5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yNjMtICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgxLSAqKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4MjppbnQgcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkciwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODMtXHRcdFx0ICAgICBzdHJ1Y3QgcmVhbHRla19mZGJfZW50cnkgKmVudHJ5KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4NS1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg2Olx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4Ny1cdGludCByZXQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODk6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjkwLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9SRUFELCBhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI5NjpcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX3VjKGRhdGEsIFx1MDAyNnVjKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozMDU6aW50IHJ0bDgzNjVtYl9sMl9hZGRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDYtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMwOS1cdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzEwOlx0c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB1YyA9IHsgMCB9O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzExLVx0dTE2IGFkZHI7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzI4LVx0dWMuYWdlID0gMTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMyOTpcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFx1MDAyNnVjLCBkYXRhKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMzMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMzMS1cdC8qIGFkZCB0aGUgbmV3IGVudHJ5IG9yIHVwZGF0ZSBhbiBleGlzdGluZyBvbmUgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMzMjpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMzMtXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0NC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM0NTppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM0Ni1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzQ5LVx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozNTA6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHVjID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNTEtXHR1MTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNjAtXHR1Yy5hZ2UgPSAwO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzYxOlx0cnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoXHUwMDI2dWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2Ny1cdCAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzY4Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2OS1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFx1MDAyNmFkZHIsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzgzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mzg0OmludCBydGw4MzY1bWJfbDJfZmx1c2goc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIHUxNiB2aWQpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zODUte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ0OC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ0OTppbnQgcnRsODM2NW1iX2wyX2FkZF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ1MC1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDUzLVx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0NTQ6XHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTUtXHR1MTYgYWRkcjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NjUtXHRtYy5pc19zdGF0aWMgPSAxO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDY2Olx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY4LVx0LyogRmlyc3QgbG9vayBmb3IgYW4gZXhpc3RpbmcgZW50cnkgKHRvIGdldCBleGlzdGluZyBwb3J0IG1lbWJlcnMpICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0Njk6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDcwLVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9SRUFELCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3NC1cdFx0LyogVGhlcmUgaXMgYWxyZWFkeSBhbiBlbnRyeS4uLiAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDc1Olx0XHRydGw4MzY1bWJfbDJfZGF0YV90b19tYyhkYXRhLCBcdTAwMjZtYyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzYtXHRcdGRldl9kYmcocHJpdi1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDg5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDkwOlx0XHRydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShcdTAwMjZtYywgZGF0YSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00OTEtXHR9IGVsc2UgaWYgKHJldCA9PSAtRU5PRU5UKSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTA3LVx0LyogYWRkIHRoZSBuZXcgZW50cnkgb3IgdXBkYXRlIGFuIGV4aXN0aW5nIG9uZSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTA4Olx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwOS1cdFx0XHRcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFx1MDAyNmFkZHIsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTE5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTIwOmludCBydGw4MzY1bWJfbDJfZGVsX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTIxLVx0XHRcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MjQtXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUyNTpcdHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgbWMgPSB7IDAgfTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyNi1cdHUxNiBhZGRyO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMS1cdG1jLmtleS5pdmwgPSB0cnVlO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTMyOlx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTMzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM0LVx0LyogRmlyc3QgbG9vayBmb3IgYW4gZXhpc3RpbmcgZW50cnkgKHRvIGdldCBleGlzdGluZyBwb3J0IG1lbWJlcnMpICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MzU6XHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM2LVx0XHRcdFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9SRUFELCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU0OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU1MDpcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGRhdGEsIFx1MDAyNm1jKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU1MS1cdGRldl9kYmcocHJpdi1cdTAwM2VkZXYsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY3LVx0fVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTY4Olx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXHUwMDI2bWMsIGRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTcwLVx0LyogdXBkYXRlIHRoZSBleGlzdGluZyBlbnRyeS4gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU3MTpcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01NzItXHRcdFx0XHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcdTAwMjZhZGRyLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI6LyogRm9yd2FyZGluZyBhbmQgbXVsdGljYXN0IGRhdGFiYXNlIGludGVyZmFjZSBmb3IgdGhlIHJ0bDgzNjVtYiBzd2l0Y2ggZmFtaWx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0zLSAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMTQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoxNTppbnQgcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkciwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xNi1cdFx0XHQgICAgIHN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSAqZW50cnkpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MTc6aW50IHJ0bDgzNjVtYl9sMl9hZGRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xOC1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbc3RhdGljIEVUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE5LVx0XHRcdHUxNiBlZmlkLCB1MTYgdmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjIwOmludCBydGw4MzY1bWJfbDJfZGVsX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjEtXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBhZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yMi1cdFx0XHR1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMzppbnQgcnRsODM2NW1iX2wyX2ZsdXNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MTYgdmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjU6aW50IHJ0bDgzNjVtYl9sMl9hZGRfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNi1cdFx0XHRjb25zdCB1bnNpZ25lZCBjaGFyIG1hY19hZGRyW3N0YXRpYyBFVEhfQUxFTl0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yNy1cdFx0XHR1MTYgdmlkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI4OmludCBydGw4MzY1bWJfbDJfZGVsX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjktXHRcdFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQtICogcmVxdWlyZSB0aGUgcnRsODM2N2QgdmVuZG9yIGRyaXZlci4gV2l0aCBhbGwgdGhpcyB1bmNlcnRhaW50eSwgdGhlIGRyaXZlciBoYXNcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjU6ICogYmVlbiBtb2Rlc3RseSBuYW1lZCBydGw4MzY1bWIuIEZ1dHVyZSBpbXBsZW1lbnRvcnMgbWF5IHdpc2ggdG8gcmVuYW1lIHRoaW5nc1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02Ni0gKiBhY2NvcmRpbmdseS5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwOS0jaW5jbHVkZSBcJiMzNDtydGw4M3h4LmhcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTEwOiNpbmNsdWRlIFwmIzM0O3J0bDgzNjVtYl9sMi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTojaW5jbHVkZSBcJiMzNDtydGw4MzY1bWJfdmxhbi5oXCYjMzQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExMi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI1OS0gKiAzLWJpdCBNU0IgZmllbGQgKENUUkwxKS4gVGhlIGNoaXAgcmVzZXRzIHRoZW0gdG8gMHgxRkZGRjsgc2VlXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI2MDogKiBydGw4MzY1bWJfc2RzX3JhaXNlX3JhdGVfbGltaXRzKCkuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI2MS0gKi9cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQyNy0jZGVmaW5lICAgUlRMODM2NU1CX1BPUlRfTUlTQ19DRkdfTUFDX0xPT1BCQUNLX01BU0tcdFx0MHgwMDQwXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQyODovKiBTZWUgXHUwMDI2cnRsODM2NW1iX3ZsYW5fZWdyZXNzX21vZGUgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDI5LSNkZWZpbmUgICBSVEw4MzY1TUJfUE9SVF9NSVNDX0NGR19WTEFOX0VHUkVTU19NT0RFX01BU0tcdFx0MHgwMDMwXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MzItLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjQzMzogKiBlbnVtIHJ0bDgzNjVtYl92bGFuX2VncmVzc19tb2RlIC0gcG9ydCBWTEFOIGVncmVzcyBtb2RlXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQzNC0gKiBAUlRMODM2NU1CX1ZMQU5fRUdSRVNTX01PREVfT1JJR0lOQUw6IGZvbGxvdyB1bnRhZyBtYXNrIGluIFZMQU40ayB0YWJsZSBlbnRyeVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDQyLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0NDM6ZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ0NC1cdFJUTDgzNjVNQl9WTEFOX0VHUkVTU19NT0RFX09SSUdJTkFMID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQ4Ni1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NDg3OmVudW0gcnRsODM2NW1iX21pYl9jb3VudGVyX2luZGV4IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDg4LVx0UlRMODM2NU1CX01JQl9pZkluT2N0ZXRzLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTQ4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo1NDk6c3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1MC1cdHUzMiBvZmZzZXQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjU1ODpzdGF0aWMgc3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciBydGw4MzY1bWJfbWliX2NvdW50ZXJzW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1OS1cdFJUTDgzNjVNQl9NQUtFX01JQl9DT1VOVEVSKDAsIDQsIGlmSW5PY3RldHMpLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjE4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MTk6c3RhdGljX2Fzc2VydChBUlJBWV9TSVpFKHJ0bDgzNjVtYl9taWJfY291bnRlcnMpID09IFJUTDgzNjVNQl9NSUJfRU5EKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjIwLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MjE6c3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjIyLVx0dTE2IHJlZztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyNi0vKiBMaWZ0ZWQgZnJvbSB0aGUgdmVuZG9yIGRyaXZlciBzb3VyY2VzICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYyNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmNbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjI4LVx0eyAweDEzRUIsIDB4MTVCQiB9LCB7IDB4MTMwMywgMHgwNkQ2IH0sIHsgMHgxMzA0LCAweDA3MDAgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYzNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjM2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX2luaXRfamFtX2NvbW1vbltdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzctXHR7IDB4MTIwMCwgMHg3RkNCIH0sIHsgMHgwODg0LCAweDAwMDMgfSwgeyAweDA2RUIsIDB4MDAwMSB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQ2LSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDc6ICogcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oKS5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQ4LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDk6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9zZ21paVtdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NTAtXHR7IDB4MDQ4MCwgMHgwNEQ3IH0sIHsgMHgwNDgxLCAweEY5OTQgfSwgeyAweDA0ODIsIDB4MjQyMCB9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjU4LSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NTk6ICogcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24oKS5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYwLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NjE6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWlbXSA9IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYyLVx0eyAweDA1MDAsIDB4ODJGMCB9LCB7IDB4MDUwMSwgMHhGMTk1IH0sIHsgMHgwNTAyLCAweDMxQTIgfSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2Ni1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjY3OmVudW0gcnRsODM2NW1iX3BoeV9pbnRlcmZhY2VfbW9kZSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2OC1cdFJUTDgzNjVNQl9QSFlfSU5URVJGQUNFX01PREVfSU5WQUwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjc4LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2Nzk6ICogc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgLSBleHRlcm5hbCBpbnRlcmZhY2UgaW5mb1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODAtICogQHBvcnQ6IHRoZSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODQtICogUmVwcmVzZW50cyBhIG1hcHBpbmc6IHBvcnQgLVx1MDAzZSB7IGlkLCBzdXBwb3J0ZWRfaW50ZXJmYWNlcyB9LiBUbyBiZSBlbWJlZGRlZFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2ODU6ICogaW4gXHUwMDI2c3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gZm9yIGV2ZXJ5IHBvcnQgd2l0aCBhbiBleHRlcm5hbCBpbnRlcmZhY2UuXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4Ni0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg3OnN0cnVjdCBydGw4MzY1bWJfZXh0aW50IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjg4LVx0aW50IHBvcnQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02OTMtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY5NDogKiBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAtIHN0YXRpYyBjaGlwLXNwZWNpZmljIGluZm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjk1LSAqIEBuYW1lOiBodW1hbi1yZWFkYWJsZSBjaGlwIG5hbWVcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwMy0gKiBieSB0aGlzIGRyaXZlci4gV2hlbiBhZGRpbmcgc3VwcG9ydCBmb3IgYW5vdGhlciBjaGlwIGluIHRoZSBmYW1pbHksIGEgbmV3XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcwNDogKiBjaGlwIGluZm8gc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSBydGw4MzY1bWJfY2hpcF9pbmZvcyBhcnJheS5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA1LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDY6c3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDctXHRjb25zdCBjaGFyICpuYW1lO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA5LVx0dTMyIGNoaXBfdmVyO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MTA6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCBleHRpbnRzW1JUTDgzNjVNQl9NQVhfTlVNX0VYVElOVFNdO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MTE6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgKmphbV90YWJsZTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzEyLVx0c2l6ZV90IGphbV9zaXplO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzE2LSNkZWZpbmUgUEhZX0lOVEYoX21vZGUpIChSVEw4MzY1TUJfUEhZX0lOVEVSRkFDRV9NT0RFXyAjIyBfbW9kZSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzE3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyBydGw4MzY1bWJfY2hpcF9pbmZvc1tdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MTgtXHR7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MjUtXHRcdH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcyNjpcdFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcyNzpcdFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzI4LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTczNy1cdFx0fSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzM4Olx0XHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzM5Olx0XHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NDAtXHR9LFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzUxLVx0XHR9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NTI6XHRcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NTM6XHRcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc1NC1cdH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjQtXHRcdH0sXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc2NTpcdFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc2NjpcdFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY3LVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzcwOmVudW0gcnRsODM2NW1iX3N0cF9zdGF0ZSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3MS1cdFJUTDgzNjVNQl9TVFBfU1RBVEVfRElTQUJMRUQgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzc2LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Nzc6ZW51bSBydGw4MzY1bWJfY3B1X2luc2VydCB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc3OC1cdFJUTDgzNjVNQl9DUFVfSU5TRVJUX1RPX0FMTCA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODItXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc4MzplbnVtIHJ0bDgzNjVtYl9jcHVfcG9zaXRpb24ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODQtXHRSVEw4MzY1TUJfQ1BVX1BPU19BRlRFUl9TQSA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc4ODplbnVtIHJ0bDgzNjVtYl9jcHVfZm9ybWF0IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzg5LVx0UlRMODM2NU1CX0NQVV9GT1JNQVRfOEJZVEVTID0gMCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5Mi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzkzOmVudW0gcnRsODM2NW1iX2NwdV9yeGxlbiB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc5NC1cdFJUTDgzNjVNQl9DUFVfUlhMRU5fNzJCWVRFUyA9IDAsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTgtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc5OTogKiBzdHJ1Y3QgcnRsODM2NW1iX2NwdSAtIENQVSBwb3J0IGNvbmZpZ3VyYXRpb25cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODAwLSAqIEBlbmFibGU6IGVuYWJsZS9kaXNhYmxlIGhhcmR3YXJlIGluc2VydGlvbiBvZiBDUFUgdGFnIGluIHN3aXRjaC1cdTAwM2VDUFUgZnJhbWVzXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTAtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxMTpzdHJ1Y3QgcnRsODM2NW1iX2NwdSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxMi1cdGJvb2wgZW5hYmxlO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODE0LVx0dTMyIHRyYXBfcG9ydDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE1Olx0ZW51bSBydGw4MzY1bWJfY3B1X2luc2VydCBpbnNlcnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNjpcdGVudW0gcnRsODM2NW1iX2NwdV9wb3NpdGlvbiBwb3NpdGlvbjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE3Olx0ZW51bSBydGw4MzY1bWJfY3B1X3J4bGVuIHJ4X2xlbmd0aDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODE4Olx0ZW51bSBydGw4MzY1bWJfY3B1X2Zvcm1hdCBmb3JtYXQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxOS19O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODIxLS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MjI6ICogc3RydWN0IHJ0bDgzNjVtYl9wb3J0IC0gcHJpdmF0ZSBwZXItcG9ydCBkYXRhXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgyMy0gKiBAcHJpdjogcG9pbnRlciB0byBwYXJlbnQgcmVhbHRla19wcml2IGRhdGFcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODI0LSAqIEBpbmRleDogRFNBIHBvcnQgaW5kZXgsIHNhbWUgYXMgZHNhX3BvcnQ6OmluZGV4XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNTogKiBAc3RhdHM6IGxpbmsgc3RhdGlzdGljcyBwb3B1bGF0ZWQgYnkgcnRsODM2NW1iX3N0YXRzX3BvbGwsIHJlYWR5IGZvciBhdG9taWNcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODI2OiAqICAgICAgICAgYWNjZXNzIHZpYSBydGw4MzY1bWJfZ2V0X3N0YXRzNjRcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODI3LSAqIEBzdGF0c19sb2NrOiBwcm90ZWN0IHRoZSBzdGF0cyBzdHJ1Y3R1cmUgZHVyaW5nIHJlYWQvdXBkYXRlXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjktICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgzMDpzdHJ1Y3QgcnRsODM2NW1iX3BvcnQge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MzEtXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODM4LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4Mzk6ICogc3RydWN0IHJ0bDgzNjVtYiAtIGRyaXZlciBwcml2YXRlIGRhdGFcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODQwLSAqIEBwcml2OiBwb2ludGVyIHRvIHBhcmVudCByZWFsdGVrX3ByaXYgZGF0YVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODUxLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTI6c3RydWN0IHJ0bDgzNjVtYiB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1My1cdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1NC1cdGludCBpcnE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NTpcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvICpjaGlwX2luZm87XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NjpcdHN0cnVjdCBydGw4MzY1bWJfY3B1IGNwdTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODU3LVx0c3RydWN0IG11dGV4IG1pYl9sb2NrO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTg6XHRzdHJ1Y3QgcnRsODM2NW1iX3BvcnQgcG9ydHNbUlRMODM2NU1CX01BWF9OVU1fUE9SVFNdO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTktXHRzdHJ1Y3QgcGh5bGlua19wY3MgcGNzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODYyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjM6I2RlZmluZSBwY3NfdG9fcnRsODM2NW1iKF9wY3MpIGNvbnRhaW5lcl9vZigoX3BjcyksIHN0cnVjdCBydGw4MzY1bWIsIHBjcylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODY0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjU6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODczLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NzQ6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg3NS1cdFx0XHRcdCAgICAgdTMyIG9jcF9hZGRyKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTAzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MDQ6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkwNS1cdFx0XHRcdCAgdTMyIG9jcF9hZGRyLCB1MTYgKmRhdGEpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkxMjpcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTMtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MTY6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MTctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTI5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MzA6XHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTMxLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk0Ny1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTQ4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3Bfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTQ5LVx0XHRcdFx0ICAgdTMyIG9jcF9hZGRyLCB1MTYgZGF0YSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTU2Olx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk2MDpcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3ByZXBhcmUocHJpdiwgcGh5LCBvY3BfYWRkcik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk2MS1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NzktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk4MDpcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05ODEtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTg5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5OTA6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3JlYWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBoeSwgaW50IHJlZ251bSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTkxLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMDMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMDQ6XHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9yZWFkKHByaXYsIHBoeSwgb2NwX2FkZHIsIFx1MDAyNnZhbCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMDUtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDE3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDE4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDE5LVx0XHRcdCAgICAgICB1MTYgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAzMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAzMjpcdHJldCA9IHJ0bDgzNjVtYl9waHlfb2NwX3dyaXRlKHByaXYsIHBoeSwgb2NwX2FkZHIsIHZhbCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMzMtXHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNDc6cnRsODM2NW1iX2dldF9wb3J0X2V4dGludChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA0OC17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNDk6XHRzdHJ1Y3QgcnRsODM2NW1iICptYiA9IHByaXYtXHUwMDNlY2hpcF9kYXRhO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDUwLVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDUyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgUlRMODM2NU1CX01BWF9OVU1fRVhUSU5UUzsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA1MzpcdFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludCA9XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNTQtXHRcdFx0XHUwMDI2bWItXHUwMDNlY2hpcF9pbmZvLVx1MDAzZWV4dGludHNbaV07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0xMDY2PXN0YXRpYyBlbnVtIGRzYV90YWdfcHJvdG9jb2xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA2NzpydGw4MzY1bWJfZ2V0X3RhZ19wcm90b2NvbChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDY4LVx0XHRcdCAgIGVudW0gZHNhX3RhZ19wcm90b2NvbCBtcClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwNzAtXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZHMtXHUwMDNlcHJpdjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA3MTpcdHN0cnVjdCBydGw4MzY1bWJfY3B1ICpjcHU7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwNzI6XHRzdHJ1Y3QgcnRsODM2NW1iICptYjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3My1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODItXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODM6c3RhdGljIGludCBydGw4MzY1bWJfZXh0X2NvbmZpZ19yZ21paShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4NC1cdFx0XHRcdCAgICAgIHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODUte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDg2Olx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKmV4dGludCA9XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODc6XHRcdHJ0bDgzNjVtYl9nZXRfcG9ydF9leHRpbnQocHJpdiwgcG9ydCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODgtXHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBcdTAwMjZwcml2LVx1MDAzZWRzO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTExNS1cdCAqIGZvcmNpbmcgdGhlIGV4dGVybmFsIGludGVyZmFjZSBpbnRvIGEgcGFydGljdWxhciBtb2RlLCB3aGljaCBpcyBkb25lXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMTY6XHQgKiBpbiB0aGUgcnRsODM2NW1iX3BoeWxpbmtfbWFjX2xpbmtfe3VwLGRvd259IGZ1bmN0aW9ucy5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTExNy1cdCAqXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTY0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTY1OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc193cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgYWRkciwgdTE2IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExNjYte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE4NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE4NjpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcmVhZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgYWRkciwgdTE2ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTg3LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyMjctICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMjg6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3Byb2JlX29wdGlvbihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjI5LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTIzMDpcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcHJpdi1cdTAwM2VjaGlwX2RhdGE7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMzE6XHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjMyLVx0dTMyIG9wdGlvbjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNzMtICogdGhlaXIgbWF4aW11bSBpbiBpdHMgc3dpdGNoIGluaXQsIHVuY29uZGl0aW9uYWxseSBmb3IgdGhlIHdob2xlIGNoaXBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI3NDogKiBmYW1pbHkuIFRoZSBjaGlwIHJlc2V0IGluIHJ0bDgzNjVtYl9zZXR1cCgpIHB1dHMgdGhlbSBiYWNrIHRvIHRoZWlyIHJlc2V0XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNzUtICogZGVmYXVsdCBvZiAweDFGRkZGLCBhIH4xLjA0OCBHYnBzIGxpbWl0IHdoaWNoIGNhcHMgdGhlIGFnZ3JlZ2F0ZVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI4Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI4MzpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcmFpc2VfcmF0ZV9saW1pdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTI4NC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzA4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzA5OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Bjc19jb25maWcoc3RydWN0IHBoeWxpbmtfcGNzICpwY3MsIHVuc2lnbmVkIGludCBuZWdfbW9kZSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxMC1cdFx0XHRcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzEzLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMxNDpcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSAqc2RzX2phbTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMxNS1cdGNvbnN0IGludCBpZCA9IFJUTDgzNjVNQl9TRFNfRVhUX0lOVEVSRkFDRV9JRDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMxNjpcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcGNzX3RvX3J0bDgzNjVtYihwY3MpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzE3LVx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMjYtXHRpZiAoaW50ZXJmYWNlID09IFBIWV9JTlRFUkZBQ0VfTU9ERV8yNTAwQkFTRVgpIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMyNzpcdFx0c2RzX2phbSA9IHJ0bDgzNjVtYl9zZHNfamFtX2hzZ21paTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMyODpcdFx0c2RzX2phbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfc2RzX2phbV9oc2dtaWkpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzI5LVx0XHRtb2RlID0gUlRMODM2NU1CX0VYVF9QT1JUX01PREVfSFNHTUlJO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzMwLVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMzMTpcdFx0c2RzX2phbSA9IHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzMyOlx0XHRzZHNfamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTMzMy1cdFx0bW9kZSA9IFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1NHTUlJO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM2My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIHNkc19qYW1fc2l6ZTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTM2NDpcdFx0cmV0ID0gcnRsODM2NW1iX3Nkc193cml0ZShwcml2LCBzZHNfamFtW2ldLnJlZyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM2NS1cdFx0XHRcdFx0ICBzZHNfamFtW2ldLnZhbCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzkwLVx0ICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzOTE6XHRyZXQgPSBydGw4MzY1bWJfc2RzX3dyaXRlKHByaXYsIFJUTDgzNjVNQl9TRFNfUkVHX1JFU0VULFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzkyLVx0XHRcdFx0ICBSVEw4MzY1TUJfU0RTX1JFU0VUX0RFQVNTRVJUKTtcbi0tXG5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTg5MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDQ1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHJ0bDgzNjVtYmAgcHJvYmUgcHJvY2Vzcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBwaW5wb2ludCBob3cgdGhpcyBzcGVjaWZpYyBkcml2ZXIgaXMgcmVnaXN0ZXJlZCB3aXRoaW4gdGhlIHN5c3RlbS4gVG8gZG8gdGhhdCBlZmZpY2llbnRseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhlIGNyaXRpY2FsIHJlZ2lzdHJhdGlvbiBwb2ludHMgYXJlLCBzbyBJJiMzOTtsbCBzdGFydCBieSBmb2N1c2luZyBteSBzZWFyY2ggb24gdGhlIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9gIGRpcmVjdG9yeS4KCkkmIzM5O2xsIGJlIHVzaW5nIGBncmVwYCB0byBmaW5kIGluc3RhbmNlcyBvZiBgcnRsODM2NW1iX3ZhcmlhbnRgLiBUaGlzIHNob3VsZCBnaXZlIG1lIGEgZ29vZCBoYW5kbGUgb24gd2hlcmUgdGhlIHZhcmlhbnQtc3BlY2lmaWMgY29kZSBsaXZlcywgYW5kIGhvcGVmdWxseSwgSSYjMzk7bGwgYmUgYWJsZSB0byB0cmFjZSBiYWNrIGZyb20gdGhlcmUgdG8gdGhlIHByb2JlIGZ1bmN0aW9uIGl0c2VsZi4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBgcnRsODM2NW1iX3ZhcmlhbnRgIHRvIGJlIGEga2V5IGVsZW1lbnQgZm9yIGlkZW50aWZ5aW5nIHRoZSBoYXJkd2FyZSBhbmQgaW5zdGFudGlhdGluZyB0aGUgY29ycmVjdCBkcml2ZXIuIEZyb20gdGhlcmUsIEkgY2FuIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIG1vZHVsZSBhbmQgdGhlIHByb2JlIGFyZSByZWdpc3RlcmVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0bDgzNjVtYl92YXJpYW50JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE5MD1leHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTkyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM0MT1zdGF0aWMgY29uc3Qgc3RydWN0IHJlYWx0ZWtfb3BzIHJ0bDgzNjVtYl9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMzYwOmNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQgPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNjEtXHQuZHNfb3BzID0gXHUwMDI2cnRsODM2NW1iX3N3aXRjaF9vcHMsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzcwPXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHJ0bDgzNjVtYl9vZl9tYXRjaFtdID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMzcxOlx0eyAuY29tcGF0aWJsZSA9IFwmIzM0O3JlYWx0ZWsscnRsODM2NW1iXCYjMzQ7LCAuZGF0YSA9IFx1MDAyNnJ0bDgzNjVtYl92YXJpYW50LCB9LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzcyLVx0eyAvKiBzZW50aW5lbCAqLyB9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNTY1CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgUlRMODM2NU1CIERyaXZlciBVc2FnZSBhbmQgUHJvYmluZyoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gZGlnIGludG8gdGhlIGtlcm5lbCBzb3VyY2UgYW5kIGlkZW50aWZ5IHByZWNpc2VseSB3aGljaCBkcml2ZXJzIGFyZSBsZXZlcmFnaW5nIHRoZSBgcnRsODM2NW1iX3ZhcmlhbnRgIGVudW1lcmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGBydGw4MzY1bWJgIGJhc2UgYW5kIGl0cyBzcGVjaWZpYyB2YXJpYW50cy4gS25vd2luZyB0aGUgdmFyaWFudHMgd2lsbCBnaXZlIG1lIGluc2lnaHRzIGludG8gc3BlY2lmaWMgaGFyZHdhcmUgcmV2aXNpb25zIG9yIGNvbmZpZ3VyYXRpb25zLgoKVGhlbiwgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwcm9iaW5nIG1lY2hhbmlzbS4gSG93IGRvZXMgdGhlIHN5c3RlbSAqZmluZCogYW5kIGlkZW50aWZ5IHRoaXMgY2hpcD8gSSB3YW50IHRvIHRyYWNlIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIElzIGl0IGEgc3RhbmRhcmQgUENJL1NQSS9JMkMgZW51bWVyYXRpb24sIG9yIGlzIHRoZXJlIHNvbWV0aGluZyBtb3JlIGN1c3RvbSBnb2luZyBvbj8gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgZmxvdyB3aWxsIGJlIGNyaXRpY2FsIHRvIGFueSBkZWJ1Z2dpbmcgb3IgY3VzdG9taXphdGlvbiBJIG1pZ2h0IG5lZWQgdG8gZG8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXRlY3Rpb24gcHJvY2VzcyAtIHRoZSBjaGVja3MsIHRoZSByZWdpc3RlcnMgZXhhbWluZWQsIHRoZSBmYWxsYmFjayBpZiB0aGUgZGV2aWNlIGlzbiYjMzk7dCBpbW1lZGlhdGVseSBpZGVudGlmaWVkLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgZm9yIGFueSBxdWlya3Mgb3Igc3BlY2lmaWMgZmxhZ3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgaG93IHRoZSBjaGlwIGlzIGhhbmRsZWQuIEhvcGVmdWxseSwgdGhlIGNvbW1lbnRzIGFyZSBzdWZmaWNpZW50LCBidXQgSSYjMzk7bSBwcmVwYXJlZCB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBmbG93IG1ldGljdWxvdXNseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtNT0RVTEVfREVWSUNFX1RBQkxFfHJlYWx0ZWtfJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1NjYgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLKVx0XHQmIzQzOz0gcmVhbHRla19kc2Eub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrX2RzYS1vYmpzXHRcdFx0Oj0gcnRsODN4eC5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS00LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9NT1pZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjY6cmVhbHRla19kc2Etb2JqcyAmIzQzOz0gcmVhbHRlay1tZGlvLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTctZW5kaWZcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT05PWlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMDpyZWFsdGVrX2RzYS1vYmpzICYjNDM7PSByZWFsdGVrLXNtaS5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMS1lbmRpZlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDQ6c3RhdGljIGludCByZWFsdGVrX21kaW9fd3JpdGUodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDUte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDY6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDctXHRzdHJ1Y3QgbWlpX2J1cyAqYnVzID0gcHJpdi1cdTAwM2VidXM7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3MjpzdGF0aWMgaW50IHJlYWx0ZWtfbWRpb19yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03My17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3NDpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03NS1cdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVx1MDAzZWJ1cztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfbWRpb19pbmZvID0ge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTA1Olx0LnJlZ19yZWFkID0gcmVhbHRla19tZGlvX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDY6XHQucmVnX3dyaXRlID0gcmVhbHRla19tZGlvX3dyaXRlLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA3LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTA5LS8qKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTEwOiAqIHJlYWx0ZWtfbWRpb19wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIE1ESU8tY29ubmVjdGVkIHN3aXRjaFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTExLSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSB0byBwcm9iZSBvbi5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjAtICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjE6aW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjIte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTIzLVx0c3RydWN0IGRldmljZSAqZGV2ID0gXHUwMDI2bWRpb2Rldi1cdTAwM2VkZXY7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjQ6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI1LVx0aW50IHJldDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEyNi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEyNzpcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXHUwMDI2cmVhbHRla19tZGlvX2luZm8pO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTI4LVx0aWYgKElTX0VSUihwcml2KSlcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMzItXHRwcml2LVx1MDAzZW1kaW9fYWRkciA9IG1kaW9kZXYtXHUwMDNlYWRkcjtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEzMzpcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19tZGlvX3dyaXRlO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTM0LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE0Mi19XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDM6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19tZGlvX3Byb2JlLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDUtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDY6ICogcmVhbHRla19tZGlvX3JlbW92ZSgpIC0gUmVtb3ZlIHRoZSBkcml2ZXIgb2YgYW4gTURJTy1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDctICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHRvIGJlIHJlbW92ZWQuXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU0LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU1OnZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTYte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU3Olx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcdTAwMjZtZGlvZGV2LVx1MDAzZWRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTgtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY1LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE2NjpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX21kaW9fcmVtb3ZlLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjgtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNjk6ICogcmVhbHRla19tZGlvX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgTURJTy1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzAtICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHNodXR0aW5nIGRvd24uXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTc3LSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTc4OnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE3OS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxODA6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFx1MDAyNm1kaW9kZXYtXHUwMDNlZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE4MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xODYtfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfbWRpb19zaHV0ZG93biwgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo4OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC05LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjEzOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0xNC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxODppbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoxOTp2b2lkIHJlYWx0ZWtfbWRpb19yZW1vdmUoc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIwOnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfbWRpb19kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yNS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzAte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTMyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM0LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0zNy1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fcmVtb3ZlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTM5LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fc2h1dGRvd24oc3RydWN0IG1kaW9fZGV2aWNlICptZGlvZGV2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDMte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjQ3OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9jbGtfZGVsYXkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDgte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjUyOnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0YXJ0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTUzLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTU4LVx0Z3Bpb2RfZGlyZWN0aW9uX291dHB1dChwcml2LVx1MDAzZW1kaW8sIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo1OTpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Mi1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjYzOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02NC1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjY1Olx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Ni1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTY4LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Njk6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTcwLVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRpbywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjcxOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03Mi1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjczOlx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03NC1cdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kaW8sIDEpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjc3OnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3N0b3Aoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzgte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3OTpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODAtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODEtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4MjpcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODMtXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODQ6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg1LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODY6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg3LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODg6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg5LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkxLVx0LyogQWRkIGEgY2xpY2sgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTI6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkzLVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAwKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTQ6XHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTk1LVx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXHUwMDNlbWRjLCAxKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTAyOnN0YXRpYyB2b2lkIHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGRhdGEsIHUzMiBsZW4pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMy17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwNC1cdGZvciAoOyBsZW4gXHUwMDNlIDA7IGxlbi0tKSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwNTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDgtXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kaW8sICEhKGRhdGEgXHUwMDI2ICgxIFx1MDAzY1x1MDAzYyAobGVuIC0gMSkpKSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwOTpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTItXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExMzpcdFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTQtXHRcdGdwaW9kX3NldF92YWx1ZShwcml2LVx1MDAzZW1kYywgMCk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExODpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9yZWFkX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGxlbiwgdTMyICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI0LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMjU6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI2LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI4LVx0XHRncGlvZF9zZXRfdmFsdWUocHJpdi1cdTAwM2VtZGMsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxMjk6XHRcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTMwLVx0XHR1ID0gISFncGlvZF9nZXRfdmFsdWUocHJpdi1cdTAwM2VtZGlvKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEzOC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTM5OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd2FpdF9mb3JfYWNrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0MC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNDYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE0NzpcdFx0cmVhbHRla19zbWlfcmVhZF9iaXRzKHByaXYsIDEsIFx1MDAyNmFjayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0OC1cdFx0aWYgKGFjayA9PSAwKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTU5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjA6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9ieXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4IGRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2MS17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MjpcdHJlYWx0ZWtfc21pX3dyaXRlX2JpdHMocHJpdiwgZGF0YSwgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MzpcdHJldHVybiByZWFsdGVrX3NtaV93YWl0X2Zvcl9hY2socHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NC19XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTY2OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfYnl0ZV9ub2FjayhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCBkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjcte1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjg6XHRyZWFsdGVrX3NtaV93cml0ZV9iaXRzKHByaXYsIGRhdGEsIDgpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xNjktXHRyZXR1cm4gMDtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTcyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9ieXRlMChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCAqZGF0YSlcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTczLXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3Ni1cdC8qIFJlYWQgZGF0YSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNzc6XHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgOCwgXHUwMDI2dCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3OC1cdCpkYXRhID0gKHQgXHUwMDI2IDB4ZmYpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgwLVx0LyogU2VuZCBhbiBBQ0sgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTgxOlx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCAweDAwLCAxKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTg1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxODY6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkX2J5dGUxKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHU4ICpkYXRhKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xODcte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkwLVx0LyogUmVhZCBkYXRhICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE5MTpcdHJlYWx0ZWtfc21pX3JlYWRfYml0cyhwcml2LCA4LCBcdTAwMjZ0KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkyLVx0KmRhdGEgPSAodCBcdTAwMjYgMHhmZik7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTQtXHQvKiBTZW5kIGFuIEFDSyAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxOTU6XHRyZWFsdGVrX3NtaV93cml0ZV9iaXRzKHByaXYsIDB4MDEsIDEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTYtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWRfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBhZGRyLCB1MzIgKmRhdGEpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIwMS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMDgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwOTpcdHJlYWx0ZWtfc21pX3N0YXJ0KHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMS1cdC8qIFNlbmQgUkVBRCBjb21tYW5kICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIxMjpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgcHJpdi1cdTAwM2V2YXJpYW50LVx1MDAzZWNtZF9yZWFkKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjEzLVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxNi1cdC8qIFNldCBBRERSWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjE3Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjE4LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMS1cdC8qIFNldCBBRERSWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyMjpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyMy1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMjYtXHQvKiBSZWFkIERBVEFbNzowXSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMjc6XHRyZWFsdGVrX3NtaV9yZWFkX2J5dGUwKHByaXYsIFx1MDAyNmxvKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjI4LVx0LyogUmVhZCBEQVRBWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyOTpcdHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTEocHJpdiwgXHUwMDI2aGkpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzAtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzUtIG91dDpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjM2Olx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjM3LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcml2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0MS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjQyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0My1cdFx0XHRcdCB1MzIgYWRkciwgdTMyIGRhdGEsIGJvb2wgYWNrKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjQ5LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNTA6XHRyZWFsdGVrX3NtaV9zdGFydChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjUxLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNTItXHQvKiBTZW5kIFdSSVRFIGNvbW1hbmQgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjUzOlx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBwcml2LVx1MDAzZXZhcmlhbnQtXHUwMDNlY21kX3dyaXRlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1Ny1cdC8qIFNldCBBRERSWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjU4Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2Mi1cdC8qIFNldCBBRERSWzE1OjhdICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI2MzpcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2NC1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjctXHQvKiBXcml0ZSBEQVRBWzc6MF0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjY4Olx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFx1MDAyNiAweGZmKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjY5LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3My1cdGlmIChhY2spXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI3NDpcdFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFx1MDAzZVx1MDAzZSA4KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjc1LVx0ZWxzZVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNzY6XHRcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGVfbm9hY2socHJpdiwgZGF0YSBcdTAwM2VcdTAwM2UgOCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI3Ny1cdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yODItIG91dDpcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjgzOlx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjg0LVx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZwcml2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Mi0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjkzOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGVfcmVnX25vYWNrKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk0LXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mjk1Olx0cmV0dXJuIHJlYWx0ZWtfc21pX3dyaXRlX3JlZyhjdHgsIHJlZywgdmFsLCBmYWxzZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Ni19XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yOTktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwMDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyIHZhbClcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAxLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzAyOlx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDQ6XHRyZXR1cm4gcmVhbHRla19zbWlfd3JpdGVfcmVnKHByaXYsIHJlZywgdmFsLCB0cnVlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA1LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA2LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDc6c3RhdGljIGludCByZWFsdGVrX3NtaV9yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwOC17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwOTpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzExOlx0cmV0dXJuIHJlYWx0ZWtfc21pX3JlYWRfcmVnKHByaXYsIHJlZywgdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEyLX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEzLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMTQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfc21pX2luZm8gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNTpcdC5yZWdfcmVhZCA9IHJlYWx0ZWtfc21pX3JlYWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNjpcdC5yZWdfd3JpdGUgPSByZWFsdGVrX3NtaV93cml0ZSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzE3LX07XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTktLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMyMDogKiByZWFsdGVrX3NtaV9wcm9iZSgpIC0gUHJvYmUgYSBwbGF0Zm9ybSBkZXZpY2UgZm9yIGFuIFNNSS1jb25uZWN0ZWQgc3dpdGNoXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMyMS0gKiBAcGRldjogcGxhdGZvcm1fZGV2aWNlIHRvIHByb2JlIG9uLlxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzMwLSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzE6aW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMi17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMy1cdHN0cnVjdCBkZXZpY2UgKmRldiA9IFx1MDAyNnBkZXYtXHUwMDNlZGV2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzQ6XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzUtXHRpbnQgcmV0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzYtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMzNzpcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXHUwMDI2cmVhbHRla19zbWlfaW5mbyk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzOC1cdGlmIChJU19FUlIocHJpdikpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM1NDpcdHByaXYtXHUwMDNld3JpdGVfcmVnX25vYWNrID0gcmVhbHRla19zbWlfd3JpdGVfcmVnX25vYWNrO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNTUtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjMtfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNjQ6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfcHJvYmUsIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjYtLyoqXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM2NzogKiByZWFsdGVrX3NtaV9yZW1vdmUoKSAtIFJlbW92ZSB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzY4LSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2UgdG8gYmUgcmVtb3ZlZC5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3NS0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzc2OnZvaWQgcmVhbHRla19zbWlfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3Ny17XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM3ODpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzc5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzg2LX1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfc21pX3JlbW92ZSwgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODgtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM4OS0vKipcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzkwOiAqIHJlYWx0ZWtfc21pX3NodXRkb3duKCkgLSBTaHV0ZG93biB0aGUgZHJpdmVyIG9mIGEgU01JLWNvbm5lY3RlZCBzd2l0Y2hcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzkxLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc2h1dHRpbmcgZG93bi5cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM5OC0gKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzk5OnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDAwLXtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NDAxOlx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDItXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDctfVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo0MDg6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19zbWlfc2h1dGRvd24sIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtOS17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTM6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfc21pX2RyaXZlcl91bnJlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMTctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjE4OmludCByZWFsdGVrX3NtaV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTk6dm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjIwOnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTIxLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjI0OnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMC17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMi1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzQte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjM4OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzkte1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00My17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTIwPXN0cnVjdCBwaHlsaW5rX21hY19vcHM7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MjE6c3RydWN0IHJlYWx0ZWtfb3BzO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTIyLVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD00MT1zdHJ1Y3QgcnRsODM2Nl92bGFuXzRrIHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNDctXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NDg6c3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5IHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC00OS1cdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NTQ6c3RydWN0IHJlYWx0ZWtfcHJpdiB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNTUtXHRzdHJ1Y3QgZGV2aWNlXHRcdCpkZXY7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTgwLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjgxOlx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCAqdmFyaWFudDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC04Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtOTMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6OTQ6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgKm9wcztcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC05NS1cdGludFx0XHRcdCgqd3JpdGVfcmVnX25vYWNrKSh2b2lkICpjdHgsIHUzMiBhZGRyLCB1MzIgZGF0YSk7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNC0vKlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwNTogKiBzdHJ1Y3QgcmVhbHRla19vcHMgLSB2dGFibGUgZm9yIHRoZSBwZXItU01JLWNoaXB0eXBlIG9wZXJhdGlvbnNcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDYtICogQGRldGVjdDogZGV0ZWN0cyB0aGUgY2hpcHR5cGVcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDctICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA4OnN0cnVjdCByZWFsdGVrX29wcyB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA5Olx0aW50XHQoKmRldGVjdCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEwOlx0aW50XHQoKnJlc2V0X2NoaXApKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExMTpcdGludFx0KCpzZXR1cCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEyOlx0aW50XHQoKmdldF9taWJfY291bnRlcikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMTMtXHRcdFx0XHQgICBpbnQgcG9ydCxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE1LVx0XHRcdFx0ICAgdTY0ICptaWJ2YWx1ZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTE2Olx0aW50XHQoKmdldF92bGFuX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgaW5kZXgsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE3LVx0XHRcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuX21jICp2bGFubWMpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExODpcdGludFx0KCpzZXRfdmxhbl9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGluZGV4LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExOS1cdFx0XHQgICAgICAgY29uc3Qgc3RydWN0IHJ0bDgzNjZfdmxhbl9tYyAqdmxhbm1jKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjA6XHRpbnRcdCgqZ2V0X3ZsYW5fNGspKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiB2aWQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTIxLVx0XHRcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuXzRrICp2bGFuNGspO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyMjpcdGludFx0KCpzZXRfdmxhbl80aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMjMtXHRcdFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydGw4MzY2X3ZsYW5fNGsgKnZsYW40ayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI0Olx0aW50XHQoKmdldF9tY19pbmRleCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCAqdmFsKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjU6XHRpbnRcdCgqc2V0X21jX2luZGV4KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGluZGV4KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjY6XHRib29sXHQoKmlzX3ZsYW5fdmFsaWQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCB2bGFuKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjc6XHRpbnRcdCgqZW5hYmxlX3ZsYW4pKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjg6XHRpbnRcdCgqZW5hYmxlX3ZsYW40aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyOTpcdGludFx0KCplbmFibGVfcG9ydCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzA6XHRpbnRcdCgqcG9ydF9hZGRfaXNvbGF0aW9uKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzEtXHRcdFx0XHQgICAgICB1MzIgbWFzayk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTMyOlx0aW50XHQoKnBvcnRfcmVtb3ZlX2lzb2xhdGlvbikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTMzLVx0XHRcdFx0XHQgdTMyIG1hc2spO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNDpcdGludFx0KCpwb3J0X3NldF9lZmlkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTMyIGVmaWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNTpcdGludFx0KCpwb3J0X3NldF9sZWFybmluZykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTM2LVx0XHRcdFx0ICAgICBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTM3Olx0aW50XHQoKnBvcnRfc2V0X3VjYXN0X2Zsb29kKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMzgtXHRcdFx0XHRcdGJvb2wgZW5hYmxlKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzk6XHRpbnRcdCgqcG9ydF9zZXRfbWNhc3RfZmxvb2QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0MC1cdFx0XHRcdFx0Ym9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0MTpcdGludFx0KCpwb3J0X3NldF9iY2FzdF9mbG9vZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQyLVx0XHRcdFx0XHRib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQzOlx0aW50XHQoKmwyX2FkZF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ0LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDUtXHRcdFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ2Olx0aW50XHQoKmwyX2RlbF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQ3LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDgtXHRcdFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ5Olx0aW50XHQoKmwyX2dldF9uZXh0X3VjKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUwOlx0XHRcdFx0ICBpbnQgcG9ydCwgc3RydWN0IHJlYWx0ZWtfZmRiX2VudHJ5ICplbnRyeSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUxOlx0aW50XHQoKmwyX2FkZF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTUyLVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUzOlx0aW50XHQoKmwyX2RlbF9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTU0LVx0XHRcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU1Olx0aW50XHQoKmwyX2ZsdXNoKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU2Olx0aW50XHQoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTc6XHRpbnRcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE1OC1cdFx0XHQgICAgIHUxNiB2YWwpO1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjAtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTYxOnN0cnVjdCByZWFsdGVrX3ZhcmlhbnQge1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2Mi1cdGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyAqZHNfb3BzO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2MzpcdGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyAqb3BzO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2NC1cdGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgKnBoeWxpbmtfbWFjX29wcztcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTcxLS8qIFJUTDgzNjYgbGlicmFyeSBoZWxwZXJzICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTcyOmludCBydGw4MzY2X21jX2lzX3VzZWQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IG1jX2luZGV4LCBpbnQgKnVzZWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3MzppbnQgcnRsODM2Nl9zZXRfdmxhbihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgdmlkLCB1MzIgbWVtYmVyLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE3NC1cdFx0ICAgICB1MzIgdW50YWcsIHUzMiBmaWQpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3NTppbnQgcnRsODM2Nl9zZXRfcHZpZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgcG9ydCxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNzYtXHRcdCAgICAgdW5zaWduZWQgaW50IHZpZCk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTc3OmludCBydGw4MzY2X2VuYWJsZV92bGFuNGsoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3ODppbnQgcnRsODM2Nl9lbmFibGVfdmxhbihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBib29sIGVuYWJsZSk7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTc5OmludCBydGw4MzY2X3Jlc2V0X3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTgwLWludCBydGw4MzY2X3ZsYW5fYWRkKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE4OD12b2lkIHJ0bDgzNjZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdWludDY0X3QgKmRhdGEpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4OS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTA6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NnJiX3ZhcmlhbnQ7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTkxOmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE5Mi1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYz0yMzE9c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcblxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM0NjU5CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBSZWFsdGVrIERTQSBEcml2ZXJzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMgbm93LCBzcGVjaWZpY2FsbHkgbG9va2luZyBmb3IgYENPTkZJR19ORVRfRFNBX1JFQUxURUtgIGFuZCBgQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY1TUJgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgZHJpdmVycyBhcmUgY29uZmlndXJlZCB3aXRoaW4gdGhlIGJyb2FkZXIgbmV0d29ya2luZyBzdGFjay4gSSYjMzk7bSBsaWtlbHkgdHJ5aW5nIHRvIHRyYWNlIGRlcGVuZGVuY2llcywgZmluZCBvdXQgd2hhdCBvdGhlciBvcHRpb25zIHRoZXkgcmVseSBvbiwgYW5kIHVuZGVyc3RhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljLiBJcyBgUlRMODM2NU1CYCBhIHNwZWNpZmljIGNoaXA/IEkmIzM5O2xsIHByb2JhYmx5IGJlIGxvb2tpbmcgdG8gc2VlIGlmIGl0JiMzOTtzIGEgc3ViLW9wdGlvbiwgb3IgYSBnZW5lcmFsIGVuYWJsZW1lbnQgb3B0aW9uLiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgY29uZmlndXJhdGlvbiBpbnRlcmFjdHMgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMgb3IgcGxhdGZvcm0gZmVhdHVyZXMuIEkmIzM5O20gaG9waW5nIHRvIGdldCBhIHF1aWNrIGdyYXNwIG9mIHRoZSBidWlsZCBwcm9jZXNzIGFuZCBob3cgdGhlc2Ugb3B0aW9ucyBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtORVRfRFNBX1JFQUxURUsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI6bWVudWNvbmZpZyBORVRfRFNBX1JFQUxURUtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgRXRoZXJuZXQgc3dpdGNoIGZhbWlseSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MTY6aWYgTkVUX0RTQV9SRUFMVEVLXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxODpjb25maWcgTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTktXHRib29sIFwmIzM0O1JlYWx0ZWsgTURJTyBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMjQtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjI1OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfU01JXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI2LVx0Ym9vbCBcJiMzNDtSZWFsdGVrIFNNSSBpbnRlcmZhY2Ugc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzEtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjMyOmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclwmIzM0O1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zNS1cdHNlbGVjdCBORVRfRFNBX1RBR19SVEw4XzRcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTM4LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzozOTpjb25maWcgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgUlRMODM2NlJCIHN3aXRjaCBkcml2ZXJcJiMzNDtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDE6XHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19TTUkgfHwgTkVUX0RTQV9SRUFMVEVLX01ESU9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDItXHRzZWxlY3QgTkVUX0RTQV9UQUdfUlRMNF9BXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDY6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00Ny1cdGJvb2xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6NDg6XHRkZXBlbmRzIG9uIChMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1ORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0OTpcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo1MDpcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy01MS1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFSylcdFx0JiM0Mzs9IHJlYWx0ZWtfZHNhLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTMtcmVhbHRla19kc2Etb2Jqc1x0XHRcdDo9IHJ0bDgzeHgub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtNC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjU6aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19NRElPXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS02LXJlYWx0ZWtfZHNhLW9ianMgJiM0Mzs9IHJlYWx0ZWstbWRpby5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT03PWVuZGlmXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS04LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6OTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTAtcmVhbHRla19kc2Etb2JqcyAmIzQzOz0gcmVhbHRlay1zbWkub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTE9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEyLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTM6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpICYjNDM7PSBydGw4MzY2Lm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE0LXJ0bDgzNjYtb2JqcyBcdFx0XHRcdDo9IHJ0bDgzNjYtY29yZS5vIHJ0bDgzNjZyYi5vXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxNTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xNi1ydGw4MzY2LW9ianMgXHRcdFx0XHQmIzQzOz0gcnRsODM2NnJiLWxlZHMub1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjE4Om9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CKSAmIzQzOz0gcnRsODM2NW1iLm9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE5LXJ0bDgzNjVtYi1vYmpzIDo9IHJ0bDgzNjVtYl9tYWluLm8gXFxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC01LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIyOiNlbHNlIC8qIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19NRElPKSAqL1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDo0NjojZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pICovXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00Ny1cbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTUtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUkpXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD0yMD12b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0yMS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MjI6I2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSSkgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD00Mj1zdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTQ1LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDo0NjojZW5kaWYgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1NNSSkgKi9cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDctXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg9NDc9ZW51bSBydGw4MzY2X2xlZGdyb3VwX21vZGUge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY3LVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg6Njg6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEUylcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY5LVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oPTk0PXN0cnVjdCBydGw4MzY2cmIge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTk2LVx0Ym9vbCBwdmlkX2VuYWJsZWRbUlRMODM2NlJCX05VTV9QT1JUU107XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmgtOTgtXHRzdHJ1Y3QgcnRsODM2NnJiX2xlZCBsZWRzW1JUTDgzNjZSQl9OVU1fUE9SVFNdW1JUTDgzNjZSQl9OVU1fTEVER1JPVVBTXTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzcyODYKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiA0NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXZpbmcgaW50byBSZWFsdGVrIERTQSBTd2l0Y2ggUmVnaXN0cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiBob3cgdGhlc2UgYHJ0bDgzeHhgIGNoaXBzIGFuZCBEU0Egc3dpdGNoZXMgZ2V0IGludGVncmF0ZWQgaW50byB0aGUgc3lzdGVtLiBMZXQmIzM5O3Mgc2VlLi4uIHRoZSBtb3N0IGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQgaXMgbGlrZWx5IHdpdGggdGhlIGBydGw4M3h4X3Byb2JlYCBmdW5jdGlvbiBvciwgbW9yZSBnZW5lcmFsbHksIGhvdyB0aGVzZSBEU0Egc3dpdGNoZXMgYXJlIHJlZ2lzdGVyZWQgYW5kIHByb2JlZC4gUmlnaHQsIHRoYXQgbWFrZXMgc2Vuc2UuCgpOb3csIHdoZXJlJiMzOTtzIHRoYXQgY29kZT8gQWgsIHllcywgSSBiZWxpZXZlIEkgcmVtZW1iZXIgc2VlaW5nIFJlYWx0ZWsmIzM5O3MgRFNBIGRyaXZlciBpbiBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jYC4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSBob3cgdGhleSYjMzk7dmUgaW1wbGVtZW50ZWQgdGhlIHByb2JpbmcgYW5kIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBTaG91bGQgYmUgYW4gaW50ZXJlc3RpbmcgcmVhZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCYjNDM7XG4gICAyOlx0XG4gICAzOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvbW9kdWxlLmhcdTAwM2VcbiAgIDQ6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9yZWdtYXAuaFx1MDAzZVxuICAgNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L29mX21kaW8uaFx1MDAzZVxuICAgNjpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2lmX2JyaWRnZS5oXHUwMDNlXG4gICA3Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICAgODpcdFxuICAgOTpcdCNpbmNsdWRlIFwmIzM0O3JlYWx0ZWsuaFwmIzM0O1xuICAxMDpcdCNpbmNsdWRlIFwmIzM0O3J0bDgzeHguaFwmIzM0O1xuICAxMTpcdFxuICAxMjpcdC8qKlxuICAxMzpcdCAqIHJ0bDgzeHhfbG9jaygpIC0gTG9ja3MgdGhlIG11dGV4IHVzZWQgYnkgcmVnbWFwc1xuICAxNDpcdCAqIEBjdHg6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXG4gIDE1Olx0ICpcbiAgMTY6XHQgKiBUaGlzIGZ1bmN0aW9uIGlzIHBhc3NlZCB0byByZWdtYXAgdG8gYmUgdXNlZCBhcyB0aGUgbG9jayBmdW5jdGlvbi5cbiAgMTc6XHQgKiBJdCBpcyBhbHNvIHVzZWQgZXh0ZXJuYWxseSB0byBibG9jayByZWdtYXAgYmVmb3JlIGV4ZWN1dGluZyBtdWx0aXBsZVxuICAxODpcdCAqIG9wZXJhdGlvbnMgdGhhdCBtdXN0IGhhcHBlbiBpbiBzZXF1ZW5jZSAod2hpY2ggd2lsbCB1c2VcbiAgMTk6XHQgKiByZWFsdGVrX3ByaXYubWFwX25vbG9jayBpbnN0ZWFkKS5cbiAgMjA6XHQgKlxuICAyMTpcdCAqIENvbnRleHQ6IENhbiBzbGVlcC4gSG9sZHMgcHJpdi1cdTAwM2VtYXBfbG9jayBsb2NrLlxuICAyMjpcdCAqIFJldHVybjogbm90aGluZ1xuICAyMzpcdCAqL1xuICAyNDpcdHZvaWQgcnRsODN4eF9sb2NrKHZvaWQgKmN0eClcbiAgMjU6XHR7XG4gIDI2Olx0XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xuICAyNzpcdFxuICAyODpcdFx0bXV0ZXhfbG9jayhcdTAwMjZwcml2LVx1MDAzZW1hcF9sb2NrKTtcbiAgMjk6XHR9XG4gIDMwOlx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF9sb2NrLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG4gIDMxOlx0XG4gIDMyOlx0LyoqXG4gIDMzOlx0ICogcnRsODN4eF91bmxvY2soKSAtIFVubG9ja3MgdGhlIG11dGV4IHVzZWQgYnkgcmVnbWFwc1xuICAzNDpcdCAqIEBjdHg6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXG4gIDM1Olx0ICpcbiAgMzY6XHQgKiBUaGlzIGZ1bmN0aW9uIHVubG9ja3MgdGhlIGxvY2sgYWNxdWlyZWQgYnkgcnRsODN4eF9sb2NrLlxuICAzNzpcdCAqXG4gIDM4Olx0ICogQ29udGV4dDogUmVsZWFzZXMgcHJpdi1cdTAwM2VtYXBfbG9jayBsb2NrLlxuICAzOTpcdCAqIFJldHVybjogbm90aGluZ1xuICA0MDpcdCAqL1xuICA0MTpcdHZvaWQgcnRsODN4eF91bmxvY2sodm9pZCAqY3R4KVxuICA0MjpcdHtcbiAgNDM6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XG4gIDQ0Olx0XG4gIDQ1Olx0XHRtdXRleF91bmxvY2soXHUwMDI2cHJpdi1cdTAwM2VtYXBfbG9jayk7XG4gIDQ2Olx0fVxuICA0NzpcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfdW5sb2NrLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG4gIDQ4Olx0XG4gIDQ5Olx0c3RhdGljIGludCBydGw4M3h4X3VzZXJfbWRpb19yZWFkKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtKVxuICA1MDpcdHtcbiAgNTE6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXHUwMDNlcHJpdjtcbiAgNTI6XHRcbiAgNTM6XHRcdHJldHVybiBwcml2LVx1MDAzZW9wcy1cdTAwM2VwaHlfcmVhZChwcml2LCBhZGRyLCByZWdudW0pO1xuICA1NDpcdH1cbiAgNTU6XHRcbiAgNTY6XHRzdGF0aWMgaW50IHJ0bDgzeHhfdXNlcl9tZGlvX3dyaXRlKHN0cnVjdCBtaWlfYnVzICpidXMsIGludCBhZGRyLCBpbnQgcmVnbnVtLFxuICA1NzpcdFx0XHRcdFx0ICAgdTE2IHZhbClcbiAgNTg6XHR7XG4gIDU5Olx0XHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gYnVzLVx1MDAzZXByaXY7XG4gIDYwOlx0XG4gIDYxOlx0XHRyZXR1cm4gcHJpdi1cdTAwM2VvcHMtXHUwMDNlcGh5X3dyaXRlKHByaXYsIGFkZHIsIHJlZ251bSwgdmFsKTtcbiAgNjI6XHR9XG4gIDYzOlx0XG4gIDY0Olx0LyoqXG4gIDY1Olx0ICogcnRsODN4eF9zZXR1cF91c2VyX21kaW8oKSAtIHJlZ2lzdGVyIHRoZSB1c2VyIG1paSBidXMgZHJpdmVyXG4gIDY2Olx0ICogQGRzOiBEU0Egc3dpdGNoIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHVzZXJfbWlpX2J1c1xuICA2NzpcdCAqXG4gIDY4Olx0ICogUmVnaXN0ZXJzIHRoZSBNRElPIGJ1cyBmb3IgYnVpbHQtaW4gRXRoZXJuZXQgUEhZcywgYW5kIGFzc29jaWF0ZXMgaXQgd2l0aFxuICA2OTpcdCAqIHRoZSBtYW5kYXRvcnkgJiMzOTttZGlvJiMzOTsgY2hpbGQgT0Ygbm9kZSBvZiB0aGUgc3dpdGNoLlxuICA3MDpcdCAqXG4gIDcxOlx0ICogQ29udGV4dDogQ2FuIHNsZWVwLlxuICA3MjpcdCAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBmb3IgZmFpbHVyZS5cbiAgNzM6XHQgKi9cbiAgNzQ6XHRpbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuICA3NTpcdHtcbiAgNzY6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cdTAwM2Vwcml2O1xuICA3NzpcdFx0c3RydWN0IGRldmljZV9ub2RlICptZGlvX25wO1xuICA3ODpcdFx0c3RydWN0IG1paV9idXMgKmJ1cztcbiAgNzk6XHRcdGludCByZXQgPSAwO1xuICA4MDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODYzNgoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSByZXN0IG9mIGBydGw4M3h4LmNgLiBJIG5lZWQgdG8gZ2V0IGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoaXMgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDgwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODE6XHRcdG1kaW9fbnAgPSBvZl9nZXRfY2hpbGRfYnlfbmFtZShwcml2LVx1MDAzZWRldi1cdTAwM2VvZl9ub2RlLCBcJiMzNDttZGlvXCYjMzQ7KTtcbiAgODI6XHRcdGlmICghbWRpb19ucCkge1xuICA4MzpcdFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtubyBNRElPIGJ1cyBub2RlXFxuXCYjMzQ7KTtcbiAgODQ6XHRcdFx0cmV0dXJuIC1FTk9ERVY7XG4gIDg1Olx0XHR9XG4gIDg2Olx0XG4gIDg3Olx0XHRidXMgPSBkZXZtX21kaW9idXNfYWxsb2MocHJpdi1cdTAwM2VkZXYpO1xuICA4ODpcdFx0aWYgKCFidXMpIHtcbiAgODk6XHRcdFx0cmV0ID0gLUVOT01FTTtcbiAgOTA6XHRcdFx0Z290byBlcnJfcHV0X25vZGU7XG4gIDkxOlx0XHR9XG4gIDkyOlx0XG4gIDkzOlx0XHRidXMtXHUwMDNlcHJpdiA9IHByaXY7XG4gIDk0Olx0XHRidXMtXHUwMDNlbmFtZSA9IFwmIzM0O1JlYWx0ZWsgdXNlciBNSUlcJiMzNDs7XG4gIDk1Olx0XHRidXMtXHUwMDNlcmVhZCA9IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWQ7XG4gIDk2Olx0XHRidXMtXHUwMDNld3JpdGUgPSBydGw4M3h4X3VzZXJfbWRpb193cml0ZTtcbiAgOTc6XHRcdHNucHJpbnRmKGJ1cy1cdTAwM2VpZCwgTUlJX0JVU19JRF9TSVpFLCBcJiMzNDslczp1c2VyX21paVwmIzM0OywgZGV2X25hbWUocHJpdi1cdTAwM2VkZXYpKTtcbiAgOTg6XHRcdGJ1cy1cdTAwM2VwYXJlbnQgPSBwcml2LVx1MDAzZWRldjtcbiAgOTk6XHRcbiAxMDA6XHRcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVx1MDAzZWRldiwgYnVzLCBtZGlvX25wKTtcbiAxMDE6XHRcdGlmIChyZXQpIHtcbiAxMDI6XHRcdFx0ZGV2X2Vycihwcml2LVx1MDAzZWRldiwgXCYjMzQ7dW5hYmxlIHRvIHJlZ2lzdGVyIE1ESU8gYnVzICVzXFxuXCYjMzQ7LFxuIDEwMzpcdFx0XHRcdGJ1cy1cdTAwM2VpZCk7XG4gMTA0Olx0XHRcdGdvdG8gZXJyX3B1dF9ub2RlO1xuIDEwNTpcdFx0fVxuIDEwNjpcdFxuIDEwNzpcdFx0cHJpdi1cdTAwM2V1c2VyX21paV9idXMgPSBidXM7XG4gMTA4Olx0XG4gMTA5Olx0ZXJyX3B1dF9ub2RlOlxuIDExMDpcdFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XG4gMTExOlx0XG4gMTEyOlx0XHRyZXR1cm4gcmV0O1xuIDExMzpcdH1cbiAxMTQ6XHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X3NldHVwX3VzZXJfbWRpbywgXCYjMzQ7UkVBTFRFS19EU0FcJiMzNDspO1xuIDExNTpcdFxuIDExNjpcdC8qKlxuIDExNzpcdCAqIHJ0bDgzeHhfcHJvYmUoKSAtIHByb2JlIGEgUmVhbHRlayBzd2l0Y2hcbiAxMTg6XHQgKiBAZGV2OiB0aGUgZGV2aWNlIGJlaW5nIHByb2JlZFxuIDExOTpcdCAqIEBpbnRlcmZhY2VfaW5mbzogc3BlY2lmaWMgbWFuYWdlbWVudCBpbnRlcmZhY2UgaW5mby5cbiAxMjA6XHQgKlxuIDEyMTpcdCAqIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgcmVhbHRla19wcml2IGFuZCByZWFkcyBkYXRhIGZyb20gdGhlIGRldmljZSB0cmVlXG4gMTIyOlx0ICogbm9kZS4gVGhlIHN3aXRjaCBpcyBoYXJkIHJlc2V0dGVkIGlmIGEgbWV0aG9kIGlzIHByb3ZpZGVkLlxuIDEyMzpcdCAqXG4gMTI0Olx0ICogQ29udGV4dDogQ2FuIHNsZWVwLlxuIDEyNTpcdCAqIFJldHVybjogUG9pbnRlciB0byB0aGUgcmVhbHRla19wcml2IG9yIEVSUl9QVFIoKSBpbiBjYXNlIG9mIGZhaWx1cmUuXG4gMTI2Olx0ICpcbiAxMjc6XHQgKiBUaGUgcmVhbHRla19wcml2IHBvaW50ZXIgZG9lcyBub3QgbmVlZCB0byBiZSBmcmVlZCBhcyBpdCBpcyBjb250cm9sbGVkIGJ5XG4gMTI4Olx0ICogZGV2cmVzLlxuIDEyOTpcdCAqL1xuIDEzMDpcdHN0cnVjdCByZWFsdGVrX3ByaXYgKlxuIDEzMTpcdHJ0bDgzeHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LFxuIDEzMjpcdFx0ICAgICAgY29uc3Qgc3RydWN0IHJlYWx0ZWtfaW50ZXJmYWNlX2luZm8gKmludGVyZmFjZV9pbmZvKVxuIDEzMzpcdHtcbiAxMzQ6XHRcdGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgKnZhcjtcbiAxMzU6XHRcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XG4gMTM2Olx0XHRzdHJ1Y3QgcmVnbWFwX2NvbmZpZyByYyA9IHtcbiAxMzc6XHRcdFx0LnJlZ19iaXRzID0gMTAsIC8qIEE0Li5BMCBSNC4uUjAgKi9cbiAxMzg6XHRcdFx0LnZhbF9iaXRzID0gMTYsXG4gMTM5Olx0XHRcdC5yZWdfc3RyaWRlID0gMSxcbiAxNDA6XHRcdFx0Lm1heF9yZWdpc3RlciA9IDB4ZmZmZixcbiAxNDE6XHRcdFx0LnJlZ19mb3JtYXRfZW5kaWFuID0gUkVHTUFQX0VORElBTl9CSUcsXG4gMTQyOlx0XHRcdC5yZWdfcmVhZCA9IGludGVyZmFjZV9pbmZvLVx1MDAzZXJlZ19yZWFkLFxuIDE0MzpcdFx0XHQucmVnX3dyaXRlID0gaW50ZXJmYWNlX2luZm8tXHUwMDNlcmVnX3dyaXRlLFxuIDE0NDpcdFx0XHQuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsXG4gMTQ1Olx0XHRcdC5sb2NrID0gcnRsODN4eF9sb2NrLFxuIDE0NjpcdFx0XHQudW5sb2NrID0gcnRsODN4eF91bmxvY2ssXG4gMTQ3Olx0XHR9O1xuIDE0ODpcdFx0aW50IHJldDtcbiAxNDk6XHRcbiAxNTA6XHRcdHZhciA9IG9mX2RldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpO1xuIDE1MTpcdFx0aWYgKCF2YXIpXG4gMTUyOlx0XHRcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xuIDE1MzpcdFxuIDE1NDpcdFx0cHJpdiA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVfYWRkKHNpemVvZigqcHJpdiksIHZhci1cdTAwM2VjaGlwX2RhdGFfc3opLFxuIDE1NTpcdFx0XHRcdCAgICBHRlBfS0VSTkVMKTtcbiAxNTY6XHRcdGlmICghcHJpdilcbiAxNTc6XHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7XG4gMTU4Olx0XG4gMTU5Olx0XHRyZXQgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZW1hcF9sb2NrKTtcbiAxNjA6XHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM5OTY5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYHJ0bDgzeHhfcHJvYmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgKmFmdGVyKiB0aGUgaW5pdGlhbCBzZXR1cC4gSSYjMzk7bSBhc3N1bWluZywgYmFzZWQgb24gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGVzZSBzb3J0cyBvZiBkZXZpY2UgZHJpdmVycywgdGhhdCB0aGUgbmV4dCBzdGFnZXMgd2lsbCBsaWtlbHkgaW52b2x2ZSBhIGZldyBrZXkgYXJlYXM6CgoqKkZ1cnRoZXIgRXhhbWluYXRpb24gb2YgYHJ0bDgzeHhfcHJvYmVgKioKCkZpcnN0LCBJIGV4cGVjdCB0byBzZWUgdGhlIGRyaXZlciBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZSwgbWF5YmUgY29uZmlndXJpbmcgc29tZSBiYXNpYyByZWdpc3RlcnMgb3IgaW5pdGlhbGl6aW5nIHRoZSBQSFkuIEl0JiMzOTtzIGxpa2VseSBjaGVja2luZyBmb3IgYW5kIGluaXRpYWxpemluZyBpbnRlcnJ1cHQgaGFuZGxlcnMsIHNpbmNlIGVmZmljaWVudCBjb21tdW5pY2F0aW9uIHdpdGggdGhlIGhhcmR3YXJlIGlzIGNyaXRpY2FsLiBXZSYjMzk7bGwgYmUgbG9va2luZyBmb3IgY29uZmlndXJhdGlvbiBvZiB0aGUgZGV2aWNlJiMzOTtzIGNsb2NraW5nIGFzIHdlbGwsIHNpbmNlIHRoYXQmIzM5O3MgYW5vdGhlciBwcmVyZXF1aXNpdGUuCgpUaGVuLCB0aGVyZSYjMzk7bGwgYmUgYSBwaGFzZSBvZiByZXNvdXJjZSBhbGxvY2F0aW9uIC0gbWVtb3J5LCBJUlFzLCBwZXJoYXBzIERNQSBjaGFubmVscy4gSSYjMzk7bSBrZWVwaW5nIGFuIGV5ZSBvdXQgZm9yIHBvdGVudGlhbCBwaXRmYWxscyB0aGVyZTsgcmVzb3VyY2UgY29uZmxpY3RzIGNhbiBiZSBhIG1ham9yIHBhaW4gdG8gZGVidWcuIEdpdmVuIHRoaXMgaXMgYSBzd2l0Y2gsIHRoZXJlJiMzOTtsbCBkZWZpbml0ZWx5IGJlIGEgbmVlZCB0byByZWdpc3RlciB0aGUgc3dpdGNoIGRldmljZSB3aXRoIHRoZSBhcHByb3ByaWF0ZSBzdWJzeXN0ZW0sIHByb2JhYmx5IHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcG9ydHMsIGNhcGFiaWxpdGllcywgYW5kIHRoZSBsaWtlLiBXZSBuZWVkIHRvIGJlIGNoZWNraW5nIHRoZSBzdGF0dXMgcmV0dXJuZWQgYnkgdGhlc2UgY2FsbHMsIGVycm9ycyBmcm9tIHJlc291cmNlIGFsbG9jYXRpb25zLCBiZWNhdXNlIHRoYXQmIzM5O3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgcHJvYmxlbXMgaW4gdGhlIGtlcm5lbC4KCkZpbmFsbHksIEkmIzM5O20gYW50aWNpcGF0aW5nIHNvbWUgZm9ybSBvZiBpbml0aWFsIHN3aXRjaCBjb25maWd1cmF0aW9uLCBtYXliZSBzZXR0aW5nIHVwIFZMQU5zLCBwb3J0IHNwZWVkcywgb3Igb3RoZXIgYmFzaWMgcGFyYW1ldGVycy4gSXQmIzM5O3MgcmVhbGx5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGF0IHN3aXRjaCBjaGlwIHRoYXQgaXMga2V5IGhlcmUsIGhvdyBpdCBpbml0aWFsaXplcy4gSSYjMzk7bSBrZWVuIHRvIHNwb3QgYW55IGluZGljYXRpb25zIG9mIGVycm9yIGhhbmRsaW5nIGFuZCBob3cgcm9idXN0IGl0IGlzIHRvIHZhcmlvdXMgc2NlbmFyaW9zLiBPdmVyYWxsLCBJJiMzOTttIGV4cGVjdGluZyB0byBzZWUgYSBzdHJ1Y3R1cmVkIGFwcHJvYWNoIHRoYXQgY2FyZWZ1bGx5IHNldHMgdXAgdGhlIGhhcmR3YXJlLCByZWdpc3RlcnMgaXQgd2l0aCB0aGUgc3lzdGVtLCBhbmQgdGhlbiBicmluZ3MgaXQgaW50byBhIGtub3duIGluaXRpYWwgc3RhdGUuIFRoaXMsIG9idmlvdXNseSwgaXMgdGhlIHN0YW5kYXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE2MSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA2MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTYxOlx0XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gMTYyOlx0XG4gMTYzOlx0XHRyZXQgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcdTAwMjZwcml2LVx1MDAzZXZsYW5fbG9jayk7XG4gMTY0Olx0XHRpZiAocmV0KVxuIDE2NTpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE2NjpcdFxuIDE2NzpcdFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXHUwMDI2cHJpdi1cdTAwM2VsMl9sb2NrKTtcbiAxNjg6XHRcdGlmIChyZXQpXG4gMTY5Olx0XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gMTcwOlx0XG4gMTcxOlx0XHRyYy5sb2NrX2FyZyA9IHByaXY7XG4gMTcyOlx0XHRwcml2LVx1MDAzZW1hcCA9IGRldm1fcmVnbWFwX2luaXQoZGV2LCBOVUxMLCBwcml2LCBcdTAwMjZyYyk7XG4gMTczOlx0XHRpZiAoSVNfRVJSKHByaXYtXHUwMDNlbWFwKSkge1xuIDE3NDpcdFx0XHRyZXQgPSBQVFJfRVJSKHByaXYtXHUwMDNlbWFwKTtcbiAxNzU6XHRcdFx0ZGV2X2VycihkZXYsIFwmIzM0O3JlZ21hcCBpbml0IGZhaWxlZDogJWRcXG5cJiMzNDssIHJldCk7XG4gMTc2Olx0XHRcdHJldHVybiBFUlJfUFRSKHJldCk7XG4gMTc3Olx0XHR9XG4gMTc4Olx0XG4gMTc5Olx0XHRyYy5kaXNhYmxlX2xvY2tpbmcgPSB0cnVlO1xuIDE4MDpcdFx0cHJpdi1cdTAwM2VtYXBfbm9sb2NrID0gZGV2bV9yZWdtYXBfaW5pdChkZXYsIE5VTEwsIHByaXYsIFx1MDAyNnJjKTtcbiAxODE6XHRcdGlmIChJU19FUlIocHJpdi1cdTAwM2VtYXBfbm9sb2NrKSkge1xuIDE4MjpcdFx0XHRyZXQgPSBQVFJfRVJSKHByaXYtXHUwMDNlbWFwX25vbG9jayk7XG4gMTgzOlx0XHRcdGRldl9lcnIoZGV2LCBcJiMzNDtyZWdtYXAgaW5pdCBmYWlsZWQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuIDE4NDpcdFx0XHRyZXR1cm4gRVJSX1BUUihyZXQpO1xuIDE4NTpcdFx0fVxuIDE4NjpcdFxuIDE4NzpcdFx0LyogTGluayBmb3J3YXJkIGFuZCBiYWNrd2FyZCAqL1xuIDE4ODpcdFx0cHJpdi1cdTAwM2VkZXYgPSBkZXY7XG4gMTg5Olx0XHRwcml2LVx1MDAzZXZhcmlhbnQgPSB2YXI7XG4gMTkwOlx0XHRwcml2LVx1MDAzZW9wcyA9IHZhci1cdTAwM2VvcHM7XG4gMTkxOlx0XHRwcml2LVx1MDAzZWNoaXBfZGF0YSA9ICh2b2lkICopcHJpdiAmIzQzOyBzaXplb2YoKnByaXYpO1xuIDE5MjpcdFxuIDE5MzpcdFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2cHJpdi1cdTAwM2Vsb2NrKTtcbiAxOTQ6XHRcbiAxOTU6XHRcdHByaXYtXHUwMDNlbGVkc19kaXNhYmxlZCA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChkZXYtXHUwMDNlb2Zfbm9kZSxcbiAxOTY6XHRcdFx0XHRcdFx0XHQgICAgXCYjMzQ7cmVhbHRlayxkaXNhYmxlLWxlZHNcJiMzNDspO1xuIDE5NzpcdFxuIDE5ODpcdFx0LyogVE9ETzogaWYgcG93ZXIgaXMgc29mdHdhcmUgY29udHJvbGxlZCwgc2V0IHVwIGFueSByZWd1bGF0b3JzIGhlcmUgKi9cbiAxOTk6XHRcdHByaXYtXHUwMDNlcmVzZXRfY3RsID0gZGV2bV9yZXNldF9jb250cm9sX2dldF9vcHRpb25hbChkZXYsIE5VTEwpO1xuIDIwMDpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlc2V0X2N0bCkpXG4gMjAxOlx0XHRcdHJldHVybiBkZXZfZXJyX2Nhc3RfcHJvYmUoZGV2LCBwcml2LVx1MDAzZXJlc2V0X2N0bCxcbiAyMDI6XHRcdFx0XHRcdFx0ICBcJiMzNDtmYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcXG5cJiMzNDspO1xuIDIwMzpcdFxuIDIwNDpcdFx0cHJpdi1cdTAwM2VyZXNldCA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXCYjMzQ7cmVzZXRcJiMzNDssIEdQSU9EX09VVF9MT1cpO1xuIDIwNTpcdFx0aWYgKElTX0VSUihwcml2LVx1MDAzZXJlc2V0KSkge1xuIDIwNjpcdFx0XHRkZXZfZXJyKGRldiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBSRVNFVCBHUElPXFxuXCYjMzQ7KTtcbiAyMDc6XHRcdFx0cmV0dXJuIEVSUl9DQVNUKHByaXYtXHUwMDNlcmVzZXQpO1xuIDIwODpcdFx0fVxuIDIwOTpcdFxuIDIxMDpcdFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgcHJpdik7XG4gMjExOlx0XG4gMjEyOlx0XHRpZiAocHJpdi1cdTAwM2VyZXNldF9jdGwgfHwgcHJpdi1cdTAwM2VyZXNldCkge1xuIDIxMzpcdFx0XHRydGw4M3h4X3Jlc2V0X2Fzc2VydChwcml2KTtcbiAyMTQ6XHRcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O2Fzc2VydGVkIFJFU0VUXFxuXCYjMzQ7KTtcbiAyMTU6XHRcdFx0bXNsZWVwKFJFQUxURUtfSFdfU1RPUF9ERUxBWSk7XG4gMjE2Olx0XHRcdHJ0bDgzeHhfcmVzZXRfZGVhc3NlcnQocHJpdik7XG4gMjE3Olx0XHRcdG1zbGVlcChSRUFMVEVLX0hXX1NUQVJUX0RFTEFZKTtcbiAyMTg6XHRcdFx0ZGV2X2RiZyhkZXYsIFwmIzM0O2RlYXNzZXJ0ZWQgUkVTRVRcXG5cJiMzNDspO1xuIDIxOTpcdFx0fVxuIDIyMDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTM3NQoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgYHJ0bDgzeHhfcHJvYmVgIGZ1bmN0aW9uIGFuZCBzZWUgd2hhdCBpdCYjMzk7cyBhbGwgYWJvdXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIHdpdGhpbiB0aGlzIGRyaXZlciwgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZSwgYW5kIHdoYXQgaXRzIHNwZWNpZmljIHJlc3BvbnNpYmlsaXRpZXMgYXJlLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgYmV5b25kIHRoZSBpbml0aWFsIHNuaXBwZXRzIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBkYXRhIG1hbmFnZW1lbnQuIEkgd2FudCB0byBzZWUgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBpbml0aWFsaXphdGlvbiBzdGVwcy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwcm9ibGVtcykgdHlwaWNhbGx5IGhhcHBlbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBkZXRlcm1pbmUgaG93IGl0IGlkZW50aWZpZXMgdGhlIGNoaXAsIGNvbmZpZ3VyZXMgaXQsIGFuZCBpbnRlZ3JhdGVzIHdpdGggdGhlIG92ZXJhbGwgbmV0d29yayBzdGFjay4gVGhlIGRldGFpbHMgbWF0dGVyOiByZWdpc3RlciB3cml0ZXMsIGludGVycnVwdCBjb25maWd1cmF0aW9uLCBjbG9jayBzZXR0aW5ncyDigJMgSSBuZWVkIHRvIGdldCBhIGZpcm0gZ3JpcCBvbiBhbGwgb2YgaXQuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBzdGFuZHMgb3V0LCBhbnkgb3B0aW1pemF0aW9ucywgb3IgcG90ZW50aWFsIGFyZWFzIGZvciBpbXByb3ZlbWVudC4gTGV0JiMzOTtzIHNlZSB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBnZXQgdG8gd29yay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4M3h4LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNzAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDIyMTpcdFx0cmV0dXJuIHByaXY7XG4gMjIyOlx0fVxuIDIyMzpcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfcHJvYmUsIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAyMjQ6XHRcbiAyMjU6XHQvKipcbiAyMjY6XHQgKiBydGw4M3h4X3JlZ2lzdGVyX3N3aXRjaCgpIC0gZGV0ZWN0cyBhbmQgcmVnaXN0ZXIgYSBzd2l0Y2hcbiAyMjc6XHQgKiBAcHJpdjogcmVhbHRla19wcml2IHBvaW50ZXJcbiAyMjg6XHQgKlxuIDIyOTpcdCAqIFRoaXMgZnVuY3Rpb24gZmlyc3QgY2hlY2tzIHRoZSBzd2l0Y2ggY2hpcCBJRCBhbmQgcmVnaXN0ZXIgYSBEU0FcbiAyMzA6XHQgKiBzd2l0Y2guXG4gMjMxOlx0ICpcbiAyMzI6XHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuIFRha2VzIGFuZCByZWxlYXNlcyBwcml2LVx1MDAzZW1hcF9sb2NrLlxuIDIzMzpcdCAqIFJldHVybjogMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSB2YWx1ZSBmb3IgZmFpbHVyZS5cbiAyMzQ6XHQgKi9cbiAyMzU6XHRpbnQgcnRsODN4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbiAyMzY6XHR7XG4gMjM3Olx0XHRzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMgPSBcdTAwMjZwcml2LVx1MDAzZWRzO1xuIDIzODpcdFx0aW50IHJldDtcbiAyMzk6XHRcbiAyNDA6XHRcdHJldCA9IHByaXYtXHUwMDNlb3BzLVx1MDAzZWRldGVjdChwcml2KTtcbiAyNDE6XHRcdGlmIChyZXQpIHtcbiAyNDI6XHRcdFx0ZGV2X2Vycl9wcm9iZShwcml2LVx1MDAzZWRldiwgcmV0LCBcJiMzNDt1bmFibGUgdG8gZGV0ZWN0IHN3aXRjaFxcblwmIzM0Oyk7XG4gMjQzOlx0XHRcdHJldHVybiByZXQ7XG4gMjQ0Olx0XHR9XG4gMjQ1Olx0XG4gMjQ2Olx0XHRkcy1cdTAwM2Vwcml2ID0gcHJpdjtcbiAyNDc6XHRcdGRzLVx1MDAzZWRldiA9IHByaXYtXHUwMDNlZGV2O1xuIDI0ODpcdFx0ZHMtXHUwMDNlb3BzID0gcHJpdi1cdTAwM2V2YXJpYW50LVx1MDAzZWRzX29wcztcbiAyNDk6XHRcdGRzLVx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IHByaXYtXHUwMDNldmFyaWFudC1cdTAwM2VwaHlsaW5rX21hY19vcHM7XG4gMjUwOlx0XHRkcy1cdTAwM2VudW1fcG9ydHMgPSBwcml2LVx1MDAzZW51bV9wb3J0cztcbiAyNTE6XHRcbiAyNTI6XHRcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xuIDI1MzpcdFx0aWYgKHJldCkge1xuIDI1NDpcdFx0XHRkZXZfZXJyX3Byb2JlKHByaXYtXHUwMDNlZGV2LCByZXQsIFwmIzM0O3VuYWJsZSB0byByZWdpc3RlciBzd2l0Y2hcXG5cJiMzNDspO1xuIDI1NTpcdFx0XHRyZXR1cm4gcmV0O1xuIDI1NjpcdFx0fVxuIDI1NzpcdFxuIDI1ODpcdFx0cmV0dXJuIDA7XG4gMjU5Olx0fVxuIDI2MDpcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfcmVnaXN0ZXJfc3dpdGNoLCBcJiMzNDtSRUFMVEVLX0RTQVwmIzM0Oyk7XG4gMjYxOlx0XG4gMjYyOlx0LyoqXG4gMjYzOlx0ICogcnRsODN4eF91bnJlZ2lzdGVyX3N3aXRjaCgpIC0gdW5yZWdpc3RlciBhIHN3aXRjaFxuIDI2NDpcdCAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxuIDI2NTpcdCAqXG4gMjY2Olx0ICogVGhpcyBmdW5jdGlvbiB1bnJlZ2lzdGVyIGEgRFNBIHN3aXRjaC5cbiAyNjc6XHQgKlxuIDI2ODpcdCAqIENvbnRleHQ6IENhbiBzbGVlcC5cbiAyNjk6XHQgKiBSZXR1cm46IE5vdGhpbmcuXG4gMjcwOlx0ICovXG4gMjcxOlx0dm9pZCBydGw4M3h4X3VucmVnaXN0ZXJfc3dpdGNoKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gMjcyOlx0e1xuIDI3MzpcdFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gXHUwMDI2cHJpdi1cdTAwM2VkcztcbiAyNzQ6XHRcbiAyNzU6XHRcdGRzYV91bnJlZ2lzdGVyX3N3aXRjaChkcyk7XG4gMjc2Olx0fVxuIDI3NzpcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfdW5yZWdpc3Rlcl9zd2l0Y2gsIFwmIzM0O1JFQUxURUtfRFNBXCYjMzQ7KTtcbiAyNzg6XHRcbiAyNzk6XHQvKipcbiAyODA6XHQgKiBydGw4M3h4X3NodXRkb3duKCkgLSBzaHV0ZG93biBhIHN3aXRjaFxuIDI4MTpcdCAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxuIDI4MjpcdCAqXG4gMjgzOlx0ICogVGhpcyBmdW5jdGlvbiBzaHV0cyBkb3duIHRoZSBEU0Egc3dpdGNoIGFuZCBjbGVhbnMgdGhlIHBsYXRmb3JtIGRyaXZlciBkYXRhLFxuIDI4NDpcdCAqIHRvIHByZXZlbnQgcmVhbHRla197c21pLG1kaW99X3JlbW92ZSgpIGZyb20gcnVubmluZyBhZnRlcndhcmRzLCB3aGljaCBpc1xuIDI4NTpcdCAqIHBvc3NpYmxlIGlmIHRoZSBwYXJlbnQgYnVzIGltcGxlbWVudHMgaXRzIG93biAuc2h1dGRvd24oKSBhcyAucmVtb3ZlKCkuXG4gMjg2Olx0ICpcbiAyODc6XHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuXG4gMjg4Olx0ICogUmV0dXJuOiBOb3RoaW5nLlxuIDI4OTpcdCAqL1xuIDI5MDpcdHZvaWQgcnRsODN4eF9zaHV0ZG93bihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjYzNQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDEwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgUmVhbHRlayBTd2l0Y2ggSW5pdGlhbGl6YXRpb24qKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIGhvdyB0aGVzZSBSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBBU0lDcywgc3BlY2lmaWNhbGx5IHRob3NlIGNvbm5lY3RlZCB2aWEgTURJTyBvciBTTUkgbGlrZSB0aGUgcnRsODM2NW1iIGFuZCBydGw4MzY2cmIsIGFyZSBpbml0aWFsaXplZCBhbmQgcmVzZXQgd2l0aGluIHRoZSBzeXN0ZW0uIEkgc2VlIHRoYXQgYHJlYWx0ZWtfbWRpb19wcm9iZWAgYW5kIGByZWFsdGVrX3NtaV9wcm9iZWAgYXJlIHJlc3BvbnNpYmxlIGZvciB0aGUgcHJvYmluZyBwcm9jZXNzLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZXNldCBzZXF1ZW5jZS4gSSBuZWVkIHRvIHRyYWNlIHRoZSBleGVjdXRpb24gcGF0aCBvZiB0aGUgcmVzZXQgZnVuY3Rpb24sIHBhcnRpY3VsYXJseSBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB3aGVyZSBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgIGlzIGNhbGxlZCB3aXRoaW4gdGhlIGNvZGUuIFRvIGJlIHRob3JvdWdoLCBJIHNob3VsZCBhbHNvIHNlYXJjaCBmb3IgYW55IG90aGVyIGluc3RhbmNlcyBvZiBgcmVzZXRfY2hpcGAgb3IsIGFzIGEgc2FuaXR5IGNoZWNrLCAgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCB0byBzZWUgaWYgdGhlcmUgYXJlIG90aGVyIHBsYWNlcyB0aGF0IGFyZSByZWxldmFudC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVzZXRfY2hpcCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xMDg9c3RydWN0IHJlYWx0ZWtfb3BzIHtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMDktXHRpbnRcdCgqZGV0ZWN0KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTA6XHRpbnRcdCgqcmVzZXRfY2hpcCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTExLVx0aW50XHQoKnNldHVwKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTI5NTQ9c3RhdGljIGludCBydGw4MzY1bWJfc3dpdGNoX2luaXQoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI5ODMtXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjI5ODQ6c3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yOTg1LXtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMwMjA9c3RhdGljIGludCBydGw4MzY1bWJfc2V0dXAoc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzA0MC1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzA0MTpcdHJldCA9IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMDQyLVx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE2ODU9c3RhdGljIGludCBydGw4MzY2cmJfcGh5X3dyaXRlKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTcxNS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jOjE3MTY6c3RhdGljIGludCBydGw4MzY2cmJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTcxNy17XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM9MTc0Mj1zdGF0aWMgaW50IHJ0bDgzNjZyYl9kZXRlY3Qoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xNzczLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmM6MTc3NDpcdHJldCA9IHJ0bDgzNjZyYl9yZXNldF9jaGlwKHByaXYpO1xuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTc3NS1cdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQzNzIwCgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogOTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhpbmtpbmcgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIFJUTDgzNjVNQiBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIFJlYWx0ZWsgUlRMODM2NU1CIHN3aXRjaCBkcml2ZXIuIEkgc2VlIHRoYXQgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBpcyBjYWxsZWQgYnkgYHJ0bDgzNjVtYl9zZXR1cGAuIFRoZSBgcnRsODM2NW1iX3NldHVwYCBmdW5jdGlvbiBpcyBjbGVhcmx5IGNydWNpYWwgZm9yIGluaXRpYWxpemluZyB0aGlzIHBhcnRpY3VsYXIgc3dpdGNoIG1vZGVsLCBhbmQgaXQmIzM5O3MgbG9jYXRlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gYHJ0bDgzNjVtYl9zZXR1cGAsIGFuZCBob3cgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBmaXRzIGludG8gdGhlIHdob2xlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLiBNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgY29kZSBzdXJyb3VuZGluZyBgcnRsODM2NW1iX3NldHVwYCBpbiB0aGUgYHJ0bDgzNjVtYl9tYWluLmNgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBsYXJnZXIgY29udGV4dCBvZiB0aGUgc2V0dXAgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwMTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzAxNTpcdFx0XHRtc2xlZXAoamlmZmllc190b19tc2VjcyhyZW1haW5pbmcpKTtcbjMwMTY6XHRcbjMwMTc6XHRcdHJldHVybiAwO1xuMzAxODpcdH1cbjMwMTk6XHRcbjMwMjA6XHRzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4zMDIxOlx0e1xuMzAyMjpcdFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRzLVx1MDAzZXByaXY7XG4zMDIzOlx0XHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSAqY3B1O1xuMzAyNDpcdFx0dTMyIGRvd25wb3J0c19tYXNrID0gMDtcbjMwMjU6XHRcdHUzMiB1cHBvcnRzX21hc2sgPSAwO1xuMzAyNjpcdFx0c3RydWN0IHJ0bDgzNjVtYiAqbWI7XG4zMDI3Olx0XHRzdHJ1Y3QgZHNhX3BvcnQgKmRwO1xuMzAyODpcdFx0aW50IHJldDtcbjMwMjk6XHRcbjMwMzA6XHRcdG1iID0gcHJpdi1cdTAwM2VjaGlwX2RhdGE7XG4zMDMxOlx0XHRjcHUgPSBcdTAwMjZtYi1cdTAwM2VjcHU7XG4zMDMyOlx0XG4zMDMzOlx0XHRtYi1cdTAwM2VwY3Mub3BzID0gXHUwMDI2cnRsODM2NW1iX3Bjc19vcHM7XG4zMDM0Olx0XG4zMDM1Olx0XHQvKiBUaGUgU2VyRGVzIGhhcyBubyBsaW5rIGludGVycnVwdCB3aXJlZCB1cCwgc28gcGh5bGluayBtdXN0IHBvbGwgdGhlXG4zMDM2Olx0XHQgKiBQQ1MgZm9yIGxpbmsgY2hhbmdlcyB3aGVuIGl0IHRyYWNrcyB0aGUgbGluayB0aHJvdWdoIHBjc19nZXRfc3RhdGUoKVxuMzAzNzpcdFx0ICogKGluLWJhbmQgbW9kZSB3aXRoIGF1dG9uZWdvdGlhdGlvbiBkaXNhYmxlZCkuXG4zMDM4Olx0XHQgKi9cbjMwMzk6XHRcdG1iLVx1MDAzZXBjcy5wb2xsID0gdHJ1ZTtcbjMwNDA6XHRcbjMwNDE6XHRcdHJldCA9IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHByaXYpO1xuMzA0MjpcdFx0aWYgKHJldCkge1xuMzA0MzpcdFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gcmVzZXQgY2hpcDogJXBlXFxuXCYjMzQ7LFxuMzA0NDpcdFx0XHRcdEVSUl9QVFIocmV0KSk7XG4zMDQ1Olx0XHRcdGdvdG8gb3V0X2Vycm9yO1xuMzA0NjpcdFx0fVxuMzA0NzpcdFxuMzA0ODpcdFx0cmV0ID0gcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24ocHJpdik7XG4zMDQ5Olx0XHRpZiAocmV0KSB7XG4zMDUwOlx0XHRcdGRldl9lcnIocHJpdi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBwcm9iZSBTZXJEZXMgY2hpcCBvcHRpb246ICVwZVxcblwmIzM0OyxcbjMwNTE6XHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuMzA1MjpcdFx0XHRnb3RvIG91dF9lcnJvcjtcbjMwNTM6XHRcdH1cbjMwNTQ6XHRcbjMwNTU6XHRcdC8qIENvbmZpZ3VyZSBzd2l0Y2ggdG8gdmVuZG9yLWRlZmluZWQgaW5pdGlhbCBzdGF0ZSAqL1xuMzA1NjpcdFx0cmV0ID0gcnRsODM2NW1iX3N3aXRjaF9pbml0KHByaXYpO1xuMzA1NzpcdFx0aWYgKHJldCkge1xuMzA1ODpcdFx0XHRkZXZfZXJyKHByaXYtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gaW5pdGlhbGl6ZSBzd2l0Y2g6ICVwZVxcblwmIzM0OyxcbjMwNTk6XHRcdFx0XHRFUlJfUFRSKHJldCkpO1xuMzA2MDpcdFx0XHRnb3RvIG91dF9lcnJvcjtcbjMwNjE6XHRcdH1cbjMwNjI6XHRcbjMwNjM6XHRcdGlmIChtYi1cdTAwM2VzZHNfc3VwcG9ydGVkKSB7XG4zMDY0Olx0XHRcdHJldCA9IHJ0bDgzNjVtYl9zZHNfcmFpc2VfcmF0ZV9saW1pdHMocHJpdik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzA4IDAwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0ODI5CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBydGw4MzY1bWIgRHJpdmVyIFNldHVwKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgYHJ0bDgzNjVtYl9zZXR1cGAgaXMgdGhlIERTQSBzZXR1cCBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGBydGw4MzY1bWJgIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aGUgYHJ0bDgzNjVtYl9zd2l0Y2hfb3BzYCBzdHJ1Y3R1cmUuIE15IG5leHQgc3RlcCwgbmF0dXJhbGx5LCBpcyB0byBwaW5wb2ludCB0aGUgZXhhY3QgZGVmaW5pdGlvbiBvZiBgcnRsODM2NW1iX3N3aXRjaF9vcHNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RydWN0dXJlIGFuZCBob3cgYHJ0bDgzNjVtYl9zZXR1cGAgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUgb2YgdGhlIGRyaXZlciYjMzk7cyBvcGVyYXRpb24uIEtub3dpbmcgd2hlcmUgdGhpcyBpcyBkZWZpbmVkIHdpbGwgZ2l2ZSBtZSB2YWx1YWJsZSBjb250ZXh0IGZvciBob3cgdGhlIHN3aXRjaCBpcyBpbml0aWFsaXplZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzMwMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA3MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzAwOlx0XG4zMzAxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCBwaHlsaW5rX21hY19vcHMgcnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyA9IHtcbjMzMDI6XHRcdC5tYWNfc2VsZWN0X3BjcyA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19zZWxlY3RfcGNzLFxuMzMwMzpcdFx0Lm1hY19jb25maWcgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfY29uZmlnLFxuMzMwNDpcdFx0Lm1hY19saW5rX2Rvd24gPSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua19kb3duLFxuMzMwNTpcdFx0Lm1hY19saW5rX3VwID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2xpbmtfdXAsXG4zMzA2Olx0fTtcbjMzMDc6XHRcbjMzMDg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGRzYV9zd2l0Y2hfb3BzIHJ0bDgzNjVtYl9zd2l0Y2hfb3BzID0ge1xuMzMwOTpcdFx0LmdldF90YWdfcHJvdG9jb2wgPSBydGw4MzY1bWJfZ2V0X3RhZ19wcm90b2NvbCxcbjMzMTA6XHRcdC5jaGFuZ2VfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2NoYW5nZV90YWdfcHJvdG9jb2wsXG4zMzExOlx0XHQuc2V0dXAgPSBydGw4MzY1bWJfc2V0dXAsXG4zMzEyOlx0XHQudGVhcmRvd24gPSBydGw4MzY1bWJfdGVhcmRvd24sXG4zMzEzOlx0XHQucGh5bGlua19nZXRfY2FwcyA9IHJ0bDgzNjVtYl9waHlsaW5rX2dldF9jYXBzLFxuMzMxNDpcdFx0LnBvcnRfYnJpZGdlX2pvaW4gPSBydGw4M3h4X3BvcnRfYnJpZGdlX2pvaW4sXG4zMzE1Olx0XHQucG9ydF9icmlkZ2VfbGVhdmUgPSBydGw4M3h4X3BvcnRfYnJpZGdlX2xlYXZlLFxuMzMxNjpcdFx0LnBvcnRfcHJlX2JyaWRnZV9mbGFncyA9IHJ0bDgzNjVtYl9wb3J0X3ByZV9icmlkZ2VfZmxhZ3MsXG4zMzE3Olx0XHQucG9ydF9icmlkZ2VfZmxhZ3MgPSBydGw4M3h4X3BvcnRfYnJpZGdlX2ZsYWdzLFxuMzMxODpcdFx0LnBvcnRfc3RwX3N0YXRlX3NldCA9IHJ0bDgzNjVtYl9wb3J0X3N0cF9zdGF0ZV9zZXQsXG4zMzE5Olx0XHQucG9ydF9mYXN0X2FnZSA9IHJ0bDgzeHhfcG9ydF9mYXN0X2FnZSxcbjMzMjA6XHRcdC5wb3J0X2ZkYl9hZGQgPSBydGw4M3h4X3BvcnRfZmRiX2FkZCxcbjMzMjE6XHRcdC5wb3J0X2ZkYl9kZWwgPSBydGw4M3h4X3BvcnRfZmRiX2RlbCxcbjMzMjI6XHRcdC5wb3J0X2ZkYl9kdW1wID0gcnRsODN4eF9wb3J0X2ZkYl9kdW1wLFxuMzMyMzpcdFx0LnBvcnRfbWRiX2FkZCA9IHJ0bDgzeHhfcG9ydF9tZGJfYWRkLFxuMzMyNDpcdFx0LnBvcnRfbWRiX2RlbCA9IHJ0bDgzeHhfcG9ydF9tZGJfZGVsLFxuMzMyNTpcdFx0LnBvcnRfdmxhbl9hZGQgPSBydGw4MzY1bWJfcG9ydF92bGFuX2FkZCxcbjMzMjY6XHRcdC5wb3J0X3ZsYW5fZGVsID0gcnRsODM2NW1iX3BvcnRfdmxhbl9kZWwsXG4zMzI3Olx0XHQucG9ydF92bGFuX2ZpbHRlcmluZyA9IHJ0bDgzNjVtYl9wb3J0X3ZsYW5fZmlsdGVyaW5nLFxuMzMyODpcdFx0LmdldF9zdHJpbmdzID0gcnRsODM2NW1iX2dldF9zdHJpbmdzLFxuMzMyOTpcdFx0LmdldF9ldGh0b29sX3N0YXRzID0gcnRsODM2NW1iX2dldF9ldGh0b29sX3N0YXRzLFxuMzMzMDpcdFx0LmdldF9zc2V0X2NvdW50ID0gcnRsODM2NW1iX2dldF9zc2V0X2NvdW50LFxuMzMzMTpcdFx0LmdldF9ldGhfcGh5X3N0YXRzID0gcnRsODM2NW1iX2dldF9waHlfc3RhdHMsXG4zMzMyOlx0XHQuZ2V0X2V0aF9tYWNfc3RhdHMgPSBydGw4MzY1bWJfZ2V0X21hY19zdGF0cyxcbjMzMzM6XHRcdC5nZXRfZXRoX2N0cmxfc3RhdHMgPSBydGw4MzY1bWJfZ2V0X2N0cmxfc3RhdHMsXG4zMzM0Olx0XHQuZ2V0X3N0YXRzNjQgPSBydGw4MzY1bWJfZ2V0X3N0YXRzNjQsXG4zMzM1Olx0XHQucG9ydF9jaGFuZ2VfbXR1ID0gcnRsODM2NW1iX3BvcnRfY2hhbmdlX210dSxcbjMzMzY6XHRcdC5wb3J0X21heF9tdHUgPSBydGw4MzY1bWJfcG9ydF9tYXhfbXR1LFxuMzMzNzpcdFx0LnBvcnRfaHNyX2pvaW4gPSBkc2FfcG9ydF9zaW1wbGVfaHNyX2pvaW4sXG4zMzM4Olx0XHQucG9ydF9oc3JfbGVhdmUgPSBkc2FfcG9ydF9zaW1wbGVfaHNyX2xlYXZlLFxuMzMzOTpcdH07XG4zMzQwOlx0XG4zMzQxOlx0c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX29wcyBydGw4MzY1bWJfb3BzID0ge1xuMzM0MjpcdFx0LmRldGVjdCA9IHJ0bDgzNjVtYl9kZXRlY3QsXG4zMzQzOlx0XHQucG9ydF9hZGRfaXNvbGF0aW9uID0gcnRsODM2NW1iX3BvcnRfYWRkX2lzb2xhdGlvbixcbjMzNDQ6XHRcdC5wb3J0X3JlbW92ZV9pc29sYXRpb24gPSBydGw4MzY1bWJfcG9ydF9yZW1vdmVfaXNvbGF0aW9uLFxuMzM0NTpcdFx0LnBvcnRfc2V0X2VmaWQgPSBydGw4MzY1bWJfcG9ydF9zZXRfZWZpZCxcbjMzNDY6XHRcdC5wb3J0X3NldF9sZWFybmluZyA9IHJ0bDgzNjVtYl9wb3J0X3NldF9sZWFybmluZyxcbjMzNDc6XHRcdC5wb3J0X3NldF91Y2FzdF9mbG9vZCA9IHJ0bDgzNjVtYl9wb3J0X3NldF91Y2FzdF9mbG9vZCxcbjMzNDg6XHRcdC5wb3J0X3NldF9tY2FzdF9mbG9vZCA9IHJ0bDgzNjVtYl9wb3J0X3NldF9tY2FzdF9mbG9vZCxcbjMzNDk6XHRcdC5wb3J0X3NldF9iY2FzdF9mbG9vZCA9IHJ0bDgzNjVtYl9wb3J0X3NldF9iY2FzdF9mbG9vZCxcbjMzNTA6XHRcdC5sMl9hZGRfdWMgPSBydGw4MzY1bWJfbDJfYWRkX3VjLFxuMzM1MTpcdFx0LmwyX2RlbF91YyA9IHJ0bDgzNjVtYl9sMl9kZWxfdWMsXG4zMzUyOlx0XHQubDJfZ2V0X25leHRfdWMgPSBydGw4MzY1bWJfbDJfZ2V0X25leHRfdWMsXG4zMzUzOlx0XHQubDJfYWRkX21jID0gcnRsODM2NW1iX2wyX2FkZF9tYyxcbjMzNTQ6XHRcdC5sMl9kZWxfbWMgPSBydGw4MzY1bWJfbDJfZGVsX21jLFxuMzM1NTpcdFx0LmwyX2ZsdXNoID0gcnRsODM2NW1iX2wyX2ZsdXNoLFxuMzM1NjpcdFx0LnBoeV9yZWFkID0gcnRsODM2NW1iX3BoeV9yZWFkLFxuMzM1NzpcdFx0LnBoeV93cml0ZSA9IHJ0bDgzNjVtYl9waHlfd3JpdGUsXG4zMzU4Olx0fTtcbjMzNTk6XHRcbjMzNjA6XHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xuMzM2MTpcdFx0LmRzX29wcyA9IFx1MDAyNnJ0bDgzNjVtYl9zd2l0Y2hfb3BzLFxuMzM2MjpcdFx0Lm9wcyA9IFx1MDAyNnJ0bDgzNjVtYl9vcHMsXG4zMzYzOlx0XHQucGh5bGlua19tYWNfb3BzID0gXHUwMDI2cnRsODM2NW1iX3BoeWxpbmtfbWFjX29wcyxcbjMzNjQ6XHRcdC5jbGtfZGVsYXkgPSAxMCxcbjMzNjU6XHRcdC5jbWRfcmVhZCA9IDB4YjksXG4zMzY2Olx0XHQuY21kX3dyaXRlID0gMHhiOCxcbjMzNjc6XHRcdC5jaGlwX2RhdGFfc3ogPSBzaXplb2Yoc3RydWN0IHJ0bDgzNjVtYiksXG4zMzY4Olx0fTtcbjMzNjk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDY3ODcKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiA0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBydGw4MzY1bWJfdmFyaWFudCBJbnN0YW50aWF0aW9uKioKCkFscmlnaHQsIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGJ1c2VzIGFyZSBhY3R1YWxseSB1c2luZyBvciBpbnN0YW50aWF0aW5nIHRoaXMgYHJ0bDgzNjVtYl92YXJpYW50YCB0aGluZy4gVGhhdCYjMzk7cyB0aGUgY29yZSBxdWVzdGlvbi4gSSYjMzk7bSBnb2luZyB0byBzdGFydCB3aXRoIGEgdGFyZ2V0ZWQgc2VhcmNoIGZvciBzcGVjaWZpYyBkcml2ZXJzIHJlbGF0ZWQgdG8gdGhpcyBjb21wb25lbnQuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGxvb2sgZm9yIGluc3RhbmNlcyBvZiBgcnRsODM2NW1iX29mX21hdGNoYCBvciByZWxhdGVkIHRlcm1zLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBzdGFuZGFyZCBtZWNoYW5pc21zIGhlcmUuIElmIHRoaXMgaXMgYSBzd2l0Y2ggaXQgcHJvYmFibHkgaXMgY29ubmVjdGVkIGJ5IFNNSSBvciBNRElPLiBJZiB0aGUgZHJpdmVyIGlzIHdyaXR0ZW4gY29ycmVjdGx5IGl0IHdpbGwgdXNlIHRoZSBjb3JyZWN0IGNvbXBhdGlibGUgc3RyaW5nIGFuZCB0aGUgZHJpdmVyIHByb2JlIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGR1cmluZyBkZXZpY2UgdHJlZSBpbnN0YW50aWF0aW9uLgoKTGV0JiMzOTtzIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEkgZXhwZWN0IHRoYXQgSSYjMzk7bGwgcXVpY2tseSBuYXJyb3cgZG93biB0aGUgcmVsZXZhbnQgZHJpdmVycyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBidXMgYXNzb2NpYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydGw4MzY1bWJfb2ZfbWF0Y2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMzNjA9Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudCA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNjktXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNzA6c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcnRsODM2NW1iX29mX21hdGNoW10gPSB7XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNzEtXHR7IC5jb21wYXRpYmxlID0gXCYjMzQ7cmVhbHRlayxydGw4MzY1bWJcJiMzNDssIC5kYXRhID0gXHUwMDI2cnRsODM2NW1iX3ZhcmlhbnQsIH0sXG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzczLX07XG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNzQ6TU9EVUxFX0RFVklDRV9UQUJMRShvZiwgcnRsODM2NW1iX29mX21hdGNoKTtcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM3NS1cbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM3Nj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNzgtXHRcdC5uYW1lID0gXCYjMzQ7cnRsODM2NW1iLXNtaVwmIzM0OyxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzM3OTpcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzgwLVx0fSxcbi0tXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jPTMzODY9c3RhdGljIHN0cnVjdCBtZGlvX2RyaXZlciBydGw4MzY1bWJfbWRpb19kcml2ZXIgPSB7XG4tLVxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzg4LVx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjVtYi1tZGlvXCYjMzQ7LFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMzg5Olx0XHQub2ZfbWF0Y2hfdGFibGUgPSBydGw4MzY1bWJfb2ZfbWF0Y2gsXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzOTAtXHR9LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NzY5NAoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDM2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSVEw4MzY1TUIgU3dpdGNoIERyaXZlciYjMzk7cyBGdXp6aW5nIFN1aXRhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGBydGw4MzY1bWJfc21pX2RyaXZlcmAsIHdoaWNoIGlzIGEgYHBsYXRmb3JtX2RyaXZlcmAsIGFuZCB0aGUgYHJ0bDgzNjVtYl9tZGlvX2RyaXZlcmAsIGFuIGBtZGlvX2RyaXZlcmAuIEJvdGggYXJlIG1hdGNoZWQgdGhyb3VnaCBEZXZpY2UgVHJlZSwgc28gaXQmIzM5O3MgYSB0eXBpY2FsIGVtYmVkZGVkIHN5c3RlbSBzZXR1cC4gVGhlIGtleSBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgc3dpdGNoIGhhcmR3YXJlIGlzIGFjdHVhbGx5IGluc3RhbnRpYXRlZCB3aXRoaW4gYSBzdGFuZGFyZCB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUuIEFyZSB0aGVyZSBhbnkgc3RhbmRhcmQgZW11bGF0ZWQgZGV2aWNlcywgbGlrZSB2aXJ0aW8sIFVTQiBnYWRnZXRzLCBsb29wYmFjayBpbnRlcmZhY2VzLCBvciB0dW4vdGFwIHRoYXQgd291bGQgc3RhbmQgaW4gZm9yIHRoaXMgaGFyZHdhcmU/CgpOb3csIGNvbnNpZGVyaW5nIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgJiMzNDtyZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZSYjMzQ7LiBGdXp6aW5nIGlzIHBvaW50bGVzcyBpZiB0aGUgY29kZSAqY2Fubm90KiBleGVjdXRlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQuIFNwZWNpZmljYWxseSwgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gR0NFIG9yIFFFTVUgdXNpbmcgZW11bGF0ZWQgZGV2aWNlcywgaXQmIzM5O3MgYSBuby1nbywgcmVnYXJkbGVzcyBvZiBjb21wbGV4aXR5IG9yIGFzc2VydGlvbnMuIFRoZSBndWlkZWxpbmVzIGV4cGxpY2l0bHkgbGlzdCBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmUgbGlrZSB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFVzIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBBU0lDIGNhcmRzIHRoYXQgYXJlIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLiBUaGF0JiMzOTtzIHdoYXQgSSYjMzk7bSBjb25jZXJuZWQgYWJvdXQgaGVyZS4KClNvLCB0aGUgcmVhbCBxdWVzdGlvbiBpczogRG9lcyB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRFNBIHN3aXRjaCBkcml2ZXIgKnJlcXVpcmUqIHBoeXNpY2FsIGhhcmR3YXJlLCBzcGVjaWZpY2FsbHkgRFQgYmluZGluZ3Mgb24gYW4gZW1iZWRkZWQgYm9hcmQ/IFdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGEgUmVhbHRlayBzd2l0Y2ggQVNJQyB0aGF0JiMzOTtzIGxpa2VseSBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzIG9yIEdQSU8tYmFzZWQgU01JIGJ1cyB0byBhIHJvdXRlciBTb0Mgb3Igc2ltaWxhciBlbWJlZGRlZCBib2FyZC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBjb25maXJtLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLCBhbmQgcmV2aWV3IGl0cyBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIGZ1bmN0aW9ucyB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzMzcwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzMzNzA6XHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY1bWJfb2ZfbWF0Y2hbXSA9IHtcbjMzNzE6XHRcdHsgLmNvbXBhdGlibGUgPSBcJiMzNDtyZWFsdGVrLHJ0bDgzNjVtYlwmIzM0OywgLmRhdGEgPSBcdTAwMjZydGw4MzY1bWJfdmFyaWFudCwgfSxcbjMzNzI6XHRcdHsgLyogc2VudGluZWwgKi8gfSxcbjMzNzM6XHR9O1xuMzM3NDpcdE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjVtYl9vZl9tYXRjaCk7XG4zMzc1Olx0XG4zMzc2Olx0c3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgcnRsODM2NW1iX3NtaV9kcml2ZXIgPSB7XG4zMzc3Olx0XHQuZHJpdmVyID0ge1xuMzM3ODpcdFx0XHQubmFtZSA9IFwmIzM0O3J0bDgzNjVtYi1zbWlcJiMzNDssXG4zMzc5Olx0XHRcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcbjMzODA6XHRcdH0sXG4zMzgxOlx0XHQucHJvYmUgID0gcmVhbHRla19zbWlfcHJvYmUsXG4zMzgyOlx0XHQucmVtb3ZlID0gcmVhbHRla19zbWlfcmVtb3ZlLFxuMzM4MzpcdFx0LnNodXRkb3duID0gcmVhbHRla19zbWlfc2h1dGRvd24sXG4zMzg0Olx0fTtcbjMzODU6XHRcbjMzODY6XHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjVtYl9tZGlvX2RyaXZlciA9IHtcbjMzODc6XHRcdC5tZGlvZHJ2LmRyaXZlciA9IHtcbjMzODg6XHRcdFx0Lm5hbWUgPSBcJiMzNDtydGw4MzY1bWItbWRpb1wmIzM0OyxcbjMzODk6XHRcdFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxuMzM5MDpcdFx0fSxcbjMzOTE6XHRcdC5wcm9iZSAgPSByZWFsdGVrX21kaW9fcHJvYmUsXG4zMzkyOlx0XHQucmVtb3ZlID0gcmVhbHRla19tZGlvX3JlbW92ZSxcbjMzOTM6XHRcdC5zaHV0ZG93biA9IHJlYWx0ZWtfbWRpb19zaHV0ZG93bixcbjMzOTQ6XHR9O1xuMzM5NTpcdFxuMzM5NjpcdHN0YXRpYyBpbnQgcnRsODM2NW1iX2luaXQodm9pZClcbjMzOTc6XHR7XG4zMzk4Olx0XHRpbnQgcmV0O1xuMzM5OTpcdFxuMzQwMDpcdFx0cmV0ID0gcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZydGw4MzY1bWJfbWRpb19kcml2ZXIpO1xuMzQwMTpcdFx0aWYgKHJldClcbjM0MDI6XHRcdFx0cmV0dXJuIHJldDtcbjM0MDM6XHRcbjM0MDQ6XHRcdHJldCA9IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihcdTAwMjZydGw4MzY1bWJfc21pX2RyaXZlcik7XG4zNDA1Olx0XHRpZiAocmV0KSB7XG4zNDA2Olx0XHRcdHJlYWx0ZWtfbWRpb19kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZydGw4MzY1bWJfbWRpb19kcml2ZXIpO1xuMzQwNzpcdFx0XHRyZXR1cm4gcmV0O1xuMzQwODpcdFx0fVxuMzQwOTpcdFxuMzQxMDpcdFx0cmV0dXJuIDA7XG4zNDExOlx0fVxuMzQxMjpcdG1vZHVsZV9pbml0KHJ0bDgzNjVtYl9pbml0KTtcbjM0MTM6XHRcbjM0MTQ6XHRzdGF0aWMgdm9pZCBfX2V4aXQgcnRsODM2NW1iX2V4aXQodm9pZClcbjM0MTU6XHR7XG4zNDE2Olx0XHRyZWFsdGVrX3NtaV9kcml2ZXJfdW5yZWdpc3RlcihcdTAwMjZydGw4MzY1bWJfc21pX2RyaXZlcik7XG4zNDE3Olx0XHRyZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoXHUwMDI2cnRsODM2NW1iX21kaW9fZHJpdmVyKTtcbjM0MTg6XHR9XG4zNDE5Olx0bW9kdWxlX2V4aXQocnRsODM2NW1iX2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0OTMxMgoJCQkJCQkJb3V0cHV0OiAxMjIKCQkJCQkJCXRob3VnaHRzOiAzNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUlRMODM2NU1CIERyaXZlciYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGxvb2tpbmcgYXQgYHJ0bDgzNjVtYl9tYWluLmNgLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyIHRoaXMgaXMgYSBkZWFkIGVuZCBmb3Igc3RhbmRhcmQgZnV6emluZyBzZXR1cHMuIEkgbWVhbiwgaXQmIzM5O3MgYSBkcml2ZXIgZm9yIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBldGhlcm5ldCBzd2l0Y2ggQVNJQy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gdGFsayB0byB0aGUgY2hpcCB2aWEgTURJTyBvciBHUElPIFNNSSwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpc24mIzM5O3Qgc29tZXRoaW5nIEkgY2FuIHRyaWdnZXIgaW4gYSBzdGFuZGFyZCBRRU1VIG9yIHN5emthbGxlciBlbnZpcm9ubWVudCBvbiBhbWQ2NC4gVGhlc2UgYXJlIHZpcnR1YWxpemVkIHNldHVwczsgdGhleSYjMzk7cmUgbm90IGdvaW5nIHRvIG1hZ2ljYWxseSBlbXVsYXRlIHBoeXNpY2FsIG5ldHdvcmsgc3dpdGNoIGhhcmR3YXJlLgoKRXZlbiB0aGUgY3J1Y2lhbCBmdW5jdGlvbnMgbGlrZSBgcnRsODM2NW1iX3NldHVwKClgIGFuZCBgcnRsODM2NW1iX3Jlc2V0X2NoaXAoKWAg4oCTIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyIOKAkyBhcmUgb25seSBjYWxsZWQgd2hlbiB0aGUga2VybmVsIGFjdHVhbGx5ICpwcm9iZXMqIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBkZXZpY2UuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgaGFyZHdhcmUgZGVwZW5kZW5jeS4KCkxldCBtZSBqdXN0IHNvbGlkaWZ5IHRoaXMgaW4gbXkgbWluZCBieSBydW5uaW5nIHRocm91Z2ggdGhlIGNoZWNrbGlzdDoKCjEuICAqKkFyY2hpdGVjdHVyZToqKiBhbWQ2NCDigJMgWWVwLCBzdGFuZGFyZCBmb3IgbWFueSBmdXp6aW5nIHNldHVwcywgYnV0IGlycmVsZXZhbnQgaGVyZSBkdWUgdG8gdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50LgoyLiAgKipGaWxlOioqIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jYCDigJMgQ29uZmlybWVkLCB0aGlzIGlzIHRoZSBkcml2ZXIgY29kZSBpbiBxdWVzdGlvbi4KMy4gICoqSGFyZHdhcmU6KiogUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIEFTSUMgY29ubmVjdGVkIHZpYSBNRElPL1NNSSDigJMgQmluZ28uIFRoZSBkZWFsYnJlYWtlci4KNC4gICoqV29ydGhGdXp6aW5nOioqIEZhbHNlIOKAkyBBYnNvbHV0ZWx5LiBXZSYjMzk7cmUgbm90IGdvaW5nIHRvIGdldCBhbnkgY29kZSBjb3ZlcmFnZSBoZXJlIHdpdGhvdXQgdGhhdCBzcGVjaWZpYyBoYXJkd2FyZS4KNS4gICoqUmVhc29uaW5nOioqIENvbmNpc2UgYW5kIGNvcnJlY3QuIFRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhhdCBleHBsYW5hdGlvbiBpcyBzb2xpZC4KNi4gICoqRW5hYmxlQ29uZmlnczoqKiBOdWxsIG9yIGVtcHR5IOKAkyBNYWtlcyBzZW5zZS4gTm8gY29uZmlndXJhdGlvbiBjaGFuZ2VzIHdpbGwgbWFrZSBhIHZpcnR1YWwgbWFjaGluZSBtYWdpY2FsbHkgY3JlYXRlIGEgcmVhbCBzd2l0Y2guCjcuICAqKkZvY3VzU3ltYm9sczoqKiBOdWxsIG9yIGVtcHR5IOKAkyBSaWdodCBhZ2Fpbi4gTm8gc3BlY2lmaWMgZnVuY3Rpb24gY2FsbHMgd2lsbCBjaGFuZ2UgdGhlIGhhcmR3YXJlIGRlcGVuZGVuY3kuCgpZZXAsIHRoYXQmIzM5O3MgaXQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBObyBwb2ludCB3YXN0aW5nIGN5Y2xlcyBvbiBzb21ldGhpbmcgdGhhdCBjYW4mIzM5O3QgYmUgcmVhY2hlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMDggMDA6Mzc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8wOCAwMDozNzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6MjMuODM0NDA2NTIzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mzg2MjI1NzQxNjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjoyMy44MzQ0MTE2OTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzODc3NDc3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGIyZmQ2NzM3ODFmOGJkN2NkMGViZmFjNWM5YTI5OWQxYTdmMmRjNjZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBTZXAgOCAwMDozNjoyMyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbmluZGV4IDcyODIzMWQ4Zjk0Y2EuLjUwOGUxYmVhOGZjNWMgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcXG5AQCAtMTM2LDYgKzEzNiw5IEBAXFxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfU1dfTUFTS1xcdDB4MDAwMlxcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX0hXX01BU0tcXHQweDAwMDFcXG4gXFxuKy8qIFRpbWUgdGhlIGNoaXAgbmVlZHMgdG8gY29tcGxldGUgYSByZXNldCwgcGVyIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiAqL1xcbisjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVNcXHQxMDAwXFxuK1xcbiAvKiBJbnRlcnJ1cHQgcG9sYXJpdHkgcmVnaXN0ZXIgKi9cXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcXHQweDExMDBcXG4gI2RlZmluZSAgIFJUTDgzNjVNQl9JTlRSX1BPTEFSSVRZX01BU0tcXHQweDAwMDFcXG5AQCAtMjk4MCwxOCArMjk4MywzOCBAQCBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zd2l0Y2hfaW5pdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbiBcXG4gc3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbiB7XFxuK1xcdHVuc2lnbmVkIGxvbmcgZGVhZGxpbmU7XFxuK1xcdHVuc2lnbmVkIGxvbmcgcmVtYWluaW5nO1xcbiBcXHR1MzIgdmFsO1xcbitcXHRpbnQgcmV0O1xcbiBcXG4gXFx0cHJpdi1cXHUwMDNld3JpdGVfcmVnX25vYWNrKHByaXYsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRyxcXG4gXFx0XFx0XFx0ICAgICAgRklFTERfUFJFUChSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLLCAxKSk7XFxuIFxcbitcXHRkZWFkbGluZSA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKFJUTDgzNjVNQl9DSElQX1JFU0VUX1RJTUVfTVMpO1xcbitcXG4gXFx0LyogUmVhbHRlayBkb2N1bWVudGF0aW9uIHNheXMgdGhlIGNoaXAgbmVlZHMgMSBzZWNvbmQgdG8gcmVzZXQuIFNsZWVwXFxuIFxcdCAqIGZvciAxMDAgbXMgYmVmb3JlIGFjY2Vzc2luZyBhbnkgcmVnaXN0ZXJzIHRvIHByZXZlbnQgQUNLIHRpbWVvdXRzLlxcbiBcXHQgKi9cXG4gXFx0bXNsZWVwKDEwMCk7XFxuLVxcdHJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cXHUwMDNlbWFwLCBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9SRUcsIHZhbCxcXG4tXFx0XFx0XFx0XFx0XFx0ISh2YWwgXFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcXG4tXFx0XFx0XFx0XFx0XFx0MjAwMDAsIDFlNik7XFxuK1xcdHJldCA9IHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVxcdTAwM2VtYXAsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRywgdmFsLFxcbitcXHRcXHRcXHRcXHQgICAgICAgISh2YWwgXFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgIDIwMDAwLCAxZTYpO1xcbitcXHRpZiAocmV0KVxcbitcXHRcXHRyZXR1cm4gcmV0O1xcbitcXG4rXFx0LyogVGhlIGJpdCBjbGVhcmluZyBvbmx5IG1lYW5zIHRoZSByZXNldCB3YXMgYWNjZXB0ZWQsIG5vdCB0aGF0IHRoZVxcbitcXHQgKiBjaGlwIGlzIHJlYWR5OiByZWdpc3RlciB3cml0ZXMgaXNzdWVkIGJlZm9yZSB0aGUgZG9jdW1lbnRlZCByZXNldFxcbitcXHQgKiB0aW1lIGhhcyBlbGFwc2VkIGFyZSBzaWxlbnRseSBkcm9wcGVkIGJ5IGJsb2NrcyB0aGF0IGFyZSBzdGlsbFxcbitcXHQgKiBjb21pbmcgdXAsIHdoaWNoIGxlYXZlcyB0aGUgc3dpdGNoIGhhbGYgY29uZmlndXJlZC4gV2FpdCBvdXRcXG4rXFx0ICogd2hhdGV2ZXIgaXMgbGVmdCBvZiB0aGF0IHNlY29uZCwgbWVhc3VyZWQgZnJvbSB0aGUgcmVzZXQgd3JpdGUsIHNvXFxuK1xcdCAqIHRoZSBwb2xsIGFib3ZlIGRvZXMgbm90IGFkZCB0byB0aGUgdG90YWwuXFxuK1xcdCAqL1xcbitcXHRyZW1haW5pbmcgPSBkZWFkbGluZSAtIGppZmZpZXM7XFxuK1xcdGlmICgobG9uZylyZW1haW5pbmcgXFx1MDAzZSAwKVxcbitcXHRcXHRtc2xlZXAoamlmZmllc190b19tc2VjcyhyZW1haW5pbmcpKTtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjI0LjM3NDExOTYzOVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzgwODI4NDQ0ODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBjaGlwIHJlc2V0IGxvZ2ljIChydGw4MzY1bWJfcmVzZXRfY2hpcCkgaW4gdGhlIFJlYWx0ZWsgUlRMODM2NU1CIEV0aGVybmV0IHN3aXRjaCBkcml2ZXIuIFRoaXMgZHJpdmVyIHRhcmdldHMgcGh5c2ljYWwgUmVhbHRlayBzd2l0Y2ggQVNJQ3MgY29ubmVjdGVkIG92ZXIgTURJTyBvciBTTUkgYnVzZXMsIHdoaWNoIGFyZSBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIChRRU1VL0tWTSBvbiBhbWQ2NCkgdXNlZCBieSBzeXprYWxsZXIuIEFzIHN1Y2gsIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyIGFuZCBzZWN1cml0eSBlbmdpbmVlci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3NcbnRvb2xzIHRvIGluc3BlY3QgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSwgY2FsbGVycywgYW5kIHN1cnJvdW5kaW5nIGNvbnRleHQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4xLiBDT1JFIFRSSUFHRSBQSElMT1NPUEhZXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncyxcbmFuZCBuZXdseSB0cmlnZ2VyZWQgYXNzZXJ0aW9ucyBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBzZXJpZXMuXG5cbi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6XG4gIEZ1enppbmcgY2FuIG9ubHkgZGlzY292ZXIgYnVncyBpbiBjb2RlIHRoYXQgY2FuIGFjdHVhbGx5IGV4ZWN1dGUgaW4gc3RhbmRhcmQgdmlydHVhbGl6ZWRcbiAgZW52aXJvbm1lbnRzIChHQ0Ugb3IgUUVNVSwgdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGRldmljZXMgbGlrZSBVU0IgZ2FkZ2V0cywgbmV0ZGV2LCB0dW4vdGFwKS5cbiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLFxuICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgYWRkcyBhc3NlcnRpb25zIG9yIGNvbXBsZXggbG9naWMuXG5cbi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgXCJOTyBGVU5DVElPTkFMIENIQU5HRVwiIChORkNJKSBPUiBcIlJFRkFDVE9SSU5HXCIgQ0xBSU1TOlxuICBQYXRjaCBhdXRob3JzIHJvdXRpbmVseSBsYWJlbCBjaGFuZ2VzIGFzIFwiY2xlYW51cHNcIiwgXCJyZWZhY3RvcmluZ3NcIiwgb3Igc3RhdGVcbiAgXCJObyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRlbmRlZFwiLiBEbyBOT1QgdGFrZSB0aGVzZSBjbGFpbXMgYXQgZmFjZSB2YWx1ZS5cbiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50XG4gIGluIGNvcmUgc3Vic3lzdGVtcyBmcmVxdWVudGx5IGludHJvZHVjZSBzdWJ0bGUgc2VtYW50aWMgc2hpZnRzIG9yIHVuY292ZXIgbGF0ZW50IGtlcm5lbCBidWdzLlxuICBJZiByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlIGlzIG1vZGlmaWVkIG9yIHJlZmFjdG9yZWQsIGl0IE1VU1QgYmUgZnV6emVkLlxuXG4tIE5FVyBPUiBNT0RJRklFRCBBU1NFUlRJT05TIElOIFJFQUNIQUJMRSBDT0RFIE1VU1QgQkUgRlVaWkVEOlxuICBXaGVuIGEgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllcyBydW50aW1lIGNoZWNrcyBvciBhc3NlcnRpb25zIChlLmcuLCBXQVJOX09OKiwgVk1fV0FSTl9PTiosXG4gIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLlxuICBFdmVuIGlmIHRoZSBhdXRob3IgYmVsaWV2ZXMgdGhlIGludmFyaWFudCBhbHdheXMgaG9sZHMsIGZ1enppbmcgaXMgZXNzZW50aWFsIHRvIHZlcmlmeSB3aGV0aGVyXG4gIGFuIHVudXN1YWwgc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucyBjYW4gdmlvbGF0ZSBpdC5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjIuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz1mYWxzZSAoTkVHQVRJVkUgQ1JJVEVSSUEpXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBPTkxZIElGIGFsbCBtb2RpZmllZCBjb2RlIGZhbGxzIHN0cmljdGx5IGludG8gb25lIG9yIG1vcmUgb2YgdGhlc2UgY2F0ZWdvcmllczpcblxuLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOlxuICAqIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIGNvbW1lbnRzLCBvciBzcGVsbGluZyBmaXhlcy5cbiAgKiBVc2VyLXNwYWNlIGRpcmVjdG9yaWVzLCBzZWxmLXRlc3RzLCBzYW1wbGVzLCBvciBzY3JpcHRzIChlLmcuLCB0b29scy8sIHNhbXBsZXMvLCBzY3JpcHRzLywgdXNyLylcbiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuXG4gICogUHVyZWx5IGRlY29yYXRpdmUgbG9nZ2luZyAoZS5nLiwgbWVzc2FnZSBzdHJpbmdzIGluIHByX2VyciwgcHJpbnRrLCBkZXZfaW5mbykgb3IgdHJhY2Vwb2ludHNcbiAgICB0aGF0IGRvIG5vdCBhbHRlciBjb250cm9sIGZsb3cgb3IgZGF0YSBzdHJ1Y3R1cmVzLlxuICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy5cbi0gU3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIGhhcmR3YXJlOlxuICAqIFZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBVbnJlYWNoYWJsZSBleGVjdXRpb24gcGF0aHM6XG4gICogRHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoLnJlbW92ZSwgLnNodXRkb3duLCBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIpIGV4ZWN1dGVkIG9ubHkgZHVyaW5nXG4gICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuXG4gICogQ29kZSBwYXRocyBleGNsdXNpdmUgdG8gYXJjaGl0ZWN0dXJlcyBvdGhlciB0aGFuIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMy4gV0hFTiBUTyBSRVRVUk4gV29ydGhGdXp6aW5nPXRydWUgKFBPU0lUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6XG4tIENvcmUgU3Vic3lzdGVtczpcbiAgKiBBbnkgbG9naWMgbW9kaWZpY2F0aW9ucyBpbiBtZW1vcnkgbWFuYWdlbWVudCAobW0vKSwgc3luY2hyb25pemF0aW9uL2xvY2tpbmcgKGtlcm5lbC9sb2NraW5nLyksXG4gICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLlxuLSBSZWZhY3RvcmluZ3MgYW5kIENvZGUgQ2xlYW51cHM6XG4gICogQW55IHJlc3RydWN0dXJpbmcgb2YgcmVhY2hhYmxlIGRhdGEgc3RydWN0dXJlcywgaGVscGVyIGFic3RyYWN0aW9ucywgb3IgYWxnb3JpdGhtIGZsb3dzLlxuLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6XG4gICogQW55IGludHJvZHVjdGlvbiBvciBhbHRlcmF0aW9uIG9mIGFzc2VydGlvbnMgKFdBUk5fT04qLCBWTV9XQVJOX09OKiwgQlVHX09OKiwgZXRjLikgaW4gcmVhY2hhYmxlIHBhdGhzLlxuLSBSZWFjaGFibGUgRHJpdmVycyBhbmQgUHJvdG9jb2xzOlxuICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbldoZW4gV29ydGhGdXp6aW5nPXRydWUsIHlvdSBtdXN0IGV4dHJhY3Qgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyBpbnRvIEZvY3VzU3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyOlxuXG4tIEFWT0lEIFVCSVFVSVRPVVMgTElGRUNZQ0xFIEhPVC1QQVRIUzpcbiAgRG8gTk9UIGxpc3QgZ2VuZXJpYywgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2FsbGVkIGJ5IGFsbW9zdCBldmVyeSBwcm9ncmFtIGluIHRoZSBjb3JwdXNcbiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHRcbiAgYW5kIHRyYXAgaGFuZGxlcnMsIG9yIGNvcmUgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXM7IHRoaXMgaXMgbm90IGFuIGV4aGF1c3RpdmUgbGlzdCkuXG4gIExpc3RpbmcgdWJpcXVpdG91cyBmdW5jdGlvbnMgY2F1c2VzIHRoZSBmdXp6ZXIgdG8gY2xhc3NpZnkgdGhvdXNhbmRzIG9mIHVucmVsYXRlZCB0ZXN0cyBhcyBcImZvY3VzZWRcIixcbiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLlxuXG4tIFRBUkdFVCBTUEVDSUZJQyBGRUFUVVJFIExPR0lDIEFORCBFTlRSWVBPSU5UUzpcbiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzXG4gIGZvciB0aGUgc3Vic3lzdGVtIGZlYXR1cmUgdW5kZXIgcmV2aWV3LlxuXG4tIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKTpcbiAgQ29tcGlsZXItaW5saW5lZCBzdGF0aWMgZnVuY3Rpb25zIChzdWNoIGFzIHN0YXRpYyBpbmxpbmVzIGluIG1tLyouaCBvciBpbmNsdWRlL2xpbnV4LyouaCkgbGFja1xuICBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGluIHZtbGludXggYW5kIGNhbm5vdCBiZSB0YXJnZXRlZCBkaXJlY3RseSBieSBzeW1ib2wgY292ZXJhZ2UgZmlsdGVycy5cbiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyXG4gIGZ1bmN0aW9ucyBpbiAuYyBmaWxlcyB0aGF0IGV4ZXJjaXNlIHRoZW0gKGF2b2lkaW5nIHViaXF1aXRvdXMgbGlmZWN5Y2xlIHdyYXBwZXJzKS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjUuIElERU5USUZZSU5HIEVuYWJsZUNvbmZpZ3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5JZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOlxuLSBJbnNwZWN0IEtjb25maWcgZmlsZXMgYW5kICNpZmRlZiBndWFyZHM7IGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuLSBDaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MgbmVlZGVkLlxuLSBTdHJpcCBhbnkgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYjJmZDY3Mzc4MWY4YmQ3Y2QwZWJmYWM1YzlhMjk5ZDFhN2YyZGM2NlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgU2VwIDggMDA6MzY6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jIGIvZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY1xuaW5kZXggNzI4MjMxZDhmOTRjYS4uNTA4ZTFiZWE4ZmM1YyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbisrKyBiL2RyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcbkBAIC0xMzYsNiArMTM2LDkgQEBcbiAjZGVmaW5lIFJUTDgzNjVNQl9DSElQX1JFU0VUX1NXX01BU0tcdDB4MDAwMlxuICNkZWZpbmUgUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTS1x0MHgwMDAxXG4gXG4rLyogVGltZSB0aGUgY2hpcCBuZWVkcyB0byBjb21wbGV0ZSBhIHJlc2V0LCBwZXIgUmVhbHRlayBkb2N1bWVudGF0aW9uICovXG4rI2RlZmluZSBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TXHQxMDAwXG4rXG4gLyogSW50ZXJydXB0IHBvbGFyaXR5IHJlZ2lzdGVyICovXG4gI2RlZmluZSBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9SRUdcdDB4MTEwMFxuICNkZWZpbmUgICBSVEw4MzY1TUJfSU5UUl9QT0xBUklUWV9NQVNLXHQweDAwMDFcbkBAIC0yOTgwLDE4ICsyOTgzLDM4IEBAIHN0YXRpYyBpbnQgcnRsODM2NW1iX3N3aXRjaF9pbml0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXG4gXG4gc3RhdGljIGludCBydGw4MzY1bWJfcmVzZXRfY2hpcChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxuIHtcbitcdHVuc2lnbmVkIGxvbmcgZGVhZGxpbmU7XG4rXHR1bnNpZ25lZCBsb25nIHJlbWFpbmluZztcbiBcdHUzMiB2YWw7XG4rXHRpbnQgcmV0O1xuIFxuIFx0cHJpdi1cdTAwM2V3cml0ZV9yZWdfbm9hY2socHJpdiwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLFxuIFx0XHRcdCAgICAgIEZJRUxEX1BSRVAoUlRMODM2NU1CX0NISVBfUkVTRVRfSFdfTUFTSywgMSkpO1xuIFxuK1x0ZGVhZGxpbmUgPSBqaWZmaWVzICsgbXNlY3NfdG9famlmZmllcyhSVEw4MzY1TUJfQ0hJUF9SRVNFVF9USU1FX01TKTtcbitcbiBcdC8qIFJlYWx0ZWsgZG9jdW1lbnRhdGlvbiBzYXlzIHRoZSBjaGlwIG5lZWRzIDEgc2Vjb25kIHRvIHJlc2V0LiBTbGVlcFxuIFx0ICogZm9yIDEwMCBtcyBiZWZvcmUgYWNjZXNzaW5nIGFueSByZWdpc3RlcnMgdG8gcHJldmVudCBBQ0sgdGltZW91dHMuXG4gXHQgKi9cbiBcdG1zbGVlcCgxMDApO1xuLVx0cmV0dXJuIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91dChwcml2LVx1MDAzZW1hcCwgUlRMODM2NU1CX0NISVBfUkVTRVRfUkVHLCB2YWwsXG4tXHRcdFx0XHRcdCEodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcbi1cdFx0XHRcdFx0MjAwMDAsIDFlNik7XG4rXHRyZXQgPSByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQocHJpdi1cdTAwM2VtYXAsIFJUTDgzNjVNQl9DSElQX1JFU0VUX1JFRywgdmFsLFxuK1x0XHRcdFx0ICAgICAgICEodmFsIFx1MDAyNiBSVEw4MzY1TUJfQ0hJUF9SRVNFVF9IV19NQVNLKSxcbitcdFx0XHRcdCAgICAgICAyMDAwMCwgMWU2KTtcbitcdGlmIChyZXQpXG4rXHRcdHJldHVybiByZXQ7XG4rXG4rXHQvKiBUaGUgYml0IGNsZWFyaW5nIG9ubHkgbWVhbnMgdGhlIHJlc2V0IHdhcyBhY2NlcHRlZCwgbm90IHRoYXQgdGhlXG4rXHQgKiBjaGlwIGlzIHJlYWR5OiByZWdpc3RlciB3cml0ZXMgaXNzdWVkIGJlZm9yZSB0aGUgZG9jdW1lbnRlZCByZXNldFxuK1x0ICogdGltZSBoYXMgZWxhcHNlZCBhcmUgc2lsZW50bHkgZHJvcHBlZCBieSBibG9ja3MgdGhhdCBhcmUgc3RpbGxcbitcdCAqIGNvbWluZyB1cCwgd2hpY2ggbGVhdmVzIHRoZSBzd2l0Y2ggaGFsZiBjb25maWd1cmVkLiBXYWl0IG91dFxuK1x0ICogd2hhdGV2ZXIgaXMgbGVmdCBvZiB0aGF0IHNlY29uZCwgbWVhc3VyZWQgZnJvbSB0aGUgcmVzZXQgd3JpdGUsIHNvXG4rXHQgKiB0aGUgcG9sbCBhYm92ZSBkb2VzIG5vdCBhZGQgdG8gdGhlIHRvdGFsLlxuK1x0ICovXG4rXHRyZW1haW5pbmcgPSBkZWFkbGluZSAtIGppZmZpZXM7XG4rXHRpZiAoKGxvbmcpcmVtYWluaW5nIFx1MDAzZSAwKVxuK1x0XHRtc2xlZXAoamlmZmllc190b19tc2VjcyhyZW1haW5pbmcpKTtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjoyNC4zNzQxMjEyNzlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0MDM2OTYwMzM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUmVhbHRlayBSVEw4MzY1TUIgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhbmFseXplIHRoaXMgbW9kaWZpY2F0aW9uIHRvIGBkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgIGZ1bmN0aW9uLiBGaXJzdCwgSSBuZWVkIHRvIHJlbWluZCBteXNlbGYgcHJlY2lzZWx5IHdoYXQgdGhlIGBydGw4MzY1bWJgIGRyaXZlciBlbnRhaWxzLiBJcyB0aGlzIGluZGVlZCBhIERpc3RyaWJ1dGVkIFN3aXRjaCBBcmNoaXRlY3R1cmUgKERTQSkgZHJpdmVyIHRhcmdldGluZyB0aG9zZSBSZWFsdGVrIFJUTDgzNjVNQiAvIFJUTDgzNjZSQiBldGhlcm5ldCBzd2l0Y2ggY2hpcHM/IEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBpdHMgcHVycG9zZSBhbmQgaW50ZW5kZWQgZW52aXJvbm1lbnQuXG5cbkknbGwgdGFrZSBhIGxvb2sgYXQgdGhlIGJyb2FkZXIgY29udGV4dCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL2AuIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXIncyBwcm9iaW5nIG1lY2hhbmlzbSBhbmQgdXNhZ2Ugd2l0aGluIHRoZSBrZXJuZWwncyBEU0EgZnJhbWV3b3JrLiBUaGUgY3JpdGljYWwgcXVlc3Rpb24gZm9yIG1lIGlzIHdoZXRoZXIgdGhpcyBkcml2ZXIgbmVjZXNzaXRhdGVzIHNwZWNpZmljIHBoeXNpY2FsIGhhcmR3YXJlIGZvciBvcGVyYXRpb24sIG9yIGlmIGl0J3MgcG90ZW50aWFsbHkgcmVhY2hhYmxlIGFuZCB0ZXN0YWJsZSB3aXRoaW4gc3RhbmRhcmQgZnV6emluZyBlbnZpcm9ubWVudHMgbGlrZSBzeXprYWxsZXIgb3IgUUVNVS4gVGhhdCB3aWxsIGluZm9ybSBob3cgYWdncmVzc2l2ZWx5IHRvIHB1cnN1ZSB0aGlzLlxuXG5UbyBnYWluIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgcXVpY2tseSwgSeKAmWxsIGxldmVyYWdlIGBncmVwcGVyYCBvciBgcmVhZC1maWxlYCB0byBlZmZpY2llbnRseSBkaXNzZWN0IHRoZSBkcml2ZXIgYW5kIGl0cyBpbnRlcmFjdGlvbnMuIFRoaXMgc2hvdWxkIHByb3ZpZGUgdGhlIG5lY2Vzc2FyeSBjb250ZXh0IHRvIGFzc2VzcyB0aGUgcGF0Y2gncyBpbXBhY3QgYW5kIHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1MjQsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjoyOC40MTEwODQ1NTRaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY5NzcyNjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMTY3NyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgKz0gcnRsODM2NW1iLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxOTpydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMDpcXHRcXHQgIHJ0bDgzNjVtYl90YWJsZS5vIFxcXFxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyMTpcXHRcXHQgIHJ0bDgzNjVtYl92bGFuLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIyOlxcdFxcdCAgcnRsODM2NW1iX2wyLm8gXFxcXFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjIzOiMgZW5kIG9mIHJ0bDgzNjVtYi1vYmpzXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg9MTkwPWV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjZyYl92YXJpYW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxOTE6ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NW1iX3ZhcmlhbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE5Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTEtLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyOi8qIEZvcndhcmRpbmcgYW5kIG11bHRpY2FzdCBkYXRhYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBydGw4MzY1bWIgc3dpdGNoIGZhbWlseVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6OTojaW5jbHVkZSBcXFwicnRsODM2NW1iX2wyLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTA6I2luY2x1ZGUgXFxcInJ0bDgzNjVtYl90YWJsZS5oXFxcIlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTkxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjkyOnN0cnVjdCBydGw4MzY1bWJfbDJfdWNfa2V5IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy05My1cXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy05OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMDA6c3RydWN0IHJ0bDgzNjVtYl9sMl91YyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTAxOlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWNfa2V5IGtleTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMDItXFx0dTggcG9ydDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxMTQ6c3RydWN0IHJ0bDgzNjVtYl9sMl9tY19rZXkge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTExNS1cXHR1OCBtYWNfYWRkcltFVEhfQUxFTl07XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMjItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTIzOnN0cnVjdCBydGw4MzY1bWJfbDJfbWMge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjEyNDpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jX2tleSBrZXk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTI1LVxcdHUxNiBtZW1iZXI7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xMzMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MTM0OnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9kYXRhX3RvX3VjKGNvbnN0IHUxNiAqZGF0YSwgc3RydWN0IHJ0bDgzNjVtYl9sMl91YyAqdWMpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMTM1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTE2My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoxNjQ6c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX3VjX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl91YyAqdWMsIHUxNiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0xNjUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjAyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjIwMzpzdGF0aWMgdm9pZCBydGw4MzY1bWJfbDJfZGF0YV90b19tYyhjb25zdCB1MTYgKmRhdGEsIHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgKm1jKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTIwNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yMzAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MjMxOnN0YXRpYyB2b2lkIHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfbDJfbWMgKm1jLCB1MTYgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjMyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI2MS0vKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI2MjogKiBydGw4MzY1bWJfbDJfZ2V0X25leHRfdWMoKSAtIGdldCB0aGUgbmV4dCBVbmljYXN0IEwyIGVudHJ5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjYzLSAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjgxLSAqKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzoyODI6aW50IHJ0bDgzNjVtYl9sMl9nZXRfbmV4dF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MTYgKmFkZHIsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI4My1cXHRcXHRcXHQgICAgIHN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSAqZW50cnkpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yODUtXFx0dTE2IGRhdGFbUlRMODM2NU1CX0wyX0VOVFJZX1NJWkVdID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjg2OlxcdHN0cnVjdCBydGw4MzY1bWJfbDJfdWMgdWM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjg3LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjg4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjI4OTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTI5MC1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1JFQUQsIGFkZHIsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0yOTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6Mjk2OlxcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX3VjKGRhdGEsIFxcdTAwMjZ1Yyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMjk3LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMwNTppbnQgcnRsODM2NW1iX2wyX2FkZF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zMDYtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzA5LVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjMxMDpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHVjID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzExLVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzI4LVxcdHVjLmFnZSA9IDE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzI5OlxcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFxcdTAwMjZ1YywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTMzMS1cXHQvKiBhZGQgdGhlIG5ldyBlbnRyeSBvciB1cGRhdGUgYW4gZXhpc3Rpbmcgb25lICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzMyOlxcdHJldCA9IHJ0bDgzNjVtYl90YWJsZV9xdWVyeShwcml2LCBSVEw4MzY1TUJfVEFCTEVfTDIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzMzLVxcdFxcdFxcdFxcdCAgICBSVEw4MzY1TUJfVEFCTEVfT1BfV1JJVEUsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzQ0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM0NTppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zNDYtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzQ5LVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM1MDpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX3VjIHVjID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzUxLVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYwLVxcdHVjLmFnZSA9IDA7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6MzYxOlxcdHJ0bDgzNjVtYl9sMl91Y190b19kYXRhKFxcdTAwMjZ1YywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzYyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtMzY3LVxcdCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjM2ODpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM2OS1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcXHUwMDI2YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTM4My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzozODQ6aW50IHJ0bDgzNjVtYl9sMl9mbHVzaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZClcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy0zODUte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ0OTppbnQgcnRsODM2NW1iX2wyX2FkZF9tYyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NTAtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDUzLVxcdHUxNiBkYXRhW1JUTDgzNjVNQl9MMl9FTlRSWV9TSVpFXSA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ1NDpcXHRzdHJ1Y3QgcnRsODM2NW1iX2wyX21jIG1jID0geyAwIH07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDU1LVxcdHUxNiBhZGRyO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY1LVxcdG1jLmlzX3N0YXRpYyA9IDE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDY2OlxcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFxcdTAwMjZtYywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDY3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ2OC1cXHQvKiBGaXJzdCBsb29rIGZvciBhbiBleGlzdGluZyBlbnRyeSAodG8gZ2V0IGV4aXN0aW5nIHBvcnQgbWVtYmVycykgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo0Njk6XFx0cmV0ID0gcnRsODM2NW1iX3RhYmxlX3F1ZXJ5KHByaXYsIFJUTDgzNjVNQl9UQUJMRV9MMixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy00NzAtXFx0XFx0XFx0XFx0ICAgIFJUTDgzNjVNQl9UQUJMRV9PUF9SRUFELCBcXHUwMDI2YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ3NC1cXHRcXHQvKiBUaGVyZSBpcyBhbHJlYWR5IGFuIGVudHJ5Li4uICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NDc1OlxcdFxcdHJ0bDgzNjVtYl9sMl9kYXRhX3RvX21jKGRhdGEsIFxcdTAwMjZtYyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDc2LVxcdFxcdGRldl9kYmcocHJpdi1cXHUwMDNlZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNDg5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjQ5MDpcXHRcXHRydGw4MzY1bWJfbDJfbWNfdG9fZGF0YShcXHUwMDI2bWMsIGRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTQ5MS1cXHR9IGVsc2UgaWYgKHJldCA9PSAtRU5PRU5UKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MDctXFx0LyogYWRkIHRoZSBuZXcgZW50cnkgb3IgdXBkYXRlIGFuIGV4aXN0aW5nIG9uZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUwODpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUwOS1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcXHUwMDI2YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUxOS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MjA6aW50IHJ0bDgzNjVtYl9sMl9kZWxfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTIxLVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyNC1cXHR1MTYgZGF0YVtSVEw4MzY1TUJfTDJfRU5UUllfU0laRV0gPSB7IDAgfTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MjU6XFx0c3RydWN0IHJ0bDgzNjVtYl9sMl9tYyBtYyA9IHsgMCB9O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUyNi1cXHR1MTYgYWRkcjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzMS1cXHRtYy5rZXkuaXZsID0gdHJ1ZTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYzo1MzI6XFx0cnRsODM2NW1iX2wyX21jX3RvX2RhdGEoXFx1MDAyNm1jLCBkYXRhKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYy01MzMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTM0LVxcdC8qIEZpcnN0IGxvb2sgZm9yIGFuIGV4aXN0aW5nIGVudHJ5ICh0byBnZXQgZXhpc3RpbmcgcG9ydCBtZW1iZXJzKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjUzNTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTUzNi1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1JFQUQsIFxcdTAwMjZhZGRyLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU1MDpcXHRydGw4MzY1bWJfbDJfZGF0YV90b19tYyhkYXRhLCBcXHUwMDI2bWMpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU1MS1cXHRkZXZfZGJnKHByaXYtXFx1MDAzZWRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU2Ny1cXHR9XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmM6NTY4OlxcdHJ0bDgzNjVtYl9sMl9tY190b19kYXRhKFxcdTAwMjZtYywgZGF0YSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmMtNTY5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU3MC1cXHQvKiB1cGRhdGUgdGhlIGV4aXN0aW5nIGVudHJ5LiAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jOjU3MTpcXHRyZXQgPSBydGw4MzY1bWJfdGFibGVfcXVlcnkocHJpdiwgUlRMODM2NU1CX1RBQkxFX0wyLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5jLTU3Mi1cXHRcXHRcXHRcXHQgICAgUlRMODM2NU1CX1RBQkxFX09QX1dSSVRFLCBcXHUwMDI2YWRkcixcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTEtLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyOi8qIEZvcndhcmRpbmcgYW5kIG11bHRpY2FzdCBkYXRhYmFzZSBpbnRlcmZhY2UgZm9yIHRoZSBydGw4MzY1bWIgc3dpdGNoIGZhbWlseVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTMtICpcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjE1OmludCBydGw4MzY1bWJfbDJfZ2V0X25leHRfdWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2ICphZGRyLCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0xNi1cXHRcXHRcXHQgICAgIHN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSAqZW50cnkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjE3OmludCBydGw4MzY1bWJfbDJfYWRkX3VjKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE4LVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTE5LVxcdFxcdFxcdHUxNiBlZmlkLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaDoyMDppbnQgcnRsODM2NW1iX2wyX2RlbF91YyhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yMS1cXHRcXHRcXHRjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbc3RhdGljIEVUSF9BTEVOXSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuaC0yMi1cXHRcXHRcXHR1MTYgZWZpZCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjM6aW50IHJ0bDgzNjVtYl9sMl9mbHVzaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmg6MjU6aW50IHJ0bDgzNjVtYl9sMl9hZGRfbWMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX2wyLmgtMjYtXFx0XFx0XFx0Y29uc3QgdW5zaWduZWQgY2hhciBtYWNfYWRkcltzdGF0aWMgRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI3LVxcdFxcdFxcdHUxNiB2aWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oOjI4OmludCBydGw4MzY1bWJfbDJfZGVsX21jKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9sMi5oLTI5LVxcdFxcdFxcdGNvbnN0IHVuc2lnbmVkIGNoYXIgbWFjX2FkZHJbc3RhdGljIEVUSF9BTEVOXSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQtICogcmVxdWlyZSB0aGUgcnRsODM2N2QgdmVuZG9yIGRyaXZlci4gV2l0aCBhbGwgdGhpcyB1bmNlcnRhaW50eSwgdGhlIGRyaXZlciBoYXNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1OiAqIGJlZW4gbW9kZXN0bHkgbmFtZWQgcnRsODM2NW1iLiBGdXR1cmUgaW1wbGVtZW50b3JzIG1heSB3aXNoIHRvIHJlbmFtZSB0aGluZ3NcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY2LSAqIGFjY29yZGluZ2x5Llxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDktI2luY2x1ZGUgXFxcInJ0bDgzeHguaFxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjExMDojaW5jbHVkZSBcXFwicnRsODM2NW1iX2wyLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE6I2luY2x1ZGUgXFxcInJ0bDgzNjVtYl92bGFuLmhcXFwiXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTI1OS0gKiAzLWJpdCBNU0IgZmllbGQgKENUUkwxKS4gVGhlIGNoaXAgcmVzZXRzIHRoZW0gdG8gMHgxRkZGRjsgc2VlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoyNjA6ICogcnRsODM2NW1iX3Nkc19yYWlzZV9yYXRlX2xpbWl0cygpLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMjYxLSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00MjctI2RlZmluZSAgIFJUTDgzNjVNQl9QT1JUX01JU0NfQ0ZHX01BQ19MT09QQkFDS19NQVNLXFx0XFx0MHgwMDQwXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0Mjg6LyogU2VlIFxcdTAwMjZydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDI5LSNkZWZpbmUgICBSVEw4MzY1TUJfUE9SVF9NSVNDX0NGR19WTEFOX0VHUkVTU19NT0RFX01BU0tcXHRcXHQweDAwMzBcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDMyLS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NDMzOiAqIGVudW0gcnRsODM2NW1iX3ZsYW5fZWdyZXNzX21vZGUgLSBwb3J0IFZMQU4gZWdyZXNzIG1vZGVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTQzNC0gKiBAUlRMODM2NU1CX1ZMQU5fRUdSRVNTX01PREVfT1JJR0lOQUw6IGZvbGxvdyB1bnRhZyBtYXNrIGluIFZMQU40ayB0YWJsZSBlbnRyeVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00NDItICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0NDM6ZW51bSBydGw4MzY1bWJfdmxhbl9lZ3Jlc3NfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00NDQtXFx0UlRMODM2NU1CX1ZMQU5fRUdSRVNTX01PREVfT1JJR0lOQUwgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy00ODYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo0ODc6ZW51bSBydGw4MzY1bWJfbWliX2NvdW50ZXJfaW5kZXgge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNDg4LVxcdFJUTDgzNjVNQl9NSUJfaWZJbk9jdGV0cyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTQ4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NTQ5OnN0cnVjdCBydGw4MzY1bWJfbWliX2NvdW50ZXIge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNTUwLVxcdHUzMiBvZmZzZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTU1Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjU1ODpzdGF0aWMgc3RydWN0IHJ0bDgzNjVtYl9taWJfY291bnRlciBydGw4MzY1bWJfbWliX2NvdW50ZXJzW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy01NTktXFx0UlRMODM2NU1CX01BS0VfTUlCX0NPVU5URVIoMCwgNCwgaWZJbk9jdGV0cyksXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYxOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYxOTpzdGF0aWNfYXNzZXJ0KEFSUkFZX1NJWkUocnRsODM2NW1iX21pYl9jb3VudGVycykgPT0gUlRMODM2NU1CX01JQl9FTkQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjIwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjIxOnN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MjItXFx0dTE2IHJlZztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjI2LS8qIExpZnRlZCBmcm9tIHRoZSB2ZW5kb3IgZHJpdmVyIHNvdXJjZXMgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjYyNzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9qYW1fdGJsX2VudHJ5IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmNbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTYyOC1cXHR7IDB4MTNFQiwgMHgxNUJCIH0sIHsgMHgxMzAzLCAweDA2RDYgfSwgeyAweDEzMDQsIDB4MDcwMCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2MzY6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfaW5pdF9qYW1fY29tbW9uW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02MzctXFx0eyAweDEyMDAsIDB4N0ZDQiB9LCB7IDB4MDg4NCwgMHgwMDAzIH0sIHsgMHgwNkVCLCAweDAwMDEgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjQ2LSAqIG9wdGlvbiwgd2hpY2ggaXMgd2hhdCBSVEw4MzY3UyBwYXJ0cyBzZWVuIHNvIGZhciByZXBvcnQuIFNlZVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjQ3OiAqIHJ0bDgzNjVtYl9zZHNfcHJvYmVfb3B0aW9uKCkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NDgtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo2NDk6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfamFtX3RibF9lbnRyeSBydGw4MzY1bWJfc2RzX2phbV9zZ21paVtdID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjUwLVxcdHsgMHgwNDgwLCAweDA0RDcgfSwgeyAweDA0ODEsIDB4Rjk5NCB9LCB7IDB4MDQ4MiwgMHgyNDIwIH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY1OC0gKiBvcHRpb24sIHdoaWNoIGlzIHdoYXQgUlRMODM2N1MgcGFydHMgc2VlbiBzbyBmYXIgcmVwb3J0LiBTZWVcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY1OTogKiBydGw4MzY1bWJfc2RzX3Byb2JlX29wdGlvbigpLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjYwLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjYxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgcnRsODM2NW1iX3Nkc19qYW1faHNnbWlpW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjItXFx0eyAweDA1MDAsIDB4ODJGMCB9LCB7IDB4MDUwMSwgMHhGMTk1IH0sIHsgMHgwNTAyLCAweDMxQTIgfSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNjY2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NjY3OmVudW0gcnRsODM2NW1iX3BoeV9pbnRlcmZhY2VfbW9kZSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02NjgtXFx0UlRMODM2NU1CX1BIWV9JTlRFUkZBQ0VfTU9ERV9JTlZBTCA9IDAsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY3OC0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY3OTogKiBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAtIGV4dGVybmFsIGludGVyZmFjZSBpbmZvXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODAtICogQHBvcnQ6IHRoZSBwb3J0IHdpdGggYW4gZXh0ZXJuYWwgaW50ZXJmYWNlXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4NC0gKiBSZXByZXNlbnRzIGEgbWFwcGluZzogcG9ydCAtXFx1MDAzZSB7IGlkLCBzdXBwb3J0ZWRfaW50ZXJmYWNlcyB9LiBUbyBiZSBlbWJlZGRlZFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Njg1OiAqIGluIFxcdTAwMjZzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyBmb3IgZXZlcnkgcG9ydCB3aXRoIGFuIGV4dGVybmFsIGludGVyZmFjZS5cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY4Ni0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY4NzpzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy02ODgtXFx0aW50IHBvcnQ7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5My0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjY5NDogKiBzdHJ1Y3QgcnRsODM2NW1iX2NoaXBfaW5mbyAtIHN0YXRpYyBjaGlwLXNwZWNpZmljIGluZm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTY5NS0gKiBAbmFtZTogaHVtYW4tcmVhZGFibGUgY2hpcCBuYW1lXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwMy0gKiBieSB0aGlzIGRyaXZlci4gV2hlbiBhZGRpbmcgc3VwcG9ydCBmb3IgYW5vdGhlciBjaGlwIGluIHRoZSBmYW1pbHksIGEgbmV3XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDQ6ICogY2hpcCBpbmZvIHNob3VsZCBiZSBhZGRlZCB0byB0aGUgcnRsODM2NW1iX2NoaXBfaW5mb3MgYXJyYXkuXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MDUtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MDY6c3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzA3LVxcdGNvbnN0IGNoYXIgKm5hbWU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcwOS1cXHR1MzIgY2hpcF92ZXI7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MTA6XFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgZXh0aW50c1tSVEw4MzY1TUJfTUFYX05VTV9FWFRJTlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcxMTpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgKmphbV90YWJsZTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxMi1cXHRzaXplX3QgamFtX3NpemU7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTcxNi0jZGVmaW5lIFBIWV9JTlRGKF9tb2RlKSAoUlRMODM2NU1CX1BIWV9JTlRFUkZBQ0VfTU9ERV8gIyMgX21vZGUpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3MTc6c3RhdGljIGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfY2hpcF9pbmZvIHJ0bDgzNjVtYl9jaGlwX2luZm9zW10gPSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MTgtXFx0e1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03MjUtXFx0XFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcyNjpcXHRcXHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjcyNzpcXHRcXHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzI4LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTczNy1cXHRcXHR9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzM4OlxcdFxcdC5qYW1fdGFibGUgPSBydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzM5OlxcdFxcdC5qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NDAtXFx0fSxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzUxLVxcdFxcdH0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NTI6XFx0XFx0LmphbV90YWJsZSA9IHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3NTM6XFx0XFx0LmphbV9zaXplID0gQVJSQVlfU0laRShydGw4MzY1bWJfaW5pdF9qYW1fODM2NW1iX3ZjKSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc1NC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NjQtXFx0XFx0fSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc2NTpcXHRcXHQuamFtX3RhYmxlID0gcnRsODM2NW1iX2luaXRfamFtXzgzNjVtYl92YyxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc2NjpcXHRcXHQuamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9pbml0X2phbV84MzY1bWJfdmMpLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzY3LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTc2OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjc3MDplbnVtIHJ0bDgzNjVtYl9zdHBfc3RhdGUge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzcxLVxcdFJUTDgzNjVNQl9TVFBfU1RBVEVfRElTQUJMRUQgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3Nzc6ZW51bSBydGw4MzY1bWJfY3B1X2luc2VydCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03NzgtXFx0UlRMODM2NU1CX0NQVV9JTlNFUlRfVE9fQUxMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzgyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzgzOmVudW0gcnRsODM2NW1iX2NwdV9wb3NpdGlvbiB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODQtXFx0UlRMODM2NU1CX0NQVV9QT1NfQUZURVJfU0EgPSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo3ODg6ZW51bSBydGw4MzY1bWJfY3B1X2Zvcm1hdCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03ODktXFx0UlRMODM2NU1CX0NQVV9GT1JNQVRfOEJZVEVTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzkyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6NzkzOmVudW0gcnRsODM2NW1iX2NwdV9yeGxlbiB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy03OTQtXFx0UlRMODM2NU1CX0NQVV9SWExFTl83MkJZVEVTID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtNzk4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Nzk5OiAqIHN0cnVjdCBydGw4MzY1bWJfY3B1IC0gQ1BVIHBvcnQgY29uZmlndXJhdGlvblxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODAwLSAqIEBlbmFibGU6IGVuYWJsZS9kaXNhYmxlIGhhcmR3YXJlIGluc2VydGlvbiBvZiBDUFUgdGFnIGluIHN3aXRjaC1cXHUwMDNlQ1BVIGZyYW1lc1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTAtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTE6c3RydWN0IHJ0bDgzNjVtYl9jcHUge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODEyLVxcdGJvb2wgZW5hYmxlO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MTQtXFx0dTMyIHRyYXBfcG9ydDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNTpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfaW5zZXJ0IGluc2VydDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxNjpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfcG9zaXRpb24gcG9zaXRpb247XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MTc6XFx0ZW51bSBydGw4MzY1bWJfY3B1X3J4bGVuIHJ4X2xlbmd0aDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgxODpcXHRlbnVtIHJ0bDgzNjVtYl9jcHVfZm9ybWF0IGZvcm1hdDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTgxOS19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjEtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4MjI6ICogc3RydWN0IHJ0bDgzNjVtYl9wb3J0IC0gcHJpdmF0ZSBwZXItcG9ydCBkYXRhXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjMtICogQHByaXY6IHBvaW50ZXIgdG8gcGFyZW50IHJlYWx0ZWtfcHJpdiBkYXRhXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjQtICogQGluZGV4OiBEU0EgcG9ydCBpbmRleCwgc2FtZSBhcyBkc2FfcG9ydDo6aW5kZXhcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNTogKiBAc3RhdHM6IGxpbmsgc3RhdGlzdGljcyBwb3B1bGF0ZWQgYnkgcnRsODM2NW1iX3N0YXRzX3BvbGwsIHJlYWR5IGZvciBhdG9taWNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjgyNjogKiAgICAgICAgIGFjY2VzcyB2aWEgcnRsODM2NW1iX2dldF9zdGF0czY0XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MjctICogQHN0YXRzX2xvY2s6IHByb3RlY3QgdGhlIHN0YXRzIHN0cnVjdHVyZSBkdXJpbmcgcmVhZC91cGRhdGVcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODI5LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODMwOnN0cnVjdCBydGw4MzY1bWJfcG9ydCB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04MzEtXFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODM4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODM5OiAqIHN0cnVjdCBydGw4MzY1bWIgLSBkcml2ZXIgcHJpdmF0ZSBkYXRhXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NDAtICogQHByaXY6IHBvaW50ZXIgdG8gcGFyZW50IHJlYWx0ZWtfcHJpdiBkYXRhXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1MS0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1MjpzdHJ1Y3QgcnRsODM2NW1iIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTg1My1cXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODU0LVxcdGludCBpcnE7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NTU6XFx0Y29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9jaGlwX2luZm8gKmNoaXBfaW5mbztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjg1NjpcXHRzdHJ1Y3QgcnRsODM2NW1iX2NwdSBjcHU7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTctXFx0c3RydWN0IG11dGV4IG1pYl9sb2NrO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODU4OlxcdHN0cnVjdCBydGw4MzY1bWJfcG9ydCBwb3J0c1tSVEw4MzY1TUJfTUFYX05VTV9QT1JUU107XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NTktXFx0c3RydWN0IHBoeWxpbmtfcGNzIHBjcztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODYyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODYzOiNkZWZpbmUgcGNzX3RvX3J0bDgzNjVtYihfcGNzKSBjb250YWluZXJfb2YoKF9wY3MpLCBzdHJ1Y3QgcnRsODM2NW1iLCBwY3MpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy04NjQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo4NjU6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODY2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODczLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6ODc0OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtODc1LVxcdFxcdFxcdFxcdCAgICAgdTMyIG9jcF9hZGRyKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MDMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5MDQ6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05MDUtXFx0XFx0XFx0XFx0ICB1MzIgb2NwX2FkZHIsIHUxNiAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTExLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTEyOlxcdHJldCA9IHJ0bDgzNjVtYl9waHlfcG9sbF9idXN5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTEzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkxNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkxNjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9wcmVwYXJlKHByaXYsIHBoeSwgb2NwX2FkZHIpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTE3LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkyOS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjkzMDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTkzMS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NDctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5NDg6c3RhdGljIGludCBydGw4MzY1bWJfcGh5X29jcF93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTQ5LVxcdFxcdFxcdFxcdCAgIHUzMiBvY3BfYWRkciwgdTE2IGRhdGEpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjk1NjpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X3BvbGxfYnVzeShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk1Ny1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NTktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5NjA6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3BfcHJlcGFyZShwcml2LCBwaHksIG9jcF9hZGRyKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTk2MS1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05NzktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzo5ODA6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9wb2xsX2J1c3kocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05ODEtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtOTg5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6OTkwOnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV9yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwaHksIGludCByZWdudW0pXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy05OTEte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDAzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTAwNDpcXHRyZXQgPSBydGw4MzY1bWJfcGh5X29jcF9yZWFkKHByaXYsIHBoeSwgb2NwX2FkZHIsIFxcdTAwMjZ2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAwNS1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDE4OnN0YXRpYyBpbnQgcnRsODM2NW1iX3BoeV93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAxOS1cXHRcXHRcXHQgICAgICAgdTE2IHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTAzMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwMzI6XFx0cmV0ID0gcnRsODM2NW1iX3BoeV9vY3Bfd3JpdGUocHJpdiwgcGh5LCBvY3BfYWRkciwgdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwMzMtXFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA0NjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9leHRpbnQgKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA0NzpydGw4MzY1bWJfZ2V0X3BvcnRfZXh0aW50KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA0OC17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDQ5OlxcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcHJpdi1cXHUwMDNlY2hpcF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1MC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUlRMODM2NU1CX01BWF9OVU1fRVhUSU5UUzsgaSsrKSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDUzOlxcdFxcdGNvbnN0IHN0cnVjdCBydGw4MzY1bWJfZXh0aW50ICpleHRpbnQgPVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA1NC1cXHRcXHRcXHRcXHUwMDI2bWItXFx1MDAzZWNoaXBfaW5mby1cXHUwMDNlZXh0aW50c1tpXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MTA2Nj1zdGF0aWMgZW51bSBkc2FfdGFnX3Byb3RvY29sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDY3OnJ0bDgzNjVtYl9nZXRfdGFnX3Byb3RvY29sKHN0cnVjdCBkc2Ffc3dpdGNoICpkcywgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMDY4LVxcdFxcdFxcdCAgIGVudW0gZHNhX3RhZ19wcm90b2NvbCBtcClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3MC1cXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZHMtXFx1MDAzZXByaXY7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDcxOlxcdHN0cnVjdCBydGw4MzY1bWJfY3B1ICpjcHU7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMDcyOlxcdHN0cnVjdCBydGw4MzY1bWIgKm1iO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA3My1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTA4Mi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODM6c3RhdGljIGludCBydGw4MzY1bWJfZXh0X2NvbmZpZ19yZ21paShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODQtXFx0XFx0XFx0XFx0ICAgICAgcGh5X2ludGVyZmFjZV90IGludGVyZmFjZSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODUte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTA4NjpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50ID1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEwODc6XFx0XFx0cnRsODM2NW1iX2dldF9wb3J0X2V4dGludChwcml2LCBwb3J0KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEwODgtXFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gXFx1MDAyNnByaXYtXFx1MDAzZWRzO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTE1LVxcdCAqIGZvcmNpbmcgdGhlIGV4dGVybmFsIGludGVyZmFjZSBpbnRvIGEgcGFydGljdWxhciBtb2RlLCB3aGljaCBpcyBkb25lXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTE2OlxcdCAqIGluIHRoZSBydGw4MzY1bWJfcGh5bGlua19tYWNfbGlua197dXAsZG93bn0gZnVuY3Rpb25zLlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTExNy1cXHQgKlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTY0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTE2NTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfd3JpdGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTE2IGFkZHIsIHUxNiBkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTE2Ni17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTExODUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMTg2OnN0YXRpYyBpbnQgcnRsODM2NW1iX3Nkc19yZWFkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiBhZGRyLCB1MTYgKmRhdGEpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMTg3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIyNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEyMjg6c3RhdGljIGludCBydGw4MzY1bWJfc2RzX3Byb2JlX29wdGlvbihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIyOS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjMwOlxcdHN0cnVjdCBydGw4MzY1bWIgKm1iID0gcHJpdi1cXHUwMDNlY2hpcF9kYXRhO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTIzMTpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2V4dGludCAqZXh0aW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTIzMi1cXHR1MzIgb3B0aW9uO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjczLSAqIHRoZWlyIG1heGltdW0gaW4gaXRzIHN3aXRjaCBpbml0LCB1bmNvbmRpdGlvbmFsbHkgZm9yIHRoZSB3aG9sZSBjaGlwXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMjc0OiAqIGZhbWlseS4gVGhlIGNoaXAgcmVzZXQgaW4gcnRsODM2NW1iX3NldHVwKCkgcHV0cyB0aGVtIGJhY2sgdG8gdGhlaXIgcmVzZXRcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyNzUtICogZGVmYXVsdCBvZiAweDFGRkZGLCBhIH4xLjA0OCBHYnBzIGxpbWl0IHdoaWNoIGNhcHMgdGhlIGFnZ3JlZ2F0ZVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMjgyLSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTI4MzpzdGF0aWMgaW50IHJ0bDgzNjVtYl9zZHNfcmFpc2VfcmF0ZV9saW1pdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEyODQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzA4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMwOTpzdGF0aWMgaW50IHJ0bDgzNjVtYl9wY3NfY29uZmlnKHN0cnVjdCBwaHlsaW5rX3BjcyAqcGNzLCB1bnNpZ25lZCBpbnQgbmVnX21vZGUsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzEwLVxcdFxcdFxcdFxcdHBoeV9pbnRlcmZhY2VfdCBpbnRlcmZhY2UsXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMTMte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMxNDpcXHRjb25zdCBzdHJ1Y3QgcnRsODM2NW1iX2phbV90YmxfZW50cnkgKnNkc19qYW07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzE1LVxcdGNvbnN0IGludCBpZCA9IFJUTDgzNjVNQl9TRFNfRVhUX0lOVEVSRkFDRV9JRDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMTY6XFx0c3RydWN0IHJ0bDgzNjVtYiAqbWIgPSBwY3NfdG9fcnRsODM2NW1iKHBjcyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzE3LVxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXY7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMjYtXFx0aWYgKGludGVyZmFjZSA9PSBQSFlfSU5URVJGQUNFX01PREVfMjUwMEJBU0VYKSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzI3OlxcdFxcdHNkc19qYW0gPSBydGw4MzY1bWJfc2RzX2phbV9oc2dtaWk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzoxMzI4OlxcdFxcdHNkc19qYW1fc2l6ZSA9IEFSUkFZX1NJWkUocnRsODM2NW1iX3Nkc19qYW1faHNnbWlpKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMjktXFx0XFx0bW9kZSA9IFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX0hTR01JSTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMzAtXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzMzE6XFx0XFx0c2RzX2phbSA9IHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTMzMjpcXHRcXHRzZHNfamFtX3NpemUgPSBBUlJBWV9TSVpFKHJ0bDgzNjVtYl9zZHNfamFtX3NnbWlpKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzMzMtXFx0XFx0bW9kZSA9IFJUTDgzNjVNQl9FWFRfUE9SVF9NT0RFX1NHTUlJO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0xMzYzLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBzZHNfamFtX3NpemU7IGkrKykge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MTM2NDpcXHRcXHRyZXQgPSBydGw4MzY1bWJfc2RzX3dyaXRlKHByaXYsIHNkc19qYW1baV0ucmVnLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM2NS1cXHRcXHRcXHRcXHRcXHQgIHNkc19qYW1baV0udmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMTM5MC1cXHQgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjEzOTE6XFx0cmV0ID0gcnRsODM2NW1iX3Nkc193cml0ZShwcml2LCBSVEw4MzY1TUJfU0RTX1JFR19SRVNFVCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTEzOTItXFx0XFx0XFx0XFx0ICBSVEw4MzY1TUJfU0RTX1JFU0VUX0RFQVNTRVJUKTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjoyOC40NTgwNzEwNTlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzA5ODY4OTUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgcnRsODM2NW1iYCBwcm9iZSBwcm9jZXNzLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHBpbnBvaW50IGhvdyB0aGlzIHNwZWNpZmljIGRyaXZlciBpcyByZWdpc3RlcmVkIHdpdGhpbiB0aGUgc3lzdGVtLiBUbyBkbyB0aGF0IGVmZmljaWVudGx5LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGVyZSB0aGUgY3JpdGljYWwgcmVnaXN0cmF0aW9uIHBvaW50cyBhcmUsIHNvIEknbGwgc3RhcnQgYnkgZm9jdXNpbmcgbXkgc2VhcmNoIG9uIHRoZSBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvYCBkaXJlY3RvcnkuXG5cbkknbGwgYmUgdXNpbmcgYGdyZXBgIHRvIGZpbmQgaW5zdGFuY2VzIG9mIGBydGw4MzY1bWJfdmFyaWFudGAuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB3aGVyZSB0aGUgdmFyaWFudC1zcGVjaWZpYyBjb2RlIGxpdmVzLCBhbmQgaG9wZWZ1bGx5LCBJJ2xsIGJlIGFibGUgdG8gdHJhY2UgYmFjayBmcm9tIHRoZXJlIHRvIHRoZSBwcm9iZSBmdW5jdGlvbiBpdHNlbGYuIEknbSBleHBlY3RpbmcgdGhpcyBgcnRsODM2NW1iX3ZhcmlhbnRgIHRvIGJlIGEga2V5IGVsZW1lbnQgZm9yIGlkZW50aWZ5aW5nIHRoZSBoYXJkd2FyZSBhbmQgaW5zdGFudGlhdGluZyB0aGUgY29ycmVjdCBkcml2ZXIuIEZyb20gdGhlcmUsIEkgY2FuIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIG1vZHVsZSBhbmQgdGhlIHByb2JlIGFyZSByZWdpc3RlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTg5MywiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjMwLjc2Nzk0MjE0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyODAzMDcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0bDgzNjVtYl92YXJpYW50XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xOTA9ZXh0ZXJuIGNvbnN0IHN0cnVjdCByZWFsdGVrX3ZhcmlhbnQgcnRsODM2NnJiX3ZhcmlhbnQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5MTpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTkyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzQxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgcnRsODM2NW1iX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM1OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNjA6Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudCA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNjEtXFx0LmRzX29wcyA9IFxcdTAwMjZydGw4MzY1bWJfc3dpdGNoX29wcyxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM3MD1zdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY1bWJfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNzE6XFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZWFsdGVrLHJ0bDgzNjVtYlxcXCIsIC5kYXRhID0gXFx1MDAyNnJ0bDgzNjVtYl92YXJpYW50LCB9LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM3Mi1cXHR7IC8qIHNlbnRpbmVsICovIH0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjMwLjgyMDc1MTA2MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjI3NjQ0MzA0MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgUlRMODM2NU1CIERyaXZlciBVc2FnZSBhbmQgUHJvYmluZyoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhpcy4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBkaWcgaW50byB0aGUga2VybmVsIHNvdXJjZSBhbmQgaWRlbnRpZnkgcHJlY2lzZWx5IHdoaWNoIGRyaXZlcnMgYXJlIGxldmVyYWdpbmcgdGhlIGBydGw4MzY1bWJfdmFyaWFudGAgZW51bWVyYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgYHJ0bDgzNjVtYmAgYmFzZSBhbmQgaXRzIHNwZWNpZmljIHZhcmlhbnRzLiBLbm93aW5nIHRoZSB2YXJpYW50cyB3aWxsIGdpdmUgbWUgaW5zaWdodHMgaW50byBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMgb3IgY29uZmlndXJhdGlvbnMuXG5cblRoZW4sIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBwcm9iaW5nIG1lY2hhbmlzbS4gSG93IGRvZXMgdGhlIHN5c3RlbSAqZmluZCogYW5kIGlkZW50aWZ5IHRoaXMgY2hpcD8gSSB3YW50IHRvIHRyYWNlIHRoZSBkZXZpY2UgaW5pdGlhbGl6YXRpb24uIElzIGl0IGEgc3RhbmRhcmQgUENJL1NQSS9JMkMgZW51bWVyYXRpb24sIG9yIGlzIHRoZXJlIHNvbWV0aGluZyBtb3JlIGN1c3RvbSBnb2luZyBvbj8gVW5kZXJzdGFuZGluZyB0aGUgcHJvYmUgZmxvdyB3aWxsIGJlIGNyaXRpY2FsIHRvIGFueSBkZWJ1Z2dpbmcgb3IgY3VzdG9taXphdGlvbiBJIG1pZ2h0IG5lZWQgdG8gZG8uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXRlY3Rpb24gcHJvY2VzcyAtIHRoZSBjaGVja3MsIHRoZSByZWdpc3RlcnMgZXhhbWluZWQsIHRoZSBmYWxsYmFjayBpZiB0aGUgZGV2aWNlIGlzbid0IGltbWVkaWF0ZWx5IGlkZW50aWZpZWQuIEknbGwgbmVlZCB0byBsb29rIGZvciBhbnkgcXVpcmtzIG9yIHNwZWNpZmljIGZsYWdzIHRoYXQgbWlnaHQgaW5mbHVlbmNlIGhvdyB0aGUgY2hpcCBpcyBoYW5kbGVkLiBIb3BlZnVsbHksIHRoZSBjb21tZW50cyBhcmUgc3VmZmljaWVudCwgYnV0IEknbSBwcmVwYXJlZCB0byBmb2xsb3cgdGhlIGV4ZWN1dGlvbiBmbG93IG1ldGljdWxvdXNseS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA1NjUsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjozMy41ODUxODM4NjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTExNzYzNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiTU9EVUxFX0RFVklDRV9UQUJMRXxyZWFsdGVrX1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDE1NjYgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX05FVF9EU0FfUkVBTFRFSylcXHRcXHQrPSByZWFsdGVrX2RzYS5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MzpyZWFsdGVrX2RzYS1vYmpzXFx0XFx0XFx0Oj0gcnRsODN4eC5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtNC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT01PWlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlOjY6cmVhbHRla19kc2Etb2JqcyArPSByZWFsdGVrLW1kaW8ub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTctZW5kaWZcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlPTk9aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMDpyZWFsdGVrX2RzYS1vYmpzICs9IHJlYWx0ZWstc21pLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMS1lbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNDMtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6NDQ6c3RhdGljIGludCByZWFsdGVrX21kaW9fd3JpdGUodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQ1LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo0NjpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTQ3LVxcdHN0cnVjdCBtaWlfYnVzICpidXMgPSBwcml2LVxcdTAwM2VidXM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy03MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzo3MjpzdGF0aWMgaW50IHJlYWx0ZWtfbWRpb19yZWFkKHZvaWQgKmN0eCwgdTMyIHJlZywgdTMyICp2YWwpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzMte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjc0OlxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBjdHg7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtNzUtXFx0c3RydWN0IG1paV9idXMgKmJ1cyA9IHByaXYtXFx1MDAzZWJ1cztcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEwMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDQ6c3RhdGljIGNvbnN0IHN0cnVjdCByZWFsdGVrX2ludGVyZmFjZV9pbmZvIHJlYWx0ZWtfbWRpb19pbmZvID0ge1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEwNTpcXHQucmVnX3JlYWQgPSByZWFsdGVrX21kaW9fcmVhZCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMDY6XFx0LnJlZ193cml0ZSA9IHJlYWx0ZWtfbWRpb193cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMDctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEwOS0vKipcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMTA6ICogcmVhbHRla19tZGlvX3Byb2JlKCkgLSBQcm9iZSBhIHBsYXRmb3JtIGRldmljZSBmb3IgYW4gTURJTy1jb25uZWN0ZWQgc3dpdGNoXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTExLSAqIEBtZGlvZGV2OiBtZGlvX2RldmljZSB0byBwcm9iZSBvbi5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEyMC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjE6aW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTIyLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNm1kaW9kZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxMjQ6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjUtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTI3OlxcdHByaXYgPSBydGw4M3h4X3Byb2JlKGRldiwgXFx1MDAyNnJlYWx0ZWtfbWRpb19pbmZvKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xMjgtXFx0aWYgKElTX0VSUihwcml2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTEzMi1cXHRwcml2LVxcdTAwM2VtZGlvX2FkZHIgPSBtZGlvZGV2LVxcdTAwM2VhZGRyO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjEzMzpcXHRwcml2LVxcdTAwM2V3cml0ZV9yZWdfbm9hY2sgPSByZWFsdGVrX21kaW9fd3JpdGU7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTQyLX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNDM6RVhQT1JUX1NZTUJPTF9OU19HUEwocmVhbHRla19tZGlvX3Byb2JlLCBcXFwiUkVBTFRFS19EU0FcXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTQ1LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE0NjogKiByZWFsdGVrX21kaW9fcmVtb3ZlKCkgLSBSZW1vdmUgdGhlIGRyaXZlciBvZiBhbiBNRElPLWNvbm5lY3RlZCBzd2l0Y2hcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNDctICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHRvIGJlIHJlbW92ZWQuXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTQtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTU1OnZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTU2LXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYzoxNTc6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRldl9nZXRfZHJ2ZGF0YShcXHUwMDI2bWRpb2Rldi1cXHUwMDNlZGV2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNTgtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjUtfVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE2NjpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX21kaW9fcmVtb3ZlLCBcXFwiUkVBTFRFS19EU0FcXFwiKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNjctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmMtMTY4LS8qKlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE2OTogKiByZWFsdGVrX21kaW9fc2h1dGRvd24oKSAtIFNodXRkb3duIHRoZSBkcml2ZXIgb2YgYSBNRElPLWNvbm5lY3RlZCBzd2l0Y2hcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzAtICogQG1kaW9kZXY6IG1kaW9fZGV2aWNlIHNodXR0aW5nIGRvd24uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzctICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTc4OnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uYy0xNzkte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jOjE4MDpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gZGV2X2dldF9kcnZkYXRhKFxcdTAwMjZtZGlvZGV2LVxcdTAwM2VkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE4MS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5jLTE4Ni19XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmM6MTg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfbWRpb19zaHV0ZG93biwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC03LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX2RyaXZlcl9yZWdpc3RlcihzdHJ1Y3QgbWRpb19kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC05LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTEyLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjEzOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTQte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMTctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MTg6aW50IHJlYWx0ZWtfbWRpb19wcm9iZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjE5OnZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjIwOnZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0yMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDoyNDpzdGF0aWMgaW5saW5lIGludCByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBtZGlvX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTI4LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjI5OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX21kaW9fZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IG1kaW9fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzItXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MzM6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19tZGlvX3Byb2JlKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC0zNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaDozODpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX3JlbW92ZShzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NDI6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfbWRpb19zaHV0ZG93bihzdHJ1Y3QgbWRpb19kZXZpY2UgKm1kaW9kZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00Ni1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjQ3OnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9jbGtfZGVsYXkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTQ4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo1MjpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9zdGFydChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNTMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy01OC1cXHRncGlvZF9kaXJlY3Rpb25fb3V0cHV0KHByaXYtXFx1MDAzZW1kaW8sIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NTk6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTYyLVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NjM6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjQtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo2NTpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy02Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNjgtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo2OTpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03MC1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3MTpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03Mi1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAwKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjczOlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTc0LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGlvLCAxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNzYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3NzpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9zdG9wKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy03OC17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo3OTpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04MC1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04MS1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjgyOlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTgzLVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGlvLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjg0OlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTg1LVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6ODY6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtODctXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo4ODpcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy04OS1cXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtOTEtXFx0LyogQWRkIGEgY2xpY2sgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjkyOlxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTkzLVxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDApO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6OTQ6XFx0cmVhbHRla19zbWlfY2xrX2RlbGF5KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtOTUtXFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwMjpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV93cml0ZV9iaXRzKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBkYXRhLCB1MzIgbGVuKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTAzLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwNC1cXHRmb3IgKDsgbGVuIFxcdTAwM2UgMDsgbGVuLS0pIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwNTpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMDYtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEwOC1cXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbywgISEoZGF0YSBcXHUwMDI2ICgxIFxcdTAwM2NcXHUwMDNjIChsZW4gLSAxKSkpKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEwOTpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTExMi1cXHRcXHRncGlvZF9zZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRjLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExMzpcXHRcXHRyZWFsdGVrX3NtaV9jbGtfZGVsYXkocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0xMTQtXFx0XFx0Z3Bpb2Rfc2V0X3ZhbHVlKHByaXYtXFx1MDAzZW1kYywgMCk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTExNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjExODpzdGF0aWMgdm9pZCByZWFsdGVrX3NtaV9yZWFkX2JpdHMoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGxlbiwgdTMyICpkYXRhKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTE5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTI1OlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEyNi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTI4LVxcdFxcdGdwaW9kX3NldF92YWx1ZShwcml2LVxcdTAwM2VtZGMsIDEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTI5OlxcdFxcdHJlYWx0ZWtfc21pX2Nsa19kZWxheShwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEzMC1cXHRcXHR1ID0gISFncGlvZF9nZXRfdmFsdWUocHJpdi1cXHUwMDNlbWRpbyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTEzOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjEzOTpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dhaXRfZm9yX2FjayhzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTQ2LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTQ3OlxcdFxcdHJlYWx0ZWtfc21pX3JlYWRfYml0cyhwcml2LCAxLCBcXHUwMDI2YWNrKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE0OC1cXHRcXHRpZiAoYWNrID09IDApXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE1OS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MDpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2MS17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjI6XFx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCBkYXRhLCA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2MzpcXHRyZXR1cm4gcmVhbHRla19zbWlfd2FpdF9mb3JfYWNrKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTY0LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE2NjpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGVfbm9hY2soc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTggZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2Ny17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxNjg6XFx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCBkYXRhLCA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE2OS1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTcxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTcyOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9ieXRlMChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3My17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE3Ni1cXHQvKiBSZWFkIGRhdGEgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE3NzpcXHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgOCwgXFx1MDAyNnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTc4LVxcdCpkYXRhID0gKHQgXFx1MDAyNiAweGZmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTgwLVxcdC8qIFNlbmQgYW4gQUNLICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxODE6XFx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCAweDAwLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE4Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTg1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MTg2OnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9ieXRlMShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1OCAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE4Ny17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5MC1cXHQvKiBSZWFkIGRhdGEgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjE5MTpcXHRyZWFsdGVrX3NtaV9yZWFkX2JpdHMocHJpdiwgOCwgXFx1MDAyNnQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTkyLVxcdCpkYXRhID0gKHQgXFx1MDAyNiAweGZmKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTk0LVxcdC8qIFNlbmQgYW4gQUNLICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoxOTU6XFx0cmVhbHRla19zbWlfd3JpdGVfYml0cyhwcml2LCAweDAxLCAxKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTE5Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMTk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjAwOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfcmVhZF9yZWcoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGFkZHIsIHUzMiAqZGF0YSlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIwMS17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIwOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIwOTpcXHRyZWFsdGVrX3NtaV9zdGFydChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxMS1cXHQvKiBTZW5kIFJFQUQgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjEyOlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgcHJpdi1cXHUwMDNldmFyaWFudC1cXHUwMDNlY21kX3JlYWQpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjEzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIxNi1cXHQvKiBTZXQgQUREUls3OjBdICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMTc6XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFxcdTAwMjYgMHhmZik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMTgtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjIxLVxcdC8qIFNldCBBRERSWzE1OjhdICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyMjI6XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBhZGRyIFxcdTAwM2VcXHUwMDNlIDgpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjIzLVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyNi1cXHQvKiBSZWFkIERBVEFbNzowXSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjI3OlxcdHJlYWx0ZWtfc21pX3JlYWRfYnl0ZTAocHJpdiwgXFx1MDAyNmxvKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIyOC1cXHQvKiBSZWFkIERBVEFbMTU6OF0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjIyOTpcXHRyZWFsdGVrX3NtaV9yZWFkX2J5dGUxKHByaXYsIFxcdTAwMjZoaSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzAtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTIzNS0gb3V0OlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjM2OlxcdHJlYWx0ZWtfc21pX3N0b3AocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yMzctXFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2cHJpdi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNDEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNDI6c3RhdGljIGludCByZWFsdGVrX3NtaV93cml0ZV9yZWcoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI0My1cXHRcXHRcXHRcXHQgdTMyIGFkZHIsIHUzMiBkYXRhLCBib29sIGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjQ5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjUwOlxcdHJlYWx0ZWtfc21pX3N0YXJ0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjUxLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjUyLVxcdC8qIFNlbmQgV1JJVEUgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjUzOlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgcHJpdi1cXHUwMDNldmFyaWFudC1cXHUwMDNlY21kX3dyaXRlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI1NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNTctXFx0LyogU2V0IEFERFJbNzowXSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjU4OlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcXHUwMDI2IDB4ZmYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjU5LVxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2Mi1cXHQvKiBTZXQgQUREUlsxNTo4XSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MjYzOlxcdHJldCA9IHJlYWx0ZWtfc21pX3dyaXRlX2J5dGUocHJpdiwgYWRkciBcXHUwMDNlXFx1MDAzZSA4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI2NC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjctXFx0LyogV3JpdGUgREFUQVs3OjBdICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNjg6XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFxcdTAwMjYgMHhmZik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNjktXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjczLVxcdGlmIChhY2spXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyNzQ6XFx0XFx0cmV0ID0gcmVhbHRla19zbWlfd3JpdGVfYnl0ZShwcml2LCBkYXRhIFxcdTAwM2VcXHUwMDNlIDgpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjc1LVxcdGVsc2VcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI3NjpcXHRcXHRyZXQgPSByZWFsdGVrX3NtaV93cml0ZV9ieXRlX25vYWNrKHByaXYsIGRhdGEgXFx1MDAzZVxcdTAwM2UgOCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yNzctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjgyLSBvdXQ6XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzoyODM6XFx0cmVhbHRla19zbWlfc3RvcChwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI4NC1cXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZwcml2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTI5Mi0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjI5MzpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3dyaXRlX3JlZ19ub2Fjayh2b2lkICpjdHgsIHUzMiByZWcsIHUzMiB2YWwpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0yOTQte1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mjk1OlxcdHJldHVybiByZWFsdGVrX3NtaV93cml0ZV9yZWcoY3R4LCByZWcsIHZhbCwgZmFsc2UpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk2LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMjk5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzAwOnN0YXRpYyBpbnQgcmVhbHRla19zbWlfd3JpdGUodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAxLXtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwMjpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzAzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzA0OlxcdHJldHVybiByZWFsdGVrX3NtaV93cml0ZV9yZWcocHJpdiwgcmVnLCB2YWwsIHRydWUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzA1LX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwNi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMwNzpzdGF0aWMgaW50IHJlYWx0ZWtfc21pX3JlYWQodm9pZCAqY3R4LCB1MzIgcmVnLCB1MzIgKnZhbClcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMwOC17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMDk6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxMTpcXHRyZXR1cm4gcmVhbHRla19zbWlfcmVhZF9yZWcocHJpdiwgcmVnLCB2YWwpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzEyLX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxMy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNDpzdGF0aWMgY29uc3Qgc3RydWN0IHJlYWx0ZWtfaW50ZXJmYWNlX2luZm8gcmVhbHRla19zbWlfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMxNTpcXHQucmVnX3JlYWQgPSByZWFsdGVrX3NtaV9yZWFkLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzE2OlxcdC5yZWdfd3JpdGUgPSByZWFsdGVrX3NtaV93cml0ZSxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMxNy19O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMTktLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMjA6ICogcmVhbHRla19zbWlfcHJvYmUoKSAtIFByb2JlIGEgcGxhdGZvcm0gZGV2aWNlIGZvciBhbiBTTUktY29ubmVjdGVkIHN3aXRjaFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzIxLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2UgdG8gcHJvYmUgb24uXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMC0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMzMTppbnQgcmVhbHRla19zbWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTMzMi17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzMtXFx0c3RydWN0IGRldmljZSAqZGV2ID0gXFx1MDAyNnBkZXYtXFx1MDAzZWRldjtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjMzNDpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzM1LVxcdGludCByZXQ7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzYtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozMzc6XFx0cHJpdiA9IHJ0bDgzeHhfcHJvYmUoZGV2LCBcXHUwMDI2cmVhbHRla19zbWlfaW5mbyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zMzgtXFx0aWYgKElTX0VSUihwcml2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzUzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6MzU0OlxcdHByaXYtXFx1MDAzZXdyaXRlX3JlZ19ub2FjayA9IHJlYWx0ZWtfc21pX3dyaXRlX3JlZ19ub2FjaztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzYzLX1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jOjM2NDpFWFBPUlRfU1lNQk9MX05TX0dQTChyZWFsdGVrX3NtaV9wcm9iZSwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjYtLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNjc6ICogcmVhbHRla19zbWlfcmVtb3ZlKCkgLSBSZW1vdmUgdGhlIGRyaXZlciBvZiBhIFNNSS1jb25uZWN0ZWQgc3dpdGNoXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNjgtICogQHBkZXY6IHBsYXRmb3JtX2RldmljZSB0byBiZSByZW1vdmVkLlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zNzUtICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNzY6dm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTM3Ny17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozNzg6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzc5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODYtfVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzg3OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfc21pX3JlbW92ZSwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy0zODktLyoqXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzozOTA6ICogcmVhbHRla19zbWlfc2h1dGRvd24oKSAtIFNodXRkb3duIHRoZSBkcml2ZXIgb2YgYSBTTUktY29ubmVjdGVkIHN3aXRjaFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzkxLSAqIEBwZGV2OiBwbGF0Zm9ybV9kZXZpY2Ugc2h1dHRpbmcgZG93bi5cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtMzk4LSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6Mzk5OnZvaWQgcmVhbHRla19zbWlfc2h1dGRvd24oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5jLTQwMC17XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYzo0MDE6XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmMtNDAyLVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuYy00MDctfVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmM6NDA4OkVYUE9SVF9TWU1CT0xfTlNfR1BMKHJlYWx0ZWtfc21pX3NodXRkb3duLCBcXFwiUkVBTFRFS19EU0FcXFwiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNy1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjg6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjEzOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyICpkcnYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0xNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTg6aW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MTk6dm9pZCByZWFsdGVrX3NtaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyMDp2b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTIzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6MjQ6c3RhdGljIGlubGluZSBpbnQgcmVhbHRla19zbWlfZHJpdmVyX3JlZ2lzdGVyKHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgKmRydilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTI1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjgtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyOTpzdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoc3RydWN0IHBsYXRmb3JtX2RyaXZlciAqZHJ2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzAte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjMzOnN0YXRpYyBpbmxpbmUgaW50IHJlYWx0ZWtfc21pX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC0zNC17XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oLTM3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmg6Mzg6c3RhdGljIGlubGluZSB2b2lkIHJlYWx0ZWtfc21pX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMzkte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00MS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQyOnN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDMte1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTIwPXN0cnVjdCBwaHlsaW5rX21hY19vcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjIxOnN0cnVjdCByZWFsdGVrX29wcztcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMjItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg9NDE9c3RydWN0IHJ0bDgzNjZfdmxhbl80ayB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtNDctXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjQ4OnN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTQ5LVxcdHU4IG1hY19hZGRyW0VUSF9BTEVOXTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC01My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6NTQ6c3RydWN0IHJlYWx0ZWtfcHJpdiB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTU1LVxcdHN0cnVjdCBkZXZpY2VcXHRcXHQqZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTgwLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDo4MTpcXHRjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50ICp2YXJpYW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC04Mi1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC05My1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6OTQ6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTk1LVxcdGludFxcdFxcdFxcdCgqd3JpdGVfcmVnX25vYWNrKSh2b2lkICpjdHgsIHUzMiBhZGRyLCB1MzIgZGF0YSk7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTA0LS8qXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwNTogKiBzdHJ1Y3QgcmVhbHRla19vcHMgLSB2dGFibGUgZm9yIHRoZSBwZXItU01JLWNoaXB0eXBlIG9wZXJhdGlvbnNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTA2LSAqIEBkZXRlY3Q6IGRldGVjdHMgdGhlIGNoaXB0eXBlXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEwNy0gKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTA4OnN0cnVjdCByZWFsdGVrX29wcyB7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEwOTpcXHRpbnRcXHQoKmRldGVjdCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExMDpcXHRpbnRcXHQoKnJlc2V0X2NoaXApKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTE6XFx0aW50XFx0KCpzZXR1cCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjExMjpcXHRpbnRcXHQoKmdldF9taWJfY291bnRlcikoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTEzLVxcdFxcdFxcdFxcdCAgIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExNS1cXHRcXHRcXHRcXHQgICB1NjQgKm1pYnZhbHVlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTE2OlxcdGludFxcdCgqZ2V0X3ZsYW5fbWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUzMiBpbmRleCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTE3LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgcnRsODM2Nl92bGFuX21jICp2bGFubWMpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMTg6XFx0aW50XFx0KCpzZXRfdmxhbl9tYykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgdTMyIGluZGV4LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMTktXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydGw4MzY2X3ZsYW5fbWMgKnZsYW5tYyk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyMDpcXHRpbnRcXHQoKmdldF92bGFuXzRrKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1MzIgdmlkLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMjEtXFx0XFx0XFx0ICAgICAgIHN0cnVjdCBydGw4MzY2X3ZsYW5fNGsgKnZsYW40ayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyMjpcXHRpbnRcXHQoKnNldF92bGFuXzRrKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xMjMtXFx0XFx0XFx0ICAgICAgIGNvbnN0IHN0cnVjdCBydGw4MzY2X3ZsYW5fNGsgKnZsYW40ayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEyNDpcXHRpbnRcXHQoKmdldF9tY19pbmRleCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGludCAqdmFsKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI1OlxcdGludFxcdCgqc2V0X21jX2luZGV4KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgaW50IGluZGV4KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI2OlxcdGJvb2xcXHQoKmlzX3ZsYW5fdmFsaWQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHVuc2lnbmVkIGludCB2bGFuKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI3OlxcdGludFxcdCgqZW5hYmxlX3ZsYW4pKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTI4OlxcdGludFxcdCgqZW5hYmxlX3ZsYW40aykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMjk6XFx0aW50XFx0KCplbmFibGVfcG9ydCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTMwOlxcdGludFxcdCgqcG9ydF9hZGRfaXNvbGF0aW9uKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTMxLVxcdFxcdFxcdFxcdCAgICAgIHUzMiBtYXNrKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTMyOlxcdGludFxcdCgqcG9ydF9yZW1vdmVfaXNvbGF0aW9uKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTMzLVxcdFxcdFxcdFxcdFxcdCB1MzIgbWFzayk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNDpcXHRpbnRcXHQoKnBvcnRfc2V0X2VmaWQpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LCB1MzIgZWZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzNTpcXHRpbnRcXHQoKnBvcnRfc2V0X2xlYXJuaW5nKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTM2LVxcdFxcdFxcdFxcdCAgICAgYm9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxMzc6XFx0aW50XFx0KCpwb3J0X3NldF91Y2FzdF9mbG9vZCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTEzOC1cXHRcXHRcXHRcXHRcXHRib29sIGVuYWJsZSk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjEzOTpcXHRpbnRcXHQoKnBvcnRfc2V0X21jYXN0X2Zsb29kKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTQwLVxcdFxcdFxcdFxcdFxcdGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQxOlxcdGludFxcdCgqcG9ydF9zZXRfYmNhc3RfZmxvb2QpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDItXFx0XFx0XFx0XFx0XFx0Ym9vbCBlbmFibGUpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNDM6XFx0aW50XFx0KCpsMl9hZGRfdWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDQtXFx0XFx0XFx0ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbRVRIX0FMRU5dLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNDUtXFx0XFx0XFx0ICAgICB1MTYgZWZpZCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE0NjpcXHRpbnRcXHQoKmwyX2RlbF91Yykoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiwgaW50IHBvcnQsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0Ny1cXHRcXHRcXHQgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgYWRkcltFVEhfQUxFTl0sXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE0OC1cXHRcXHRcXHQgICAgIHUxNiBlZmlkLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTQ5OlxcdGludFxcdCgqbDJfZ2V0X25leHRfdWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIHUxNiAqYWRkcixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUwOlxcdFxcdFxcdFxcdCAgaW50IHBvcnQsIHN0cnVjdCByZWFsdGVrX2ZkYl9lbnRyeSAqZW50cnkpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNTE6XFx0aW50XFx0KCpsMl9hZGRfbWMpKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBwb3J0LFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNTItXFx0XFx0XFx0ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGFkZHJbRVRIX0FMRU5dLCB1MTYgdmlkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTUzOlxcdGludFxcdCgqbDJfZGVsX21jKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTU0LVxcdFxcdFxcdCAgICAgY29uc3QgdW5zaWduZWQgY2hhciBhZGRyW0VUSF9BTEVOXSwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1NTpcXHRpbnRcXHQoKmwyX2ZsdXNoKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcG9ydCwgdTE2IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE1NjpcXHRpbnRcXHQoKnBoeV9yZWFkKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTU3OlxcdGludFxcdCgqcGh5X3dyaXRlKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNTgtXFx0XFx0XFx0ICAgICB1MTYgdmFsKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xNjAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE2MTpzdHJ1Y3QgcmVhbHRla192YXJpYW50IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTYyLVxcdGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyAqZHNfb3BzO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaDoxNjM6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfb3BzICpvcHM7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE2NC1cXHRjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzICpwaHlsaW5rX21hY19vcHM7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTcxLS8qIFJUTDgzNjYgbGlicmFyeSBoZWxwZXJzICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3MjppbnQgcnRsODM2Nl9tY19pc191c2VkKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCBtY19pbmRleCwgaW50ICp1c2VkKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTczOmludCBydGw4MzY2X3NldF92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGludCB2aWQsIHUzMiBtZW1iZXIsXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE3NC1cXHRcXHQgICAgIHUzMiB1bnRhZywgdTMyIGZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3NTppbnQgcnRsODM2Nl9zZXRfcHZpZChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCB1bnNpZ25lZCBpbnQgcG9ydCxcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTc2LVxcdFxcdCAgICAgdW5zaWduZWQgaW50IHZpZCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE3NzppbnQgcnRsODM2Nl9lbmFibGVfdmxhbjRrKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTc4OmludCBydGw4MzY2X2VuYWJsZV92bGFuKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYsIGJvb2wgZW5hYmxlKTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTc5OmludCBydGw4MzY2X3Jlc2V0X3ZsYW4oc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTE4MC1pbnQgcnRsODM2Nl92bGFuX2FkZChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMsIGludCBwb3J0LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oPTE4OD12b2lkIHJ0bDgzNjZfZ2V0X2V0aHRvb2xfc3RhdHMoc3RydWN0IGRzYV9zd2l0Y2ggKmRzLCBpbnQgcG9ydCwgdWludDY0X3QgKmRhdGEpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xODktXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oOjE5MDpleHRlcm4gY29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY2cmJfdmFyaWFudDtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTkxOmV4dGVybiBjb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50O1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaC0xOTItXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbDIuYz0yMzE9c3RhdGljIHZvaWQgcnRsODM2NW1iX2wyX21jX3RvX2RhdGEoY29uc3Qgc3RydWN0IHJ0bDgzNjVtYl9sMl9tYyAqbWMsIHUxNiAqZGF0YSlcXG5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6MzMuNjM2MzY1ODA2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI0MTA3NTA2NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBSZWFsdGVrIERTQSBEcml2ZXJzKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIG5vdywgc3BlY2lmaWNhbGx5IGxvb2tpbmcgZm9yIGBDT05GSUdfTkVUX0RTQV9SRUFMVEVLYCBhbmQgYENPTkZJR19ORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoZXNlIGRyaXZlcnMgYXJlIGNvbmZpZ3VyZWQgd2l0aGluIHRoZSBicm9hZGVyIG5ldHdvcmtpbmcgc3RhY2suIEknbSBsaWtlbHkgdHJ5aW5nIHRvIHRyYWNlIGRlcGVuZGVuY2llcywgZmluZCBvdXQgd2hhdCBvdGhlciBvcHRpb25zIHRoZXkgcmVseSBvbiwgYW5kIHVuZGVyc3RhbmQgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGxvZ2ljLiBJcyBgUlRMODM2NU1CYCBhIHNwZWNpZmljIGNoaXA/IEknbGwgcHJvYmFibHkgYmUgbG9va2luZyB0byBzZWUgaWYgaXQncyBhIHN1Yi1vcHRpb24sIG9yIGEgZ2VuZXJhbCBlbmFibGVtZW50IG9wdGlvbi4gSSdsbCBuZWVkIHRvIGtub3cgd2hldGhlciB0aGUgY29uZmlndXJhdGlvbiBpbnRlcmFjdHMgd2l0aCBzcGVjaWZpYyBoYXJkd2FyZSByZXZpc2lvbnMgb3IgcGxhdGZvcm0gZmVhdHVyZXMuIEknbSBob3BpbmcgdG8gZ2V0IGEgcXVpY2sgZ3Jhc3Agb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGhvdyB0aGVzZSBvcHRpb25zIGZpdCBpbnRvIHRoZSBvdmVyYWxsIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NjU5LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6MzUuODc3NDQyODNaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MDk4MjY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIk5FVF9EU0FfUkVBTFRFS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRla1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoyOm1lbnVjb25maWcgTkVUX0RTQV9SRUFMVEVLXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIEV0aGVybmV0IHN3aXRjaCBmYW1pbHkgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzoxNjppZiBORVRfRFNBX1JFQUxURUtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTE3LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MTg6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19NRElPXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0xOS1cXHRib29sIFxcXCJSZWFsdGVrIE1ESU8gaW50ZXJmYWNlIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI0LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWc6MjU6Y29uZmlnIE5FVF9EU0FfUkVBTFRFS19TTUlcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTI2LVxcdGJvb2wgXFxcIlJlYWx0ZWsgU01JIGludGVyZmFjZSBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjMyOmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NU1CXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY1TUIgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM0OlxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctMzUtXFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDhfNFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy0zOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjM5OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00MC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayBSVEw4MzY2UkIgc3dpdGNoIGRyaXZlclxcXCJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQxOlxcdGRlcGVuZHMgb24gTkVUX0RTQV9SRUFMVEVLX1NNSSB8fCBORVRfRFNBX1JFQUxURUtfTURJT1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNDItXFx0c2VsZWN0IE5FVF9EU0FfVEFHX1JUTDRfQVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZy00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ2OmNvbmZpZyBORVRfRFNBX1JFQUxURUtfUlRMODM2NlJCX0xFRFNcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnLTQ3LVxcdGJvb2xcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjQ4OlxcdGRlcGVuZHMgb24gKExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkIpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvS2NvbmZpZzo0OTpcXHRkZXBlbmRzIG9uIE5FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9LY29uZmlnOjUwOlxcdGRlZmF1bHQgTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQlxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL0tjb25maWctNTEtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToyOm9iai0kKENPTkZJR19ORVRfRFNBX1JFQUxURUspXFx0XFx0Kz0gcmVhbHRla19kc2Eub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTMtcmVhbHRla19kc2Etb2Jqc1xcdFxcdFxcdDo9IHJ0bDgzeHgub1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTQtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6NTppZmRlZiBDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS02LXJlYWx0ZWtfZHNhLW9ianMgKz0gcmVhbHRlay1tZGlvLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZT03PWVuZGlmXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtOC1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZTo5OmlmZGVmIENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTAtcmVhbHRla19kc2Etb2JqcyArPSByZWFsdGVrLXNtaS5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTE9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xMi1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxMzpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQikgKz0gcnRsODM2Ni5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGUtMTQtcnRsODM2Ni1vYmpzIFxcdFxcdFxcdFxcdDo9IHJ0bDgzNjYtY29yZS5vIHJ0bDgzNjZyYi5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU6MTU6aWZkZWYgQ09ORklHX05FVF9EU0FfUkVBTFRFS19SVEw4MzY2UkJfTEVEU1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL01ha2VmaWxlLTE2LXJ0bDgzNjYtb2JqcyBcXHRcXHRcXHRcXHQrPSBydGw4MzY2cmItbGVkcy5vXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvTWFrZWZpbGU9MTc9ZW5kaWZcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZToxODpvYmotJChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjVNQikgKz0gcnRsODM2NW1iLm9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9NYWtlZmlsZS0xOS1ydGw4MzY1bWItb2JqcyA6PSBydGw4MzY1bWJfbWFpbi5vIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTUtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6NjojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oPTIwPXZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2Rldik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmg6MjI6I2Vsc2UgLyogSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX01ESU8pICovXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1tZGlvLmgtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaD00Mj1zdGF0aWMgaW5saW5lIHZvaWQgcmVhbHRla19tZGlvX3NodXRkb3duKHN0cnVjdCBtZGlvX2RldmljZSAqbWRpb2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oLTQ1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstbWRpby5oOjQ2OiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfTURJTykgKi9cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLW1kaW8uaC00Ny1cXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjY6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVF9EU0FfUkVBTFRFS19TTUkpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC03LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaD0yMD12b2lkIHJlYWx0ZWtfc21pX3NodXRkb3duKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjEtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaDoyMjojZWxzZSAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtMjMtXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oPTQyPXN0YXRpYyBpbmxpbmUgdm9pZCByZWFsdGVrX3NtaV9zaHV0ZG93bihzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay1zbWkuaC00NS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLXNtaS5oOjQ2OiNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19ORVRfRFNBX1JFQUxURUtfU01JKSAqL1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWstc21pLmgtNDctXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaD00Nz1lbnVtIHJ0bDgzNjZfbGVkZ3JvdXBfbW9kZSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaC02Ny1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo2ODojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTY5LVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmg9OTQ9c3RydWN0IHJ0bDgzNjZyYiB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaC05Ni1cXHRib29sIHB2aWRfZW5hYmxlZFtSVEw4MzY2UkJfTlVNX1BPUlRTXTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuaDo5NzojaWYgSVNfRU5BQkxFRChDT05GSUdfTkVUX0RTQV9SRUFMVEVLX1JUTDgzNjZSQl9MRURTKVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5oLTk4LVxcdHN0cnVjdCBydGw4MzY2cmJfbGVkIGxlZHNbUlRMODM2NlJCX05VTV9QT1JUU11bUlRMODM2NlJCX05VTV9MRURHUk9VUFNdO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjozNS45MjM1NTA1MjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgyODQ0NzMzMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byBSZWFsdGVrIERTQSBTd2l0Y2ggUmVnaXN0cmF0aW9uKipcblxuT2theSwgc28gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIGhvdyB0aGVzZSBgcnRsODN4eGAgY2hpcHMgYW5kIERTQSBzd2l0Y2hlcyBnZXQgaW50ZWdyYXRlZCBpbnRvIHRoZSBzeXN0ZW0uIExldCdzIHNlZS4uLiB0aGUgbW9zdCBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIGxpa2VseSB3aXRoIHRoZSBgcnRsODN4eF9wcm9iZWAgZnVuY3Rpb24gb3IsIG1vcmUgZ2VuZXJhbGx5LCBob3cgdGhlc2UgRFNBIHN3aXRjaGVzIGFyZSByZWdpc3RlcmVkIGFuZCBwcm9iZWQuIFJpZ2h0LCB0aGF0IG1ha2VzIHNlbnNlLlxuXG5Ob3csIHdoZXJlJ3MgdGhhdCBjb2RlPyBBaCwgeWVzLCBJIGJlbGlldmUgSSByZW1lbWJlciBzZWVpbmcgUmVhbHRlaydzIERTQSBkcml2ZXIgaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY2AuIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IHRoZXkndmUgaW1wbGVtZW50ZWQgdGhlIHByb2JpbmcgYW5kIHJlZ2lzdHJhdGlvbiBwcm9jZXNzLiBTaG91bGQgYmUgYW4gaW50ZXJlc3RpbmcgcmVhZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzcyODYsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjozNy43NTIwMDAwMzhaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTY2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDgwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0Ly8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArXFxuICAgMjpcXHRcXG4gICAzOlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9tb2R1bGUuaFxcdTAwM2VcXG4gICA0OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9yZWdtYXAuaFxcdTAwM2VcXG4gICA1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9vZl9tZGlvLmhcXHUwMDNlXFxuICAgNjpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvaWZfYnJpZGdlLmhcXHUwMDNlXFxuICAgNzpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4gICA4OlxcdFxcbiAgIDk6XFx0I2luY2x1ZGUgXFxcInJlYWx0ZWsuaFxcXCJcXG4gIDEwOlxcdCNpbmNsdWRlIFxcXCJydGw4M3h4LmhcXFwiXFxuICAxMTpcXHRcXG4gIDEyOlxcdC8qKlxcbiAgMTM6XFx0ICogcnRsODN4eF9sb2NrKCkgLSBMb2NrcyB0aGUgbXV0ZXggdXNlZCBieSByZWdtYXBzXFxuICAxNDpcXHQgKiBAY3R4OiByZWFsdGVrX3ByaXYgcG9pbnRlclxcbiAgMTU6XFx0ICpcXG4gIDE2OlxcdCAqIFRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIHJlZ21hcCB0byBiZSB1c2VkIGFzIHRoZSBsb2NrIGZ1bmN0aW9uLlxcbiAgMTc6XFx0ICogSXQgaXMgYWxzbyB1c2VkIGV4dGVybmFsbHkgdG8gYmxvY2sgcmVnbWFwIGJlZm9yZSBleGVjdXRpbmcgbXVsdGlwbGVcXG4gIDE4OlxcdCAqIG9wZXJhdGlvbnMgdGhhdCBtdXN0IGhhcHBlbiBpbiBzZXF1ZW5jZSAod2hpY2ggd2lsbCB1c2VcXG4gIDE5OlxcdCAqIHJlYWx0ZWtfcHJpdi5tYXBfbm9sb2NrIGluc3RlYWQpLlxcbiAgMjA6XFx0ICpcXG4gIDIxOlxcdCAqIENvbnRleHQ6IENhbiBzbGVlcC4gSG9sZHMgcHJpdi1cXHUwMDNlbWFwX2xvY2sgbG9jay5cXG4gIDIyOlxcdCAqIFJldHVybjogbm90aGluZ1xcbiAgMjM6XFx0ICovXFxuICAyNDpcXHR2b2lkIHJ0bDgzeHhfbG9jayh2b2lkICpjdHgpXFxuICAyNTpcXHR7XFxuICAyNjpcXHRcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2ID0gY3R4O1xcbiAgMjc6XFx0XFxuICAyODpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtYXBfbG9jayk7XFxuICAyOTpcXHR9XFxuICAzMDpcXHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X2xvY2ssIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbiAgMzE6XFx0XFxuICAzMjpcXHQvKipcXG4gIDMzOlxcdCAqIHJ0bDgzeHhfdW5sb2NrKCkgLSBVbmxvY2tzIHRoZSBtdXRleCB1c2VkIGJ5IHJlZ21hcHNcXG4gIDM0OlxcdCAqIEBjdHg6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuICAzNTpcXHQgKlxcbiAgMzY6XFx0ICogVGhpcyBmdW5jdGlvbiB1bmxvY2tzIHRoZSBsb2NrIGFjcXVpcmVkIGJ5IHJ0bDgzeHhfbG9jay5cXG4gIDM3OlxcdCAqXFxuICAzODpcXHQgKiBDb250ZXh0OiBSZWxlYXNlcyBwcml2LVxcdTAwM2VtYXBfbG9jayBsb2NrLlxcbiAgMzk6XFx0ICogUmV0dXJuOiBub3RoaW5nXFxuICA0MDpcXHQgKi9cXG4gIDQxOlxcdHZvaWQgcnRsODN4eF91bmxvY2sodm9pZCAqY3R4KVxcbiAgNDI6XFx0e1xcbiAgNDM6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGN0eDtcXG4gIDQ0OlxcdFxcbiAgNDU6XFx0XFx0bXV0ZXhfdW5sb2NrKFxcdTAwMjZwcml2LVxcdTAwM2VtYXBfbG9jayk7XFxuICA0NjpcXHR9XFxuICA0NzpcXHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X3VubG9jaywgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuICA0ODpcXHRcXG4gIDQ5OlxcdHN0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fcmVhZChzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgYWRkciwgaW50IHJlZ251bSlcXG4gIDUwOlxcdHtcXG4gIDUxOlxcdFxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBidXMtXFx1MDAzZXByaXY7XFxuICA1MjpcXHRcXG4gIDUzOlxcdFxcdHJldHVybiBwcml2LVxcdTAwM2VvcHMtXFx1MDAzZXBoeV9yZWFkKHByaXYsIGFkZHIsIHJlZ251bSk7XFxuICA1NDpcXHR9XFxuICA1NTpcXHRcXG4gIDU2OlxcdHN0YXRpYyBpbnQgcnRsODN4eF91c2VyX21kaW9fd3JpdGUoc3RydWN0IG1paV9idXMgKmJ1cywgaW50IGFkZHIsIGludCByZWdudW0sXFxuICA1NzpcXHRcXHRcXHRcXHRcXHQgICB1MTYgdmFsKVxcbiAgNTg6XFx0e1xcbiAgNTk6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGJ1cy1cXHUwMDNlcHJpdjtcXG4gIDYwOlxcdFxcbiAgNjE6XFx0XFx0cmV0dXJuIHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlcGh5X3dyaXRlKHByaXYsIGFkZHIsIHJlZ251bSwgdmFsKTtcXG4gIDYyOlxcdH1cXG4gIDYzOlxcdFxcbiAgNjQ6XFx0LyoqXFxuICA2NTpcXHQgKiBydGw4M3h4X3NldHVwX3VzZXJfbWRpbygpIC0gcmVnaXN0ZXIgdGhlIHVzZXIgbWlpIGJ1cyBkcml2ZXJcXG4gIDY2OlxcdCAqIEBkczogRFNBIHN3aXRjaCBhc3NvY2lhdGVkIHdpdGggdGhpcyB1c2VyX21paV9idXNcXG4gIDY3OlxcdCAqXFxuICA2ODpcXHQgKiBSZWdpc3RlcnMgdGhlIE1ESU8gYnVzIGZvciBidWlsdC1pbiBFdGhlcm5ldCBQSFlzLCBhbmQgYXNzb2NpYXRlcyBpdCB3aXRoXFxuICA2OTpcXHQgKiB0aGUgbWFuZGF0b3J5ICdtZGlvJyBjaGlsZCBPRiBub2RlIG9mIHRoZSBzd2l0Y2guXFxuICA3MDpcXHQgKlxcbiAgNzE6XFx0ICogQ29udGV4dDogQ2FuIHNsZWVwLlxcbiAgNzI6XFx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlIGZvciBmYWlsdXJlLlxcbiAgNzM6XFx0ICovXFxuICA3NDpcXHRpbnQgcnRsODN4eF9zZXR1cF91c2VyX21kaW8oc3RydWN0IGRzYV9zd2l0Y2ggKmRzKVxcbiAgNzU6XFx0e1xcbiAgNzY6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdiA9IGRzLVxcdTAwM2Vwcml2O1xcbiAgNzc6XFx0XFx0c3RydWN0IGRldmljZV9ub2RlICptZGlvX25wO1xcbiAgNzg6XFx0XFx0c3RydWN0IG1paV9idXMgKmJ1cztcXG4gIDc5OlxcdFxcdGludCByZXQgPSAwO1xcbiAgODA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjM3Ljc1MjA5Nzk5OFoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxNDMzMDc4MDU3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYHJ0bDgzeHguY2AuIEkgbmVlZCB0byBnZXQgYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhpcyBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4NjM2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjozOS4xODUxNzg2MjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzeHguY1wiLFxuICBcIkZpcnN0TGluZVwiOiA4MSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA4MTpcXHRcXHRtZGlvX25wID0gb2ZfZ2V0X2NoaWxkX2J5X25hbWUocHJpdi1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLCBcXFwibWRpb1xcXCIpO1xcbiAgODI6XFx0XFx0aWYgKCFtZGlvX25wKSB7XFxuICA4MzpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcIm5vIE1ESU8gYnVzIG5vZGVcXFxcblxcXCIpO1xcbiAgODQ6XFx0XFx0XFx0cmV0dXJuIC1FTk9ERVY7XFxuICA4NTpcXHRcXHR9XFxuICA4NjpcXHRcXG4gIDg3OlxcdFxcdGJ1cyA9IGRldm1fbWRpb2J1c19hbGxvYyhwcml2LVxcdTAwM2VkZXYpO1xcbiAgODg6XFx0XFx0aWYgKCFidXMpIHtcXG4gIDg5OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuICA5MDpcXHRcXHRcXHRnb3RvIGVycl9wdXRfbm9kZTtcXG4gIDkxOlxcdFxcdH1cXG4gIDkyOlxcdFxcbiAgOTM6XFx0XFx0YnVzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4gIDk0OlxcdFxcdGJ1cy1cXHUwMDNlbmFtZSA9IFxcXCJSZWFsdGVrIHVzZXIgTUlJXFxcIjtcXG4gIDk1OlxcdFxcdGJ1cy1cXHUwMDNlcmVhZCA9IHJ0bDgzeHhfdXNlcl9tZGlvX3JlYWQ7XFxuICA5NjpcXHRcXHRidXMtXFx1MDAzZXdyaXRlID0gcnRsODN4eF91c2VyX21kaW9fd3JpdGU7XFxuICA5NzpcXHRcXHRzbnByaW50ZihidXMtXFx1MDAzZWlkLCBNSUlfQlVTX0lEX1NJWkUsIFxcXCIlczp1c2VyX21paVxcXCIsIGRldl9uYW1lKHByaXYtXFx1MDAzZWRldikpO1xcbiAgOTg6XFx0XFx0YnVzLVxcdTAwM2VwYXJlbnQgPSBwcml2LVxcdTAwM2VkZXY7XFxuICA5OTpcXHRcXG4gMTAwOlxcdFxcdHJldCA9IGRldm1fb2ZfbWRpb2J1c19yZWdpc3Rlcihwcml2LVxcdTAwM2VkZXYsIGJ1cywgbWRpb19ucCk7XFxuIDEwMTpcXHRcXHRpZiAocmV0KSB7XFxuIDEwMjpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcInVuYWJsZSB0byByZWdpc3RlciBNRElPIGJ1cyAlc1xcXFxuXFxcIixcXG4gMTAzOlxcdFxcdFxcdFxcdGJ1cy1cXHUwMDNlaWQpO1xcbiAxMDQ6XFx0XFx0XFx0Z290byBlcnJfcHV0X25vZGU7XFxuIDEwNTpcXHRcXHR9XFxuIDEwNjpcXHRcXG4gMTA3OlxcdFxcdHByaXYtXFx1MDAzZXVzZXJfbWlpX2J1cyA9IGJ1cztcXG4gMTA4OlxcdFxcbiAxMDk6XFx0ZXJyX3B1dF9ub2RlOlxcbiAxMTA6XFx0XFx0b2Zfbm9kZV9wdXQobWRpb19ucCk7XFxuIDExMTpcXHRcXG4gMTEyOlxcdFxcdHJldHVybiByZXQ7XFxuIDExMzpcXHR9XFxuIDExNDpcXHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X3NldHVwX3VzZXJfbWRpbywgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuIDExNTpcXHRcXG4gMTE2OlxcdC8qKlxcbiAxMTc6XFx0ICogcnRsODN4eF9wcm9iZSgpIC0gcHJvYmUgYSBSZWFsdGVrIHN3aXRjaFxcbiAxMTg6XFx0ICogQGRldjogdGhlIGRldmljZSBiZWluZyBwcm9iZWRcXG4gMTE5OlxcdCAqIEBpbnRlcmZhY2VfaW5mbzogc3BlY2lmaWMgbWFuYWdlbWVudCBpbnRlcmZhY2UgaW5mby5cXG4gMTIwOlxcdCAqXFxuIDEyMTpcXHQgKiBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHJlYWx0ZWtfcHJpdiBhbmQgcmVhZHMgZGF0YSBmcm9tIHRoZSBkZXZpY2UgdHJlZVxcbiAxMjI6XFx0ICogbm9kZS4gVGhlIHN3aXRjaCBpcyBoYXJkIHJlc2V0dGVkIGlmIGEgbWV0aG9kIGlzIHByb3ZpZGVkLlxcbiAxMjM6XFx0ICpcXG4gMTI0OlxcdCAqIENvbnRleHQ6IENhbiBzbGVlcC5cXG4gMTI1OlxcdCAqIFJldHVybjogUG9pbnRlciB0byB0aGUgcmVhbHRla19wcml2IG9yIEVSUl9QVFIoKSBpbiBjYXNlIG9mIGZhaWx1cmUuXFxuIDEyNjpcXHQgKlxcbiAxMjc6XFx0ICogVGhlIHJlYWx0ZWtfcHJpdiBwb2ludGVyIGRvZXMgbm90IG5lZWQgdG8gYmUgZnJlZWQgYXMgaXQgaXMgY29udHJvbGxlZCBieVxcbiAxMjg6XFx0ICogZGV2cmVzLlxcbiAxMjk6XFx0ICovXFxuIDEzMDpcXHRzdHJ1Y3QgcmVhbHRla19wcml2ICpcXG4gMTMxOlxcdHJ0bDgzeHhfcHJvYmUoc3RydWN0IGRldmljZSAqZGV2LFxcbiAxMzI6XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IHJlYWx0ZWtfaW50ZXJmYWNlX2luZm8gKmludGVyZmFjZV9pbmZvKVxcbiAxMzM6XFx0e1xcbiAxMzQ6XFx0XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCAqdmFyO1xcbiAxMzU6XFx0XFx0c3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdjtcXG4gMTM2OlxcdFxcdHN0cnVjdCByZWdtYXBfY29uZmlnIHJjID0ge1xcbiAxMzc6XFx0XFx0XFx0LnJlZ19iaXRzID0gMTAsIC8qIEE0Li5BMCBSNC4uUjAgKi9cXG4gMTM4OlxcdFxcdFxcdC52YWxfYml0cyA9IDE2LFxcbiAxMzk6XFx0XFx0XFx0LnJlZ19zdHJpZGUgPSAxLFxcbiAxNDA6XFx0XFx0XFx0Lm1heF9yZWdpc3RlciA9IDB4ZmZmZixcXG4gMTQxOlxcdFxcdFxcdC5yZWdfZm9ybWF0X2VuZGlhbiA9IFJFR01BUF9FTkRJQU5fQklHLFxcbiAxNDI6XFx0XFx0XFx0LnJlZ19yZWFkID0gaW50ZXJmYWNlX2luZm8tXFx1MDAzZXJlZ19yZWFkLFxcbiAxNDM6XFx0XFx0XFx0LnJlZ193cml0ZSA9IGludGVyZmFjZV9pbmZvLVxcdTAwM2VyZWdfd3JpdGUsXFxuIDE0NDpcXHRcXHRcXHQuY2FjaGVfdHlwZSA9IFJFR0NBQ0hFX05PTkUsXFxuIDE0NTpcXHRcXHRcXHQubG9jayA9IHJ0bDgzeHhfbG9jayxcXG4gMTQ2OlxcdFxcdFxcdC51bmxvY2sgPSBydGw4M3h4X3VubG9jayxcXG4gMTQ3OlxcdFxcdH07XFxuIDE0ODpcXHRcXHRpbnQgcmV0O1xcbiAxNDk6XFx0XFxuIDE1MDpcXHRcXHR2YXIgPSBvZl9kZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTtcXG4gMTUxOlxcdFxcdGlmICghdmFyKVxcbiAxNTI6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XFxuIDE1MzpcXHRcXG4gMTU0OlxcdFxcdHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplX2FkZChzaXplb2YoKnByaXYpLCB2YXItXFx1MDAzZWNoaXBfZGF0YV9zeiksXFxuIDE1NTpcXHRcXHRcXHRcXHQgICAgR0ZQX0tFUk5FTCk7XFxuIDE1NjpcXHRcXHRpZiAoIXByaXYpXFxuIDE1NzpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTtcXG4gMTU4OlxcdFxcbiAxNTk6XFx0XFx0cmV0ID0gZGV2bV9tdXRleF9pbml0KGRldiwgXFx1MDAyNnByaXYtXFx1MDAzZW1hcF9sb2NrKTtcXG4gMTYwOlxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjM5LjE4NTI4MzEwNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozMTA2NDAxNzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhlIHJlc3Qgb2YgYHJ0bDgzeHhfcHJvYmVgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGhhcHBlbnMgKmFmdGVyKiB0aGUgaW5pdGlhbCBzZXR1cC4gSSdtIGFzc3VtaW5nLCBiYXNlZCBvbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZXNlIHNvcnRzIG9mIGRldmljZSBkcml2ZXJzLCB0aGF0IHRoZSBuZXh0IHN0YWdlcyB3aWxsIGxpa2VseSBpbnZvbHZlIGEgZmV3IGtleSBhcmVhczpcblxuKipGdXJ0aGVyIEV4YW1pbmF0aW9uIG9mIGBydGw4M3h4X3Byb2JlYCoqXG5cbkZpcnN0LCBJIGV4cGVjdCB0byBzZWUgdGhlIGRyaXZlciBzZXR0aW5nIHVwIHRoZSBoYXJkd2FyZSwgbWF5YmUgY29uZmlndXJpbmcgc29tZSBiYXNpYyByZWdpc3RlcnMgb3IgaW5pdGlhbGl6aW5nIHRoZSBQSFkuIEl0J3MgbGlrZWx5IGNoZWNraW5nIGZvciBhbmQgaW5pdGlhbGl6aW5nIGludGVycnVwdCBoYW5kbGVycywgc2luY2UgZWZmaWNpZW50IGNvbW11bmljYXRpb24gd2l0aCB0aGUgaGFyZHdhcmUgaXMgY3JpdGljYWwuIFdlJ2xsIGJlIGxvb2tpbmcgZm9yIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRldmljZSdzIGNsb2NraW5nIGFzIHdlbGwsIHNpbmNlIHRoYXQncyBhbm90aGVyIHByZXJlcXVpc2l0ZS5cblxuVGhlbiwgdGhlcmUnbGwgYmUgYSBwaGFzZSBvZiByZXNvdXJjZSBhbGxvY2F0aW9uIC0gbWVtb3J5LCBJUlFzLCBwZXJoYXBzIERNQSBjaGFubmVscy4gSSdtIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgcG90ZW50aWFsIHBpdGZhbGxzIHRoZXJlOyByZXNvdXJjZSBjb25mbGljdHMgY2FuIGJlIGEgbWFqb3IgcGFpbiB0byBkZWJ1Zy4gR2l2ZW4gdGhpcyBpcyBhIHN3aXRjaCwgdGhlcmUnbGwgZGVmaW5pdGVseSBiZSBhIG5lZWQgdG8gcmVnaXN0ZXIgdGhlIHN3aXRjaCBkZXZpY2Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgc3Vic3lzdGVtLCBwcm9iYWJseSBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgaXRzIHBvcnRzLCBjYXBhYmlsaXRpZXMsIGFuZCB0aGUgbGlrZS4gV2UgbmVlZCB0byBiZSBjaGVja2luZyB0aGUgc3RhdHVzIHJldHVybmVkIGJ5IHRoZXNlIGNhbGxzLCBlcnJvcnMgZnJvbSByZXNvdXJjZSBhbGxvY2F0aW9ucywgYmVjYXVzZSB0aGF0J3MgYWx3YXlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgcHJvYmxlbXMgaW4gdGhlIGtlcm5lbC5cblxuRmluYWxseSwgSSdtIGFudGljaXBhdGluZyBzb21lIGZvcm0gb2YgaW5pdGlhbCBzd2l0Y2ggY29uZmlndXJhdGlvbiwgbWF5YmUgc2V0dGluZyB1cCBWTEFOcywgcG9ydCBzcGVlZHMsIG9yIG90aGVyIGJhc2ljIHBhcmFtZXRlcnMuIEl0J3MgcmVhbGx5IHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGF0IHN3aXRjaCBjaGlwIHRoYXQgaXMga2V5IGhlcmUsIGhvdyBpdCBpbml0aWFsaXplcy4gSSdtIGtlZW4gdG8gc3BvdCBhbnkgaW5kaWNhdGlvbnMgb2YgZXJyb3IgaGFuZGxpbmcgYW5kIGhvdyByb2J1c3QgaXQgaXMgdG8gdmFyaW91cyBzY2VuYXJpb3MuIE92ZXJhbGwsIEknbSBleHBlY3RpbmcgdG8gc2VlIGEgc3RydWN0dXJlZCBhcHByb2FjaCB0aGF0IGNhcmVmdWxseSBzZXRzIHVwIHRoZSBoYXJkd2FyZSwgcmVnaXN0ZXJzIGl0IHdpdGggdGhlIHN5c3RlbSwgYW5kIHRoZW4gYnJpbmdzIGl0IGludG8gYSBrbm93biBpbml0aWFsIHN0YXRlLiBUaGlzLCBvYnZpb3VzbHksIGlzIHRoZSBzdGFuZGFyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzk5NjksIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjQyLjI5MTY4NzIxMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTU2MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE2MSxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE2MTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiAxNjI6XFx0XFxuIDE2MzpcXHRcXHRyZXQgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNldmxhbl9sb2NrKTtcXG4gMTY0OlxcdFxcdGlmIChyZXQpXFxuIDE2NTpcXHRcXHRcXHRyZXR1cm4gRVJSX1BUUihyZXQpO1xcbiAxNjY6XFx0XFxuIDE2NzpcXHRcXHRyZXQgPSBkZXZtX211dGV4X2luaXQoZGV2LCBcXHUwMDI2cHJpdi1cXHUwMDNlbDJfbG9jayk7XFxuIDE2ODpcXHRcXHRpZiAocmV0KVxcbiAxNjk6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gMTcwOlxcdFxcbiAxNzE6XFx0XFx0cmMubG9ja19hcmcgPSBwcml2O1xcbiAxNzI6XFx0XFx0cHJpdi1cXHUwMDNlbWFwID0gZGV2bV9yZWdtYXBfaW5pdChkZXYsIE5VTEwsIHByaXYsIFxcdTAwMjZyYyk7XFxuIDE3MzpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZW1hcCkpIHtcXG4gMTc0OlxcdFxcdFxcdHJldCA9IFBUUl9FUlIocHJpdi1cXHUwMDNlbWFwKTtcXG4gMTc1OlxcdFxcdFxcdGRldl9lcnIoZGV2LCBcXFwicmVnbWFwIGluaXQgZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG4gMTc2OlxcdFxcdFxcdHJldHVybiBFUlJfUFRSKHJldCk7XFxuIDE3NzpcXHRcXHR9XFxuIDE3ODpcXHRcXG4gMTc5OlxcdFxcdHJjLmRpc2FibGVfbG9ja2luZyA9IHRydWU7XFxuIDE4MDpcXHRcXHRwcml2LVxcdTAwM2VtYXBfbm9sb2NrID0gZGV2bV9yZWdtYXBfaW5pdChkZXYsIE5VTEwsIHByaXYsIFxcdTAwMjZyYyk7XFxuIDE4MTpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZW1hcF9ub2xvY2spKSB7XFxuIDE4MjpcXHRcXHRcXHRyZXQgPSBQVFJfRVJSKHByaXYtXFx1MDAzZW1hcF9ub2xvY2spO1xcbiAxODM6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJyZWdtYXAgaW5pdCBmYWlsZWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbiAxODQ6XFx0XFx0XFx0cmV0dXJuIEVSUl9QVFIocmV0KTtcXG4gMTg1OlxcdFxcdH1cXG4gMTg2OlxcdFxcbiAxODc6XFx0XFx0LyogTGluayBmb3J3YXJkIGFuZCBiYWNrd2FyZCAqL1xcbiAxODg6XFx0XFx0cHJpdi1cXHUwMDNlZGV2ID0gZGV2O1xcbiAxODk6XFx0XFx0cHJpdi1cXHUwMDNldmFyaWFudCA9IHZhcjtcXG4gMTkwOlxcdFxcdHByaXYtXFx1MDAzZW9wcyA9IHZhci1cXHUwMDNlb3BzO1xcbiAxOTE6XFx0XFx0cHJpdi1cXHUwMDNlY2hpcF9kYXRhID0gKHZvaWQgKilwcml2ICsgc2l6ZW9mKCpwcml2KTtcXG4gMTkyOlxcdFxcbiAxOTM6XFx0XFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNnByaXYtXFx1MDAzZWxvY2spO1xcbiAxOTQ6XFx0XFxuIDE5NTpcXHRcXHRwcml2LVxcdTAwM2VsZWRzX2Rpc2FibGVkID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKGRldi1cXHUwMDNlb2Zfbm9kZSxcXG4gMTk2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBcXFwicmVhbHRlayxkaXNhYmxlLWxlZHNcXFwiKTtcXG4gMTk3OlxcdFxcbiAxOTg6XFx0XFx0LyogVE9ETzogaWYgcG93ZXIgaXMgc29mdHdhcmUgY29udHJvbGxlZCwgc2V0IHVwIGFueSByZWd1bGF0b3JzIGhlcmUgKi9cXG4gMTk5OlxcdFxcdHByaXYtXFx1MDAzZXJlc2V0X2N0bCA9IGRldm1fcmVzZXRfY29udHJvbF9nZXRfb3B0aW9uYWwoZGV2LCBOVUxMKTtcXG4gMjAwOlxcdFxcdGlmIChJU19FUlIocHJpdi1cXHUwMDNlcmVzZXRfY3RsKSlcXG4gMjAxOlxcdFxcdFxcdHJldHVybiBkZXZfZXJyX2Nhc3RfcHJvYmUoZGV2LCBwcml2LVxcdTAwM2VyZXNldF9jdGwsXFxuIDIwMjpcXHRcXHRcXHRcXHRcXHRcXHQgIFxcXCJmYWlsZWQgdG8gZ2V0IHJlc2V0IGNvbnRyb2xcXFxcblxcXCIpO1xcbiAyMDM6XFx0XFxuIDIwNDpcXHRcXHRwcml2LVxcdTAwM2VyZXNldCA9IGRldm1fZ3Bpb2RfZ2V0X29wdGlvbmFsKGRldiwgXFxcInJlc2V0XFxcIiwgR1BJT0RfT1VUX0xPVyk7XFxuIDIwNTpcXHRcXHRpZiAoSVNfRVJSKHByaXYtXFx1MDAzZXJlc2V0KSkge1xcbiAyMDY6XFx0XFx0XFx0ZGV2X2VycihkZXYsIFxcXCJmYWlsZWQgdG8gZ2V0IFJFU0VUIEdQSU9cXFxcblxcXCIpO1xcbiAyMDc6XFx0XFx0XFx0cmV0dXJuIEVSUl9DQVNUKHByaXYtXFx1MDAzZXJlc2V0KTtcXG4gMjA4OlxcdFxcdH1cXG4gMjA5OlxcdFxcbiAyMTA6XFx0XFx0ZGV2X3NldF9kcnZkYXRhKGRldiwgcHJpdik7XFxuIDIxMTpcXHRcXG4gMjEyOlxcdFxcdGlmIChwcml2LVxcdTAwM2VyZXNldF9jdGwgfHwgcHJpdi1cXHUwMDNlcmVzZXQpIHtcXG4gMjEzOlxcdFxcdFxcdHJ0bDgzeHhfcmVzZXRfYXNzZXJ0KHByaXYpO1xcbiAyMTQ6XFx0XFx0XFx0ZGV2X2RiZyhkZXYsIFxcXCJhc3NlcnRlZCBSRVNFVFxcXFxuXFxcIik7XFxuIDIxNTpcXHRcXHRcXHRtc2xlZXAoUkVBTFRFS19IV19TVE9QX0RFTEFZKTtcXG4gMjE2OlxcdFxcdFxcdHJ0bDgzeHhfcmVzZXRfZGVhc3NlcnQocHJpdik7XFxuIDIxNzpcXHRcXHRcXHRtc2xlZXAoUkVBTFRFS19IV19TVEFSVF9ERUxBWSk7XFxuIDIxODpcXHRcXHRcXHRkZXZfZGJnKGRldiwgXFxcImRlYXNzZXJ0ZWQgUkVTRVRcXFxcblxcXCIpO1xcbiAyMTk6XFx0XFx0fVxcbiAyMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjQyLjI5MTgwNDM4MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyMzE0MzU4NTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcyBgcnRsODN4eF9wcm9iZWAgZnVuY3Rpb24gYW5kIHNlZSB3aGF0IGl0J3MgYWxsIGFib3V0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSB3aXRoaW4gdGhpcyBkcml2ZXIsIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgaGFyZHdhcmUsIGFuZCB3aGF0IGl0cyBzcGVjaWZpYyByZXNwb25zaWJpbGl0aWVzIGFyZS4gSSdtIGdvaW5nIHRvIGxvb2sgYmV5b25kIHRoZSBpbml0aWFsIHNuaXBwZXRzIGFuZCB1bmRlcnN0YW5kIHRoZSBmbG93IGFuZCBkYXRhIG1hbmFnZW1lbnQuIEkgd2FudCB0byBzZWUgdGhlIGVycm9yIGhhbmRsaW5nIGFuZCBpbml0aWFsaXphdGlvbiBzdGVwcy4gVGhpcyBpcyB3aGVyZSB0aGUgbWFnaWMgKG9yIHRoZSBwcm9ibGVtcykgdHlwaWNhbGx5IGhhcHBlbi4gU3BlY2lmaWNhbGx5LCBJJ20gdHJ5aW5nIHRvIGRldGVybWluZSBob3cgaXQgaWRlbnRpZmllcyB0aGUgY2hpcCwgY29uZmlndXJlcyBpdCwgYW5kIGludGVncmF0ZXMgd2l0aCB0aGUgb3ZlcmFsbCBuZXR3b3JrIHN0YWNrLiBUaGUgZGV0YWlscyBtYXR0ZXI6IHJlZ2lzdGVyIHdyaXRlcywgaW50ZXJydXB0IGNvbmZpZ3VyYXRpb24sIGNsb2NrIHNldHRpbmdzIOKAkyBJIG5lZWQgdG8gZ2V0IGEgZmlybSBncmlwIG9uIGFsbCBvZiBpdC4gSSdtIGxvb2tpbmcgZm9yIGFueXRoaW5nIHRoYXQgc3RhbmRzIG91dCwgYW55IG9wdGltaXphdGlvbnMsIG9yIHBvdGVudGlhbCBhcmVhcyBmb3IgaW1wcm92ZW1lbnQuIExldCdzIHNlZSB0aGUgcmVzdCBvZiB0aGlzIGZ1bmN0aW9uIGFuZCBnZXQgdG8gd29yay5cblxuXG4iLCJJbnB1dFRva2VucyI6NDEzNzUsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjQ0LjYwNjE2NzE2N1oiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjI1NTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODN4eC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIyMSxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIyMTpcXHRcXHRyZXR1cm4gcHJpdjtcXG4gMjIyOlxcdH1cXG4gMjIzOlxcdEVYUE9SVF9TWU1CT0xfTlNfR1BMKHJ0bDgzeHhfcHJvYmUsIFxcXCJSRUFMVEVLX0RTQVxcXCIpO1xcbiAyMjQ6XFx0XFxuIDIyNTpcXHQvKipcXG4gMjI2OlxcdCAqIHJ0bDgzeHhfcmVnaXN0ZXJfc3dpdGNoKCkgLSBkZXRlY3RzIGFuZCByZWdpc3RlciBhIHN3aXRjaFxcbiAyMjc6XFx0ICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuIDIyODpcXHQgKlxcbiAyMjk6XFx0ICogVGhpcyBmdW5jdGlvbiBmaXJzdCBjaGVja3MgdGhlIHN3aXRjaCBjaGlwIElEIGFuZCByZWdpc3RlciBhIERTQVxcbiAyMzA6XFx0ICogc3dpdGNoLlxcbiAyMzE6XFx0ICpcXG4gMjMyOlxcdCAqIENvbnRleHQ6IENhbiBzbGVlcC4gVGFrZXMgYW5kIHJlbGVhc2VzIHByaXYtXFx1MDAzZW1hcF9sb2NrLlxcbiAyMzM6XFx0ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIHZhbHVlIGZvciBmYWlsdXJlLlxcbiAyMzQ6XFx0ICovXFxuIDIzNTpcXHRpbnQgcnRsODN4eF9yZWdpc3Rlcl9zd2l0Y2goc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG4gMjM2OlxcdHtcXG4gMjM3OlxcdFxcdHN0cnVjdCBkc2Ffc3dpdGNoICpkcyA9IFxcdTAwMjZwcml2LVxcdTAwM2VkcztcXG4gMjM4OlxcdFxcdGludCByZXQ7XFxuIDIzOTpcXHRcXG4gMjQwOlxcdFxcdHJldCA9IHByaXYtXFx1MDAzZW9wcy1cXHUwMDNlZGV0ZWN0KHByaXYpO1xcbiAyNDE6XFx0XFx0aWYgKHJldCkge1xcbiAyNDI6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZShwcml2LVxcdTAwM2VkZXYsIHJldCwgXFxcInVuYWJsZSB0byBkZXRlY3Qgc3dpdGNoXFxcXG5cXFwiKTtcXG4gMjQzOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuIDI0NDpcXHRcXHR9XFxuIDI0NTpcXHRcXG4gMjQ2OlxcdFxcdGRzLVxcdTAwM2Vwcml2ID0gcHJpdjtcXG4gMjQ3OlxcdFxcdGRzLVxcdTAwM2VkZXYgPSBwcml2LVxcdTAwM2VkZXY7XFxuIDI0ODpcXHRcXHRkcy1cXHUwMDNlb3BzID0gcHJpdi1cXHUwMDNldmFyaWFudC1cXHUwMDNlZHNfb3BzO1xcbiAyNDk6XFx0XFx0ZHMtXFx1MDAzZXBoeWxpbmtfbWFjX29wcyA9IHByaXYtXFx1MDAzZXZhcmlhbnQtXFx1MDAzZXBoeWxpbmtfbWFjX29wcztcXG4gMjUwOlxcdFxcdGRzLVxcdTAwM2VudW1fcG9ydHMgPSBwcml2LVxcdTAwM2VudW1fcG9ydHM7XFxuIDI1MTpcXHRcXG4gMjUyOlxcdFxcdHJldCA9IGRzYV9yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbiAyNTM6XFx0XFx0aWYgKHJldCkge1xcbiAyNTQ6XFx0XFx0XFx0ZGV2X2Vycl9wcm9iZShwcml2LVxcdTAwM2VkZXYsIHJldCwgXFxcInVuYWJsZSB0byByZWdpc3RlciBzd2l0Y2hcXFxcblxcXCIpO1xcbiAyNTU6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4gMjU2OlxcdFxcdH1cXG4gMjU3OlxcdFxcbiAyNTg6XFx0XFx0cmV0dXJuIDA7XFxuIDI1OTpcXHR9XFxuIDI2MDpcXHRFWFBPUlRfU1lNQk9MX05TX0dQTChydGw4M3h4X3JlZ2lzdGVyX3N3aXRjaCwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuIDI2MTpcXHRcXG4gMjYyOlxcdC8qKlxcbiAyNjM6XFx0ICogcnRsODN4eF91bnJlZ2lzdGVyX3N3aXRjaCgpIC0gdW5yZWdpc3RlciBhIHN3aXRjaFxcbiAyNjQ6XFx0ICogQHByaXY6IHJlYWx0ZWtfcHJpdiBwb2ludGVyXFxuIDI2NTpcXHQgKlxcbiAyNjY6XFx0ICogVGhpcyBmdW5jdGlvbiB1bnJlZ2lzdGVyIGEgRFNBIHN3aXRjaC5cXG4gMjY3OlxcdCAqXFxuIDI2ODpcXHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuXFxuIDI2OTpcXHQgKiBSZXR1cm46IE5vdGhpbmcuXFxuIDI3MDpcXHQgKi9cXG4gMjcxOlxcdHZvaWQgcnRsODN4eF91bnJlZ2lzdGVyX3N3aXRjaChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbiAyNzI6XFx0e1xcbiAyNzM6XFx0XFx0c3RydWN0IGRzYV9zd2l0Y2ggKmRzID0gXFx1MDAyNnByaXYtXFx1MDAzZWRzO1xcbiAyNzQ6XFx0XFxuIDI3NTpcXHRcXHRkc2FfdW5yZWdpc3Rlcl9zd2l0Y2goZHMpO1xcbiAyNzY6XFx0fVxcbiAyNzc6XFx0RVhQT1JUX1NZTUJPTF9OU19HUEwocnRsODN4eF91bnJlZ2lzdGVyX3N3aXRjaCwgXFxcIlJFQUxURUtfRFNBXFxcIik7XFxuIDI3ODpcXHRcXG4gMjc5OlxcdC8qKlxcbiAyODA6XFx0ICogcnRsODN4eF9zaHV0ZG93bigpIC0gc2h1dGRvd24gYSBzd2l0Y2hcXG4gMjgxOlxcdCAqIEBwcml2OiByZWFsdGVrX3ByaXYgcG9pbnRlclxcbiAyODI6XFx0ICpcXG4gMjgzOlxcdCAqIFRoaXMgZnVuY3Rpb24gc2h1dHMgZG93biB0aGUgRFNBIHN3aXRjaCBhbmQgY2xlYW5zIHRoZSBwbGF0Zm9ybSBkcml2ZXIgZGF0YSxcXG4gMjg0OlxcdCAqIHRvIHByZXZlbnQgcmVhbHRla197c21pLG1kaW99X3JlbW92ZSgpIGZyb20gcnVubmluZyBhZnRlcndhcmRzLCB3aGljaCBpc1xcbiAyODU6XFx0ICogcG9zc2libGUgaWYgdGhlIHBhcmVudCBidXMgaW1wbGVtZW50cyBpdHMgb3duIC5zaHV0ZG93bigpIGFzIC5yZW1vdmUoKS5cXG4gMjg2OlxcdCAqXFxuIDI4NzpcXHQgKiBDb250ZXh0OiBDYW4gc2xlZXAuXFxuIDI4ODpcXHQgKiBSZXR1cm46IE5vdGhpbmcuXFxuIDI4OTpcXHQgKi9cXG4gMjkwOlxcdHZvaWQgcnRsODN4eF9zaHV0ZG93bihzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo0NC42MDYzMzI1MzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjI2OTAyNTc4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUmVhbHRlayBTd2l0Y2ggSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGZvY3VzIHJpZ2h0IG5vdyBpcyBvbiBob3cgdGhlc2UgUmVhbHRlayBFdGhlcm5ldCBzd2l0Y2ggQVNJQ3MsIHNwZWNpZmljYWxseSB0aG9zZSBjb25uZWN0ZWQgdmlhIE1ESU8gb3IgU01JIGxpa2UgdGhlIHJ0bDgzNjVtYiBhbmQgcnRsODM2NnJiLCBhcmUgaW5pdGlhbGl6ZWQgYW5kIHJlc2V0IHdpdGhpbiB0aGUgc3lzdGVtLiBJIHNlZSB0aGF0IGByZWFsdGVrX21kaW9fcHJvYmVgIGFuZCBgcmVhbHRla19zbWlfcHJvYmVgIGFyZSByZXNwb25zaWJsZSBmb3IgdGhlIHByb2JpbmcgcHJvY2Vzcy4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVzZXQgc2VxdWVuY2UuIEkgbmVlZCB0byB0cmFjZSB0aGUgZXhlY3V0aW9uIHBhdGggb2YgdGhlIHJlc2V0IGZ1bmN0aW9uLCBwYXJ0aWN1bGFybHkgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYC4gTXkgbmV4dCBzdGVwIGlzIHRvIGV4YW1pbmUgd2hlcmUgYHJ0bDgzNjVtYl9yZXNldF9jaGlwYCBpcyBjYWxsZWQgd2l0aGluIHRoZSBjb2RlLiBUbyBiZSB0aG9yb3VnaCwgSSBzaG91bGQgYWxzbyBzZWFyY2ggZm9yIGFueSBvdGhlciBpbnN0YW5jZXMgb2YgYHJlc2V0X2NoaXBgIG9yLCBhcyBhIHNhbml0eSBjaGVjaywgIGBydGw4MzY1bWJfcmVzZXRfY2hpcGAgdG8gc2VlIGlmIHRoZXJlIGFyZSBvdGhlciBwbGFjZXMgdGhhdCBhcmUgcmVsZXZhbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQyNjM1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6NDYuODc1MzYxMDU4WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDkxNDczMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyZXNldF9jaGlwXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3JlYWx0ZWsuaD0xMDg9c3RydWN0IHJlYWx0ZWtfb3BzIHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmgtMTA5LVxcdGludFxcdCgqZGV0ZWN0KShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9yZWFsdGVrLmg6MTEwOlxcdGludFxcdCgqcmVzZXRfY2hpcCkoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcmVhbHRlay5oLTExMS1cXHRpbnRcXHQoKnNldHVwKShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KTtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9Mjk1ND1zdGF0aWMgaW50IHJ0bDgzNjVtYl9zd2l0Y2hfaW5pdChzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yOTgzLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6Mjk4NDpzdGF0aWMgaW50IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0yOTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzAyMD1zdGF0aWMgaW50IHJ0bDgzNjVtYl9zZXR1cChzdHJ1Y3QgZHNhX3N3aXRjaCAqZHMpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMwNDAtXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMDQxOlxcdHJldCA9IHJ0bDgzNjVtYl9yZXNldF9jaGlwKHByaXYpO1xcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzA0Mi1cXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYz0xNjg1PXN0YXRpYyBpbnQgcnRsODM2NnJiX3BoeV93cml0ZShzdHJ1Y3QgcmVhbHRla19wcml2ICpwcml2LCBpbnQgcGh5LCBpbnQgcmVnbnVtLFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTcxNS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYzoxNzE2OnN0YXRpYyBpbnQgcnRsODM2NnJiX3Jlc2V0X2NoaXAoc3RydWN0IHJlYWx0ZWtfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xNzE3LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jPTE3NDI9c3RhdGljIGludCBydGw4MzY2cmJfZGV0ZWN0KHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY2cmIuYy0xNzczLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjZyYi5jOjE3NzQ6XFx0cmV0ID0gcnRsODM2NnJiX3Jlc2V0X2NoaXAocHJpdik7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NnJiLmMtMTc3NS1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo0Ni45MjYyODQzNDhaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjgxMTQzMjU0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nIHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFJUTDgzNjVNQiBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggZHJpdmVyLiBJIHNlZSB0aGF0IGBydGw4MzY1bWJfcmVzZXRfY2hpcGAgaXMgY2FsbGVkIGJ5IGBydGw4MzY1bWJfc2V0dXBgLiBUaGUgYHJ0bDgzNjVtYl9zZXR1cGAgZnVuY3Rpb24gaXMgY2xlYXJseSBjcnVjaWFsIGZvciBpbml0aWFsaXppbmcgdGhpcyBwYXJ0aWN1bGFyIHN3aXRjaCBtb2RlbCwgYW5kIGl0J3MgbG9jYXRlZCB3aXRoaW4gYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIHdpdGhpbiBgcnRsODM2NW1iX3NldHVwYCwgYW5kIGhvdyBgcnRsODM2NW1iX3Jlc2V0X2NoaXBgIGZpdHMgaW50byB0aGUgd2hvbGUgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIE15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIHRoZSBjb2RlIHN1cnJvdW5kaW5nIGBydGw4MzY1bWJfc2V0dXBgIGluIHRoZSBgcnRsODM2NW1iX21haW4uY2AgZmlsZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGxhcmdlciBjb250ZXh0IG9mIHRoZSBzZXR1cCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDM3MjAsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo0OS43Mzc3MTkyNzhaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzAxNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzAxNTpcXHRcXHRcXHRtc2xlZXAoamlmZmllc190b19tc2VjcyhyZW1haW5pbmcpKTtcXG4zMDE2OlxcdFxcbjMwMTc6XFx0XFx0cmV0dXJuIDA7XFxuMzAxODpcXHR9XFxuMzAxOTpcXHRcXG4zMDIwOlxcdHN0YXRpYyBpbnQgcnRsODM2NW1iX3NldHVwKHN0cnVjdCBkc2Ffc3dpdGNoICpkcylcXG4zMDIxOlxcdHtcXG4zMDIyOlxcdFxcdHN0cnVjdCByZWFsdGVrX3ByaXYgKnByaXYgPSBkcy1cXHUwMDNlcHJpdjtcXG4zMDIzOlxcdFxcdHN0cnVjdCBydGw4MzY1bWJfY3B1ICpjcHU7XFxuMzAyNDpcXHRcXHR1MzIgZG93bnBvcnRzX21hc2sgPSAwO1xcbjMwMjU6XFx0XFx0dTMyIHVwcG9ydHNfbWFzayA9IDA7XFxuMzAyNjpcXHRcXHRzdHJ1Y3QgcnRsODM2NW1iICptYjtcXG4zMDI3OlxcdFxcdHN0cnVjdCBkc2FfcG9ydCAqZHA7XFxuMzAyODpcXHRcXHRpbnQgcmV0O1xcbjMwMjk6XFx0XFxuMzAzMDpcXHRcXHRtYiA9IHByaXYtXFx1MDAzZWNoaXBfZGF0YTtcXG4zMDMxOlxcdFxcdGNwdSA9IFxcdTAwMjZtYi1cXHUwMDNlY3B1O1xcbjMwMzI6XFx0XFxuMzAzMzpcXHRcXHRtYi1cXHUwMDNlcGNzLm9wcyA9IFxcdTAwMjZydGw4MzY1bWJfcGNzX29wcztcXG4zMDM0OlxcdFxcbjMwMzU6XFx0XFx0LyogVGhlIFNlckRlcyBoYXMgbm8gbGluayBpbnRlcnJ1cHQgd2lyZWQgdXAsIHNvIHBoeWxpbmsgbXVzdCBwb2xsIHRoZVxcbjMwMzY6XFx0XFx0ICogUENTIGZvciBsaW5rIGNoYW5nZXMgd2hlbiBpdCB0cmFja3MgdGhlIGxpbmsgdGhyb3VnaCBwY3NfZ2V0X3N0YXRlKClcXG4zMDM3OlxcdFxcdCAqIChpbi1iYW5kIG1vZGUgd2l0aCBhdXRvbmVnb3RpYXRpb24gZGlzYWJsZWQpLlxcbjMwMzg6XFx0XFx0ICovXFxuMzAzOTpcXHRcXHRtYi1cXHUwMDNlcGNzLnBvbGwgPSB0cnVlO1xcbjMwNDA6XFx0XFxuMzA0MTpcXHRcXHRyZXQgPSBydGw4MzY1bWJfcmVzZXRfY2hpcChwcml2KTtcXG4zMDQyOlxcdFxcdGlmIChyZXQpIHtcXG4zMDQzOlxcdFxcdFxcdGRldl9lcnIocHJpdi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIHJlc2V0IGNoaXA6ICVwZVxcXFxuXFxcIixcXG4zMDQ0OlxcdFxcdFxcdFxcdEVSUl9QVFIocmV0KSk7XFxuMzA0NTpcXHRcXHRcXHRnb3RvIG91dF9lcnJvcjtcXG4zMDQ2OlxcdFxcdH1cXG4zMDQ3OlxcdFxcbjMwNDg6XFx0XFx0cmV0ID0gcnRsODM2NW1iX3Nkc19wcm9iZV9vcHRpb24ocHJpdik7XFxuMzA0OTpcXHRcXHRpZiAocmV0KSB7XFxuMzA1MDpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBwcm9iZSBTZXJEZXMgY2hpcCBvcHRpb246ICVwZVxcXFxuXFxcIixcXG4zMDUxOlxcdFxcdFxcdFxcdEVSUl9QVFIocmV0KSk7XFxuMzA1MjpcXHRcXHRcXHRnb3RvIG91dF9lcnJvcjtcXG4zMDUzOlxcdFxcdH1cXG4zMDU0OlxcdFxcbjMwNTU6XFx0XFx0LyogQ29uZmlndXJlIHN3aXRjaCB0byB2ZW5kb3ItZGVmaW5lZCBpbml0aWFsIHN0YXRlICovXFxuMzA1NjpcXHRcXHRyZXQgPSBydGw4MzY1bWJfc3dpdGNoX2luaXQocHJpdik7XFxuMzA1NzpcXHRcXHRpZiAocmV0KSB7XFxuMzA1ODpcXHRcXHRcXHRkZXZfZXJyKHByaXYtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBpbml0aWFsaXplIHN3aXRjaDogJXBlXFxcXG5cXFwiLFxcbjMwNTk6XFx0XFx0XFx0XFx0RVJSX1BUUihyZXQpKTtcXG4zMDYwOlxcdFxcdFxcdGdvdG8gb3V0X2Vycm9yO1xcbjMwNjE6XFx0XFx0fVxcbjMwNjI6XFx0XFxuMzA2MzpcXHRcXHRpZiAobWItXFx1MDAzZXNkc19zdXBwb3J0ZWQpIHtcXG4zMDY0OlxcdFxcdFxcdHJldCA9IHJ0bDgzNjVtYl9zZHNfcmFpc2VfcmF0ZV9saW1pdHMocHJpdik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjQ5LjczNzkwMTA5OVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxODIzMDg3ODk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgcnRsODM2NW1iIERyaXZlciBTZXR1cCoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSBgcnRsODM2NW1iX3NldHVwYCBpcyB0aGUgRFNBIHNldHVwIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgYHJ0bDgzNjVtYmAgZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRoZSBgcnRsODM2NW1iX3N3aXRjaF9vcHNgIHN0cnVjdHVyZS4gTXkgbmV4dCBzdGVwLCBuYXR1cmFsbHksIGlzIHRvIHBpbnBvaW50IHRoZSBleGFjdCBkZWZpbml0aW9uIG9mIGBydGw4MzY1bWJfc3dpdGNoX29wc2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzdHJ1Y3R1cmUgYW5kIGhvdyBgcnRsODM2NW1iX3NldHVwYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSBvZiB0aGUgZHJpdmVyJ3Mgb3BlcmF0aW9uLiBLbm93aW5nIHdoZXJlIHRoaXMgaXMgZGVmaW5lZCB3aWxsIGdpdmUgbWUgdmFsdWFibGUgY29udGV4dCBmb3IgaG93IHRoZSBzd2l0Y2ggaXMgaW5pdGlhbGl6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0ODI5LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo1MS41NjA5OTEzMjVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MzAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzMwMCxcbiAgXCJMaW5lQ291bnRcIjogNzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzMwMDpcXHRcXG4zMzAxOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5bGlua19tYWNfb3BzIHJ0bDgzNjVtYl9waHlsaW5rX21hY19vcHMgPSB7XFxuMzMwMjpcXHRcXHQubWFjX3NlbGVjdF9wY3MgPSBydGw4MzY1bWJfcGh5bGlua19tYWNfc2VsZWN0X3BjcyxcXG4zMzAzOlxcdFxcdC5tYWNfY29uZmlnID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2NvbmZpZyxcXG4zMzA0OlxcdFxcdC5tYWNfbGlua19kb3duID0gcnRsODM2NW1iX3BoeWxpbmtfbWFjX2xpbmtfZG93bixcXG4zMzA1OlxcdFxcdC5tYWNfbGlua191cCA9IHJ0bDgzNjVtYl9waHlsaW5rX21hY19saW5rX3VwLFxcbjMzMDY6XFx0fTtcXG4zMzA3OlxcdFxcbjMzMDg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBkc2Ffc3dpdGNoX29wcyBydGw4MzY1bWJfc3dpdGNoX29wcyA9IHtcXG4zMzA5OlxcdFxcdC5nZXRfdGFnX3Byb3RvY29sID0gcnRsODM2NW1iX2dldF90YWdfcHJvdG9jb2wsXFxuMzMxMDpcXHRcXHQuY2hhbmdlX3RhZ19wcm90b2NvbCA9IHJ0bDgzNjVtYl9jaGFuZ2VfdGFnX3Byb3RvY29sLFxcbjMzMTE6XFx0XFx0LnNldHVwID0gcnRsODM2NW1iX3NldHVwLFxcbjMzMTI6XFx0XFx0LnRlYXJkb3duID0gcnRsODM2NW1iX3RlYXJkb3duLFxcbjMzMTM6XFx0XFx0LnBoeWxpbmtfZ2V0X2NhcHMgPSBydGw4MzY1bWJfcGh5bGlua19nZXRfY2FwcyxcXG4zMzE0OlxcdFxcdC5wb3J0X2JyaWRnZV9qb2luID0gcnRsODN4eF9wb3J0X2JyaWRnZV9qb2luLFxcbjMzMTU6XFx0XFx0LnBvcnRfYnJpZGdlX2xlYXZlID0gcnRsODN4eF9wb3J0X2JyaWRnZV9sZWF2ZSxcXG4zMzE2OlxcdFxcdC5wb3J0X3ByZV9icmlkZ2VfZmxhZ3MgPSBydGw4MzY1bWJfcG9ydF9wcmVfYnJpZGdlX2ZsYWdzLFxcbjMzMTc6XFx0XFx0LnBvcnRfYnJpZGdlX2ZsYWdzID0gcnRsODN4eF9wb3J0X2JyaWRnZV9mbGFncyxcXG4zMzE4OlxcdFxcdC5wb3J0X3N0cF9zdGF0ZV9zZXQgPSBydGw4MzY1bWJfcG9ydF9zdHBfc3RhdGVfc2V0LFxcbjMzMTk6XFx0XFx0LnBvcnRfZmFzdF9hZ2UgPSBydGw4M3h4X3BvcnRfZmFzdF9hZ2UsXFxuMzMyMDpcXHRcXHQucG9ydF9mZGJfYWRkID0gcnRsODN4eF9wb3J0X2ZkYl9hZGQsXFxuMzMyMTpcXHRcXHQucG9ydF9mZGJfZGVsID0gcnRsODN4eF9wb3J0X2ZkYl9kZWwsXFxuMzMyMjpcXHRcXHQucG9ydF9mZGJfZHVtcCA9IHJ0bDgzeHhfcG9ydF9mZGJfZHVtcCxcXG4zMzIzOlxcdFxcdC5wb3J0X21kYl9hZGQgPSBydGw4M3h4X3BvcnRfbWRiX2FkZCxcXG4zMzI0OlxcdFxcdC5wb3J0X21kYl9kZWwgPSBydGw4M3h4X3BvcnRfbWRiX2RlbCxcXG4zMzI1OlxcdFxcdC5wb3J0X3ZsYW5fYWRkID0gcnRsODM2NW1iX3BvcnRfdmxhbl9hZGQsXFxuMzMyNjpcXHRcXHQucG9ydF92bGFuX2RlbCA9IHJ0bDgzNjVtYl9wb3J0X3ZsYW5fZGVsLFxcbjMzMjc6XFx0XFx0LnBvcnRfdmxhbl9maWx0ZXJpbmcgPSBydGw4MzY1bWJfcG9ydF92bGFuX2ZpbHRlcmluZyxcXG4zMzI4OlxcdFxcdC5nZXRfc3RyaW5ncyA9IHJ0bDgzNjVtYl9nZXRfc3RyaW5ncyxcXG4zMzI5OlxcdFxcdC5nZXRfZXRodG9vbF9zdGF0cyA9IHJ0bDgzNjVtYl9nZXRfZXRodG9vbF9zdGF0cyxcXG4zMzMwOlxcdFxcdC5nZXRfc3NldF9jb3VudCA9IHJ0bDgzNjVtYl9nZXRfc3NldF9jb3VudCxcXG4zMzMxOlxcdFxcdC5nZXRfZXRoX3BoeV9zdGF0cyA9IHJ0bDgzNjVtYl9nZXRfcGh5X3N0YXRzLFxcbjMzMzI6XFx0XFx0LmdldF9ldGhfbWFjX3N0YXRzID0gcnRsODM2NW1iX2dldF9tYWNfc3RhdHMsXFxuMzMzMzpcXHRcXHQuZ2V0X2V0aF9jdHJsX3N0YXRzID0gcnRsODM2NW1iX2dldF9jdHJsX3N0YXRzLFxcbjMzMzQ6XFx0XFx0LmdldF9zdGF0czY0ID0gcnRsODM2NW1iX2dldF9zdGF0czY0LFxcbjMzMzU6XFx0XFx0LnBvcnRfY2hhbmdlX210dSA9IHJ0bDgzNjVtYl9wb3J0X2NoYW5nZV9tdHUsXFxuMzMzNjpcXHRcXHQucG9ydF9tYXhfbXR1ID0gcnRsODM2NW1iX3BvcnRfbWF4X210dSxcXG4zMzM3OlxcdFxcdC5wb3J0X2hzcl9qb2luID0gZHNhX3BvcnRfc2ltcGxlX2hzcl9qb2luLFxcbjMzMzg6XFx0XFx0LnBvcnRfaHNyX2xlYXZlID0gZHNhX3BvcnRfc2ltcGxlX2hzcl9sZWF2ZSxcXG4zMzM5OlxcdH07XFxuMzM0MDpcXHRcXG4zMzQxOlxcdHN0YXRpYyBjb25zdCBzdHJ1Y3QgcmVhbHRla19vcHMgcnRsODM2NW1iX29wcyA9IHtcXG4zMzQyOlxcdFxcdC5kZXRlY3QgPSBydGw4MzY1bWJfZGV0ZWN0LFxcbjMzNDM6XFx0XFx0LnBvcnRfYWRkX2lzb2xhdGlvbiA9IHJ0bDgzNjVtYl9wb3J0X2FkZF9pc29sYXRpb24sXFxuMzM0NDpcXHRcXHQucG9ydF9yZW1vdmVfaXNvbGF0aW9uID0gcnRsODM2NW1iX3BvcnRfcmVtb3ZlX2lzb2xhdGlvbixcXG4zMzQ1OlxcdFxcdC5wb3J0X3NldF9lZmlkID0gcnRsODM2NW1iX3BvcnRfc2V0X2VmaWQsXFxuMzM0NjpcXHRcXHQucG9ydF9zZXRfbGVhcm5pbmcgPSBydGw4MzY1bWJfcG9ydF9zZXRfbGVhcm5pbmcsXFxuMzM0NzpcXHRcXHQucG9ydF9zZXRfdWNhc3RfZmxvb2QgPSBydGw4MzY1bWJfcG9ydF9zZXRfdWNhc3RfZmxvb2QsXFxuMzM0ODpcXHRcXHQucG9ydF9zZXRfbWNhc3RfZmxvb2QgPSBydGw4MzY1bWJfcG9ydF9zZXRfbWNhc3RfZmxvb2QsXFxuMzM0OTpcXHRcXHQucG9ydF9zZXRfYmNhc3RfZmxvb2QgPSBydGw4MzY1bWJfcG9ydF9zZXRfYmNhc3RfZmxvb2QsXFxuMzM1MDpcXHRcXHQubDJfYWRkX3VjID0gcnRsODM2NW1iX2wyX2FkZF91YyxcXG4zMzUxOlxcdFxcdC5sMl9kZWxfdWMgPSBydGw4MzY1bWJfbDJfZGVsX3VjLFxcbjMzNTI6XFx0XFx0LmwyX2dldF9uZXh0X3VjID0gcnRsODM2NW1iX2wyX2dldF9uZXh0X3VjLFxcbjMzNTM6XFx0XFx0LmwyX2FkZF9tYyA9IHJ0bDgzNjVtYl9sMl9hZGRfbWMsXFxuMzM1NDpcXHRcXHQubDJfZGVsX21jID0gcnRsODM2NW1iX2wyX2RlbF9tYyxcXG4zMzU1OlxcdFxcdC5sMl9mbHVzaCA9IHJ0bDgzNjVtYl9sMl9mbHVzaCxcXG4zMzU2OlxcdFxcdC5waHlfcmVhZCA9IHJ0bDgzNjVtYl9waHlfcmVhZCxcXG4zMzU3OlxcdFxcdC5waHlfd3JpdGUgPSBydGw4MzY1bWJfcGh5X3dyaXRlLFxcbjMzNTg6XFx0fTtcXG4zMzU5OlxcdFxcbjMzNjA6XFx0Y29uc3Qgc3RydWN0IHJlYWx0ZWtfdmFyaWFudCBydGw4MzY1bWJfdmFyaWFudCA9IHtcXG4zMzYxOlxcdFxcdC5kc19vcHMgPSBcXHUwMDI2cnRsODM2NW1iX3N3aXRjaF9vcHMsXFxuMzM2MjpcXHRcXHQub3BzID0gXFx1MDAyNnJ0bDgzNjVtYl9vcHMsXFxuMzM2MzpcXHRcXHQucGh5bGlua19tYWNfb3BzID0gXFx1MDAyNnJ0bDgzNjVtYl9waHlsaW5rX21hY19vcHMsXFxuMzM2NDpcXHRcXHQuY2xrX2RlbGF5ID0gMTAsXFxuMzM2NTpcXHRcXHQuY21kX3JlYWQgPSAweGI5LFxcbjMzNjY6XFx0XFx0LmNtZF93cml0ZSA9IDB4YjgsXFxuMzM2NzpcXHRcXHQuY2hpcF9kYXRhX3N6ID0gc2l6ZW9mKHN0cnVjdCBydGw4MzY1bWIpLFxcbjMzNjg6XFx0fTtcXG4zMzY5OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo1MS41NjExNjA4MTZaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjUxNTI3NzgyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHJ0bDgzNjVtYl92YXJpYW50IEluc3RhbnRpYXRpb24qKlxuXG5BbHJpZ2h0LCBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBidXNlcyBhcmUgYWN0dWFsbHkgdXNpbmcgb3IgaW5zdGFudGlhdGluZyB0aGlzIGBydGw4MzY1bWJfdmFyaWFudGAgdGhpbmcuIFRoYXQncyB0aGUgY29yZSBxdWVzdGlvbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IHdpdGggYSB0YXJnZXRlZCBzZWFyY2ggZm9yIHNwZWNpZmljIGRyaXZlcnMgcmVsYXRlZCB0byB0aGlzIGNvbXBvbmVudC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gbG9vayBmb3IgaW5zdGFuY2VzIG9mIGBydGw4MzY1bWJfb2ZfbWF0Y2hgIG9yIHJlbGF0ZWQgdGVybXMuIEknbSB0aGlua2luZyBhYm91dCB0aGUgc3RhbmRhcmQgbWVjaGFuaXNtcyBoZXJlLiBJZiB0aGlzIGlzIGEgc3dpdGNoIGl0IHByb2JhYmx5IGlzIGNvbm5lY3RlZCBieSBTTUkgb3IgTURJTy4gSWYgdGhlIGRyaXZlciBpcyB3cml0dGVuIGNvcnJlY3RseSBpdCB3aWxsIHVzZSB0aGUgY29ycmVjdCBjb21wYXRpYmxlIHN0cmluZyBhbmQgdGhlIGRyaXZlciBwcm9iZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBkdXJpbmcgZGV2aWNlIHRyZWUgaW5zdGFudGlhdGlvbi5cblxuTGV0J3Mgc2VlIHdoYXQgSSBjYW4gZmluZC4gSSBleHBlY3QgdGhhdCBJJ2xsIHF1aWNrbHkgbmFycm93IGRvd24gdGhlIHJlbGV2YW50IGRyaXZlcnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcgYnVzIGFzc29jaWF0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3ODcsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTA4VDAwOjM2OjU0LjA3NjQ0MjE3N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4ODc3OTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnRsODM2NW1iX29mX21hdGNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM2MD1jb25zdCBzdHJ1Y3QgcmVhbHRla192YXJpYW50IHJ0bDgzNjVtYl92YXJpYW50ID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzY5LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM6MzM3MDpzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY1bWJfb2ZfbWF0Y2hbXSA9IHtcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jLTMzNzEtXFx0eyAuY29tcGF0aWJsZSA9IFxcXCJyZWFsdGVrLHJ0bDgzNjVtYlxcXCIsIC5kYXRhID0gXFx1MDAyNnJ0bDgzNjVtYl92YXJpYW50LCB9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzczLX07XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYzozMzc0Ok1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJ0bDgzNjVtYl9vZl9tYXRjaCk7XFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzc1LVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmM9MzM3Nj1zdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM3OC1cXHRcXHQubmFtZSA9IFxcXCJydGw4MzY1bWItc21pXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzNzk6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM4MC1cXHR9LFxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYz0zMzg2PXN0YXRpYyBzdHJ1Y3QgbWRpb19kcml2ZXIgcnRsODM2NW1iX21kaW9fZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uYy0zMzg4LVxcdFxcdC5uYW1lID0gXFxcInJ0bDgzNjVtYi1tZGlvXFxcIixcXG5kcml2ZXJzL25ldC9kc2EvcmVhbHRlay9ydGw4MzY1bWJfbWFpbi5jOjMzODk6XFx0XFx0Lm9mX21hdGNoX3RhYmxlID0gcnRsODM2NW1iX29mX21hdGNoLFxcbmRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmMtMzM5MC1cXHR9LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo1NC4xMjgzMzYwMjhaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6Mzg4MzQ4NTI3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSVEw4MzY1TUIgU3dpdGNoIERyaXZlcidzIEZ1enppbmcgU3VpdGFiaWxpdHkqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEkgc2VlIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgYHJ0bDgzNjVtYl9zbWlfZHJpdmVyYCwgd2hpY2ggaXMgYSBgcGxhdGZvcm1fZHJpdmVyYCwgYW5kIHRoZSBgcnRsODM2NW1iX21kaW9fZHJpdmVyYCwgYW4gYG1kaW9fZHJpdmVyYC4gQm90aCBhcmUgbWF0Y2hlZCB0aHJvdWdoIERldmljZSBUcmVlLCBzbyBpdCdzIGEgdHlwaWNhbCBlbWJlZGRlZCBzeXN0ZW0gc2V0dXAuIFRoZSBrZXkgcXVlc3Rpb24gaXMgd2hldGhlciB0aGlzIHN3aXRjaCBoYXJkd2FyZSBpcyBhY3R1YWxseSBpbnN0YW50aWF0ZWQgd2l0aGluIGEgc3RhbmRhcmQgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VLiBBcmUgdGhlcmUgYW55IHN0YW5kYXJkIGVtdWxhdGVkIGRldmljZXMsIGxpa2UgdmlydGlvLCBVU0IgZ2FkZ2V0cywgbG9vcGJhY2sgaW50ZXJmYWNlcywgb3IgdHVuL3RhcCB0aGF0IHdvdWxkIHN0YW5kIGluIGZvciB0aGlzIGhhcmR3YXJlP1xuXG5Ob3csIGNvbnNpZGVyaW5nIHRoZSB0cmlhZ2UgZ3VpZGVsaW5lcywgXCJyZWFjaGFiaWxpdHkgaXMgdGhlIHByaW1hcnkgZ2F0ZVwiLiBGdXp6aW5nIGlzIHBvaW50bGVzcyBpZiB0aGUgY29kZSAqY2Fubm90KiBleGVjdXRlIGluIGEgc3RhbmRhcmQgZW52aXJvbm1lbnQuIFNwZWNpZmljYWxseSwgaWYgdGhlIGNvZGUgaXMgdW5yZWFjaGFibGUgaW4gR0NFIG9yIFFFTVUgdXNpbmcgZW11bGF0ZWQgZGV2aWNlcywgaXQncyBhIG5vLWdvLCByZWdhcmRsZXNzIG9mIGNvbXBsZXhpdHkgb3IgYXNzZXJ0aW9ucy4gVGhlIGd1aWRlbGluZXMgZXhwbGljaXRseSBsaXN0IHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZSBsaWtlIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaGVzLCBTbWFydE5JQ3MsIG9yIEdQVXMgdGhhdCByZXF1aXJlIHBoeXNpY2FsIEFTSUMgY2FyZHMgdGhhdCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuIFRoYXQncyB3aGF0IEknbSBjb25jZXJuZWQgYWJvdXQgaGVyZS5cblxuU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzOiBEb2VzIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBEU0Egc3dpdGNoIGRyaXZlciAqcmVxdWlyZSogcGh5c2ljYWwgaGFyZHdhcmUsIHNwZWNpZmljYWxseSBEVCBiaW5kaW5ncyBvbiBhbiBlbWJlZGRlZCBib2FyZD8gV2UncmUgdGFsa2luZyBhYm91dCBhIFJlYWx0ZWsgc3dpdGNoIEFTSUMgdGhhdCdzIGxpa2VseSBjb25uZWN0ZWQgdmlhIGFuIE1ESU8gYnVzIG9yIEdQSU8tYmFzZWQgU01JIGJ1cyB0byBhIHJvdXRlciBTb0Mgb3Igc2ltaWxhciBlbWJlZGRlZCBib2FyZC4gSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzb3VyY2UgY29kZSB0byBjb25maXJtLCBzcGVjaWZpY2FsbHkgYGRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNgLCBhbmQgcmV2aWV3IGl0cyBtb2R1bGUgaW5pdGlhbGl6YXRpb24gYW5kIHByb2JlIGZ1bmN0aW9ucyB0byBnZXQgYSBiZXR0ZXIgc2Vuc2Ugb2YgaGFyZHdhcmUgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzY5NCwiT3V0cHV0VG9rZW5zIjo0OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNjo1OC4wMTE4MjQ1MzJaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY4MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2RzYS9yZWFsdGVrL3J0bDgzNjVtYl9tYWluLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM3MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM3MDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBydGw4MzY1bWJfb2ZfbWF0Y2hbXSA9IHtcXG4zMzcxOlxcdFxcdHsgLmNvbXBhdGlibGUgPSBcXFwicmVhbHRlayxydGw4MzY1bWJcXFwiLCAuZGF0YSA9IFxcdTAwMjZydGw4MzY1bWJfdmFyaWFudCwgfSxcXG4zMzcyOlxcdFxcdHsgLyogc2VudGluZWwgKi8gfSxcXG4zMzczOlxcdH07XFxuMzM3NDpcXHRNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBydGw4MzY1bWJfb2ZfbWF0Y2gpO1xcbjMzNzU6XFx0XFxuMzM3NjpcXHRzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBydGw4MzY1bWJfc21pX2RyaXZlciA9IHtcXG4zMzc3OlxcdFxcdC5kcml2ZXIgPSB7XFxuMzM3ODpcXHRcXHRcXHQubmFtZSA9IFxcXCJydGw4MzY1bWItc21pXFxcIixcXG4zMzc5OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcXG4zMzgwOlxcdFxcdH0sXFxuMzM4MTpcXHRcXHQucHJvYmUgID0gcmVhbHRla19zbWlfcHJvYmUsXFxuMzM4MjpcXHRcXHQucmVtb3ZlID0gcmVhbHRla19zbWlfcmVtb3ZlLFxcbjMzODM6XFx0XFx0LnNodXRkb3duID0gcmVhbHRla19zbWlfc2h1dGRvd24sXFxuMzM4NDpcXHR9O1xcbjMzODU6XFx0XFxuMzM4NjpcXHRzdGF0aWMgc3RydWN0IG1kaW9fZHJpdmVyIHJ0bDgzNjVtYl9tZGlvX2RyaXZlciA9IHtcXG4zMzg3OlxcdFxcdC5tZGlvZHJ2LmRyaXZlciA9IHtcXG4zMzg4OlxcdFxcdFxcdC5uYW1lID0gXFxcInJ0bDgzNjVtYi1tZGlvXFxcIixcXG4zMzg5OlxcdFxcdFxcdC5vZl9tYXRjaF90YWJsZSA9IHJ0bDgzNjVtYl9vZl9tYXRjaCxcXG4zMzkwOlxcdFxcdH0sXFxuMzM5MTpcXHRcXHQucHJvYmUgID0gcmVhbHRla19tZGlvX3Byb2JlLFxcbjMzOTI6XFx0XFx0LnJlbW92ZSA9IHJlYWx0ZWtfbWRpb19yZW1vdmUsXFxuMzM5MzpcXHRcXHQuc2h1dGRvd24gPSByZWFsdGVrX21kaW9fc2h1dGRvd24sXFxuMzM5NDpcXHR9O1xcbjMzOTU6XFx0XFxuMzM5NjpcXHRzdGF0aWMgaW50IHJ0bDgzNjVtYl9pbml0KHZvaWQpXFxuMzM5NzpcXHR7XFxuMzM5ODpcXHRcXHRpbnQgcmV0O1xcbjMzOTk6XFx0XFxuMzQwMDpcXHRcXHRyZXQgPSByZWFsdGVrX21kaW9fZHJpdmVyX3JlZ2lzdGVyKFxcdTAwMjZydGw4MzY1bWJfbWRpb19kcml2ZXIpO1xcbjM0MDE6XFx0XFx0aWYgKHJldClcXG4zNDAyOlxcdFxcdFxcdHJldHVybiByZXQ7XFxuMzQwMzpcXHRcXG4zNDA0OlxcdFxcdHJldCA9IHJlYWx0ZWtfc21pX2RyaXZlcl9yZWdpc3RlcihcXHUwMDI2cnRsODM2NW1iX3NtaV9kcml2ZXIpO1xcbjM0MDU6XFx0XFx0aWYgKHJldCkge1xcbjM0MDY6XFx0XFx0XFx0cmVhbHRla19tZGlvX2RyaXZlcl91bnJlZ2lzdGVyKFxcdTAwMjZydGw4MzY1bWJfbWRpb19kcml2ZXIpO1xcbjM0MDc6XFx0XFx0XFx0cmV0dXJuIHJldDtcXG4zNDA4OlxcdFxcdH1cXG4zNDA5OlxcdFxcbjM0MTA6XFx0XFx0cmV0dXJuIDA7XFxuMzQxMTpcXHR9XFxuMzQxMjpcXHRtb2R1bGVfaW5pdChydGw4MzY1bWJfaW5pdCk7XFxuMzQxMzpcXHRcXG4zNDE0OlxcdHN0YXRpYyB2b2lkIF9fZXhpdCBydGw4MzY1bWJfZXhpdCh2b2lkKVxcbjM0MTU6XFx0e1xcbjM0MTY6XFx0XFx0cmVhbHRla19zbWlfZHJpdmVyX3VucmVnaXN0ZXIoXFx1MDAyNnJ0bDgzNjVtYl9zbWlfZHJpdmVyKTtcXG4zNDE3OlxcdFxcdHJlYWx0ZWtfbWRpb19kcml2ZXJfdW5yZWdpc3RlcihcXHUwMDI2cnRsODM2NW1iX21kaW9fZHJpdmVyKTtcXG4zNDE4OlxcdH1cXG4zNDE5OlxcdG1vZHVsZV9leGl0KHJ0bDgzNjVtYl9leGl0KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMDhUMDA6MzY6NTguMDExOTk0MTUyWiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjQ0NDQ5MzU0ODIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUlRMODM2NU1CIERyaXZlcidzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgYHJ0bDgzNjVtYl9tYWluLmNgLCBhbmQgaXQncyBwcmV0dHkgY2xlYXIgdGhpcyBpcyBhIGRlYWQgZW5kIGZvciBzdGFuZGFyZCBmdXp6aW5nIHNldHVwcy4gSSBtZWFuLCBpdCdzIGEgZHJpdmVyIGZvciB0aGUgUmVhbHRlayBSVEw4MzY1TUIgZXRoZXJuZXQgc3dpdGNoIEFTSUMuIEl0J3MgZGVzaWduZWQgdG8gdGFsayB0byB0aGUgY2hpcCB2aWEgTURJTyBvciBHUElPIFNNSSwgd2hpY2ggaW1tZWRpYXRlbHkgdGVsbHMgbWUgdGhpcyBpc24ndCBzb21ldGhpbmcgSSBjYW4gdHJpZ2dlciBpbiBhIHN0YW5kYXJkIFFFTVUgb3Igc3l6a2FsbGVyIGVudmlyb25tZW50IG9uIGFtZDY0LiBUaGVzZSBhcmUgdmlydHVhbGl6ZWQgc2V0dXBzOyB0aGV5J3JlIG5vdCBnb2luZyB0byBtYWdpY2FsbHkgZW11bGF0ZSBwaHlzaWNhbCBuZXR3b3JrIHN3aXRjaCBoYXJkd2FyZS5cblxuRXZlbiB0aGUgY3J1Y2lhbCBmdW5jdGlvbnMgbGlrZSBgcnRsODM2NW1iX3NldHVwKClgIGFuZCBgcnRsODM2NW1iX3Jlc2V0X2NoaXAoKWAg4oCTIHRoZSBoZWFydCBvZiB0aGUgZHJpdmVyIOKAkyBhcmUgb25seSBjYWxsZWQgd2hlbiB0aGUga2VybmVsIGFjdHVhbGx5ICpwcm9iZXMqIGZvciB0aGlzIHNwZWNpZmljIHN3aXRjaCBkZXZpY2UuIEl0J3MgYSBmdW5kYW1lbnRhbCBoYXJkd2FyZSBkZXBlbmRlbmN5LlxuXG5MZXQgbWUganVzdCBzb2xpZGlmeSB0aGlzIGluIG15IG1pbmQgYnkgcnVubmluZyB0aHJvdWdoIHRoZSBjaGVja2xpc3Q6XG5cbjEuICAqKkFyY2hpdGVjdHVyZToqKiBhbWQ2NCDigJMgWWVwLCBzdGFuZGFyZCBmb3IgbWFueSBmdXp6aW5nIHNldHVwcywgYnV0IGlycmVsZXZhbnQgaGVyZSBkdWUgdG8gdGhlIGhhcmR3YXJlIHJlcXVpcmVtZW50LlxuMi4gICoqRmlsZToqKiBgZHJpdmVycy9uZXQvZHNhL3JlYWx0ZWsvcnRsODM2NW1iX21haW4uY2Ag4oCTIENvbmZpcm1lZCwgdGhpcyBpcyB0aGUgZHJpdmVyIGNvZGUgaW4gcXVlc3Rpb24uXG4zLiAgKipIYXJkd2FyZToqKiBSZWFsdGVrIFJUTDgzNjVNQiBzd2l0Y2ggQVNJQyBjb25uZWN0ZWQgdmlhIE1ESU8vU01JIOKAkyBCaW5nby4gVGhlIGRlYWxicmVha2VyLlxuNC4gICoqV29ydGhGdXp6aW5nOioqIEZhbHNlIOKAkyBBYnNvbHV0ZWx5LiBXZSdyZSBub3QgZ29pbmcgdG8gZ2V0IGFueSBjb2RlIGNvdmVyYWdlIGhlcmUgd2l0aG91dCB0aGF0IHNwZWNpZmljIGhhcmR3YXJlLlxuNS4gICoqUmVhc29uaW5nOioqIENvbmNpc2UgYW5kIGNvcnJlY3QuIFRoZSBjb2RlIGlzIHVucmVhY2hhYmxlIGluIGEgc3RhbmRhcmQgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhhdCBleHBsYW5hdGlvbiBpcyBzb2xpZC5cbjYuICAqKkVuYWJsZUNvbmZpZ3M6KiogTnVsbCBvciBlbXB0eSDigJMgTWFrZXMgc2Vuc2UuIE5vIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB3aWxsIG1ha2UgYSB2aXJ0dWFsIG1hY2hpbmUgbWFnaWNhbGx5IGNyZWF0ZSBhIHJlYWwgc3dpdGNoLlxuNy4gICoqRm9jdXNTeW1ib2xzOioqIE51bGwgb3IgZW1wdHkg4oCTIFJpZ2h0IGFnYWluLiBObyBzcGVjaWZpYyBmdW5jdGlvbiBjYWxscyB3aWxsIGNoYW5nZSB0aGUgaGFyZHdhcmUgZGVwZW5kZW5jeS5cblxuWWVwLCB0aGF0J3MgaXQuIFRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBObyBwb2ludCB3YXN0aW5nIGN5Y2xlcyBvbiBzb21ldGhpbmcgdGhhdCBjYW4ndCBiZSByZWFjaGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTMxMiwiT3V0cHV0VG9rZW5zIjoxMjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNzowMi40NTY5MzMyMjNaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTI0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgY2hpcCByZXNldCBsb2dpYyAocnRsODM2NW1iX3Jlc2V0X2NoaXApIGluIHRoZSBSZWFsdGVrIFJUTDgzNjVNQiBFdGhlcm5ldCBzd2l0Y2ggZHJpdmVyLiBUaGlzIGRyaXZlciB0YXJnZXRzIHBoeXNpY2FsIFJlYWx0ZWsgc3dpdGNoIEFTSUNzIGNvbm5lY3RlZCBvdmVyIE1ESU8gb3IgU01JIGJ1c2VzLCB3aGljaCBhcmUgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyAoUUVNVS9LVk0gb24gYW1kNjQpIHVzZWQgYnkgc3l6a2FsbGVyLiBBcyBzdWNoLCB0aGUgbW9kaWZpZWQgY29kZSBpcyBzdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0wOFQwMDozNzowMi40NTY5NjY0OTRaIiwiU2VxIjozMSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowmxmng[1] Phase: Running StartedAt: 2026-09-08 00:37:14 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmxmng[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-09-08 00:37:14 +0000 UTC FinishedAt: 2026-09-08 00:37:21 +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,}