Name: series-workflowk9d8z Phase: Failed StartedAt: 2026-08-06 13:07:34 +0000 UTC FinishedAt: 2026-08-06 13:26:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9d8z[0] Phase: Succeeded StartedAt: 2026-08-06 13:07:34 +0000 UTC FinishedAt: 2026-08-06 13:26:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9d8z[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 13:07:34 +0000 UTC FinishedAt: 2026-08-06 13:26:01 +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+CgkJCTx0ZD4yMDI2LzA4LzA2IDEzOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcmVuYW1lIG9mIHRoZSBgYmlfYnZlY19kb25lYCBtZW1iZXIgdG8gYGJpX29mZnNldGAgaW4gYHN0cnVjdCBidmVjX2l0ZXJgIGFjcm9zcyB0aGUga2VybmVsLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEzOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjc2MDQ1M2E4Y2Q0NjcwYzZiM2I5NzY0MzNjMjg0MTJjNmI4NjQ0MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTM6MjU6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdCBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcbmluZGV4IDExMTI2ZWQ2ZjQwZjcuLjQ5ZGEyMTQ3YjdkODYgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0XG5AQCAtMTYsMTYgJiM0MzsxNiwxNiBAQCBidl9sZW4gYnkgdGhlIG51bWJlciBvZiBieXRlcyBjb21wbGV0ZWQgaW4gdGhhdCBiaW92ZWMuXG4gSW4gdGhlIG5ldyBzY2hlbWUgb2YgdGhpbmdzLCBldmVyeXRoaW5nIHRoYXQgbXVzdCBiZSBtdXRhdGVkIGluIG9yZGVyIHRvXG4gcGFydGlhbGx5IGNvbXBsZXRlIGEgYmlvIGlzIHNlZ3JlZ2F0ZWQgaW50byBzdHJ1Y3QgYnZlY19pdGVyOiBiaV9zZWN0b3IsXG4gYmlfc2l6ZSBhbmQgYmlfaWR4IGhhdmUgYmVlbiBtb3ZlZCB0aGVyZTsgYW5kIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGJ2X29mZnNldFxuLWFuZCBidl9sZW4sIHN0cnVjdCBidmVjX2l0ZXIgaGFzIGJpX2J2ZWNfZG9uZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mXG4mIzQzO2FuZCBidl9sZW4sIHN0cnVjdCBidmVjX2l0ZXIgaGFzIGJpX29mZnNldCwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mXG4gYnl0ZXMgY29tcGxldGVkIGluIHRoZSBjdXJyZW50IGJ2ZWMuXG4gXG4gVGhlcmUgYXJlIGEgYnVuY2ggb2YgbmV3IGhlbHBlciBtYWNyb3MgZm9yIGhpZGluZyB0aGUgZ29yeSBkZXRhaWxzIC0gaW5cbiBwYXJ0aWN1bGFyLCBwcmVzZW50aW5nIHRoZSBpbGx1c2lvbiBvZiBwYXJ0aWFsbHkgY29tcGxldGVkIGJpb3ZlY3Mgc28gdGhhdFxuLW5vcm1hbCBjb2RlIGRvZXNuJiMzOTt0IGhhdmUgdG8gZGVhbCB3aXRoIGJpX2J2ZWNfZG9uZS5cbiYjNDM7bm9ybWFsIGNvZGUgZG9lc24mIzM5O3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfb2Zmc2V0LlxuIFxuICAqIERyaXZlciBjb2RlIHNob3VsZCBubyBsb25nZXIgcmVmZXIgdG8gYmlvdmVjcyBkaXJlY3RseTsgd2Ugbm93IGhhdmVcbiAgICBiaW9faW92ZWMoKSBhbmQgYmlvX2l0ZXJfaW92ZWMoKSBtYWNyb3MgdGhhdCByZXR1cm4gbGl0ZXJhbCBzdHJ1Y3QgYmlvdmVjcyxcbi0gICBjb25zdHJ1Y3RlZCBmcm9tIHRoZSByYXcgYmlvdmVjcyBidXQgdGFraW5nIGludG8gYWNjb3VudCBiaV9idmVjX2RvbmUgYW5kXG4mIzQzOyAgIGNvbnN0cnVjdGVkIGZyb20gdGhlIHJhdyBiaW92ZWNzIGJ1dCB0YWtpbmcgaW50byBhY2NvdW50IGJpX29mZnNldCBhbmRcbiAgICBiaV9zaXplLlxuIFxuICAgIGJpb19mb3JfZWFjaF9zZWdtZW50KCkgaGFzIGJlZW4gdXBkYXRlZCB0byB0YWtlIGEgYnZlY19pdGVyIGFyZ3VtZW50XG5AQCAtMTAxLDcgJiM0MzsxMDEsNyBAQCBPdGhlciBpbXBsaWNhdGlvbnM6XG4gICAgSS5lLiBpbnN0ZWFkIG9mIHVzaW5nIGJpb19pb3ZlY19pZHgoKSAob3IgYmlvLVx1MDAzZWJpX2lvdmVjW2Jpby1cdTAwM2ViaV9pZHhdKSwgeW91XG4gICAgbm93IHVzZSBiaW9faXRlcl9pb3ZlYygpLCB3aGljaCB0YWtlcyBhIGJ2ZWNfaXRlciBhbmQgcmV0dXJucyBhXG4gICAgbGl0ZXJhbCBzdHJ1Y3QgYmlvX3ZlYyAtIGNvbnN0cnVjdGVkIG9uIHRoZSBmbHkgZnJvbSB0aGUgcmF3IGJpb3ZlYyBidXRcbi0gICB0YWtpbmcgaW50byBhY2NvdW50IGJpX2J2ZWNfZG9uZSAoYW5kIGJpX3NpemUpLlxuJiM0MzsgICB0YWtpbmcgaW50byBhY2NvdW50IGJpX29mZnNldCAoYW5kIGJpX3NpemUpLlxuIFxuICAqIGJpX3ZjbnQgY2FuJiMzOTt0IGJlIHRydXN0ZWQgb3IgcmVsaWVkIHVwb24gYnkgZHJpdmVyIGNvZGUgLSBpLmUuIGFueXRoaW5nIHRoYXRcbiAgICBkb2VzbiYjMzk7dCBhY3R1YWxseSBvd24gdGhlIGJpby4gVGhlIHJlYXNvbiBpcyB0d29mb2xkOiBmaXJzdGx5LCBpdCYjMzk7cyBub3RcbmRpZmYgLS1naXQgYS9ibG9jay9iaW8uYyBiL2Jsb2NrL2Jpby5jXG5pbmRleCA1MDAzODlmMzMyZDk5Li40MDc0YTA0OTZiOTNmIDEwMDY0NFxuLS0tIGEvYmxvY2svYmlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jpby5jXG5AQCAtMjI5LDcgJiM0MzsyMjksNyBAQCB2b2lkIGJpb19pbml0KHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IGJpb192ZWMgKnRhYmxlLFxuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yID0gMDtcbiBcdGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUgPSAwO1xuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfaWR4ID0gMDtcbi1cdGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IDA7XG4mIzQzO1x0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0ID0gMDtcbiBcdGJpby1cdTAwM2ViaV9lbmRfaW8gPSBOVUxMO1xuIFx0YmlvLVx1MDAzZWJpX3ByaXZhdGUgPSBOVUxMO1xuICNpZmRlZiBDT05GSUdfQkxLX0NHUk9VUFxuQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCB2b2lkIGJpb19pb3ZfYnZlY19zZXQoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4gXG4gXHRiaW8tXHUwMDNlYmlfaW9fdmVjID0gKHN0cnVjdCBiaW9fdmVjICopaXRlci1cdTAwM2VidmVjO1xuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfaWR4ID0gMDtcbi1cdGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IGl0ZXItXHUwMDNlaW92X29mZnNldDtcbiYjNDM7XHRiaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQgPSBpdGVyLVx1MDAzZWlvdl9vZmZzZXQ7XG4gXHRiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplID0gaW92X2l0ZXJfY291bnQoaXRlcik7XG4gXHRiaW9fc2V0X2ZsYWcoYmlvLCBCSU9fQ0xPTkVEKTtcbiB9XG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1lcmdlLmMgYi9ibG9jay9ibGstbWVyZ2UuY1xuaW5kZXggYWIxMTYxY2E2OWYxZS4uMjU4YTcyNjA3MWQxMiAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstbWVyZ2UuY1xuQEAgLTMzLDcgJiM0MzszMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiaW9fZ2V0X2xhc3RfYnZlYyhzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBiaW9fdmVjICpidilcbiBcbiBcdGJpb19hZHZhbmNlX2l0ZXIoYmlvLCBcdTAwMjZpdGVyLCBpdGVyLmJpX3NpemUpO1xuIFxuLVx0aWYgKCFpdGVyLmJpX2J2ZWNfZG9uZSlcbiYjNDM7XHRpZiAoIWl0ZXIuYmlfb2Zmc2V0KVxuIFx0XHRpZHggPSBpdGVyLmJpX2lkeCAtIDE7XG4gXHRlbHNlXHQvKiBpbiB0aGUgbWlkZGxlIG9mIGJ2ZWMgKi9cbiBcdFx0aWR4ID0gaXRlci5iaV9pZHg7XG5AQCAtNDEsMTEgJiM0Mzs0MSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpXG4gXHQqYnYgPSBiaW8tXHUwMDNlYmlfaW9fdmVjW2lkeF07XG4gXG4gXHQvKlxuLVx0ICogaXRlci5iaV9idmVjX2RvbmUgcmVjb3JkcyBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBsYXN0IGJ2ZWNcbiYjNDM7XHQgKiBpdGVyLmJpX29mZnNldCByZWNvcmRzIGFjdHVhbCBsZW5ndGggb2YgdGhlIGxhc3QgYnZlY1xuIFx0ICogaWYgdGhpcyBiaW8gZW5kcyBpbiB0aGUgbWlkZGxlIG9mIG9uZSBpbyB2ZWN0b3JcbiBcdCAqL1xuLVx0aWYgKGl0ZXIuYmlfYnZlY19kb25lKVxuLVx0XHRidi1cdTAwM2Vidl9sZW4gPSBpdGVyLmJpX2J2ZWNfZG9uZTtcbiYjNDM7XHRpZiAoaXRlci5iaV9vZmZzZXQpXG4mIzQzO1x0XHRidi1cdTAwM2Vidl9sZW4gPSBpdGVyLmJpX29mZnNldDtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBib29sIGJpb193aWxsX2dhcChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSxcbmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEtZG1hLmMgYi9ibG9jay9ibGstbXEtZG1hLmNcbmluZGV4IGJmZGI5ZWQ3MDc0MTEuLjg4ZmQ5Y2JjOTUxZjQgMTAwNjQ0XG4tLS0gYS9ibG9jay9ibGstbXEtZG1hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS1kbWEuY1xuQEAgLTQ0LDcgJiM0Mzs0NCw3IEBAIHN0YXRpYyBib29sIGJsa19tYXBfaXRlcl9uZXh0KHN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBibGtfbWFwX2l0ZXIgKml0ZXIsXG4gXHQgKiBvbmUgY291bGQgYmUgbWVyZ2VkIGludG8gaXQuICBUaGlzIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gbW92aW5nIHRvXG4gXHQgKiB0aGUgbmV4dCBiaW8sIGJ1dCBzb21lIGNhbGxlcnMgYWxzbyBkb24mIzM5O3QgcGFjayBidmVjcyB0aWdodC5cbiBcdCAqL1xuLVx0d2hpbGUgKCFpdGVyLVx1MDAzZWl0ZXIuYmlfc2l6ZSB8fCAhaXRlci1cdTAwM2VpdGVyLmJpX2J2ZWNfZG9uZSkge1xuJiM0MztcdHdoaWxlICghaXRlci1cdTAwM2VpdGVyLmJpX3NpemUgfHwgIWl0ZXItXHUwMDNlaXRlci5iaV9vZmZzZXQpIHtcbiBcdFx0c3RydWN0IGJpb192ZWMgbmV4dDtcbiBcbiBcdFx0aWYgKCFfX2Jsa19tYXBfaXRlcl9uZXh0KGl0ZXIpKVxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmhcbmluZGV4IGVhYWMwNTgxNWNiMDMuLjUwYWJmZDkzMjg4NjEgMTAwNjQ0XG4tLS0gYS9ibG9jay9ibGsuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLmhcbkBAIC00MDYsNyAmIzQzOzQwNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBiaW9fbWF5X25lZWRfc3BsaXQoc3RydWN0IGJpbyAqYmlvLFxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdGJ2ID0gX19idmVjX2l0ZXJfYnZlYyhiaW8tXHUwMDNlYmlfaW9fdmVjLCBiaW8tXHUwMDNlYmlfaXRlcik7XG4tXHRpZiAoYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSBcdTAwM2UgYnYtXHUwMDNlYnZfbGVuIC0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lKVxuJiM0MztcdGlmIChiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplIFx1MDAzZSBidi1cdTAwM2Vidl9sZW4gLSBiaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQpXG4gXHRcdHJldHVybiB0cnVlO1xuIFx0aWYgKChidi1cdTAwM2Vidl9vZmZzZXQgfCBidi1cdTAwM2Vidl9sZW4pIFx1MDAyNiBsaW0tXHUwMDNlZG1hX2FsaWdubWVudClcbiBcdFx0cmV0dXJuIHRydWU7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuaW5kZXggMjZkNzEzMGMzZjU1OS4uODYzOWZhMzRiODQ3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuQEAgLTM3OSw3ICYjNDM7Mzc5LDcgQEAgc3RhdGljIGludCBsb19yd19haW8oc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGxvb3BfY21kICpjbWQsXG4gXHRcdGlvdl9pdGVyX2J2ZWMoXHUwMDI2aXRlciwgcncsXG4gXHRcdFx0X19idmVjX2l0ZXJfYnZlYyhycS1cdTAwM2ViaW8tXHUwMDNlYmlfaW9fdmVjLCBycS1cdTAwM2ViaW8tXHUwMDNlYmlfaXRlciksXG4gXHRcdFx0bnJfYnZlYywgYmxrX3JxX2J5dGVzKHJxKSk7XG4tXHRcdGl0ZXIuaW92X29mZnNldCA9IHJxLVx1MDAzZWJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZTtcbiYjNDM7XHRcdGl0ZXIuaW92X29mZnNldCA9IHJxLVx1MDAzZWJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldDtcbiBcdH1cbiBcdGF0b21pY19zZXQoXHUwMDI2Y21kLVx1MDAzZXJlZiwgMik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96bG9vcC5jIGIvZHJpdmVycy9ibG9jay96bG9vcC5jXG5pbmRleCA1OGVjODE2MWI3ZTJmLi40MzIzYWMxMDhjYWU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96bG9vcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3psb29wLmNcbkBAIC01NTUsNyAmIzQzOzU1NSw3IEBAIHN0YXRpYyBpbnQgemxvb3BfZG9fcncoc3RydWN0IHpsb29wX2NtZCAqY21kKVxuIFx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIHJ3LFxuIFx0XHRcdF9fYnZlY19pdGVyX2J2ZWMocnEtXHUwMDNlYmlvLVx1MDAzZWJpX2lvX3ZlYywgcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIpLFxuIFx0XHRcdFx0XHRucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTtcbi1cdFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuJiM0MztcdFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xuIFx0fVxuIFxuIFx0Y21kLVx1MDAzZWlvY2Iua2lfcG9zID0gKGNtZC1cdTAwM2VzZWN0b3IgLSB6b25lLVx1MDAzZXN0YXJ0KSBcdTAwM2NcdTAwM2MgU0VDVE9SX1NISUZUO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmMgYi9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXG5pbmRleCA2MTU1YjAxMTdjOWQ2Li4wNGYzZmM4YWViNmY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuY1xuQEAgLTE2LDEyICYjNDM7MTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0aW50IGlkeDtcbiBcbiBcdGl0ZXItXHUwMDNlYmlfc2l6ZSAmIzQzOz0gYnl0ZXM7XG4tXHRpZiAoYnl0ZXMgXHUwMDNjPSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSkge1xuLVx0XHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSAtPSBieXRlcztcbiYjNDM7XHRpZiAoYnl0ZXMgXHUwMDNjPSBpdGVyLVx1MDAzZWJpX29mZnNldCkge1xuJiM0MztcdFx0aXRlci1cdTAwM2ViaV9vZmZzZXQgLT0gYnl0ZXM7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFxuLVx0Ynl0ZXMgLT0gaXRlci1cdTAwM2ViaV9idmVjX2RvbmU7XG4mIzQzO1x0Ynl0ZXMgLT0gaXRlci1cdTAwM2ViaV9vZmZzZXQ7XG4gXHRpZHggPSBpdGVyLVx1MDAzZWJpX2lkeCAtIDE7XG4gXG4gXHR3aGlsZSAoaWR4IFx1MDAzZT0gMCBcdTAwMjZcdTAwMjYgYnl0ZXMgXHUwMDI2XHUwMDI2IGJ5dGVzIFx1MDAzZSBidltpZHhdLmJ2X2xlbikge1xuQEAgLTMyLDEzICYjNDM7MzIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0aWYgKFdBUk5fT05DRShpZHggXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGJ5dGVzLFxuIFx0XHQgICAgICBcJiMzNDtBdHRlbXB0ZWQgdG8gcmV3aW5kIGl0ZXIgYmV5b25kIGJ2ZWMmIzM5O3MgYm91bmRhcmllc1xcblwmIzM0OykpIHtcbiBcdFx0aXRlci1cdTAwM2ViaV9zaXplIC09IGJ5dGVzO1xuLVx0XHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IDA7XG4mIzQzO1x0XHRpdGVyLVx1MDAzZWJpX29mZnNldCA9IDA7XG4gXHRcdGl0ZXItXHUwMDNlYmlfaWR4ID0gMDtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuIFx0aXRlci1cdTAwM2ViaV9pZHggPSBpZHg7XG4tXHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IGJ2W2lkeF0uYnZfbGVuIC0gYnl0ZXM7XG4mIzQzO1x0aXRlci1cdTAwM2ViaV9vZmZzZXQgPSBidltpZHhdLmJ2X2xlbiAtIGJ5dGVzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuYyBiL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xuaW5kZXggN2U5ODE4NzAxNDQ1MS4uOGY4ODE2ZTFjNTM5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jXG5AQCAtMTQsNyAmIzQzOzE0LDcgQEAgaW50IHNlZ21lbnRfY29weV90b19iaW8oc3RydWN0IHBjYWNoZV9zZWdtZW50ICpzZWdtZW50LFxuIFxuIFx0aW92X2l0ZXJfYnZlYyhcdTAwMjZpdGVyLCBJVEVSX0RFU1QsIFx1MDAyNmJpby1cdTAwM2ViaV9pb192ZWNbYmlvLVx1MDAzZWJpX2l0ZXIuYmlfaWR4XSxcbiBcdFx0XHRiaW9fc2VnbWVudHMoYmlvKSwgYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XG4tXHRpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XG4mIzQzO1x0aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xuIFx0aWYgKGJpb19vZmYpXG4gXHRcdGlvdl9pdGVyX2FkdmFuY2UoXHUwMDI2aXRlciwgYmlvX29mZik7XG4gXG5AQCAtMzUsNyAmIzQzOzM1LDcgQEAgaW50IHNlZ21lbnRfY29weV9mcm9tX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsXG4gXG4gXHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIElURVJfU09VUkNFLCBcdTAwMjZiaW8tXHUwMDNlYmlfaW9fdmVjW2Jpby1cdTAwM2ViaV9pdGVyLmJpX2lkeF0sXG4gXHRcdFx0YmlvX3NlZ21lbnRzKGJpbyksIGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUpO1xuLVx0aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuJiM0MztcdGl0ZXIuaW92X29mZnNldCA9IGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldDtcbiBcdGlmIChiaW9fb2ZmKVxuIFx0XHRpb3ZfaXRlcl9hZHZhbmNlKFx1MDAyNml0ZXIsIGJpb19vZmYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL2J0dC5jIGIvZHJpdmVycy9udmRpbW0vYnR0LmNcbmluZGV4IDdlMTExMjk2MGQ3ZjguLjVkOTEwYTY0NTAzZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252ZGltbS9idHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udmRpbW0vYnR0LmNcbkBAIC0xMTU1LDcgJiM0MzsxMTU1LDcgQEAgc3RhdGljIGludCBidHRfcndfaW50ZWdyaXR5KHN0cnVjdCBidHQgKmJ0dCwgc3RydWN0IGJpb19pbnRlZ3JpdHlfcGF5bG9hZCAqYmlwLFxuIFx0XHRidiA9IGJ2ZWNfaXRlcl9idmVjKGJpcC1cdTAwM2ViaXBfdmVjLCBiaXAtXHUwMDNlYmlwX2l0ZXIpO1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgJiMzOTtidiYjMzk7IG9idGFpbmVkIGZyb20gYnZlY19pdGVyX2J2ZWMgaGFzIGl0cyAuYnZfbGVuIGFuZFxuLVx0XHQgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItXHUwMDNlYmlfYnZlY19kb25lLCBhbmQgd2VcbiYjNDM7XHRcdCAqIC5idl9vZmZzZXQgYWxyZWFkeSBhZGp1c3RlZCBmb3IgaXRlci1cdTAwM2ViaV9vZmZzZXQsIGFuZCB3ZVxuIFx0XHQgKiBjYW4gdXNlIHRob3NlIGRpcmVjdGx5XG4gXHRcdCAqL1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbmluZGV4IGJhNWM3YjNlMmE3YzYuLmNlMDNhMGVhNGRlZDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbkBAIC0zNTcsNyAmIzQzOzM1Nyw3IEBAIHN0YXRpYyB2b2lkIG52bWVfdGNwX2luaXRfaXRlcihzdHJ1Y3QgbnZtZV90Y3BfcmVxdWVzdCAqcmVxLFxuIFx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNnJlcS1cdTAwM2VpdGVyLCBkaXIsXG4gXHRcdFx0X19idmVjX2l0ZXJfYnZlYyhiaW8tXHUwMDNlYmlfaW9fdmVjLCBiaW8tXHUwMDNlYmlfaXRlciksIG5yX2J2ZWMsXG4gXHRcdFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XG4tXHRcdHJlcS1cdTAwM2VpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XG4mIzQzO1x0XHRyZXEtXHUwMDNlaXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xuIFx0fVxuIH1cbiBcbmRpZmYgLS1naXQgYS9mcy9idHJmcy9taXNjLmggYi9mcy9idHJmcy9taXNjLmhcbmluZGV4IDY5NGJlNmQwNTYyYTQuLjgwMjA2MDk0MzE4MDEgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9taXNjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2J0cmZzL21pc2MuaFxuQEAgLTc0LDcgJiM0Mzs3NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGJ2ZWNfaXRlciBpbml0X2J2ZWNfaXRlcl9mb3JfYmlvKHN0cnVjdCBiaW8gKmJpbylcbiBcdFx0LmJpX3NlY3RvciA9IDAsXG4gXHRcdC5iaV9zaXplID0gYmlvX3NpemUsXG4gXHRcdC5iaV9pZHggPSAwLFxuLVx0XHQuYmlfYnZlY19kb25lID0gMCxcbiYjNDM7XHRcdC5iaV9vZmZzZXQgPSAwLFxuIFx0fTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idmVjLmggYi9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxuaW5kZXggOTI4MzdlMjc0M2YxOS4uZmM1NjZlZTFjMWZmMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnZlYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxuQEAgLTExMCw3ICYjNDM7MTEwLDcgQEAgc3RydWN0IGJ2ZWNfaXRlciB7XG4gXHQvKlxuIFx0ICogQ3VycmVudCBvZmZzZXQgaW4gdGhlIGJ2ZWMgZW50cnkgcG9pbnRlZCB0byBieSBgYmlfaWR4YC5cbiBcdCAqL1xuLVx0dW5zaWduZWQgaW50XHRcdGJpX2J2ZWNfZG9uZTtcbiYjNDM7XHR1bnNpZ25lZCBpbnRcdFx0Ymlfb2Zmc2V0O1xuIH0gX19wYWNrZWQgX19hbGlnbmVkKDQpO1xuIFxuIHN0cnVjdCBidmVjX2l0ZXJfYWxsIHtcbkBAIC0xMzUsMTQgJiM0MzsxMzUsMTQgQEAgbXBfYnZlY19pdGVyX3BhZ2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnRcbiBtcF9idmVjX2l0ZXJfbGVuKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidmVjcywgY29uc3Qgc3RydWN0IGJ2ZWNfaXRlciBpdGVyKVxuIHtcbi1cdHJldHVybiBtaW4oX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfbGVuIC0gaXRlci5iaV9idmVjX2RvbmUsXG4mIzQzO1x0cmV0dXJuIG1pbihfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS1cdTAwM2Vidl9sZW4gLSBpdGVyLmJpX29mZnNldCxcbiBcdFx0XHRpdGVyLmJpX3NpemUpO1xuIH1cbiBcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludFxuIG1wX2J2ZWNfaXRlcl9vZmZzZXQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXG4ge1xuLVx0cmV0dXJuIF9fYnZlY19pdGVyX2J2ZWMoYnZlY3MsIGl0ZXIpLVx1MDAzZWJ2X29mZnNldCAmIzQzOyBpdGVyLmJpX2J2ZWNfZG9uZTtcbiYjNDM7XHRyZXR1cm4gX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfb2Zmc2V0ICYjNDM7IGl0ZXIuYmlfb2Zmc2V0O1xuIH1cbiBcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludFxuQEAgLTIwNCw3ICYjNDM7MjA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGJ2ZWNfaXRlcl9hZHZhbmNlKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidixcbiBcdH1cbiBcbiBcdGl0ZXItXHUwMDNlYmlfc2l6ZSAtPSBieXRlcztcbi1cdGJ5dGVzICYjNDM7PSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZTtcbiYjNDM7XHRieXRlcyAmIzQzOz0gaXRlci1cdTAwM2ViaV9vZmZzZXQ7XG4gXG4gXHR3aGlsZSAoYnl0ZXMgXHUwMDI2XHUwMDI2IGJ5dGVzIFx1MDAzZT0gYnZbaWR4XS5idl9sZW4pIHtcbiBcdFx0Ynl0ZXMgLT0gYnZbaWR4XS5idl9sZW47XG5AQCAtMjEyLDcgJiM0MzsyMTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0fVxuIFxuIFx0aXRlci1cdTAwM2ViaV9pZHggPSBpZHg7XG4tXHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IGJ5dGVzO1xuJiM0MztcdGl0ZXItXHUwMDNlYmlfb2Zmc2V0ID0gYnl0ZXM7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG5AQCAtMjIzLDEzICYjNDM7MjIzLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBidmVjX2l0ZXJfYWR2YW5jZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXG4gc3RhdGljIGlubGluZSB2b2lkIGJ2ZWNfaXRlcl9hZHZhbmNlX3NpbmdsZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXG4gXHRcdFx0XHRzdHJ1Y3QgYnZlY19pdGVyICppdGVyLCB1bnNpZ25lZCBpbnQgYnl0ZXMpXG4ge1xuLVx0dW5zaWduZWQgaW50IGRvbmUgPSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSAmIzQzOyBieXRlcztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZG9uZSA9IGl0ZXItXHUwMDNlYmlfb2Zmc2V0ICYjNDM7IGJ5dGVzO1xuIFxuIFx0aWYgKGRvbmUgPT0gYnZbaXRlci1cdTAwM2ViaV9pZHhdLmJ2X2xlbikge1xuIFx0XHRkb25lID0gMDtcbiBcdFx0aXRlci1cdTAwM2ViaV9pZHgmIzQzOyYjNDM7O1xuIFx0fVxuLVx0aXRlci1cdTAwM2ViaV9idmVjX2RvbmUgPSBkb25lO1xuJiM0MztcdGl0ZXItXHUwMDNlYmlfb2Zmc2V0ID0gZG9uZTtcbiBcdGl0ZXItXHUwMDNlYmlfc2l6ZSAtPSBieXRlcztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvaW9fdXJpbmcvbmV0LmMgYi9pb191cmluZy9uZXQuY1xuaW5kZXggYTc0ZDE1ZjdiN2QyYi4uNDM5Yzk5YWQxODg0MSAxMDA2NDRcbi0tLSBhL2lvX3VyaW5nL25ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy9uZXQuY1xuQEAgLTE0NzEsNyAmIzQzOzE0NzEsNyBAQCBzdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTtcbiBcbiBcdGJpLmJpX3NpemUgPSBtaW4oZnJvbS1cdTAwM2Vjb3VudCwgbGVuZ3RoKTtcbi1cdGJpLmJpX2J2ZWNfZG9uZSA9IGZyb20tXHUwMDNlaW92X29mZnNldDtcbiYjNDM7XHRiaS5iaV9vZmZzZXQgPSBmcm9tLVx1MDAzZWlvdl9vZmZzZXQ7XG4gXHRiaS5iaV9pZHggPSAwO1xuIFxuIFx0d2hpbGUgKGJpLmJpX3NpemUgXHUwMDI2XHUwMDI2IGZyYWcgXHUwMDNjIE1BWF9TS0JfRlJBR1MpIHtcbkBAIC0xNDkwLDcgJiM0MzsxNDkwLDcgQEAgc3RhdGljIGludCBpb19zZ19mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGZyb20tXHUwMDNlYnZlYyAmIzQzOz0gYmkuYmlfaWR4O1xuIFx0ZnJvbS1cdTAwM2Vucl9zZWdzIC09IGJpLmJpX2lkeDtcbiBcdGZyb20tXHUwMDNlY291bnQgLT0gY29waWVkO1xuLVx0ZnJvbS1cdTAwM2Vpb3Zfb2Zmc2V0ID0gYmkuYmlfYnZlY19kb25lO1xuJiM0MztcdGZyb20tXHUwMDNlaW92X29mZnNldCA9IGJpLmJpX29mZnNldDtcbiBcbiBcdHNrYi1cdTAwM2VkYXRhX2xlbiAmIzQzOz0gY29waWVkO1xuIFx0c2tiLVx1MDAzZWxlbiAmIzQzOz0gY29waWVkO1xuZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9pdGVyLmNcbmluZGV4IDM0YTUyZTliYTllMWIuLjgxZTVjNWU1MTIxZjcgMTAwNjQ0XG4tLS0gYS9saWIvaW92X2l0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL2lvdl9pdGVyLmNcbkBAIC0xNjM0LDcgJiM0MzsxNjM0LDcgQEAgc3RhdGljIHNzaXplX3QgaW92X2l0ZXJfZXh0cmFjdF9idmVjX3BhZ2VzKHN0cnVjdCBpb3ZfaXRlciAqaSxcbiBcdH1cbiBcdGJpLmJpX2lkeCA9IDA7XG4gXHRiaS5iaV9zaXplID0gbWF4c2l6ZTtcbi1cdGJpLmJpX2J2ZWNfZG9uZSA9IHNraXA7XG4mIzQzO1x0YmkuYmlfb2Zmc2V0ID0gc2tpcDtcbiBcbiBcdG1heHBhZ2VzID0gd2FudF9wYWdlc19hcnJheShwYWdlcywgbWF4c2l6ZSwgc2tpcCwgbWF4cGFnZXMpO1xuIFx0aWYgKCFtYXhwYWdlcylcbmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXIuYyBiL25ldC9jZXBoL21lc3Nlbmdlci5jXG5pbmRleCAzNGIzMDk3YjRjN2I5Li45YzFiNmNmOGMzNmZlIDEwMDY0NFxuLS0tIGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jZXBoL21lc3Nlbmdlci5jXG5AQCAtNzYyLDcgJiM0Mzs3NjIsNyBAQCBzdGF0aWMgYm9vbCBjZXBoX21zZ19kYXRhX2Jpb19hZHZhbmNlKHN0cnVjdCBjZXBoX21zZ19kYXRhX2N1cnNvciAqY3Vyc29yLFxuIFx0aWYgKCFjdXJzb3ItXHUwMDNlcmVzaWQpXG4gXHRcdHJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi9cbiBcbi1cdGlmICghYnl0ZXMgfHwgKGl0LVx1MDAzZWl0ZXIuYmlfc2l6ZSBcdTAwMjZcdTAwMjYgaXQtXHUwMDNlaXRlci5iaV9idmVjX2RvbmUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0aWYgKCFieXRlcyB8fCAoaXQtXHUwMDNlaXRlci5iaV9zaXplIFx1MDAyNlx1MDAyNiBpdC1cdTAwM2VpdGVyLmJpX29mZnNldCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICAgIHBhZ2UgPT0gYmlvX2l0ZXJfcGFnZShpdC1cdTAwM2ViaW8sIGl0LVx1MDAzZWl0ZXIpKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1x0LyogbW9yZSBieXRlcyB0byBwcm9jZXNzIGluIHRoaXMgc2VnbWVudCAqL1xuIFxuQEAgLTgxNyw3ICYjNDM7ODE3LDcgQEAgc3RhdGljIGJvb2wgY2VwaF9tc2dfZGF0YV9idmVjc19hZHZhbmNlKHN0cnVjdCBjZXBoX21zZ19kYXRhX2N1cnNvciAqY3Vyc29yLFxuIFx0aWYgKCFjdXJzb3ItXHUwMDNlcmVzaWQpXG4gXHRcdHJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi9cbiBcbi1cdGlmICghYnl0ZXMgfHwgKGN1cnNvci1cdTAwM2VidmVjX2l0ZXIuYmlfYnZlY19kb25lIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmICghYnl0ZXMgfHwgKGN1cnNvci1cdTAwM2VidmVjX2l0ZXIuYmlfb2Zmc2V0IFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICAgcGFnZSA9PSBidmVjX2l0ZXJfcGFnZShidmVjcywgY3Vyc29yLVx1MDAzZWJ2ZWNfaXRlcikpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTM6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcmVuYW1lIG9mIHRoZSBgYmlfYnZlY19kb25lYCBtZW1iZXIgdG8gYGJpX29mZnNldGAgaW4gYHN0cnVjdCBidmVjX2l0ZXJgIGFjcm9zcyB0aGUga2VybmVsLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc2MDQ1M2E4Y2Q0NjcwYzZiM2I5NzY0MzNjMjg0MTJjNmI4NjQ0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTM6MjU6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdAppbmRleCAxMTEyNmVkNmY0MGY3Li40OWRhMjE0N2I3ZDg2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3QKQEAgLTE2LDE2ICYjNDM7MTYsMTYgQEAgYnZfbGVuIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgY29tcGxldGVkIGluIHRoYXQgYmlvdmVjLgogSW4gdGhlIG5ldyBzY2hlbWUgb2YgdGhpbmdzLCBldmVyeXRoaW5nIHRoYXQgbXVzdCBiZSBtdXRhdGVkIGluIG9yZGVyIHRvCiBwYXJ0aWFsbHkgY29tcGxldGUgYSBiaW8gaXMgc2VncmVnYXRlZCBpbnRvIHN0cnVjdCBidmVjX2l0ZXI6IGJpX3NlY3RvciwKIGJpX3NpemUgYW5kIGJpX2lkeCBoYXZlIGJlZW4gbW92ZWQgdGhlcmU7IGFuZCBpbnN0ZWFkIG9mIG1vZGlmeWluZyBidl9vZmZzZXQKLWFuZCBidl9sZW4sIHN0cnVjdCBidmVjX2l0ZXIgaGFzIGJpX2J2ZWNfZG9uZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mCiYjNDM7YW5kIGJ2X2xlbiwgc3RydWN0IGJ2ZWNfaXRlciBoYXMgYmlfb2Zmc2V0LCB3aGljaCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YKIGJ5dGVzIGNvbXBsZXRlZCBpbiB0aGUgY3VycmVudCBidmVjLgogCiBUaGVyZSBhcmUgYSBidW5jaCBvZiBuZXcgaGVscGVyIG1hY3JvcyBmb3IgaGlkaW5nIHRoZSBnb3J5IGRldGFpbHMgLSBpbgogcGFydGljdWxhciwgcHJlc2VudGluZyB0aGUgaWxsdXNpb24gb2YgcGFydGlhbGx5IGNvbXBsZXRlZCBiaW92ZWNzIHNvIHRoYXQKLW5vcm1hbCBjb2RlIGRvZXNuJiMzOTt0IGhhdmUgdG8gZGVhbCB3aXRoIGJpX2J2ZWNfZG9uZS4KJiM0Mztub3JtYWwgY29kZSBkb2VzbiYjMzk7dCBoYXZlIHRvIGRlYWwgd2l0aCBiaV9vZmZzZXQuCiAKICAqIERyaXZlciBjb2RlIHNob3VsZCBubyBsb25nZXIgcmVmZXIgdG8gYmlvdmVjcyBkaXJlY3RseTsgd2Ugbm93IGhhdmUKICAgIGJpb19pb3ZlYygpIGFuZCBiaW9faXRlcl9pb3ZlYygpIG1hY3JvcyB0aGF0IHJldHVybiBsaXRlcmFsIHN0cnVjdCBiaW92ZWNzLAotICAgY29uc3RydWN0ZWQgZnJvbSB0aGUgcmF3IGJpb3ZlY3MgYnV0IHRha2luZyBpbnRvIGFjY291bnQgYmlfYnZlY19kb25lIGFuZAomIzQzOyAgIGNvbnN0cnVjdGVkIGZyb20gdGhlIHJhdyBiaW92ZWNzIGJ1dCB0YWtpbmcgaW50byBhY2NvdW50IGJpX29mZnNldCBhbmQKICAgIGJpX3NpemUuCiAKICAgIGJpb19mb3JfZWFjaF9zZWdtZW50KCkgaGFzIGJlZW4gdXBkYXRlZCB0byB0YWtlIGEgYnZlY19pdGVyIGFyZ3VtZW50CkBAIC0xMDEsNyAmIzQzOzEwMSw3IEBAIE90aGVyIGltcGxpY2F0aW9uczoKICAgIEkuZS4gaW5zdGVhZCBvZiB1c2luZyBiaW9faW92ZWNfaWR4KCkgKG9yIGJpby0mZ3Q7YmlfaW92ZWNbYmlvLSZndDtiaV9pZHhdKSwgeW91CiAgICBub3cgdXNlIGJpb19pdGVyX2lvdmVjKCksIHdoaWNoIHRha2VzIGEgYnZlY19pdGVyIGFuZCByZXR1cm5zIGEKICAgIGxpdGVyYWwgc3RydWN0IGJpb192ZWMgLSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5IGZyb20gdGhlIHJhdyBiaW92ZWMgYnV0Ci0gICB0YWtpbmcgaW50byBhY2NvdW50IGJpX2J2ZWNfZG9uZSAoYW5kIGJpX3NpemUpLgomIzQzOyAgIHRha2luZyBpbnRvIGFjY291bnQgYmlfb2Zmc2V0IChhbmQgYmlfc2l6ZSkuCiAKICAqIGJpX3ZjbnQgY2FuJiMzOTt0IGJlIHRydXN0ZWQgb3IgcmVsaWVkIHVwb24gYnkgZHJpdmVyIGNvZGUgLSBpLmUuIGFueXRoaW5nIHRoYXQKICAgIGRvZXNuJiMzOTt0IGFjdHVhbGx5IG93biB0aGUgYmlvLiBUaGUgcmVhc29uIGlzIHR3b2ZvbGQ6IGZpcnN0bHksIGl0JiMzOTtzIG5vdApkaWZmIC0tZ2l0IGEvYmxvY2svYmlvLmMgYi9ibG9jay9iaW8uYwppbmRleCA1MDAzODlmMzMyZDk5Li40MDc0YTA0OTZiOTNmIDEwMDY0NAotLS0gYS9ibG9jay9iaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9iaW8uYwpAQCAtMjI5LDcgJiM0MzsyMjksNyBAQCB2b2lkIGJpb19pbml0KHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IGJpb192ZWMgKnRhYmxlLAogCWJpby0mZ3Q7YmlfaXRlci5iaV9zZWN0b3IgPSAwOwogCWJpby0mZ3Q7YmlfaXRlci5iaV9zaXplID0gMDsKIAliaW8tJmd0O2JpX2l0ZXIuYmlfaWR4ID0gMDsKLQliaW8tJmd0O2JpX2l0ZXIuYmlfYnZlY19kb25lID0gMDsKJiM0MzsJYmlvLSZndDtiaV9pdGVyLmJpX29mZnNldCA9IDA7CiAJYmlvLSZndDtiaV9lbmRfaW8gPSBOVUxMOwogCWJpby0mZ3Q7YmlfcHJpdmF0ZSA9IE5VTEw7CiAjaWZkZWYgQ09ORklHX0JMS19DR1JPVVAKQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCB2b2lkIGJpb19pb3ZfYnZlY19zZXQoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpCiAKIAliaW8tJmd0O2JpX2lvX3ZlYyA9IChzdHJ1Y3QgYmlvX3ZlYyAqKWl0ZXItJmd0O2J2ZWM7CiAJYmlvLSZndDtiaV9pdGVyLmJpX2lkeCA9IDA7Ci0JYmlvLSZndDtiaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IGl0ZXItJmd0O2lvdl9vZmZzZXQ7CiYjNDM7CWJpby0mZ3Q7YmlfaXRlci5iaV9vZmZzZXQgPSBpdGVyLSZndDtpb3Zfb2Zmc2V0OwogCWJpby0mZ3Q7YmlfaXRlci5iaV9zaXplID0gaW92X2l0ZXJfY291bnQoaXRlcik7CiAJYmlvX3NldF9mbGFnKGJpbywgQklPX0NMT05FRCk7CiB9CmRpZmYgLS1naXQgYS9ibG9jay9ibGstbWVyZ2UuYyBiL2Jsb2NrL2Jsay1tZXJnZS5jCmluZGV4IGFiMTE2MWNhNjlmMWUuLjI1OGE3MjYwNzFkMTIgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tZXJnZS5jCkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpCiAKIAliaW9fYWR2YW5jZV9pdGVyKGJpbywgJmFtcDtpdGVyLCBpdGVyLmJpX3NpemUpOwogCi0JaWYgKCFpdGVyLmJpX2J2ZWNfZG9uZSkKJiM0MzsJaWYgKCFpdGVyLmJpX29mZnNldCkKIAkJaWR4ID0gaXRlci5iaV9pZHggLSAxOwogCWVsc2UJLyogaW4gdGhlIG1pZGRsZSBvZiBidmVjICovCiAJCWlkeCA9IGl0ZXIuYmlfaWR4OwpAQCAtNDEsMTEgJiM0Mzs0MSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpCiAJKmJ2ID0gYmlvLSZndDtiaV9pb192ZWNbaWR4XTsKIAogCS8qCi0JICogaXRlci5iaV9idmVjX2RvbmUgcmVjb3JkcyBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBsYXN0IGJ2ZWMKJiM0MzsJICogaXRlci5iaV9vZmZzZXQgcmVjb3JkcyBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBsYXN0IGJ2ZWMKIAkgKiBpZiB0aGlzIGJpbyBlbmRzIGluIHRoZSBtaWRkbGUgb2Ygb25lIGlvIHZlY3RvcgogCSAqLwotCWlmIChpdGVyLmJpX2J2ZWNfZG9uZSkKLQkJYnYtJmd0O2J2X2xlbiA9IGl0ZXIuYmlfYnZlY19kb25lOwomIzQzOwlpZiAoaXRlci5iaV9vZmZzZXQpCiYjNDM7CQlidi0mZ3Q7YnZfbGVuID0gaXRlci5iaV9vZmZzZXQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBiaW9fd2lsbF9nYXAoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEtZG1hLmMgYi9ibG9jay9ibGstbXEtZG1hLmMKaW5kZXggYmZkYjllZDcwNzQxMS4uODhmZDljYmM5NTFmNCAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLW1xLWRtYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS1kbWEuYwpAQCAtNDQsNyAmIzQzOzQ0LDcgQEAgc3RhdGljIGJvb2wgYmxrX21hcF9pdGVyX25leHQoc3RydWN0IHJlcXVlc3QgKnJlcSwgc3RydWN0IGJsa19tYXBfaXRlciAqaXRlciwKIAkgKiBvbmUgY291bGQgYmUgbWVyZ2VkIGludG8gaXQuICBUaGlzIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gbW92aW5nIHRvCiAJICogdGhlIG5leHQgYmlvLCBidXQgc29tZSBjYWxsZXJzIGFsc28gZG9uJiMzOTt0IHBhY2sgYnZlY3MgdGlnaHQuCiAJICovCi0Jd2hpbGUgKCFpdGVyLSZndDtpdGVyLmJpX3NpemUgfHwgIWl0ZXItJmd0O2l0ZXIuYmlfYnZlY19kb25lKSB7CiYjNDM7CXdoaWxlICghaXRlci0mZ3Q7aXRlci5iaV9zaXplIHx8ICFpdGVyLSZndDtpdGVyLmJpX29mZnNldCkgewogCQlzdHJ1Y3QgYmlvX3ZlYyBuZXh0OwogCiAJCWlmICghX19ibGtfbWFwX2l0ZXJfbmV4dChpdGVyKSkKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmgKaW5kZXggZWFhYzA1ODE1Y2IwMy4uNTBhYmZkOTMyODg2MSAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLmgKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLmgKQEAgLTQwNiw3ICYjNDM7NDA2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGJpb19tYXlfbmVlZF9zcGxpdChzdHJ1Y3QgYmlvICpiaW8sCiAJCXJldHVybiB0cnVlOwogCiAJYnYgPSBfX2J2ZWNfaXRlcl9idmVjKGJpby0mZ3Q7YmlfaW9fdmVjLCBiaW8tJmd0O2JpX2l0ZXIpOwotCWlmIChiaW8tJmd0O2JpX2l0ZXIuYmlfc2l6ZSAmZ3Q7IGJ2LSZndDtidl9sZW4gLSBiaW8tJmd0O2JpX2l0ZXIuYmlfYnZlY19kb25lKQomIzQzOwlpZiAoYmlvLSZndDtiaV9pdGVyLmJpX3NpemUgJmd0OyBidi0mZ3Q7YnZfbGVuIC0gYmlvLSZndDtiaV9pdGVyLmJpX29mZnNldCkKIAkJcmV0dXJuIHRydWU7CiAJaWYgKChidi0mZ3Q7YnZfb2Zmc2V0IHwgYnYtJmd0O2J2X2xlbikgJmFtcDsgbGltLSZndDtkbWFfYWxpZ25tZW50KQogCQlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmMKaW5kZXggMjZkNzEzMGMzZjU1OS4uODYzOWZhMzRiODQ3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTM3OSw3ICYjNDM7Mzc5LDcgQEAgc3RhdGljIGludCBsb19yd19haW8oc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGxvb3BfY21kICpjbWQsCiAJCWlvdl9pdGVyX2J2ZWMoJmFtcDtpdGVyLCBydywKIAkJCV9fYnZlY19pdGVyX2J2ZWMocnEtJmd0O2Jpby0mZ3Q7YmlfaW9fdmVjLCBycS0mZ3Q7YmlvLSZndDtiaV9pdGVyKSwKIAkJCW5yX2J2ZWMsIGJsa19ycV9ieXRlcyhycSkpOwotCQlpdGVyLmlvdl9vZmZzZXQgPSBycS0mZ3Q7YmlvLSZndDtiaV9pdGVyLmJpX2J2ZWNfZG9uZTsKJiM0MzsJCWl0ZXIuaW92X29mZnNldCA9IHJxLSZndDtiaW8tJmd0O2JpX2l0ZXIuYmlfb2Zmc2V0OwogCX0KIAlhdG9taWNfc2V0KCZhbXA7Y21kLSZndDtyZWYsIDIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3psb29wLmMgYi9kcml2ZXJzL2Jsb2NrL3psb29wLmMKaW5kZXggNThlYzgxNjFiN2UyZi4uNDMyM2FjMTA4Y2FlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96bG9vcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svemxvb3AuYwpAQCAtNTU1LDcgJiM0Mzs1NTUsNyBAQCBzdGF0aWMgaW50IHpsb29wX2RvX3J3KHN0cnVjdCB6bG9vcF9jbWQgKmNtZCkKIAkJaW92X2l0ZXJfYnZlYygmYW1wO2l0ZXIsIHJ3LAogCQkJX19idmVjX2l0ZXJfYnZlYyhycS0mZ3Q7YmlvLSZndDtiaV9pb192ZWMsIHJxLSZndDtiaW8tJmd0O2JpX2l0ZXIpLAogCQkJCQlucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTsKLQkJaXRlci5pb3Zfb2Zmc2V0ID0gcnEtJmd0O2Jpby0mZ3Q7YmlfaXRlci5iaV9idmVjX2RvbmU7CiYjNDM7CQlpdGVyLmlvdl9vZmZzZXQgPSBycS0mZ3Q7YmlvLSZndDtiaV9pdGVyLmJpX29mZnNldDsKIAl9CiAKIAljbWQtJmd0O2lvY2Iua2lfcG9zID0gKGNtZC0mZ3Q7c2VjdG9yIC0gem9uZS0mZ3Q7c3RhcnQpICZsdDsmbHQ7IFNFQ1RPUl9TSElGVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmMgYi9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jCmluZGV4IDYxNTViMDExN2M5ZDYuLjA0ZjNmYzhhZWI2ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuYwpAQCAtMTYsMTIgJiM0MzsxNiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZG1fYnZlY19pdGVyX3Jld2luZChjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsCiAJaW50IGlkeDsKIAogCWl0ZXItJmd0O2JpX3NpemUgJiM0Mzs9IGJ5dGVzOwotCWlmIChieXRlcyAmbHQ7PSBpdGVyLSZndDtiaV9idmVjX2RvbmUpIHsKLQkJaXRlci0mZ3Q7YmlfYnZlY19kb25lIC09IGJ5dGVzOwomIzQzOwlpZiAoYnl0ZXMgJmx0Oz0gaXRlci0mZ3Q7Ymlfb2Zmc2V0KSB7CiYjNDM7CQlpdGVyLSZndDtiaV9vZmZzZXQgLT0gYnl0ZXM7CiAJCXJldHVybiB0cnVlOwogCX0KIAotCWJ5dGVzIC09IGl0ZXItJmd0O2JpX2J2ZWNfZG9uZTsKJiM0MzsJYnl0ZXMgLT0gaXRlci0mZ3Q7Ymlfb2Zmc2V0OwogCWlkeCA9IGl0ZXItJmd0O2JpX2lkeCAtIDE7CiAKIAl3aGlsZSAoaWR4ICZndDs9IDAgJmFtcDsmYW1wOyBieXRlcyAmYW1wOyZhbXA7IGJ5dGVzICZndDsgYnZbaWR4XS5idl9sZW4pIHsKQEAgLTMyLDEzICYjNDM7MzIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LAogCWlmIChXQVJOX09OQ0UoaWR4ICZsdDsgMCAmYW1wOyZhbXA7IGJ5dGVzLAogCQkgICAgICAmIzM0O0F0dGVtcHRlZCB0byByZXdpbmQgaXRlciBiZXlvbmQgYnZlYyYjMzk7cyBib3VuZGFyaWVzXG4mIzM0OykpIHsKIAkJaXRlci0mZ3Q7Ymlfc2l6ZSAtPSBieXRlczsKLQkJaXRlci0mZ3Q7YmlfYnZlY19kb25lID0gMDsKJiM0MzsJCWl0ZXItJmd0O2JpX29mZnNldCA9IDA7CiAJCWl0ZXItJmd0O2JpX2lkeCA9IDA7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlpdGVyLSZndDtiaV9pZHggPSBpZHg7Ci0JaXRlci0mZ3Q7YmlfYnZlY19kb25lID0gYnZbaWR4XS5idl9sZW4gLSBieXRlczsKJiM0MzsJaXRlci0mZ3Q7Ymlfb2Zmc2V0ID0gYnZbaWR4XS5idl9sZW4gLSBieXRlczsKIAlyZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jIGIvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jCmluZGV4IDdlOTgxODcwMTQ0NTEuLjhmODgxNmUxYzUzOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21kL2RtLXBjYWNoZS9zZWdtZW50LmMKQEAgLTE0LDcgJiM0MzsxNCw3IEBAIGludCBzZWdtZW50X2NvcHlfdG9fYmlvKHN0cnVjdCBwY2FjaGVfc2VnbWVudCAqc2VnbWVudCwKIAogCWlvdl9pdGVyX2J2ZWMoJmFtcDtpdGVyLCBJVEVSX0RFU1QsICZhbXA7YmlvLSZndDtiaV9pb192ZWNbYmlvLSZndDtiaV9pdGVyLmJpX2lkeF0sCiAJCQliaW9fc2VnbWVudHMoYmlvKSwgYmlvLSZndDtiaV9pdGVyLmJpX3NpemUpOwotCWl0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9idmVjX2RvbmU7CiYjNDM7CWl0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9vZmZzZXQ7CiAJaWYgKGJpb19vZmYpCiAJCWlvdl9pdGVyX2FkdmFuY2UoJmFtcDtpdGVyLCBiaW9fb2ZmKTsKIApAQCAtMzUsNyAmIzQzOzM1LDcgQEAgaW50IHNlZ21lbnRfY29weV9mcm9tX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsCiAKIAlpb3ZfaXRlcl9idmVjKCZhbXA7aXRlciwgSVRFUl9TT1VSQ0UsICZhbXA7YmlvLSZndDtiaV9pb192ZWNbYmlvLSZndDtiaV9pdGVyLmJpX2lkeF0sCiAJCQliaW9fc2VnbWVudHMoYmlvKSwgYmlvLSZndDtiaV9pdGVyLmJpX3NpemUpOwotCWl0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9idmVjX2RvbmU7CiYjNDM7CWl0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9vZmZzZXQ7CiAJaWYgKGJpb19vZmYpCiAJCWlvdl9pdGVyX2FkdmFuY2UoJmFtcDtpdGVyLCBiaW9fb2ZmKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vYnR0LmMgYi9kcml2ZXJzL252ZGltbS9idHQuYwppbmRleCA3ZTExMTI5NjBkN2Y4Li41ZDkxMGE2NDUwM2QzIDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9idHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252ZGltbS9idHQuYwpAQCAtMTE1NSw3ICYjNDM7MTE1NSw3IEBAIHN0YXRpYyBpbnQgYnR0X3J3X2ludGVncml0eShzdHJ1Y3QgYnR0ICpidHQsIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpcCwKIAkJYnYgPSBidmVjX2l0ZXJfYnZlYyhiaXAtJmd0O2JpcF92ZWMsIGJpcC0mZ3Q7YmlwX2l0ZXIpOwogCQkvKgogCQkgKiBUaGUgJiMzOTtidiYjMzk7IG9idGFpbmVkIGZyb20gYnZlY19pdGVyX2J2ZWMgaGFzIGl0cyAuYnZfbGVuIGFuZAotCQkgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItJmd0O2JpX2J2ZWNfZG9uZSwgYW5kIHdlCiYjNDM7CQkgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItJmd0O2JpX29mZnNldCwgYW5kIHdlCiAJCSAqIGNhbiB1c2UgdGhvc2UgZGlyZWN0bHkKIAkJICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKaW5kZXggYmE1YzdiM2UyYTdjNi4uY2UwM2EwZWE0ZGVkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKQEAgLTM1Nyw3ICYjNDM7MzU3LDcgQEAgc3RhdGljIHZvaWQgbnZtZV90Y3BfaW5pdF9pdGVyKHN0cnVjdCBudm1lX3RjcF9yZXF1ZXN0ICpyZXEsCiAJCWlvdl9pdGVyX2J2ZWMoJmFtcDtyZXEtJmd0O2l0ZXIsIGRpciwKIAkJCV9fYnZlY19pdGVyX2J2ZWMoYmlvLSZndDtiaV9pb192ZWMsIGJpby0mZ3Q7YmlfaXRlciksIG5yX2J2ZWMsCiAJCQliaW8tJmd0O2JpX2l0ZXIuYmlfc2l6ZSk7Ci0JCXJlcS0mZ3Q7aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLSZndDtiaV9pdGVyLmJpX2J2ZWNfZG9uZTsKJiM0MzsJCXJlcS0mZ3Q7aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLSZndDtiaV9pdGVyLmJpX29mZnNldDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL21pc2MuaCBiL2ZzL2J0cmZzL21pc2MuaAppbmRleCA2OTRiZTZkMDU2MmE0Li44MDIwNjA5NDMxODAxIDEwMDY0NAotLS0gYS9mcy9idHJmcy9taXNjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYnRyZnMvbWlzYy5oCkBAIC03NCw3ICYjNDM7NzQsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBidmVjX2l0ZXIgaW5pdF9idmVjX2l0ZXJfZm9yX2JpbyhzdHJ1Y3QgYmlvICpiaW8pCiAJCS5iaV9zZWN0b3IgPSAwLAogCQkuYmlfc2l6ZSA9IGJpb19zaXplLAogCQkuYmlfaWR4ID0gMCwKLQkJLmJpX2J2ZWNfZG9uZSA9IDAsCiYjNDM7CQkuYmlfb2Zmc2V0ID0gMCwKIAl9OwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J2ZWMuaCBiL2luY2x1ZGUvbGludXgvYnZlYy5oCmluZGV4IDkyODM3ZTI3NDNmMTkuLmZjNTY2ZWUxYzFmZjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYnZlYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnZlYy5oCkBAIC0xMTAsNyAmIzQzOzExMCw3IEBAIHN0cnVjdCBidmVjX2l0ZXIgewogCS8qCiAJICogQ3VycmVudCBvZmZzZXQgaW4gdGhlIGJ2ZWMgZW50cnkgcG9pbnRlZCB0byBieSBgYmlfaWR4YC4KIAkgKi8KLQl1bnNpZ25lZCBpbnQJCWJpX2J2ZWNfZG9uZTsKJiM0MzsJdW5zaWduZWQgaW50CQliaV9vZmZzZXQ7CiB9IF9fcGFja2VkIF9fYWxpZ25lZCg0KTsKIAogc3RydWN0IGJ2ZWNfaXRlcl9hbGwgewpAQCAtMTM1LDE0ICYjNDM7MTM1LDE0IEBAIG1wX2J2ZWNfaXRlcl9wYWdlKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidmVjcywgY29uc3Qgc3RydWN0IGJ2ZWNfaXRlciBpdGVyKQogc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQKIG1wX2J2ZWNfaXRlcl9sZW4oY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpCiB7Ci0JcmV0dXJuIG1pbihfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS0mZ3Q7YnZfbGVuIC0gaXRlci5iaV9idmVjX2RvbmUsCiYjNDM7CXJldHVybiBtaW4oX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktJmd0O2J2X2xlbiAtIGl0ZXIuYmlfb2Zmc2V0LAogCQkJaXRlci5iaV9zaXplKTsKIH0KIAogc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQKIG1wX2J2ZWNfaXRlcl9vZmZzZXQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpCiB7Ci0JcmV0dXJuIF9fYnZlY19pdGVyX2J2ZWMoYnZlY3MsIGl0ZXIpLSZndDtidl9vZmZzZXQgJiM0MzsgaXRlci5iaV9idmVjX2RvbmU7CiYjNDM7CXJldHVybiBfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS0mZ3Q7YnZfb2Zmc2V0ICYjNDM7IGl0ZXIuYmlfb2Zmc2V0OwogfQogCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludApAQCAtMjA0LDcgJiM0MzsyMDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LAogCX0KIAogCWl0ZXItJmd0O2JpX3NpemUgLT0gYnl0ZXM7Ci0JYnl0ZXMgJiM0Mzs9IGl0ZXItJmd0O2JpX2J2ZWNfZG9uZTsKJiM0MzsJYnl0ZXMgJiM0Mzs9IGl0ZXItJmd0O2JpX29mZnNldDsKIAogCXdoaWxlIChieXRlcyAmYW1wOyZhbXA7IGJ5dGVzICZndDs9IGJ2W2lkeF0uYnZfbGVuKSB7CiAJCWJ5dGVzIC09IGJ2W2lkeF0uYnZfbGVuOwpAQCAtMjEyLDcgJiM0MzsyMTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LAogCX0KIAogCWl0ZXItJmd0O2JpX2lkeCA9IGlkeDsKLQlpdGVyLSZndDtiaV9idmVjX2RvbmUgPSBieXRlczsKJiM0MzsJaXRlci0mZ3Q7Ymlfb2Zmc2V0ID0gYnl0ZXM7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIyMywxMyAmIzQzOzIyMywxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LAogc3RhdGljIGlubGluZSB2b2lkIGJ2ZWNfaXRlcl9hZHZhbmNlX3NpbmdsZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsCiAJCQkJc3RydWN0IGJ2ZWNfaXRlciAqaXRlciwgdW5zaWduZWQgaW50IGJ5dGVzKQogewotCXVuc2lnbmVkIGludCBkb25lID0gaXRlci0mZ3Q7YmlfYnZlY19kb25lICYjNDM7IGJ5dGVzOwomIzQzOwl1bnNpZ25lZCBpbnQgZG9uZSA9IGl0ZXItJmd0O2JpX29mZnNldCAmIzQzOyBieXRlczsKIAogCWlmIChkb25lID09IGJ2W2l0ZXItJmd0O2JpX2lkeF0uYnZfbGVuKSB7CiAJCWRvbmUgPSAwOwogCQlpdGVyLSZndDtiaV9pZHgmIzQzOyYjNDM7OwogCX0KLQlpdGVyLSZndDtiaV9idmVjX2RvbmUgPSBkb25lOwomIzQzOwlpdGVyLSZndDtiaV9vZmZzZXQgPSBkb25lOwogCWl0ZXItJmd0O2JpX3NpemUgLT0gYnl0ZXM7CiB9CiAKZGlmZiAtLWdpdCBhL2lvX3VyaW5nL25ldC5jIGIvaW9fdXJpbmcvbmV0LmMKaW5kZXggYTc0ZDE1ZjdiN2QyYi4uNDM5Yzk5YWQxODg0MSAxMDA2NDQKLS0tIGEvaW9fdXJpbmcvbmV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvbmV0LmMKQEAgLTE0NzEsNyAmIzQzOzE0NzEsNyBAQCBzdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTsKIAogCWJpLmJpX3NpemUgPSBtaW4oZnJvbS0mZ3Q7Y291bnQsIGxlbmd0aCk7Ci0JYmkuYmlfYnZlY19kb25lID0gZnJvbS0mZ3Q7aW92X29mZnNldDsKJiM0MzsJYmkuYmlfb2Zmc2V0ID0gZnJvbS0mZ3Q7aW92X29mZnNldDsKIAliaS5iaV9pZHggPSAwOwogCiAJd2hpbGUgKGJpLmJpX3NpemUgJmFtcDsmYW1wOyBmcmFnICZsdDsgTUFYX1NLQl9GUkFHUykgewpAQCAtMTQ5MCw3ICYjNDM7MTQ5MCw3IEBAIHN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsCiAJZnJvbS0mZ3Q7YnZlYyAmIzQzOz0gYmkuYmlfaWR4OwogCWZyb20tJmd0O25yX3NlZ3MgLT0gYmkuYmlfaWR4OwogCWZyb20tJmd0O2NvdW50IC09IGNvcGllZDsKLQlmcm9tLSZndDtpb3Zfb2Zmc2V0ID0gYmkuYmlfYnZlY19kb25lOwomIzQzOwlmcm9tLSZndDtpb3Zfb2Zmc2V0ID0gYmkuYmlfb2Zmc2V0OwogCiAJc2tiLSZndDtkYXRhX2xlbiAmIzQzOz0gY29waWVkOwogCXNrYi0mZ3Q7bGVuICYjNDM7PSBjb3BpZWQ7CmRpZmYgLS1naXQgYS9saWIvaW92X2l0ZXIuYyBiL2xpYi9pb3ZfaXRlci5jCmluZGV4IDM0YTUyZTliYTllMWIuLjgxZTVjNWU1MTIxZjcgMTAwNjQ0Ci0tLSBhL2xpYi9pb3ZfaXRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9pb3ZfaXRlci5jCkBAIC0xNjM0LDcgJiM0MzsxNjM0LDcgQEAgc3RhdGljIHNzaXplX3QgaW92X2l0ZXJfZXh0cmFjdF9idmVjX3BhZ2VzKHN0cnVjdCBpb3ZfaXRlciAqaSwKIAl9CiAJYmkuYmlfaWR4ID0gMDsKIAliaS5iaV9zaXplID0gbWF4c2l6ZTsKLQliaS5iaV9idmVjX2RvbmUgPSBza2lwOwomIzQzOwliaS5iaV9vZmZzZXQgPSBza2lwOwogCiAJbWF4cGFnZXMgPSB3YW50X3BhZ2VzX2FycmF5KHBhZ2VzLCBtYXhzaXplLCBza2lwLCBtYXhwYWdlcyk7CiAJaWYgKCFtYXhwYWdlcykKZGlmZiAtLWdpdCBhL25ldC9jZXBoL21lc3Nlbmdlci5jIGIvbmV0L2NlcGgvbWVzc2VuZ2VyLmMKaW5kZXggMzRiMzA5N2I0YzdiOS4uOWMxYjZjZjhjMzZmZSAxMDA2NDQKLS0tIGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NlcGgvbWVzc2VuZ2VyLmMKQEAgLTc2Miw3ICYjNDM7NzYyLDcgQEAgc3RhdGljIGJvb2wgY2VwaF9tc2dfZGF0YV9iaW9fYWR2YW5jZShzdHJ1Y3QgY2VwaF9tc2dfZGF0YV9jdXJzb3IgKmN1cnNvciwKIAlpZiAoIWN1cnNvci0mZ3Q7cmVzaWQpCiAJCXJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi8KIAotCWlmICghYnl0ZXMgfHwgKGl0LSZndDtpdGVyLmJpX3NpemUgJmFtcDsmYW1wOyBpdC0mZ3Q7aXRlci5iaV9idmVjX2RvbmUgJmFtcDsmYW1wOwomIzQzOwlpZiAoIWJ5dGVzIHx8IChpdC0mZ3Q7aXRlci5iaV9zaXplICZhbXA7JmFtcDsgaXQtJmd0O2l0ZXIuYmlfb2Zmc2V0ICZhbXA7JmFtcDsKIAkJICAgICAgIHBhZ2UgPT0gYmlvX2l0ZXJfcGFnZShpdC0mZ3Q7YmlvLCBpdC0mZ3Q7aXRlcikpKQogCQlyZXR1cm4gZmFsc2U7CS8qIG1vcmUgYnl0ZXMgdG8gcHJvY2VzcyBpbiB0aGlzIHNlZ21lbnQgKi8KIApAQCAtODE3LDcgJiM0Mzs4MTcsNyBAQCBzdGF0aWMgYm9vbCBjZXBoX21zZ19kYXRhX2J2ZWNzX2FkdmFuY2Uoc3RydWN0IGNlcGhfbXNnX2RhdGFfY3Vyc29yICpjdXJzb3IsCiAJaWYgKCFjdXJzb3ItJmd0O3Jlc2lkKQogCQlyZXR1cm4gZmFsc2U7ICAgLyogbm8gbW9yZSBkYXRhICovCiAKLQlpZiAoIWJ5dGVzIHx8IChjdXJzb3ItJmd0O2J2ZWNfaXRlci5iaV9idmVjX2RvbmUgJmFtcDsmYW1wOwomIzQzOwlpZiAoIWJ5dGVzIHx8IChjdXJzb3ItJmd0O2J2ZWNfaXRlci5iaV9vZmZzZXQgJmFtcDsmYW1wOwogCQkgICAgICAgcGFnZSA9PSBidmVjX2l0ZXJfcGFnZShidmVjcywgY3Vyc29yLSZndDtidmVjX2l0ZXIpKSkKIAkJcmV0dXJuIGZhbHNlOwkvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTM6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUxOQoJCQkJCQkJb3V0cHV0OiA3OQoJCQkJCQkJdGhvdWdodHM6IDU3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQdXJlIFJlbmFtZTogYGJpX2J2ZWNfZG9uZWAgdG8gYGJpX29mZnNldGAqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbC4gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBpdCYjMzk7cyBhbGwgYWJvdXQgcmVuYW1pbmcgYSBtZW1iZXIgaW4gdGhlIGBzdHJ1Y3QgYnZlY19pdGVyYC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTtyZSBzd2FwcGluZyBvdXQgYGJpX2J2ZWNfZG9uZWAgZm9yIGBiaV9vZmZzZXRgLiBOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtwdXJlbHkgbWVjaGFuaWNhbCwgbm8gZnVuY3Rpb25hbCBjaGFuZ2UsIHJpZ2h0PyYjMzQ7LiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQuCgpJJiMzOTttIHNjYW5uaW5nIHRoZSBkaWZmLiBJIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBiaW8tJmd0O2JpX2l0ZXIuYmlfYnZlY19kb25lYCBiZWNvbWVzIGBiaW8tJmd0O2JpX2l0ZXIuYmlfb2Zmc2V0YCwgdGhlIHNhbWUgZm9yIGBpdGVyLmJpX2J2ZWNfZG9uZWAsIGByZXEtJmd0O2l0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9idmVjX2RvbmVgIGFuZCBgYmkuYmlfYnZlY19kb25lYC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbiBpdHNlbGY6IGBiaV9idmVjX2RvbmVgIGlzIG5vdyBgYmlfb2Zmc2V0YC4gVGhpcyBjb25maXJtcyBteSBpbml0aWFsIHN1c3BpY2lvbiAtIGl0JiMzOTtzIGp1c3QgYSByZW5hbWUuIE5vIG5ldyBmdW5jdGlvbmFsaXR5LgoKYGBgYwpAQCAtMTEwLDcgJiM0MzsxMTAsNyBAQCBzdHJ1Y3QgYnZlY19pdGVyIHsKIAkvKgogCSAqIEN1cnJlbnQgb2Zmc2V0IGluIHRoZSBidmVjIGVudHJ5IHBvaW50ZWQgdG8gYnkgYGJpX2lkeGAuCiAJICovCi0JdW5zaWduZWQgaW50CQliaV9idmVjX2RvbmU7CiYjNDM7CXVuc2lnbmVkIGludAkJYmlfb2Zmc2V0OwogfSBfX3BhY2tlZCBfX2FsaWduZWQoNCk7CiBgYGAKCkdpdmVuIHRoaXMgaXMgcHVyZWx5IGEgY2hhbmdlIG9mIG5hbWUgYW5kIHRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbmFsaXR5IGl0c2VsZiwgdGhlIHBhdGNoIGlzIGEgbm8tb3AsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjay4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlcmUgYXJlIG5vIGhpZGRlbiBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIHF1aWNrbHkgbG9vayB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBkaWZmIGZvciBhbnkgcmVkIGZsYWdzLiBPa2F5LCBJIHNlZSB0aGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgYmVlbiB0b3VjaGVkOiBgRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdGAsIGBibG9jay9iaW8uY2AsIGBibG9jay9ibGstbWVyZ2UuY2AsIGBibG9jay9ibGstbXEtZG1hLmNgLCBgYmxvY2svYmxrLmhgLCBgZHJpdmVycy9ibG9jay9sb29wLmNgLCBgZHJpdmVycy9ibG9jay96bG9vcC5jYCwgYGRyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmNgLCBgZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jYCwgYGRyaXZlcnMvbnZkaW1tL2J0dC5jYCwgYGRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jYCwgYGZzL2J0cmZzL21pc2MuaGAsIGBpbmNsdWRlL2xpbnV4L2J2ZWMuaGAsIGBpb191cmluZy9uZXQuY2AsIGBsaWIvaW92X2l0ZXIuY2AsIGBuZXQvY2VwaC9tZXNzZW5nZXIuY2AuCgpZZXAsIGl0JiMzOTtzIGp1c3QgdGhlIHJlbmFtZSBwcm9wYWdhdGVkIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLCBhbmQgc29tZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgKGFuZCBhIGNvbW1lbnQpLiBOb3RoaW5nIGVsc2UuIFRoaXMgaXMgYSBjbGVhbiByZW5hbWUsIGEgc2FmZSByZW5hbWUsIGFuZCBkb2VzbiYjMzk7dCBjaGFuZ2Ugd2hhdCB0aGUgc29mdHdhcmUgKmRvZXMqLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBhIG5vbi1mdW5jdGlvbmFsIGNoYW5nZSwgYW5kIG5vdCB3b3J0aCBteSBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTM6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmFtZSBvZiB0aGUgYGJpX2J2ZWNfZG9uZWAgbWVtYmVyIHRvIGBiaV9vZmZzZXRgIGluIGBzdHJ1Y3QgYnZlY19pdGVyYCBhY3Jvc3MgdGhlIGtlcm5lbC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlbHkgbWVjaGFuaWNhbCByZW5hbWUgb2YgdGhlIGBiaV9idmVjX2RvbmVgIG1lbWJlciB0byBgYmlfb2Zmc2V0YCBpbiBgc3RydWN0IGJ2ZWNfaXRlcmAgYWNyb3NzIHRoZSBrZXJuZWwuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMzoyNTo0MS42NzM4NzgxNDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTcwNTg4NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmFtZSBvZiB0aGUgYGJpX2J2ZWNfZG9uZWAgbWVtYmVyIHRvIGBiaV9vZmZzZXRgIGluIGBzdHJ1Y3QgYnZlY19pdGVyYCBhY3Jvc3MgdGhlIGtlcm5lbC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTM6MjU6NDEuNjczODgzNDk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTUyMDUwNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNzYwNDUzYThjZDQ2NzBjNmIzYjk3NjQzM2MyODQxMmM2Yjg2NDQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTM6MjU6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdCBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcXG5pbmRleCAxMTEyNmVkNmY0MGY3Li40OWRhMjE0N2I3ZDg2IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0XFxuQEAgLTE2LDE2ICsxNiwxNiBAQCBidl9sZW4gYnkgdGhlIG51bWJlciBvZiBieXRlcyBjb21wbGV0ZWQgaW4gdGhhdCBiaW92ZWMuXFxuIEluIHRoZSBuZXcgc2NoZW1lIG9mIHRoaW5ncywgZXZlcnl0aGluZyB0aGF0IG11c3QgYmUgbXV0YXRlZCBpbiBvcmRlciB0b1xcbiBwYXJ0aWFsbHkgY29tcGxldGUgYSBiaW8gaXMgc2VncmVnYXRlZCBpbnRvIHN0cnVjdCBidmVjX2l0ZXI6IGJpX3NlY3RvcixcXG4gYmlfc2l6ZSBhbmQgYmlfaWR4IGhhdmUgYmVlbiBtb3ZlZCB0aGVyZTsgYW5kIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGJ2X29mZnNldFxcbi1hbmQgYnZfbGVuLCBzdHJ1Y3QgYnZlY19pdGVyIGhhcyBiaV9idmVjX2RvbmUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZlxcbithbmQgYnZfbGVuLCBzdHJ1Y3QgYnZlY19pdGVyIGhhcyBiaV9vZmZzZXQsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZlxcbiBieXRlcyBjb21wbGV0ZWQgaW4gdGhlIGN1cnJlbnQgYnZlYy5cXG4gXFxuIFRoZXJlIGFyZSBhIGJ1bmNoIG9mIG5ldyBoZWxwZXIgbWFjcm9zIGZvciBoaWRpbmcgdGhlIGdvcnkgZGV0YWlscyAtIGluXFxuIHBhcnRpY3VsYXIsIHByZXNlbnRpbmcgdGhlIGlsbHVzaW9uIG9mIHBhcnRpYWxseSBjb21wbGV0ZWQgYmlvdmVjcyBzbyB0aGF0XFxuLW5vcm1hbCBjb2RlIGRvZXNuJ3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfYnZlY19kb25lLlxcbitub3JtYWwgY29kZSBkb2Vzbid0IGhhdmUgdG8gZGVhbCB3aXRoIGJpX29mZnNldC5cXG4gXFxuICAqIERyaXZlciBjb2RlIHNob3VsZCBubyBsb25nZXIgcmVmZXIgdG8gYmlvdmVjcyBkaXJlY3RseTsgd2Ugbm93IGhhdmVcXG4gICAgYmlvX2lvdmVjKCkgYW5kIGJpb19pdGVyX2lvdmVjKCkgbWFjcm9zIHRoYXQgcmV0dXJuIGxpdGVyYWwgc3RydWN0IGJpb3ZlY3MsXFxuLSAgIGNvbnN0cnVjdGVkIGZyb20gdGhlIHJhdyBiaW92ZWNzIGJ1dCB0YWtpbmcgaW50byBhY2NvdW50IGJpX2J2ZWNfZG9uZSBhbmRcXG4rICAgY29uc3RydWN0ZWQgZnJvbSB0aGUgcmF3IGJpb3ZlY3MgYnV0IHRha2luZyBpbnRvIGFjY291bnQgYmlfb2Zmc2V0IGFuZFxcbiAgICBiaV9zaXplLlxcbiBcXG4gICAgYmlvX2Zvcl9lYWNoX3NlZ21lbnQoKSBoYXMgYmVlbiB1cGRhdGVkIHRvIHRha2UgYSBidmVjX2l0ZXIgYXJndW1lbnRcXG5AQCAtMTAxLDcgKzEwMSw3IEBAIE90aGVyIGltcGxpY2F0aW9uczpcXG4gICAgSS5lLiBpbnN0ZWFkIG9mIHVzaW5nIGJpb19pb3ZlY19pZHgoKSAob3IgYmlvLVxcdTAwM2ViaV9pb3ZlY1tiaW8tXFx1MDAzZWJpX2lkeF0pLCB5b3VcXG4gICAgbm93IHVzZSBiaW9faXRlcl9pb3ZlYygpLCB3aGljaCB0YWtlcyBhIGJ2ZWNfaXRlciBhbmQgcmV0dXJucyBhXFxuICAgIGxpdGVyYWwgc3RydWN0IGJpb192ZWMgLSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5IGZyb20gdGhlIHJhdyBiaW92ZWMgYnV0XFxuLSAgIHRha2luZyBpbnRvIGFjY291bnQgYmlfYnZlY19kb25lIChhbmQgYmlfc2l6ZSkuXFxuKyAgIHRha2luZyBpbnRvIGFjY291bnQgYmlfb2Zmc2V0IChhbmQgYmlfc2l6ZSkuXFxuIFxcbiAgKiBiaV92Y250IGNhbid0IGJlIHRydXN0ZWQgb3IgcmVsaWVkIHVwb24gYnkgZHJpdmVyIGNvZGUgLSBpLmUuIGFueXRoaW5nIHRoYXRcXG4gICAgZG9lc24ndCBhY3R1YWxseSBvd24gdGhlIGJpby4gVGhlIHJlYXNvbiBpcyB0d29mb2xkOiBmaXJzdGx5LCBpdCdzIG5vdFxcbmRpZmYgLS1naXQgYS9ibG9jay9iaW8uYyBiL2Jsb2NrL2Jpby5jXFxuaW5kZXggNTAwMzg5ZjMzMmQ5OS4uNDA3NGEwNDk2YjkzZiAxMDA2NDRcXG4tLS0gYS9ibG9jay9iaW8uY1xcbisrKyBiL2Jsb2NrL2Jpby5jXFxuQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIGJpb19pbml0KHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IGJpb192ZWMgKnRhYmxlLFxcbiBcXHRiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yID0gMDtcXG4gXFx0YmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemUgPSAwO1xcbiBcXHRiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfaWR4ID0gMDtcXG4tXFx0YmlvLVxcdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IDA7XFxuK1xcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQgPSAwO1xcbiBcXHRiaW8tXFx1MDAzZWJpX2VuZF9pbyA9IE5VTEw7XFxuIFxcdGJpby1cXHUwMDNlYmlfcHJpdmF0ZSA9IE5VTEw7XFxuICNpZmRlZiBDT05GSUdfQkxLX0NHUk9VUFxcbkBAIC0xMTg4LDcgKzExODgsNyBAQCB2b2lkIGJpb19pb3ZfYnZlY19zZXQoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXFxuIFxcbiBcXHRiaW8tXFx1MDAzZWJpX2lvX3ZlYyA9IChzdHJ1Y3QgYmlvX3ZlYyAqKWl0ZXItXFx1MDAzZWJ2ZWM7XFxuIFxcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9pZHggPSAwO1xcbi1cXHRiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lID0gaXRlci1cXHUwMDNlaW92X29mZnNldDtcXG4rXFx0YmlvLVxcdTAwM2ViaV9pdGVyLmJpX29mZnNldCA9IGl0ZXItXFx1MDAzZWlvdl9vZmZzZXQ7XFxuIFxcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9zaXplID0gaW92X2l0ZXJfY291bnQoaXRlcik7XFxuIFxcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DTE9ORUQpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1tZXJnZS5jIGIvYmxvY2svYmxrLW1lcmdlLmNcXG5pbmRleCBhYjExNjFjYTY5ZjFlLi4yNThhNzI2MDcxZDEyIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jXFxuKysrIGIvYmxvY2svYmxrLW1lcmdlLmNcXG5AQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpXFxuIFxcbiBcXHRiaW9fYWR2YW5jZV9pdGVyKGJpbywgXFx1MDAyNml0ZXIsIGl0ZXIuYmlfc2l6ZSk7XFxuIFxcbi1cXHRpZiAoIWl0ZXIuYmlfYnZlY19kb25lKVxcbitcXHRpZiAoIWl0ZXIuYmlfb2Zmc2V0KVxcbiBcXHRcXHRpZHggPSBpdGVyLmJpX2lkeCAtIDE7XFxuIFxcdGVsc2VcXHQvKiBpbiB0aGUgbWlkZGxlIG9mIGJ2ZWMgKi9cXG4gXFx0XFx0aWR4ID0gaXRlci5iaV9pZHg7XFxuQEAgLTQxLDExICs0MSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpXFxuIFxcdCpidiA9IGJpby1cXHUwMDNlYmlfaW9fdmVjW2lkeF07XFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBpdGVyLmJpX2J2ZWNfZG9uZSByZWNvcmRzIGFjdHVhbCBsZW5ndGggb2YgdGhlIGxhc3QgYnZlY1xcbitcXHQgKiBpdGVyLmJpX29mZnNldCByZWNvcmRzIGFjdHVhbCBsZW5ndGggb2YgdGhlIGxhc3QgYnZlY1xcbiBcXHQgKiBpZiB0aGlzIGJpbyBlbmRzIGluIHRoZSBtaWRkbGUgb2Ygb25lIGlvIHZlY3RvclxcbiBcXHQgKi9cXG4tXFx0aWYgKGl0ZXIuYmlfYnZlY19kb25lKVxcbi1cXHRcXHRidi1cXHUwMDNlYnZfbGVuID0gaXRlci5iaV9idmVjX2RvbmU7XFxuK1xcdGlmIChpdGVyLmJpX29mZnNldClcXG4rXFx0XFx0YnYtXFx1MDAzZWJ2X2xlbiA9IGl0ZXIuYmlfb2Zmc2V0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgYmlvX3dpbGxfZ2FwKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxcbmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEtZG1hLmMgYi9ibG9jay9ibGstbXEtZG1hLmNcXG5pbmRleCBiZmRiOWVkNzA3NDExLi44OGZkOWNiYzk1MWY0IDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2Jsay1tcS1kbWEuY1xcbisrKyBiL2Jsb2NrL2Jsay1tcS1kbWEuY1xcbkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBib29sIGJsa19tYXBfaXRlcl9uZXh0KHN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBibGtfbWFwX2l0ZXIgKml0ZXIsXFxuIFxcdCAqIG9uZSBjb3VsZCBiZSBtZXJnZWQgaW50byBpdC4gIFRoaXMgdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBtb3ZpbmcgdG9cXG4gXFx0ICogdGhlIG5leHQgYmlvLCBidXQgc29tZSBjYWxsZXJzIGFsc28gZG9uJ3QgcGFjayBidmVjcyB0aWdodC5cXG4gXFx0ICovXFxuLVxcdHdoaWxlICghaXRlci1cXHUwMDNlaXRlci5iaV9zaXplIHx8ICFpdGVyLVxcdTAwM2VpdGVyLmJpX2J2ZWNfZG9uZSkge1xcbitcXHR3aGlsZSAoIWl0ZXItXFx1MDAzZWl0ZXIuYmlfc2l6ZSB8fCAhaXRlci1cXHUwMDNlaXRlci5iaV9vZmZzZXQpIHtcXG4gXFx0XFx0c3RydWN0IGJpb192ZWMgbmV4dDtcXG4gXFxuIFxcdFxcdGlmICghX19ibGtfbWFwX2l0ZXJfbmV4dChpdGVyKSlcXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLmggYi9ibG9jay9ibGsuaFxcbmluZGV4IGVhYWMwNTgxNWNiMDMuLjUwYWJmZDkzMjg4NjEgMTAwNjQ0XFxuLS0tIGEvYmxvY2svYmxrLmhcXG4rKysgYi9ibG9jay9ibGsuaFxcbkBAIC00MDYsNyArNDA2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGJpb19tYXlfbmVlZF9zcGxpdChzdHJ1Y3QgYmlvICpiaW8sXFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXG4gXFx0YnYgPSBfX2J2ZWNfaXRlcl9idmVjKGJpby1cXHUwMDNlYmlfaW9fdmVjLCBiaW8tXFx1MDAzZWJpX2l0ZXIpO1xcbi1cXHRpZiAoYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemUgXFx1MDAzZSBidi1cXHUwMDNlYnZfbGVuIC0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSlcXG4rXFx0aWYgKGJpby1cXHUwMDNlYmlfaXRlci5iaV9zaXplIFxcdTAwM2UgYnYtXFx1MDAzZWJ2X2xlbiAtIGJpby1cXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQpXFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXHRpZiAoKGJ2LVxcdTAwM2Vidl9vZmZzZXQgfCBidi1cXHUwMDNlYnZfbGVuKSBcXHUwMDI2IGxpbS1cXHUwMDNlZG1hX2FsaWdubWVudClcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5pbmRleCAyNmQ3MTMwYzNmNTU5Li44NjM5ZmEzNGI4NDcwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5AQCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyBpbnQgbG9fcndfYWlvKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBsb29wX2NtZCAqY21kLFxcbiBcXHRcXHRpb3ZfaXRlcl9idmVjKFxcdTAwMjZpdGVyLCBydyxcXG4gXFx0XFx0XFx0X19idmVjX2l0ZXJfYnZlYyhycS1cXHUwMDNlYmlvLVxcdTAwM2ViaV9pb192ZWMsIHJxLVxcdTAwM2ViaW8tXFx1MDAzZWJpX2l0ZXIpLFxcbiBcXHRcXHRcXHRucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTtcXG4tXFx0XFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXFx1MDAzZWJpby1cXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XFxuK1xcdFxcdGl0ZXIuaW92X29mZnNldCA9IHJxLVxcdTAwM2ViaW8tXFx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xcbiBcXHR9XFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmNtZC1cXHUwMDNlcmVmLCAyKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svemxvb3AuYyBiL2RyaXZlcnMvYmxvY2svemxvb3AuY1xcbmluZGV4IDU4ZWM4MTYxYjdlMmYuLjQzMjNhYzEwOGNhZTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96bG9vcC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay96bG9vcC5jXFxuQEAgLTU1NSw3ICs1NTUsNyBAQCBzdGF0aWMgaW50IHpsb29wX2RvX3J3KHN0cnVjdCB6bG9vcF9jbWQgKmNtZClcXG4gXFx0XFx0aW92X2l0ZXJfYnZlYyhcXHUwMDI2aXRlciwgcncsXFxuIFxcdFxcdFxcdF9fYnZlY19pdGVyX2J2ZWMocnEtXFx1MDAzZWJpby1cXHUwMDNlYmlfaW9fdmVjLCBycS1cXHUwMDNlYmlvLVxcdTAwM2ViaV9pdGVyKSxcXG4gXFx0XFx0XFx0XFx0XFx0bnJfYnZlYywgYmxrX3JxX2J5dGVzKHJxKSk7XFxuLVxcdFxcdGl0ZXIuaW92X29mZnNldCA9IHJxLVxcdTAwM2ViaW8tXFx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xcbitcXHRcXHRpdGVyLmlvdl9vZmZzZXQgPSBycS1cXHUwMDNlYmlvLVxcdTAwM2ViaV9pdGVyLmJpX29mZnNldDtcXG4gXFx0fVxcbiBcXG4gXFx0Y21kLVxcdTAwM2Vpb2NiLmtpX3BvcyA9IChjbWQtXFx1MDAzZXNlY3RvciAtIHpvbmUtXFx1MDAzZXN0YXJ0KSBcXHUwMDNjXFx1MDAzYyBTRUNUT1JfU0hJRlQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmMgYi9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXFxuaW5kZXggNjE1NWIwMTE3YzlkNi4uMDRmM2ZjOGFlYjZmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXFxuKysrIGIvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuY1xcbkBAIC0xNiwxMiArMTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxcbiBcXHRpbnQgaWR4O1xcbiBcXG4gXFx0aXRlci1cXHUwMDNlYmlfc2l6ZSArPSBieXRlcztcXG4tXFx0aWYgKGJ5dGVzIFxcdTAwM2M9IGl0ZXItXFx1MDAzZWJpX2J2ZWNfZG9uZSkge1xcbi1cXHRcXHRpdGVyLVxcdTAwM2ViaV9idmVjX2RvbmUgLT0gYnl0ZXM7XFxuK1xcdGlmIChieXRlcyBcXHUwMDNjPSBpdGVyLVxcdTAwM2ViaV9vZmZzZXQpIHtcXG4rXFx0XFx0aXRlci1cXHUwMDNlYmlfb2Zmc2V0IC09IGJ5dGVzO1xcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG4tXFx0Ynl0ZXMgLT0gaXRlci1cXHUwMDNlYmlfYnZlY19kb25lO1xcbitcXHRieXRlcyAtPSBpdGVyLVxcdTAwM2ViaV9vZmZzZXQ7XFxuIFxcdGlkeCA9IGl0ZXItXFx1MDAzZWJpX2lkeCAtIDE7XFxuIFxcbiBcXHR3aGlsZSAoaWR4IFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgYnl0ZXMgXFx1MDAyNlxcdTAwMjYgYnl0ZXMgXFx1MDAzZSBidltpZHhdLmJ2X2xlbikge1xcbkBAIC0zMiwxMyArMzIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxcbiBcXHRpZiAoV0FSTl9PTkNFKGlkeCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgYnl0ZXMsXFxuIFxcdFxcdCAgICAgIFxcXCJBdHRlbXB0ZWQgdG8gcmV3aW5kIGl0ZXIgYmV5b25kIGJ2ZWMncyBib3VuZGFyaWVzXFxcXG5cXFwiKSkge1xcbiBcXHRcXHRpdGVyLVxcdTAwM2ViaV9zaXplIC09IGJ5dGVzO1xcbi1cXHRcXHRpdGVyLVxcdTAwM2ViaV9idmVjX2RvbmUgPSAwO1xcbitcXHRcXHRpdGVyLVxcdTAwM2ViaV9vZmZzZXQgPSAwO1xcbiBcXHRcXHRpdGVyLVxcdTAwM2ViaV9pZHggPSAwO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gXFxuIFxcdGl0ZXItXFx1MDAzZWJpX2lkeCA9IGlkeDtcXG4tXFx0aXRlci1cXHUwMDNlYmlfYnZlY19kb25lID0gYnZbaWR4XS5idl9sZW4gLSBieXRlcztcXG4rXFx0aXRlci1cXHUwMDNlYmlfb2Zmc2V0ID0gYnZbaWR4XS5idl9sZW4gLSBieXRlcztcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuYyBiL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xcbmluZGV4IDdlOTgxODcwMTQ0NTEuLjhmODgxNmUxYzUzOWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jXFxuKysrIGIvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jXFxuQEAgLTE0LDcgKzE0LDcgQEAgaW50IHNlZ21lbnRfY29weV90b19iaW8oc3RydWN0IHBjYWNoZV9zZWdtZW50ICpzZWdtZW50LFxcbiBcXG4gXFx0aW92X2l0ZXJfYnZlYyhcXHUwMDI2aXRlciwgSVRFUl9ERVNULCBcXHUwMDI2YmlvLVxcdTAwM2ViaV9pb192ZWNbYmlvLVxcdTAwM2ViaV9pdGVyLmJpX2lkeF0sXFxuIFxcdFxcdFxcdGJpb19zZWdtZW50cyhiaW8pLCBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XFxuLVxcdGl0ZXIuaW92X29mZnNldCA9IGJpby1cXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XFxuK1xcdGl0ZXIuaW92X29mZnNldCA9IGJpby1cXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XFxuIFxcdGlmIChiaW9fb2ZmKVxcbiBcXHRcXHRpb3ZfaXRlcl9hZHZhbmNlKFxcdTAwMjZpdGVyLCBiaW9fb2ZmKTtcXG4gXFxuQEAgLTM1LDcgKzM1LDcgQEAgaW50IHNlZ21lbnRfY29weV9mcm9tX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsXFxuIFxcbiBcXHRpb3ZfaXRlcl9idmVjKFxcdTAwMjZpdGVyLCBJVEVSX1NPVVJDRSwgXFx1MDAyNmJpby1cXHUwMDNlYmlfaW9fdmVjW2Jpby1cXHUwMDNlYmlfaXRlci5iaV9pZHhdLFxcbiBcXHRcXHRcXHRiaW9fc2VnbWVudHMoYmlvKSwgYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemUpO1xcbi1cXHRpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xcbitcXHRpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xcbiBcXHRpZiAoYmlvX29mZilcXG4gXFx0XFx0aW92X2l0ZXJfYWR2YW5jZShcXHUwMDI2aXRlciwgYmlvX29mZik7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252ZGltbS9idHQuYyBiL2RyaXZlcnMvbnZkaW1tL2J0dC5jXFxuaW5kZXggN2UxMTEyOTYwZDdmOC4uNWQ5MTBhNjQ1MDNkMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252ZGltbS9idHQuY1xcbisrKyBiL2RyaXZlcnMvbnZkaW1tL2J0dC5jXFxuQEAgLTExNTUsNyArMTE1NSw3IEBAIHN0YXRpYyBpbnQgYnR0X3J3X2ludGVncml0eShzdHJ1Y3QgYnR0ICpidHQsIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpcCxcXG4gXFx0XFx0YnYgPSBidmVjX2l0ZXJfYnZlYyhiaXAtXFx1MDAzZWJpcF92ZWMsIGJpcC1cXHUwMDNlYmlwX2l0ZXIpO1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBUaGUgJ2J2JyBvYnRhaW5lZCBmcm9tIGJ2ZWNfaXRlcl9idmVjIGhhcyBpdHMgLmJ2X2xlbiBhbmRcXG4tXFx0XFx0ICogLmJ2X29mZnNldCBhbHJlYWR5IGFkanVzdGVkIGZvciBpdGVyLVxcdTAwM2ViaV9idmVjX2RvbmUsIGFuZCB3ZVxcbitcXHRcXHQgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItXFx1MDAzZWJpX29mZnNldCwgYW5kIHdlXFxuIFxcdFxcdCAqIGNhbiB1c2UgdGhvc2UgZGlyZWN0bHlcXG4gXFx0XFx0ICovXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXFxuaW5kZXggYmE1YzdiM2UyYTdjNi4uY2UwM2EwZWE0ZGVkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXFxuQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgdm9pZCBudm1lX3RjcF9pbml0X2l0ZXIoc3RydWN0IG52bWVfdGNwX3JlcXVlc3QgKnJlcSxcXG4gXFx0XFx0aW92X2l0ZXJfYnZlYyhcXHUwMDI2cmVxLVxcdTAwM2VpdGVyLCBkaXIsXFxuIFxcdFxcdFxcdF9fYnZlY19pdGVyX2J2ZWMoYmlvLVxcdTAwM2ViaV9pb192ZWMsIGJpby1cXHUwMDNlYmlfaXRlciksIG5yX2J2ZWMsXFxuIFxcdFxcdFxcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9zaXplKTtcXG4tXFx0XFx0cmVxLVxcdTAwM2VpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xcbitcXHRcXHRyZXEtXFx1MDAzZWl0ZXIuaW92X29mZnNldCA9IGJpby1cXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvbWlzYy5oIGIvZnMvYnRyZnMvbWlzYy5oXFxuaW5kZXggNjk0YmU2ZDA1NjJhNC4uODAyMDYwOTQzMTgwMSAxMDA2NDRcXG4tLS0gYS9mcy9idHJmcy9taXNjLmhcXG4rKysgYi9mcy9idHJmcy9taXNjLmhcXG5AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBidmVjX2l0ZXIgaW5pdF9idmVjX2l0ZXJfZm9yX2JpbyhzdHJ1Y3QgYmlvICpiaW8pXFxuIFxcdFxcdC5iaV9zZWN0b3IgPSAwLFxcbiBcXHRcXHQuYmlfc2l6ZSA9IGJpb19zaXplLFxcbiBcXHRcXHQuYmlfaWR4ID0gMCxcXG4tXFx0XFx0LmJpX2J2ZWNfZG9uZSA9IDAsXFxuK1xcdFxcdC5iaV9vZmZzZXQgPSAwLFxcbiBcXHR9O1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J2ZWMuaCBiL2luY2x1ZGUvbGludXgvYnZlYy5oXFxuaW5kZXggOTI4MzdlMjc0M2YxOS4uZmM1NjZlZTFjMWZmMSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYnZlYy5oXFxuQEAgLTExMCw3ICsxMTAsNyBAQCBzdHJ1Y3QgYnZlY19pdGVyIHtcXG4gXFx0LypcXG4gXFx0ICogQ3VycmVudCBvZmZzZXQgaW4gdGhlIGJ2ZWMgZW50cnkgcG9pbnRlZCB0byBieSBgYmlfaWR4YC5cXG4gXFx0ICovXFxuLVxcdHVuc2lnbmVkIGludFxcdFxcdGJpX2J2ZWNfZG9uZTtcXG4rXFx0dW5zaWduZWQgaW50XFx0XFx0Ymlfb2Zmc2V0O1xcbiB9IF9fcGFja2VkIF9fYWxpZ25lZCg0KTtcXG4gXFxuIHN0cnVjdCBidmVjX2l0ZXJfYWxsIHtcXG5AQCAtMTM1LDE0ICsxMzUsMTQgQEAgbXBfYnZlY19pdGVyX3BhZ2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50XFxuIG1wX2J2ZWNfaXRlcl9sZW4oY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXFxuIHtcXG4tXFx0cmV0dXJuIG1pbihfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS1cXHUwMDNlYnZfbGVuIC0gaXRlci5iaV9idmVjX2RvbmUsXFxuK1xcdHJldHVybiBtaW4oX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXFx1MDAzZWJ2X2xlbiAtIGl0ZXIuYmlfb2Zmc2V0LFxcbiBcXHRcXHRcXHRpdGVyLmJpX3NpemUpO1xcbiB9XFxuIFxcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludFxcbiBtcF9idmVjX2l0ZXJfb2Zmc2V0KGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidmVjcywgY29uc3Qgc3RydWN0IGJ2ZWNfaXRlciBpdGVyKVxcbiB7XFxuLVxcdHJldHVybiBfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS1cXHUwMDNlYnZfb2Zmc2V0ICsgaXRlci5iaV9idmVjX2RvbmU7XFxuK1xcdHJldHVybiBfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS1cXHUwMDNlYnZfb2Zmc2V0ICsgaXRlci5iaV9vZmZzZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50XFxuQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxcbiBcXHR9XFxuIFxcbiBcXHRpdGVyLVxcdTAwM2ViaV9zaXplIC09IGJ5dGVzO1xcbi1cXHRieXRlcyArPSBpdGVyLVxcdTAwM2ViaV9idmVjX2RvbmU7XFxuK1xcdGJ5dGVzICs9IGl0ZXItXFx1MDAzZWJpX29mZnNldDtcXG4gXFxuIFxcdHdoaWxlIChieXRlcyBcXHUwMDI2XFx1MDAyNiBieXRlcyBcXHUwMDNlPSBidltpZHhdLmJ2X2xlbikge1xcbiBcXHRcXHRieXRlcyAtPSBidltpZHhdLmJ2X2xlbjtcXG5AQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBidmVjX2l0ZXJfYWR2YW5jZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXFxuIFxcdH1cXG4gXFxuIFxcdGl0ZXItXFx1MDAzZWJpX2lkeCA9IGlkeDtcXG4tXFx0aXRlci1cXHUwMDNlYmlfYnZlY19kb25lID0gYnl0ZXM7XFxuK1xcdGl0ZXItXFx1MDAzZWJpX29mZnNldCA9IGJ5dGVzO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG5AQCAtMjIzLDEzICsyMjMsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGJ2ZWNfaXRlcl9hZHZhbmNlKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidixcXG4gc3RhdGljIGlubGluZSB2b2lkIGJ2ZWNfaXRlcl9hZHZhbmNlX3NpbmdsZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBidmVjX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGludCBieXRlcylcXG4ge1xcbi1cXHR1bnNpZ25lZCBpbnQgZG9uZSA9IGl0ZXItXFx1MDAzZWJpX2J2ZWNfZG9uZSArIGJ5dGVzO1xcbitcXHR1bnNpZ25lZCBpbnQgZG9uZSA9IGl0ZXItXFx1MDAzZWJpX29mZnNldCArIGJ5dGVzO1xcbiBcXG4gXFx0aWYgKGRvbmUgPT0gYnZbaXRlci1cXHUwMDNlYmlfaWR4XS5idl9sZW4pIHtcXG4gXFx0XFx0ZG9uZSA9IDA7XFxuIFxcdFxcdGl0ZXItXFx1MDAzZWJpX2lkeCsrO1xcbiBcXHR9XFxuLVxcdGl0ZXItXFx1MDAzZWJpX2J2ZWNfZG9uZSA9IGRvbmU7XFxuK1xcdGl0ZXItXFx1MDAzZWJpX29mZnNldCA9IGRvbmU7XFxuIFxcdGl0ZXItXFx1MDAzZWJpX3NpemUgLT0gYnl0ZXM7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL25ldC5jIGIvaW9fdXJpbmcvbmV0LmNcXG5pbmRleCBhNzRkMTVmN2I3ZDJiLi40MzljOTlhZDE4ODQxIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL25ldC5jXFxuKysrIGIvaW9fdXJpbmcvbmV0LmNcXG5AQCAtMTQ3MSw3ICsxNDcxLDcgQEAgc3RhdGljIGludCBpb19zZ19mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0cmV0dXJuIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XFxuIFxcbiBcXHRiaS5iaV9zaXplID0gbWluKGZyb20tXFx1MDAzZWNvdW50LCBsZW5ndGgpO1xcbi1cXHRiaS5iaV9idmVjX2RvbmUgPSBmcm9tLVxcdTAwM2Vpb3Zfb2Zmc2V0O1xcbitcXHRiaS5iaV9vZmZzZXQgPSBmcm9tLVxcdTAwM2Vpb3Zfb2Zmc2V0O1xcbiBcXHRiaS5iaV9pZHggPSAwO1xcbiBcXG4gXFx0d2hpbGUgKGJpLmJpX3NpemUgXFx1MDAyNlxcdTAwMjYgZnJhZyBcXHUwMDNjIE1BWF9TS0JfRlJBR1MpIHtcXG5AQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIGludCBpb19zZ19mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ZnJvbS1cXHUwMDNlYnZlYyArPSBiaS5iaV9pZHg7XFxuIFxcdGZyb20tXFx1MDAzZW5yX3NlZ3MgLT0gYmkuYmlfaWR4O1xcbiBcXHRmcm9tLVxcdTAwM2Vjb3VudCAtPSBjb3BpZWQ7XFxuLVxcdGZyb20tXFx1MDAzZWlvdl9vZmZzZXQgPSBiaS5iaV9idmVjX2RvbmU7XFxuK1xcdGZyb20tXFx1MDAzZWlvdl9vZmZzZXQgPSBiaS5iaV9vZmZzZXQ7XFxuIFxcbiBcXHRza2ItXFx1MDAzZWRhdGFfbGVuICs9IGNvcGllZDtcXG4gXFx0c2tiLVxcdTAwM2VsZW4gKz0gY29waWVkO1xcbmRpZmYgLS1naXQgYS9saWIvaW92X2l0ZXIuYyBiL2xpYi9pb3ZfaXRlci5jXFxuaW5kZXggMzRhNTJlOWJhOWUxYi4uODFlNWM1ZTUxMjFmNyAxMDA2NDRcXG4tLS0gYS9saWIvaW92X2l0ZXIuY1xcbisrKyBiL2xpYi9pb3ZfaXRlci5jXFxuQEAgLTE2MzQsNyArMTYzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IGlvdl9pdGVyX2V4dHJhY3RfYnZlY19wYWdlcyhzdHJ1Y3QgaW92X2l0ZXIgKmksXFxuIFxcdH1cXG4gXFx0YmkuYmlfaWR4ID0gMDtcXG4gXFx0YmkuYmlfc2l6ZSA9IG1heHNpemU7XFxuLVxcdGJpLmJpX2J2ZWNfZG9uZSA9IHNraXA7XFxuK1xcdGJpLmJpX29mZnNldCA9IHNraXA7XFxuIFxcbiBcXHRtYXhwYWdlcyA9IHdhbnRfcGFnZXNfYXJyYXkocGFnZXMsIG1heHNpemUsIHNraXAsIG1heHBhZ2VzKTtcXG4gXFx0aWYgKCFtYXhwYWdlcylcXG5kaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXIuY1xcbmluZGV4IDM0YjMwOTdiNGM3YjkuLjljMWI2Y2Y4YzM2ZmUgMTAwNjQ0XFxuLS0tIGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmNcXG4rKysgYi9uZXQvY2VwaC9tZXNzZW5nZXIuY1xcbkBAIC03NjIsNyArNzYyLDcgQEAgc3RhdGljIGJvb2wgY2VwaF9tc2dfZGF0YV9iaW9fYWR2YW5jZShzdHJ1Y3QgY2VwaF9tc2dfZGF0YV9jdXJzb3IgKmN1cnNvcixcXG4gXFx0aWYgKCFjdXJzb3ItXFx1MDAzZXJlc2lkKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7ICAgLyogbm8gbW9yZSBkYXRhICovXFxuIFxcbi1cXHRpZiAoIWJ5dGVzIHx8IChpdC1cXHUwMDNlaXRlci5iaV9zaXplIFxcdTAwMjZcXHUwMDI2IGl0LVxcdTAwM2VpdGVyLmJpX2J2ZWNfZG9uZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRpZiAoIWJ5dGVzIHx8IChpdC1cXHUwMDNlaXRlci5iaV9zaXplIFxcdTAwMjZcXHUwMDI2IGl0LVxcdTAwM2VpdGVyLmJpX29mZnNldCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgICAgcGFnZSA9PSBiaW9faXRlcl9wYWdlKGl0LVxcdTAwM2ViaW8sIGl0LVxcdTAwM2VpdGVyKSkpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXFxuIFxcbkBAIC04MTcsNyArODE3LDcgQEAgc3RhdGljIGJvb2wgY2VwaF9tc2dfZGF0YV9idmVjc19hZHZhbmNlKHN0cnVjdCBjZXBoX21zZ19kYXRhX2N1cnNvciAqY3Vyc29yLFxcbiBcXHRpZiAoIWN1cnNvci1cXHUwMDNlcmVzaWQpXFxuIFxcdFxcdHJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi9cXG4gXFxuLVxcdGlmICghYnl0ZXMgfHwgKGN1cnNvci1cXHUwMDNlYnZlY19pdGVyLmJpX2J2ZWNfZG9uZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRpZiAoIWJ5dGVzIHx8IChjdXJzb3ItXFx1MDAzZWJ2ZWNfaXRlci5iaV9vZmZzZXQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgICAgIHBhZ2UgPT0gYnZlY19pdGVyX3BhZ2UoYnZlY3MsIGN1cnNvci1cXHUwMDNlYnZlY19pdGVyKSkpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMzoyNTo0Mi4xNjk4NTE2NTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4MDc0NjA5OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmFtZSBvZiB0aGUgYGJpX2J2ZWNfZG9uZWAgbWVtYmVyIHRvIGBiaV9vZmZzZXRgIGluIGBzdHJ1Y3QgYnZlY19pdGVyYCBhY3Jvc3MgdGhlIGtlcm5lbC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjc2MDQ1M2E4Y2Q0NjcwYzZiM2I5NzY0MzNjMjg0MTJjNmI4NjQ0MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTM6MjU6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdFxuaW5kZXggMTExMjZlZDZmNDBmNy4uNDlkYTIxNDdiN2Q4NiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcbkBAIC0xNiwxNiArMTYsMTYgQEAgYnZfbGVuIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgY29tcGxldGVkIGluIHRoYXQgYmlvdmVjLlxuIEluIHRoZSBuZXcgc2NoZW1lIG9mIHRoaW5ncywgZXZlcnl0aGluZyB0aGF0IG11c3QgYmUgbXV0YXRlZCBpbiBvcmRlciB0b1xuIHBhcnRpYWxseSBjb21wbGV0ZSBhIGJpbyBpcyBzZWdyZWdhdGVkIGludG8gc3RydWN0IGJ2ZWNfaXRlcjogYmlfc2VjdG9yLFxuIGJpX3NpemUgYW5kIGJpX2lkeCBoYXZlIGJlZW4gbW92ZWQgdGhlcmU7IGFuZCBpbnN0ZWFkIG9mIG1vZGlmeWluZyBidl9vZmZzZXRcbi1hbmQgYnZfbGVuLCBzdHJ1Y3QgYnZlY19pdGVyIGhhcyBiaV9idmVjX2RvbmUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZlxuK2FuZCBidl9sZW4sIHN0cnVjdCBidmVjX2l0ZXIgaGFzIGJpX29mZnNldCwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mXG4gYnl0ZXMgY29tcGxldGVkIGluIHRoZSBjdXJyZW50IGJ2ZWMuXG4gXG4gVGhlcmUgYXJlIGEgYnVuY2ggb2YgbmV3IGhlbHBlciBtYWNyb3MgZm9yIGhpZGluZyB0aGUgZ29yeSBkZXRhaWxzIC0gaW5cbiBwYXJ0aWN1bGFyLCBwcmVzZW50aW5nIHRoZSBpbGx1c2lvbiBvZiBwYXJ0aWFsbHkgY29tcGxldGVkIGJpb3ZlY3Mgc28gdGhhdFxuLW5vcm1hbCBjb2RlIGRvZXNuJ3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfYnZlY19kb25lLlxuK25vcm1hbCBjb2RlIGRvZXNuJ3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfb2Zmc2V0LlxuIFxuICAqIERyaXZlciBjb2RlIHNob3VsZCBubyBsb25nZXIgcmVmZXIgdG8gYmlvdmVjcyBkaXJlY3RseTsgd2Ugbm93IGhhdmVcbiAgICBiaW9faW92ZWMoKSBhbmQgYmlvX2l0ZXJfaW92ZWMoKSBtYWNyb3MgdGhhdCByZXR1cm4gbGl0ZXJhbCBzdHJ1Y3QgYmlvdmVjcyxcbi0gICBjb25zdHJ1Y3RlZCBmcm9tIHRoZSByYXcgYmlvdmVjcyBidXQgdGFraW5nIGludG8gYWNjb3VudCBiaV9idmVjX2RvbmUgYW5kXG4rICAgY29uc3RydWN0ZWQgZnJvbSB0aGUgcmF3IGJpb3ZlY3MgYnV0IHRha2luZyBpbnRvIGFjY291bnQgYmlfb2Zmc2V0IGFuZFxuICAgIGJpX3NpemUuXG4gXG4gICAgYmlvX2Zvcl9lYWNoX3NlZ21lbnQoKSBoYXMgYmVlbiB1cGRhdGVkIHRvIHRha2UgYSBidmVjX2l0ZXIgYXJndW1lbnRcbkBAIC0xMDEsNyArMTAxLDcgQEAgT3RoZXIgaW1wbGljYXRpb25zOlxuICAgIEkuZS4gaW5zdGVhZCBvZiB1c2luZyBiaW9faW92ZWNfaWR4KCkgKG9yIGJpby1cdTAwM2ViaV9pb3ZlY1tiaW8tXHUwMDNlYmlfaWR4XSksIHlvdVxuICAgIG5vdyB1c2UgYmlvX2l0ZXJfaW92ZWMoKSwgd2hpY2ggdGFrZXMgYSBidmVjX2l0ZXIgYW5kIHJldHVybnMgYVxuICAgIGxpdGVyYWwgc3RydWN0IGJpb192ZWMgLSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5IGZyb20gdGhlIHJhdyBiaW92ZWMgYnV0XG4tICAgdGFraW5nIGludG8gYWNjb3VudCBiaV9idmVjX2RvbmUgKGFuZCBiaV9zaXplKS5cbisgICB0YWtpbmcgaW50byBhY2NvdW50IGJpX29mZnNldCAoYW5kIGJpX3NpemUpLlxuIFxuICAqIGJpX3ZjbnQgY2FuJ3QgYmUgdHJ1c3RlZCBvciByZWxpZWQgdXBvbiBieSBkcml2ZXIgY29kZSAtIGkuZS4gYW55dGhpbmcgdGhhdFxuICAgIGRvZXNuJ3QgYWN0dWFsbHkgb3duIHRoZSBiaW8uIFRoZSByZWFzb24gaXMgdHdvZm9sZDogZmlyc3RseSwgaXQncyBub3RcbmRpZmYgLS1naXQgYS9ibG9jay9iaW8uYyBiL2Jsb2NrL2Jpby5jXG5pbmRleCA1MDAzODlmMzMyZDk5Li40MDc0YTA0OTZiOTNmIDEwMDY0NFxuLS0tIGEvYmxvY2svYmlvLmNcbisrKyBiL2Jsb2NrL2Jpby5jXG5AQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgYmlvX2luaXQoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgYmlvX3ZlYyAqdGFibGUsXG4gXHRiaW8tXHUwMDNlYmlfaXRlci5iaV9zZWN0b3IgPSAwO1xuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSA9IDA7XG4gXHRiaW8tXHUwMDNlYmlfaXRlci5iaV9pZHggPSAwO1xuLVx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lID0gMDtcbitcdGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldCA9IDA7XG4gXHRiaW8tXHUwMDNlYmlfZW5kX2lvID0gTlVMTDtcbiBcdGJpby1cdTAwM2ViaV9wcml2YXRlID0gTlVMTDtcbiAjaWZkZWYgQ09ORklHX0JMS19DR1JPVVBcbkBAIC0xMTg4LDcgKzExODgsNyBAQCB2b2lkIGJpb19pb3ZfYnZlY19zZXQoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4gXG4gXHRiaW8tXHUwMDNlYmlfaW9fdmVjID0gKHN0cnVjdCBiaW9fdmVjICopaXRlci1cdTAwM2VidmVjO1xuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfaWR4ID0gMDtcbi1cdGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IGl0ZXItXHUwMDNlaW92X29mZnNldDtcbitcdGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldCA9IGl0ZXItXHUwMDNlaW92X29mZnNldDtcbiBcdGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUgPSBpb3ZfaXRlcl9jb3VudChpdGVyKTtcbiBcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DTE9ORUQpO1xuIH1cbmRpZmYgLS1naXQgYS9ibG9jay9ibGstbWVyZ2UuYyBiL2Jsb2NrL2Jsay1tZXJnZS5jXG5pbmRleCBhYjExNjFjYTY5ZjFlLi4yNThhNzI2MDcxZDEyIDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLW1lcmdlLmNcbisrKyBiL2Jsb2NrL2Jsay1tZXJnZS5jXG5AQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpXG4gXG4gXHRiaW9fYWR2YW5jZV9pdGVyKGJpbywgXHUwMDI2aXRlciwgaXRlci5iaV9zaXplKTtcbiBcbi1cdGlmICghaXRlci5iaV9idmVjX2RvbmUpXG4rXHRpZiAoIWl0ZXIuYmlfb2Zmc2V0KVxuIFx0XHRpZHggPSBpdGVyLmJpX2lkeCAtIDE7XG4gXHRlbHNlXHQvKiBpbiB0aGUgbWlkZGxlIG9mIGJ2ZWMgKi9cbiBcdFx0aWR4ID0gaXRlci5iaV9pZHg7XG5AQCAtNDEsMTEgKzQxLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiaW9fZ2V0X2xhc3RfYnZlYyhzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBiaW9fdmVjICpidilcbiBcdCpidiA9IGJpby1cdTAwM2ViaV9pb192ZWNbaWR4XTtcbiBcbiBcdC8qXG4tXHQgKiBpdGVyLmJpX2J2ZWNfZG9uZSByZWNvcmRzIGFjdHVhbCBsZW5ndGggb2YgdGhlIGxhc3QgYnZlY1xuK1x0ICogaXRlci5iaV9vZmZzZXQgcmVjb3JkcyBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBsYXN0IGJ2ZWNcbiBcdCAqIGlmIHRoaXMgYmlvIGVuZHMgaW4gdGhlIG1pZGRsZSBvZiBvbmUgaW8gdmVjdG9yXG4gXHQgKi9cbi1cdGlmIChpdGVyLmJpX2J2ZWNfZG9uZSlcbi1cdFx0YnYtXHUwMDNlYnZfbGVuID0gaXRlci5iaV9idmVjX2RvbmU7XG4rXHRpZiAoaXRlci5iaV9vZmZzZXQpXG4rXHRcdGJ2LVx1MDAzZWJ2X2xlbiA9IGl0ZXIuYmlfb2Zmc2V0O1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgYmlvX3dpbGxfZ2FwKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1tcS1kbWEuYyBiL2Jsb2NrL2Jsay1tcS1kbWEuY1xuaW5kZXggYmZkYjllZDcwNzQxMS4uODhmZDljYmM5NTFmNCAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tcS1kbWEuY1xuKysrIGIvYmxvY2svYmxrLW1xLWRtYS5jXG5AQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgYm9vbCBibGtfbWFwX2l0ZXJfbmV4dChzdHJ1Y3QgcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmxrX21hcF9pdGVyICppdGVyLFxuIFx0ICogb25lIGNvdWxkIGJlIG1lcmdlZCBpbnRvIGl0LiAgVGhpcyB0eXBpY2FsbHkgaGFwcGVucyB3aGVuIG1vdmluZyB0b1xuIFx0ICogdGhlIG5leHQgYmlvLCBidXQgc29tZSBjYWxsZXJzIGFsc28gZG9uJ3QgcGFjayBidmVjcyB0aWdodC5cbiBcdCAqL1xuLVx0d2hpbGUgKCFpdGVyLVx1MDAzZWl0ZXIuYmlfc2l6ZSB8fCAhaXRlci1cdTAwM2VpdGVyLmJpX2J2ZWNfZG9uZSkge1xuK1x0d2hpbGUgKCFpdGVyLVx1MDAzZWl0ZXIuYmlfc2l6ZSB8fCAhaXRlci1cdTAwM2VpdGVyLmJpX29mZnNldCkge1xuIFx0XHRzdHJ1Y3QgYmlvX3ZlYyBuZXh0O1xuIFxuIFx0XHRpZiAoIV9fYmxrX21hcF9pdGVyX25leHQoaXRlcikpXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLmggYi9ibG9jay9ibGsuaFxuaW5kZXggZWFhYzA1ODE1Y2IwMy4uNTBhYmZkOTMyODg2MSAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay5oXG4rKysgYi9ibG9jay9ibGsuaFxuQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYmlvX21heV9uZWVkX3NwbGl0KHN0cnVjdCBiaW8gKmJpbyxcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG4gXHRidiA9IF9fYnZlY19pdGVyX2J2ZWMoYmlvLVx1MDAzZWJpX2lvX3ZlYywgYmlvLVx1MDAzZWJpX2l0ZXIpO1xuLVx0aWYgKGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUgXHUwMDNlIGJ2LVx1MDAzZWJ2X2xlbiAtIGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSlcbitcdGlmIChiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplIFx1MDAzZSBidi1cdTAwM2Vidl9sZW4gLSBiaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQpXG4gXHRcdHJldHVybiB0cnVlO1xuIFx0aWYgKChidi1cdTAwM2Vidl9vZmZzZXQgfCBidi1cdTAwM2Vidl9sZW4pIFx1MDAyNiBsaW0tXHUwMDNlZG1hX2FsaWdubWVudClcbiBcdFx0cmV0dXJuIHRydWU7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuaW5kZXggMjZkNzEzMGMzZjU1OS4uODYzOWZhMzRiODQ3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuQEAgLTM3OSw3ICszNzksNyBAQCBzdGF0aWMgaW50IGxvX3J3X2FpbyhzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgbG9vcF9jbWQgKmNtZCxcbiBcdFx0aW92X2l0ZXJfYnZlYyhcdTAwMjZpdGVyLCBydyxcbiBcdFx0XHRfX2J2ZWNfaXRlcl9idmVjKHJxLVx1MDAzZWJpby1cdTAwM2ViaV9pb192ZWMsIHJxLVx1MDAzZWJpby1cdTAwM2ViaV9pdGVyKSxcbiBcdFx0XHRucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTtcbi1cdFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuK1x0XHRpdGVyLmlvdl9vZmZzZXQgPSBycS1cdTAwM2ViaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XG4gXHR9XG4gXHRhdG9taWNfc2V0KFx1MDAyNmNtZC1cdTAwM2VyZWYsIDIpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svemxvb3AuYyBiL2RyaXZlcnMvYmxvY2svemxvb3AuY1xuaW5kZXggNThlYzgxNjFiN2UyZi4uNDMyM2FjMTA4Y2FlOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svemxvb3AuY1xuKysrIGIvZHJpdmVycy9ibG9jay96bG9vcC5jXG5AQCAtNTU1LDcgKzU1NSw3IEBAIHN0YXRpYyBpbnQgemxvb3BfZG9fcncoc3RydWN0IHpsb29wX2NtZCAqY21kKVxuIFx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIHJ3LFxuIFx0XHRcdF9fYnZlY19pdGVyX2J2ZWMocnEtXHUwMDNlYmlvLVx1MDAzZWJpX2lvX3ZlYywgcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIpLFxuIFx0XHRcdFx0XHRucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTtcbi1cdFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuK1x0XHRpdGVyLmlvdl9vZmZzZXQgPSBycS1cdTAwM2ViaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XG4gXHR9XG4gXG4gXHRjbWQtXHUwMDNlaW9jYi5raV9wb3MgPSAoY21kLVx1MDAzZXNlY3RvciAtIHpvbmUtXHUwMDNlc3RhcnQpIFx1MDAzY1x1MDAzYyBTRUNUT1JfU0hJRlQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuYyBiL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmNcbmluZGV4IDYxNTViMDExN2M5ZDYuLjA0ZjNmYzhhZWI2ZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXG4rKysgYi9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXG5AQCAtMTYsMTIgKzE2LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkbV9idmVjX2l0ZXJfcmV3aW5kKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidixcbiBcdGludCBpZHg7XG4gXG4gXHRpdGVyLVx1MDAzZWJpX3NpemUgKz0gYnl0ZXM7XG4tXHRpZiAoYnl0ZXMgXHUwMDNjPSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSkge1xuLVx0XHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSAtPSBieXRlcztcbitcdGlmIChieXRlcyBcdTAwM2M9IGl0ZXItXHUwMDNlYmlfb2Zmc2V0KSB7XG4rXHRcdGl0ZXItXHUwMDNlYmlfb2Zmc2V0IC09IGJ5dGVzO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdH1cbiBcbi1cdGJ5dGVzIC09IGl0ZXItXHUwMDNlYmlfYnZlY19kb25lO1xuK1x0Ynl0ZXMgLT0gaXRlci1cdTAwM2ViaV9vZmZzZXQ7XG4gXHRpZHggPSBpdGVyLVx1MDAzZWJpX2lkeCAtIDE7XG4gXG4gXHR3aGlsZSAoaWR4IFx1MDAzZT0gMCBcdTAwMjZcdTAwMjYgYnl0ZXMgXHUwMDI2XHUwMDI2IGJ5dGVzIFx1MDAzZSBidltpZHhdLmJ2X2xlbikge1xuQEAgLTMyLDEzICszMiwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZG1fYnZlY19pdGVyX3Jld2luZChjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXG4gXHRpZiAoV0FSTl9PTkNFKGlkeCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgYnl0ZXMsXG4gXHRcdCAgICAgIFwiQXR0ZW1wdGVkIHRvIHJld2luZCBpdGVyIGJleW9uZCBidmVjJ3MgYm91bmRhcmllc1xcblwiKSkge1xuIFx0XHRpdGVyLVx1MDAzZWJpX3NpemUgLT0gYnl0ZXM7XG4tXHRcdGl0ZXItXHUwMDNlYmlfYnZlY19kb25lID0gMDtcbitcdFx0aXRlci1cdTAwM2ViaV9vZmZzZXQgPSAwO1xuIFx0XHRpdGVyLVx1MDAzZWJpX2lkeCA9IDA7XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbiBcdGl0ZXItXHUwMDNlYmlfaWR4ID0gaWR4O1xuLVx0aXRlci1cdTAwM2ViaV9idmVjX2RvbmUgPSBidltpZHhdLmJ2X2xlbiAtIGJ5dGVzO1xuK1x0aXRlci1cdTAwM2ViaV9vZmZzZXQgPSBidltpZHhdLmJ2X2xlbiAtIGJ5dGVzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuYyBiL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xuaW5kZXggN2U5ODE4NzAxNDQ1MS4uOGY4ODE2ZTFjNTM5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xuKysrIGIvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jXG5AQCAtMTQsNyArMTQsNyBAQCBpbnQgc2VnbWVudF9jb3B5X3RvX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsXG4gXG4gXHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIElURVJfREVTVCwgXHUwMDI2YmlvLVx1MDAzZWJpX2lvX3ZlY1tiaW8tXHUwMDNlYmlfaXRlci5iaV9pZHhdLFxuIFx0XHRcdGJpb19zZWdtZW50cyhiaW8pLCBiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplKTtcbi1cdGl0ZXIuaW92X29mZnNldCA9IGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZTtcbitcdGl0ZXIuaW92X29mZnNldCA9IGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldDtcbiBcdGlmIChiaW9fb2ZmKVxuIFx0XHRpb3ZfaXRlcl9hZHZhbmNlKFx1MDAyNml0ZXIsIGJpb19vZmYpO1xuIFxuQEAgLTM1LDcgKzM1LDcgQEAgaW50IHNlZ21lbnRfY29weV9mcm9tX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsXG4gXG4gXHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIElURVJfU09VUkNFLCBcdTAwMjZiaW8tXHUwMDNlYmlfaW9fdmVjW2Jpby1cdTAwM2ViaV9pdGVyLmJpX2lkeF0sXG4gXHRcdFx0YmlvX3NlZ21lbnRzKGJpbyksIGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUpO1xuLVx0aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuK1x0aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xuIFx0aWYgKGJpb19vZmYpXG4gXHRcdGlvdl9pdGVyX2FkdmFuY2UoXHUwMDI2aXRlciwgYmlvX29mZik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vYnR0LmMgYi9kcml2ZXJzL252ZGltbS9idHQuY1xuaW5kZXggN2UxMTEyOTYwZDdmOC4uNWQ5MTBhNjQ1MDNkMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZkaW1tL2J0dC5jXG4rKysgYi9kcml2ZXJzL252ZGltbS9idHQuY1xuQEAgLTExNTUsNyArMTE1NSw3IEBAIHN0YXRpYyBpbnQgYnR0X3J3X2ludGVncml0eShzdHJ1Y3QgYnR0ICpidHQsIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpcCxcbiBcdFx0YnYgPSBidmVjX2l0ZXJfYnZlYyhiaXAtXHUwMDNlYmlwX3ZlYywgYmlwLVx1MDAzZWJpcF9pdGVyKTtcbiBcdFx0LypcbiBcdFx0ICogVGhlICdidicgb2J0YWluZWQgZnJvbSBidmVjX2l0ZXJfYnZlYyBoYXMgaXRzIC5idl9sZW4gYW5kXG4tXHRcdCAqIC5idl9vZmZzZXQgYWxyZWFkeSBhZGp1c3RlZCBmb3IgaXRlci1cdTAwM2ViaV9idmVjX2RvbmUsIGFuZCB3ZVxuK1x0XHQgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItXHUwMDNlYmlfb2Zmc2V0LCBhbmQgd2VcbiBcdFx0ICogY2FuIHVzZSB0aG9zZSBkaXJlY3RseVxuIFx0XHQgKi9cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG5pbmRleCBiYTVjN2IzZTJhN2M2Li5jZTAzYTBlYTRkZWQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG5AQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIG52bWVfdGNwX2luaXRfaXRlcihzdHJ1Y3QgbnZtZV90Y3BfcmVxdWVzdCAqcmVxLFxuIFx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNnJlcS1cdTAwM2VpdGVyLCBkaXIsXG4gXHRcdFx0X19idmVjX2l0ZXJfYnZlYyhiaW8tXHUwMDNlYmlfaW9fdmVjLCBiaW8tXHUwMDNlYmlfaXRlciksIG5yX2J2ZWMsXG4gXHRcdFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XG4tXHRcdHJlcS1cdTAwM2VpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XG4rXHRcdHJlcS1cdTAwM2VpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL21pc2MuaCBiL2ZzL2J0cmZzL21pc2MuaFxuaW5kZXggNjk0YmU2ZDA1NjJhNC4uODAyMDYwOTQzMTgwMSAxMDA2NDRcbi0tLSBhL2ZzL2J0cmZzL21pc2MuaFxuKysrIGIvZnMvYnRyZnMvbWlzYy5oXG5AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBidmVjX2l0ZXIgaW5pdF9idmVjX2l0ZXJfZm9yX2JpbyhzdHJ1Y3QgYmlvICpiaW8pXG4gXHRcdC5iaV9zZWN0b3IgPSAwLFxuIFx0XHQuYmlfc2l6ZSA9IGJpb19zaXplLFxuIFx0XHQuYmlfaWR4ID0gMCxcbi1cdFx0LmJpX2J2ZWNfZG9uZSA9IDAsXG4rXHRcdC5iaV9vZmZzZXQgPSAwLFxuIFx0fTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idmVjLmggYi9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxuaW5kZXggOTI4MzdlMjc0M2YxOS4uZmM1NjZlZTFjMWZmMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnZlYy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxuQEAgLTExMCw3ICsxMTAsNyBAQCBzdHJ1Y3QgYnZlY19pdGVyIHtcbiBcdC8qXG4gXHQgKiBDdXJyZW50IG9mZnNldCBpbiB0aGUgYnZlYyBlbnRyeSBwb2ludGVkIHRvIGJ5IGBiaV9pZHhgLlxuIFx0ICovXG4tXHR1bnNpZ25lZCBpbnRcdFx0YmlfYnZlY19kb25lO1xuK1x0dW5zaWduZWQgaW50XHRcdGJpX29mZnNldDtcbiB9IF9fcGFja2VkIF9fYWxpZ25lZCg0KTtcbiBcbiBzdHJ1Y3QgYnZlY19pdGVyX2FsbCB7XG5AQCAtMTM1LDE0ICsxMzUsMTQgQEAgbXBfYnZlY19pdGVyX3BhZ2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnRcbiBtcF9idmVjX2l0ZXJfbGVuKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidmVjcywgY29uc3Qgc3RydWN0IGJ2ZWNfaXRlciBpdGVyKVxuIHtcbi1cdHJldHVybiBtaW4oX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfbGVuIC0gaXRlci5iaV9idmVjX2RvbmUsXG4rXHRyZXR1cm4gbWluKF9fYnZlY19pdGVyX2J2ZWMoYnZlY3MsIGl0ZXIpLVx1MDAzZWJ2X2xlbiAtIGl0ZXIuYmlfb2Zmc2V0LFxuIFx0XHRcdGl0ZXIuYmlfc2l6ZSk7XG4gfVxuIFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50XG4gbXBfYnZlY19pdGVyX29mZnNldChjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnZlY3MsIGNvbnN0IHN0cnVjdCBidmVjX2l0ZXIgaXRlcilcbiB7XG4tXHRyZXR1cm4gX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfb2Zmc2V0ICsgaXRlci5iaV9idmVjX2RvbmU7XG4rXHRyZXR1cm4gX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfb2Zmc2V0ICsgaXRlci5iaV9vZmZzZXQ7XG4gfVxuIFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50XG5AQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBidmVjX2l0ZXJfYWR2YW5jZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXG4gXHR9XG4gXG4gXHRpdGVyLVx1MDAzZWJpX3NpemUgLT0gYnl0ZXM7XG4tXHRieXRlcyArPSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZTtcbitcdGJ5dGVzICs9IGl0ZXItXHUwMDNlYmlfb2Zmc2V0O1xuIFxuIFx0d2hpbGUgKGJ5dGVzIFx1MDAyNlx1MDAyNiBieXRlcyBcdTAwM2U9IGJ2W2lkeF0uYnZfbGVuKSB7XG4gXHRcdGJ5dGVzIC09IGJ2W2lkeF0uYnZfbGVuO1xuQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0fVxuIFxuIFx0aXRlci1cdTAwM2ViaV9pZHggPSBpZHg7XG4tXHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IGJ5dGVzO1xuK1x0aXRlci1cdTAwM2ViaV9vZmZzZXQgPSBieXRlcztcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbkBAIC0yMjMsMTMgKzIyMywxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBidmVjX2l0ZXJfYWR2YW5jZV9zaW5nbGUoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0XHRcdFx0c3RydWN0IGJ2ZWNfaXRlciAqaXRlciwgdW5zaWduZWQgaW50IGJ5dGVzKVxuIHtcbi1cdHVuc2lnbmVkIGludCBkb25lID0gaXRlci1cdTAwM2ViaV9idmVjX2RvbmUgKyBieXRlcztcbitcdHVuc2lnbmVkIGludCBkb25lID0gaXRlci1cdTAwM2ViaV9vZmZzZXQgKyBieXRlcztcbiBcbiBcdGlmIChkb25lID09IGJ2W2l0ZXItXHUwMDNlYmlfaWR4XS5idl9sZW4pIHtcbiBcdFx0ZG9uZSA9IDA7XG4gXHRcdGl0ZXItXHUwMDNlYmlfaWR4Kys7XG4gXHR9XG4tXHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IGRvbmU7XG4rXHRpdGVyLVx1MDAzZWJpX29mZnNldCA9IGRvbmU7XG4gXHRpdGVyLVx1MDAzZWJpX3NpemUgLT0gYnl0ZXM7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL25ldC5jIGIvaW9fdXJpbmcvbmV0LmNcbmluZGV4IGE3NGQxNWY3YjdkMmIuLjQzOWM5OWFkMTg4NDEgMTAwNjQ0XG4tLS0gYS9pb191cmluZy9uZXQuY1xuKysrIGIvaW9fdXJpbmcvbmV0LmNcbkBAIC0xNDcxLDcgKzE0NzEsNyBAQCBzdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTtcbiBcbiBcdGJpLmJpX3NpemUgPSBtaW4oZnJvbS1cdTAwM2Vjb3VudCwgbGVuZ3RoKTtcbi1cdGJpLmJpX2J2ZWNfZG9uZSA9IGZyb20tXHUwMDNlaW92X29mZnNldDtcbitcdGJpLmJpX29mZnNldCA9IGZyb20tXHUwMDNlaW92X29mZnNldDtcbiBcdGJpLmJpX2lkeCA9IDA7XG4gXG4gXHR3aGlsZSAoYmkuYmlfc2l6ZSBcdTAwMjZcdTAwMjYgZnJhZyBcdTAwM2MgTUFYX1NLQl9GUkFHUykge1xuQEAgLTE0OTAsNyArMTQ5MCw3IEBAIHN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRmcm9tLVx1MDAzZWJ2ZWMgKz0gYmkuYmlfaWR4O1xuIFx0ZnJvbS1cdTAwM2Vucl9zZWdzIC09IGJpLmJpX2lkeDtcbiBcdGZyb20tXHUwMDNlY291bnQgLT0gY29waWVkO1xuLVx0ZnJvbS1cdTAwM2Vpb3Zfb2Zmc2V0ID0gYmkuYmlfYnZlY19kb25lO1xuK1x0ZnJvbS1cdTAwM2Vpb3Zfb2Zmc2V0ID0gYmkuYmlfb2Zmc2V0O1xuIFxuIFx0c2tiLVx1MDAzZWRhdGFfbGVuICs9IGNvcGllZDtcbiBcdHNrYi1cdTAwM2VsZW4gKz0gY29waWVkO1xuZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9pdGVyLmNcbmluZGV4IDM0YTUyZTliYTllMWIuLjgxZTVjNWU1MTIxZjcgMTAwNjQ0XG4tLS0gYS9saWIvaW92X2l0ZXIuY1xuKysrIGIvbGliL2lvdl9pdGVyLmNcbkBAIC0xNjM0LDcgKzE2MzQsNyBAQCBzdGF0aWMgc3NpemVfdCBpb3ZfaXRlcl9leHRyYWN0X2J2ZWNfcGFnZXMoc3RydWN0IGlvdl9pdGVyICppLFxuIFx0fVxuIFx0YmkuYmlfaWR4ID0gMDtcbiBcdGJpLmJpX3NpemUgPSBtYXhzaXplO1xuLVx0YmkuYmlfYnZlY19kb25lID0gc2tpcDtcbitcdGJpLmJpX29mZnNldCA9IHNraXA7XG4gXG4gXHRtYXhwYWdlcyA9IHdhbnRfcGFnZXNfYXJyYXkocGFnZXMsIG1heHNpemUsIHNraXAsIG1heHBhZ2VzKTtcbiBcdGlmICghbWF4cGFnZXMpXG5kaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXIuY1xuaW5kZXggMzRiMzA5N2I0YzdiOS4uOWMxYjZjZjhjMzZmZSAxMDA2NDRcbi0tLSBhL25ldC9jZXBoL21lc3Nlbmdlci5jXG4rKysgYi9uZXQvY2VwaC9tZXNzZW5nZXIuY1xuQEAgLTc2Miw3ICs3NjIsNyBAQCBzdGF0aWMgYm9vbCBjZXBoX21zZ19kYXRhX2Jpb19hZHZhbmNlKHN0cnVjdCBjZXBoX21zZ19kYXRhX2N1cnNvciAqY3Vyc29yLFxuIFx0aWYgKCFjdXJzb3ItXHUwMDNlcmVzaWQpXG4gXHRcdHJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi9cbiBcbi1cdGlmICghYnl0ZXMgfHwgKGl0LVx1MDAzZWl0ZXIuYmlfc2l6ZSBcdTAwMjZcdTAwMjYgaXQtXHUwMDNlaXRlci5iaV9idmVjX2RvbmUgXHUwMDI2XHUwMDI2XG4rXHRpZiAoIWJ5dGVzIHx8IChpdC1cdTAwM2VpdGVyLmJpX3NpemUgXHUwMDI2XHUwMDI2IGl0LVx1MDAzZWl0ZXIuYmlfb2Zmc2V0IFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICAgcGFnZSA9PSBiaW9faXRlcl9wYWdlKGl0LVx1MDAzZWJpbywgaXQtXHUwMDNlaXRlcikpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXG4gXG5AQCAtODE3LDcgKzgxNyw3IEBAIHN0YXRpYyBib29sIGNlcGhfbXNnX2RhdGFfYnZlY3NfYWR2YW5jZShzdHJ1Y3QgY2VwaF9tc2dfZGF0YV9jdXJzb3IgKmN1cnNvcixcbiBcdGlmICghY3Vyc29yLVx1MDAzZXJlc2lkKVxuIFx0XHRyZXR1cm4gZmFsc2U7ICAgLyogbm8gbW9yZSBkYXRhICovXG4gXG4tXHRpZiAoIWJ5dGVzIHx8IChjdXJzb3ItXHUwMDNlYnZlY19pdGVyLmJpX2J2ZWNfZG9uZSBcdTAwMjZcdTAwMjZcbitcdGlmICghYnl0ZXMgfHwgKGN1cnNvci1cdTAwM2VidmVjX2l0ZXIuYmlfb2Zmc2V0IFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICAgcGFnZSA9PSBidmVjX2l0ZXJfcGFnZShidmVjcywgY3Vyc29yLVx1MDAzZWJ2ZWNfaXRlcikpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMzoyNTo0Mi4xNjk4NTI4NDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDc0NTg4NjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFB1cmUgUmVuYW1lOiBgYmlfYnZlY19kb25lYCB0byBgYmlfb2Zmc2V0YCoqXG5cbk9rYXksIGhlcmUncyB0aGUgZGVhbC4gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0J3MgYWxsIGFib3V0IHJlbmFtaW5nIGEgbWVtYmVyIGluIHRoZSBgc3RydWN0IGJ2ZWNfaXRlcmAuIFNwZWNpZmljYWxseSwgdGhleSdyZSBzd2FwcGluZyBvdXQgYGJpX2J2ZWNfZG9uZWAgZm9yIGBiaV9vZmZzZXRgLiBOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJwdXJlbHkgbWVjaGFuaWNhbCwgbm8gZnVuY3Rpb25hbCBjaGFuZ2UsIHJpZ2h0P1wiLiBMZXQncyB2ZXJpZnkgdGhhdC5cblxuSSdtIHNjYW5uaW5nIHRoZSBkaWZmLiBJIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBiaW8tXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmVgIGJlY29tZXMgYGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldGAsIHRoZSBzYW1lIGZvciBgaXRlci5iaV9idmVjX2RvbmVgLCBgcmVxLVx1MDAzZWl0ZXIuaW92X29mZnNldCA9IGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZWAgYW5kIGBiaS5iaV9idmVjX2RvbmVgLiBBbmQsIG9mIGNvdXJzZSwgdGhlIHN0cnVjdCBkZWZpbml0aW9uIGl0c2VsZjogYGJpX2J2ZWNfZG9uZWAgaXMgbm93IGBiaV9vZmZzZXRgLiBUaGlzIGNvbmZpcm1zIG15IGluaXRpYWwgc3VzcGljaW9uIC0gaXQncyBqdXN0IGEgcmVuYW1lLiBObyBuZXcgZnVuY3Rpb25hbGl0eS5cblxuYGBgY1xuQEAgLTExMCw3ICsxMTAsNyBAQCBzdHJ1Y3QgYnZlY19pdGVyIHtcbiBcdC8qXG4gXHQgKiBDdXJyZW50IG9mZnNldCBpbiB0aGUgYnZlYyBlbnRyeSBwb2ludGVkIHRvIGJ5IGBiaV9pZHhgLlxuIFx0ICovXG4tXHR1bnNpZ25lZCBpbnRcdFx0YmlfYnZlY19kb25lO1xuK1x0dW5zaWduZWQgaW50XHRcdGJpX29mZnNldDtcbiB9IF9fcGFja2VkIF9fYWxpZ25lZCg0KTtcbiBgYGBcblxuR2l2ZW4gdGhpcyBpcyBwdXJlbHkgYSBjaGFuZ2Ugb2YgbmFtZSBhbmQgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uYWxpdHkgaXRzZWxmLCB0aGUgcGF0Y2ggaXMgYSBuby1vcCwgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3Nlcy5cblxuQnV0IHdhaXQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGFyZSBubyBoaWRkZW4gaW50ZXJhY3Rpb25zLiBJJ2xsIHF1aWNrbHkgbG9vayB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBkaWZmIGZvciBhbnkgcmVkIGZsYWdzLiBPa2F5LCBJIHNlZSB0aGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgYmVlbiB0b3VjaGVkOiBgRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdGAsIGBibG9jay9iaW8uY2AsIGBibG9jay9ibGstbWVyZ2UuY2AsIGBibG9jay9ibGstbXEtZG1hLmNgLCBgYmxvY2svYmxrLmhgLCBgZHJpdmVycy9ibG9jay9sb29wLmNgLCBgZHJpdmVycy9ibG9jay96bG9vcC5jYCwgYGRyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmNgLCBgZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jYCwgYGRyaXZlcnMvbnZkaW1tL2J0dC5jYCwgYGRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jYCwgYGZzL2J0cmZzL21pc2MuaGAsIGBpbmNsdWRlL2xpbnV4L2J2ZWMuaGAsIGBpb191cmluZy9uZXQuY2AsIGBsaWIvaW92X2l0ZXIuY2AsIGBuZXQvY2VwaC9tZXNzZW5nZXIuY2AuXG5cblllcCwgaXQncyBqdXN0IHRoZSByZW5hbWUgcHJvcGFnYXRlZCB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZSwgYW5kIHNvbWUgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIChhbmQgYSBjb21tZW50KS4gTm90aGluZyBlbHNlLiBUaGlzIGlzIGEgY2xlYW4gcmVuYW1lLCBhIHNhZmUgcmVuYW1lLCBhbmQgZG9lc24ndCBjaGFuZ2Ugd2hhdCB0aGUgc29mdHdhcmUgKmRvZXMqLlxuXG5UaGVyZWZvcmUsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBhIG5vbi1mdW5jdGlvbmFsIGNoYW5nZSwgYW5kIG5vdCB3b3J0aCBteSBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MTksIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMzoyNTo1MC4yNDQ0NDMyNDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcmVuYW1lIG9mIHRoZSBgYmlfYnZlY19kb25lYCBtZW1iZXIgdG8gYGJpX29mZnNldGAgaW4gYHN0cnVjdCBidmVjX2l0ZXJgIGFjcm9zcyB0aGUga2VybmVsLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmFtZSBvZiB0aGUgYGJpX2J2ZWNfZG9uZWAgbWVtYmVyIHRvIGBiaV9vZmZzZXRgIGluIGBzdHJ1Y3QgYnZlY19pdGVyYCBhY3Jvc3MgdGhlIGtlcm5lbC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowk9d8z[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 13:07:34 +0000 UTC FinishedAt: 2026-08-06 13:25:51 +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+CgkJCTx0ZD4yMDI2LzA4LzA2IDEzOjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcmVuYW1lIG9mIHRoZSBgYmlfYnZlY19kb25lYCBtZW1iZXIgdG8gYGJpX29mZnNldGAgaW4gYHN0cnVjdCBidmVjX2l0ZXJgIGFjcm9zcyB0aGUga2VybmVsLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDEzOjI1PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgMjc2MDQ1M2E4Y2Q0NjcwYzZiM2I5NzY0MzNjMjg0MTJjNmI4NjQ0MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTM6MjU6NDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdCBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcbmluZGV4IDExMTI2ZWQ2ZjQwZjcuLjQ5ZGEyMTQ3YjdkODYgMTAwNjQ0XG4tLS0gYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0XG4mIzQzOyYjNDM7JiM0MzsgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0XG5AQCAtMTYsMTYgJiM0MzsxNiwxNiBAQCBidl9sZW4gYnkgdGhlIG51bWJlciBvZiBieXRlcyBjb21wbGV0ZWQgaW4gdGhhdCBiaW92ZWMuXG4gSW4gdGhlIG5ldyBzY2hlbWUgb2YgdGhpbmdzLCBldmVyeXRoaW5nIHRoYXQgbXVzdCBiZSBtdXRhdGVkIGluIG9yZGVyIHRvXG4gcGFydGlhbGx5IGNvbXBsZXRlIGEgYmlvIGlzIHNlZ3JlZ2F0ZWQgaW50byBzdHJ1Y3QgYnZlY19pdGVyOiBiaV9zZWN0b3IsXG4gYmlfc2l6ZSBhbmQgYmlfaWR4IGhhdmUgYmVlbiBtb3ZlZCB0aGVyZTsgYW5kIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGJ2X29mZnNldFxuLWFuZCBidl9sZW4sIHN0cnVjdCBidmVjX2l0ZXIgaGFzIGJpX2J2ZWNfZG9uZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mXG4mIzQzO2FuZCBidl9sZW4sIHN0cnVjdCBidmVjX2l0ZXIgaGFzIGJpX29mZnNldCwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mXG4gYnl0ZXMgY29tcGxldGVkIGluIHRoZSBjdXJyZW50IGJ2ZWMuXG4gXG4gVGhlcmUgYXJlIGEgYnVuY2ggb2YgbmV3IGhlbHBlciBtYWNyb3MgZm9yIGhpZGluZyB0aGUgZ29yeSBkZXRhaWxzIC0gaW5cbiBwYXJ0aWN1bGFyLCBwcmVzZW50aW5nIHRoZSBpbGx1c2lvbiBvZiBwYXJ0aWFsbHkgY29tcGxldGVkIGJpb3ZlY3Mgc28gdGhhdFxuLW5vcm1hbCBjb2RlIGRvZXNuJiMzOTt0IGhhdmUgdG8gZGVhbCB3aXRoIGJpX2J2ZWNfZG9uZS5cbiYjNDM7bm9ybWFsIGNvZGUgZG9lc24mIzM5O3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfb2Zmc2V0LlxuIFxuICAqIERyaXZlciBjb2RlIHNob3VsZCBubyBsb25nZXIgcmVmZXIgdG8gYmlvdmVjcyBkaXJlY3RseTsgd2Ugbm93IGhhdmVcbiAgICBiaW9faW92ZWMoKSBhbmQgYmlvX2l0ZXJfaW92ZWMoKSBtYWNyb3MgdGhhdCByZXR1cm4gbGl0ZXJhbCBzdHJ1Y3QgYmlvdmVjcyxcbi0gICBjb25zdHJ1Y3RlZCBmcm9tIHRoZSByYXcgYmlvdmVjcyBidXQgdGFraW5nIGludG8gYWNjb3VudCBiaV9idmVjX2RvbmUgYW5kXG4mIzQzOyAgIGNvbnN0cnVjdGVkIGZyb20gdGhlIHJhdyBiaW92ZWNzIGJ1dCB0YWtpbmcgaW50byBhY2NvdW50IGJpX29mZnNldCBhbmRcbiAgICBiaV9zaXplLlxuIFxuICAgIGJpb19mb3JfZWFjaF9zZWdtZW50KCkgaGFzIGJlZW4gdXBkYXRlZCB0byB0YWtlIGEgYnZlY19pdGVyIGFyZ3VtZW50XG5AQCAtMTAxLDcgJiM0MzsxMDEsNyBAQCBPdGhlciBpbXBsaWNhdGlvbnM6XG4gICAgSS5lLiBpbnN0ZWFkIG9mIHVzaW5nIGJpb19pb3ZlY19pZHgoKSAob3IgYmlvLVx1MDAzZWJpX2lvdmVjW2Jpby1cdTAwM2ViaV9pZHhdKSwgeW91XG4gICAgbm93IHVzZSBiaW9faXRlcl9pb3ZlYygpLCB3aGljaCB0YWtlcyBhIGJ2ZWNfaXRlciBhbmQgcmV0dXJucyBhXG4gICAgbGl0ZXJhbCBzdHJ1Y3QgYmlvX3ZlYyAtIGNvbnN0cnVjdGVkIG9uIHRoZSBmbHkgZnJvbSB0aGUgcmF3IGJpb3ZlYyBidXRcbi0gICB0YWtpbmcgaW50byBhY2NvdW50IGJpX2J2ZWNfZG9uZSAoYW5kIGJpX3NpemUpLlxuJiM0MzsgICB0YWtpbmcgaW50byBhY2NvdW50IGJpX29mZnNldCAoYW5kIGJpX3NpemUpLlxuIFxuICAqIGJpX3ZjbnQgY2FuJiMzOTt0IGJlIHRydXN0ZWQgb3IgcmVsaWVkIHVwb24gYnkgZHJpdmVyIGNvZGUgLSBpLmUuIGFueXRoaW5nIHRoYXRcbiAgICBkb2VzbiYjMzk7dCBhY3R1YWxseSBvd24gdGhlIGJpby4gVGhlIHJlYXNvbiBpcyB0d29mb2xkOiBmaXJzdGx5LCBpdCYjMzk7cyBub3RcbmRpZmYgLS1naXQgYS9ibG9jay9iaW8uYyBiL2Jsb2NrL2Jpby5jXG5pbmRleCA1MDAzODlmMzMyZDk5Li40MDc0YTA0OTZiOTNmIDEwMDY0NFxuLS0tIGEvYmxvY2svYmlvLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jpby5jXG5AQCAtMjI5LDcgJiM0MzsyMjksNyBAQCB2b2lkIGJpb19pbml0KHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IGJpb192ZWMgKnRhYmxlLFxuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yID0gMDtcbiBcdGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUgPSAwO1xuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfaWR4ID0gMDtcbi1cdGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IDA7XG4mIzQzO1x0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0ID0gMDtcbiBcdGJpby1cdTAwM2ViaV9lbmRfaW8gPSBOVUxMO1xuIFx0YmlvLVx1MDAzZWJpX3ByaXZhdGUgPSBOVUxMO1xuICNpZmRlZiBDT05GSUdfQkxLX0NHUk9VUFxuQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCB2b2lkIGJpb19pb3ZfYnZlY19zZXQoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4gXG4gXHRiaW8tXHUwMDNlYmlfaW9fdmVjID0gKHN0cnVjdCBiaW9fdmVjICopaXRlci1cdTAwM2VidmVjO1xuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfaWR4ID0gMDtcbi1cdGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IGl0ZXItXHUwMDNlaW92X29mZnNldDtcbiYjNDM7XHRiaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQgPSBpdGVyLVx1MDAzZWlvdl9vZmZzZXQ7XG4gXHRiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplID0gaW92X2l0ZXJfY291bnQoaXRlcik7XG4gXHRiaW9fc2V0X2ZsYWcoYmlvLCBCSU9fQ0xPTkVEKTtcbiB9XG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLW1lcmdlLmMgYi9ibG9jay9ibGstbWVyZ2UuY1xuaW5kZXggYWIxMTYxY2E2OWYxZS4uMjU4YTcyNjA3MWQxMiAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9ibGstbWVyZ2UuY1xuQEAgLTMzLDcgJiM0MzszMyw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiaW9fZ2V0X2xhc3RfYnZlYyhzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBiaW9fdmVjICpidilcbiBcbiBcdGJpb19hZHZhbmNlX2l0ZXIoYmlvLCBcdTAwMjZpdGVyLCBpdGVyLmJpX3NpemUpO1xuIFxuLVx0aWYgKCFpdGVyLmJpX2J2ZWNfZG9uZSlcbiYjNDM7XHRpZiAoIWl0ZXIuYmlfb2Zmc2V0KVxuIFx0XHRpZHggPSBpdGVyLmJpX2lkeCAtIDE7XG4gXHRlbHNlXHQvKiBpbiB0aGUgbWlkZGxlIG9mIGJ2ZWMgKi9cbiBcdFx0aWR4ID0gaXRlci5iaV9pZHg7XG5AQCAtNDEsMTEgJiM0Mzs0MSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpXG4gXHQqYnYgPSBiaW8tXHUwMDNlYmlfaW9fdmVjW2lkeF07XG4gXG4gXHQvKlxuLVx0ICogaXRlci5iaV9idmVjX2RvbmUgcmVjb3JkcyBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBsYXN0IGJ2ZWNcbiYjNDM7XHQgKiBpdGVyLmJpX29mZnNldCByZWNvcmRzIGFjdHVhbCBsZW5ndGggb2YgdGhlIGxhc3QgYnZlY1xuIFx0ICogaWYgdGhpcyBiaW8gZW5kcyBpbiB0aGUgbWlkZGxlIG9mIG9uZSBpbyB2ZWN0b3JcbiBcdCAqL1xuLVx0aWYgKGl0ZXIuYmlfYnZlY19kb25lKVxuLVx0XHRidi1cdTAwM2Vidl9sZW4gPSBpdGVyLmJpX2J2ZWNfZG9uZTtcbiYjNDM7XHRpZiAoaXRlci5iaV9vZmZzZXQpXG4mIzQzO1x0XHRidi1cdTAwM2Vidl9sZW4gPSBpdGVyLmJpX29mZnNldDtcbiB9XG4gXG4gc3RhdGljIGlubGluZSBib29sIGJpb193aWxsX2dhcChzdHJ1Y3QgcmVxdWVzdF9xdWV1ZSAqcSxcbmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEtZG1hLmMgYi9ibG9jay9ibGstbXEtZG1hLmNcbmluZGV4IGJmZGI5ZWQ3MDc0MTEuLjg4ZmQ5Y2JjOTUxZjQgMTAwNjQ0XG4tLS0gYS9ibG9jay9ibGstbXEtZG1hLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS1kbWEuY1xuQEAgLTQ0LDcgJiM0Mzs0NCw3IEBAIHN0YXRpYyBib29sIGJsa19tYXBfaXRlcl9uZXh0KHN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBibGtfbWFwX2l0ZXIgKml0ZXIsXG4gXHQgKiBvbmUgY291bGQgYmUgbWVyZ2VkIGludG8gaXQuICBUaGlzIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gbW92aW5nIHRvXG4gXHQgKiB0aGUgbmV4dCBiaW8sIGJ1dCBzb21lIGNhbGxlcnMgYWxzbyBkb24mIzM5O3QgcGFjayBidmVjcyB0aWdodC5cbiBcdCAqL1xuLVx0d2hpbGUgKCFpdGVyLVx1MDAzZWl0ZXIuYmlfc2l6ZSB8fCAhaXRlci1cdTAwM2VpdGVyLmJpX2J2ZWNfZG9uZSkge1xuJiM0MztcdHdoaWxlICghaXRlci1cdTAwM2VpdGVyLmJpX3NpemUgfHwgIWl0ZXItXHUwMDNlaXRlci5iaV9vZmZzZXQpIHtcbiBcdFx0c3RydWN0IGJpb192ZWMgbmV4dDtcbiBcbiBcdFx0aWYgKCFfX2Jsa19tYXBfaXRlcl9uZXh0KGl0ZXIpKVxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmhcbmluZGV4IGVhYWMwNTgxNWNiMDMuLjUwYWJmZDkzMjg4NjEgMTAwNjQ0XG4tLS0gYS9ibG9jay9ibGsuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLmhcbkBAIC00MDYsNyAmIzQzOzQwNiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBiaW9fbWF5X25lZWRfc3BsaXQoc3RydWN0IGJpbyAqYmlvLFxuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcbiBcdGJ2ID0gX19idmVjX2l0ZXJfYnZlYyhiaW8tXHUwMDNlYmlfaW9fdmVjLCBiaW8tXHUwMDNlYmlfaXRlcik7XG4tXHRpZiAoYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSBcdTAwM2UgYnYtXHUwMDNlYnZfbGVuIC0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lKVxuJiM0MztcdGlmIChiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplIFx1MDAzZSBidi1cdTAwM2Vidl9sZW4gLSBiaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQpXG4gXHRcdHJldHVybiB0cnVlO1xuIFx0aWYgKChidi1cdTAwM2Vidl9vZmZzZXQgfCBidi1cdTAwM2Vidl9sZW4pIFx1MDAyNiBsaW0tXHUwMDNlZG1hX2FsaWdubWVudClcbiBcdFx0cmV0dXJuIHRydWU7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuaW5kZXggMjZkNzEzMGMzZjU1OS4uODYzOWZhMzRiODQ3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuQEAgLTM3OSw3ICYjNDM7Mzc5LDcgQEAgc3RhdGljIGludCBsb19yd19haW8oc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGxvb3BfY21kICpjbWQsXG4gXHRcdGlvdl9pdGVyX2J2ZWMoXHUwMDI2aXRlciwgcncsXG4gXHRcdFx0X19idmVjX2l0ZXJfYnZlYyhycS1cdTAwM2ViaW8tXHUwMDNlYmlfaW9fdmVjLCBycS1cdTAwM2ViaW8tXHUwMDNlYmlfaXRlciksXG4gXHRcdFx0bnJfYnZlYywgYmxrX3JxX2J5dGVzKHJxKSk7XG4tXHRcdGl0ZXIuaW92X29mZnNldCA9IHJxLVx1MDAzZWJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZTtcbiYjNDM7XHRcdGl0ZXIuaW92X29mZnNldCA9IHJxLVx1MDAzZWJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldDtcbiBcdH1cbiBcdGF0b21pY19zZXQoXHUwMDI2Y21kLVx1MDAzZXJlZiwgMik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay96bG9vcC5jIGIvZHJpdmVycy9ibG9jay96bG9vcC5jXG5pbmRleCA1OGVjODE2MWI3ZTJmLi40MzIzYWMxMDhjYWU4IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay96bG9vcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3psb29wLmNcbkBAIC01NTUsNyAmIzQzOzU1NSw3IEBAIHN0YXRpYyBpbnQgemxvb3BfZG9fcncoc3RydWN0IHpsb29wX2NtZCAqY21kKVxuIFx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIHJ3LFxuIFx0XHRcdF9fYnZlY19pdGVyX2J2ZWMocnEtXHUwMDNlYmlvLVx1MDAzZWJpX2lvX3ZlYywgcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIpLFxuIFx0XHRcdFx0XHRucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTtcbi1cdFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuJiM0MztcdFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xuIFx0fVxuIFxuIFx0Y21kLVx1MDAzZWlvY2Iua2lfcG9zID0gKGNtZC1cdTAwM2VzZWN0b3IgLSB6b25lLVx1MDAzZXN0YXJ0KSBcdTAwM2NcdTAwM2MgU0VDVE9SX1NISUZUO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmMgYi9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXG5pbmRleCA2MTU1YjAxMTdjOWQ2Li4wNGYzZmM4YWViNmY5IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuY1xuQEAgLTE2LDEyICYjNDM7MTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0aW50IGlkeDtcbiBcbiBcdGl0ZXItXHUwMDNlYmlfc2l6ZSAmIzQzOz0gYnl0ZXM7XG4tXHRpZiAoYnl0ZXMgXHUwMDNjPSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSkge1xuLVx0XHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSAtPSBieXRlcztcbiYjNDM7XHRpZiAoYnl0ZXMgXHUwMDNjPSBpdGVyLVx1MDAzZWJpX29mZnNldCkge1xuJiM0MztcdFx0aXRlci1cdTAwM2ViaV9vZmZzZXQgLT0gYnl0ZXM7XG4gXHRcdHJldHVybiB0cnVlO1xuIFx0fVxuIFxuLVx0Ynl0ZXMgLT0gaXRlci1cdTAwM2ViaV9idmVjX2RvbmU7XG4mIzQzO1x0Ynl0ZXMgLT0gaXRlci1cdTAwM2ViaV9vZmZzZXQ7XG4gXHRpZHggPSBpdGVyLVx1MDAzZWJpX2lkeCAtIDE7XG4gXG4gXHR3aGlsZSAoaWR4IFx1MDAzZT0gMCBcdTAwMjZcdTAwMjYgYnl0ZXMgXHUwMDI2XHUwMDI2IGJ5dGVzIFx1MDAzZSBidltpZHhdLmJ2X2xlbikge1xuQEAgLTMyLDEzICYjNDM7MzIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0aWYgKFdBUk5fT05DRShpZHggXHUwMDNjIDAgXHUwMDI2XHUwMDI2IGJ5dGVzLFxuIFx0XHQgICAgICBcJiMzNDtBdHRlbXB0ZWQgdG8gcmV3aW5kIGl0ZXIgYmV5b25kIGJ2ZWMmIzM5O3MgYm91bmRhcmllc1xcblwmIzM0OykpIHtcbiBcdFx0aXRlci1cdTAwM2ViaV9zaXplIC09IGJ5dGVzO1xuLVx0XHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IDA7XG4mIzQzO1x0XHRpdGVyLVx1MDAzZWJpX29mZnNldCA9IDA7XG4gXHRcdGl0ZXItXHUwMDNlYmlfaWR4ID0gMDtcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFx0fVxuIFxuIFx0aXRlci1cdTAwM2ViaV9pZHggPSBpZHg7XG4tXHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IGJ2W2lkeF0uYnZfbGVuIC0gYnl0ZXM7XG4mIzQzO1x0aXRlci1cdTAwM2ViaV9vZmZzZXQgPSBidltpZHhdLmJ2X2xlbiAtIGJ5dGVzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuYyBiL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xuaW5kZXggN2U5ODE4NzAxNDQ1MS4uOGY4ODE2ZTFjNTM5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jXG5AQCAtMTQsNyAmIzQzOzE0LDcgQEAgaW50IHNlZ21lbnRfY29weV90b19iaW8oc3RydWN0IHBjYWNoZV9zZWdtZW50ICpzZWdtZW50LFxuIFxuIFx0aW92X2l0ZXJfYnZlYyhcdTAwMjZpdGVyLCBJVEVSX0RFU1QsIFx1MDAyNmJpby1cdTAwM2ViaV9pb192ZWNbYmlvLVx1MDAzZWJpX2l0ZXIuYmlfaWR4XSxcbiBcdFx0XHRiaW9fc2VnbWVudHMoYmlvKSwgYmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XG4tXHRpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XG4mIzQzO1x0aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xuIFx0aWYgKGJpb19vZmYpXG4gXHRcdGlvdl9pdGVyX2FkdmFuY2UoXHUwMDI2aXRlciwgYmlvX29mZik7XG4gXG5AQCAtMzUsNyAmIzQzOzM1LDcgQEAgaW50IHNlZ21lbnRfY29weV9mcm9tX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsXG4gXG4gXHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIElURVJfU09VUkNFLCBcdTAwMjZiaW8tXHUwMDNlYmlfaW9fdmVjW2Jpby1cdTAwM2ViaV9pdGVyLmJpX2lkeF0sXG4gXHRcdFx0YmlvX3NlZ21lbnRzKGJpbyksIGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUpO1xuLVx0aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuJiM0MztcdGl0ZXIuaW92X29mZnNldCA9IGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldDtcbiBcdGlmIChiaW9fb2ZmKVxuIFx0XHRpb3ZfaXRlcl9hZHZhbmNlKFx1MDAyNml0ZXIsIGJpb19vZmYpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL2J0dC5jIGIvZHJpdmVycy9udmRpbW0vYnR0LmNcbmluZGV4IDdlMTExMjk2MGQ3ZjguLjVkOTEwYTY0NTAzZDMgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252ZGltbS9idHQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udmRpbW0vYnR0LmNcbkBAIC0xMTU1LDcgJiM0MzsxMTU1LDcgQEAgc3RhdGljIGludCBidHRfcndfaW50ZWdyaXR5KHN0cnVjdCBidHQgKmJ0dCwgc3RydWN0IGJpb19pbnRlZ3JpdHlfcGF5bG9hZCAqYmlwLFxuIFx0XHRidiA9IGJ2ZWNfaXRlcl9idmVjKGJpcC1cdTAwM2ViaXBfdmVjLCBiaXAtXHUwMDNlYmlwX2l0ZXIpO1xuIFx0XHQvKlxuIFx0XHQgKiBUaGUgJiMzOTtidiYjMzk7IG9idGFpbmVkIGZyb20gYnZlY19pdGVyX2J2ZWMgaGFzIGl0cyAuYnZfbGVuIGFuZFxuLVx0XHQgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItXHUwMDNlYmlfYnZlY19kb25lLCBhbmQgd2VcbiYjNDM7XHRcdCAqIC5idl9vZmZzZXQgYWxyZWFkeSBhZGp1c3RlZCBmb3IgaXRlci1cdTAwM2ViaV9vZmZzZXQsIGFuZCB3ZVxuIFx0XHQgKiBjYW4gdXNlIHRob3NlIGRpcmVjdGx5XG4gXHRcdCAqL1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbmluZGV4IGJhNWM3YjNlMmE3YzYuLmNlMDNhMGVhNGRlZDcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbkBAIC0zNTcsNyAmIzQzOzM1Nyw3IEBAIHN0YXRpYyB2b2lkIG52bWVfdGNwX2luaXRfaXRlcihzdHJ1Y3QgbnZtZV90Y3BfcmVxdWVzdCAqcmVxLFxuIFx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNnJlcS1cdTAwM2VpdGVyLCBkaXIsXG4gXHRcdFx0X19idmVjX2l0ZXJfYnZlYyhiaW8tXHUwMDNlYmlfaW9fdmVjLCBiaW8tXHUwMDNlYmlfaXRlciksIG5yX2J2ZWMsXG4gXHRcdFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XG4tXHRcdHJlcS1cdTAwM2VpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XG4mIzQzO1x0XHRyZXEtXHUwMDNlaXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xuIFx0fVxuIH1cbiBcbmRpZmYgLS1naXQgYS9mcy9idHJmcy9taXNjLmggYi9mcy9idHJmcy9taXNjLmhcbmluZGV4IDY5NGJlNmQwNTYyYTQuLjgwMjA2MDk0MzE4MDEgMTAwNjQ0XG4tLS0gYS9mcy9idHJmcy9taXNjLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2J0cmZzL21pc2MuaFxuQEAgLTc0LDcgJiM0Mzs3NCw3IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGJ2ZWNfaXRlciBpbml0X2J2ZWNfaXRlcl9mb3JfYmlvKHN0cnVjdCBiaW8gKmJpbylcbiBcdFx0LmJpX3NlY3RvciA9IDAsXG4gXHRcdC5iaV9zaXplID0gYmlvX3NpemUsXG4gXHRcdC5iaV9pZHggPSAwLFxuLVx0XHQuYmlfYnZlY19kb25lID0gMCxcbiYjNDM7XHRcdC5iaV9vZmZzZXQgPSAwLFxuIFx0fTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idmVjLmggYi9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxuaW5kZXggOTI4MzdlMjc0M2YxOS4uZmM1NjZlZTFjMWZmMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnZlYy5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxuQEAgLTExMCw3ICYjNDM7MTEwLDcgQEAgc3RydWN0IGJ2ZWNfaXRlciB7XG4gXHQvKlxuIFx0ICogQ3VycmVudCBvZmZzZXQgaW4gdGhlIGJ2ZWMgZW50cnkgcG9pbnRlZCB0byBieSBgYmlfaWR4YC5cbiBcdCAqL1xuLVx0dW5zaWduZWQgaW50XHRcdGJpX2J2ZWNfZG9uZTtcbiYjNDM7XHR1bnNpZ25lZCBpbnRcdFx0Ymlfb2Zmc2V0O1xuIH0gX19wYWNrZWQgX19hbGlnbmVkKDQpO1xuIFxuIHN0cnVjdCBidmVjX2l0ZXJfYWxsIHtcbkBAIC0xMzUsMTQgJiM0MzsxMzUsMTQgQEAgbXBfYnZlY19pdGVyX3BhZ2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnRcbiBtcF9idmVjX2l0ZXJfbGVuKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidmVjcywgY29uc3Qgc3RydWN0IGJ2ZWNfaXRlciBpdGVyKVxuIHtcbi1cdHJldHVybiBtaW4oX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfbGVuIC0gaXRlci5iaV9idmVjX2RvbmUsXG4mIzQzO1x0cmV0dXJuIG1pbihfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS1cdTAwM2Vidl9sZW4gLSBpdGVyLmJpX29mZnNldCxcbiBcdFx0XHRpdGVyLmJpX3NpemUpO1xuIH1cbiBcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludFxuIG1wX2J2ZWNfaXRlcl9vZmZzZXQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXG4ge1xuLVx0cmV0dXJuIF9fYnZlY19pdGVyX2J2ZWMoYnZlY3MsIGl0ZXIpLVx1MDAzZWJ2X29mZnNldCAmIzQzOyBpdGVyLmJpX2J2ZWNfZG9uZTtcbiYjNDM7XHRyZXR1cm4gX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfb2Zmc2V0ICYjNDM7IGl0ZXIuYmlfb2Zmc2V0O1xuIH1cbiBcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludFxuQEAgLTIwNCw3ICYjNDM7MjA0LDcgQEAgc3RhdGljIGlubGluZSBib29sIGJ2ZWNfaXRlcl9hZHZhbmNlKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidixcbiBcdH1cbiBcbiBcdGl0ZXItXHUwMDNlYmlfc2l6ZSAtPSBieXRlcztcbi1cdGJ5dGVzICYjNDM7PSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZTtcbiYjNDM7XHRieXRlcyAmIzQzOz0gaXRlci1cdTAwM2ViaV9vZmZzZXQ7XG4gXG4gXHR3aGlsZSAoYnl0ZXMgXHUwMDI2XHUwMDI2IGJ5dGVzIFx1MDAzZT0gYnZbaWR4XS5idl9sZW4pIHtcbiBcdFx0Ynl0ZXMgLT0gYnZbaWR4XS5idl9sZW47XG5AQCAtMjEyLDcgJiM0MzsyMTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0fVxuIFxuIFx0aXRlci1cdTAwM2ViaV9pZHggPSBpZHg7XG4tXHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IGJ5dGVzO1xuJiM0MztcdGl0ZXItXHUwMDNlYmlfb2Zmc2V0ID0gYnl0ZXM7XG4gXHRyZXR1cm4gdHJ1ZTtcbiB9XG4gXG5AQCAtMjIzLDEzICYjNDM7MjIzLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBidmVjX2l0ZXJfYWR2YW5jZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXG4gc3RhdGljIGlubGluZSB2b2lkIGJ2ZWNfaXRlcl9hZHZhbmNlX3NpbmdsZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXG4gXHRcdFx0XHRzdHJ1Y3QgYnZlY19pdGVyICppdGVyLCB1bnNpZ25lZCBpbnQgYnl0ZXMpXG4ge1xuLVx0dW5zaWduZWQgaW50IGRvbmUgPSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSAmIzQzOyBieXRlcztcbiYjNDM7XHR1bnNpZ25lZCBpbnQgZG9uZSA9IGl0ZXItXHUwMDNlYmlfb2Zmc2V0ICYjNDM7IGJ5dGVzO1xuIFxuIFx0aWYgKGRvbmUgPT0gYnZbaXRlci1cdTAwM2ViaV9pZHhdLmJ2X2xlbikge1xuIFx0XHRkb25lID0gMDtcbiBcdFx0aXRlci1cdTAwM2ViaV9pZHgmIzQzOyYjNDM7O1xuIFx0fVxuLVx0aXRlci1cdTAwM2ViaV9idmVjX2RvbmUgPSBkb25lO1xuJiM0MztcdGl0ZXItXHUwMDNlYmlfb2Zmc2V0ID0gZG9uZTtcbiBcdGl0ZXItXHUwMDNlYmlfc2l6ZSAtPSBieXRlcztcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvaW9fdXJpbmcvbmV0LmMgYi9pb191cmluZy9uZXQuY1xuaW5kZXggYTc0ZDE1ZjdiN2QyYi4uNDM5Yzk5YWQxODg0MSAxMDA2NDRcbi0tLSBhL2lvX3VyaW5nL25ldC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9pb191cmluZy9uZXQuY1xuQEAgLTE0NzEsNyAmIzQzOzE0NzEsNyBAQCBzdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTtcbiBcbiBcdGJpLmJpX3NpemUgPSBtaW4oZnJvbS1cdTAwM2Vjb3VudCwgbGVuZ3RoKTtcbi1cdGJpLmJpX2J2ZWNfZG9uZSA9IGZyb20tXHUwMDNlaW92X29mZnNldDtcbiYjNDM7XHRiaS5iaV9vZmZzZXQgPSBmcm9tLVx1MDAzZWlvdl9vZmZzZXQ7XG4gXHRiaS5iaV9pZHggPSAwO1xuIFxuIFx0d2hpbGUgKGJpLmJpX3NpemUgXHUwMDI2XHUwMDI2IGZyYWcgXHUwMDNjIE1BWF9TS0JfRlJBR1MpIHtcbkBAIC0xNDkwLDcgJiM0MzsxNDkwLDcgQEAgc3RhdGljIGludCBpb19zZ19mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdGZyb20tXHUwMDNlYnZlYyAmIzQzOz0gYmkuYmlfaWR4O1xuIFx0ZnJvbS1cdTAwM2Vucl9zZWdzIC09IGJpLmJpX2lkeDtcbiBcdGZyb20tXHUwMDNlY291bnQgLT0gY29waWVkO1xuLVx0ZnJvbS1cdTAwM2Vpb3Zfb2Zmc2V0ID0gYmkuYmlfYnZlY19kb25lO1xuJiM0MztcdGZyb20tXHUwMDNlaW92X29mZnNldCA9IGJpLmJpX29mZnNldDtcbiBcbiBcdHNrYi1cdTAwM2VkYXRhX2xlbiAmIzQzOz0gY29waWVkO1xuIFx0c2tiLVx1MDAzZWxlbiAmIzQzOz0gY29waWVkO1xuZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9pdGVyLmNcbmluZGV4IDM0YTUyZTliYTllMWIuLjgxZTVjNWU1MTIxZjcgMTAwNjQ0XG4tLS0gYS9saWIvaW92X2l0ZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbGliL2lvdl9pdGVyLmNcbkBAIC0xNjM0LDcgJiM0MzsxNjM0LDcgQEAgc3RhdGljIHNzaXplX3QgaW92X2l0ZXJfZXh0cmFjdF9idmVjX3BhZ2VzKHN0cnVjdCBpb3ZfaXRlciAqaSxcbiBcdH1cbiBcdGJpLmJpX2lkeCA9IDA7XG4gXHRiaS5iaV9zaXplID0gbWF4c2l6ZTtcbi1cdGJpLmJpX2J2ZWNfZG9uZSA9IHNraXA7XG4mIzQzO1x0YmkuYmlfb2Zmc2V0ID0gc2tpcDtcbiBcbiBcdG1heHBhZ2VzID0gd2FudF9wYWdlc19hcnJheShwYWdlcywgbWF4c2l6ZSwgc2tpcCwgbWF4cGFnZXMpO1xuIFx0aWYgKCFtYXhwYWdlcylcbmRpZmYgLS1naXQgYS9uZXQvY2VwaC9tZXNzZW5nZXIuYyBiL25ldC9jZXBoL21lc3Nlbmdlci5jXG5pbmRleCAzNGIzMDk3YjRjN2I5Li45YzFiNmNmOGMzNmZlIDEwMDY0NFxuLS0tIGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9jZXBoL21lc3Nlbmdlci5jXG5AQCAtNzYyLDcgJiM0Mzs3NjIsNyBAQCBzdGF0aWMgYm9vbCBjZXBoX21zZ19kYXRhX2Jpb19hZHZhbmNlKHN0cnVjdCBjZXBoX21zZ19kYXRhX2N1cnNvciAqY3Vyc29yLFxuIFx0aWYgKCFjdXJzb3ItXHUwMDNlcmVzaWQpXG4gXHRcdHJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi9cbiBcbi1cdGlmICghYnl0ZXMgfHwgKGl0LVx1MDAzZWl0ZXIuYmlfc2l6ZSBcdTAwMjZcdTAwMjYgaXQtXHUwMDNlaXRlci5iaV9idmVjX2RvbmUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0aWYgKCFieXRlcyB8fCAoaXQtXHUwMDNlaXRlci5iaV9zaXplIFx1MDAyNlx1MDAyNiBpdC1cdTAwM2VpdGVyLmJpX29mZnNldCBcdTAwMjZcdTAwMjZcbiBcdFx0ICAgICAgIHBhZ2UgPT0gYmlvX2l0ZXJfcGFnZShpdC1cdTAwM2ViaW8sIGl0LVx1MDAzZWl0ZXIpKSlcbiBcdFx0cmV0dXJuIGZhbHNlO1x0LyogbW9yZSBieXRlcyB0byBwcm9jZXNzIGluIHRoaXMgc2VnbWVudCAqL1xuIFxuQEAgLTgxNyw3ICYjNDM7ODE3LDcgQEAgc3RhdGljIGJvb2wgY2VwaF9tc2dfZGF0YV9idmVjc19hZHZhbmNlKHN0cnVjdCBjZXBoX21zZ19kYXRhX2N1cnNvciAqY3Vyc29yLFxuIFx0aWYgKCFjdXJzb3ItXHUwMDNlcmVzaWQpXG4gXHRcdHJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi9cbiBcbi1cdGlmICghYnl0ZXMgfHwgKGN1cnNvci1cdTAwM2VidmVjX2l0ZXIuYmlfYnZlY19kb25lIFx1MDAyNlx1MDAyNlxuJiM0MztcdGlmICghYnl0ZXMgfHwgKGN1cnNvci1cdTAwM2VidmVjX2l0ZXIuYmlfb2Zmc2V0IFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICAgcGFnZSA9PSBidmVjX2l0ZXJfcGFnZShidmVjcywgY3Vyc29yLVx1MDAzZWJ2ZWNfaXRlcikpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTM6MjU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcmVuYW1lIG9mIHRoZSBgYmlfYnZlY19kb25lYCBtZW1iZXIgdG8gYGJpX29mZnNldGAgaW4gYHN0cnVjdCBidmVjX2l0ZXJgIGFjcm9zcyB0aGUga2VybmVsLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjc2MDQ1M2E4Y2Q0NjcwYzZiM2I5NzY0MzNjMjg0MTJjNmI4NjQ0MgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTM6MjU6NDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdAppbmRleCAxMTEyNmVkNmY0MGY3Li40OWRhMjE0N2I3ZDg2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0CiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3QKQEAgLTE2LDE2ICYjNDM7MTYsMTYgQEAgYnZfbGVuIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgY29tcGxldGVkIGluIHRoYXQgYmlvdmVjLgogSW4gdGhlIG5ldyBzY2hlbWUgb2YgdGhpbmdzLCBldmVyeXRoaW5nIHRoYXQgbXVzdCBiZSBtdXRhdGVkIGluIG9yZGVyIHRvCiBwYXJ0aWFsbHkgY29tcGxldGUgYSBiaW8gaXMgc2VncmVnYXRlZCBpbnRvIHN0cnVjdCBidmVjX2l0ZXI6IGJpX3NlY3RvciwKIGJpX3NpemUgYW5kIGJpX2lkeCBoYXZlIGJlZW4gbW92ZWQgdGhlcmU7IGFuZCBpbnN0ZWFkIG9mIG1vZGlmeWluZyBidl9vZmZzZXQKLWFuZCBidl9sZW4sIHN0cnVjdCBidmVjX2l0ZXIgaGFzIGJpX2J2ZWNfZG9uZSwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mCiYjNDM7YW5kIGJ2X2xlbiwgc3RydWN0IGJ2ZWNfaXRlciBoYXMgYmlfb2Zmc2V0LCB3aGljaCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YKIGJ5dGVzIGNvbXBsZXRlZCBpbiB0aGUgY3VycmVudCBidmVjLgogCiBUaGVyZSBhcmUgYSBidW5jaCBvZiBuZXcgaGVscGVyIG1hY3JvcyBmb3IgaGlkaW5nIHRoZSBnb3J5IGRldGFpbHMgLSBpbgogcGFydGljdWxhciwgcHJlc2VudGluZyB0aGUgaWxsdXNpb24gb2YgcGFydGlhbGx5IGNvbXBsZXRlZCBiaW92ZWNzIHNvIHRoYXQKLW5vcm1hbCBjb2RlIGRvZXNuJiMzOTt0IGhhdmUgdG8gZGVhbCB3aXRoIGJpX2J2ZWNfZG9uZS4KJiM0Mztub3JtYWwgY29kZSBkb2VzbiYjMzk7dCBoYXZlIHRvIGRlYWwgd2l0aCBiaV9vZmZzZXQuCiAKICAqIERyaXZlciBjb2RlIHNob3VsZCBubyBsb25nZXIgcmVmZXIgdG8gYmlvdmVjcyBkaXJlY3RseTsgd2Ugbm93IGhhdmUKICAgIGJpb19pb3ZlYygpIGFuZCBiaW9faXRlcl9pb3ZlYygpIG1hY3JvcyB0aGF0IHJldHVybiBsaXRlcmFsIHN0cnVjdCBiaW92ZWNzLAotICAgY29uc3RydWN0ZWQgZnJvbSB0aGUgcmF3IGJpb3ZlY3MgYnV0IHRha2luZyBpbnRvIGFjY291bnQgYmlfYnZlY19kb25lIGFuZAomIzQzOyAgIGNvbnN0cnVjdGVkIGZyb20gdGhlIHJhdyBiaW92ZWNzIGJ1dCB0YWtpbmcgaW50byBhY2NvdW50IGJpX29mZnNldCBhbmQKICAgIGJpX3NpemUuCiAKICAgIGJpb19mb3JfZWFjaF9zZWdtZW50KCkgaGFzIGJlZW4gdXBkYXRlZCB0byB0YWtlIGEgYnZlY19pdGVyIGFyZ3VtZW50CkBAIC0xMDEsNyAmIzQzOzEwMSw3IEBAIE90aGVyIGltcGxpY2F0aW9uczoKICAgIEkuZS4gaW5zdGVhZCBvZiB1c2luZyBiaW9faW92ZWNfaWR4KCkgKG9yIGJpby0mZ3Q7YmlfaW92ZWNbYmlvLSZndDtiaV9pZHhdKSwgeW91CiAgICBub3cgdXNlIGJpb19pdGVyX2lvdmVjKCksIHdoaWNoIHRha2VzIGEgYnZlY19pdGVyIGFuZCByZXR1cm5zIGEKICAgIGxpdGVyYWwgc3RydWN0IGJpb192ZWMgLSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5IGZyb20gdGhlIHJhdyBiaW92ZWMgYnV0Ci0gICB0YWtpbmcgaW50byBhY2NvdW50IGJpX2J2ZWNfZG9uZSAoYW5kIGJpX3NpemUpLgomIzQzOyAgIHRha2luZyBpbnRvIGFjY291bnQgYmlfb2Zmc2V0IChhbmQgYmlfc2l6ZSkuCiAKICAqIGJpX3ZjbnQgY2FuJiMzOTt0IGJlIHRydXN0ZWQgb3IgcmVsaWVkIHVwb24gYnkgZHJpdmVyIGNvZGUgLSBpLmUuIGFueXRoaW5nIHRoYXQKICAgIGRvZXNuJiMzOTt0IGFjdHVhbGx5IG93biB0aGUgYmlvLiBUaGUgcmVhc29uIGlzIHR3b2ZvbGQ6IGZpcnN0bHksIGl0JiMzOTtzIG5vdApkaWZmIC0tZ2l0IGEvYmxvY2svYmlvLmMgYi9ibG9jay9iaW8uYwppbmRleCA1MDAzODlmMzMyZDk5Li40MDc0YTA0OTZiOTNmIDEwMDY0NAotLS0gYS9ibG9jay9iaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9iaW8uYwpAQCAtMjI5LDcgJiM0MzsyMjksNyBAQCB2b2lkIGJpb19pbml0KHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IGJpb192ZWMgKnRhYmxlLAogCWJpby0mZ3Q7YmlfaXRlci5iaV9zZWN0b3IgPSAwOwogCWJpby0mZ3Q7YmlfaXRlci5iaV9zaXplID0gMDsKIAliaW8tJmd0O2JpX2l0ZXIuYmlfaWR4ID0gMDsKLQliaW8tJmd0O2JpX2l0ZXIuYmlfYnZlY19kb25lID0gMDsKJiM0MzsJYmlvLSZndDtiaV9pdGVyLmJpX29mZnNldCA9IDA7CiAJYmlvLSZndDtiaV9lbmRfaW8gPSBOVUxMOwogCWJpby0mZ3Q7YmlfcHJpdmF0ZSA9IE5VTEw7CiAjaWZkZWYgQ09ORklHX0JMS19DR1JPVVAKQEAgLTExODgsNyAmIzQzOzExODgsNyBAQCB2b2lkIGJpb19pb3ZfYnZlY19zZXQoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpCiAKIAliaW8tJmd0O2JpX2lvX3ZlYyA9IChzdHJ1Y3QgYmlvX3ZlYyAqKWl0ZXItJmd0O2J2ZWM7CiAJYmlvLSZndDtiaV9pdGVyLmJpX2lkeCA9IDA7Ci0JYmlvLSZndDtiaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IGl0ZXItJmd0O2lvdl9vZmZzZXQ7CiYjNDM7CWJpby0mZ3Q7YmlfaXRlci5iaV9vZmZzZXQgPSBpdGVyLSZndDtpb3Zfb2Zmc2V0OwogCWJpby0mZ3Q7YmlfaXRlci5iaV9zaXplID0gaW92X2l0ZXJfY291bnQoaXRlcik7CiAJYmlvX3NldF9mbGFnKGJpbywgQklPX0NMT05FRCk7CiB9CmRpZmYgLS1naXQgYS9ibG9jay9ibGstbWVyZ2UuYyBiL2Jsb2NrL2Jsay1tZXJnZS5jCmluZGV4IGFiMTE2MWNhNjlmMWUuLjI1OGE3MjYwNzFkMTIgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tZXJnZS5jCkBAIC0zMyw3ICYjNDM7MzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpCiAKIAliaW9fYWR2YW5jZV9pdGVyKGJpbywgJmFtcDtpdGVyLCBpdGVyLmJpX3NpemUpOwogCi0JaWYgKCFpdGVyLmJpX2J2ZWNfZG9uZSkKJiM0MzsJaWYgKCFpdGVyLmJpX29mZnNldCkKIAkJaWR4ID0gaXRlci5iaV9pZHggLSAxOwogCWVsc2UJLyogaW4gdGhlIG1pZGRsZSBvZiBidmVjICovCiAJCWlkeCA9IGl0ZXIuYmlfaWR4OwpAQCAtNDEsMTEgJiM0Mzs0MSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpCiAJKmJ2ID0gYmlvLSZndDtiaV9pb192ZWNbaWR4XTsKIAogCS8qCi0JICogaXRlci5iaV9idmVjX2RvbmUgcmVjb3JkcyBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBsYXN0IGJ2ZWMKJiM0MzsJICogaXRlci5iaV9vZmZzZXQgcmVjb3JkcyBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBsYXN0IGJ2ZWMKIAkgKiBpZiB0aGlzIGJpbyBlbmRzIGluIHRoZSBtaWRkbGUgb2Ygb25lIGlvIHZlY3RvcgogCSAqLwotCWlmIChpdGVyLmJpX2J2ZWNfZG9uZSkKLQkJYnYtJmd0O2J2X2xlbiA9IGl0ZXIuYmlfYnZlY19kb25lOwomIzQzOwlpZiAoaXRlci5iaV9vZmZzZXQpCiYjNDM7CQlidi0mZ3Q7YnZfbGVuID0gaXRlci5iaV9vZmZzZXQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBiaW9fd2lsbF9nYXAoc3RydWN0IHJlcXVlc3RfcXVldWUgKnEsCmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEtZG1hLmMgYi9ibG9jay9ibGstbXEtZG1hLmMKaW5kZXggYmZkYjllZDcwNzQxMS4uODhmZDljYmM5NTFmNCAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLW1xLWRtYS5jCiYjNDM7JiM0MzsmIzQzOyBiL2Jsb2NrL2Jsay1tcS1kbWEuYwpAQCAtNDQsNyAmIzQzOzQ0LDcgQEAgc3RhdGljIGJvb2wgYmxrX21hcF9pdGVyX25leHQoc3RydWN0IHJlcXVlc3QgKnJlcSwgc3RydWN0IGJsa19tYXBfaXRlciAqaXRlciwKIAkgKiBvbmUgY291bGQgYmUgbWVyZ2VkIGludG8gaXQuICBUaGlzIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gbW92aW5nIHRvCiAJICogdGhlIG5leHQgYmlvLCBidXQgc29tZSBjYWxsZXJzIGFsc28gZG9uJiMzOTt0IHBhY2sgYnZlY3MgdGlnaHQuCiAJICovCi0Jd2hpbGUgKCFpdGVyLSZndDtpdGVyLmJpX3NpemUgfHwgIWl0ZXItJmd0O2l0ZXIuYmlfYnZlY19kb25lKSB7CiYjNDM7CXdoaWxlICghaXRlci0mZ3Q7aXRlci5iaV9zaXplIHx8ICFpdGVyLSZndDtpdGVyLmJpX29mZnNldCkgewogCQlzdHJ1Y3QgYmlvX3ZlYyBuZXh0OwogCiAJCWlmICghX19ibGtfbWFwX2l0ZXJfbmV4dChpdGVyKSkKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay5oIGIvYmxvY2svYmxrLmgKaW5kZXggZWFhYzA1ODE1Y2IwMy4uNTBhYmZkOTMyODg2MSAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLmgKJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svYmxrLmgKQEAgLTQwNiw3ICYjNDM7NDA2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGJpb19tYXlfbmVlZF9zcGxpdChzdHJ1Y3QgYmlvICpiaW8sCiAJCXJldHVybiB0cnVlOwogCiAJYnYgPSBfX2J2ZWNfaXRlcl9idmVjKGJpby0mZ3Q7YmlfaW9fdmVjLCBiaW8tJmd0O2JpX2l0ZXIpOwotCWlmIChiaW8tJmd0O2JpX2l0ZXIuYmlfc2l6ZSAmZ3Q7IGJ2LSZndDtidl9sZW4gLSBiaW8tJmd0O2JpX2l0ZXIuYmlfYnZlY19kb25lKQomIzQzOwlpZiAoYmlvLSZndDtiaV9pdGVyLmJpX3NpemUgJmd0OyBidi0mZ3Q7YnZfbGVuIC0gYmlvLSZndDtiaV9pdGVyLmJpX29mZnNldCkKIAkJcmV0dXJuIHRydWU7CiAJaWYgKChidi0mZ3Q7YnZfb2Zmc2V0IHwgYnYtJmd0O2J2X2xlbikgJmFtcDsgbGltLSZndDtkbWFfYWxpZ25tZW50KQogCQlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmMKaW5kZXggMjZkNzEzMGMzZjU1OS4uODYzOWZhMzRiODQ3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9sb29wLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9sb29wLmMKQEAgLTM3OSw3ICYjNDM7Mzc5LDcgQEAgc3RhdGljIGludCBsb19yd19haW8oc3RydWN0IGxvb3BfZGV2aWNlICpsbywgc3RydWN0IGxvb3BfY21kICpjbWQsCiAJCWlvdl9pdGVyX2J2ZWMoJmFtcDtpdGVyLCBydywKIAkJCV9fYnZlY19pdGVyX2J2ZWMocnEtJmd0O2Jpby0mZ3Q7YmlfaW9fdmVjLCBycS0mZ3Q7YmlvLSZndDtiaV9pdGVyKSwKIAkJCW5yX2J2ZWMsIGJsa19ycV9ieXRlcyhycSkpOwotCQlpdGVyLmlvdl9vZmZzZXQgPSBycS0mZ3Q7YmlvLSZndDtiaV9pdGVyLmJpX2J2ZWNfZG9uZTsKJiM0MzsJCWl0ZXIuaW92X29mZnNldCA9IHJxLSZndDtiaW8tJmd0O2JpX2l0ZXIuYmlfb2Zmc2V0OwogCX0KIAlhdG9taWNfc2V0KCZhbXA7Y21kLSZndDtyZWYsIDIpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3psb29wLmMgYi9kcml2ZXJzL2Jsb2NrL3psb29wLmMKaW5kZXggNThlYzgxNjFiN2UyZi4uNDMyM2FjMTA4Y2FlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay96bG9vcC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svemxvb3AuYwpAQCAtNTU1LDcgJiM0Mzs1NTUsNyBAQCBzdGF0aWMgaW50IHpsb29wX2RvX3J3KHN0cnVjdCB6bG9vcF9jbWQgKmNtZCkKIAkJaW92X2l0ZXJfYnZlYygmYW1wO2l0ZXIsIHJ3LAogCQkJX19idmVjX2l0ZXJfYnZlYyhycS0mZ3Q7YmlvLSZndDtiaV9pb192ZWMsIHJxLSZndDtiaW8tJmd0O2JpX2l0ZXIpLAogCQkJCQlucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTsKLQkJaXRlci5pb3Zfb2Zmc2V0ID0gcnEtJmd0O2Jpby0mZ3Q7YmlfaXRlci5iaV9idmVjX2RvbmU7CiYjNDM7CQlpdGVyLmlvdl9vZmZzZXQgPSBycS0mZ3Q7YmlvLSZndDtiaV9pdGVyLmJpX29mZnNldDsKIAl9CiAKIAljbWQtJmd0O2lvY2Iua2lfcG9zID0gKGNtZC0mZ3Q7c2VjdG9yIC0gem9uZS0mZ3Q7c3RhcnQpICZsdDsmbHQ7IFNFQ1RPUl9TSElGVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmMgYi9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jCmluZGV4IDYxNTViMDExN2M5ZDYuLjA0ZjNmYzhhZWI2ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuYwpAQCAtMTYsMTIgJiM0MzsxNiwxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZG1fYnZlY19pdGVyX3Jld2luZChjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsCiAJaW50IGlkeDsKIAogCWl0ZXItJmd0O2JpX3NpemUgJiM0Mzs9IGJ5dGVzOwotCWlmIChieXRlcyAmbHQ7PSBpdGVyLSZndDtiaV9idmVjX2RvbmUpIHsKLQkJaXRlci0mZ3Q7YmlfYnZlY19kb25lIC09IGJ5dGVzOwomIzQzOwlpZiAoYnl0ZXMgJmx0Oz0gaXRlci0mZ3Q7Ymlfb2Zmc2V0KSB7CiYjNDM7CQlpdGVyLSZndDtiaV9vZmZzZXQgLT0gYnl0ZXM7CiAJCXJldHVybiB0cnVlOwogCX0KIAotCWJ5dGVzIC09IGl0ZXItJmd0O2JpX2J2ZWNfZG9uZTsKJiM0MzsJYnl0ZXMgLT0gaXRlci0mZ3Q7Ymlfb2Zmc2V0OwogCWlkeCA9IGl0ZXItJmd0O2JpX2lkeCAtIDE7CiAKIAl3aGlsZSAoaWR4ICZndDs9IDAgJmFtcDsmYW1wOyBieXRlcyAmYW1wOyZhbXA7IGJ5dGVzICZndDsgYnZbaWR4XS5idl9sZW4pIHsKQEAgLTMyLDEzICYjNDM7MzIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LAogCWlmIChXQVJOX09OQ0UoaWR4ICZsdDsgMCAmYW1wOyZhbXA7IGJ5dGVzLAogCQkgICAgICAmIzM0O0F0dGVtcHRlZCB0byByZXdpbmQgaXRlciBiZXlvbmQgYnZlYyYjMzk7cyBib3VuZGFyaWVzXG4mIzM0OykpIHsKIAkJaXRlci0mZ3Q7Ymlfc2l6ZSAtPSBieXRlczsKLQkJaXRlci0mZ3Q7YmlfYnZlY19kb25lID0gMDsKJiM0MzsJCWl0ZXItJmd0O2JpX29mZnNldCA9IDA7CiAJCWl0ZXItJmd0O2JpX2lkeCA9IDA7CiAJCXJldHVybiBmYWxzZTsKIAl9CiAKIAlpdGVyLSZndDtiaV9pZHggPSBpZHg7Ci0JaXRlci0mZ3Q7YmlfYnZlY19kb25lID0gYnZbaWR4XS5idl9sZW4gLSBieXRlczsKJiM0MzsJaXRlci0mZ3Q7Ymlfb2Zmc2V0ID0gYnZbaWR4XS5idl9sZW4gLSBieXRlczsKIAlyZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jIGIvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jCmluZGV4IDdlOTgxODcwMTQ0NTEuLjhmODgxNmUxYzUzOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL21kL2RtLXBjYWNoZS9zZWdtZW50LmMKQEAgLTE0LDcgJiM0MzsxNCw3IEBAIGludCBzZWdtZW50X2NvcHlfdG9fYmlvKHN0cnVjdCBwY2FjaGVfc2VnbWVudCAqc2VnbWVudCwKIAogCWlvdl9pdGVyX2J2ZWMoJmFtcDtpdGVyLCBJVEVSX0RFU1QsICZhbXA7YmlvLSZndDtiaV9pb192ZWNbYmlvLSZndDtiaV9pdGVyLmJpX2lkeF0sCiAJCQliaW9fc2VnbWVudHMoYmlvKSwgYmlvLSZndDtiaV9pdGVyLmJpX3NpemUpOwotCWl0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9idmVjX2RvbmU7CiYjNDM7CWl0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9vZmZzZXQ7CiAJaWYgKGJpb19vZmYpCiAJCWlvdl9pdGVyX2FkdmFuY2UoJmFtcDtpdGVyLCBiaW9fb2ZmKTsKIApAQCAtMzUsNyAmIzQzOzM1LDcgQEAgaW50IHNlZ21lbnRfY29weV9mcm9tX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsCiAKIAlpb3ZfaXRlcl9idmVjKCZhbXA7aXRlciwgSVRFUl9TT1VSQ0UsICZhbXA7YmlvLSZndDtiaV9pb192ZWNbYmlvLSZndDtiaV9pdGVyLmJpX2lkeF0sCiAJCQliaW9fc2VnbWVudHMoYmlvKSwgYmlvLSZndDtiaV9pdGVyLmJpX3NpemUpOwotCWl0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9idmVjX2RvbmU7CiYjNDM7CWl0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9vZmZzZXQ7CiAJaWYgKGJpb19vZmYpCiAJCWlvdl9pdGVyX2FkdmFuY2UoJmFtcDtpdGVyLCBiaW9fb2ZmKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vYnR0LmMgYi9kcml2ZXJzL252ZGltbS9idHQuYwppbmRleCA3ZTExMTI5NjBkN2Y4Li41ZDkxMGE2NDUwM2QzIDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9idHQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL252ZGltbS9idHQuYwpAQCAtMTE1NSw3ICYjNDM7MTE1NSw3IEBAIHN0YXRpYyBpbnQgYnR0X3J3X2ludGVncml0eShzdHJ1Y3QgYnR0ICpidHQsIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpcCwKIAkJYnYgPSBidmVjX2l0ZXJfYnZlYyhiaXAtJmd0O2JpcF92ZWMsIGJpcC0mZ3Q7YmlwX2l0ZXIpOwogCQkvKgogCQkgKiBUaGUgJiMzOTtidiYjMzk7IG9idGFpbmVkIGZyb20gYnZlY19pdGVyX2J2ZWMgaGFzIGl0cyAuYnZfbGVuIGFuZAotCQkgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItJmd0O2JpX2J2ZWNfZG9uZSwgYW5kIHdlCiYjNDM7CQkgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItJmd0O2JpX29mZnNldCwgYW5kIHdlCiAJCSAqIGNhbiB1c2UgdGhvc2UgZGlyZWN0bHkKIAkJICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jIGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKaW5kZXggYmE1YzdiM2UyYTdjNi4uY2UwM2EwZWE0ZGVkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9udm1lL2hvc3QvdGNwLmMKQEAgLTM1Nyw3ICYjNDM7MzU3LDcgQEAgc3RhdGljIHZvaWQgbnZtZV90Y3BfaW5pdF9pdGVyKHN0cnVjdCBudm1lX3RjcF9yZXF1ZXN0ICpyZXEsCiAJCWlvdl9pdGVyX2J2ZWMoJmFtcDtyZXEtJmd0O2l0ZXIsIGRpciwKIAkJCV9fYnZlY19pdGVyX2J2ZWMoYmlvLSZndDtiaV9pb192ZWMsIGJpby0mZ3Q7YmlfaXRlciksIG5yX2J2ZWMsCiAJCQliaW8tJmd0O2JpX2l0ZXIuYmlfc2l6ZSk7Ci0JCXJlcS0mZ3Q7aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLSZndDtiaV9pdGVyLmJpX2J2ZWNfZG9uZTsKJiM0MzsJCXJlcS0mZ3Q7aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLSZndDtiaV9pdGVyLmJpX29mZnNldDsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL21pc2MuaCBiL2ZzL2J0cmZzL21pc2MuaAppbmRleCA2OTRiZTZkMDU2MmE0Li44MDIwNjA5NDMxODAxIDEwMDY0NAotLS0gYS9mcy9idHJmcy9taXNjLmgKJiM0MzsmIzQzOyYjNDM7IGIvZnMvYnRyZnMvbWlzYy5oCkBAIC03NCw3ICYjNDM7NzQsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBidmVjX2l0ZXIgaW5pdF9idmVjX2l0ZXJfZm9yX2JpbyhzdHJ1Y3QgYmlvICpiaW8pCiAJCS5iaV9zZWN0b3IgPSAwLAogCQkuYmlfc2l6ZSA9IGJpb19zaXplLAogCQkuYmlfaWR4ID0gMCwKLQkJLmJpX2J2ZWNfZG9uZSA9IDAsCiYjNDM7CQkuYmlfb2Zmc2V0ID0gMCwKIAl9OwogfQogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J2ZWMuaCBiL2luY2x1ZGUvbGludXgvYnZlYy5oCmluZGV4IDkyODM3ZTI3NDNmMTkuLmZjNTY2ZWUxYzFmZjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYnZlYy5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvYnZlYy5oCkBAIC0xMTAsNyAmIzQzOzExMCw3IEBAIHN0cnVjdCBidmVjX2l0ZXIgewogCS8qCiAJICogQ3VycmVudCBvZmZzZXQgaW4gdGhlIGJ2ZWMgZW50cnkgcG9pbnRlZCB0byBieSBgYmlfaWR4YC4KIAkgKi8KLQl1bnNpZ25lZCBpbnQJCWJpX2J2ZWNfZG9uZTsKJiM0MzsJdW5zaWduZWQgaW50CQliaV9vZmZzZXQ7CiB9IF9fcGFja2VkIF9fYWxpZ25lZCg0KTsKIAogc3RydWN0IGJ2ZWNfaXRlcl9hbGwgewpAQCAtMTM1LDE0ICYjNDM7MTM1LDE0IEBAIG1wX2J2ZWNfaXRlcl9wYWdlKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidmVjcywgY29uc3Qgc3RydWN0IGJ2ZWNfaXRlciBpdGVyKQogc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQKIG1wX2J2ZWNfaXRlcl9sZW4oY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpCiB7Ci0JcmV0dXJuIG1pbihfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS0mZ3Q7YnZfbGVuIC0gaXRlci5iaV9idmVjX2RvbmUsCiYjNDM7CXJldHVybiBtaW4oX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktJmd0O2J2X2xlbiAtIGl0ZXIuYmlfb2Zmc2V0LAogCQkJaXRlci5iaV9zaXplKTsKIH0KIAogc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnQKIG1wX2J2ZWNfaXRlcl9vZmZzZXQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpCiB7Ci0JcmV0dXJuIF9fYnZlY19pdGVyX2J2ZWMoYnZlY3MsIGl0ZXIpLSZndDtidl9vZmZzZXQgJiM0MzsgaXRlci5iaV9idmVjX2RvbmU7CiYjNDM7CXJldHVybiBfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS0mZ3Q7YnZfb2Zmc2V0ICYjNDM7IGl0ZXIuYmlfb2Zmc2V0OwogfQogCiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludApAQCAtMjA0LDcgJiM0MzsyMDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LAogCX0KIAogCWl0ZXItJmd0O2JpX3NpemUgLT0gYnl0ZXM7Ci0JYnl0ZXMgJiM0Mzs9IGl0ZXItJmd0O2JpX2J2ZWNfZG9uZTsKJiM0MzsJYnl0ZXMgJiM0Mzs9IGl0ZXItJmd0O2JpX29mZnNldDsKIAogCXdoaWxlIChieXRlcyAmYW1wOyZhbXA7IGJ5dGVzICZndDs9IGJ2W2lkeF0uYnZfbGVuKSB7CiAJCWJ5dGVzIC09IGJ2W2lkeF0uYnZfbGVuOwpAQCAtMjEyLDcgJiM0MzsyMTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LAogCX0KIAogCWl0ZXItJmd0O2JpX2lkeCA9IGlkeDsKLQlpdGVyLSZndDtiaV9idmVjX2RvbmUgPSBieXRlczsKJiM0MzsJaXRlci0mZ3Q7Ymlfb2Zmc2V0ID0gYnl0ZXM7CiAJcmV0dXJuIHRydWU7CiB9CiAKQEAgLTIyMywxMyAmIzQzOzIyMywxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LAogc3RhdGljIGlubGluZSB2b2lkIGJ2ZWNfaXRlcl9hZHZhbmNlX3NpbmdsZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsCiAJCQkJc3RydWN0IGJ2ZWNfaXRlciAqaXRlciwgdW5zaWduZWQgaW50IGJ5dGVzKQogewotCXVuc2lnbmVkIGludCBkb25lID0gaXRlci0mZ3Q7YmlfYnZlY19kb25lICYjNDM7IGJ5dGVzOwomIzQzOwl1bnNpZ25lZCBpbnQgZG9uZSA9IGl0ZXItJmd0O2JpX29mZnNldCAmIzQzOyBieXRlczsKIAogCWlmIChkb25lID09IGJ2W2l0ZXItJmd0O2JpX2lkeF0uYnZfbGVuKSB7CiAJCWRvbmUgPSAwOwogCQlpdGVyLSZndDtiaV9pZHgmIzQzOyYjNDM7OwogCX0KLQlpdGVyLSZndDtiaV9idmVjX2RvbmUgPSBkb25lOwomIzQzOwlpdGVyLSZndDtiaV9vZmZzZXQgPSBkb25lOwogCWl0ZXItJmd0O2JpX3NpemUgLT0gYnl0ZXM7CiB9CiAKZGlmZiAtLWdpdCBhL2lvX3VyaW5nL25ldC5jIGIvaW9fdXJpbmcvbmV0LmMKaW5kZXggYTc0ZDE1ZjdiN2QyYi4uNDM5Yzk5YWQxODg0MSAxMDA2NDQKLS0tIGEvaW9fdXJpbmcvbmV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvaW9fdXJpbmcvbmV0LmMKQEAgLTE0NzEsNyAmIzQzOzE0NzEsNyBAQCBzdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQlyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTsKIAogCWJpLmJpX3NpemUgPSBtaW4oZnJvbS0mZ3Q7Y291bnQsIGxlbmd0aCk7Ci0JYmkuYmlfYnZlY19kb25lID0gZnJvbS0mZ3Q7aW92X29mZnNldDsKJiM0MzsJYmkuYmlfb2Zmc2V0ID0gZnJvbS0mZ3Q7aW92X29mZnNldDsKIAliaS5iaV9pZHggPSAwOwogCiAJd2hpbGUgKGJpLmJpX3NpemUgJmFtcDsmYW1wOyBmcmFnICZsdDsgTUFYX1NLQl9GUkFHUykgewpAQCAtMTQ5MCw3ICYjNDM7MTQ5MCw3IEBAIHN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsCiAJZnJvbS0mZ3Q7YnZlYyAmIzQzOz0gYmkuYmlfaWR4OwogCWZyb20tJmd0O25yX3NlZ3MgLT0gYmkuYmlfaWR4OwogCWZyb20tJmd0O2NvdW50IC09IGNvcGllZDsKLQlmcm9tLSZndDtpb3Zfb2Zmc2V0ID0gYmkuYmlfYnZlY19kb25lOwomIzQzOwlmcm9tLSZndDtpb3Zfb2Zmc2V0ID0gYmkuYmlfb2Zmc2V0OwogCiAJc2tiLSZndDtkYXRhX2xlbiAmIzQzOz0gY29waWVkOwogCXNrYi0mZ3Q7bGVuICYjNDM7PSBjb3BpZWQ7CmRpZmYgLS1naXQgYS9saWIvaW92X2l0ZXIuYyBiL2xpYi9pb3ZfaXRlci5jCmluZGV4IDM0YTUyZTliYTllMWIuLjgxZTVjNWU1MTIxZjcgMTAwNjQ0Ci0tLSBhL2xpYi9pb3ZfaXRlci5jCiYjNDM7JiM0MzsmIzQzOyBiL2xpYi9pb3ZfaXRlci5jCkBAIC0xNjM0LDcgJiM0MzsxNjM0LDcgQEAgc3RhdGljIHNzaXplX3QgaW92X2l0ZXJfZXh0cmFjdF9idmVjX3BhZ2VzKHN0cnVjdCBpb3ZfaXRlciAqaSwKIAl9CiAJYmkuYmlfaWR4ID0gMDsKIAliaS5iaV9zaXplID0gbWF4c2l6ZTsKLQliaS5iaV9idmVjX2RvbmUgPSBza2lwOwomIzQzOwliaS5iaV9vZmZzZXQgPSBza2lwOwogCiAJbWF4cGFnZXMgPSB3YW50X3BhZ2VzX2FycmF5KHBhZ2VzLCBtYXhzaXplLCBza2lwLCBtYXhwYWdlcyk7CiAJaWYgKCFtYXhwYWdlcykKZGlmZiAtLWdpdCBhL25ldC9jZXBoL21lc3Nlbmdlci5jIGIvbmV0L2NlcGgvbWVzc2VuZ2VyLmMKaW5kZXggMzRiMzA5N2I0YzdiOS4uOWMxYjZjZjhjMzZmZSAxMDA2NDQKLS0tIGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2NlcGgvbWVzc2VuZ2VyLmMKQEAgLTc2Miw3ICYjNDM7NzYyLDcgQEAgc3RhdGljIGJvb2wgY2VwaF9tc2dfZGF0YV9iaW9fYWR2YW5jZShzdHJ1Y3QgY2VwaF9tc2dfZGF0YV9jdXJzb3IgKmN1cnNvciwKIAlpZiAoIWN1cnNvci0mZ3Q7cmVzaWQpCiAJCXJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi8KIAotCWlmICghYnl0ZXMgfHwgKGl0LSZndDtpdGVyLmJpX3NpemUgJmFtcDsmYW1wOyBpdC0mZ3Q7aXRlci5iaV9idmVjX2RvbmUgJmFtcDsmYW1wOwomIzQzOwlpZiAoIWJ5dGVzIHx8IChpdC0mZ3Q7aXRlci5iaV9zaXplICZhbXA7JmFtcDsgaXQtJmd0O2l0ZXIuYmlfb2Zmc2V0ICZhbXA7JmFtcDsKIAkJICAgICAgIHBhZ2UgPT0gYmlvX2l0ZXJfcGFnZShpdC0mZ3Q7YmlvLCBpdC0mZ3Q7aXRlcikpKQogCQlyZXR1cm4gZmFsc2U7CS8qIG1vcmUgYnl0ZXMgdG8gcHJvY2VzcyBpbiB0aGlzIHNlZ21lbnQgKi8KIApAQCAtODE3LDcgJiM0Mzs4MTcsNyBAQCBzdGF0aWMgYm9vbCBjZXBoX21zZ19kYXRhX2J2ZWNzX2FkdmFuY2Uoc3RydWN0IGNlcGhfbXNnX2RhdGFfY3Vyc29yICpjdXJzb3IsCiAJaWYgKCFjdXJzb3ItJmd0O3Jlc2lkKQogCQlyZXR1cm4gZmFsc2U7ICAgLyogbm8gbW9yZSBkYXRhICovCiAKLQlpZiAoIWJ5dGVzIHx8IChjdXJzb3ItJmd0O2J2ZWNfaXRlci5iaV9idmVjX2RvbmUgJmFtcDsmYW1wOwomIzQzOwlpZiAoIWJ5dGVzIHx8IChjdXJzb3ItJmd0O2J2ZWNfaXRlci5iaV9vZmZzZXQgJmFtcDsmYW1wOwogCQkgICAgICAgcGFnZSA9PSBidmVjX2l0ZXJfcGFnZShidmVjcywgY3Vyc29yLSZndDtidmVjX2l0ZXIpKSkKIAkJcmV0dXJuIGZhbHNlOwkvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovCiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTM6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUxOQoJCQkJCQkJb3V0cHV0OiA3OQoJCQkJCQkJdGhvdWdodHM6IDU3OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQdXJlIFJlbmFtZTogYGJpX2J2ZWNfZG9uZWAgdG8gYGJpX29mZnNldGAqKgoKT2theSwgaGVyZSYjMzk7cyB0aGUgZGVhbC4gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggaW4gZnJvbnQgb2YgbWUsIGFuZCBpdCYjMzk7cyBhbGwgYWJvdXQgcmVuYW1pbmcgYSBtZW1iZXIgaW4gdGhlIGBzdHJ1Y3QgYnZlY19pdGVyYC4gU3BlY2lmaWNhbGx5LCB0aGV5JiMzOTtyZSBzd2FwcGluZyBvdXQgYGJpX2J2ZWNfZG9uZWAgZm9yIGBiaV9vZmZzZXRgLiBOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtwdXJlbHkgbWVjaGFuaWNhbCwgbm8gZnVuY3Rpb25hbCBjaGFuZ2UsIHJpZ2h0PyYjMzQ7LiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQuCgpJJiMzOTttIHNjYW5uaW5nIHRoZSBkaWZmLiBJIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBiaW8tJmd0O2JpX2l0ZXIuYmlfYnZlY19kb25lYCBiZWNvbWVzIGBiaW8tJmd0O2JpX2l0ZXIuYmlfb2Zmc2V0YCwgdGhlIHNhbWUgZm9yIGBpdGVyLmJpX2J2ZWNfZG9uZWAsIGByZXEtJmd0O2l0ZXIuaW92X29mZnNldCA9IGJpby0mZ3Q7YmlfaXRlci5iaV9idmVjX2RvbmVgIGFuZCBgYmkuYmlfYnZlY19kb25lYC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBzdHJ1Y3QgZGVmaW5pdGlvbiBpdHNlbGY6IGBiaV9idmVjX2RvbmVgIGlzIG5vdyBgYmlfb2Zmc2V0YC4gVGhpcyBjb25maXJtcyBteSBpbml0aWFsIHN1c3BpY2lvbiAtIGl0JiMzOTtzIGp1c3QgYSByZW5hbWUuIE5vIG5ldyBmdW5jdGlvbmFsaXR5LgoKYGBgYwpAQCAtMTEwLDcgJiM0MzsxMTAsNyBAQCBzdHJ1Y3QgYnZlY19pdGVyIHsKIAkvKgogCSAqIEN1cnJlbnQgb2Zmc2V0IGluIHRoZSBidmVjIGVudHJ5IHBvaW50ZWQgdG8gYnkgYGJpX2lkeGAuCiAJICovCi0JdW5zaWduZWQgaW50CQliaV9idmVjX2RvbmU7CiYjNDM7CXVuc2lnbmVkIGludAkJYmlfb2Zmc2V0OwogfSBfX3BhY2tlZCBfX2FsaWduZWQoNCk7CiBgYGAKCkdpdmVuIHRoaXMgaXMgcHVyZWx5IGEgY2hhbmdlIG9mIG5hbWUgYW5kIHRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIHRoZSBmdW5jdGlvbmFsaXR5IGl0c2VsZiwgdGhlIHBhdGNoIGlzIGEgbm8tb3AsIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMuCgpCdXQgd2FpdCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjay4gSnVzdCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlcmUgYXJlIG5vIGhpZGRlbiBpbnRlcmFjdGlvbnMuIEkmIzM5O2xsIHF1aWNrbHkgbG9vayB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBkaWZmIGZvciBhbnkgcmVkIGZsYWdzLiBPa2F5LCBJIHNlZSB0aGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgYmVlbiB0b3VjaGVkOiBgRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdGAsIGBibG9jay9iaW8uY2AsIGBibG9jay9ibGstbWVyZ2UuY2AsIGBibG9jay9ibGstbXEtZG1hLmNgLCBgYmxvY2svYmxrLmhgLCBgZHJpdmVycy9ibG9jay9sb29wLmNgLCBgZHJpdmVycy9ibG9jay96bG9vcC5jYCwgYGRyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmNgLCBgZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jYCwgYGRyaXZlcnMvbnZkaW1tL2J0dC5jYCwgYGRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jYCwgYGZzL2J0cmZzL21pc2MuaGAsIGBpbmNsdWRlL2xpbnV4L2J2ZWMuaGAsIGBpb191cmluZy9uZXQuY2AsIGBsaWIvaW92X2l0ZXIuY2AsIGBuZXQvY2VwaC9tZXNzZW5nZXIuY2AuCgpZZXAsIGl0JiMzOTtzIGp1c3QgdGhlIHJlbmFtZSBwcm9wYWdhdGVkIHRocm91Z2hvdXQgdGhlIGNvZGViYXNlLCBhbmQgc29tZSBkb2N1bWVudGF0aW9uIHVwZGF0ZXMgKGFuZCBhIGNvbW1lbnQpLiBOb3RoaW5nIGVsc2UuIFRoaXMgaXMgYSBjbGVhbiByZW5hbWUsIGEgc2FmZSByZW5hbWUsIGFuZCBkb2VzbiYjMzk7dCBjaGFuZ2Ugd2hhdCB0aGUgc29mdHdhcmUgKmRvZXMqLgoKVGhlcmVmb3JlLCBJJiMzOTttIGNvbmZpZGVudCBpbiBzZXR0aW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBJdCYjMzk7cyBhIG5vbi1mdW5jdGlvbmFsIGNoYW5nZSwgYW5kIG5vdCB3b3J0aCBteSBhdHRlbnRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTM6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmFtZSBvZiB0aGUgYGJpX2J2ZWNfZG9uZWAgbWVtYmVyIHRvIGBiaV9vZmZzZXRgIGluIGBzdHJ1Y3QgYnZlY19pdGVyYCBhY3Jvc3MgdGhlIGtlcm5lbC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlbHkgbWVjaGFuaWNhbCByZW5hbWUgb2YgdGhlIGBiaV9idmVjX2RvbmVgIG1lbWJlciB0byBgYmlfb2Zmc2V0YCBpbiBgc3RydWN0IGJ2ZWNfaXRlcmAgYWNyb3NzIHRoZSBrZXJuZWwuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMzoyNTo0MS42NzM4NzgxNDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NTcwNTg4NDg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmFtZSBvZiB0aGUgYGJpX2J2ZWNfZG9uZWAgbWVtYmVyIHRvIGBiaV9vZmZzZXRgIGluIGBzdHJ1Y3QgYnZlY19pdGVyYCBhY3Jvc3MgdGhlIGtlcm5lbC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTM6MjU6NDEuNjczODgzNDk0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTUyMDUwNjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAyNzYwNDUzYThjZDQ2NzBjNmIzYjk3NjQzM2MyODQxMmM2Yjg2NDQyXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUaHUgQXVnIDYgMTM6MjU6NDAgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdCBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcXG5pbmRleCAxMTEyNmVkNmY0MGY3Li40OWRhMjE0N2I3ZDg2IDEwMDY0NFxcbi0tLSBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcXG4rKysgYi9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0XFxuQEAgLTE2LDE2ICsxNiwxNiBAQCBidl9sZW4gYnkgdGhlIG51bWJlciBvZiBieXRlcyBjb21wbGV0ZWQgaW4gdGhhdCBiaW92ZWMuXFxuIEluIHRoZSBuZXcgc2NoZW1lIG9mIHRoaW5ncywgZXZlcnl0aGluZyB0aGF0IG11c3QgYmUgbXV0YXRlZCBpbiBvcmRlciB0b1xcbiBwYXJ0aWFsbHkgY29tcGxldGUgYSBiaW8gaXMgc2VncmVnYXRlZCBpbnRvIHN0cnVjdCBidmVjX2l0ZXI6IGJpX3NlY3RvcixcXG4gYmlfc2l6ZSBhbmQgYmlfaWR4IGhhdmUgYmVlbiBtb3ZlZCB0aGVyZTsgYW5kIGluc3RlYWQgb2YgbW9kaWZ5aW5nIGJ2X29mZnNldFxcbi1hbmQgYnZfbGVuLCBzdHJ1Y3QgYnZlY19pdGVyIGhhcyBiaV9idmVjX2RvbmUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZlxcbithbmQgYnZfbGVuLCBzdHJ1Y3QgYnZlY19pdGVyIGhhcyBiaV9vZmZzZXQsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZlxcbiBieXRlcyBjb21wbGV0ZWQgaW4gdGhlIGN1cnJlbnQgYnZlYy5cXG4gXFxuIFRoZXJlIGFyZSBhIGJ1bmNoIG9mIG5ldyBoZWxwZXIgbWFjcm9zIGZvciBoaWRpbmcgdGhlIGdvcnkgZGV0YWlscyAtIGluXFxuIHBhcnRpY3VsYXIsIHByZXNlbnRpbmcgdGhlIGlsbHVzaW9uIG9mIHBhcnRpYWxseSBjb21wbGV0ZWQgYmlvdmVjcyBzbyB0aGF0XFxuLW5vcm1hbCBjb2RlIGRvZXNuJ3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfYnZlY19kb25lLlxcbitub3JtYWwgY29kZSBkb2Vzbid0IGhhdmUgdG8gZGVhbCB3aXRoIGJpX29mZnNldC5cXG4gXFxuICAqIERyaXZlciBjb2RlIHNob3VsZCBubyBsb25nZXIgcmVmZXIgdG8gYmlvdmVjcyBkaXJlY3RseTsgd2Ugbm93IGhhdmVcXG4gICAgYmlvX2lvdmVjKCkgYW5kIGJpb19pdGVyX2lvdmVjKCkgbWFjcm9zIHRoYXQgcmV0dXJuIGxpdGVyYWwgc3RydWN0IGJpb3ZlY3MsXFxuLSAgIGNvbnN0cnVjdGVkIGZyb20gdGhlIHJhdyBiaW92ZWNzIGJ1dCB0YWtpbmcgaW50byBhY2NvdW50IGJpX2J2ZWNfZG9uZSBhbmRcXG4rICAgY29uc3RydWN0ZWQgZnJvbSB0aGUgcmF3IGJpb3ZlY3MgYnV0IHRha2luZyBpbnRvIGFjY291bnQgYmlfb2Zmc2V0IGFuZFxcbiAgICBiaV9zaXplLlxcbiBcXG4gICAgYmlvX2Zvcl9lYWNoX3NlZ21lbnQoKSBoYXMgYmVlbiB1cGRhdGVkIHRvIHRha2UgYSBidmVjX2l0ZXIgYXJndW1lbnRcXG5AQCAtMTAxLDcgKzEwMSw3IEBAIE90aGVyIGltcGxpY2F0aW9uczpcXG4gICAgSS5lLiBpbnN0ZWFkIG9mIHVzaW5nIGJpb19pb3ZlY19pZHgoKSAob3IgYmlvLVxcdTAwM2ViaV9pb3ZlY1tiaW8tXFx1MDAzZWJpX2lkeF0pLCB5b3VcXG4gICAgbm93IHVzZSBiaW9faXRlcl9pb3ZlYygpLCB3aGljaCB0YWtlcyBhIGJ2ZWNfaXRlciBhbmQgcmV0dXJucyBhXFxuICAgIGxpdGVyYWwgc3RydWN0IGJpb192ZWMgLSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5IGZyb20gdGhlIHJhdyBiaW92ZWMgYnV0XFxuLSAgIHRha2luZyBpbnRvIGFjY291bnQgYmlfYnZlY19kb25lIChhbmQgYmlfc2l6ZSkuXFxuKyAgIHRha2luZyBpbnRvIGFjY291bnQgYmlfb2Zmc2V0IChhbmQgYmlfc2l6ZSkuXFxuIFxcbiAgKiBiaV92Y250IGNhbid0IGJlIHRydXN0ZWQgb3IgcmVsaWVkIHVwb24gYnkgZHJpdmVyIGNvZGUgLSBpLmUuIGFueXRoaW5nIHRoYXRcXG4gICAgZG9lc24ndCBhY3R1YWxseSBvd24gdGhlIGJpby4gVGhlIHJlYXNvbiBpcyB0d29mb2xkOiBmaXJzdGx5LCBpdCdzIG5vdFxcbmRpZmYgLS1naXQgYS9ibG9jay9iaW8uYyBiL2Jsb2NrL2Jpby5jXFxuaW5kZXggNTAwMzg5ZjMzMmQ5OS4uNDA3NGEwNDk2YjkzZiAxMDA2NDRcXG4tLS0gYS9ibG9jay9iaW8uY1xcbisrKyBiL2Jsb2NrL2Jpby5jXFxuQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIGJpb19pbml0KHN0cnVjdCBiaW8gKmJpbywgc3RydWN0IGJsb2NrX2RldmljZSAqYmRldiwgc3RydWN0IGJpb192ZWMgKnRhYmxlLFxcbiBcXHRiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2VjdG9yID0gMDtcXG4gXFx0YmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemUgPSAwO1xcbiBcXHRiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfaWR4ID0gMDtcXG4tXFx0YmlvLVxcdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IDA7XFxuK1xcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQgPSAwO1xcbiBcXHRiaW8tXFx1MDAzZWJpX2VuZF9pbyA9IE5VTEw7XFxuIFxcdGJpby1cXHUwMDNlYmlfcHJpdmF0ZSA9IE5VTEw7XFxuICNpZmRlZiBDT05GSUdfQkxLX0NHUk9VUFxcbkBAIC0xMTg4LDcgKzExODgsNyBAQCB2b2lkIGJpb19pb3ZfYnZlY19zZXQoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXFxuIFxcbiBcXHRiaW8tXFx1MDAzZWJpX2lvX3ZlYyA9IChzdHJ1Y3QgYmlvX3ZlYyAqKWl0ZXItXFx1MDAzZWJ2ZWM7XFxuIFxcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9pZHggPSAwO1xcbi1cXHRiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lID0gaXRlci1cXHUwMDNlaW92X29mZnNldDtcXG4rXFx0YmlvLVxcdTAwM2ViaV9pdGVyLmJpX29mZnNldCA9IGl0ZXItXFx1MDAzZWlvdl9vZmZzZXQ7XFxuIFxcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9zaXplID0gaW92X2l0ZXJfY291bnQoaXRlcik7XFxuIFxcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DTE9ORUQpO1xcbiB9XFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1tZXJnZS5jIGIvYmxvY2svYmxrLW1lcmdlLmNcXG5pbmRleCBhYjExNjFjYTY5ZjFlLi4yNThhNzI2MDcxZDEyIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2Jsay1tZXJnZS5jXFxuKysrIGIvYmxvY2svYmxrLW1lcmdlLmNcXG5AQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpXFxuIFxcbiBcXHRiaW9fYWR2YW5jZV9pdGVyKGJpbywgXFx1MDAyNml0ZXIsIGl0ZXIuYmlfc2l6ZSk7XFxuIFxcbi1cXHRpZiAoIWl0ZXIuYmlfYnZlY19kb25lKVxcbitcXHRpZiAoIWl0ZXIuYmlfb2Zmc2V0KVxcbiBcXHRcXHRpZHggPSBpdGVyLmJpX2lkeCAtIDE7XFxuIFxcdGVsc2VcXHQvKiBpbiB0aGUgbWlkZGxlIG9mIGJ2ZWMgKi9cXG4gXFx0XFx0aWR4ID0gaXRlci5iaV9pZHg7XFxuQEAgLTQxLDExICs0MSwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpXFxuIFxcdCpidiA9IGJpby1cXHUwMDNlYmlfaW9fdmVjW2lkeF07XFxuIFxcbiBcXHQvKlxcbi1cXHQgKiBpdGVyLmJpX2J2ZWNfZG9uZSByZWNvcmRzIGFjdHVhbCBsZW5ndGggb2YgdGhlIGxhc3QgYnZlY1xcbitcXHQgKiBpdGVyLmJpX29mZnNldCByZWNvcmRzIGFjdHVhbCBsZW5ndGggb2YgdGhlIGxhc3QgYnZlY1xcbiBcXHQgKiBpZiB0aGlzIGJpbyBlbmRzIGluIHRoZSBtaWRkbGUgb2Ygb25lIGlvIHZlY3RvclxcbiBcXHQgKi9cXG4tXFx0aWYgKGl0ZXIuYmlfYnZlY19kb25lKVxcbi1cXHRcXHRidi1cXHUwMDNlYnZfbGVuID0gaXRlci5iaV9idmVjX2RvbmU7XFxuK1xcdGlmIChpdGVyLmJpX29mZnNldClcXG4rXFx0XFx0YnYtXFx1MDAzZWJ2X2xlbiA9IGl0ZXIuYmlfb2Zmc2V0O1xcbiB9XFxuIFxcbiBzdGF0aWMgaW5saW5lIGJvb2wgYmlvX3dpbGxfZ2FwKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxcbmRpZmYgLS1naXQgYS9ibG9jay9ibGstbXEtZG1hLmMgYi9ibG9jay9ibGstbXEtZG1hLmNcXG5pbmRleCBiZmRiOWVkNzA3NDExLi44OGZkOWNiYzk1MWY0IDEwMDY0NFxcbi0tLSBhL2Jsb2NrL2Jsay1tcS1kbWEuY1xcbisrKyBiL2Jsb2NrL2Jsay1tcS1kbWEuY1xcbkBAIC00NCw3ICs0NCw3IEBAIHN0YXRpYyBib29sIGJsa19tYXBfaXRlcl9uZXh0KHN0cnVjdCByZXF1ZXN0ICpyZXEsIHN0cnVjdCBibGtfbWFwX2l0ZXIgKml0ZXIsXFxuIFxcdCAqIG9uZSBjb3VsZCBiZSBtZXJnZWQgaW50byBpdC4gIFRoaXMgdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBtb3ZpbmcgdG9cXG4gXFx0ICogdGhlIG5leHQgYmlvLCBidXQgc29tZSBjYWxsZXJzIGFsc28gZG9uJ3QgcGFjayBidmVjcyB0aWdodC5cXG4gXFx0ICovXFxuLVxcdHdoaWxlICghaXRlci1cXHUwMDNlaXRlci5iaV9zaXplIHx8ICFpdGVyLVxcdTAwM2VpdGVyLmJpX2J2ZWNfZG9uZSkge1xcbitcXHR3aGlsZSAoIWl0ZXItXFx1MDAzZWl0ZXIuYmlfc2l6ZSB8fCAhaXRlci1cXHUwMDNlaXRlci5iaV9vZmZzZXQpIHtcXG4gXFx0XFx0c3RydWN0IGJpb192ZWMgbmV4dDtcXG4gXFxuIFxcdFxcdGlmICghX19ibGtfbWFwX2l0ZXJfbmV4dChpdGVyKSlcXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLmggYi9ibG9jay9ibGsuaFxcbmluZGV4IGVhYWMwNTgxNWNiMDMuLjUwYWJmZDkzMjg4NjEgMTAwNjQ0XFxuLS0tIGEvYmxvY2svYmxrLmhcXG4rKysgYi9ibG9jay9ibGsuaFxcbkBAIC00MDYsNyArNDA2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGJpb19tYXlfbmVlZF9zcGxpdChzdHJ1Y3QgYmlvICpiaW8sXFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXG4gXFx0YnYgPSBfX2J2ZWNfaXRlcl9idmVjKGJpby1cXHUwMDNlYmlfaW9fdmVjLCBiaW8tXFx1MDAzZWJpX2l0ZXIpO1xcbi1cXHRpZiAoYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemUgXFx1MDAzZSBidi1cXHUwMDNlYnZfbGVuIC0gYmlvLVxcdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSlcXG4rXFx0aWYgKGJpby1cXHUwMDNlYmlfaXRlci5iaV9zaXplIFxcdTAwM2UgYnYtXFx1MDAzZWJ2X2xlbiAtIGJpby1cXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQpXFxuIFxcdFxcdHJldHVybiB0cnVlO1xcbiBcXHRpZiAoKGJ2LVxcdTAwM2Vidl9vZmZzZXQgfCBidi1cXHUwMDNlYnZfbGVuKSBcXHUwMDI2IGxpbS1cXHUwMDNlZG1hX2FsaWdubWVudClcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svbG9vcC5jIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5pbmRleCAyNmQ3MTMwYzNmNTU5Li44NjM5ZmEzNGI4NDcwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay9sb29wLmNcXG5AQCAtMzc5LDcgKzM3OSw3IEBAIHN0YXRpYyBpbnQgbG9fcndfYWlvKHN0cnVjdCBsb29wX2RldmljZSAqbG8sIHN0cnVjdCBsb29wX2NtZCAqY21kLFxcbiBcXHRcXHRpb3ZfaXRlcl9idmVjKFxcdTAwMjZpdGVyLCBydyxcXG4gXFx0XFx0XFx0X19idmVjX2l0ZXJfYnZlYyhycS1cXHUwMDNlYmlvLVxcdTAwM2ViaV9pb192ZWMsIHJxLVxcdTAwM2ViaW8tXFx1MDAzZWJpX2l0ZXIpLFxcbiBcXHRcXHRcXHRucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTtcXG4tXFx0XFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXFx1MDAzZWJpby1cXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XFxuK1xcdFxcdGl0ZXIuaW92X29mZnNldCA9IHJxLVxcdTAwM2ViaW8tXFx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xcbiBcXHR9XFxuIFxcdGF0b21pY19zZXQoXFx1MDAyNmNtZC1cXHUwMDNlcmVmLCAyKTtcXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svemxvb3AuYyBiL2RyaXZlcnMvYmxvY2svemxvb3AuY1xcbmluZGV4IDU4ZWM4MTYxYjdlMmYuLjQzMjNhYzEwOGNhZTggMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay96bG9vcC5jXFxuKysrIGIvZHJpdmVycy9ibG9jay96bG9vcC5jXFxuQEAgLTU1NSw3ICs1NTUsNyBAQCBzdGF0aWMgaW50IHpsb29wX2RvX3J3KHN0cnVjdCB6bG9vcF9jbWQgKmNtZClcXG4gXFx0XFx0aW92X2l0ZXJfYnZlYyhcXHUwMDI2aXRlciwgcncsXFxuIFxcdFxcdFxcdF9fYnZlY19pdGVyX2J2ZWMocnEtXFx1MDAzZWJpby1cXHUwMDNlYmlfaW9fdmVjLCBycS1cXHUwMDNlYmlvLVxcdTAwM2ViaV9pdGVyKSxcXG4gXFx0XFx0XFx0XFx0XFx0bnJfYnZlYywgYmxrX3JxX2J5dGVzKHJxKSk7XFxuLVxcdFxcdGl0ZXIuaW92X29mZnNldCA9IHJxLVxcdTAwM2ViaW8tXFx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xcbitcXHRcXHRpdGVyLmlvdl9vZmZzZXQgPSBycS1cXHUwMDNlYmlvLVxcdTAwM2ViaV9pdGVyLmJpX29mZnNldDtcXG4gXFx0fVxcbiBcXG4gXFx0Y21kLVxcdTAwM2Vpb2NiLmtpX3BvcyA9IChjbWQtXFx1MDAzZXNlY3RvciAtIHpvbmUtXFx1MDAzZXN0YXJ0KSBcXHUwMDNjXFx1MDAzYyBTRUNUT1JfU0hJRlQ7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmMgYi9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXFxuaW5kZXggNjE1NWIwMTE3YzlkNi4uMDRmM2ZjOGFlYjZmOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXFxuKysrIGIvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuY1xcbkBAIC0xNiwxMiArMTYsMTIgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxcbiBcXHRpbnQgaWR4O1xcbiBcXG4gXFx0aXRlci1cXHUwMDNlYmlfc2l6ZSArPSBieXRlcztcXG4tXFx0aWYgKGJ5dGVzIFxcdTAwM2M9IGl0ZXItXFx1MDAzZWJpX2J2ZWNfZG9uZSkge1xcbi1cXHRcXHRpdGVyLVxcdTAwM2ViaV9idmVjX2RvbmUgLT0gYnl0ZXM7XFxuK1xcdGlmIChieXRlcyBcXHUwMDNjPSBpdGVyLVxcdTAwM2ViaV9vZmZzZXQpIHtcXG4rXFx0XFx0aXRlci1cXHUwMDNlYmlfb2Zmc2V0IC09IGJ5dGVzO1xcbiBcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gXFx0fVxcbiBcXG4tXFx0Ynl0ZXMgLT0gaXRlci1cXHUwMDNlYmlfYnZlY19kb25lO1xcbitcXHRieXRlcyAtPSBpdGVyLVxcdTAwM2ViaV9vZmZzZXQ7XFxuIFxcdGlkeCA9IGl0ZXItXFx1MDAzZWJpX2lkeCAtIDE7XFxuIFxcbiBcXHR3aGlsZSAoaWR4IFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjYgYnl0ZXMgXFx1MDAyNlxcdTAwMjYgYnl0ZXMgXFx1MDAzZSBidltpZHhdLmJ2X2xlbikge1xcbkBAIC0zMiwxMyArMzIsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGRtX2J2ZWNfaXRlcl9yZXdpbmQoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxcbiBcXHRpZiAoV0FSTl9PTkNFKGlkeCBcXHUwMDNjIDAgXFx1MDAyNlxcdTAwMjYgYnl0ZXMsXFxuIFxcdFxcdCAgICAgIFxcXCJBdHRlbXB0ZWQgdG8gcmV3aW5kIGl0ZXIgYmV5b25kIGJ2ZWMncyBib3VuZGFyaWVzXFxcXG5cXFwiKSkge1xcbiBcXHRcXHRpdGVyLVxcdTAwM2ViaV9zaXplIC09IGJ5dGVzO1xcbi1cXHRcXHRpdGVyLVxcdTAwM2ViaV9idmVjX2RvbmUgPSAwO1xcbitcXHRcXHRpdGVyLVxcdTAwM2ViaV9vZmZzZXQgPSAwO1xcbiBcXHRcXHRpdGVyLVxcdTAwM2ViaV9pZHggPSAwO1xcbiBcXHRcXHRyZXR1cm4gZmFsc2U7XFxuIFxcdH1cXG4gXFxuIFxcdGl0ZXItXFx1MDAzZWJpX2lkeCA9IGlkeDtcXG4tXFx0aXRlci1cXHUwMDNlYmlfYnZlY19kb25lID0gYnZbaWR4XS5idl9sZW4gLSBieXRlcztcXG4rXFx0aXRlci1cXHUwMDNlYmlfb2Zmc2V0ID0gYnZbaWR4XS5idl9sZW4gLSBieXRlcztcXG4gXFx0cmV0dXJuIHRydWU7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuYyBiL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xcbmluZGV4IDdlOTgxODcwMTQ0NTEuLjhmODgxNmUxYzUzOWYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jXFxuKysrIGIvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jXFxuQEAgLTE0LDcgKzE0LDcgQEAgaW50IHNlZ21lbnRfY29weV90b19iaW8oc3RydWN0IHBjYWNoZV9zZWdtZW50ICpzZWdtZW50LFxcbiBcXG4gXFx0aW92X2l0ZXJfYnZlYyhcXHUwMDI2aXRlciwgSVRFUl9ERVNULCBcXHUwMDI2YmlvLVxcdTAwM2ViaV9pb192ZWNbYmlvLVxcdTAwM2ViaV9pdGVyLmJpX2lkeF0sXFxuIFxcdFxcdFxcdGJpb19zZWdtZW50cyhiaW8pLCBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XFxuLVxcdGl0ZXIuaW92X29mZnNldCA9IGJpby1cXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XFxuK1xcdGl0ZXIuaW92X29mZnNldCA9IGJpby1cXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XFxuIFxcdGlmIChiaW9fb2ZmKVxcbiBcXHRcXHRpb3ZfaXRlcl9hZHZhbmNlKFxcdTAwMjZpdGVyLCBiaW9fb2ZmKTtcXG4gXFxuQEAgLTM1LDcgKzM1LDcgQEAgaW50IHNlZ21lbnRfY29weV9mcm9tX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsXFxuIFxcbiBcXHRpb3ZfaXRlcl9idmVjKFxcdTAwMjZpdGVyLCBJVEVSX1NPVVJDRSwgXFx1MDAyNmJpby1cXHUwMDNlYmlfaW9fdmVjW2Jpby1cXHUwMDNlYmlfaXRlci5iaV9pZHhdLFxcbiBcXHRcXHRcXHRiaW9fc2VnbWVudHMoYmlvKSwgYmlvLVxcdTAwM2ViaV9pdGVyLmJpX3NpemUpO1xcbi1cXHRpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xcbitcXHRpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xcbiBcXHRpZiAoYmlvX29mZilcXG4gXFx0XFx0aW92X2l0ZXJfYWR2YW5jZShcXHUwMDI2aXRlciwgYmlvX29mZik7XFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252ZGltbS9idHQuYyBiL2RyaXZlcnMvbnZkaW1tL2J0dC5jXFxuaW5kZXggN2UxMTEyOTYwZDdmOC4uNWQ5MTBhNjQ1MDNkMyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252ZGltbS9idHQuY1xcbisrKyBiL2RyaXZlcnMvbnZkaW1tL2J0dC5jXFxuQEAgLTExNTUsNyArMTE1NSw3IEBAIHN0YXRpYyBpbnQgYnR0X3J3X2ludGVncml0eShzdHJ1Y3QgYnR0ICpidHQsIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpcCxcXG4gXFx0XFx0YnYgPSBidmVjX2l0ZXJfYnZlYyhiaXAtXFx1MDAzZWJpcF92ZWMsIGJpcC1cXHUwMDNlYmlwX2l0ZXIpO1xcbiBcXHRcXHQvKlxcbiBcXHRcXHQgKiBUaGUgJ2J2JyBvYnRhaW5lZCBmcm9tIGJ2ZWNfaXRlcl9idmVjIGhhcyBpdHMgLmJ2X2xlbiBhbmRcXG4tXFx0XFx0ICogLmJ2X29mZnNldCBhbHJlYWR5IGFkanVzdGVkIGZvciBpdGVyLVxcdTAwM2ViaV9idmVjX2RvbmUsIGFuZCB3ZVxcbitcXHRcXHQgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItXFx1MDAzZWJpX29mZnNldCwgYW5kIHdlXFxuIFxcdFxcdCAqIGNhbiB1c2UgdGhvc2UgZGlyZWN0bHlcXG4gXFx0XFx0ICovXFxuIFxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXFxuaW5kZXggYmE1YzdiM2UyYTdjNi4uY2UwM2EwZWE0ZGVkNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuY1xcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXFxuQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgdm9pZCBudm1lX3RjcF9pbml0X2l0ZXIoc3RydWN0IG52bWVfdGNwX3JlcXVlc3QgKnJlcSxcXG4gXFx0XFx0aW92X2l0ZXJfYnZlYyhcXHUwMDI2cmVxLVxcdTAwM2VpdGVyLCBkaXIsXFxuIFxcdFxcdFxcdF9fYnZlY19pdGVyX2J2ZWMoYmlvLVxcdTAwM2ViaV9pb192ZWMsIGJpby1cXHUwMDNlYmlfaXRlciksIG5yX2J2ZWMsXFxuIFxcdFxcdFxcdGJpby1cXHUwMDNlYmlfaXRlci5iaV9zaXplKTtcXG4tXFx0XFx0cmVxLVxcdTAwM2VpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXFx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xcbitcXHRcXHRyZXEtXFx1MDAzZWl0ZXIuaW92X29mZnNldCA9IGJpby1cXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XFxuIFxcdH1cXG4gfVxcbiBcXG5kaWZmIC0tZ2l0IGEvZnMvYnRyZnMvbWlzYy5oIGIvZnMvYnRyZnMvbWlzYy5oXFxuaW5kZXggNjk0YmU2ZDA1NjJhNC4uODAyMDYwOTQzMTgwMSAxMDA2NDRcXG4tLS0gYS9mcy9idHJmcy9taXNjLmhcXG4rKysgYi9mcy9idHJmcy9taXNjLmhcXG5AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBidmVjX2l0ZXIgaW5pdF9idmVjX2l0ZXJfZm9yX2JpbyhzdHJ1Y3QgYmlvICpiaW8pXFxuIFxcdFxcdC5iaV9zZWN0b3IgPSAwLFxcbiBcXHRcXHQuYmlfc2l6ZSA9IGJpb19zaXplLFxcbiBcXHRcXHQuYmlfaWR4ID0gMCxcXG4tXFx0XFx0LmJpX2J2ZWNfZG9uZSA9IDAsXFxuK1xcdFxcdC5iaV9vZmZzZXQgPSAwLFxcbiBcXHR9O1xcbiB9XFxuIFxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2J2ZWMuaCBiL2luY2x1ZGUvbGludXgvYnZlYy5oXFxuaW5kZXggOTI4MzdlMjc0M2YxOS4uZmM1NjZlZTFjMWZmMSAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvYnZlYy5oXFxuQEAgLTExMCw3ICsxMTAsNyBAQCBzdHJ1Y3QgYnZlY19pdGVyIHtcXG4gXFx0LypcXG4gXFx0ICogQ3VycmVudCBvZmZzZXQgaW4gdGhlIGJ2ZWMgZW50cnkgcG9pbnRlZCB0byBieSBgYmlfaWR4YC5cXG4gXFx0ICovXFxuLVxcdHVuc2lnbmVkIGludFxcdFxcdGJpX2J2ZWNfZG9uZTtcXG4rXFx0dW5zaWduZWQgaW50XFx0XFx0Ymlfb2Zmc2V0O1xcbiB9IF9fcGFja2VkIF9fYWxpZ25lZCg0KTtcXG4gXFxuIHN0cnVjdCBidmVjX2l0ZXJfYWxsIHtcXG5AQCAtMTM1LDE0ICsxMzUsMTQgQEAgbXBfYnZlY19pdGVyX3BhZ2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50XFxuIG1wX2J2ZWNfaXRlcl9sZW4oY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXFxuIHtcXG4tXFx0cmV0dXJuIG1pbihfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS1cXHUwMDNlYnZfbGVuIC0gaXRlci5iaV9idmVjX2RvbmUsXFxuK1xcdHJldHVybiBtaW4oX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXFx1MDAzZWJ2X2xlbiAtIGl0ZXIuYmlfb2Zmc2V0LFxcbiBcXHRcXHRcXHRpdGVyLmJpX3NpemUpO1xcbiB9XFxuIFxcbiBzdGF0aWMgX19hbHdheXNfaW5saW5lIHVuc2lnbmVkIGludFxcbiBtcF9idmVjX2l0ZXJfb2Zmc2V0KGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidmVjcywgY29uc3Qgc3RydWN0IGJ2ZWNfaXRlciBpdGVyKVxcbiB7XFxuLVxcdHJldHVybiBfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS1cXHUwMDNlYnZfb2Zmc2V0ICsgaXRlci5iaV9idmVjX2RvbmU7XFxuK1xcdHJldHVybiBfX2J2ZWNfaXRlcl9idmVjKGJ2ZWNzLCBpdGVyKS1cXHUwMDNlYnZfb2Zmc2V0ICsgaXRlci5iaV9vZmZzZXQ7XFxuIH1cXG4gXFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50XFxuQEAgLTIwNCw3ICsyMDQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxcbiBcXHR9XFxuIFxcbiBcXHRpdGVyLVxcdTAwM2ViaV9zaXplIC09IGJ5dGVzO1xcbi1cXHRieXRlcyArPSBpdGVyLVxcdTAwM2ViaV9idmVjX2RvbmU7XFxuK1xcdGJ5dGVzICs9IGl0ZXItXFx1MDAzZWJpX29mZnNldDtcXG4gXFxuIFxcdHdoaWxlIChieXRlcyBcXHUwMDI2XFx1MDAyNiBieXRlcyBcXHUwMDNlPSBidltpZHhdLmJ2X2xlbikge1xcbiBcXHRcXHRieXRlcyAtPSBidltpZHhdLmJ2X2xlbjtcXG5AQCAtMjEyLDcgKzIxMiw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBidmVjX2l0ZXJfYWR2YW5jZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXFxuIFxcdH1cXG4gXFxuIFxcdGl0ZXItXFx1MDAzZWJpX2lkeCA9IGlkeDtcXG4tXFx0aXRlci1cXHUwMDNlYmlfYnZlY19kb25lID0gYnl0ZXM7XFxuK1xcdGl0ZXItXFx1MDAzZWJpX29mZnNldCA9IGJ5dGVzO1xcbiBcXHRyZXR1cm4gdHJ1ZTtcXG4gfVxcbiBcXG5AQCAtMjIzLDEzICsyMjMsMTMgQEAgc3RhdGljIGlubGluZSBib29sIGJ2ZWNfaXRlcl9hZHZhbmNlKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidixcXG4gc3RhdGljIGlubGluZSB2b2lkIGJ2ZWNfaXRlcl9hZHZhbmNlX3NpbmdsZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBidmVjX2l0ZXIgKml0ZXIsIHVuc2lnbmVkIGludCBieXRlcylcXG4ge1xcbi1cXHR1bnNpZ25lZCBpbnQgZG9uZSA9IGl0ZXItXFx1MDAzZWJpX2J2ZWNfZG9uZSArIGJ5dGVzO1xcbitcXHR1bnNpZ25lZCBpbnQgZG9uZSA9IGl0ZXItXFx1MDAzZWJpX29mZnNldCArIGJ5dGVzO1xcbiBcXG4gXFx0aWYgKGRvbmUgPT0gYnZbaXRlci1cXHUwMDNlYmlfaWR4XS5idl9sZW4pIHtcXG4gXFx0XFx0ZG9uZSA9IDA7XFxuIFxcdFxcdGl0ZXItXFx1MDAzZWJpX2lkeCsrO1xcbiBcXHR9XFxuLVxcdGl0ZXItXFx1MDAzZWJpX2J2ZWNfZG9uZSA9IGRvbmU7XFxuK1xcdGl0ZXItXFx1MDAzZWJpX29mZnNldCA9IGRvbmU7XFxuIFxcdGl0ZXItXFx1MDAzZWJpX3NpemUgLT0gYnl0ZXM7XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL25ldC5jIGIvaW9fdXJpbmcvbmV0LmNcXG5pbmRleCBhNzRkMTVmN2I3ZDJiLi40MzljOTlhZDE4ODQxIDEwMDY0NFxcbi0tLSBhL2lvX3VyaW5nL25ldC5jXFxuKysrIGIvaW9fdXJpbmcvbmV0LmNcXG5AQCAtMTQ3MSw3ICsxNDcxLDcgQEAgc3RhdGljIGludCBpb19zZ19mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0XFx0cmV0dXJuIHplcm9jb3B5X2ZpbGxfc2tiX2Zyb21faXRlcihza2IsIGZyb20sIGxlbmd0aCk7XFxuIFxcbiBcXHRiaS5iaV9zaXplID0gbWluKGZyb20tXFx1MDAzZWNvdW50LCBsZW5ndGgpO1xcbi1cXHRiaS5iaV9idmVjX2RvbmUgPSBmcm9tLVxcdTAwM2Vpb3Zfb2Zmc2V0O1xcbitcXHRiaS5iaV9vZmZzZXQgPSBmcm9tLVxcdTAwM2Vpb3Zfb2Zmc2V0O1xcbiBcXHRiaS5iaV9pZHggPSAwO1xcbiBcXG4gXFx0d2hpbGUgKGJpLmJpX3NpemUgXFx1MDAyNlxcdTAwMjYgZnJhZyBcXHUwMDNjIE1BWF9TS0JfRlJBR1MpIHtcXG5AQCAtMTQ5MCw3ICsxNDkwLDcgQEAgc3RhdGljIGludCBpb19zZ19mcm9tX2l0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gXFx0ZnJvbS1cXHUwMDNlYnZlYyArPSBiaS5iaV9pZHg7XFxuIFxcdGZyb20tXFx1MDAzZW5yX3NlZ3MgLT0gYmkuYmlfaWR4O1xcbiBcXHRmcm9tLVxcdTAwM2Vjb3VudCAtPSBjb3BpZWQ7XFxuLVxcdGZyb20tXFx1MDAzZWlvdl9vZmZzZXQgPSBiaS5iaV9idmVjX2RvbmU7XFxuK1xcdGZyb20tXFx1MDAzZWlvdl9vZmZzZXQgPSBiaS5iaV9vZmZzZXQ7XFxuIFxcbiBcXHRza2ItXFx1MDAzZWRhdGFfbGVuICs9IGNvcGllZDtcXG4gXFx0c2tiLVxcdTAwM2VsZW4gKz0gY29waWVkO1xcbmRpZmYgLS1naXQgYS9saWIvaW92X2l0ZXIuYyBiL2xpYi9pb3ZfaXRlci5jXFxuaW5kZXggMzRhNTJlOWJhOWUxYi4uODFlNWM1ZTUxMjFmNyAxMDA2NDRcXG4tLS0gYS9saWIvaW92X2l0ZXIuY1xcbisrKyBiL2xpYi9pb3ZfaXRlci5jXFxuQEAgLTE2MzQsNyArMTYzNCw3IEBAIHN0YXRpYyBzc2l6ZV90IGlvdl9pdGVyX2V4dHJhY3RfYnZlY19wYWdlcyhzdHJ1Y3QgaW92X2l0ZXIgKmksXFxuIFxcdH1cXG4gXFx0YmkuYmlfaWR4ID0gMDtcXG4gXFx0YmkuYmlfc2l6ZSA9IG1heHNpemU7XFxuLVxcdGJpLmJpX2J2ZWNfZG9uZSA9IHNraXA7XFxuK1xcdGJpLmJpX29mZnNldCA9IHNraXA7XFxuIFxcbiBcXHRtYXhwYWdlcyA9IHdhbnRfcGFnZXNfYXJyYXkocGFnZXMsIG1heHNpemUsIHNraXAsIG1heHBhZ2VzKTtcXG4gXFx0aWYgKCFtYXhwYWdlcylcXG5kaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXIuY1xcbmluZGV4IDM0YjMwOTdiNGM3YjkuLjljMWI2Y2Y4YzM2ZmUgMTAwNjQ0XFxuLS0tIGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmNcXG4rKysgYi9uZXQvY2VwaC9tZXNzZW5nZXIuY1xcbkBAIC03NjIsNyArNzYyLDcgQEAgc3RhdGljIGJvb2wgY2VwaF9tc2dfZGF0YV9iaW9fYWR2YW5jZShzdHJ1Y3QgY2VwaF9tc2dfZGF0YV9jdXJzb3IgKmN1cnNvcixcXG4gXFx0aWYgKCFjdXJzb3ItXFx1MDAzZXJlc2lkKVxcbiBcXHRcXHRyZXR1cm4gZmFsc2U7ICAgLyogbm8gbW9yZSBkYXRhICovXFxuIFxcbi1cXHRpZiAoIWJ5dGVzIHx8IChpdC1cXHUwMDNlaXRlci5iaV9zaXplIFxcdTAwMjZcXHUwMDI2IGl0LVxcdTAwM2VpdGVyLmJpX2J2ZWNfZG9uZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRpZiAoIWJ5dGVzIHx8IChpdC1cXHUwMDNlaXRlci5iaV9zaXplIFxcdTAwMjZcXHUwMDI2IGl0LVxcdTAwM2VpdGVyLmJpX29mZnNldCBcXHUwMDI2XFx1MDAyNlxcbiBcXHRcXHQgICAgICAgcGFnZSA9PSBiaW9faXRlcl9wYWdlKGl0LVxcdTAwM2ViaW8sIGl0LVxcdTAwM2VpdGVyKSkpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXFxuIFxcbkBAIC04MTcsNyArODE3LDcgQEAgc3RhdGljIGJvb2wgY2VwaF9tc2dfZGF0YV9idmVjc19hZHZhbmNlKHN0cnVjdCBjZXBoX21zZ19kYXRhX2N1cnNvciAqY3Vyc29yLFxcbiBcXHRpZiAoIWN1cnNvci1cXHUwMDNlcmVzaWQpXFxuIFxcdFxcdHJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi9cXG4gXFxuLVxcdGlmICghYnl0ZXMgfHwgKGN1cnNvci1cXHUwMDNlYnZlY19pdGVyLmJpX2J2ZWNfZG9uZSBcXHUwMDI2XFx1MDAyNlxcbitcXHRpZiAoIWJ5dGVzIHx8IChjdXJzb3ItXFx1MDAzZWJ2ZWNfaXRlci5iaV9vZmZzZXQgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0ICAgICAgIHBhZ2UgPT0gYnZlY19pdGVyX3BhZ2UoYnZlY3MsIGN1cnNvci1cXHUwMDNlYnZlY19pdGVyKSkpXFxuIFxcdFxcdHJldHVybiBmYWxzZTtcXHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMzoyNTo0Mi4xNjk4NTE2NTNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4MDc0NjA5OTI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmFtZSBvZiB0aGUgYGJpX2J2ZWNfZG9uZWAgbWVtYmVyIHRvIGBiaV9vZmZzZXRgIGluIGBzdHJ1Y3QgYnZlY19pdGVyYCBhY3Jvc3MgdGhlIGtlcm5lbC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMjc2MDQ1M2E4Y2Q0NjcwYzZiM2I5NzY0MzNjMjg0MTJjNmI4NjQ0MlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgQXVnIDYgMTM6MjU6NDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb3ZlY3MucnN0IGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdFxuaW5kZXggMTExMjZlZDZmNDBmNy4uNDlkYTIxNDdiN2Q4NiAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcbisrKyBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvdmVjcy5yc3RcbkBAIC0xNiwxNiArMTYsMTYgQEAgYnZfbGVuIGJ5IHRoZSBudW1iZXIgb2YgYnl0ZXMgY29tcGxldGVkIGluIHRoYXQgYmlvdmVjLlxuIEluIHRoZSBuZXcgc2NoZW1lIG9mIHRoaW5ncywgZXZlcnl0aGluZyB0aGF0IG11c3QgYmUgbXV0YXRlZCBpbiBvcmRlciB0b1xuIHBhcnRpYWxseSBjb21wbGV0ZSBhIGJpbyBpcyBzZWdyZWdhdGVkIGludG8gc3RydWN0IGJ2ZWNfaXRlcjogYmlfc2VjdG9yLFxuIGJpX3NpemUgYW5kIGJpX2lkeCBoYXZlIGJlZW4gbW92ZWQgdGhlcmU7IGFuZCBpbnN0ZWFkIG9mIG1vZGlmeWluZyBidl9vZmZzZXRcbi1hbmQgYnZfbGVuLCBzdHJ1Y3QgYnZlY19pdGVyIGhhcyBiaV9idmVjX2RvbmUsIHdoaWNoIHJlcHJlc2VudHMgdGhlIG51bWJlciBvZlxuK2FuZCBidl9sZW4sIHN0cnVjdCBidmVjX2l0ZXIgaGFzIGJpX29mZnNldCwgd2hpY2ggcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mXG4gYnl0ZXMgY29tcGxldGVkIGluIHRoZSBjdXJyZW50IGJ2ZWMuXG4gXG4gVGhlcmUgYXJlIGEgYnVuY2ggb2YgbmV3IGhlbHBlciBtYWNyb3MgZm9yIGhpZGluZyB0aGUgZ29yeSBkZXRhaWxzIC0gaW5cbiBwYXJ0aWN1bGFyLCBwcmVzZW50aW5nIHRoZSBpbGx1c2lvbiBvZiBwYXJ0aWFsbHkgY29tcGxldGVkIGJpb3ZlY3Mgc28gdGhhdFxuLW5vcm1hbCBjb2RlIGRvZXNuJ3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfYnZlY19kb25lLlxuK25vcm1hbCBjb2RlIGRvZXNuJ3QgaGF2ZSB0byBkZWFsIHdpdGggYmlfb2Zmc2V0LlxuIFxuICAqIERyaXZlciBjb2RlIHNob3VsZCBubyBsb25nZXIgcmVmZXIgdG8gYmlvdmVjcyBkaXJlY3RseTsgd2Ugbm93IGhhdmVcbiAgICBiaW9faW92ZWMoKSBhbmQgYmlvX2l0ZXJfaW92ZWMoKSBtYWNyb3MgdGhhdCByZXR1cm4gbGl0ZXJhbCBzdHJ1Y3QgYmlvdmVjcyxcbi0gICBjb25zdHJ1Y3RlZCBmcm9tIHRoZSByYXcgYmlvdmVjcyBidXQgdGFraW5nIGludG8gYWNjb3VudCBiaV9idmVjX2RvbmUgYW5kXG4rICAgY29uc3RydWN0ZWQgZnJvbSB0aGUgcmF3IGJpb3ZlY3MgYnV0IHRha2luZyBpbnRvIGFjY291bnQgYmlfb2Zmc2V0IGFuZFxuICAgIGJpX3NpemUuXG4gXG4gICAgYmlvX2Zvcl9lYWNoX3NlZ21lbnQoKSBoYXMgYmVlbiB1cGRhdGVkIHRvIHRha2UgYSBidmVjX2l0ZXIgYXJndW1lbnRcbkBAIC0xMDEsNyArMTAxLDcgQEAgT3RoZXIgaW1wbGljYXRpb25zOlxuICAgIEkuZS4gaW5zdGVhZCBvZiB1c2luZyBiaW9faW92ZWNfaWR4KCkgKG9yIGJpby1cdTAwM2ViaV9pb3ZlY1tiaW8tXHUwMDNlYmlfaWR4XSksIHlvdVxuICAgIG5vdyB1c2UgYmlvX2l0ZXJfaW92ZWMoKSwgd2hpY2ggdGFrZXMgYSBidmVjX2l0ZXIgYW5kIHJldHVybnMgYVxuICAgIGxpdGVyYWwgc3RydWN0IGJpb192ZWMgLSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5IGZyb20gdGhlIHJhdyBiaW92ZWMgYnV0XG4tICAgdGFraW5nIGludG8gYWNjb3VudCBiaV9idmVjX2RvbmUgKGFuZCBiaV9zaXplKS5cbisgICB0YWtpbmcgaW50byBhY2NvdW50IGJpX29mZnNldCAoYW5kIGJpX3NpemUpLlxuIFxuICAqIGJpX3ZjbnQgY2FuJ3QgYmUgdHJ1c3RlZCBvciByZWxpZWQgdXBvbiBieSBkcml2ZXIgY29kZSAtIGkuZS4gYW55dGhpbmcgdGhhdFxuICAgIGRvZXNuJ3QgYWN0dWFsbHkgb3duIHRoZSBiaW8uIFRoZSByZWFzb24gaXMgdHdvZm9sZDogZmlyc3RseSwgaXQncyBub3RcbmRpZmYgLS1naXQgYS9ibG9jay9iaW8uYyBiL2Jsb2NrL2Jpby5jXG5pbmRleCA1MDAzODlmMzMyZDk5Li40MDc0YTA0OTZiOTNmIDEwMDY0NFxuLS0tIGEvYmxvY2svYmlvLmNcbisrKyBiL2Jsb2NrL2Jpby5jXG5AQCAtMjI5LDcgKzIyOSw3IEBAIHZvaWQgYmlvX2luaXQoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBzdHJ1Y3QgYmlvX3ZlYyAqdGFibGUsXG4gXHRiaW8tXHUwMDNlYmlfaXRlci5iaV9zZWN0b3IgPSAwO1xuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSA9IDA7XG4gXHRiaW8tXHUwMDNlYmlfaXRlci5iaV9pZHggPSAwO1xuLVx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lID0gMDtcbitcdGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldCA9IDA7XG4gXHRiaW8tXHUwMDNlYmlfZW5kX2lvID0gTlVMTDtcbiBcdGJpby1cdTAwM2ViaV9wcml2YXRlID0gTlVMTDtcbiAjaWZkZWYgQ09ORklHX0JMS19DR1JPVVBcbkBAIC0xMTg4LDcgKzExODgsNyBAQCB2b2lkIGJpb19pb3ZfYnZlY19zZXQoc3RydWN0IGJpbyAqYmlvLCBjb25zdCBzdHJ1Y3QgaW92X2l0ZXIgKml0ZXIpXG4gXG4gXHRiaW8tXHUwMDNlYmlfaW9fdmVjID0gKHN0cnVjdCBiaW9fdmVjICopaXRlci1cdTAwM2VidmVjO1xuIFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfaWR4ID0gMDtcbi1cdGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSA9IGl0ZXItXHUwMDNlaW92X29mZnNldDtcbitcdGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldCA9IGl0ZXItXHUwMDNlaW92X29mZnNldDtcbiBcdGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUgPSBpb3ZfaXRlcl9jb3VudChpdGVyKTtcbiBcdGJpb19zZXRfZmxhZyhiaW8sIEJJT19DTE9ORUQpO1xuIH1cbmRpZmYgLS1naXQgYS9ibG9jay9ibGstbWVyZ2UuYyBiL2Jsb2NrL2Jsay1tZXJnZS5jXG5pbmRleCBhYjExNjFjYTY5ZjFlLi4yNThhNzI2MDcxZDEyIDEwMDY0NFxuLS0tIGEvYmxvY2svYmxrLW1lcmdlLmNcbisrKyBiL2Jsb2NrL2Jsay1tZXJnZS5jXG5AQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYmlvX2dldF9sYXN0X2J2ZWMoc3RydWN0IGJpbyAqYmlvLCBzdHJ1Y3QgYmlvX3ZlYyAqYnYpXG4gXG4gXHRiaW9fYWR2YW5jZV9pdGVyKGJpbywgXHUwMDI2aXRlciwgaXRlci5iaV9zaXplKTtcbiBcbi1cdGlmICghaXRlci5iaV9idmVjX2RvbmUpXG4rXHRpZiAoIWl0ZXIuYmlfb2Zmc2V0KVxuIFx0XHRpZHggPSBpdGVyLmJpX2lkeCAtIDE7XG4gXHRlbHNlXHQvKiBpbiB0aGUgbWlkZGxlIG9mIGJ2ZWMgKi9cbiBcdFx0aWR4ID0gaXRlci5iaV9pZHg7XG5AQCAtNDEsMTEgKzQxLDExIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBiaW9fZ2V0X2xhc3RfYnZlYyhzdHJ1Y3QgYmlvICpiaW8sIHN0cnVjdCBiaW9fdmVjICpidilcbiBcdCpidiA9IGJpby1cdTAwM2ViaV9pb192ZWNbaWR4XTtcbiBcbiBcdC8qXG4tXHQgKiBpdGVyLmJpX2J2ZWNfZG9uZSByZWNvcmRzIGFjdHVhbCBsZW5ndGggb2YgdGhlIGxhc3QgYnZlY1xuK1x0ICogaXRlci5iaV9vZmZzZXQgcmVjb3JkcyBhY3R1YWwgbGVuZ3RoIG9mIHRoZSBsYXN0IGJ2ZWNcbiBcdCAqIGlmIHRoaXMgYmlvIGVuZHMgaW4gdGhlIG1pZGRsZSBvZiBvbmUgaW8gdmVjdG9yXG4gXHQgKi9cbi1cdGlmIChpdGVyLmJpX2J2ZWNfZG9uZSlcbi1cdFx0YnYtXHUwMDNlYnZfbGVuID0gaXRlci5iaV9idmVjX2RvbmU7XG4rXHRpZiAoaXRlci5iaV9vZmZzZXQpXG4rXHRcdGJ2LVx1MDAzZWJ2X2xlbiA9IGl0ZXIuYmlfb2Zmc2V0O1xuIH1cbiBcbiBzdGF0aWMgaW5saW5lIGJvb2wgYmlvX3dpbGxfZ2FwKHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLFxuZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay1tcS1kbWEuYyBiL2Jsb2NrL2Jsay1tcS1kbWEuY1xuaW5kZXggYmZkYjllZDcwNzQxMS4uODhmZDljYmM5NTFmNCAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay1tcS1kbWEuY1xuKysrIGIvYmxvY2svYmxrLW1xLWRtYS5jXG5AQCAtNDQsNyArNDQsNyBAQCBzdGF0aWMgYm9vbCBibGtfbWFwX2l0ZXJfbmV4dChzdHJ1Y3QgcmVxdWVzdCAqcmVxLCBzdHJ1Y3QgYmxrX21hcF9pdGVyICppdGVyLFxuIFx0ICogb25lIGNvdWxkIGJlIG1lcmdlZCBpbnRvIGl0LiAgVGhpcyB0eXBpY2FsbHkgaGFwcGVucyB3aGVuIG1vdmluZyB0b1xuIFx0ICogdGhlIG5leHQgYmlvLCBidXQgc29tZSBjYWxsZXJzIGFsc28gZG9uJ3QgcGFjayBidmVjcyB0aWdodC5cbiBcdCAqL1xuLVx0d2hpbGUgKCFpdGVyLVx1MDAzZWl0ZXIuYmlfc2l6ZSB8fCAhaXRlci1cdTAwM2VpdGVyLmJpX2J2ZWNfZG9uZSkge1xuK1x0d2hpbGUgKCFpdGVyLVx1MDAzZWl0ZXIuYmlfc2l6ZSB8fCAhaXRlci1cdTAwM2VpdGVyLmJpX29mZnNldCkge1xuIFx0XHRzdHJ1Y3QgYmlvX3ZlYyBuZXh0O1xuIFxuIFx0XHRpZiAoIV9fYmxrX21hcF9pdGVyX25leHQoaXRlcikpXG5kaWZmIC0tZ2l0IGEvYmxvY2svYmxrLmggYi9ibG9jay9ibGsuaFxuaW5kZXggZWFhYzA1ODE1Y2IwMy4uNTBhYmZkOTMyODg2MSAxMDA2NDRcbi0tLSBhL2Jsb2NrL2Jsay5oXG4rKysgYi9ibG9jay9ibGsuaFxuQEAgLTQwNiw3ICs0MDYsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYmlvX21heV9uZWVkX3NwbGl0KHN0cnVjdCBiaW8gKmJpbyxcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG4gXHRidiA9IF9fYnZlY19pdGVyX2J2ZWMoYmlvLVx1MDAzZWJpX2lvX3ZlYywgYmlvLVx1MDAzZWJpX2l0ZXIpO1xuLVx0aWYgKGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUgXHUwMDNlIGJ2LVx1MDAzZWJ2X2xlbiAtIGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZSlcbitcdGlmIChiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplIFx1MDAzZSBidi1cdTAwM2Vidl9sZW4gLSBiaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQpXG4gXHRcdHJldHVybiB0cnVlO1xuIFx0aWYgKChidi1cdTAwM2Vidl9vZmZzZXQgfCBidi1cdTAwM2Vidl9sZW4pIFx1MDAyNiBsaW0tXHUwMDNlZG1hX2FsaWdubWVudClcbiBcdFx0cmV0dXJuIHRydWU7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9sb29wLmMgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuaW5kZXggMjZkNzEzMGMzZjU1OS4uODYzOWZhMzRiODQ3MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svbG9vcC5jXG4rKysgYi9kcml2ZXJzL2Jsb2NrL2xvb3AuY1xuQEAgLTM3OSw3ICszNzksNyBAQCBzdGF0aWMgaW50IGxvX3J3X2FpbyhzdHJ1Y3QgbG9vcF9kZXZpY2UgKmxvLCBzdHJ1Y3QgbG9vcF9jbWQgKmNtZCxcbiBcdFx0aW92X2l0ZXJfYnZlYyhcdTAwMjZpdGVyLCBydyxcbiBcdFx0XHRfX2J2ZWNfaXRlcl9idmVjKHJxLVx1MDAzZWJpby1cdTAwM2ViaV9pb192ZWMsIHJxLVx1MDAzZWJpby1cdTAwM2ViaV9pdGVyKSxcbiBcdFx0XHRucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTtcbi1cdFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuK1x0XHRpdGVyLmlvdl9vZmZzZXQgPSBycS1cdTAwM2ViaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XG4gXHR9XG4gXHRhdG9taWNfc2V0KFx1MDAyNmNtZC1cdTAwM2VyZWYsIDIpO1xuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svemxvb3AuYyBiL2RyaXZlcnMvYmxvY2svemxvb3AuY1xuaW5kZXggNThlYzgxNjFiN2UyZi4uNDMyM2FjMTA4Y2FlOCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svemxvb3AuY1xuKysrIGIvZHJpdmVycy9ibG9jay96bG9vcC5jXG5AQCAtNTU1LDcgKzU1NSw3IEBAIHN0YXRpYyBpbnQgemxvb3BfZG9fcncoc3RydWN0IHpsb29wX2NtZCAqY21kKVxuIFx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIHJ3LFxuIFx0XHRcdF9fYnZlY19pdGVyX2J2ZWMocnEtXHUwMDNlYmlvLVx1MDAzZWJpX2lvX3ZlYywgcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIpLFxuIFx0XHRcdFx0XHRucl9idmVjLCBibGtfcnFfYnl0ZXMocnEpKTtcbi1cdFx0aXRlci5pb3Zfb2Zmc2V0ID0gcnEtXHUwMDNlYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuK1x0XHRpdGVyLmlvdl9vZmZzZXQgPSBycS1cdTAwM2ViaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XG4gXHR9XG4gXG4gXHRjbWQtXHUwMDNlaW9jYi5raV9wb3MgPSAoY21kLVx1MDAzZXNlY3RvciAtIHpvbmUtXHUwMDNlc3RhcnQpIFx1MDAzY1x1MDAzYyBTRUNUT1JfU0hJRlQ7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9tZC9kbS1pby1yZXdpbmQuYyBiL2RyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmNcbmluZGV4IDYxNTViMDExN2M5ZDYuLjA0ZjNmYzhhZWI2ZjkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXG4rKysgYi9kcml2ZXJzL21kL2RtLWlvLXJld2luZC5jXG5AQCAtMTYsMTIgKzE2LDEyIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkbV9idmVjX2l0ZXJfcmV3aW5kKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidixcbiBcdGludCBpZHg7XG4gXG4gXHRpdGVyLVx1MDAzZWJpX3NpemUgKz0gYnl0ZXM7XG4tXHRpZiAoYnl0ZXMgXHUwMDNjPSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSkge1xuLVx0XHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSAtPSBieXRlcztcbitcdGlmIChieXRlcyBcdTAwM2M9IGl0ZXItXHUwMDNlYmlfb2Zmc2V0KSB7XG4rXHRcdGl0ZXItXHUwMDNlYmlfb2Zmc2V0IC09IGJ5dGVzO1xuIFx0XHRyZXR1cm4gdHJ1ZTtcbiBcdH1cbiBcbi1cdGJ5dGVzIC09IGl0ZXItXHUwMDNlYmlfYnZlY19kb25lO1xuK1x0Ynl0ZXMgLT0gaXRlci1cdTAwM2ViaV9vZmZzZXQ7XG4gXHRpZHggPSBpdGVyLVx1MDAzZWJpX2lkeCAtIDE7XG4gXG4gXHR3aGlsZSAoaWR4IFx1MDAzZT0gMCBcdTAwMjZcdTAwMjYgYnl0ZXMgXHUwMDI2XHUwMDI2IGJ5dGVzIFx1MDAzZSBidltpZHhdLmJ2X2xlbikge1xuQEAgLTMyLDEzICszMiwxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgZG1fYnZlY19pdGVyX3Jld2luZChjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXG4gXHRpZiAoV0FSTl9PTkNFKGlkeCBcdTAwM2MgMCBcdTAwMjZcdTAwMjYgYnl0ZXMsXG4gXHRcdCAgICAgIFwiQXR0ZW1wdGVkIHRvIHJld2luZCBpdGVyIGJleW9uZCBidmVjJ3MgYm91bmRhcmllc1xcblwiKSkge1xuIFx0XHRpdGVyLVx1MDAzZWJpX3NpemUgLT0gYnl0ZXM7XG4tXHRcdGl0ZXItXHUwMDNlYmlfYnZlY19kb25lID0gMDtcbitcdFx0aXRlci1cdTAwM2ViaV9vZmZzZXQgPSAwO1xuIFx0XHRpdGVyLVx1MDAzZWJpX2lkeCA9IDA7XG4gXHRcdHJldHVybiBmYWxzZTtcbiBcdH1cbiBcbiBcdGl0ZXItXHUwMDNlYmlfaWR4ID0gaWR4O1xuLVx0aXRlci1cdTAwM2ViaV9idmVjX2RvbmUgPSBidltpZHhdLmJ2X2xlbiAtIGJ5dGVzO1xuK1x0aXRlci1cdTAwM2ViaV9vZmZzZXQgPSBidltpZHhdLmJ2X2xlbiAtIGJ5dGVzO1xuIFx0cmV0dXJuIHRydWU7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuYyBiL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xuaW5kZXggN2U5ODE4NzAxNDQ1MS4uOGY4ODE2ZTFjNTM5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbWQvZG0tcGNhY2hlL3NlZ21lbnQuY1xuKysrIGIvZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jXG5AQCAtMTQsNyArMTQsNyBAQCBpbnQgc2VnbWVudF9jb3B5X3RvX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsXG4gXG4gXHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIElURVJfREVTVCwgXHUwMDI2YmlvLVx1MDAzZWJpX2lvX3ZlY1tiaW8tXHUwMDNlYmlfaXRlci5iaV9pZHhdLFxuIFx0XHRcdGJpb19zZWdtZW50cyhiaW8pLCBiaW8tXHUwMDNlYmlfaXRlci5iaV9zaXplKTtcbi1cdGl0ZXIuaW92X29mZnNldCA9IGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZTtcbitcdGl0ZXIuaW92X29mZnNldCA9IGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldDtcbiBcdGlmIChiaW9fb2ZmKVxuIFx0XHRpb3ZfaXRlcl9hZHZhbmNlKFx1MDAyNml0ZXIsIGJpb19vZmYpO1xuIFxuQEAgLTM1LDcgKzM1LDcgQEAgaW50IHNlZ21lbnRfY29weV9mcm9tX2JpbyhzdHJ1Y3QgcGNhY2hlX3NlZ21lbnQgKnNlZ21lbnQsXG4gXG4gXHRpb3ZfaXRlcl9idmVjKFx1MDAyNml0ZXIsIElURVJfU09VUkNFLCBcdTAwMjZiaW8tXHUwMDNlYmlfaW9fdmVjW2Jpby1cdTAwM2ViaV9pdGVyLmJpX2lkeF0sXG4gXHRcdFx0YmlvX3NlZ21lbnRzKGJpbyksIGJpby1cdTAwM2ViaV9pdGVyLmJpX3NpemUpO1xuLVx0aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfYnZlY19kb25lO1xuK1x0aXRlci5pb3Zfb2Zmc2V0ID0gYmlvLVx1MDAzZWJpX2l0ZXIuYmlfb2Zmc2V0O1xuIFx0aWYgKGJpb19vZmYpXG4gXHRcdGlvdl9pdGVyX2FkdmFuY2UoXHUwMDI2aXRlciwgYmlvX29mZik7XG4gXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9udmRpbW0vYnR0LmMgYi9kcml2ZXJzL252ZGltbS9idHQuY1xuaW5kZXggN2UxMTEyOTYwZDdmOC4uNWQ5MTBhNjQ1MDNkMyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbnZkaW1tL2J0dC5jXG4rKysgYi9kcml2ZXJzL252ZGltbS9idHQuY1xuQEAgLTExNTUsNyArMTE1NSw3IEBAIHN0YXRpYyBpbnQgYnR0X3J3X2ludGVncml0eShzdHJ1Y3QgYnR0ICpidHQsIHN0cnVjdCBiaW9faW50ZWdyaXR5X3BheWxvYWQgKmJpcCxcbiBcdFx0YnYgPSBidmVjX2l0ZXJfYnZlYyhiaXAtXHUwMDNlYmlwX3ZlYywgYmlwLVx1MDAzZWJpcF9pdGVyKTtcbiBcdFx0LypcbiBcdFx0ICogVGhlICdidicgb2J0YWluZWQgZnJvbSBidmVjX2l0ZXJfYnZlYyBoYXMgaXRzIC5idl9sZW4gYW5kXG4tXHRcdCAqIC5idl9vZmZzZXQgYWxyZWFkeSBhZGp1c3RlZCBmb3IgaXRlci1cdTAwM2ViaV9idmVjX2RvbmUsIGFuZCB3ZVxuK1x0XHQgKiAuYnZfb2Zmc2V0IGFscmVhZHkgYWRqdXN0ZWQgZm9yIGl0ZXItXHUwMDNlYmlfb2Zmc2V0LCBhbmQgd2VcbiBcdFx0ICogY2FuIHVzZSB0aG9zZSBkaXJlY3RseVxuIFx0XHQgKi9cbiBcbmRpZmYgLS1naXQgYS9kcml2ZXJzL252bWUvaG9zdC90Y3AuYyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG5pbmRleCBiYTVjN2IzZTJhN2M2Li5jZTAzYTBlYTRkZWQ3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9udm1lL2hvc3QvdGNwLmNcbisrKyBiL2RyaXZlcnMvbnZtZS9ob3N0L3RjcC5jXG5AQCAtMzU3LDcgKzM1Nyw3IEBAIHN0YXRpYyB2b2lkIG52bWVfdGNwX2luaXRfaXRlcihzdHJ1Y3QgbnZtZV90Y3BfcmVxdWVzdCAqcmVxLFxuIFx0XHRpb3ZfaXRlcl9idmVjKFx1MDAyNnJlcS1cdTAwM2VpdGVyLCBkaXIsXG4gXHRcdFx0X19idmVjX2l0ZXJfYnZlYyhiaW8tXHUwMDNlYmlfaW9fdmVjLCBiaW8tXHUwMDNlYmlfaXRlciksIG5yX2J2ZWMsXG4gXHRcdFx0YmlvLVx1MDAzZWJpX2l0ZXIuYmlfc2l6ZSk7XG4tXHRcdHJlcS1cdTAwM2VpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmU7XG4rXHRcdHJlcS1cdTAwM2VpdGVyLmlvdl9vZmZzZXQgPSBiaW8tXHUwMDNlYmlfaXRlci5iaV9vZmZzZXQ7XG4gXHR9XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL21pc2MuaCBiL2ZzL2J0cmZzL21pc2MuaFxuaW5kZXggNjk0YmU2ZDA1NjJhNC4uODAyMDYwOTQzMTgwMSAxMDA2NDRcbi0tLSBhL2ZzL2J0cmZzL21pc2MuaFxuKysrIGIvZnMvYnRyZnMvbWlzYy5oXG5AQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBidmVjX2l0ZXIgaW5pdF9idmVjX2l0ZXJfZm9yX2JpbyhzdHJ1Y3QgYmlvICpiaW8pXG4gXHRcdC5iaV9zZWN0b3IgPSAwLFxuIFx0XHQuYmlfc2l6ZSA9IGJpb19zaXplLFxuIFx0XHQuYmlfaWR4ID0gMCxcbi1cdFx0LmJpX2J2ZWNfZG9uZSA9IDAsXG4rXHRcdC5iaV9vZmZzZXQgPSAwLFxuIFx0fTtcbiB9XG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9idmVjLmggYi9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxuaW5kZXggOTI4MzdlMjc0M2YxOS4uZmM1NjZlZTFjMWZmMSAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvYnZlYy5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L2J2ZWMuaFxuQEAgLTExMCw3ICsxMTAsNyBAQCBzdHJ1Y3QgYnZlY19pdGVyIHtcbiBcdC8qXG4gXHQgKiBDdXJyZW50IG9mZnNldCBpbiB0aGUgYnZlYyBlbnRyeSBwb2ludGVkIHRvIGJ5IGBiaV9pZHhgLlxuIFx0ICovXG4tXHR1bnNpZ25lZCBpbnRcdFx0YmlfYnZlY19kb25lO1xuK1x0dW5zaWduZWQgaW50XHRcdGJpX29mZnNldDtcbiB9IF9fcGFja2VkIF9fYWxpZ25lZCg0KTtcbiBcbiBzdHJ1Y3QgYnZlY19pdGVyX2FsbCB7XG5AQCAtMTM1LDE0ICsxMzUsMTQgQEAgbXBfYnZlY19pdGVyX3BhZ2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2ZWNzLCBjb25zdCBzdHJ1Y3QgYnZlY19pdGVyIGl0ZXIpXG4gc3RhdGljIF9fYWx3YXlzX2lubGluZSB1bnNpZ25lZCBpbnRcbiBtcF9idmVjX2l0ZXJfbGVuKGNvbnN0IHN0cnVjdCBiaW9fdmVjICpidmVjcywgY29uc3Qgc3RydWN0IGJ2ZWNfaXRlciBpdGVyKVxuIHtcbi1cdHJldHVybiBtaW4oX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfbGVuIC0gaXRlci5iaV9idmVjX2RvbmUsXG4rXHRyZXR1cm4gbWluKF9fYnZlY19pdGVyX2J2ZWMoYnZlY3MsIGl0ZXIpLVx1MDAzZWJ2X2xlbiAtIGl0ZXIuYmlfb2Zmc2V0LFxuIFx0XHRcdGl0ZXIuYmlfc2l6ZSk7XG4gfVxuIFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50XG4gbXBfYnZlY19pdGVyX29mZnNldChjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnZlY3MsIGNvbnN0IHN0cnVjdCBidmVjX2l0ZXIgaXRlcilcbiB7XG4tXHRyZXR1cm4gX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfb2Zmc2V0ICsgaXRlci5iaV9idmVjX2RvbmU7XG4rXHRyZXR1cm4gX19idmVjX2l0ZXJfYnZlYyhidmVjcywgaXRlciktXHUwMDNlYnZfb2Zmc2V0ICsgaXRlci5iaV9vZmZzZXQ7XG4gfVxuIFxuIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdW5zaWduZWQgaW50XG5AQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBidmVjX2l0ZXJfYWR2YW5jZShjb25zdCBzdHJ1Y3QgYmlvX3ZlYyAqYnYsXG4gXHR9XG4gXG4gXHRpdGVyLVx1MDAzZWJpX3NpemUgLT0gYnl0ZXM7XG4tXHRieXRlcyArPSBpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZTtcbitcdGJ5dGVzICs9IGl0ZXItXHUwMDNlYmlfb2Zmc2V0O1xuIFxuIFx0d2hpbGUgKGJ5dGVzIFx1MDAyNlx1MDAyNiBieXRlcyBcdTAwM2U9IGJ2W2lkeF0uYnZfbGVuKSB7XG4gXHRcdGJ5dGVzIC09IGJ2W2lkeF0uYnZfbGVuO1xuQEAgLTIxMiw3ICsyMTIsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0fVxuIFxuIFx0aXRlci1cdTAwM2ViaV9pZHggPSBpZHg7XG4tXHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IGJ5dGVzO1xuK1x0aXRlci1cdTAwM2ViaV9vZmZzZXQgPSBieXRlcztcbiBcdHJldHVybiB0cnVlO1xuIH1cbiBcbkBAIC0yMjMsMTMgKzIyMywxMyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYnZlY19pdGVyX2FkdmFuY2UoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIHN0YXRpYyBpbmxpbmUgdm9pZCBidmVjX2l0ZXJfYWR2YW5jZV9zaW5nbGUoY29uc3Qgc3RydWN0IGJpb192ZWMgKmJ2LFxuIFx0XHRcdFx0c3RydWN0IGJ2ZWNfaXRlciAqaXRlciwgdW5zaWduZWQgaW50IGJ5dGVzKVxuIHtcbi1cdHVuc2lnbmVkIGludCBkb25lID0gaXRlci1cdTAwM2ViaV9idmVjX2RvbmUgKyBieXRlcztcbitcdHVuc2lnbmVkIGludCBkb25lID0gaXRlci1cdTAwM2ViaV9vZmZzZXQgKyBieXRlcztcbiBcbiBcdGlmIChkb25lID09IGJ2W2l0ZXItXHUwMDNlYmlfaWR4XS5idl9sZW4pIHtcbiBcdFx0ZG9uZSA9IDA7XG4gXHRcdGl0ZXItXHUwMDNlYmlfaWR4Kys7XG4gXHR9XG4tXHRpdGVyLVx1MDAzZWJpX2J2ZWNfZG9uZSA9IGRvbmU7XG4rXHRpdGVyLVx1MDAzZWJpX29mZnNldCA9IGRvbmU7XG4gXHRpdGVyLVx1MDAzZWJpX3NpemUgLT0gYnl0ZXM7XG4gfVxuIFxuZGlmZiAtLWdpdCBhL2lvX3VyaW5nL25ldC5jIGIvaW9fdXJpbmcvbmV0LmNcbmluZGV4IGE3NGQxNWY3YjdkMmIuLjQzOWM5OWFkMTg4NDEgMTAwNjQ0XG4tLS0gYS9pb191cmluZy9uZXQuY1xuKysrIGIvaW9fdXJpbmcvbmV0LmNcbkBAIC0xNDcxLDcgKzE0NzEsNyBAQCBzdGF0aWMgaW50IGlvX3NnX2Zyb21faXRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIFx0XHRyZXR1cm4gemVyb2NvcHlfZmlsbF9za2JfZnJvbV9pdGVyKHNrYiwgZnJvbSwgbGVuZ3RoKTtcbiBcbiBcdGJpLmJpX3NpemUgPSBtaW4oZnJvbS1cdTAwM2Vjb3VudCwgbGVuZ3RoKTtcbi1cdGJpLmJpX2J2ZWNfZG9uZSA9IGZyb20tXHUwMDNlaW92X29mZnNldDtcbitcdGJpLmJpX29mZnNldCA9IGZyb20tXHUwMDNlaW92X29mZnNldDtcbiBcdGJpLmJpX2lkeCA9IDA7XG4gXG4gXHR3aGlsZSAoYmkuYmlfc2l6ZSBcdTAwMjZcdTAwMjYgZnJhZyBcdTAwM2MgTUFYX1NLQl9GUkFHUykge1xuQEAgLTE0OTAsNyArMTQ5MCw3IEBAIHN0YXRpYyBpbnQgaW9fc2dfZnJvbV9pdGVyKHN0cnVjdCBza19idWZmICpza2IsXG4gXHRmcm9tLVx1MDAzZWJ2ZWMgKz0gYmkuYmlfaWR4O1xuIFx0ZnJvbS1cdTAwM2Vucl9zZWdzIC09IGJpLmJpX2lkeDtcbiBcdGZyb20tXHUwMDNlY291bnQgLT0gY29waWVkO1xuLVx0ZnJvbS1cdTAwM2Vpb3Zfb2Zmc2V0ID0gYmkuYmlfYnZlY19kb25lO1xuK1x0ZnJvbS1cdTAwM2Vpb3Zfb2Zmc2V0ID0gYmkuYmlfb2Zmc2V0O1xuIFxuIFx0c2tiLVx1MDAzZWRhdGFfbGVuICs9IGNvcGllZDtcbiBcdHNrYi1cdTAwM2VsZW4gKz0gY29waWVkO1xuZGlmZiAtLWdpdCBhL2xpYi9pb3ZfaXRlci5jIGIvbGliL2lvdl9pdGVyLmNcbmluZGV4IDM0YTUyZTliYTllMWIuLjgxZTVjNWU1MTIxZjcgMTAwNjQ0XG4tLS0gYS9saWIvaW92X2l0ZXIuY1xuKysrIGIvbGliL2lvdl9pdGVyLmNcbkBAIC0xNjM0LDcgKzE2MzQsNyBAQCBzdGF0aWMgc3NpemVfdCBpb3ZfaXRlcl9leHRyYWN0X2J2ZWNfcGFnZXMoc3RydWN0IGlvdl9pdGVyICppLFxuIFx0fVxuIFx0YmkuYmlfaWR4ID0gMDtcbiBcdGJpLmJpX3NpemUgPSBtYXhzaXplO1xuLVx0YmkuYmlfYnZlY19kb25lID0gc2tpcDtcbitcdGJpLmJpX29mZnNldCA9IHNraXA7XG4gXG4gXHRtYXhwYWdlcyA9IHdhbnRfcGFnZXNfYXJyYXkocGFnZXMsIG1heHNpemUsIHNraXAsIG1heHBhZ2VzKTtcbiBcdGlmICghbWF4cGFnZXMpXG5kaWZmIC0tZ2l0IGEvbmV0L2NlcGgvbWVzc2VuZ2VyLmMgYi9uZXQvY2VwaC9tZXNzZW5nZXIuY1xuaW5kZXggMzRiMzA5N2I0YzdiOS4uOWMxYjZjZjhjMzZmZSAxMDA2NDRcbi0tLSBhL25ldC9jZXBoL21lc3Nlbmdlci5jXG4rKysgYi9uZXQvY2VwaC9tZXNzZW5nZXIuY1xuQEAgLTc2Miw3ICs3NjIsNyBAQCBzdGF0aWMgYm9vbCBjZXBoX21zZ19kYXRhX2Jpb19hZHZhbmNlKHN0cnVjdCBjZXBoX21zZ19kYXRhX2N1cnNvciAqY3Vyc29yLFxuIFx0aWYgKCFjdXJzb3ItXHUwMDNlcmVzaWQpXG4gXHRcdHJldHVybiBmYWxzZTsgICAvKiBubyBtb3JlIGRhdGEgKi9cbiBcbi1cdGlmICghYnl0ZXMgfHwgKGl0LVx1MDAzZWl0ZXIuYmlfc2l6ZSBcdTAwMjZcdTAwMjYgaXQtXHUwMDNlaXRlci5iaV9idmVjX2RvbmUgXHUwMDI2XHUwMDI2XG4rXHRpZiAoIWJ5dGVzIHx8IChpdC1cdTAwM2VpdGVyLmJpX3NpemUgXHUwMDI2XHUwMDI2IGl0LVx1MDAzZWl0ZXIuYmlfb2Zmc2V0IFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICAgcGFnZSA9PSBiaW9faXRlcl9wYWdlKGl0LVx1MDAzZWJpbywgaXQtXHUwMDNlaXRlcikpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXG4gXG5AQCAtODE3LDcgKzgxNyw3IEBAIHN0YXRpYyBib29sIGNlcGhfbXNnX2RhdGFfYnZlY3NfYWR2YW5jZShzdHJ1Y3QgY2VwaF9tc2dfZGF0YV9jdXJzb3IgKmN1cnNvcixcbiBcdGlmICghY3Vyc29yLVx1MDAzZXJlc2lkKVxuIFx0XHRyZXR1cm4gZmFsc2U7ICAgLyogbm8gbW9yZSBkYXRhICovXG4gXG4tXHRpZiAoIWJ5dGVzIHx8IChjdXJzb3ItXHUwMDNlYnZlY19pdGVyLmJpX2J2ZWNfZG9uZSBcdTAwMjZcdTAwMjZcbitcdGlmICghYnl0ZXMgfHwgKGN1cnNvci1cdTAwM2VidmVjX2l0ZXIuYmlfb2Zmc2V0IFx1MDAyNlx1MDAyNlxuIFx0XHQgICAgICAgcGFnZSA9PSBidmVjX2l0ZXJfcGFnZShidmVjcywgY3Vyc29yLVx1MDAzZWJ2ZWNfaXRlcikpKVxuIFx0XHRyZXR1cm4gZmFsc2U7XHQvKiBtb3JlIGJ5dGVzIHRvIHByb2Nlc3MgaW4gdGhpcyBzZWdtZW50ICovXG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMzoyNTo0Mi4xNjk4NTI4NDNaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MDc0NTg4NjY4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFB1cmUgUmVuYW1lOiBgYmlfYnZlY19kb25lYCB0byBgYmlfb2Zmc2V0YCoqXG5cbk9rYXksIGhlcmUncyB0aGUgZGVhbC4gSSd2ZSBnb3QgdGhpcyBwYXRjaCBpbiBmcm9udCBvZiBtZSwgYW5kIGl0J3MgYWxsIGFib3V0IHJlbmFtaW5nIGEgbWVtYmVyIGluIHRoZSBgc3RydWN0IGJ2ZWNfaXRlcmAuIFNwZWNpZmljYWxseSwgdGhleSdyZSBzd2FwcGluZyBvdXQgYGJpX2J2ZWNfZG9uZWAgZm9yIGBiaV9vZmZzZXRgLiBOb3csIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJwdXJlbHkgbWVjaGFuaWNhbCwgbm8gZnVuY3Rpb25hbCBjaGFuZ2UsIHJpZ2h0P1wiLiBMZXQncyB2ZXJpZnkgdGhhdC5cblxuSSdtIHNjYW5uaW5nIHRoZSBkaWZmLiBJIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IGBiaW8tXHUwMDNlYmlfaXRlci5iaV9idmVjX2RvbmVgIGJlY29tZXMgYGJpby1cdTAwM2ViaV9pdGVyLmJpX29mZnNldGAsIHRoZSBzYW1lIGZvciBgaXRlci5iaV9idmVjX2RvbmVgLCBgcmVxLVx1MDAzZWl0ZXIuaW92X29mZnNldCA9IGJpby1cdTAwM2ViaV9pdGVyLmJpX2J2ZWNfZG9uZWAgYW5kIGBiaS5iaV9idmVjX2RvbmVgLiBBbmQsIG9mIGNvdXJzZSwgdGhlIHN0cnVjdCBkZWZpbml0aW9uIGl0c2VsZjogYGJpX2J2ZWNfZG9uZWAgaXMgbm93IGBiaV9vZmZzZXRgLiBUaGlzIGNvbmZpcm1zIG15IGluaXRpYWwgc3VzcGljaW9uIC0gaXQncyBqdXN0IGEgcmVuYW1lLiBObyBuZXcgZnVuY3Rpb25hbGl0eS5cblxuYGBgY1xuQEAgLTExMCw3ICsxMTAsNyBAQCBzdHJ1Y3QgYnZlY19pdGVyIHtcbiBcdC8qXG4gXHQgKiBDdXJyZW50IG9mZnNldCBpbiB0aGUgYnZlYyBlbnRyeSBwb2ludGVkIHRvIGJ5IGBiaV9pZHhgLlxuIFx0ICovXG4tXHR1bnNpZ25lZCBpbnRcdFx0YmlfYnZlY19kb25lO1xuK1x0dW5zaWduZWQgaW50XHRcdGJpX29mZnNldDtcbiB9IF9fcGFja2VkIF9fYWxpZ25lZCg0KTtcbiBgYGBcblxuR2l2ZW4gdGhpcyBpcyBwdXJlbHkgYSBjaGFuZ2Ugb2YgbmFtZSBhbmQgdGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uYWxpdHkgaXRzZWxmLCB0aGUgcGF0Y2ggaXMgYSBuby1vcCwgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3Nlcy5cblxuQnV0IHdhaXQsIEkgbmVlZCB0byBkb3VibGUtY2hlY2suIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoZXJlIGFyZSBubyBoaWRkZW4gaW50ZXJhY3Rpb25zLiBJJ2xsIHF1aWNrbHkgbG9vayB0aHJvdWdoIHRoZSByZXN0IG9mIHRoZSBkaWZmIGZvciBhbnkgcmVkIGZsYWdzLiBPa2F5LCBJIHNlZSB0aGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgYmVlbiB0b3VjaGVkOiBgRG9jdW1lbnRhdGlvbi9ibG9jay9iaW92ZWNzLnJzdGAsIGBibG9jay9iaW8uY2AsIGBibG9jay9ibGstbWVyZ2UuY2AsIGBibG9jay9ibGstbXEtZG1hLmNgLCBgYmxvY2svYmxrLmhgLCBgZHJpdmVycy9ibG9jay9sb29wLmNgLCBgZHJpdmVycy9ibG9jay96bG9vcC5jYCwgYGRyaXZlcnMvbWQvZG0taW8tcmV3aW5kLmNgLCBgZHJpdmVycy9tZC9kbS1wY2FjaGUvc2VnbWVudC5jYCwgYGRyaXZlcnMvbnZkaW1tL2J0dC5jYCwgYGRyaXZlcnMvbnZtZS9ob3N0L3RjcC5jYCwgYGZzL2J0cmZzL21pc2MuaGAsIGBpbmNsdWRlL2xpbnV4L2J2ZWMuaGAsIGBpb191cmluZy9uZXQuY2AsIGBsaWIvaW92X2l0ZXIuY2AsIGBuZXQvY2VwaC9tZXNzZW5nZXIuY2AuXG5cblllcCwgaXQncyBqdXN0IHRoZSByZW5hbWUgcHJvcGFnYXRlZCB0aHJvdWdob3V0IHRoZSBjb2RlYmFzZSwgYW5kIHNvbWUgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIChhbmQgYSBjb21tZW50KS4gTm90aGluZyBlbHNlLiBUaGlzIGlzIGEgY2xlYW4gcmVuYW1lLCBhIHNhZmUgcmVuYW1lLCBhbmQgZG9lc24ndCBjaGFuZ2Ugd2hhdCB0aGUgc29mdHdhcmUgKmRvZXMqLlxuXG5UaGVyZWZvcmUsIEknbSBjb25maWRlbnQgaW4gc2V0dGluZyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBhIG5vbi1mdW5jdGlvbmFsIGNoYW5nZSwgYW5kIG5vdCB3b3J0aCBteSBhdHRlbnRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MTksIk91dHB1dFRva2VucyI6NzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NzgsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxMzoyNTo1MC4yNDQ0NDMyNDFaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IG1lY2hhbmljYWwgcmVuYW1lIG9mIHRoZSBgYmlfYnZlY19kb25lYCBtZW1iZXIgdG8gYGJpX29mZnNldGAgaW4gYHN0cnVjdCBidmVjX2l0ZXJgIGFjcm9zcyB0aGUga2VybmVsLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBtZWNoYW5pY2FsIHJlbmFtZSBvZiB0aGUgYGJpX2J2ZWNfZG9uZWAgbWVtYmVyIHRvIGBiaV9vZmZzZXRgIGluIGBzdHJ1Y3QgYnZlY19pdGVyYCBhY3Jvc3MgdGhlIGtlcm5lbC4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowk9d8z[1] Phase: Running StartedAt: 2026-08-06 13:26:01 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowk9d8z[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-06 13:26:01 +0000 UTC FinishedAt: 2026-08-06 13:26:06 +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,}