Name: series-workflowchl44 Phase: Failed StartedAt: 2026-08-03 06:37:53 +0000 UTC FinishedAt: 2026-08-03 06:53:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchl44[0] Phase: Succeeded StartedAt: 2026-08-03 06:37:53 +0000 UTC FinishedAt: 2026-08-03 06:53:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchl44[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 06:37:53 +0000 UTC FinishedAt: 2026-08-03 06:53:06 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZmIwMjE5MGIyMTJjMmVlZjJiMzFiYmY0NDdlNjUxNzgzNjgxZTgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo1Mjo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxuaW5kZXggYTZiZDNmZTY0MjNhZC4uYmQwMjczNzdkZmY2ZSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3RcbkBAIC0xOTksNiAmIzQzOzE5OSw3IEBAIFVzYWdlXG4gXHRcdC1wXHRcdFNvcnQgYnkgcGlkLlxuIFx0XHQtUFx0XHRTb3J0IGJ5IHRnaWQuXG4gXHRcdC1uXHRcdFNvcnQgYnkgdGFzayBjb21tYW5kIG5hbWUuXG4mIzQzO1x0XHQtTVx0XHRTb3J0IGJ5IG1vZHVsZSBuYW1lLlxuIFx0XHQtclx0XHRTb3J0IGJ5IG1lbW9yeSByZWxlYXNlIHRpbWUuXG4gXHRcdC1zXHRcdFNvcnQgYnkgc3RhY2sgdHJhY2UuXG4gXHRcdC10XHRcdFNvcnQgYnkgdGltZXMgKGRlZmF1bHQpLlxuQEAgLTI0MCw4ICYjNDM7MjQxLDEwIEBAIFVzYWdlXG4gXHRcdFx0XHRcdGdyb3VwIElEIG51bWJlcnMgYXBwZWFyIGluIFx1MDAzY3RnaWRsaXN0XHUwMDNlLlxuIFx0XHQtLW5hbWUgXHUwMDNjY21kbGlzdFx1MDAzZVx0U2VsZWN0IGJ5IHRhc2sgY29tbWFuZCBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlIGJsb2NrcyB3aG9zZVxuIFx0XHRcdFx0XHR0YXNrIGNvbW1hbmQgbmFtZSBhcHBlYXIgaW4gXHUwMDNjY21kbGlzdFx1MDAzZS5cbiYjNDM7XHRcdC0tbW9kdWxlIFx1MDAzY21vZGxpc3RcdTAwM2VcdFNlbGVjdCBieSBtb2R1bGUgbmFtZS4gVGhpcyBzZWxlY3RzIHRoZSBibG9ja3Mgd2hvc2VcbiYjNDM7XHRcdFx0XHRcdG1vZHVsZSBuYW1lIGFwcGVhciBpbiBcdTAwM2Ntb2RsaXN0XHUwMDNlLlxuIFxuLVx0XHRcdTAwM2NwaWRsaXN0XHUwMDNlLCBcdTAwM2N0Z2lkbGlzdFx1MDAzZSwgXHUwMDNjY21kbGlzdFx1MDAzZSBhcmUgc2luZ2xlIGFyZ3VtZW50cyBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LFxuJiM0MztcdFx0XHUwMDNjcGlkbGlzdFx1MDAzZSwgXHUwMDNjdGdpZGxpc3RcdTAwM2UsIFx1MDAzY2NtZGxpc3RcdTAwM2UsIFx1MDAzY21vZGxpc3RcdTAwM2UgYXJlIHNpbmdsZSBhcmd1bWVudHMgaW4gdGhlIGZvcm0gb2YgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCxcbiBcdFx0d2hpY2ggb2ZmZXJzIGEgd2F5IHRvIHNwZWNpZnkgaW5kaXZpZHVhbCBzZWxlY3RpbmcgcnVsZXMuXG4gXG4gXG5AQCAtMjQ5LDYgJiM0MzsyNTIsNyBAQCBVc2FnZVxuIFx0XHRcdFx0Li9wYWdlX293bmVyX3NvcnQgXHUwMDNjaW5wdXRcdTAwM2UgXHUwMDNjb3V0cHV0XHUwMDNlIC0tcGlkPTFcbiBcdFx0XHRcdC4vcGFnZV9vd25lcl9zb3J0IFx1MDAzY2lucHV0XHUwMDNlIFx1MDAzY291dHB1dFx1MDAzZSAtLXRnaWQ9MSwyLDNcbiBcdFx0XHRcdC4vcGFnZV9vd25lcl9zb3J0IFx1MDAzY2lucHV0XHUwMDNlIFx1MDAzY291dHB1dFx1MDAzZSAtLW5hbWUgbmFtZTEsbmFtZTJcbiYjNDM7XHRcdFx0XHQuL3BhZ2Vfb3duZXJfc29ydCBcdTAwM2NpbnB1dFx1MDAzZSBcdTAwM2NvdXRwdXRcdTAwM2UgLS1tb2R1bGUgeGZzLGV4dDRcbiBcbiBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuID09PT09PT09PT09PT09PT09PT09PT09PT09XG5AQCAtMjY1LDYgJiM0MzsyNjksNyBAQCBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuIFx0ZnRcdFx0ZnJlZV90c1x0XHR0aW1lc3RhbXAgb2YgdGhlIHBhZ2Ugd2hlbiBpdCB3YXMgcmVsZWFzZWRcbiBcdGF0XHRcdGFsbG9jX3RzXHR0aW1lc3RhbXAgb2YgdGhlIHBhZ2Ugd2hlbiBpdCB3YXMgYWxsb2NhdGVkXG4gXHRhdG9yXHRcdGFsbG9jYXRvclx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcbiYjNDM7XHRtb2RcdFx0bW9kdWxlXHRcdGtlcm5lbCBtb2R1bGUgbmFtZVxuIFxuICAgRm9yIC0tY3VsbCBvcHRpb246XG4gXG5AQCAtMjc1LDYgJiM0MzsyODAsNyBAQCBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuIFx0Zlx0XHRmcmVlXHRcdHdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVsZWFzZWQgb3Igbm90XG4gXHRzdFx0XHRzdGFja3RyYWNlXHRzdGFjayB0cmFjZSBvZiB0aGUgcGFnZSBhbGxvY2F0aW9uXG4gXHRhdG9yXHRcdGFsbG9jYXRvclx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcbiYjNDM7XHRtb2RcdFx0bW9kdWxlXHRcdGtlcm5lbCBtb2R1bGUgbmFtZVxuIFxuIEZpbHRlcmluZyBwYWdlX293bmVyIG91dHB1dFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmRpZmYgLS1naXQgYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXG5pbmRleCAzNWQzZDI1NDk0MWM5Li5jNWJjM2I1MjRjMGE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXG5AQCAtMjUsMTEgJiM0MzsyNSwxMyBAQFxuICNpbmNsdWRlIFx1MDAzY2dldG9wdC5oXHUwMDNlXG4gXG4gI2RlZmluZSBUQVNLX0NPTU1fTEVOIDE2XG4mIzQzOyNkZWZpbmUgTU9EVUxFX05BTUVfTEVOIDY0XG4gXG4gc3RydWN0IGJsb2NrX2xpc3Qge1xuIFx0Y2hhciAqdHh0O1xuIFx0Y2hhciAqY29tbTsgLy8gdGFzayBjb21tYW5kIG5hbWVcbiBcdGNoYXIgKnN0YWNrdHJhY2U7XG4mIzQzO1x0Y2hhciAqbW9kdWxlOyAvLyBrZXJuZWwgbW9kdWxlIG5hbWVcbiBcdF9fdTY0IHRzX25zZWM7XG4gXHRpbnQgbGVuO1xuIFx0aW50IG51bTtcbkBAIC00MSw3ICYjNDM7NDMsOCBAQCBzdHJ1Y3QgYmxvY2tfbGlzdCB7XG4gZW51bSBGSUxURVJfQklUIHtcbiBcdEZJTFRFUl9QSUQgPSAxXHUwMDNjXHUwMDNjMSxcbiBcdEZJTFRFUl9UR0lEID0gMVx1MDAzY1x1MDAzYzIsXG4tXHRGSUxURVJfQ09NTSA9IDFcdTAwM2NcdTAwM2MzXG4mIzQzO1x0RklMVEVSX0NPTU0gPSAxXHUwMDNjXHUwMDNjMyxcbiYjNDM7XHRGSUxURVJfTU9EVUxFID0gMVx1MDAzY1x1MDAzYzRcbiB9O1xuIFxuIGVudW0gRklMVEVSX1JFU1VMVCB7XG5AQCAtNTUsNyAmIzQzOzU4LDggQEAgZW51bSBDVUxMX0JJVCB7XG4gXHRDVUxMX1RHSUQgPSAxXHUwMDNjXHUwMDNjMixcbiBcdENVTExfQ09NTSA9IDFcdTAwM2NcdTAwM2MzLFxuIFx0Q1VMTF9TVEFDS1RSQUNFID0gMVx1MDAzY1x1MDAzYzQsXG4tXHRDVUxMX0FMTE9DQVRPUiA9IDFcdTAwM2NcdTAwM2M1XG4mIzQzO1x0Q1VMTF9BTExPQ0FUT1IgPSAxXHUwMDNjXHUwMDNjNSxcbiYjNDM7XHRDVUxMX01PRFVMRSA9IDFcdTAwM2NcdTAwM2M2XG4gfTtcbiBlbnVtIEFMTE9DQVRPUl9CSVQge1xuIFx0QUxMT0NBVE9SX0NNQSA9IDFcdTAwM2NcdTAwM2MxLFxuQEAgLTY1LDcgJiM0Mzs2OSw4IEBAIGVudW0gQUxMT0NBVE9SX0JJVCB7XG4gfTtcbiBlbnVtIEFSR19UWVBFIHtcbiBcdEFSR19UWFQsIEFSR19DT01NLCBBUkdfU1RBQ0tUUkFDRSwgQVJHX0FMTE9DX1RTLCBBUkdfQ1VMTF9USU1FLFxuLVx0QVJHX1BBR0VfTlVNLCBBUkdfUElELCBBUkdfVEdJRCwgQVJHX1VOS05PV04sIEFSR19BTExPQ0FUT1JcbiYjNDM7XHRBUkdfUEFHRV9OVU0sIEFSR19QSUQsIEFSR19UR0lELCBBUkdfVU5LTk9XTiwgQVJHX0FMTE9DQVRPUixcbiYjNDM7XHRBUkdfTU9EVUxFXG4gfTtcbiBlbnVtIFNPUlRfT1JERVIge1xuIFx0U09SVF9BU0MgPSAxLFxuQEAgLTc5LDE1ICYjNDM7ODQsMTggQEAgZW51bSBDT01QX0ZMQUcge1xuIFx0Q09NUF9TVEFDSyA9IDFcdTAwM2NcdTAwM2MzLFxuIFx0Q09NUF9OVU0gPSAxXHUwMDNjXHUwMDNjNCxcbiBcdENPTVBfVEdJRCA9IDFcdTAwM2NcdTAwM2M1LFxuLVx0Q09NUF9DT01NID0gMVx1MDAzY1x1MDAzYzZcbiYjNDM7XHRDT01QX0NPTU0gPSAxXHUwMDNjXHUwMDNjNixcbiYjNDM7XHRDT01QX01PRFVMRSA9IDFcdTAwM2NcdTAwM2M3XG4gfTtcbiBzdHJ1Y3QgZmlsdGVyX2NvbmRpdGlvbiB7XG4gXHRwaWRfdCAqcGlkcztcbiBcdHBpZF90ICp0Z2lkcztcbiBcdGNoYXIgKipjb21tcztcbiYjNDM7XHRjaGFyICoqbW9kdWxlcztcbiBcdGludCBwaWRzX3NpemU7XG4gXHRpbnQgdGdpZHNfc2l6ZTtcbiBcdGludCBjb21tc19zaXplO1xuJiM0MztcdGludCBtb2R1bGVzX3NpemU7XG4gfTtcbiBzdHJ1Y3Qgc29ydF9jb25kaXRpb24ge1xuIFx0aW50ICgqKmNtcHMpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTtcbkBAIC0xMDEsNiAmIzQzOzEwOSw3IEBAIHN0YXRpYyByZWdleF90IHBpZF9wYXR0ZXJuO1xuIHN0YXRpYyByZWdleF90IHRnaWRfcGF0dGVybjtcbiBzdGF0aWMgcmVnZXhfdCBjb21tX3BhdHRlcm47XG4gc3RhdGljIHJlZ2V4X3QgdHNfbnNlY19wYXR0ZXJuO1xuJiM0MztzdGF0aWMgcmVnZXhfdCBtb2R1bGVfcGF0dGVybjtcbiBzdGF0aWMgc3RydWN0IGJsb2NrX2xpc3QgKmxpc3Q7XG4gc3RhdGljIGludCBsaXN0X3NpemU7XG4gc3RhdGljIGludCBtYXhfc2l6ZTtcbkBAIC0xODQsNiAmIzQzOzE5MywxMyBAQCBzdGF0aWMgaW50IGNvbXBhcmVfY29tbShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4gXHRyZXR1cm4gc3RyY21wKGwxLVx1MDAzZWNvbW0sIGwyLVx1MDAzZWNvbW0pO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBjb21wYXJlX21vZHVsZShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgYmxvY2tfbGlzdCAqbDEgPSBwMSwgKmwyID0gcDI7XG4mIzQzO1xuJiM0MztcdHJldHVybiBzdHJjbXAobDEtXHUwMDNlbW9kdWxlLCBsMi1cdTAwM2Vtb2R1bGUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgY29tcGFyZV90cyhjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGJsb2NrX2xpc3QgKmwxID0gcDEsICpsMiA9IHAyO1xuQEAgLTIwNyw2ICYjNDM7MjIzLDggQEAgc3RhdGljIGludCBjb21wYXJlX2N1bGxfY29uZGl0aW9uKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMilcbiBcdFx0cmV0dXJuIGNvbXBhcmVfdGdpZChwMSwgcDIpO1xuIFx0aWYgKChjdWxsIFx1MDAyNiBDVUxMX0NPTU0pIFx1MDAyNlx1MDAyNiBjb21wYXJlX2NvbW0ocDEsIHAyKSlcbiBcdFx0cmV0dXJuIGNvbXBhcmVfY29tbShwMSwgcDIpO1xuJiM0MztcdGlmICgoY3VsbCBcdTAwMjYgQ1VMTF9NT0RVTEUpIFx1MDAyNlx1MDAyNiBjb21wYXJlX21vZHVsZShwMSwgcDIpKVxuJiM0MztcdFx0cmV0dXJuIGNvbXBhcmVfbW9kdWxlKHAxLCBwMik7XG4gXHRpZiAoKGN1bGwgXHUwMDI2IENVTExfQUxMT0NBVE9SKSBcdTAwMjZcdTAwMjYgY29tcGFyZV9hbGxvY2F0b3IocDEsIHAyKSlcbiBcdFx0cmV0dXJuIGNvbXBhcmVfYWxsb2NhdG9yKHAxLCBwMik7XG4gXHRyZXR1cm4gMDtcbkBAIC00MTEsOSAmIzQzOzQyOSwzMyBAQCBzdGF0aWMgY2hhciAqZ2V0X2NvbW0oY2hhciAqYnVmKVxuIFx0cmV0dXJuIGNvbW1fc3RyO1xuIH1cbiBcbiYjNDM7c3RhdGljIGNoYXIgKmdldF9tb2R1bGUoY2hhciAqYnVmKVxuJiM0Mzt7XG4mIzQzO1x0Y2hhciAqbW9kdWxlX3N0ciA9IG1hbGxvYyhNT0RVTEVfTkFNRV9MRU4pO1xuJiM0MztcdHJlZ21hdGNoX3QgcG1hdGNoWzJdO1xuJiM0MztcdGludCB2YWxfbGVuO1xuJiM0MztcbiYjNDM7XHRpZiAoIW1vZHVsZV9zdHIpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRtZW1zZXQobW9kdWxlX3N0ciwgMCwgTU9EVUxFX05BTUVfTEVOKTtcbiYjNDM7XHRpZiAocmVnZXhlYyhcdTAwMjZtb2R1bGVfcGF0dGVybiwgYnVmLCAyLCBwbWF0Y2gsIFJFR19OT1RCT0wpICE9IDAgfHwgcG1hdGNoWzFdLnJtX3NvID09IC0xKSB7XG4mIzQzO1x0XHRzdHJjcHkobW9kdWxlX3N0ciwgXCYjMzQ7dm1saW51eFwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gbW9kdWxlX3N0cjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHZhbF9sZW4gPSBwbWF0Y2hbMV0ucm1fZW8gLSBwbWF0Y2hbMV0ucm1fc287XG4mIzQzO1x0aWYgKChzaXplX3QpdmFsX2xlbiBcdTAwM2U9IE1PRFVMRV9OQU1FX0xFTilcbiYjNDM7XHRcdHZhbF9sZW4gPSBNT0RVTEVfTkFNRV9MRU4gLSAxO1xuJiM0MztcdG1lbWNweShtb2R1bGVfc3RyLCBidWYgJiM0MzsgcG1hdGNoWzFdLnJtX3NvLCB2YWxfbGVuKTtcbiYjNDM7XHRtb2R1bGVfc3RyW3ZhbF9sZW5dID0gJiMzOTtcXDAmIzM5OztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1vZHVsZV9zdHI7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZnJlZV9ibG9ja19saXN0KHN0cnVjdCBibG9ja19saXN0ICpibG9jaylcbiB7XG4gXHRmcmVlKGJsb2NrLVx1MDAzZWNvbW0pO1xuJiM0MztcdGZyZWUoYmxvY2stXHUwMDNlbW9kdWxlKTtcbiBcdGZyZWUoYmxvY2stXHUwMDNldHh0KTtcbiB9XG4gXG5AQCAtNDMzLDYgJiM0Mzs0NzUsOCBAQCBzdGF0aWMgaW50IGdldF9hcmdfdHlwZShjb25zdCBjaGFyICphcmcpXG4gXHRcdHJldHVybiBBUkdfQUxMT0NfVFM7XG4gXHRlbHNlIGlmICghc3RyY21wKGFyZywgXCYjMzQ7YWxsb2NhdG9yXCYjMzQ7KSB8fCAhc3RyY21wKGFyZywgXCYjMzQ7YXRvclwmIzM0OykpXG4gXHRcdHJldHVybiBBUkdfQUxMT0NBVE9SO1xuJiM0MztcdGVsc2UgaWYgKCFzdHJjbXAoYXJnLCBcJiMzNDttb2R1bGVcJiMzNDspIHx8ICFzdHJjbXAoYXJnLCBcJiMzNDttb2RcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuIEFSR19NT0RVTEU7XG4gXHRlbHNlIHtcbiBcdFx0cmV0dXJuIEFSR19VTktOT1dOO1xuIFx0fVxuQEAgLTQ4MywyNSAmIzQzOzUyNywzNiBAQCBzdGF0aWMgYm9vbCBtYXRjaF9zdHJfbGlzdChjb25zdCBjaGFyICpzdHIsIGNoYXIgKipsaXN0LCBpbnQgbGlzdF9zaXplKVxuIFxuIHN0YXRpYyBlbnVtIEZJTFRFUl9SRVNVTFQgZmlsdGVyX3JlY29yZChjaGFyICpidWYpXG4ge1xuLVx0Y2hhciAqY29tbTtcbiYjNDM7XHRjaGFyICpjb21tLCAqbW9kdWxlO1xuIFxuIFx0aWYgKChmaWx0ZXIgXHUwMDI2IEZJTFRFUl9QSUQpIFx1MDAyNlx1MDAyNiAhbWF0Y2hfbnVtX2xpc3QoZ2V0X3BpZChidWYpLCBmYy5waWRzLCBmYy5waWRzX3NpemUpKVxuIFx0XHRyZXR1cm4gRklMVEVSX1NLSVA7XG4gXHRpZiAoKGZpbHRlciBcdTAwMjYgRklMVEVSX1RHSUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQhbWF0Y2hfbnVtX2xpc3QoZ2V0X3RnaWQoYnVmKSwgZmMudGdpZHMsIGZjLnRnaWRzX3NpemUpKVxuIFx0XHRyZXR1cm4gRklMVEVSX1NLSVA7XG4tXHRpZiAoIShmaWx0ZXIgXHUwMDI2IEZJTFRFUl9DT01NKSlcbiYjNDM7XHRpZiAoIShmaWx0ZXIgXHUwMDI2IChGSUxURVJfQ09NTSB8IEZJTFRFUl9NT0RVTEUpKSlcbiBcdFx0cmV0dXJuIEZJTFRFUl9NQVRDSDtcbiBcbi1cdGNvbW0gPSBnZXRfY29tbShidWYpO1xuLVx0aWYgKCFjb21tKVxuLVx0XHRyZXR1cm4gRklMVEVSX0VSUk9SO1xuLVxuLVx0aWYgKCFtYXRjaF9zdHJfbGlzdChjb21tLCBmYy5jb21tcywgZmMuY29tbXNfc2l6ZSkpIHtcbiYjNDM7XHRpZiAoZmlsdGVyIFx1MDAyNiBGSUxURVJfQ09NTSkge1xuJiM0MztcdFx0Y29tbSA9IGdldF9jb21tKGJ1Zik7XG4mIzQzO1x0XHRpZiAoIWNvbW0pXG4mIzQzO1x0XHRcdHJldHVybiBGSUxURVJfRVJST1I7XG4mIzQzO1x0XHRpZiAoIW1hdGNoX3N0cl9saXN0KGNvbW0sIGZjLmNvbW1zLCBmYy5jb21tc19zaXplKSkge1xuJiM0MztcdFx0XHRmcmVlKGNvbW0pO1xuJiM0MztcdFx0XHRyZXR1cm4gRklMVEVSX1NLSVA7XG4mIzQzO1x0XHR9XG4gXHRcdGZyZWUoY29tbSk7XG4tXHRcdHJldHVybiBGSUxURVJfU0tJUDtcbiBcdH1cbi1cdGZyZWUoY29tbSk7XG4mIzQzO1x0aWYgKGZpbHRlciBcdTAwMjYgRklMVEVSX01PRFVMRSkge1xuJiM0MztcdFx0bW9kdWxlID0gZ2V0X21vZHVsZShidWYpO1xuJiM0MztcdFx0aWYgKCFtb2R1bGUpXG4mIzQzO1x0XHRcdHJldHVybiBGSUxURVJfRVJST1I7XG4mIzQzO1x0XHRpZiAoIW1hdGNoX3N0cl9saXN0KG1vZHVsZSwgZmMubW9kdWxlcywgZmMubW9kdWxlc19zaXplKSkge1xuJiM0MztcdFx0XHRmcmVlKG1vZHVsZSk7XG4mIzQzO1x0XHRcdHJldHVybiBGSUxURVJfU0tJUDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGZyZWUobW9kdWxlKTtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gRklMVEVSX01BVENIO1xuIH1cbiBcbkBAIC01NDcsNiAmIzQzOzYwMiwxMiBAQCBzdGF0aWMgYm9vbCBhZGRfbGlzdChjaGFyICpidWYsIGludCBsZW4sIGNoYXIgKmV4dF9idWYpXG4gXHRcdGxpc3RbbGlzdF9zaXplXS5zdGFja3RyYWNlJiM0MzsmIzQzOztcbiBcdGxpc3RbbGlzdF9zaXplXS50c19uc2VjID0gZ2V0X3RzX25zZWMoYnVmKTtcbiBcdGxpc3RbbGlzdF9zaXplXS5hbGxvY2F0b3IgPSBnZXRfYWxsb2NhdG9yKGJ1ZiwgZXh0X2J1Zik7XG4mIzQzO1x0bGlzdFtsaXN0X3NpemVdLm1vZHVsZSA9IGdldF9tb2R1bGUoYnVmKTtcbiYjNDM7XHRpZiAoIWxpc3RbbGlzdF9zaXplXS5tb2R1bGUpIHtcbiYjNDM7XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtPdXQgb2YgbWVtb3J5XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZyZWVfYmxvY2tfbGlzdChcdTAwMjZsaXN0W2xpc3Rfc2l6ZV0pO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiBcdGxpc3Rfc2l6ZSYjNDM7JiM0Mzs7XG4gXHRpZiAobGlzdF9zaXplICUgMTAwMCA9PSAwKSB7XG4gXHRcdHByaW50ZihcJiMzNDtsb2FkZWQgJWRcXHJcJiMzNDssIGxpc3Rfc2l6ZSk7XG5AQCAtNTczLDYgJiM0Mzs2MzQsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZV9jdWxsX2FyZ3MoY29uc3QgY2hhciAqYXJnX3N0cilcbiBcdFx0XHRjdWxsIHw9IENVTExfU1RBQ0tUUkFDRTtcbiBcdFx0ZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX0FMTE9DQVRPUilcbiBcdFx0XHRjdWxsIHw9IENVTExfQUxMT0NBVE9SO1xuJiM0MztcdFx0ZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX01PRFVMRSlcbiYjNDM7XHRcdFx0Y3VsbCB8PSBDVUxMX01PRFVMRTtcbiBcdFx0ZWxzZSB7XG4gXHRcdFx0ZnJlZV9leHBsb2RlKGFyZ3MsIHNpemUpO1xuIFx0XHRcdHJldHVybiBmYWxzZTtcbkBAIC02MzUsNiAmIzQzOzY5OCw4IEBAIHN0YXRpYyBib29sIHBhcnNlX3NvcnRfYXJncyhjb25zdCBjaGFyICphcmdfc3RyKVxuIFx0XHRcdHNjLmNtcHNbaV0gPSBjb21wYXJlX3R4dDtcbiBcdFx0ZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX0FMTE9DQVRPUilcbiBcdFx0XHRzYy5jbXBzW2ldID0gY29tcGFyZV9hbGxvY2F0b3I7XG4mIzQzO1x0XHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfTU9EVUxFKVxuJiM0MztcdFx0XHRzYy5jbXBzW2ldID0gY29tcGFyZV9tb2R1bGU7XG4gXHRcdGVsc2Uge1xuIFx0XHRcdGZyZWVfZXhwbG9kZShhcmdzLCBzaXplKTtcbiBcdFx0XHRzYy5zaXplID0gMDtcbkBAIC02OTEsNyAmIzQzOzc1Niw4IEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpXG4gXHRcdFwmIzM0Oy1wXFx0XFx0XFx0U29ydCBieSBwaWQuXFxuXCYjMzQ7XG4gXHRcdFwmIzM0Oy1QXFx0XFx0XFx0U29ydCBieSB0Z2lkLlxcblwmIzM0O1xuIFx0XHRcJiMzNDstc1xcdFxcdFxcdFNvcnQgYnkgdGhlIHN0YWNrdHJhY2UuXFxuXCYjMzQ7XG4tXHRcdFwmIzM0Oy10XFx0XFx0XFx0U29ydCBieSBudW1iZXIgb2YgdGltZXMgcmVjb3JkIGlzIHNlZW4gKGRlZmF1bHQpLlxcblxcblwmIzM0O1xuJiM0MztcdFx0XCYjMzQ7LXRcXHRcXHRcXHRTb3J0IGJ5IG51bWJlciBvZiB0aW1lcyByZWNvcmQgaXMgc2VlbiAoZGVmYXVsdCkuXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDstTVxcdFxcdFxcdFNvcnQgYnkgbW9kdWxlIG5hbWUuXFxuXFxuXCYjMzQ7XG4gXHRcdFwmIzM0Oy0tcGlkIFx1MDAzY3BpZGxpc3RcdTAwM2VcXHRcXHRTZWxlY3QgYnkgcGlkLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXCYjMzQ7XG4gXHRcdFwmIzM0OyBvZlxcblxcdFxcdFxcdGJsb2NrcyB3aG9zZSBwcm9jZXNzIElEIG51bWJlcnMgYXBwZWFyIGluIFx1MDAzY3BpZGxpc3RcdTAwM2UuXFxuXCYjMzQ7XG4gXHRcdFwmIzM0Oy0tdGdpZCBcdTAwM2N0Z2lkbGlzdFx1MDAzZVxcdFNlbGVjdCBieSB0Z2lkLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXCYjMzQ7XG5AQCAtNzAwLDExICYjNDM7NzY2LDIxIEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpXG4gXHRcdFwmIzM0Oy0tbmFtZSBcdTAwM2NjbWRsaXN0XHUwMDNlXFx0U2VsZWN0IGJ5IGNvbW1hbmQgbmFtZS4gVGhpcyBzZWxlY3RzIHRoZVwmIzM0O1xuIFx0XHRcJiMzNDsgaW5mb3JtYXRpb25cXG5cXHRcXHRcXHRvZiBibG9ja3Mgd2hvc2UgY29tbWFuZCBuYW1lIGFwcGVhcnMgaW5cJiMzNDtcbiBcdFx0XCYjMzQ7IFx1MDAzY2NtZGxpc3RcdTAwM2UuXFxuXCYjMzQ7XG4tXHRcdFwmIzM0Oy0tY3VsbCBcdTAwM2NydWxlc1x1MDAzZVxcdFxcdEN1bGwgYnkgdXNlci1kZWZpbmVkIHJ1bGVzLiBcdTAwM2NydWxlc1x1MDAzZSBpcyBhIFwmIzM0O1xuLVx0XHRcJiMzNDtzaW5nbGVcXG5cXHRcXHRcXHRhcmd1bWVudCBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IFwmIzM0O1xuLVx0XHRcJiMzNDt3aXRoIHNvbWVcXG5cXHRcXHRcXHRjb21tb24gZmllbGRzIHByZWRlZmluZWQgKHBpZCwgdGdpZCwgY29tbSwgXCYjMzQ7XG4tXHRcdFwmIzM0O3N0YWNrdHJhY2UsIGFsbG9jYXRvcilcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0Oy0tbW9kdWxlIFx1MDAzY21vZGxpc3RcdTAwM2VcXHRTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgaW5mb3JtYXRpb25cXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdG9mIGJsb2NrcyB3aG9zZSBtb2R1bGUgbmFtZSBhcHBlYXJzIGluIFx1MDAzY21vZGxpc3RcdTAwM2UuXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDstLWN1bGwgXHUwMDNjcnVsZXNcdTAwM2VcXHRcXHRDdWxsIGJ5IHVzZXItZGVmaW5lZCBydWxlcy4gXHUwMDNjcnVsZXNcdTAwM2UgaXMgYSBzaW5nbGVcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdGFyZ3VtZW50IGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCBzb21lXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRjb21tb24gZmllbGRzIHByZWRlZmluZWQgKHBpZCwgdGdpZCwgY29tbSwgc3RhY2t0cmFjZSwgYWxsb2NhdG9yLCBtb2R1bGUpXFxuXCYjMzQ7XG4gXHRcdFwmIzM0Oy0tc29ydCBcdTAwM2NvcmRlclx1MDAzZVxcdFxcdFNwZWNpZnkgc29ydCBvcmRlciBhczogWyYjNDM7fC1da2V5WyxbJiM0Mzt8LV1rZXlbLC4uLl1dXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRBdmFpbGFibGUga2V5czpcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdCAgcGlkKHApLCB0Z2lkKHRnKSwgbmFtZShuKSwgc3RhY2t0cmFjZShzdCksXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHQgIHR4dChUKSwgYWxsb2NfdHMoYXQpLCBhbGxvY2F0b3IoYXRvciksIG1vZHVsZShtb2QpXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRUaGUgXFxcJiMzNDsmIzQzO1xcXCYjMzQ7IGlzIG9wdGlvbmFsIHNpbmNlIGRlZmF1bHQgZGlyZWN0aW9uIGlzXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRpbmNyZWFzaW5nIG51bWVyaWNhbCBvciBsZXhpY29ncmFwaGljIG9yZGVyLlxcblwmIzM0O1xuJiM0MztcdFx0XCYjMzQ7XFx0XFx0XFx0TWl4ZWQgdXNlIG9mIGFiYnJldmlhdGVkIGFuZCBjb21wbGV0ZS1mb3JtIGlzIGFsbG93ZWQuXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRFeGFtcGxlczpcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdCAgLS1zb3J0PW4sJiM0MztwaWQsLXRnaWRcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdCAgLS1zb3J0PW1vZCxhdFxcblwmIzM0O1xuIFx0KTtcbiB9XG4gXG5AQCAtNzIxLDEzICYjNDM7Nzk3LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0eyBcJiMzNDtuYW1lXCYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMyB9LFxuIFx0XHR7IFwmIzM0O2N1bGxcJiMzNDssIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCA0IH0sXG4gXHRcdHsgXCYjMzQ7c29ydFwmIzM0OywgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDUgfSxcbiYjNDM7XHRcdHsgXCYjMzQ7bW9kdWxlXCYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNiB9LFxuIFx0XHR7IFwmIzM0O2hlbHBcJiMzNDssIG5vX2FyZ3VtZW50LCBOVUxMLCAmIzM5O2gmIzM5OyB9LFxuIFx0XHR7IDAsIDAsIDAsIDB9LFxuIFx0fTtcbiBcbiBcdGNvbXBhcmVfZmxhZyA9IENPTVBfTk9fRkxBRztcbiBcbi1cdHdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgXCYjMzQ7YWRtbnBzdFBoXCYjMzQ7LCBsb25nb3B0cywgTlVMTCkpICE9IC0xKVxuJiM0MztcdHdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgXCYjMzQ7YWRtbnBzdFBNaFwmIzM0OywgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSlcbiBcdFx0c3dpdGNoIChvcHQpIHtcbiBcdFx0Y2FzZSAmIzM5O2EmIzM5OzpcbiBcdFx0XHRjb21wYXJlX2ZsYWcgfD0gQ09NUF9BTExPQztcbkBAIC03NTMsNiAmIzQzOzgzMCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0Y2FzZSAmIzM5O24mIzM5OzpcbiBcdFx0XHRjb21wYXJlX2ZsYWcgfD0gQ09NUF9DT01NO1xuIFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0Y2FzZSAmIzM5O00mIzM5OzpcbiYjNDM7XHRcdFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfTU9EVUxFO1xuJiM0MztcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSAmIzM5O2gmIzM5OzpcbiBcdFx0XHR1c2FnZSgpO1xuIFx0XHRcdGV4aXQoMCk7XG5AQCAtNzkyLDYgJiM0Mzs4NzIsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRcdFx0ZXhpdCgxKTtcbiBcdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIDY6XG4mIzQzO1x0XHRcdGZpbHRlciA9IGZpbHRlciB8IEZJTFRFUl9NT0RVTEU7XG4mIzQzO1x0XHRcdGZjLm1vZHVsZXMgPSBleHBsb2RlKCYjMzk7LCYjMzk7LCBvcHRhcmcsIFx1MDAyNmZjLm1vZHVsZXNfc2l6ZSk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHVzYWdlKCk7XG4gXHRcdFx0ZXhpdCgxKTtcbkBAIC04MjEsNiAmIzQzOzkwNSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfc3RhY2t0cmFjZSwgU09SVF9BU0MpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQ09NUF9OT19GTEFHOlxuJiM0MztcdFx0aWYgKHNjLnNpemUgXHUwMDNlIDApXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0c2V0X3NpbmdsZV9jbXAoY29tcGFyZV9udW0sIFNPUlRfREVTQyk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGNhc2UgQ09NUF9OVU06XG4gXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbnVtLCBTT1JUX0RFU0MpO1xuIFx0XHRicmVhaztcbkBAIC04MzAsNiAmIzQzOzkxOCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdGNhc2UgQ09NUF9DT01NOlxuIFx0XHRzZXRfc2luZ2xlX2NtcChjb21wYXJlX2NvbW0sIFNPUlRfQVNDKTtcbiBcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBDT01QX01PRFVMRTpcbiYjNDM7XHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbW9kdWxlLCBTT1JUX0FTQyk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdHVzYWdlKCk7XG4gXHRcdGV4aXQoMSk7XG5AQCAtODUzLDYgJiM0Mzs5NDQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHRcdGdvdG8gb3V0X2NvbW07XG4gXHRpZiAoIWNoZWNrX3JlZ2NvbXAoXHUwMDI2dHNfbnNlY19wYXR0ZXJuLCBcJiMzNDt0c1xcXFxzKihbMC05XSopXFxcXHMqbnNcJiMzNDspKVxuIFx0XHRnb3RvIG91dF90cztcbiYjNDM7XHRpZiAoIWNoZWNrX3JlZ2NvbXAoXHUwMDI2bW9kdWxlX3BhdHRlcm4sIFwmIzM0O1xcXFwmIzQzOzB4WzAtOWEtZl0mIzQzOy8weFswLTlhLWZdJiM0MztcXFxccypcXFxcWyhbYS16QS1aMC05Xy1dJiM0MzspXFxcXF1cJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXRfbW9kdWxlO1xuIFxuIFx0ZnN0YXQoZmlsZW5vKGZpbiksIFx1MDAyNnN0KTtcbiBcdG1heF9zaXplID0gc3Quc3Rfc2l6ZSAvIDEwMDsgLyogaGFjayAuLi4gKi9cbkBAIC05MTEsNiAmIzQzOzEwMDQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwmIzM0OywgVEdJRCAlZFwmIzM0OywgbGlzdFtpXS50Z2lkKTtcbiBcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9DT01NIHx8IGZpbHRlciBcdTAwMjYgRklMVEVSX0NPTU0pXG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwmIzM0OywgdGFza19jb21tX25hbWU6ICVzXCYjMzQ7LCBsaXN0W2ldLmNvbW0pO1xuJiM0MztcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9NT0RVTEUgfHwgZmlsdGVyIFx1MDAyNiBGSUxURVJfTU9EVUxFKVxuJiM0MztcdFx0XHRcdGZwcmludGYoZm91dCwgXCYjMzQ7LCBtb2R1bGU6ICVzXCYjMzQ7LCBsaXN0W2ldLm1vZHVsZSk7XG4gXHRcdFx0aWYgKGN1bGwgXHUwMDI2IENVTExfQUxMT0NBVE9SKSB7XG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwmIzM0OywgXCYjMzQ7KTtcbiBcdFx0XHRcdHByaW50X2FsbG9jYXRvcihmb3V0LCBsaXN0W2ldLmFsbG9jYXRvcik7XG5AQCAtOTMxLDYgJiM0MzsxMDI2LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRcdGZyZWVfYmxvY2tfbGlzdChcdTAwMjZsaXN0W2ldKTtcbiBcdFx0ZnJlZShsaXN0KTtcbiBcdH1cbiYjNDM7b3V0X21vZHVsZTpcbiYjNDM7XHRyZWdmcmVlKFx1MDAyNm1vZHVsZV9wYXR0ZXJuKTtcbiBvdXRfdHM6XG4gXHRyZWdmcmVlKFx1MDAyNnRzX25zZWNfcGF0dGVybik7XG4gb3V0X2NvbW06XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZmIwMjE5MGIyMTJjMmVlZjJiMzFiYmY0NDdlNjUxNzgzNjgxZTgzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwNjo1Mjo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0CmluZGV4IGE2YmQzZmU2NDIzYWQuLmJkMDI3Mzc3ZGZmNmUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdApAQCAtMTk5LDYgJiM0MzsxOTksNyBAQCBVc2FnZQogCQktcAkJU29ydCBieSBwaWQuCiAJCS1QCQlTb3J0IGJ5IHRnaWQuCiAJCS1uCQlTb3J0IGJ5IHRhc2sgY29tbWFuZCBuYW1lLgomIzQzOwkJLU0JCVNvcnQgYnkgbW9kdWxlIG5hbWUuCiAJCS1yCQlTb3J0IGJ5IG1lbW9yeSByZWxlYXNlIHRpbWUuCiAJCS1zCQlTb3J0IGJ5IHN0YWNrIHRyYWNlLgogCQktdAkJU29ydCBieSB0aW1lcyAoZGVmYXVsdCkuCkBAIC0yNDAsOCAmIzQzOzI0MSwxMCBAQCBVc2FnZQogCQkJCQlncm91cCBJRCBudW1iZXJzIGFwcGVhciBpbiAmbHQ7dGdpZGxpc3QmZ3Q7LgogCQktLW5hbWUgJmx0O2NtZGxpc3QmZ3Q7CVNlbGVjdCBieSB0YXNrIGNvbW1hbmQgbmFtZS4gVGhpcyBzZWxlY3RzIHRoZSBibG9ja3Mgd2hvc2UKIAkJCQkJdGFzayBjb21tYW5kIG5hbWUgYXBwZWFyIGluICZsdDtjbWRsaXN0Jmd0Oy4KJiM0MzsJCS0tbW9kdWxlICZsdDttb2RsaXN0Jmd0OwlTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgYmxvY2tzIHdob3NlCiYjNDM7CQkJCQltb2R1bGUgbmFtZSBhcHBlYXIgaW4gJmx0O21vZGxpc3QmZ3Q7LgogCi0JCSZsdDtwaWRsaXN0Jmd0OywgJmx0O3RnaWRsaXN0Jmd0OywgJmx0O2NtZGxpc3QmZ3Q7IGFyZSBzaW5nbGUgYXJndW1lbnRzIGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsCiYjNDM7CQkmbHQ7cGlkbGlzdCZndDssICZsdDt0Z2lkbGlzdCZndDssICZsdDtjbWRsaXN0Jmd0OywgJmx0O21vZGxpc3QmZ3Q7IGFyZSBzaW5nbGUgYXJndW1lbnRzIGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsCiAJCXdoaWNoIG9mZmVycyBhIHdheSB0byBzcGVjaWZ5IGluZGl2aWR1YWwgc2VsZWN0aW5nIHJ1bGVzLgogCiAKQEAgLTI0OSw2ICYjNDM7MjUyLDcgQEAgVXNhZ2UKIAkJCQkuL3BhZ2Vfb3duZXJfc29ydCAmbHQ7aW5wdXQmZ3Q7ICZsdDtvdXRwdXQmZ3Q7IC0tcGlkPTEKIAkJCQkuL3BhZ2Vfb3duZXJfc29ydCAmbHQ7aW5wdXQmZ3Q7ICZsdDtvdXRwdXQmZ3Q7IC0tdGdpZD0xLDIsMwogCQkJCS4vcGFnZV9vd25lcl9zb3J0ICZsdDtpbnB1dCZndDsgJmx0O291dHB1dCZndDsgLS1uYW1lIG5hbWUxLG5hbWUyCiYjNDM7CQkJCS4vcGFnZV9vd25lcl9zb3J0ICZsdDtpbnB1dCZndDsgJmx0O291dHB1dCZndDsgLS1tb2R1bGUgeGZzLGV4dDQKIAogU1RBTkRBUkQgRk9STUFUIFNQRUNJRklFUlMKID09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yNjUsNiAmIzQzOzI2OSw3IEBAIFNUQU5EQVJEIEZPUk1BVCBTUEVDSUZJRVJTCiAJZnQJCWZyZWVfdHMJCXRpbWVzdGFtcCBvZiB0aGUgcGFnZSB3aGVuIGl0IHdhcyByZWxlYXNlZAogCWF0CQlhbGxvY190cwl0aW1lc3RhbXAgb2YgdGhlIHBhZ2Ugd2hlbiBpdCB3YXMgYWxsb2NhdGVkCiAJYXRvcgkJYWxsb2NhdG9yCW1lbW9yeSBhbGxvY2F0b3IgZm9yIHBhZ2VzCiYjNDM7CW1vZAkJbW9kdWxlCQlrZXJuZWwgbW9kdWxlIG5hbWUKIAogICBGb3IgLS1jdWxsIG9wdGlvbjoKIApAQCAtMjc1LDYgJiM0MzsyODAsNyBAQCBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSUwogCWYJCWZyZWUJCXdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVsZWFzZWQgb3Igbm90CiAJc3QJCXN0YWNrdHJhY2UJc3RhY2sgdHJhY2Ugb2YgdGhlIHBhZ2UgYWxsb2NhdGlvbgogCWF0b3IJCWFsbG9jYXRvcgltZW1vcnkgYWxsb2NhdG9yIGZvciBwYWdlcwomIzQzOwltb2QJCW1vZHVsZQkJa2VybmVsIG1vZHVsZSBuYW1lCiAKIEZpbHRlcmluZyBwYWdlX293bmVyIG91dHB1dAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMgYi90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwppbmRleCAzNWQzZDI1NDk0MWM5Li5jNWJjM2I1MjRjMGE5IDEwMDY0NAotLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwpAQCAtMjUsMTEgJiM0MzsyNSwxMyBAQAogI2luY2x1ZGUgJmx0O2dldG9wdC5oJmd0OwogCiAjZGVmaW5lIFRBU0tfQ09NTV9MRU4gMTYKJiM0MzsjZGVmaW5lIE1PRFVMRV9OQU1FX0xFTiA2NAogCiBzdHJ1Y3QgYmxvY2tfbGlzdCB7CiAJY2hhciAqdHh0OwogCWNoYXIgKmNvbW07IC8vIHRhc2sgY29tbWFuZCBuYW1lCiAJY2hhciAqc3RhY2t0cmFjZTsKJiM0MzsJY2hhciAqbW9kdWxlOyAvLyBrZXJuZWwgbW9kdWxlIG5hbWUKIAlfX3U2NCB0c19uc2VjOwogCWludCBsZW47CiAJaW50IG51bTsKQEAgLTQxLDcgJiM0Mzs0Myw4IEBAIHN0cnVjdCBibG9ja19saXN0IHsKIGVudW0gRklMVEVSX0JJVCB7CiAJRklMVEVSX1BJRCA9IDEmbHQ7Jmx0OzEsCiAJRklMVEVSX1RHSUQgPSAxJmx0OyZsdDsyLAotCUZJTFRFUl9DT01NID0gMSZsdDsmbHQ7MwomIzQzOwlGSUxURVJfQ09NTSA9IDEmbHQ7Jmx0OzMsCiYjNDM7CUZJTFRFUl9NT0RVTEUgPSAxJmx0OyZsdDs0CiB9OwogCiBlbnVtIEZJTFRFUl9SRVNVTFQgewpAQCAtNTUsNyAmIzQzOzU4LDggQEAgZW51bSBDVUxMX0JJVCB7CiAJQ1VMTF9UR0lEID0gMSZsdDsmbHQ7MiwKIAlDVUxMX0NPTU0gPSAxJmx0OyZsdDszLAogCUNVTExfU1RBQ0tUUkFDRSA9IDEmbHQ7Jmx0OzQsCi0JQ1VMTF9BTExPQ0FUT1IgPSAxJmx0OyZsdDs1CiYjNDM7CUNVTExfQUxMT0NBVE9SID0gMSZsdDsmbHQ7NSwKJiM0MzsJQ1VMTF9NT0RVTEUgPSAxJmx0OyZsdDs2CiB9OwogZW51bSBBTExPQ0FUT1JfQklUIHsKIAlBTExPQ0FUT1JfQ01BID0gMSZsdDsmbHQ7MSwKQEAgLTY1LDcgJiM0Mzs2OSw4IEBAIGVudW0gQUxMT0NBVE9SX0JJVCB7CiB9OwogZW51bSBBUkdfVFlQRSB7CiAJQVJHX1RYVCwgQVJHX0NPTU0sIEFSR19TVEFDS1RSQUNFLCBBUkdfQUxMT0NfVFMsIEFSR19DVUxMX1RJTUUsCi0JQVJHX1BBR0VfTlVNLCBBUkdfUElELCBBUkdfVEdJRCwgQVJHX1VOS05PV04sIEFSR19BTExPQ0FUT1IKJiM0MzsJQVJHX1BBR0VfTlVNLCBBUkdfUElELCBBUkdfVEdJRCwgQVJHX1VOS05PV04sIEFSR19BTExPQ0FUT1IsCiYjNDM7CUFSR19NT0RVTEUKIH07CiBlbnVtIFNPUlRfT1JERVIgewogCVNPUlRfQVNDID0gMSwKQEAgLTc5LDE1ICYjNDM7ODQsMTggQEAgZW51bSBDT01QX0ZMQUcgewogCUNPTVBfU1RBQ0sgPSAxJmx0OyZsdDszLAogCUNPTVBfTlVNID0gMSZsdDsmbHQ7NCwKIAlDT01QX1RHSUQgPSAxJmx0OyZsdDs1LAotCUNPTVBfQ09NTSA9IDEmbHQ7Jmx0OzYKJiM0MzsJQ09NUF9DT01NID0gMSZsdDsmbHQ7NiwKJiM0MzsJQ09NUF9NT0RVTEUgPSAxJmx0OyZsdDs3CiB9Owogc3RydWN0IGZpbHRlcl9jb25kaXRpb24gewogCXBpZF90ICpwaWRzOwogCXBpZF90ICp0Z2lkczsKIAljaGFyICoqY29tbXM7CiYjNDM7CWNoYXIgKiptb2R1bGVzOwogCWludCBwaWRzX3NpemU7CiAJaW50IHRnaWRzX3NpemU7CiAJaW50IGNvbW1zX3NpemU7CiYjNDM7CWludCBtb2R1bGVzX3NpemU7CiB9Owogc3RydWN0IHNvcnRfY29uZGl0aW9uIHsKIAlpbnQgKCoqY21wcykoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwpAQCAtMTAxLDYgJiM0MzsxMDksNyBAQCBzdGF0aWMgcmVnZXhfdCBwaWRfcGF0dGVybjsKIHN0YXRpYyByZWdleF90IHRnaWRfcGF0dGVybjsKIHN0YXRpYyByZWdleF90IGNvbW1fcGF0dGVybjsKIHN0YXRpYyByZWdleF90IHRzX25zZWNfcGF0dGVybjsKJiM0MztzdGF0aWMgcmVnZXhfdCBtb2R1bGVfcGF0dGVybjsKIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfbGlzdCAqbGlzdDsKIHN0YXRpYyBpbnQgbGlzdF9zaXplOwogc3RhdGljIGludCBtYXhfc2l6ZTsKQEAgLTE4NCw2ICYjNDM7MTkzLDEzIEBAIHN0YXRpYyBpbnQgY29tcGFyZV9jb21tKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKIAlyZXR1cm4gc3RyY21wKGwxLSZndDtjb21tLCBsMi0mZ3Q7Y29tbSk7CiB9CiAKJiM0MztzdGF0aWMgaW50IGNvbXBhcmVfbW9kdWxlKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBibG9ja19saXN0ICpsMSA9IHAxLCAqbDIgPSBwMjsKJiM0MzsKJiM0MzsJcmV0dXJuIHN0cmNtcChsMS0mZ3Q7bW9kdWxlLCBsMi0mZ3Q7bW9kdWxlKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGNvbXBhcmVfdHMoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQogewogCWNvbnN0IHN0cnVjdCBibG9ja19saXN0ICpsMSA9IHAxLCAqbDIgPSBwMjsKQEAgLTIwNyw2ICYjNDM7MjIzLDggQEAgc3RhdGljIGludCBjb21wYXJlX2N1bGxfY29uZGl0aW9uKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKIAkJcmV0dXJuIGNvbXBhcmVfdGdpZChwMSwgcDIpOwogCWlmICgoY3VsbCAmYW1wOyBDVUxMX0NPTU0pICZhbXA7JmFtcDsgY29tcGFyZV9jb21tKHAxLCBwMikpCiAJCXJldHVybiBjb21wYXJlX2NvbW0ocDEsIHAyKTsKJiM0MzsJaWYgKChjdWxsICZhbXA7IENVTExfTU9EVUxFKSAmYW1wOyZhbXA7IGNvbXBhcmVfbW9kdWxlKHAxLCBwMikpCiYjNDM7CQlyZXR1cm4gY29tcGFyZV9tb2R1bGUocDEsIHAyKTsKIAlpZiAoKGN1bGwgJmFtcDsgQ1VMTF9BTExPQ0FUT1IpICZhbXA7JmFtcDsgY29tcGFyZV9hbGxvY2F0b3IocDEsIHAyKSkKIAkJcmV0dXJuIGNvbXBhcmVfYWxsb2NhdG9yKHAxLCBwMik7CiAJcmV0dXJuIDA7CkBAIC00MTEsOSAmIzQzOzQyOSwzMyBAQCBzdGF0aWMgY2hhciAqZ2V0X2NvbW0oY2hhciAqYnVmKQogCXJldHVybiBjb21tX3N0cjsKIH0KIAomIzQzO3N0YXRpYyBjaGFyICpnZXRfbW9kdWxlKGNoYXIgKmJ1ZikKJiM0Mzt7CiYjNDM7CWNoYXIgKm1vZHVsZV9zdHIgPSBtYWxsb2MoTU9EVUxFX05BTUVfTEVOKTsKJiM0MzsJcmVnbWF0Y2hfdCBwbWF0Y2hbMl07CiYjNDM7CWludCB2YWxfbGVuOwomIzQzOwomIzQzOwlpZiAoIW1vZHVsZV9zdHIpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJbWVtc2V0KG1vZHVsZV9zdHIsIDAsIE1PRFVMRV9OQU1FX0xFTik7CiYjNDM7CWlmIChyZWdleGVjKCZhbXA7bW9kdWxlX3BhdHRlcm4sIGJ1ZiwgMiwgcG1hdGNoLCBSRUdfTk9UQk9MKSAhPSAwIHx8IHBtYXRjaFsxXS5ybV9zbyA9PSAtMSkgewomIzQzOwkJc3RyY3B5KG1vZHVsZV9zdHIsICYjMzQ7dm1saW51eCYjMzQ7KTsKJiM0MzsJCXJldHVybiBtb2R1bGVfc3RyOwomIzQzOwl9CiYjNDM7CiYjNDM7CXZhbF9sZW4gPSBwbWF0Y2hbMV0ucm1fZW8gLSBwbWF0Y2hbMV0ucm1fc287CiYjNDM7CWlmICgoc2l6ZV90KXZhbF9sZW4gJmd0Oz0gTU9EVUxFX05BTUVfTEVOKQomIzQzOwkJdmFsX2xlbiA9IE1PRFVMRV9OQU1FX0xFTiAtIDE7CiYjNDM7CW1lbWNweShtb2R1bGVfc3RyLCBidWYgJiM0MzsgcG1hdGNoWzFdLnJtX3NvLCB2YWxfbGVuKTsKJiM0MzsJbW9kdWxlX3N0clt2YWxfbGVuXSA9ICYjMzk7XDAmIzM5OzsKJiM0MzsKJiM0MzsJcmV0dXJuIG1vZHVsZV9zdHI7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgZnJlZV9ibG9ja19saXN0KHN0cnVjdCBibG9ja19saXN0ICpibG9jaykKIHsKIAlmcmVlKGJsb2NrLSZndDtjb21tKTsKJiM0MzsJZnJlZShibG9jay0mZ3Q7bW9kdWxlKTsKIAlmcmVlKGJsb2NrLSZndDt0eHQpOwogfQogCkBAIC00MzMsNiAmIzQzOzQ3NSw4IEBAIHN0YXRpYyBpbnQgZ2V0X2FyZ190eXBlKGNvbnN0IGNoYXIgKmFyZykKIAkJcmV0dXJuIEFSR19BTExPQ19UUzsKIAllbHNlIGlmICghc3RyY21wKGFyZywgJiMzNDthbGxvY2F0b3ImIzM0OykgfHwgIXN0cmNtcChhcmcsICYjMzQ7YXRvciYjMzQ7KSkKIAkJcmV0dXJuIEFSR19BTExPQ0FUT1I7CiYjNDM7CWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAmIzM0O21vZHVsZSYjMzQ7KSB8fCAhc3RyY21wKGFyZywgJiMzNDttb2QmIzM0OykpCiYjNDM7CQlyZXR1cm4gQVJHX01PRFVMRTsKIAllbHNlIHsKIAkJcmV0dXJuIEFSR19VTktOT1dOOwogCX0KQEAgLTQ4MywyNSAmIzQzOzUyNywzNiBAQCBzdGF0aWMgYm9vbCBtYXRjaF9zdHJfbGlzdChjb25zdCBjaGFyICpzdHIsIGNoYXIgKipsaXN0LCBpbnQgbGlzdF9zaXplKQogCiBzdGF0aWMgZW51bSBGSUxURVJfUkVTVUxUIGZpbHRlcl9yZWNvcmQoY2hhciAqYnVmKQogewotCWNoYXIgKmNvbW07CiYjNDM7CWNoYXIgKmNvbW0sICptb2R1bGU7CiAKIAlpZiAoKGZpbHRlciAmYW1wOyBGSUxURVJfUElEKSAmYW1wOyZhbXA7ICFtYXRjaF9udW1fbGlzdChnZXRfcGlkKGJ1ZiksIGZjLnBpZHMsIGZjLnBpZHNfc2l6ZSkpCiAJCXJldHVybiBGSUxURVJfU0tJUDsKIAlpZiAoKGZpbHRlciAmYW1wOyBGSUxURVJfVEdJRCkgJmFtcDsmYW1wOwogCQkhbWF0Y2hfbnVtX2xpc3QoZ2V0X3RnaWQoYnVmKSwgZmMudGdpZHMsIGZjLnRnaWRzX3NpemUpKQogCQlyZXR1cm4gRklMVEVSX1NLSVA7Ci0JaWYgKCEoZmlsdGVyICZhbXA7IEZJTFRFUl9DT01NKSkKJiM0MzsJaWYgKCEoZmlsdGVyICZhbXA7IChGSUxURVJfQ09NTSB8IEZJTFRFUl9NT0RVTEUpKSkKIAkJcmV0dXJuIEZJTFRFUl9NQVRDSDsKIAotCWNvbW0gPSBnZXRfY29tbShidWYpOwotCWlmICghY29tbSkKLQkJcmV0dXJuIEZJTFRFUl9FUlJPUjsKLQotCWlmICghbWF0Y2hfc3RyX2xpc3QoY29tbSwgZmMuY29tbXMsIGZjLmNvbW1zX3NpemUpKSB7CiYjNDM7CWlmIChmaWx0ZXIgJmFtcDsgRklMVEVSX0NPTU0pIHsKJiM0MzsJCWNvbW0gPSBnZXRfY29tbShidWYpOwomIzQzOwkJaWYgKCFjb21tKQomIzQzOwkJCXJldHVybiBGSUxURVJfRVJST1I7CiYjNDM7CQlpZiAoIW1hdGNoX3N0cl9saXN0KGNvbW0sIGZjLmNvbW1zLCBmYy5jb21tc19zaXplKSkgewomIzQzOwkJCWZyZWUoY29tbSk7CiYjNDM7CQkJcmV0dXJuIEZJTFRFUl9TS0lQOwomIzQzOwkJfQogCQlmcmVlKGNvbW0pOwotCQlyZXR1cm4gRklMVEVSX1NLSVA7CiAJfQotCWZyZWUoY29tbSk7CiYjNDM7CWlmIChmaWx0ZXIgJmFtcDsgRklMVEVSX01PRFVMRSkgewomIzQzOwkJbW9kdWxlID0gZ2V0X21vZHVsZShidWYpOwomIzQzOwkJaWYgKCFtb2R1bGUpCiYjNDM7CQkJcmV0dXJuIEZJTFRFUl9FUlJPUjsKJiM0MzsJCWlmICghbWF0Y2hfc3RyX2xpc3QobW9kdWxlLCBmYy5tb2R1bGVzLCBmYy5tb2R1bGVzX3NpemUpKSB7CiYjNDM7CQkJZnJlZShtb2R1bGUpOwomIzQzOwkJCXJldHVybiBGSUxURVJfU0tJUDsKJiM0MzsJCX0KJiM0MzsJCWZyZWUobW9kdWxlKTsKJiM0MzsJfQogCXJldHVybiBGSUxURVJfTUFUQ0g7CiB9CiAKQEAgLTU0Nyw2ICYjNDM7NjAyLDEyIEBAIHN0YXRpYyBib29sIGFkZF9saXN0KGNoYXIgKmJ1ZiwgaW50IGxlbiwgY2hhciAqZXh0X2J1ZikKIAkJbGlzdFtsaXN0X3NpemVdLnN0YWNrdHJhY2UmIzQzOyYjNDM7OwogCWxpc3RbbGlzdF9zaXplXS50c19uc2VjID0gZ2V0X3RzX25zZWMoYnVmKTsKIAlsaXN0W2xpc3Rfc2l6ZV0uYWxsb2NhdG9yID0gZ2V0X2FsbG9jYXRvcihidWYsIGV4dF9idWYpOwomIzQzOwlsaXN0W2xpc3Rfc2l6ZV0ubW9kdWxlID0gZ2V0X21vZHVsZShidWYpOwomIzQzOwlpZiAoIWxpc3RbbGlzdF9zaXplXS5tb2R1bGUpIHsKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0O091dCBvZiBtZW1vcnlcbiYjMzQ7KTsKJiM0MzsJCWZyZWVfYmxvY2tfbGlzdCgmYW1wO2xpc3RbbGlzdF9zaXplXSk7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAlsaXN0X3NpemUmIzQzOyYjNDM7OwogCWlmIChsaXN0X3NpemUgJSAxMDAwID09IDApIHsKIAkJcHJpbnRmKCYjMzQ7bG9hZGVkICVkXHImIzM0OywgbGlzdF9zaXplKTsKQEAgLTU3Myw2ICYjNDM7NjM0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VfY3VsbF9hcmdzKGNvbnN0IGNoYXIgKmFyZ19zdHIpCiAJCQljdWxsIHw9IENVTExfU1RBQ0tUUkFDRTsKIAkJZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX0FMTE9DQVRPUikKIAkJCWN1bGwgfD0gQ1VMTF9BTExPQ0FUT1I7CiYjNDM7CQllbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfTU9EVUxFKQomIzQzOwkJCWN1bGwgfD0gQ1VMTF9NT0RVTEU7CiAJCWVsc2UgewogCQkJZnJlZV9leHBsb2RlKGFyZ3MsIHNpemUpOwogCQkJcmV0dXJuIGZhbHNlOwpAQCAtNjM1LDYgJiM0Mzs2OTgsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZV9zb3J0X2FyZ3MoY29uc3QgY2hhciAqYXJnX3N0cikKIAkJCXNjLmNtcHNbaV0gPSBjb21wYXJlX3R4dDsKIAkJZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX0FMTE9DQVRPUikKIAkJCXNjLmNtcHNbaV0gPSBjb21wYXJlX2FsbG9jYXRvcjsKJiM0MzsJCWVsc2UgaWYgKGFyZ190eXBlID09IEFSR19NT0RVTEUpCiYjNDM7CQkJc2MuY21wc1tpXSA9IGNvbXBhcmVfbW9kdWxlOwogCQllbHNlIHsKIAkJCWZyZWVfZXhwbG9kZShhcmdzLCBzaXplKTsKIAkJCXNjLnNpemUgPSAwOwpAQCAtNjkxLDcgJiM0Mzs3NTYsOCBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQogCQkmIzM0Oy1wXHRcdFx0U29ydCBieSBwaWQuXG4mIzM0OwogCQkmIzM0Oy1QXHRcdFx0U29ydCBieSB0Z2lkLlxuJiMzNDsKIAkJJiMzNDstc1x0XHRcdFNvcnQgYnkgdGhlIHN0YWNrdHJhY2UuXG4mIzM0OwotCQkmIzM0Oy10XHRcdFx0U29ydCBieSBudW1iZXIgb2YgdGltZXMgcmVjb3JkIGlzIHNlZW4gKGRlZmF1bHQpLlxuXG4mIzM0OwomIzQzOwkJJiMzNDstdFx0XHRcdFNvcnQgYnkgbnVtYmVyIG9mIHRpbWVzIHJlY29yZCBpcyBzZWVuIChkZWZhdWx0KS5cbiYjMzQ7CiYjNDM7CQkmIzM0Oy1NXHRcdFx0U29ydCBieSBtb2R1bGUgbmFtZS5cblxuJiMzNDsKIAkJJiMzNDstLXBpZCAmbHQ7cGlkbGlzdCZndDtcdFx0U2VsZWN0IGJ5IHBpZC4gVGhpcyBzZWxlY3RzIHRoZSBpbmZvcm1hdGlvbiYjMzQ7CiAJCSYjMzQ7IG9mXG5cdFx0XHRibG9ja3Mgd2hvc2UgcHJvY2VzcyBJRCBudW1iZXJzIGFwcGVhciBpbiAmbHQ7cGlkbGlzdCZndDsuXG4mIzM0OwogCQkmIzM0Oy0tdGdpZCAmbHQ7dGdpZGxpc3QmZ3Q7XHRTZWxlY3QgYnkgdGdpZC4gVGhpcyBzZWxlY3RzIHRoZSBpbmZvcm1hdGlvbiYjMzQ7CkBAIC03MDAsMTEgJiM0Mzs3NjYsMjEgQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKIAkJJiMzNDstLW5hbWUgJmx0O2NtZGxpc3QmZ3Q7XHRTZWxlY3QgYnkgY29tbWFuZCBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlJiMzNDsKIAkJJiMzNDsgaW5mb3JtYXRpb25cblx0XHRcdG9mIGJsb2NrcyB3aG9zZSBjb21tYW5kIG5hbWUgYXBwZWFycyBpbiYjMzQ7CiAJCSYjMzQ7ICZsdDtjbWRsaXN0Jmd0Oy5cbiYjMzQ7Ci0JCSYjMzQ7LS1jdWxsICZsdDtydWxlcyZndDtcdFx0Q3VsbCBieSB1c2VyLWRlZmluZWQgcnVsZXMuICZsdDtydWxlcyZndDsgaXMgYSAmIzM0OwotCQkmIzM0O3NpbmdsZVxuXHRcdFx0YXJndW1lbnQgaW4gdGhlIGZvcm0gb2YgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCAmIzM0OwotCQkmIzM0O3dpdGggc29tZVxuXHRcdFx0Y29tbW9uIGZpZWxkcyBwcmVkZWZpbmVkIChwaWQsIHRnaWQsIGNvbW0sICYjMzQ7Ci0JCSYjMzQ7c3RhY2t0cmFjZSwgYWxsb2NhdG9yKVxuJiMzNDsKJiM0MzsJCSYjMzQ7LS1tb2R1bGUgJmx0O21vZGxpc3QmZ3Q7XHRTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgaW5mb3JtYXRpb25cbiYjMzQ7CiYjNDM7CQkmIzM0O1x0XHRcdG9mIGJsb2NrcyB3aG9zZSBtb2R1bGUgbmFtZSBhcHBlYXJzIGluICZsdDttb2RsaXN0Jmd0Oy5cbiYjMzQ7CiYjNDM7CQkmIzM0Oy0tY3VsbCAmbHQ7cnVsZXMmZ3Q7XHRcdEN1bGwgYnkgdXNlci1kZWZpbmVkIHJ1bGVzLiAmbHQ7cnVsZXMmZ3Q7IGlzIGEgc2luZ2xlXG4mIzM0OwomIzQzOwkJJiMzNDtcdFx0XHRhcmd1bWVudCBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggc29tZVxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0Y29tbW9uIGZpZWxkcyBwcmVkZWZpbmVkIChwaWQsIHRnaWQsIGNvbW0sIHN0YWNrdHJhY2UsIGFsbG9jYXRvciwgbW9kdWxlKVxuJiMzNDsKIAkJJiMzNDstLXNvcnQgJmx0O29yZGVyJmd0O1x0XHRTcGVjaWZ5IHNvcnQgb3JkZXIgYXM6IFsmIzQzO3wtXWtleVssWyYjNDM7fC1da2V5WywuLi5dXVxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0QXZhaWxhYmxlIGtleXM6XG4mIzM0OwomIzQzOwkJJiMzNDtcdFx0XHQgIHBpZChwKSwgdGdpZCh0ZyksIG5hbWUobiksIHN0YWNrdHJhY2Uoc3QpLFxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0ICB0eHQoVCksIGFsbG9jX3RzKGF0KSwgYWxsb2NhdG9yKGF0b3IpLCBtb2R1bGUobW9kKVxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0VGhlIFwmIzM0OyYjNDM7XCYjMzQ7IGlzIG9wdGlvbmFsIHNpbmNlIGRlZmF1bHQgZGlyZWN0aW9uIGlzXG4mIzM0OwomIzQzOwkJJiMzNDtcdFx0XHRpbmNyZWFzaW5nIG51bWVyaWNhbCBvciBsZXhpY29ncmFwaGljIG9yZGVyLlxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0TWl4ZWQgdXNlIG9mIGFiYnJldmlhdGVkIGFuZCBjb21wbGV0ZS1mb3JtIGlzIGFsbG93ZWQuXG4mIzM0OwomIzQzOwkJJiMzNDtcdFx0XHRFeGFtcGxlczpcbiYjMzQ7CiYjNDM7CQkmIzM0O1x0XHRcdCAgLS1zb3J0PW4sJiM0MztwaWQsLXRnaWRcbiYjMzQ7CiYjNDM7CQkmIzM0O1x0XHRcdCAgLS1zb3J0PW1vZCxhdFxuJiMzNDsKIAkpOwogfQogCkBAIC03MjEsMTMgJiM0Mzs3OTcsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7ICYjMzQ7bmFtZSYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMyB9LAogCQl7ICYjMzQ7Y3VsbCYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNCB9LAogCQl7ICYjMzQ7c29ydCYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNSB9LAomIzQzOwkJeyAmIzM0O21vZHVsZSYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNiB9LAogCQl7ICYjMzQ7aGVscCYjMzQ7LCBub19hcmd1bWVudCwgTlVMTCwgJiMzOTtoJiMzOTsgfSwKIAkJeyAwLCAwLCAwLCAwfSwKIAl9OwogCiAJY29tcGFyZV9mbGFnID0gQ09NUF9OT19GTEFHOwogCi0Jd2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAmIzM0O2FkbW5wc3RQaCYjMzQ7LCBsb25nb3B0cywgTlVMTCkpICE9IC0xKQomIzQzOwl3aGlsZSAoKG9wdCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICYjMzQ7YWRtbnBzdFBNaCYjMzQ7LCBsb25nb3B0cywgTlVMTCkpICE9IC0xKQogCQlzd2l0Y2ggKG9wdCkgewogCQljYXNlICYjMzk7YSYjMzk7OgogCQkJY29tcGFyZV9mbGFnIHw9IENPTVBfQUxMT0M7CkBAIC03NTMsNiAmIzQzOzgzMCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJY2FzZSAmIzM5O24mIzM5OzoKIAkJCWNvbXBhcmVfZmxhZyB8PSBDT01QX0NPTU07CiAJCQlicmVhazsKJiM0MzsJCWNhc2UgJiMzOTtNJiMzOTs6CiYjNDM7CQkJY29tcGFyZV9mbGFnIHw9IENPTVBfTU9EVUxFOwomIzQzOwkJCWJyZWFrOwogCQljYXNlICYjMzk7aCYjMzk7OgogCQkJdXNhZ2UoKTsKIAkJCWV4aXQoMCk7CkBAIC03OTIsNiAmIzQzOzg3MiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJZXhpdCgxKTsKIAkJCX0KIAkJCWJyZWFrOwomIzQzOwkJY2FzZSA2OgomIzQzOwkJCWZpbHRlciA9IGZpbHRlciB8IEZJTFRFUl9NT0RVTEU7CiYjNDM7CQkJZmMubW9kdWxlcyA9IGV4cGxvZGUoJiMzOTssJiMzOTssIG9wdGFyZywgJmFtcDtmYy5tb2R1bGVzX3NpemUpOwomIzQzOwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdXNhZ2UoKTsKIAkJCWV4aXQoMSk7CkBAIC04MjEsNiAmIzQzOzkwNSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXNldF9zaW5nbGVfY21wKGNvbXBhcmVfc3RhY2t0cmFjZSwgU09SVF9BU0MpOwogCQlicmVhazsKIAljYXNlIENPTVBfTk9fRkxBRzoKJiM0MzsJCWlmIChzYy5zaXplICZndDsgMCkKJiM0MzsJCQlicmVhazsKJiM0MzsJCXNldF9zaW5nbGVfY21wKGNvbXBhcmVfbnVtLCBTT1JUX0RFU0MpOwomIzQzOwkJYnJlYWs7CiAJY2FzZSBDT01QX05VTToKIAkJc2V0X3NpbmdsZV9jbXAoY29tcGFyZV9udW0sIFNPUlRfREVTQyk7CiAJCWJyZWFrOwpAQCAtODMwLDYgJiM0Mzs5MTgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJY2FzZSBDT01QX0NPTU06CiAJCXNldF9zaW5nbGVfY21wKGNvbXBhcmVfY29tbSwgU09SVF9BU0MpOwogCQlicmVhazsKJiM0MzsJY2FzZSBDT01QX01PRFVMRToKJiM0MzsJCXNldF9zaW5nbGVfY21wKGNvbXBhcmVfbW9kdWxlLCBTT1JUX0FTQyk7CiYjNDM7CQlicmVhazsKIAlkZWZhdWx0OgogCQl1c2FnZSgpOwogCQlleGl0KDEpOwpAQCAtODUzLDYgJiM0Mzs5NDQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWdvdG8gb3V0X2NvbW07CiAJaWYgKCFjaGVja19yZWdjb21wKCZhbXA7dHNfbnNlY19wYXR0ZXJuLCAmIzM0O3RzXFxzKihbMC05XSopXFxzKm5zJiMzNDspKQogCQlnb3RvIG91dF90czsKJiM0MzsJaWYgKCFjaGVja19yZWdjb21wKCZhbXA7bW9kdWxlX3BhdHRlcm4sICYjMzQ7XFwmIzQzOzB4WzAtOWEtZl0mIzQzOy8weFswLTlhLWZdJiM0MztcXHMqXFxbKFthLXpBLVowLTlfLV0mIzQzOylcXF0mIzM0OykpCiYjNDM7CQlnb3RvIG91dF9tb2R1bGU7CiAKIAlmc3RhdChmaWxlbm8oZmluKSwgJmFtcDtzdCk7CiAJbWF4X3NpemUgPSBzdC5zdF9zaXplIC8gMTAwOyAvKiBoYWNrIC4uLiAqLwpAQCAtOTExLDYgJiM0MzsxMDA0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWZwcmludGYoZm91dCwgJiMzNDssIFRHSUQgJWQmIzM0OywgbGlzdFtpXS50Z2lkKTsKIAkJCWlmIChjdWxsICZhbXA7IENVTExfQ09NTSB8fCBmaWx0ZXIgJmFtcDsgRklMVEVSX0NPTU0pCiAJCQkJZnByaW50Zihmb3V0LCAmIzM0OywgdGFza19jb21tX25hbWU6ICVzJiMzNDssIGxpc3RbaV0uY29tbSk7CiYjNDM7CQkJaWYgKGN1bGwgJmFtcDsgQ1VMTF9NT0RVTEUgfHwgZmlsdGVyICZhbXA7IEZJTFRFUl9NT0RVTEUpCiYjNDM7CQkJCWZwcmludGYoZm91dCwgJiMzNDssIG1vZHVsZTogJXMmIzM0OywgbGlzdFtpXS5tb2R1bGUpOwogCQkJaWYgKGN1bGwgJmFtcDsgQ1VMTF9BTExPQ0FUT1IpIHsKIAkJCQlmcHJpbnRmKGZvdXQsICYjMzQ7LCAmIzM0Oyk7CiAJCQkJcHJpbnRfYWxsb2NhdG9yKGZvdXQsIGxpc3RbaV0uYWxsb2NhdG9yKTsKQEAgLTkzMSw2ICYjNDM7MTAyNiw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWZyZWVfYmxvY2tfbGlzdCgmYW1wO2xpc3RbaV0pOwogCQlmcmVlKGxpc3QpOwogCX0KJiM0MztvdXRfbW9kdWxlOgomIzQzOwlyZWdmcmVlKCZhbXA7bW9kdWxlX3BhdHRlcm4pOwogb3V0X3RzOgogCXJlZ2ZyZWUoJmFtcDt0c19uc2VjX3BhdHRlcm4pOwogb3V0X2NvbW06CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NzkKCQkJCQkJCW91dHB1dDogNjkKCQkJCQkJCXRob3VnaHRzOiAzMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggRXZhbHVhdGlvbjogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGFzc2VzcyB0aGlzIHBhdGNoIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5ICpub3QqIHdvcnRoIGZ1enppbmcsIGJ1dCBsZXQmIzM5O3MgYmUgdGhvcm91Z2guIFRoZSBwYXRjaCB0b3VjaGVzIGBEb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0YCBhbmQgYHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jYC4gUmlnaHQgYXdheSwgdGhlIGB0b29scy9gIGRpcmVjdG9yeSBpcyBhIHJlZCBmbGFnIGluIHRlcm1zIG9mIHN5emthbGxlciBmdXp6aW5nIHRhcmdldHM7IHRvb2xzIGluIHRoZXJlIGFyZSBnZW5lcmFsbHkgdXNlci1zcGFjZSB1dGlsaXRpZXMgYW5kIG5vdCBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCBleGVjdXRpb24gcGF0aCB3ZSYjMzk7cmUgdGFyZ2V0aW5nLgoKV2FpdCwganVzdCBhIHNhbml0eSBjaGVjay4gTGV0JiMzOTtzIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBrZXJuZWwgY2hhbmdlcyBidXJpZWQgaW4gdGhlcmUuIERvdWJsZS1jaGVja2luZy4uLiBZZXAsIHRoZSBkaWZmIG9ubHkgc2hvd3MgdGhvc2UgdHdvIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdGAgYW5kIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AuIE9rYXksIHNvIHdlJiMzOTtyZSBzYWZlLiBVc2VyLXNwYWNlIHRvb2xzIGFyZSBleHBsaWNpdGx5ICpvdXRzaWRlKiB0aGUgc2NvcGUgb2Ygd2hhdCB3ZSB3YW50IHRvIGZ1enogd2l0aCBzeXprYWxsZXIuCgpMZXQmIzM5O3MgY29uZmlybSB0aG9zZSBmaWxlIGxvY2F0aW9ucyBhZ2FpbjoKCiogICBgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdGAgLSBEb2N1bWVudGF0aW9uLCBub3QgY29kZS4KKiAgIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AgLSBVc2VyLXNwYWNlIHRvb2wuCgpTbywgc2luY2UgYm90aCBtb2RpZmllZCBmaWxlcyBhcmUgZGVmaW5pdGVseSAqbm90KiBrZXJuZWwgc291cmNlLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgY29uZmluZWQgdG8gYSB1c2VyLXNwYWNlIHV0aWxpdHkgYW5kIGl0cyBkb2N1bWVudGF0aW9uLiBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZiwgc28gdGhlcmUmIzM5O3Mgbm90aGluZyBmb3Igc3l6a2FsbGVyIHRvIHRhcmdldC4KCk5vdywgbGV0JiMzOTtzIHB1dCBpdCBhbGwgdG9nZXRoZXIgY29uY2lzZWx5LgoKYFdvcnRoRnV6emluZzogZmFsc2VgCmBGb2N1c1N5bWJvbHM6IFtdYApgRW5hYmxlQ29uZmlnczogW11gCmBSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0O2AKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo1Mjo0Ni4zMjYwMzU4MTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTc4MjUzMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlci1zcGFjZSB0b29sICh0b29scy9tbS9wYWdlX293bmVyX3NvcnQuYykgYW5kIGl0cyBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo1Mjo0Ni4zMjYwNDQyMDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMDU1MDk2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVmYjAyMTkwYjIxMmMyZWVmMmIzMWJiZjQ0N2U2NTE3ODM2ODFlODNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo1Mjo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxcbmluZGV4IGE2YmQzZmU2NDIzYWQuLmJkMDI3Mzc3ZGZmNmUgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3RcXG5AQCAtMTk5LDYgKzE5OSw3IEBAIFVzYWdlXFxuIFxcdFxcdC1wXFx0XFx0U29ydCBieSBwaWQuXFxuIFxcdFxcdC1QXFx0XFx0U29ydCBieSB0Z2lkLlxcbiBcXHRcXHQtblxcdFxcdFNvcnQgYnkgdGFzayBjb21tYW5kIG5hbWUuXFxuK1xcdFxcdC1NXFx0XFx0U29ydCBieSBtb2R1bGUgbmFtZS5cXG4gXFx0XFx0LXJcXHRcXHRTb3J0IGJ5IG1lbW9yeSByZWxlYXNlIHRpbWUuXFxuIFxcdFxcdC1zXFx0XFx0U29ydCBieSBzdGFjayB0cmFjZS5cXG4gXFx0XFx0LXRcXHRcXHRTb3J0IGJ5IHRpbWVzIChkZWZhdWx0KS5cXG5AQCAtMjQwLDggKzI0MSwxMCBAQCBVc2FnZVxcbiBcXHRcXHRcXHRcXHRcXHRncm91cCBJRCBudW1iZXJzIGFwcGVhciBpbiBcXHUwMDNjdGdpZGxpc3RcXHUwMDNlLlxcbiBcXHRcXHQtLW5hbWUgXFx1MDAzY2NtZGxpc3RcXHUwMDNlXFx0U2VsZWN0IGJ5IHRhc2sgY29tbWFuZCBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlIGJsb2NrcyB3aG9zZVxcbiBcXHRcXHRcXHRcXHRcXHR0YXNrIGNvbW1hbmQgbmFtZSBhcHBlYXIgaW4gXFx1MDAzY2NtZGxpc3RcXHUwMDNlLlxcbitcXHRcXHQtLW1vZHVsZSBcXHUwMDNjbW9kbGlzdFxcdTAwM2VcXHRTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgYmxvY2tzIHdob3NlXFxuK1xcdFxcdFxcdFxcdFxcdG1vZHVsZSBuYW1lIGFwcGVhciBpbiBcXHUwMDNjbW9kbGlzdFxcdTAwM2UuXFxuIFxcbi1cXHRcXHRcXHUwMDNjcGlkbGlzdFxcdTAwM2UsIFxcdTAwM2N0Z2lkbGlzdFxcdTAwM2UsIFxcdTAwM2NjbWRsaXN0XFx1MDAzZSBhcmUgc2luZ2xlIGFyZ3VtZW50cyBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LFxcbitcXHRcXHRcXHUwMDNjcGlkbGlzdFxcdTAwM2UsIFxcdTAwM2N0Z2lkbGlzdFxcdTAwM2UsIFxcdTAwM2NjbWRsaXN0XFx1MDAzZSwgXFx1MDAzY21vZGxpc3RcXHUwMDNlIGFyZSBzaW5nbGUgYXJndW1lbnRzIGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsXFxuIFxcdFxcdHdoaWNoIG9mZmVycyBhIHdheSB0byBzcGVjaWZ5IGluZGl2aWR1YWwgc2VsZWN0aW5nIHJ1bGVzLlxcbiBcXG4gXFxuQEAgLTI0OSw2ICsyNTIsNyBAQCBVc2FnZVxcbiBcXHRcXHRcXHRcXHQuL3BhZ2Vfb3duZXJfc29ydCBcXHUwMDNjaW5wdXRcXHUwMDNlIFxcdTAwM2NvdXRwdXRcXHUwMDNlIC0tcGlkPTFcXG4gXFx0XFx0XFx0XFx0Li9wYWdlX293bmVyX3NvcnQgXFx1MDAzY2lucHV0XFx1MDAzZSBcXHUwMDNjb3V0cHV0XFx1MDAzZSAtLXRnaWQ9MSwyLDNcXG4gXFx0XFx0XFx0XFx0Li9wYWdlX293bmVyX3NvcnQgXFx1MDAzY2lucHV0XFx1MDAzZSBcXHUwMDNjb3V0cHV0XFx1MDAzZSAtLW5hbWUgbmFtZTEsbmFtZTJcXG4rXFx0XFx0XFx0XFx0Li9wYWdlX293bmVyX3NvcnQgXFx1MDAzY2lucHV0XFx1MDAzZSBcXHUwMDNjb3V0cHV0XFx1MDAzZSAtLW1vZHVsZSB4ZnMsZXh0NFxcbiBcXG4gU1RBTkRBUkQgRk9STUFUIFNQRUNJRklFUlNcXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5AQCAtMjY1LDYgKzI2OSw3IEBAIFNUQU5EQVJEIEZPUk1BVCBTUEVDSUZJRVJTXFxuIFxcdGZ0XFx0XFx0ZnJlZV90c1xcdFxcdHRpbWVzdGFtcCBvZiB0aGUgcGFnZSB3aGVuIGl0IHdhcyByZWxlYXNlZFxcbiBcXHRhdFxcdFxcdGFsbG9jX3RzXFx0dGltZXN0YW1wIG9mIHRoZSBwYWdlIHdoZW4gaXQgd2FzIGFsbG9jYXRlZFxcbiBcXHRhdG9yXFx0XFx0YWxsb2NhdG9yXFx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcXG4rXFx0bW9kXFx0XFx0bW9kdWxlXFx0XFx0a2VybmVsIG1vZHVsZSBuYW1lXFxuIFxcbiAgIEZvciAtLWN1bGwgb3B0aW9uOlxcbiBcXG5AQCAtMjc1LDYgKzI4MCw3IEBAIFNUQU5EQVJEIEZPUk1BVCBTUEVDSUZJRVJTXFxuIFxcdGZcXHRcXHRmcmVlXFx0XFx0d2hldGhlciB0aGUgcGFnZSBoYXMgYmVlbiByZWxlYXNlZCBvciBub3RcXG4gXFx0c3RcXHRcXHRzdGFja3RyYWNlXFx0c3RhY2sgdHJhY2Ugb2YgdGhlIHBhZ2UgYWxsb2NhdGlvblxcbiBcXHRhdG9yXFx0XFx0YWxsb2NhdG9yXFx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcXG4rXFx0bW9kXFx0XFx0bW9kdWxlXFx0XFx0a2VybmVsIG1vZHVsZSBuYW1lXFxuIFxcbiBGaWx0ZXJpbmcgcGFnZV9vd25lciBvdXRwdXRcXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbmRpZmYgLS1naXQgYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXFxuaW5kZXggMzVkM2QyNTQ5NDFjOS4uYzViYzNiNTI0YzBhOSAxMDA2NDRcXG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xcbisrKyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXFxuQEAgLTI1LDExICsyNSwxMyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjZ2V0b3B0LmhcXHUwMDNlXFxuIFxcbiAjZGVmaW5lIFRBU0tfQ09NTV9MRU4gMTZcXG4rI2RlZmluZSBNT0RVTEVfTkFNRV9MRU4gNjRcXG4gXFxuIHN0cnVjdCBibG9ja19saXN0IHtcXG4gXFx0Y2hhciAqdHh0O1xcbiBcXHRjaGFyICpjb21tOyAvLyB0YXNrIGNvbW1hbmQgbmFtZVxcbiBcXHRjaGFyICpzdGFja3RyYWNlO1xcbitcXHRjaGFyICptb2R1bGU7IC8vIGtlcm5lbCBtb2R1bGUgbmFtZVxcbiBcXHRfX3U2NCB0c19uc2VjO1xcbiBcXHRpbnQgbGVuO1xcbiBcXHRpbnQgbnVtO1xcbkBAIC00MSw3ICs0Myw4IEBAIHN0cnVjdCBibG9ja19saXN0IHtcXG4gZW51bSBGSUxURVJfQklUIHtcXG4gXFx0RklMVEVSX1BJRCA9IDFcXHUwMDNjXFx1MDAzYzEsXFxuIFxcdEZJTFRFUl9UR0lEID0gMVxcdTAwM2NcXHUwMDNjMixcXG4tXFx0RklMVEVSX0NPTU0gPSAxXFx1MDAzY1xcdTAwM2MzXFxuK1xcdEZJTFRFUl9DT01NID0gMVxcdTAwM2NcXHUwMDNjMyxcXG4rXFx0RklMVEVSX01PRFVMRSA9IDFcXHUwMDNjXFx1MDAzYzRcXG4gfTtcXG4gXFxuIGVudW0gRklMVEVSX1JFU1VMVCB7XFxuQEAgLTU1LDcgKzU4LDggQEAgZW51bSBDVUxMX0JJVCB7XFxuIFxcdENVTExfVEdJRCA9IDFcXHUwMDNjXFx1MDAzYzIsXFxuIFxcdENVTExfQ09NTSA9IDFcXHUwMDNjXFx1MDAzYzMsXFxuIFxcdENVTExfU1RBQ0tUUkFDRSA9IDFcXHUwMDNjXFx1MDAzYzQsXFxuLVxcdENVTExfQUxMT0NBVE9SID0gMVxcdTAwM2NcXHUwMDNjNVxcbitcXHRDVUxMX0FMTE9DQVRPUiA9IDFcXHUwMDNjXFx1MDAzYzUsXFxuK1xcdENVTExfTU9EVUxFID0gMVxcdTAwM2NcXHUwMDNjNlxcbiB9O1xcbiBlbnVtIEFMTE9DQVRPUl9CSVQge1xcbiBcXHRBTExPQ0FUT1JfQ01BID0gMVxcdTAwM2NcXHUwMDNjMSxcXG5AQCAtNjUsNyArNjksOCBAQCBlbnVtIEFMTE9DQVRPUl9CSVQge1xcbiB9O1xcbiBlbnVtIEFSR19UWVBFIHtcXG4gXFx0QVJHX1RYVCwgQVJHX0NPTU0sIEFSR19TVEFDS1RSQUNFLCBBUkdfQUxMT0NfVFMsIEFSR19DVUxMX1RJTUUsXFxuLVxcdEFSR19QQUdFX05VTSwgQVJHX1BJRCwgQVJHX1RHSUQsIEFSR19VTktOT1dOLCBBUkdfQUxMT0NBVE9SXFxuK1xcdEFSR19QQUdFX05VTSwgQVJHX1BJRCwgQVJHX1RHSUQsIEFSR19VTktOT1dOLCBBUkdfQUxMT0NBVE9SLFxcbitcXHRBUkdfTU9EVUxFXFxuIH07XFxuIGVudW0gU09SVF9PUkRFUiB7XFxuIFxcdFNPUlRfQVNDID0gMSxcXG5AQCAtNzksMTUgKzg0LDE4IEBAIGVudW0gQ09NUF9GTEFHIHtcXG4gXFx0Q09NUF9TVEFDSyA9IDFcXHUwMDNjXFx1MDAzYzMsXFxuIFxcdENPTVBfTlVNID0gMVxcdTAwM2NcXHUwMDNjNCxcXG4gXFx0Q09NUF9UR0lEID0gMVxcdTAwM2NcXHUwMDNjNSxcXG4tXFx0Q09NUF9DT01NID0gMVxcdTAwM2NcXHUwMDNjNlxcbitcXHRDT01QX0NPTU0gPSAxXFx1MDAzY1xcdTAwM2M2LFxcbitcXHRDT01QX01PRFVMRSA9IDFcXHUwMDNjXFx1MDAzYzdcXG4gfTtcXG4gc3RydWN0IGZpbHRlcl9jb25kaXRpb24ge1xcbiBcXHRwaWRfdCAqcGlkcztcXG4gXFx0cGlkX3QgKnRnaWRzO1xcbiBcXHRjaGFyICoqY29tbXM7XFxuK1xcdGNoYXIgKiptb2R1bGVzO1xcbiBcXHRpbnQgcGlkc19zaXplO1xcbiBcXHRpbnQgdGdpZHNfc2l6ZTtcXG4gXFx0aW50IGNvbW1zX3NpemU7XFxuK1xcdGludCBtb2R1bGVzX3NpemU7XFxuIH07XFxuIHN0cnVjdCBzb3J0X2NvbmRpdGlvbiB7XFxuIFxcdGludCAoKipjbXBzKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7XFxuQEAgLTEwMSw2ICsxMDksNyBAQCBzdGF0aWMgcmVnZXhfdCBwaWRfcGF0dGVybjtcXG4gc3RhdGljIHJlZ2V4X3QgdGdpZF9wYXR0ZXJuO1xcbiBzdGF0aWMgcmVnZXhfdCBjb21tX3BhdHRlcm47XFxuIHN0YXRpYyByZWdleF90IHRzX25zZWNfcGF0dGVybjtcXG4rc3RhdGljIHJlZ2V4X3QgbW9kdWxlX3BhdHRlcm47XFxuIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfbGlzdCAqbGlzdDtcXG4gc3RhdGljIGludCBsaXN0X3NpemU7XFxuIHN0YXRpYyBpbnQgbWF4X3NpemU7XFxuQEAgLTE4NCw2ICsxOTMsMTMgQEAgc3RhdGljIGludCBjb21wYXJlX2NvbW0oY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKVxcbiBcXHRyZXR1cm4gc3RyY21wKGwxLVxcdTAwM2Vjb21tLCBsMi1cXHUwMDNlY29tbSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgY29tcGFyZV9tb2R1bGUoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBibG9ja19saXN0ICpsMSA9IHAxLCAqbDIgPSBwMjtcXG4rXFxuK1xcdHJldHVybiBzdHJjbXAobDEtXFx1MDAzZW1vZHVsZSwgbDItXFx1MDAzZW1vZHVsZSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgY29tcGFyZV90cyhjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IGJsb2NrX2xpc3QgKmwxID0gcDEsICpsMiA9IHAyO1xcbkBAIC0yMDcsNiArMjIzLDggQEAgc3RhdGljIGludCBjb21wYXJlX2N1bGxfY29uZGl0aW9uKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMilcXG4gXFx0XFx0cmV0dXJuIGNvbXBhcmVfdGdpZChwMSwgcDIpO1xcbiBcXHRpZiAoKGN1bGwgXFx1MDAyNiBDVUxMX0NPTU0pIFxcdTAwMjZcXHUwMDI2IGNvbXBhcmVfY29tbShwMSwgcDIpKVxcbiBcXHRcXHRyZXR1cm4gY29tcGFyZV9jb21tKHAxLCBwMik7XFxuK1xcdGlmICgoY3VsbCBcXHUwMDI2IENVTExfTU9EVUxFKSBcXHUwMDI2XFx1MDAyNiBjb21wYXJlX21vZHVsZShwMSwgcDIpKVxcbitcXHRcXHRyZXR1cm4gY29tcGFyZV9tb2R1bGUocDEsIHAyKTtcXG4gXFx0aWYgKChjdWxsIFxcdTAwMjYgQ1VMTF9BTExPQ0FUT1IpIFxcdTAwMjZcXHUwMDI2IGNvbXBhcmVfYWxsb2NhdG9yKHAxLCBwMikpXFxuIFxcdFxcdHJldHVybiBjb21wYXJlX2FsbG9jYXRvcihwMSwgcDIpO1xcbiBcXHRyZXR1cm4gMDtcXG5AQCAtNDExLDkgKzQyOSwzMyBAQCBzdGF0aWMgY2hhciAqZ2V0X2NvbW0oY2hhciAqYnVmKVxcbiBcXHRyZXR1cm4gY29tbV9zdHI7XFxuIH1cXG4gXFxuK3N0YXRpYyBjaGFyICpnZXRfbW9kdWxlKGNoYXIgKmJ1ZilcXG4re1xcbitcXHRjaGFyICptb2R1bGVfc3RyID0gbWFsbG9jKE1PRFVMRV9OQU1FX0xFTik7XFxuK1xcdHJlZ21hdGNoX3QgcG1hdGNoWzJdO1xcbitcXHRpbnQgdmFsX2xlbjtcXG4rXFxuK1xcdGlmICghbW9kdWxlX3N0cilcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdG1lbXNldChtb2R1bGVfc3RyLCAwLCBNT0RVTEVfTkFNRV9MRU4pO1xcbitcXHRpZiAocmVnZXhlYyhcXHUwMDI2bW9kdWxlX3BhdHRlcm4sIGJ1ZiwgMiwgcG1hdGNoLCBSRUdfTk9UQk9MKSAhPSAwIHx8IHBtYXRjaFsxXS5ybV9zbyA9PSAtMSkge1xcbitcXHRcXHRzdHJjcHkobW9kdWxlX3N0ciwgXFxcInZtbGludXhcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIG1vZHVsZV9zdHI7XFxuK1xcdH1cXG4rXFxuK1xcdHZhbF9sZW4gPSBwbWF0Y2hbMV0ucm1fZW8gLSBwbWF0Y2hbMV0ucm1fc287XFxuK1xcdGlmICgoc2l6ZV90KXZhbF9sZW4gXFx1MDAzZT0gTU9EVUxFX05BTUVfTEVOKVxcbitcXHRcXHR2YWxfbGVuID0gTU9EVUxFX05BTUVfTEVOIC0gMTtcXG4rXFx0bWVtY3B5KG1vZHVsZV9zdHIsIGJ1ZiArIHBtYXRjaFsxXS5ybV9zbywgdmFsX2xlbik7XFxuK1xcdG1vZHVsZV9zdHJbdmFsX2xlbl0gPSAnXFxcXDAnO1xcbitcXG4rXFx0cmV0dXJuIG1vZHVsZV9zdHI7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGZyZWVfYmxvY2tfbGlzdChzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2spXFxuIHtcXG4gXFx0ZnJlZShibG9jay1cXHUwMDNlY29tbSk7XFxuK1xcdGZyZWUoYmxvY2stXFx1MDAzZW1vZHVsZSk7XFxuIFxcdGZyZWUoYmxvY2stXFx1MDAzZXR4dCk7XFxuIH1cXG4gXFxuQEAgLTQzMyw2ICs0NzUsOCBAQCBzdGF0aWMgaW50IGdldF9hcmdfdHlwZShjb25zdCBjaGFyICphcmcpXFxuIFxcdFxcdHJldHVybiBBUkdfQUxMT0NfVFM7XFxuIFxcdGVsc2UgaWYgKCFzdHJjbXAoYXJnLCBcXFwiYWxsb2NhdG9yXFxcIikgfHwgIXN0cmNtcChhcmcsIFxcXCJhdG9yXFxcIikpXFxuIFxcdFxcdHJldHVybiBBUkdfQUxMT0NBVE9SO1xcbitcXHRlbHNlIGlmICghc3RyY21wKGFyZywgXFxcIm1vZHVsZVxcXCIpIHx8ICFzdHJjbXAoYXJnLCBcXFwibW9kXFxcIikpXFxuK1xcdFxcdHJldHVybiBBUkdfTU9EVUxFO1xcbiBcXHRlbHNlIHtcXG4gXFx0XFx0cmV0dXJuIEFSR19VTktOT1dOO1xcbiBcXHR9XFxuQEAgLTQ4MywyNSArNTI3LDM2IEBAIHN0YXRpYyBib29sIG1hdGNoX3N0cl9saXN0KGNvbnN0IGNoYXIgKnN0ciwgY2hhciAqKmxpc3QsIGludCBsaXN0X3NpemUpXFxuIFxcbiBzdGF0aWMgZW51bSBGSUxURVJfUkVTVUxUIGZpbHRlcl9yZWNvcmQoY2hhciAqYnVmKVxcbiB7XFxuLVxcdGNoYXIgKmNvbW07XFxuK1xcdGNoYXIgKmNvbW0sICptb2R1bGU7XFxuIFxcbiBcXHRpZiAoKGZpbHRlciBcXHUwMDI2IEZJTFRFUl9QSUQpIFxcdTAwMjZcXHUwMDI2ICFtYXRjaF9udW1fbGlzdChnZXRfcGlkKGJ1ZiksIGZjLnBpZHMsIGZjLnBpZHNfc2l6ZSkpXFxuIFxcdFxcdHJldHVybiBGSUxURVJfU0tJUDtcXG4gXFx0aWYgKChmaWx0ZXIgXFx1MDAyNiBGSUxURVJfVEdJRCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0IW1hdGNoX251bV9saXN0KGdldF90Z2lkKGJ1ZiksIGZjLnRnaWRzLCBmYy50Z2lkc19zaXplKSlcXG4gXFx0XFx0cmV0dXJuIEZJTFRFUl9TS0lQO1xcbi1cXHRpZiAoIShmaWx0ZXIgXFx1MDAyNiBGSUxURVJfQ09NTSkpXFxuK1xcdGlmICghKGZpbHRlciBcXHUwMDI2IChGSUxURVJfQ09NTSB8IEZJTFRFUl9NT0RVTEUpKSlcXG4gXFx0XFx0cmV0dXJuIEZJTFRFUl9NQVRDSDtcXG4gXFxuLVxcdGNvbW0gPSBnZXRfY29tbShidWYpO1xcbi1cXHRpZiAoIWNvbW0pXFxuLVxcdFxcdHJldHVybiBGSUxURVJfRVJST1I7XFxuLVxcbi1cXHRpZiAoIW1hdGNoX3N0cl9saXN0KGNvbW0sIGZjLmNvbW1zLCBmYy5jb21tc19zaXplKSkge1xcbitcXHRpZiAoZmlsdGVyIFxcdTAwMjYgRklMVEVSX0NPTU0pIHtcXG4rXFx0XFx0Y29tbSA9IGdldF9jb21tKGJ1Zik7XFxuK1xcdFxcdGlmICghY29tbSlcXG4rXFx0XFx0XFx0cmV0dXJuIEZJTFRFUl9FUlJPUjtcXG4rXFx0XFx0aWYgKCFtYXRjaF9zdHJfbGlzdChjb21tLCBmYy5jb21tcywgZmMuY29tbXNfc2l6ZSkpIHtcXG4rXFx0XFx0XFx0ZnJlZShjb21tKTtcXG4rXFx0XFx0XFx0cmV0dXJuIEZJTFRFUl9TS0lQO1xcbitcXHRcXHR9XFxuIFxcdFxcdGZyZWUoY29tbSk7XFxuLVxcdFxcdHJldHVybiBGSUxURVJfU0tJUDtcXG4gXFx0fVxcbi1cXHRmcmVlKGNvbW0pO1xcbitcXHRpZiAoZmlsdGVyIFxcdTAwMjYgRklMVEVSX01PRFVMRSkge1xcbitcXHRcXHRtb2R1bGUgPSBnZXRfbW9kdWxlKGJ1Zik7XFxuK1xcdFxcdGlmICghbW9kdWxlKVxcbitcXHRcXHRcXHRyZXR1cm4gRklMVEVSX0VSUk9SO1xcbitcXHRcXHRpZiAoIW1hdGNoX3N0cl9saXN0KG1vZHVsZSwgZmMubW9kdWxlcywgZmMubW9kdWxlc19zaXplKSkge1xcbitcXHRcXHRcXHRmcmVlKG1vZHVsZSk7XFxuK1xcdFxcdFxcdHJldHVybiBGSUxURVJfU0tJUDtcXG4rXFx0XFx0fVxcbitcXHRcXHRmcmVlKG1vZHVsZSk7XFxuK1xcdH1cXG4gXFx0cmV0dXJuIEZJTFRFUl9NQVRDSDtcXG4gfVxcbiBcXG5AQCAtNTQ3LDYgKzYwMiwxMiBAQCBzdGF0aWMgYm9vbCBhZGRfbGlzdChjaGFyICpidWYsIGludCBsZW4sIGNoYXIgKmV4dF9idWYpXFxuIFxcdFxcdGxpc3RbbGlzdF9zaXplXS5zdGFja3RyYWNlKys7XFxuIFxcdGxpc3RbbGlzdF9zaXplXS50c19uc2VjID0gZ2V0X3RzX25zZWMoYnVmKTtcXG4gXFx0bGlzdFtsaXN0X3NpemVdLmFsbG9jYXRvciA9IGdldF9hbGxvY2F0b3IoYnVmLCBleHRfYnVmKTtcXG4rXFx0bGlzdFtsaXN0X3NpemVdLm1vZHVsZSA9IGdldF9tb2R1bGUoYnVmKTtcXG4rXFx0aWYgKCFsaXN0W2xpc3Rfc2l6ZV0ubW9kdWxlKSB7XFxuK1xcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiT3V0IG9mIG1lbW9yeVxcXFxuXFxcIik7XFxuK1xcdFxcdGZyZWVfYmxvY2tfbGlzdChcXHUwMDI2bGlzdFtsaXN0X3NpemVdKTtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuIFxcdGxpc3Rfc2l6ZSsrO1xcbiBcXHRpZiAobGlzdF9zaXplICUgMTAwMCA9PSAwKSB7XFxuIFxcdFxcdHByaW50ZihcXFwibG9hZGVkICVkXFxcXHJcXFwiLCBsaXN0X3NpemUpO1xcbkBAIC01NzMsNiArNjM0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VfY3VsbF9hcmdzKGNvbnN0IGNoYXIgKmFyZ19zdHIpXFxuIFxcdFxcdFxcdGN1bGwgfD0gQ1VMTF9TVEFDS1RSQUNFO1xcbiBcXHRcXHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfQUxMT0NBVE9SKVxcbiBcXHRcXHRcXHRjdWxsIHw9IENVTExfQUxMT0NBVE9SO1xcbitcXHRcXHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfTU9EVUxFKVxcbitcXHRcXHRcXHRjdWxsIHw9IENVTExfTU9EVUxFO1xcbiBcXHRcXHRlbHNlIHtcXG4gXFx0XFx0XFx0ZnJlZV9leHBsb2RlKGFyZ3MsIHNpemUpO1xcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuQEAgLTYzNSw2ICs2OTgsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZV9zb3J0X2FyZ3MoY29uc3QgY2hhciAqYXJnX3N0cilcXG4gXFx0XFx0XFx0c2MuY21wc1tpXSA9IGNvbXBhcmVfdHh0O1xcbiBcXHRcXHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfQUxMT0NBVE9SKVxcbiBcXHRcXHRcXHRzYy5jbXBzW2ldID0gY29tcGFyZV9hbGxvY2F0b3I7XFxuK1xcdFxcdGVsc2UgaWYgKGFyZ190eXBlID09IEFSR19NT0RVTEUpXFxuK1xcdFxcdFxcdHNjLmNtcHNbaV0gPSBjb21wYXJlX21vZHVsZTtcXG4gXFx0XFx0ZWxzZSB7XFxuIFxcdFxcdFxcdGZyZWVfZXhwbG9kZShhcmdzLCBzaXplKTtcXG4gXFx0XFx0XFx0c2Muc2l6ZSA9IDA7XFxuQEAgLTY5MSw3ICs3NTYsOCBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKVxcbiBcXHRcXHRcXFwiLXBcXFxcdFxcXFx0XFxcXHRTb3J0IGJ5IHBpZC5cXFxcblxcXCJcXG4gXFx0XFx0XFxcIi1QXFxcXHRcXFxcdFxcXFx0U29ydCBieSB0Z2lkLlxcXFxuXFxcIlxcbiBcXHRcXHRcXFwiLXNcXFxcdFxcXFx0XFxcXHRTb3J0IGJ5IHRoZSBzdGFja3RyYWNlLlxcXFxuXFxcIlxcbi1cXHRcXHRcXFwiLXRcXFxcdFxcXFx0XFxcXHRTb3J0IGJ5IG51bWJlciBvZiB0aW1lcyByZWNvcmQgaXMgc2VlbiAoZGVmYXVsdCkuXFxcXG5cXFxcblxcXCJcXG4rXFx0XFx0XFxcIi10XFxcXHRcXFxcdFxcXFx0U29ydCBieSBudW1iZXIgb2YgdGltZXMgcmVjb3JkIGlzIHNlZW4gKGRlZmF1bHQpLlxcXFxuXFxcIlxcbitcXHRcXHRcXFwiLU1cXFxcdFxcXFx0XFxcXHRTb3J0IGJ5IG1vZHVsZSBuYW1lLlxcXFxuXFxcXG5cXFwiXFxuIFxcdFxcdFxcXCItLXBpZCBcXHUwMDNjcGlkbGlzdFxcdTAwM2VcXFxcdFxcXFx0U2VsZWN0IGJ5IHBpZC4gVGhpcyBzZWxlY3RzIHRoZSBpbmZvcm1hdGlvblxcXCJcXG4gXFx0XFx0XFxcIiBvZlxcXFxuXFxcXHRcXFxcdFxcXFx0YmxvY2tzIHdob3NlIHByb2Nlc3MgSUQgbnVtYmVycyBhcHBlYXIgaW4gXFx1MDAzY3BpZGxpc3RcXHUwMDNlLlxcXFxuXFxcIlxcbiBcXHRcXHRcXFwiLS10Z2lkIFxcdTAwM2N0Z2lkbGlzdFxcdTAwM2VcXFxcdFNlbGVjdCBieSB0Z2lkLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXFxcIlxcbkBAIC03MDAsMTEgKzc2NiwyMSBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKVxcbiBcXHRcXHRcXFwiLS1uYW1lIFxcdTAwM2NjbWRsaXN0XFx1MDAzZVxcXFx0U2VsZWN0IGJ5IGNvbW1hbmQgbmFtZS4gVGhpcyBzZWxlY3RzIHRoZVxcXCJcXG4gXFx0XFx0XFxcIiBpbmZvcm1hdGlvblxcXFxuXFxcXHRcXFxcdFxcXFx0b2YgYmxvY2tzIHdob3NlIGNvbW1hbmQgbmFtZSBhcHBlYXJzIGluXFxcIlxcbiBcXHRcXHRcXFwiIFxcdTAwM2NjbWRsaXN0XFx1MDAzZS5cXFxcblxcXCJcXG4tXFx0XFx0XFxcIi0tY3VsbCBcXHUwMDNjcnVsZXNcXHUwMDNlXFxcXHRcXFxcdEN1bGwgYnkgdXNlci1kZWZpbmVkIHJ1bGVzLiBcXHUwMDNjcnVsZXNcXHUwMDNlIGlzIGEgXFxcIlxcbi1cXHRcXHRcXFwic2luZ2xlXFxcXG5cXFxcdFxcXFx0XFxcXHRhcmd1bWVudCBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IFxcXCJcXG4tXFx0XFx0XFxcIndpdGggc29tZVxcXFxuXFxcXHRcXFxcdFxcXFx0Y29tbW9uIGZpZWxkcyBwcmVkZWZpbmVkIChwaWQsIHRnaWQsIGNvbW0sIFxcXCJcXG4tXFx0XFx0XFxcInN0YWNrdHJhY2UsIGFsbG9jYXRvcilcXFxcblxcXCJcXG4rXFx0XFx0XFxcIi0tbW9kdWxlIFxcdTAwM2Ntb2RsaXN0XFx1MDAzZVxcXFx0U2VsZWN0IGJ5IG1vZHVsZSBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdFxcXFx0XFxcXHRvZiBibG9ja3Mgd2hvc2UgbW9kdWxlIG5hbWUgYXBwZWFycyBpbiBcXHUwMDNjbW9kbGlzdFxcdTAwM2UuXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCItLWN1bGwgXFx1MDAzY3J1bGVzXFx1MDAzZVxcXFx0XFxcXHRDdWxsIGJ5IHVzZXItZGVmaW5lZCBydWxlcy4gXFx1MDAzY3J1bGVzXFx1MDAzZSBpcyBhIHNpbmdsZVxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0YXJndW1lbnQgaW4gdGhlIGZvcm0gb2YgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHNvbWVcXFxcblxcXCJcXG4rXFx0XFx0XFxcIlxcXFx0XFxcXHRcXFxcdGNvbW1vbiBmaWVsZHMgcHJlZGVmaW5lZCAocGlkLCB0Z2lkLCBjb21tLCBzdGFja3RyYWNlLCBhbGxvY2F0b3IsIG1vZHVsZSlcXFxcblxcXCJcXG4gXFx0XFx0XFxcIi0tc29ydCBcXHUwMDNjb3JkZXJcXHUwMDNlXFxcXHRcXFxcdFNwZWNpZnkgc29ydCBvcmRlciBhczogWyt8LV1rZXlbLFsrfC1da2V5WywuLi5dXVxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0QXZhaWxhYmxlIGtleXM6XFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdFxcXFx0XFxcXHQgIHBpZChwKSwgdGdpZCh0ZyksIG5hbWUobiksIHN0YWNrdHJhY2Uoc3QpLFxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0ICB0eHQoVCksIGFsbG9jX3RzKGF0KSwgYWxsb2NhdG9yKGF0b3IpLCBtb2R1bGUobW9kKVxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0VGhlIFxcXFxcXFwiK1xcXFxcXFwiIGlzIG9wdGlvbmFsIHNpbmNlIGRlZmF1bHQgZGlyZWN0aW9uIGlzXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdFxcXFx0XFxcXHRpbmNyZWFzaW5nIG51bWVyaWNhbCBvciBsZXhpY29ncmFwaGljIG9yZGVyLlxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0TWl4ZWQgdXNlIG9mIGFiYnJldmlhdGVkIGFuZCBjb21wbGV0ZS1mb3JtIGlzIGFsbG93ZWQuXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdFxcXFx0XFxcXHRFeGFtcGxlczpcXFxcblxcXCJcXG4rXFx0XFx0XFxcIlxcXFx0XFxcXHRcXFxcdCAgLS1zb3J0PW4sK3BpZCwtdGdpZFxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0ICAtLXNvcnQ9bW9kLGF0XFxcXG5cXFwiXFxuIFxcdCk7XFxuIH1cXG4gXFxuQEAgLTcyMSwxMyArNzk3LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0XFx0eyBcXFwibmFtZVxcXCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAzIH0sXFxuIFxcdFxcdHsgXFxcImN1bGxcXFwiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNCB9LFxcbiBcXHRcXHR7IFxcXCJzb3J0XFxcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDUgfSxcXG4rXFx0XFx0eyBcXFwibW9kdWxlXFxcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDYgfSxcXG4gXFx0XFx0eyBcXFwiaGVscFxcXCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnaCcgfSxcXG4gXFx0XFx0eyAwLCAwLCAwLCAwfSxcXG4gXFx0fTtcXG4gXFxuIFxcdGNvbXBhcmVfZmxhZyA9IENPTVBfTk9fRkxBRztcXG4gXFxuLVxcdHdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgXFxcImFkbW5wc3RQaFxcXCIsIGxvbmdvcHRzLCBOVUxMKSkgIT0gLTEpXFxuK1xcdHdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgXFxcImFkbW5wc3RQTWhcXFwiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKVxcbiBcXHRcXHRzd2l0Y2ggKG9wdCkge1xcbiBcXHRcXHRjYXNlICdhJzpcXG4gXFx0XFx0XFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfQUxMT0M7XFxuQEAgLTc1Myw2ICs4MzAsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcdFxcdGNhc2UgJ24nOlxcbiBcXHRcXHRcXHRjb21wYXJlX2ZsYWcgfD0gQ09NUF9DT01NO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSAnTSc6XFxuK1xcdFxcdFxcdGNvbXBhcmVfZmxhZyB8PSBDT01QX01PRFVMRTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgJ2gnOlxcbiBcXHRcXHRcXHR1c2FnZSgpO1xcbiBcXHRcXHRcXHRleGl0KDApO1xcbkBAIC03OTIsNiArODcyLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0XFx0XFx0XFx0ZXhpdCgxKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSA2OlxcbitcXHRcXHRcXHRmaWx0ZXIgPSBmaWx0ZXIgfCBGSUxURVJfTU9EVUxFO1xcbitcXHRcXHRcXHRmYy5tb2R1bGVzID0gZXhwbG9kZSgnLCcsIG9wdGFyZywgXFx1MDAyNmZjLm1vZHVsZXNfc2l6ZSk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRkZWZhdWx0OlxcbiBcXHRcXHRcXHR1c2FnZSgpO1xcbiBcXHRcXHRcXHRleGl0KDEpO1xcbkBAIC04MjEsNiArOTA1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0XFx0c2V0X3NpbmdsZV9jbXAoY29tcGFyZV9zdGFja3RyYWNlLCBTT1JUX0FTQyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIENPTVBfTk9fRkxBRzpcXG4rXFx0XFx0aWYgKHNjLnNpemUgXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0c2V0X3NpbmdsZV9jbXAoY29tcGFyZV9udW0sIFNPUlRfREVTQyk7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIENPTVBfTlVNOlxcbiBcXHRcXHRzZXRfc2luZ2xlX2NtcChjb21wYXJlX251bSwgU09SVF9ERVNDKTtcXG4gXFx0XFx0YnJlYWs7XFxuQEAgLTgzMCw2ICs5MTgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcdGNhc2UgQ09NUF9DT01NOlxcbiBcXHRcXHRzZXRfc2luZ2xlX2NtcChjb21wYXJlX2NvbW0sIFNPUlRfQVNDKTtcXG4gXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgQ09NUF9NT0RVTEU6XFxuK1xcdFxcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbW9kdWxlLCBTT1JUX0FTQyk7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHR1c2FnZSgpO1xcbiBcXHRcXHRleGl0KDEpO1xcbkBAIC04NTMsNiArOTQ0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbiBcXHRcXHRnb3RvIG91dF9jb21tO1xcbiBcXHRpZiAoIWNoZWNrX3JlZ2NvbXAoXFx1MDAyNnRzX25zZWNfcGF0dGVybiwgXFxcInRzXFxcXFxcXFxzKihbMC05XSopXFxcXFxcXFxzKm5zXFxcIikpXFxuIFxcdFxcdGdvdG8gb3V0X3RzO1xcbitcXHRpZiAoIWNoZWNrX3JlZ2NvbXAoXFx1MDAyNm1vZHVsZV9wYXR0ZXJuLCBcXFwiXFxcXFxcXFwrMHhbMC05YS1mXSsvMHhbMC05YS1mXStcXFxcXFxcXHMqXFxcXFxcXFxbKFthLXpBLVowLTlfLV0rKVxcXFxcXFxcXVxcXCIpKVxcbitcXHRcXHRnb3RvIG91dF9tb2R1bGU7XFxuIFxcbiBcXHRmc3RhdChmaWxlbm8oZmluKSwgXFx1MDAyNnN0KTtcXG4gXFx0bWF4X3NpemUgPSBzdC5zdF9zaXplIC8gMTAwOyAvKiBoYWNrIC4uLiAqL1xcbkBAIC05MTEsNiArMTAwNCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0XFx0XFx0XFx0ZnByaW50Zihmb3V0LCBcXFwiLCBUR0lEICVkXFxcIiwgbGlzdFtpXS50Z2lkKTtcXG4gXFx0XFx0XFx0aWYgKGN1bGwgXFx1MDAyNiBDVUxMX0NPTU0gfHwgZmlsdGVyIFxcdTAwMjYgRklMVEVSX0NPTU0pXFxuIFxcdFxcdFxcdFxcdGZwcmludGYoZm91dCwgXFxcIiwgdGFza19jb21tX25hbWU6ICVzXFxcIiwgbGlzdFtpXS5jb21tKTtcXG4rXFx0XFx0XFx0aWYgKGN1bGwgXFx1MDAyNiBDVUxMX01PRFVMRSB8fCBmaWx0ZXIgXFx1MDAyNiBGSUxURVJfTU9EVUxFKVxcbitcXHRcXHRcXHRcXHRmcHJpbnRmKGZvdXQsIFxcXCIsIG1vZHVsZTogJXNcXFwiLCBsaXN0W2ldLm1vZHVsZSk7XFxuIFxcdFxcdFxcdGlmIChjdWxsIFxcdTAwMjYgQ1VMTF9BTExPQ0FUT1IpIHtcXG4gXFx0XFx0XFx0XFx0ZnByaW50Zihmb3V0LCBcXFwiLCBcXFwiKTtcXG4gXFx0XFx0XFx0XFx0cHJpbnRfYWxsb2NhdG9yKGZvdXQsIGxpc3RbaV0uYWxsb2NhdG9yKTtcXG5AQCAtOTMxLDYgKzEwMjYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcdFxcdFxcdGZyZWVfYmxvY2tfbGlzdChcXHUwMDI2bGlzdFtpXSk7XFxuIFxcdFxcdGZyZWUobGlzdCk7XFxuIFxcdH1cXG4rb3V0X21vZHVsZTpcXG4rXFx0cmVnZnJlZShcXHUwMDI2bW9kdWxlX3BhdHRlcm4pO1xcbiBvdXRfdHM6XFxuIFxcdHJlZ2ZyZWUoXFx1MDAyNnRzX25zZWNfcGF0dGVybik7XFxuIG91dF9jb21tOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo1Mjo0Ni42MjcxOTI0NzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4Njc3MDkxMTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlci1zcGFjZSB0b29sICh0b29scy9tbS9wYWdlX293bmVyX3NvcnQuYykgYW5kIGl0cyBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZmIwMjE5MGIyMTJjMmVlZjJiMzFiYmY0NDdlNjUxNzgzNjgxZTgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo1Mjo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0XG5pbmRleCBhNmJkM2ZlNjQyM2FkLi5iZDAyNzM3N2RmZjZlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxuQEAgLTE5OSw2ICsxOTksNyBAQCBVc2FnZVxuIFx0XHQtcFx0XHRTb3J0IGJ5IHBpZC5cbiBcdFx0LVBcdFx0U29ydCBieSB0Z2lkLlxuIFx0XHQtblx0XHRTb3J0IGJ5IHRhc2sgY29tbWFuZCBuYW1lLlxuK1x0XHQtTVx0XHRTb3J0IGJ5IG1vZHVsZSBuYW1lLlxuIFx0XHQtclx0XHRTb3J0IGJ5IG1lbW9yeSByZWxlYXNlIHRpbWUuXG4gXHRcdC1zXHRcdFNvcnQgYnkgc3RhY2sgdHJhY2UuXG4gXHRcdC10XHRcdFNvcnQgYnkgdGltZXMgKGRlZmF1bHQpLlxuQEAgLTI0MCw4ICsyNDEsMTAgQEAgVXNhZ2VcbiBcdFx0XHRcdFx0Z3JvdXAgSUQgbnVtYmVycyBhcHBlYXIgaW4gXHUwMDNjdGdpZGxpc3RcdTAwM2UuXG4gXHRcdC0tbmFtZSBcdTAwM2NjbWRsaXN0XHUwMDNlXHRTZWxlY3QgYnkgdGFzayBjb21tYW5kIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgYmxvY2tzIHdob3NlXG4gXHRcdFx0XHRcdHRhc2sgY29tbWFuZCBuYW1lIGFwcGVhciBpbiBcdTAwM2NjbWRsaXN0XHUwMDNlLlxuK1x0XHQtLW1vZHVsZSBcdTAwM2Ntb2RsaXN0XHUwMDNlXHRTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgYmxvY2tzIHdob3NlXG4rXHRcdFx0XHRcdG1vZHVsZSBuYW1lIGFwcGVhciBpbiBcdTAwM2Ntb2RsaXN0XHUwMDNlLlxuIFxuLVx0XHRcdTAwM2NwaWRsaXN0XHUwMDNlLCBcdTAwM2N0Z2lkbGlzdFx1MDAzZSwgXHUwMDNjY21kbGlzdFx1MDAzZSBhcmUgc2luZ2xlIGFyZ3VtZW50cyBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LFxuK1x0XHRcdTAwM2NwaWRsaXN0XHUwMDNlLCBcdTAwM2N0Z2lkbGlzdFx1MDAzZSwgXHUwMDNjY21kbGlzdFx1MDAzZSwgXHUwMDNjbW9kbGlzdFx1MDAzZSBhcmUgc2luZ2xlIGFyZ3VtZW50cyBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LFxuIFx0XHR3aGljaCBvZmZlcnMgYSB3YXkgdG8gc3BlY2lmeSBpbmRpdmlkdWFsIHNlbGVjdGluZyBydWxlcy5cbiBcbiBcbkBAIC0yNDksNiArMjUyLDcgQEAgVXNhZ2VcbiBcdFx0XHRcdC4vcGFnZV9vd25lcl9zb3J0IFx1MDAzY2lucHV0XHUwMDNlIFx1MDAzY291dHB1dFx1MDAzZSAtLXBpZD0xXG4gXHRcdFx0XHQuL3BhZ2Vfb3duZXJfc29ydCBcdTAwM2NpbnB1dFx1MDAzZSBcdTAwM2NvdXRwdXRcdTAwM2UgLS10Z2lkPTEsMiwzXG4gXHRcdFx0XHQuL3BhZ2Vfb3duZXJfc29ydCBcdTAwM2NpbnB1dFx1MDAzZSBcdTAwM2NvdXRwdXRcdTAwM2UgLS1uYW1lIG5hbWUxLG5hbWUyXG4rXHRcdFx0XHQuL3BhZ2Vfb3duZXJfc29ydCBcdTAwM2NpbnB1dFx1MDAzZSBcdTAwM2NvdXRwdXRcdTAwM2UgLS1tb2R1bGUgeGZzLGV4dDRcbiBcbiBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuID09PT09PT09PT09PT09PT09PT09PT09PT09XG5AQCAtMjY1LDYgKzI2OSw3IEBAIFNUQU5EQVJEIEZPUk1BVCBTUEVDSUZJRVJTXG4gXHRmdFx0XHRmcmVlX3RzXHRcdHRpbWVzdGFtcCBvZiB0aGUgcGFnZSB3aGVuIGl0IHdhcyByZWxlYXNlZFxuIFx0YXRcdFx0YWxsb2NfdHNcdHRpbWVzdGFtcCBvZiB0aGUgcGFnZSB3aGVuIGl0IHdhcyBhbGxvY2F0ZWRcbiBcdGF0b3JcdFx0YWxsb2NhdG9yXHRtZW1vcnkgYWxsb2NhdG9yIGZvciBwYWdlc1xuK1x0bW9kXHRcdG1vZHVsZVx0XHRrZXJuZWwgbW9kdWxlIG5hbWVcbiBcbiAgIEZvciAtLWN1bGwgb3B0aW9uOlxuIFxuQEAgLTI3NSw2ICsyODAsNyBAQCBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuIFx0Zlx0XHRmcmVlXHRcdHdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVsZWFzZWQgb3Igbm90XG4gXHRzdFx0XHRzdGFja3RyYWNlXHRzdGFjayB0cmFjZSBvZiB0aGUgcGFnZSBhbGxvY2F0aW9uXG4gXHRhdG9yXHRcdGFsbG9jYXRvclx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcbitcdG1vZFx0XHRtb2R1bGVcdFx0a2VybmVsIG1vZHVsZSBuYW1lXG4gXG4gRmlsdGVyaW5nIHBhZ2Vfb3duZXIgb3V0cHV0XG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZGlmZiAtLWdpdCBhL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jIGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbmluZGV4IDM1ZDNkMjU0OTQxYzkuLmM1YmMzYjUyNGMwYTkgMTAwNjQ0XG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xuKysrIGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbkBAIC0yNSwxMSArMjUsMTMgQEBcbiAjaW5jbHVkZSBcdTAwM2NnZXRvcHQuaFx1MDAzZVxuIFxuICNkZWZpbmUgVEFTS19DT01NX0xFTiAxNlxuKyNkZWZpbmUgTU9EVUxFX05BTUVfTEVOIDY0XG4gXG4gc3RydWN0IGJsb2NrX2xpc3Qge1xuIFx0Y2hhciAqdHh0O1xuIFx0Y2hhciAqY29tbTsgLy8gdGFzayBjb21tYW5kIG5hbWVcbiBcdGNoYXIgKnN0YWNrdHJhY2U7XG4rXHRjaGFyICptb2R1bGU7IC8vIGtlcm5lbCBtb2R1bGUgbmFtZVxuIFx0X191NjQgdHNfbnNlYztcbiBcdGludCBsZW47XG4gXHRpbnQgbnVtO1xuQEAgLTQxLDcgKzQzLDggQEAgc3RydWN0IGJsb2NrX2xpc3Qge1xuIGVudW0gRklMVEVSX0JJVCB7XG4gXHRGSUxURVJfUElEID0gMVx1MDAzY1x1MDAzYzEsXG4gXHRGSUxURVJfVEdJRCA9IDFcdTAwM2NcdTAwM2MyLFxuLVx0RklMVEVSX0NPTU0gPSAxXHUwMDNjXHUwMDNjM1xuK1x0RklMVEVSX0NPTU0gPSAxXHUwMDNjXHUwMDNjMyxcbitcdEZJTFRFUl9NT0RVTEUgPSAxXHUwMDNjXHUwMDNjNFxuIH07XG4gXG4gZW51bSBGSUxURVJfUkVTVUxUIHtcbkBAIC01NSw3ICs1OCw4IEBAIGVudW0gQ1VMTF9CSVQge1xuIFx0Q1VMTF9UR0lEID0gMVx1MDAzY1x1MDAzYzIsXG4gXHRDVUxMX0NPTU0gPSAxXHUwMDNjXHUwMDNjMyxcbiBcdENVTExfU1RBQ0tUUkFDRSA9IDFcdTAwM2NcdTAwM2M0LFxuLVx0Q1VMTF9BTExPQ0FUT1IgPSAxXHUwMDNjXHUwMDNjNVxuK1x0Q1VMTF9BTExPQ0FUT1IgPSAxXHUwMDNjXHUwMDNjNSxcbitcdENVTExfTU9EVUxFID0gMVx1MDAzY1x1MDAzYzZcbiB9O1xuIGVudW0gQUxMT0NBVE9SX0JJVCB7XG4gXHRBTExPQ0FUT1JfQ01BID0gMVx1MDAzY1x1MDAzYzEsXG5AQCAtNjUsNyArNjksOCBAQCBlbnVtIEFMTE9DQVRPUl9CSVQge1xuIH07XG4gZW51bSBBUkdfVFlQRSB7XG4gXHRBUkdfVFhULCBBUkdfQ09NTSwgQVJHX1NUQUNLVFJBQ0UsIEFSR19BTExPQ19UUywgQVJHX0NVTExfVElNRSxcbi1cdEFSR19QQUdFX05VTSwgQVJHX1BJRCwgQVJHX1RHSUQsIEFSR19VTktOT1dOLCBBUkdfQUxMT0NBVE9SXG4rXHRBUkdfUEFHRV9OVU0sIEFSR19QSUQsIEFSR19UR0lELCBBUkdfVU5LTk9XTiwgQVJHX0FMTE9DQVRPUixcbitcdEFSR19NT0RVTEVcbiB9O1xuIGVudW0gU09SVF9PUkRFUiB7XG4gXHRTT1JUX0FTQyA9IDEsXG5AQCAtNzksMTUgKzg0LDE4IEBAIGVudW0gQ09NUF9GTEFHIHtcbiBcdENPTVBfU1RBQ0sgPSAxXHUwMDNjXHUwMDNjMyxcbiBcdENPTVBfTlVNID0gMVx1MDAzY1x1MDAzYzQsXG4gXHRDT01QX1RHSUQgPSAxXHUwMDNjXHUwMDNjNSxcbi1cdENPTVBfQ09NTSA9IDFcdTAwM2NcdTAwM2M2XG4rXHRDT01QX0NPTU0gPSAxXHUwMDNjXHUwMDNjNixcbitcdENPTVBfTU9EVUxFID0gMVx1MDAzY1x1MDAzYzdcbiB9O1xuIHN0cnVjdCBmaWx0ZXJfY29uZGl0aW9uIHtcbiBcdHBpZF90ICpwaWRzO1xuIFx0cGlkX3QgKnRnaWRzO1xuIFx0Y2hhciAqKmNvbW1zO1xuK1x0Y2hhciAqKm1vZHVsZXM7XG4gXHRpbnQgcGlkc19zaXplO1xuIFx0aW50IHRnaWRzX3NpemU7XG4gXHRpbnQgY29tbXNfc2l6ZTtcbitcdGludCBtb2R1bGVzX3NpemU7XG4gfTtcbiBzdHJ1Y3Qgc29ydF9jb25kaXRpb24ge1xuIFx0aW50ICgqKmNtcHMpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTtcbkBAIC0xMDEsNiArMTA5LDcgQEAgc3RhdGljIHJlZ2V4X3QgcGlkX3BhdHRlcm47XG4gc3RhdGljIHJlZ2V4X3QgdGdpZF9wYXR0ZXJuO1xuIHN0YXRpYyByZWdleF90IGNvbW1fcGF0dGVybjtcbiBzdGF0aWMgcmVnZXhfdCB0c19uc2VjX3BhdHRlcm47XG4rc3RhdGljIHJlZ2V4X3QgbW9kdWxlX3BhdHRlcm47XG4gc3RhdGljIHN0cnVjdCBibG9ja19saXN0ICpsaXN0O1xuIHN0YXRpYyBpbnQgbGlzdF9zaXplO1xuIHN0YXRpYyBpbnQgbWF4X3NpemU7XG5AQCAtMTg0LDYgKzE5MywxMyBAQCBzdGF0aWMgaW50IGNvbXBhcmVfY29tbShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4gXHRyZXR1cm4gc3RyY21wKGwxLVx1MDAzZWNvbW0sIGwyLVx1MDAzZWNvbW0pO1xuIH1cbiBcbitzdGF0aWMgaW50IGNvbXBhcmVfbW9kdWxlKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgYmxvY2tfbGlzdCAqbDEgPSBwMSwgKmwyID0gcDI7XG4rXG4rXHRyZXR1cm4gc3RyY21wKGwxLVx1MDAzZW1vZHVsZSwgbDItXHUwMDNlbW9kdWxlKTtcbit9XG4rXG4gc3RhdGljIGludCBjb21wYXJlX3RzKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgYmxvY2tfbGlzdCAqbDEgPSBwMSwgKmwyID0gcDI7XG5AQCAtMjA3LDYgKzIyMyw4IEBAIHN0YXRpYyBpbnQgY29tcGFyZV9jdWxsX2NvbmRpdGlvbihjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4gXHRcdHJldHVybiBjb21wYXJlX3RnaWQocDEsIHAyKTtcbiBcdGlmICgoY3VsbCBcdTAwMjYgQ1VMTF9DT01NKSBcdTAwMjZcdTAwMjYgY29tcGFyZV9jb21tKHAxLCBwMikpXG4gXHRcdHJldHVybiBjb21wYXJlX2NvbW0ocDEsIHAyKTtcbitcdGlmICgoY3VsbCBcdTAwMjYgQ1VMTF9NT0RVTEUpIFx1MDAyNlx1MDAyNiBjb21wYXJlX21vZHVsZShwMSwgcDIpKVxuK1x0XHRyZXR1cm4gY29tcGFyZV9tb2R1bGUocDEsIHAyKTtcbiBcdGlmICgoY3VsbCBcdTAwMjYgQ1VMTF9BTExPQ0FUT1IpIFx1MDAyNlx1MDAyNiBjb21wYXJlX2FsbG9jYXRvcihwMSwgcDIpKVxuIFx0XHRyZXR1cm4gY29tcGFyZV9hbGxvY2F0b3IocDEsIHAyKTtcbiBcdHJldHVybiAwO1xuQEAgLTQxMSw5ICs0MjksMzMgQEAgc3RhdGljIGNoYXIgKmdldF9jb21tKGNoYXIgKmJ1ZilcbiBcdHJldHVybiBjb21tX3N0cjtcbiB9XG4gXG4rc3RhdGljIGNoYXIgKmdldF9tb2R1bGUoY2hhciAqYnVmKVxuK3tcbitcdGNoYXIgKm1vZHVsZV9zdHIgPSBtYWxsb2MoTU9EVUxFX05BTUVfTEVOKTtcbitcdHJlZ21hdGNoX3QgcG1hdGNoWzJdO1xuK1x0aW50IHZhbF9sZW47XG4rXG4rXHRpZiAoIW1vZHVsZV9zdHIpXG4rXHRcdHJldHVybiBOVUxMO1xuK1x0bWVtc2V0KG1vZHVsZV9zdHIsIDAsIE1PRFVMRV9OQU1FX0xFTik7XG4rXHRpZiAocmVnZXhlYyhcdTAwMjZtb2R1bGVfcGF0dGVybiwgYnVmLCAyLCBwbWF0Y2gsIFJFR19OT1RCT0wpICE9IDAgfHwgcG1hdGNoWzFdLnJtX3NvID09IC0xKSB7XG4rXHRcdHN0cmNweShtb2R1bGVfc3RyLCBcInZtbGludXhcIik7XG4rXHRcdHJldHVybiBtb2R1bGVfc3RyO1xuK1x0fVxuK1xuK1x0dmFsX2xlbiA9IHBtYXRjaFsxXS5ybV9lbyAtIHBtYXRjaFsxXS5ybV9zbztcbitcdGlmICgoc2l6ZV90KXZhbF9sZW4gXHUwMDNlPSBNT0RVTEVfTkFNRV9MRU4pXG4rXHRcdHZhbF9sZW4gPSBNT0RVTEVfTkFNRV9MRU4gLSAxO1xuK1x0bWVtY3B5KG1vZHVsZV9zdHIsIGJ1ZiArIHBtYXRjaFsxXS5ybV9zbywgdmFsX2xlbik7XG4rXHRtb2R1bGVfc3RyW3ZhbF9sZW5dID0gJ1xcMCc7XG4rXG4rXHRyZXR1cm4gbW9kdWxlX3N0cjtcbit9XG4rXG4gc3RhdGljIHZvaWQgZnJlZV9ibG9ja19saXN0KHN0cnVjdCBibG9ja19saXN0ICpibG9jaylcbiB7XG4gXHRmcmVlKGJsb2NrLVx1MDAzZWNvbW0pO1xuK1x0ZnJlZShibG9jay1cdTAwM2Vtb2R1bGUpO1xuIFx0ZnJlZShibG9jay1cdTAwM2V0eHQpO1xuIH1cbiBcbkBAIC00MzMsNiArNDc1LDggQEAgc3RhdGljIGludCBnZXRfYXJnX3R5cGUoY29uc3QgY2hhciAqYXJnKVxuIFx0XHRyZXR1cm4gQVJHX0FMTE9DX1RTO1xuIFx0ZWxzZSBpZiAoIXN0cmNtcChhcmcsIFwiYWxsb2NhdG9yXCIpIHx8ICFzdHJjbXAoYXJnLCBcImF0b3JcIikpXG4gXHRcdHJldHVybiBBUkdfQUxMT0NBVE9SO1xuK1x0ZWxzZSBpZiAoIXN0cmNtcChhcmcsIFwibW9kdWxlXCIpIHx8ICFzdHJjbXAoYXJnLCBcIm1vZFwiKSlcbitcdFx0cmV0dXJuIEFSR19NT0RVTEU7XG4gXHRlbHNlIHtcbiBcdFx0cmV0dXJuIEFSR19VTktOT1dOO1xuIFx0fVxuQEAgLTQ4MywyNSArNTI3LDM2IEBAIHN0YXRpYyBib29sIG1hdGNoX3N0cl9saXN0KGNvbnN0IGNoYXIgKnN0ciwgY2hhciAqKmxpc3QsIGludCBsaXN0X3NpemUpXG4gXG4gc3RhdGljIGVudW0gRklMVEVSX1JFU1VMVCBmaWx0ZXJfcmVjb3JkKGNoYXIgKmJ1ZilcbiB7XG4tXHRjaGFyICpjb21tO1xuK1x0Y2hhciAqY29tbSwgKm1vZHVsZTtcbiBcbiBcdGlmICgoZmlsdGVyIFx1MDAyNiBGSUxURVJfUElEKSBcdTAwMjZcdTAwMjYgIW1hdGNoX251bV9saXN0KGdldF9waWQoYnVmKSwgZmMucGlkcywgZmMucGlkc19zaXplKSlcbiBcdFx0cmV0dXJuIEZJTFRFUl9TS0lQO1xuIFx0aWYgKChmaWx0ZXIgXHUwMDI2IEZJTFRFUl9UR0lEKSBcdTAwMjZcdTAwMjZcbiBcdFx0IW1hdGNoX251bV9saXN0KGdldF90Z2lkKGJ1ZiksIGZjLnRnaWRzLCBmYy50Z2lkc19zaXplKSlcbiBcdFx0cmV0dXJuIEZJTFRFUl9TS0lQO1xuLVx0aWYgKCEoZmlsdGVyIFx1MDAyNiBGSUxURVJfQ09NTSkpXG4rXHRpZiAoIShmaWx0ZXIgXHUwMDI2IChGSUxURVJfQ09NTSB8IEZJTFRFUl9NT0RVTEUpKSlcbiBcdFx0cmV0dXJuIEZJTFRFUl9NQVRDSDtcbiBcbi1cdGNvbW0gPSBnZXRfY29tbShidWYpO1xuLVx0aWYgKCFjb21tKVxuLVx0XHRyZXR1cm4gRklMVEVSX0VSUk9SO1xuLVxuLVx0aWYgKCFtYXRjaF9zdHJfbGlzdChjb21tLCBmYy5jb21tcywgZmMuY29tbXNfc2l6ZSkpIHtcbitcdGlmIChmaWx0ZXIgXHUwMDI2IEZJTFRFUl9DT01NKSB7XG4rXHRcdGNvbW0gPSBnZXRfY29tbShidWYpO1xuK1x0XHRpZiAoIWNvbW0pXG4rXHRcdFx0cmV0dXJuIEZJTFRFUl9FUlJPUjtcbitcdFx0aWYgKCFtYXRjaF9zdHJfbGlzdChjb21tLCBmYy5jb21tcywgZmMuY29tbXNfc2l6ZSkpIHtcbitcdFx0XHRmcmVlKGNvbW0pO1xuK1x0XHRcdHJldHVybiBGSUxURVJfU0tJUDtcbitcdFx0fVxuIFx0XHRmcmVlKGNvbW0pO1xuLVx0XHRyZXR1cm4gRklMVEVSX1NLSVA7XG4gXHR9XG4tXHRmcmVlKGNvbW0pO1xuK1x0aWYgKGZpbHRlciBcdTAwMjYgRklMVEVSX01PRFVMRSkge1xuK1x0XHRtb2R1bGUgPSBnZXRfbW9kdWxlKGJ1Zik7XG4rXHRcdGlmICghbW9kdWxlKVxuK1x0XHRcdHJldHVybiBGSUxURVJfRVJST1I7XG4rXHRcdGlmICghbWF0Y2hfc3RyX2xpc3QobW9kdWxlLCBmYy5tb2R1bGVzLCBmYy5tb2R1bGVzX3NpemUpKSB7XG4rXHRcdFx0ZnJlZShtb2R1bGUpO1xuK1x0XHRcdHJldHVybiBGSUxURVJfU0tJUDtcbitcdFx0fVxuK1x0XHRmcmVlKG1vZHVsZSk7XG4rXHR9XG4gXHRyZXR1cm4gRklMVEVSX01BVENIO1xuIH1cbiBcbkBAIC01NDcsNiArNjAyLDEyIEBAIHN0YXRpYyBib29sIGFkZF9saXN0KGNoYXIgKmJ1ZiwgaW50IGxlbiwgY2hhciAqZXh0X2J1ZilcbiBcdFx0bGlzdFtsaXN0X3NpemVdLnN0YWNrdHJhY2UrKztcbiBcdGxpc3RbbGlzdF9zaXplXS50c19uc2VjID0gZ2V0X3RzX25zZWMoYnVmKTtcbiBcdGxpc3RbbGlzdF9zaXplXS5hbGxvY2F0b3IgPSBnZXRfYWxsb2NhdG9yKGJ1ZiwgZXh0X2J1Zik7XG4rXHRsaXN0W2xpc3Rfc2l6ZV0ubW9kdWxlID0gZ2V0X21vZHVsZShidWYpO1xuK1x0aWYgKCFsaXN0W2xpc3Rfc2l6ZV0ubW9kdWxlKSB7XG4rXHRcdGZwcmludGYoc3RkZXJyLCBcIk91dCBvZiBtZW1vcnlcXG5cIik7XG4rXHRcdGZyZWVfYmxvY2tfbGlzdChcdTAwMjZsaXN0W2xpc3Rfc2l6ZV0pO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4gXHRsaXN0X3NpemUrKztcbiBcdGlmIChsaXN0X3NpemUgJSAxMDAwID09IDApIHtcbiBcdFx0cHJpbnRmKFwibG9hZGVkICVkXFxyXCIsIGxpc3Rfc2l6ZSk7XG5AQCAtNTczLDYgKzYzNCw4IEBAIHN0YXRpYyBib29sIHBhcnNlX2N1bGxfYXJncyhjb25zdCBjaGFyICphcmdfc3RyKVxuIFx0XHRcdGN1bGwgfD0gQ1VMTF9TVEFDS1RSQUNFO1xuIFx0XHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfQUxMT0NBVE9SKVxuIFx0XHRcdGN1bGwgfD0gQ1VMTF9BTExPQ0FUT1I7XG4rXHRcdGVsc2UgaWYgKGFyZ190eXBlID09IEFSR19NT0RVTEUpXG4rXHRcdFx0Y3VsbCB8PSBDVUxMX01PRFVMRTtcbiBcdFx0ZWxzZSB7XG4gXHRcdFx0ZnJlZV9leHBsb2RlKGFyZ3MsIHNpemUpO1xuIFx0XHRcdHJldHVybiBmYWxzZTtcbkBAIC02MzUsNiArNjk4LDggQEAgc3RhdGljIGJvb2wgcGFyc2Vfc29ydF9hcmdzKGNvbnN0IGNoYXIgKmFyZ19zdHIpXG4gXHRcdFx0c2MuY21wc1tpXSA9IGNvbXBhcmVfdHh0O1xuIFx0XHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfQUxMT0NBVE9SKVxuIFx0XHRcdHNjLmNtcHNbaV0gPSBjb21wYXJlX2FsbG9jYXRvcjtcbitcdFx0ZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX01PRFVMRSlcbitcdFx0XHRzYy5jbXBzW2ldID0gY29tcGFyZV9tb2R1bGU7XG4gXHRcdGVsc2Uge1xuIFx0XHRcdGZyZWVfZXhwbG9kZShhcmdzLCBzaXplKTtcbiBcdFx0XHRzYy5zaXplID0gMDtcbkBAIC02OTEsNyArNzU2LDggQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9pZClcbiBcdFx0XCItcFxcdFxcdFxcdFNvcnQgYnkgcGlkLlxcblwiXG4gXHRcdFwiLVBcXHRcXHRcXHRTb3J0IGJ5IHRnaWQuXFxuXCJcbiBcdFx0XCItc1xcdFxcdFxcdFNvcnQgYnkgdGhlIHN0YWNrdHJhY2UuXFxuXCJcbi1cdFx0XCItdFxcdFxcdFxcdFNvcnQgYnkgbnVtYmVyIG9mIHRpbWVzIHJlY29yZCBpcyBzZWVuIChkZWZhdWx0KS5cXG5cXG5cIlxuK1x0XHRcIi10XFx0XFx0XFx0U29ydCBieSBudW1iZXIgb2YgdGltZXMgcmVjb3JkIGlzIHNlZW4gKGRlZmF1bHQpLlxcblwiXG4rXHRcdFwiLU1cXHRcXHRcXHRTb3J0IGJ5IG1vZHVsZSBuYW1lLlxcblxcblwiXG4gXHRcdFwiLS1waWQgXHUwMDNjcGlkbGlzdFx1MDAzZVxcdFxcdFNlbGVjdCBieSBwaWQuIFRoaXMgc2VsZWN0cyB0aGUgaW5mb3JtYXRpb25cIlxuIFx0XHRcIiBvZlxcblxcdFxcdFxcdGJsb2NrcyB3aG9zZSBwcm9jZXNzIElEIG51bWJlcnMgYXBwZWFyIGluIFx1MDAzY3BpZGxpc3RcdTAwM2UuXFxuXCJcbiBcdFx0XCItLXRnaWQgXHUwMDNjdGdpZGxpc3RcdTAwM2VcXHRTZWxlY3QgYnkgdGdpZC4gVGhpcyBzZWxlY3RzIHRoZSBpbmZvcm1hdGlvblwiXG5AQCAtNzAwLDExICs3NjYsMjEgQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9pZClcbiBcdFx0XCItLW5hbWUgXHUwMDNjY21kbGlzdFx1MDAzZVxcdFNlbGVjdCBieSBjb21tYW5kIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGVcIlxuIFx0XHRcIiBpbmZvcm1hdGlvblxcblxcdFxcdFxcdG9mIGJsb2NrcyB3aG9zZSBjb21tYW5kIG5hbWUgYXBwZWFycyBpblwiXG4gXHRcdFwiIFx1MDAzY2NtZGxpc3RcdTAwM2UuXFxuXCJcbi1cdFx0XCItLWN1bGwgXHUwMDNjcnVsZXNcdTAwM2VcXHRcXHRDdWxsIGJ5IHVzZXItZGVmaW5lZCBydWxlcy4gXHUwMDNjcnVsZXNcdTAwM2UgaXMgYSBcIlxuLVx0XHRcInNpbmdsZVxcblxcdFxcdFxcdGFyZ3VtZW50IGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgXCJcbi1cdFx0XCJ3aXRoIHNvbWVcXG5cXHRcXHRcXHRjb21tb24gZmllbGRzIHByZWRlZmluZWQgKHBpZCwgdGdpZCwgY29tbSwgXCJcbi1cdFx0XCJzdGFja3RyYWNlLCBhbGxvY2F0b3IpXFxuXCJcbitcdFx0XCItLW1vZHVsZSBcdTAwM2Ntb2RsaXN0XHUwMDNlXFx0U2VsZWN0IGJ5IG1vZHVsZSBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRvZiBibG9ja3Mgd2hvc2UgbW9kdWxlIG5hbWUgYXBwZWFycyBpbiBcdTAwM2Ntb2RsaXN0XHUwMDNlLlxcblwiXG4rXHRcdFwiLS1jdWxsIFx1MDAzY3J1bGVzXHUwMDNlXFx0XFx0Q3VsbCBieSB1c2VyLWRlZmluZWQgcnVsZXMuIFx1MDAzY3J1bGVzXHUwMDNlIGlzIGEgc2luZ2xlXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRhcmd1bWVudCBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggc29tZVxcblwiXG4rXHRcdFwiXFx0XFx0XFx0Y29tbW9uIGZpZWxkcyBwcmVkZWZpbmVkIChwaWQsIHRnaWQsIGNvbW0sIHN0YWNrdHJhY2UsIGFsbG9jYXRvciwgbW9kdWxlKVxcblwiXG4gXHRcdFwiLS1zb3J0IFx1MDAzY29yZGVyXHUwMDNlXFx0XFx0U3BlY2lmeSBzb3J0IG9yZGVyIGFzOiBbK3wtXWtleVssWyt8LV1rZXlbLC4uLl1dXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRBdmFpbGFibGUga2V5czpcXG5cIlxuK1x0XHRcIlxcdFxcdFxcdCAgcGlkKHApLCB0Z2lkKHRnKSwgbmFtZShuKSwgc3RhY2t0cmFjZShzdCksXFxuXCJcbitcdFx0XCJcXHRcXHRcXHQgIHR4dChUKSwgYWxsb2NfdHMoYXQpLCBhbGxvY2F0b3IoYXRvciksIG1vZHVsZShtb2QpXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRUaGUgXFxcIitcXFwiIGlzIG9wdGlvbmFsIHNpbmNlIGRlZmF1bHQgZGlyZWN0aW9uIGlzXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRpbmNyZWFzaW5nIG51bWVyaWNhbCBvciBsZXhpY29ncmFwaGljIG9yZGVyLlxcblwiXG4rXHRcdFwiXFx0XFx0XFx0TWl4ZWQgdXNlIG9mIGFiYnJldmlhdGVkIGFuZCBjb21wbGV0ZS1mb3JtIGlzIGFsbG93ZWQuXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRFeGFtcGxlczpcXG5cIlxuK1x0XHRcIlxcdFxcdFxcdCAgLS1zb3J0PW4sK3BpZCwtdGdpZFxcblwiXG4rXHRcdFwiXFx0XFx0XFx0ICAtLXNvcnQ9bW9kLGF0XFxuXCJcbiBcdCk7XG4gfVxuIFxuQEAgLTcyMSwxMyArNzk3LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0eyBcIm5hbWVcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDMgfSxcbiBcdFx0eyBcImN1bGxcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDQgfSxcbiBcdFx0eyBcInNvcnRcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDUgfSxcbitcdFx0eyBcIm1vZHVsZVwiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNiB9LFxuIFx0XHR7IFwiaGVscFwiLCBub19hcmd1bWVudCwgTlVMTCwgJ2gnIH0sXG4gXHRcdHsgMCwgMCwgMCwgMH0sXG4gXHR9O1xuIFxuIFx0Y29tcGFyZV9mbGFnID0gQ09NUF9OT19GTEFHO1xuIFxuLVx0d2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCBcImFkbW5wc3RQaFwiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKVxuK1x0d2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCBcImFkbW5wc3RQTWhcIiwgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSlcbiBcdFx0c3dpdGNoIChvcHQpIHtcbiBcdFx0Y2FzZSAnYSc6XG4gXHRcdFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfQUxMT0M7XG5AQCAtNzUzLDYgKzgzMCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0Y2FzZSAnbic6XG4gXHRcdFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfQ09NTTtcbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSAnTSc6XG4rXHRcdFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfTU9EVUxFO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlICdoJzpcbiBcdFx0XHR1c2FnZSgpO1xuIFx0XHRcdGV4aXQoMCk7XG5AQCAtNzkyLDYgKzg3MiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHRcdFx0XHRleGl0KDEpO1xuIFx0XHRcdH1cbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSA2OlxuK1x0XHRcdGZpbHRlciA9IGZpbHRlciB8IEZJTFRFUl9NT0RVTEU7XG4rXHRcdFx0ZmMubW9kdWxlcyA9IGV4cGxvZGUoJywnLCBvcHRhcmcsIFx1MDAyNmZjLm1vZHVsZXNfc2l6ZSk7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0dXNhZ2UoKTtcbiBcdFx0XHRleGl0KDEpO1xuQEAgLTgyMSw2ICs5MDUsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRzZXRfc2luZ2xlX2NtcChjb21wYXJlX3N0YWNrdHJhY2UsIFNPUlRfQVNDKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIENPTVBfTk9fRkxBRzpcbitcdFx0aWYgKHNjLnNpemUgXHUwMDNlIDApXG4rXHRcdFx0YnJlYWs7XG4rXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbnVtLCBTT1JUX0RFU0MpO1xuK1x0XHRicmVhaztcbiBcdGNhc2UgQ09NUF9OVU06XG4gXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbnVtLCBTT1JUX0RFU0MpO1xuIFx0XHRicmVhaztcbkBAIC04MzAsNiArOTE4LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0Y2FzZSBDT01QX0NPTU06XG4gXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfY29tbSwgU09SVF9BU0MpO1xuIFx0XHRicmVhaztcbitcdGNhc2UgQ09NUF9NT0RVTEU6XG4rXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbW9kdWxlLCBTT1JUX0FTQyk7XG4rXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0dXNhZ2UoKTtcbiBcdFx0ZXhpdCgxKTtcbkBAIC04NTMsNiArOTQ0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRnb3RvIG91dF9jb21tO1xuIFx0aWYgKCFjaGVja19yZWdjb21wKFx1MDAyNnRzX25zZWNfcGF0dGVybiwgXCJ0c1xcXFxzKihbMC05XSopXFxcXHMqbnNcIikpXG4gXHRcdGdvdG8gb3V0X3RzO1xuK1x0aWYgKCFjaGVja19yZWdjb21wKFx1MDAyNm1vZHVsZV9wYXR0ZXJuLCBcIlxcXFwrMHhbMC05YS1mXSsvMHhbMC05YS1mXStcXFxccypcXFxcWyhbYS16QS1aMC05Xy1dKylcXFxcXVwiKSlcbitcdFx0Z290byBvdXRfbW9kdWxlO1xuIFxuIFx0ZnN0YXQoZmlsZW5vKGZpbiksIFx1MDAyNnN0KTtcbiBcdG1heF9zaXplID0gc3Quc3Rfc2l6ZSAvIDEwMDsgLyogaGFjayAuLi4gKi9cbkBAIC05MTEsNiArMTAwNCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0XHRcdGZwcmludGYoZm91dCwgXCIsIFRHSUQgJWRcIiwgbGlzdFtpXS50Z2lkKTtcbiBcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9DT01NIHx8IGZpbHRlciBcdTAwMjYgRklMVEVSX0NPTU0pXG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwiLCB0YXNrX2NvbW1fbmFtZTogJXNcIiwgbGlzdFtpXS5jb21tKTtcbitcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9NT0RVTEUgfHwgZmlsdGVyIFx1MDAyNiBGSUxURVJfTU9EVUxFKVxuK1x0XHRcdFx0ZnByaW50Zihmb3V0LCBcIiwgbW9kdWxlOiAlc1wiLCBsaXN0W2ldLm1vZHVsZSk7XG4gXHRcdFx0aWYgKGN1bGwgXHUwMDI2IENVTExfQUxMT0NBVE9SKSB7XG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwiLCBcIik7XG4gXHRcdFx0XHRwcmludF9hbGxvY2F0b3IoZm91dCwgbGlzdFtpXS5hbGxvY2F0b3IpO1xuQEAgLTkzMSw2ICsxMDI2LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRcdGZyZWVfYmxvY2tfbGlzdChcdTAwMjZsaXN0W2ldKTtcbiBcdFx0ZnJlZShsaXN0KTtcbiBcdH1cbitvdXRfbW9kdWxlOlxuK1x0cmVnZnJlZShcdTAwMjZtb2R1bGVfcGF0dGVybik7XG4gb3V0X3RzOlxuIFx0cmVnZnJlZShcdTAwMjZ0c19uc2VjX3BhdHRlcm4pO1xuIG91dF9jb21tOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NTI6NDYuNjI3MTkzNzE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODY3NzA1MjAzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBFdmFsdWF0aW9uOiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGFzc2VzcyB0aGlzIHBhdGNoIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBsaWtlbHkgKm5vdCogd29ydGggZnV6emluZywgYnV0IGxldCdzIGJlIHRob3JvdWdoLiBUaGUgcGF0Y2ggdG91Y2hlcyBgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdGAgYW5kIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AuIFJpZ2h0IGF3YXksIHRoZSBgdG9vbHMvYCBkaXJlY3RvcnkgaXMgYSByZWQgZmxhZyBpbiB0ZXJtcyBvZiBzeXprYWxsZXIgZnV6emluZyB0YXJnZXRzOyB0b29scyBpbiB0aGVyZSBhcmUgZ2VuZXJhbGx5IHVzZXItc3BhY2UgdXRpbGl0aWVzIGFuZCBub3QgcGFydCBvZiB0aGUgY29yZSBrZXJuZWwgZXhlY3V0aW9uIHBhdGggd2UncmUgdGFyZ2V0aW5nLlxuXG5XYWl0LCBqdXN0IGEgc2FuaXR5IGNoZWNrLiBMZXQncyBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBrZXJuZWwgY2hhbmdlcyBidXJpZWQgaW4gdGhlcmUuIERvdWJsZS1jaGVja2luZy4uLiBZZXAsIHRoZSBkaWZmIG9ubHkgc2hvd3MgdGhvc2UgdHdvIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdGAgYW5kIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AuIE9rYXksIHNvIHdlJ3JlIHNhZmUuIFVzZXItc3BhY2UgdG9vbHMgYXJlIGV4cGxpY2l0bHkgKm91dHNpZGUqIHRoZSBzY29wZSBvZiB3aGF0IHdlIHdhbnQgdG8gZnV6eiB3aXRoIHN5emthbGxlci5cblxuTGV0J3MgY29uZmlybSB0aG9zZSBmaWxlIGxvY2F0aW9ucyBhZ2FpbjpcblxuKiAgIGBEb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0YCAtIERvY3VtZW50YXRpb24sIG5vdCBjb2RlLlxuKiAgIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AgLSBVc2VyLXNwYWNlIHRvb2wuXG5cblNvLCBzaW5jZSBib3RoIG1vZGlmaWVkIGZpbGVzIGFyZSBkZWZpbml0ZWx5ICpub3QqIGtlcm5lbCBzb3VyY2UsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBjb25maW5lZCB0byBhIHVzZXItc3BhY2UgdXRpbGl0eSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYsIHNvIHRoZXJlJ3Mgbm90aGluZyBmb3Igc3l6a2FsbGVyIHRvIHRhcmdldC5cblxuTm93LCBsZXQncyBwdXQgaXQgYWxsIHRvZ2V0aGVyIGNvbmNpc2VseS5cblxuYFdvcnRoRnV6emluZzogZmFsc2VgXG5gRm9jdXNTeW1ib2xzOiBbXWBcbmBFbmFibGVDb25maWdzOiBbXWBcbmBSZWFzb25pbmc6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cImBcblxuXG4iLCJJbnB1dFRva2VucyI6Njg3OSwiT3V0cHV0VG9rZW5zIjo2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjUyOjU1LjMwNDI0ODY1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXItc3BhY2UgdG9vbCAodG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMpIGFuZCBpdHMgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXItc3BhY2UgdG9vbCAodG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMpIGFuZCBpdHMgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowchl44[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 06:37:53 +0000 UTC FinishedAt: 2026-08-03 06:52:56 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1ZmIwMjE5MGIyMTJjMmVlZjJiMzFiYmY0NDdlNjUxNzgzNjgxZTgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo1Mjo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxuaW5kZXggYTZiZDNmZTY0MjNhZC4uYmQwMjczNzdkZmY2ZSAxMDA2NDRcbi0tLSBhL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3RcbiYjNDM7JiM0MzsmIzQzOyBiL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3RcbkBAIC0xOTksNiAmIzQzOzE5OSw3IEBAIFVzYWdlXG4gXHRcdC1wXHRcdFNvcnQgYnkgcGlkLlxuIFx0XHQtUFx0XHRTb3J0IGJ5IHRnaWQuXG4gXHRcdC1uXHRcdFNvcnQgYnkgdGFzayBjb21tYW5kIG5hbWUuXG4mIzQzO1x0XHQtTVx0XHRTb3J0IGJ5IG1vZHVsZSBuYW1lLlxuIFx0XHQtclx0XHRTb3J0IGJ5IG1lbW9yeSByZWxlYXNlIHRpbWUuXG4gXHRcdC1zXHRcdFNvcnQgYnkgc3RhY2sgdHJhY2UuXG4gXHRcdC10XHRcdFNvcnQgYnkgdGltZXMgKGRlZmF1bHQpLlxuQEAgLTI0MCw4ICYjNDM7MjQxLDEwIEBAIFVzYWdlXG4gXHRcdFx0XHRcdGdyb3VwIElEIG51bWJlcnMgYXBwZWFyIGluIFx1MDAzY3RnaWRsaXN0XHUwMDNlLlxuIFx0XHQtLW5hbWUgXHUwMDNjY21kbGlzdFx1MDAzZVx0U2VsZWN0IGJ5IHRhc2sgY29tbWFuZCBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlIGJsb2NrcyB3aG9zZVxuIFx0XHRcdFx0XHR0YXNrIGNvbW1hbmQgbmFtZSBhcHBlYXIgaW4gXHUwMDNjY21kbGlzdFx1MDAzZS5cbiYjNDM7XHRcdC0tbW9kdWxlIFx1MDAzY21vZGxpc3RcdTAwM2VcdFNlbGVjdCBieSBtb2R1bGUgbmFtZS4gVGhpcyBzZWxlY3RzIHRoZSBibG9ja3Mgd2hvc2VcbiYjNDM7XHRcdFx0XHRcdG1vZHVsZSBuYW1lIGFwcGVhciBpbiBcdTAwM2Ntb2RsaXN0XHUwMDNlLlxuIFxuLVx0XHRcdTAwM2NwaWRsaXN0XHUwMDNlLCBcdTAwM2N0Z2lkbGlzdFx1MDAzZSwgXHUwMDNjY21kbGlzdFx1MDAzZSBhcmUgc2luZ2xlIGFyZ3VtZW50cyBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LFxuJiM0MztcdFx0XHUwMDNjcGlkbGlzdFx1MDAzZSwgXHUwMDNjdGdpZGxpc3RcdTAwM2UsIFx1MDAzY2NtZGxpc3RcdTAwM2UsIFx1MDAzY21vZGxpc3RcdTAwM2UgYXJlIHNpbmdsZSBhcmd1bWVudHMgaW4gdGhlIGZvcm0gb2YgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCxcbiBcdFx0d2hpY2ggb2ZmZXJzIGEgd2F5IHRvIHNwZWNpZnkgaW5kaXZpZHVhbCBzZWxlY3RpbmcgcnVsZXMuXG4gXG4gXG5AQCAtMjQ5LDYgJiM0MzsyNTIsNyBAQCBVc2FnZVxuIFx0XHRcdFx0Li9wYWdlX293bmVyX3NvcnQgXHUwMDNjaW5wdXRcdTAwM2UgXHUwMDNjb3V0cHV0XHUwMDNlIC0tcGlkPTFcbiBcdFx0XHRcdC4vcGFnZV9vd25lcl9zb3J0IFx1MDAzY2lucHV0XHUwMDNlIFx1MDAzY291dHB1dFx1MDAzZSAtLXRnaWQ9MSwyLDNcbiBcdFx0XHRcdC4vcGFnZV9vd25lcl9zb3J0IFx1MDAzY2lucHV0XHUwMDNlIFx1MDAzY291dHB1dFx1MDAzZSAtLW5hbWUgbmFtZTEsbmFtZTJcbiYjNDM7XHRcdFx0XHQuL3BhZ2Vfb3duZXJfc29ydCBcdTAwM2NpbnB1dFx1MDAzZSBcdTAwM2NvdXRwdXRcdTAwM2UgLS1tb2R1bGUgeGZzLGV4dDRcbiBcbiBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuID09PT09PT09PT09PT09PT09PT09PT09PT09XG5AQCAtMjY1LDYgJiM0MzsyNjksNyBAQCBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuIFx0ZnRcdFx0ZnJlZV90c1x0XHR0aW1lc3RhbXAgb2YgdGhlIHBhZ2Ugd2hlbiBpdCB3YXMgcmVsZWFzZWRcbiBcdGF0XHRcdGFsbG9jX3RzXHR0aW1lc3RhbXAgb2YgdGhlIHBhZ2Ugd2hlbiBpdCB3YXMgYWxsb2NhdGVkXG4gXHRhdG9yXHRcdGFsbG9jYXRvclx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcbiYjNDM7XHRtb2RcdFx0bW9kdWxlXHRcdGtlcm5lbCBtb2R1bGUgbmFtZVxuIFxuICAgRm9yIC0tY3VsbCBvcHRpb246XG4gXG5AQCAtMjc1LDYgJiM0MzsyODAsNyBAQCBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuIFx0Zlx0XHRmcmVlXHRcdHdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVsZWFzZWQgb3Igbm90XG4gXHRzdFx0XHRzdGFja3RyYWNlXHRzdGFjayB0cmFjZSBvZiB0aGUgcGFnZSBhbGxvY2F0aW9uXG4gXHRhdG9yXHRcdGFsbG9jYXRvclx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcbiYjNDM7XHRtb2RcdFx0bW9kdWxlXHRcdGtlcm5lbCBtb2R1bGUgbmFtZVxuIFxuIEZpbHRlcmluZyBwYWdlX293bmVyIG91dHB1dFxuID09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbmRpZmYgLS1naXQgYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXG5pbmRleCAzNWQzZDI1NDk0MWM5Li5jNWJjM2I1MjRjMGE5IDEwMDY0NFxuLS0tIGEvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXG5AQCAtMjUsMTEgJiM0MzsyNSwxMyBAQFxuICNpbmNsdWRlIFx1MDAzY2dldG9wdC5oXHUwMDNlXG4gXG4gI2RlZmluZSBUQVNLX0NPTU1fTEVOIDE2XG4mIzQzOyNkZWZpbmUgTU9EVUxFX05BTUVfTEVOIDY0XG4gXG4gc3RydWN0IGJsb2NrX2xpc3Qge1xuIFx0Y2hhciAqdHh0O1xuIFx0Y2hhciAqY29tbTsgLy8gdGFzayBjb21tYW5kIG5hbWVcbiBcdGNoYXIgKnN0YWNrdHJhY2U7XG4mIzQzO1x0Y2hhciAqbW9kdWxlOyAvLyBrZXJuZWwgbW9kdWxlIG5hbWVcbiBcdF9fdTY0IHRzX25zZWM7XG4gXHRpbnQgbGVuO1xuIFx0aW50IG51bTtcbkBAIC00MSw3ICYjNDM7NDMsOCBAQCBzdHJ1Y3QgYmxvY2tfbGlzdCB7XG4gZW51bSBGSUxURVJfQklUIHtcbiBcdEZJTFRFUl9QSUQgPSAxXHUwMDNjXHUwMDNjMSxcbiBcdEZJTFRFUl9UR0lEID0gMVx1MDAzY1x1MDAzYzIsXG4tXHRGSUxURVJfQ09NTSA9IDFcdTAwM2NcdTAwM2MzXG4mIzQzO1x0RklMVEVSX0NPTU0gPSAxXHUwMDNjXHUwMDNjMyxcbiYjNDM7XHRGSUxURVJfTU9EVUxFID0gMVx1MDAzY1x1MDAzYzRcbiB9O1xuIFxuIGVudW0gRklMVEVSX1JFU1VMVCB7XG5AQCAtNTUsNyAmIzQzOzU4LDggQEAgZW51bSBDVUxMX0JJVCB7XG4gXHRDVUxMX1RHSUQgPSAxXHUwMDNjXHUwMDNjMixcbiBcdENVTExfQ09NTSA9IDFcdTAwM2NcdTAwM2MzLFxuIFx0Q1VMTF9TVEFDS1RSQUNFID0gMVx1MDAzY1x1MDAzYzQsXG4tXHRDVUxMX0FMTE9DQVRPUiA9IDFcdTAwM2NcdTAwM2M1XG4mIzQzO1x0Q1VMTF9BTExPQ0FUT1IgPSAxXHUwMDNjXHUwMDNjNSxcbiYjNDM7XHRDVUxMX01PRFVMRSA9IDFcdTAwM2NcdTAwM2M2XG4gfTtcbiBlbnVtIEFMTE9DQVRPUl9CSVQge1xuIFx0QUxMT0NBVE9SX0NNQSA9IDFcdTAwM2NcdTAwM2MxLFxuQEAgLTY1LDcgJiM0Mzs2OSw4IEBAIGVudW0gQUxMT0NBVE9SX0JJVCB7XG4gfTtcbiBlbnVtIEFSR19UWVBFIHtcbiBcdEFSR19UWFQsIEFSR19DT01NLCBBUkdfU1RBQ0tUUkFDRSwgQVJHX0FMTE9DX1RTLCBBUkdfQ1VMTF9USU1FLFxuLVx0QVJHX1BBR0VfTlVNLCBBUkdfUElELCBBUkdfVEdJRCwgQVJHX1VOS05PV04sIEFSR19BTExPQ0FUT1JcbiYjNDM7XHRBUkdfUEFHRV9OVU0sIEFSR19QSUQsIEFSR19UR0lELCBBUkdfVU5LTk9XTiwgQVJHX0FMTE9DQVRPUixcbiYjNDM7XHRBUkdfTU9EVUxFXG4gfTtcbiBlbnVtIFNPUlRfT1JERVIge1xuIFx0U09SVF9BU0MgPSAxLFxuQEAgLTc5LDE1ICYjNDM7ODQsMTggQEAgZW51bSBDT01QX0ZMQUcge1xuIFx0Q09NUF9TVEFDSyA9IDFcdTAwM2NcdTAwM2MzLFxuIFx0Q09NUF9OVU0gPSAxXHUwMDNjXHUwMDNjNCxcbiBcdENPTVBfVEdJRCA9IDFcdTAwM2NcdTAwM2M1LFxuLVx0Q09NUF9DT01NID0gMVx1MDAzY1x1MDAzYzZcbiYjNDM7XHRDT01QX0NPTU0gPSAxXHUwMDNjXHUwMDNjNixcbiYjNDM7XHRDT01QX01PRFVMRSA9IDFcdTAwM2NcdTAwM2M3XG4gfTtcbiBzdHJ1Y3QgZmlsdGVyX2NvbmRpdGlvbiB7XG4gXHRwaWRfdCAqcGlkcztcbiBcdHBpZF90ICp0Z2lkcztcbiBcdGNoYXIgKipjb21tcztcbiYjNDM7XHRjaGFyICoqbW9kdWxlcztcbiBcdGludCBwaWRzX3NpemU7XG4gXHRpbnQgdGdpZHNfc2l6ZTtcbiBcdGludCBjb21tc19zaXplO1xuJiM0MztcdGludCBtb2R1bGVzX3NpemU7XG4gfTtcbiBzdHJ1Y3Qgc29ydF9jb25kaXRpb24ge1xuIFx0aW50ICgqKmNtcHMpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTtcbkBAIC0xMDEsNiAmIzQzOzEwOSw3IEBAIHN0YXRpYyByZWdleF90IHBpZF9wYXR0ZXJuO1xuIHN0YXRpYyByZWdleF90IHRnaWRfcGF0dGVybjtcbiBzdGF0aWMgcmVnZXhfdCBjb21tX3BhdHRlcm47XG4gc3RhdGljIHJlZ2V4X3QgdHNfbnNlY19wYXR0ZXJuO1xuJiM0MztzdGF0aWMgcmVnZXhfdCBtb2R1bGVfcGF0dGVybjtcbiBzdGF0aWMgc3RydWN0IGJsb2NrX2xpc3QgKmxpc3Q7XG4gc3RhdGljIGludCBsaXN0X3NpemU7XG4gc3RhdGljIGludCBtYXhfc2l6ZTtcbkBAIC0xODQsNiAmIzQzOzE5MywxMyBAQCBzdGF0aWMgaW50IGNvbXBhcmVfY29tbShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4gXHRyZXR1cm4gc3RyY21wKGwxLVx1MDAzZWNvbW0sIGwyLVx1MDAzZWNvbW0pO1xuIH1cbiBcbiYjNDM7c3RhdGljIGludCBjb21wYXJlX21vZHVsZShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4mIzQzO3tcbiYjNDM7XHRjb25zdCBzdHJ1Y3QgYmxvY2tfbGlzdCAqbDEgPSBwMSwgKmwyID0gcDI7XG4mIzQzO1xuJiM0MztcdHJldHVybiBzdHJjbXAobDEtXHUwMDNlbW9kdWxlLCBsMi1cdTAwM2Vtb2R1bGUpO1xuJiM0Mzt9XG4mIzQzO1xuIHN0YXRpYyBpbnQgY29tcGFyZV90cyhjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4ge1xuIFx0Y29uc3Qgc3RydWN0IGJsb2NrX2xpc3QgKmwxID0gcDEsICpsMiA9IHAyO1xuQEAgLTIwNyw2ICYjNDM7MjIzLDggQEAgc3RhdGljIGludCBjb21wYXJlX2N1bGxfY29uZGl0aW9uKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMilcbiBcdFx0cmV0dXJuIGNvbXBhcmVfdGdpZChwMSwgcDIpO1xuIFx0aWYgKChjdWxsIFx1MDAyNiBDVUxMX0NPTU0pIFx1MDAyNlx1MDAyNiBjb21wYXJlX2NvbW0ocDEsIHAyKSlcbiBcdFx0cmV0dXJuIGNvbXBhcmVfY29tbShwMSwgcDIpO1xuJiM0MztcdGlmICgoY3VsbCBcdTAwMjYgQ1VMTF9NT0RVTEUpIFx1MDAyNlx1MDAyNiBjb21wYXJlX21vZHVsZShwMSwgcDIpKVxuJiM0MztcdFx0cmV0dXJuIGNvbXBhcmVfbW9kdWxlKHAxLCBwMik7XG4gXHRpZiAoKGN1bGwgXHUwMDI2IENVTExfQUxMT0NBVE9SKSBcdTAwMjZcdTAwMjYgY29tcGFyZV9hbGxvY2F0b3IocDEsIHAyKSlcbiBcdFx0cmV0dXJuIGNvbXBhcmVfYWxsb2NhdG9yKHAxLCBwMik7XG4gXHRyZXR1cm4gMDtcbkBAIC00MTEsOSAmIzQzOzQyOSwzMyBAQCBzdGF0aWMgY2hhciAqZ2V0X2NvbW0oY2hhciAqYnVmKVxuIFx0cmV0dXJuIGNvbW1fc3RyO1xuIH1cbiBcbiYjNDM7c3RhdGljIGNoYXIgKmdldF9tb2R1bGUoY2hhciAqYnVmKVxuJiM0Mzt7XG4mIzQzO1x0Y2hhciAqbW9kdWxlX3N0ciA9IG1hbGxvYyhNT0RVTEVfTkFNRV9MRU4pO1xuJiM0MztcdHJlZ21hdGNoX3QgcG1hdGNoWzJdO1xuJiM0MztcdGludCB2YWxfbGVuO1xuJiM0MztcbiYjNDM7XHRpZiAoIW1vZHVsZV9zdHIpXG4mIzQzO1x0XHRyZXR1cm4gTlVMTDtcbiYjNDM7XHRtZW1zZXQobW9kdWxlX3N0ciwgMCwgTU9EVUxFX05BTUVfTEVOKTtcbiYjNDM7XHRpZiAocmVnZXhlYyhcdTAwMjZtb2R1bGVfcGF0dGVybiwgYnVmLCAyLCBwbWF0Y2gsIFJFR19OT1RCT0wpICE9IDAgfHwgcG1hdGNoWzFdLnJtX3NvID09IC0xKSB7XG4mIzQzO1x0XHRzdHJjcHkobW9kdWxlX3N0ciwgXCYjMzQ7dm1saW51eFwmIzM0Oyk7XG4mIzQzO1x0XHRyZXR1cm4gbW9kdWxlX3N0cjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdHZhbF9sZW4gPSBwbWF0Y2hbMV0ucm1fZW8gLSBwbWF0Y2hbMV0ucm1fc287XG4mIzQzO1x0aWYgKChzaXplX3QpdmFsX2xlbiBcdTAwM2U9IE1PRFVMRV9OQU1FX0xFTilcbiYjNDM7XHRcdHZhbF9sZW4gPSBNT0RVTEVfTkFNRV9MRU4gLSAxO1xuJiM0MztcdG1lbWNweShtb2R1bGVfc3RyLCBidWYgJiM0MzsgcG1hdGNoWzFdLnJtX3NvLCB2YWxfbGVuKTtcbiYjNDM7XHRtb2R1bGVfc3RyW3ZhbF9sZW5dID0gJiMzOTtcXDAmIzM5OztcbiYjNDM7XG4mIzQzO1x0cmV0dXJuIG1vZHVsZV9zdHI7XG4mIzQzO31cbiYjNDM7XG4gc3RhdGljIHZvaWQgZnJlZV9ibG9ja19saXN0KHN0cnVjdCBibG9ja19saXN0ICpibG9jaylcbiB7XG4gXHRmcmVlKGJsb2NrLVx1MDAzZWNvbW0pO1xuJiM0MztcdGZyZWUoYmxvY2stXHUwMDNlbW9kdWxlKTtcbiBcdGZyZWUoYmxvY2stXHUwMDNldHh0KTtcbiB9XG4gXG5AQCAtNDMzLDYgJiM0Mzs0NzUsOCBAQCBzdGF0aWMgaW50IGdldF9hcmdfdHlwZShjb25zdCBjaGFyICphcmcpXG4gXHRcdHJldHVybiBBUkdfQUxMT0NfVFM7XG4gXHRlbHNlIGlmICghc3RyY21wKGFyZywgXCYjMzQ7YWxsb2NhdG9yXCYjMzQ7KSB8fCAhc3RyY21wKGFyZywgXCYjMzQ7YXRvclwmIzM0OykpXG4gXHRcdHJldHVybiBBUkdfQUxMT0NBVE9SO1xuJiM0MztcdGVsc2UgaWYgKCFzdHJjbXAoYXJnLCBcJiMzNDttb2R1bGVcJiMzNDspIHx8ICFzdHJjbXAoYXJnLCBcJiMzNDttb2RcJiMzNDspKVxuJiM0MztcdFx0cmV0dXJuIEFSR19NT0RVTEU7XG4gXHRlbHNlIHtcbiBcdFx0cmV0dXJuIEFSR19VTktOT1dOO1xuIFx0fVxuQEAgLTQ4MywyNSAmIzQzOzUyNywzNiBAQCBzdGF0aWMgYm9vbCBtYXRjaF9zdHJfbGlzdChjb25zdCBjaGFyICpzdHIsIGNoYXIgKipsaXN0LCBpbnQgbGlzdF9zaXplKVxuIFxuIHN0YXRpYyBlbnVtIEZJTFRFUl9SRVNVTFQgZmlsdGVyX3JlY29yZChjaGFyICpidWYpXG4ge1xuLVx0Y2hhciAqY29tbTtcbiYjNDM7XHRjaGFyICpjb21tLCAqbW9kdWxlO1xuIFxuIFx0aWYgKChmaWx0ZXIgXHUwMDI2IEZJTFRFUl9QSUQpIFx1MDAyNlx1MDAyNiAhbWF0Y2hfbnVtX2xpc3QoZ2V0X3BpZChidWYpLCBmYy5waWRzLCBmYy5waWRzX3NpemUpKVxuIFx0XHRyZXR1cm4gRklMVEVSX1NLSVA7XG4gXHRpZiAoKGZpbHRlciBcdTAwMjYgRklMVEVSX1RHSUQpIFx1MDAyNlx1MDAyNlxuIFx0XHQhbWF0Y2hfbnVtX2xpc3QoZ2V0X3RnaWQoYnVmKSwgZmMudGdpZHMsIGZjLnRnaWRzX3NpemUpKVxuIFx0XHRyZXR1cm4gRklMVEVSX1NLSVA7XG4tXHRpZiAoIShmaWx0ZXIgXHUwMDI2IEZJTFRFUl9DT01NKSlcbiYjNDM7XHRpZiAoIShmaWx0ZXIgXHUwMDI2IChGSUxURVJfQ09NTSB8IEZJTFRFUl9NT0RVTEUpKSlcbiBcdFx0cmV0dXJuIEZJTFRFUl9NQVRDSDtcbiBcbi1cdGNvbW0gPSBnZXRfY29tbShidWYpO1xuLVx0aWYgKCFjb21tKVxuLVx0XHRyZXR1cm4gRklMVEVSX0VSUk9SO1xuLVxuLVx0aWYgKCFtYXRjaF9zdHJfbGlzdChjb21tLCBmYy5jb21tcywgZmMuY29tbXNfc2l6ZSkpIHtcbiYjNDM7XHRpZiAoZmlsdGVyIFx1MDAyNiBGSUxURVJfQ09NTSkge1xuJiM0MztcdFx0Y29tbSA9IGdldF9jb21tKGJ1Zik7XG4mIzQzO1x0XHRpZiAoIWNvbW0pXG4mIzQzO1x0XHRcdHJldHVybiBGSUxURVJfRVJST1I7XG4mIzQzO1x0XHRpZiAoIW1hdGNoX3N0cl9saXN0KGNvbW0sIGZjLmNvbW1zLCBmYy5jb21tc19zaXplKSkge1xuJiM0MztcdFx0XHRmcmVlKGNvbW0pO1xuJiM0MztcdFx0XHRyZXR1cm4gRklMVEVSX1NLSVA7XG4mIzQzO1x0XHR9XG4gXHRcdGZyZWUoY29tbSk7XG4tXHRcdHJldHVybiBGSUxURVJfU0tJUDtcbiBcdH1cbi1cdGZyZWUoY29tbSk7XG4mIzQzO1x0aWYgKGZpbHRlciBcdTAwMjYgRklMVEVSX01PRFVMRSkge1xuJiM0MztcdFx0bW9kdWxlID0gZ2V0X21vZHVsZShidWYpO1xuJiM0MztcdFx0aWYgKCFtb2R1bGUpXG4mIzQzO1x0XHRcdHJldHVybiBGSUxURVJfRVJST1I7XG4mIzQzO1x0XHRpZiAoIW1hdGNoX3N0cl9saXN0KG1vZHVsZSwgZmMubW9kdWxlcywgZmMubW9kdWxlc19zaXplKSkge1xuJiM0MztcdFx0XHRmcmVlKG1vZHVsZSk7XG4mIzQzO1x0XHRcdHJldHVybiBGSUxURVJfU0tJUDtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGZyZWUobW9kdWxlKTtcbiYjNDM7XHR9XG4gXHRyZXR1cm4gRklMVEVSX01BVENIO1xuIH1cbiBcbkBAIC01NDcsNiAmIzQzOzYwMiwxMiBAQCBzdGF0aWMgYm9vbCBhZGRfbGlzdChjaGFyICpidWYsIGludCBsZW4sIGNoYXIgKmV4dF9idWYpXG4gXHRcdGxpc3RbbGlzdF9zaXplXS5zdGFja3RyYWNlJiM0MzsmIzQzOztcbiBcdGxpc3RbbGlzdF9zaXplXS50c19uc2VjID0gZ2V0X3RzX25zZWMoYnVmKTtcbiBcdGxpc3RbbGlzdF9zaXplXS5hbGxvY2F0b3IgPSBnZXRfYWxsb2NhdG9yKGJ1ZiwgZXh0X2J1Zik7XG4mIzQzO1x0bGlzdFtsaXN0X3NpemVdLm1vZHVsZSA9IGdldF9tb2R1bGUoYnVmKTtcbiYjNDM7XHRpZiAoIWxpc3RbbGlzdF9zaXplXS5tb2R1bGUpIHtcbiYjNDM7XHRcdGZwcmludGYoc3RkZXJyLCBcJiMzNDtPdXQgb2YgbWVtb3J5XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdGZyZWVfYmxvY2tfbGlzdChcdTAwMjZsaXN0W2xpc3Rfc2l6ZV0pO1xuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcdH1cbiBcdGxpc3Rfc2l6ZSYjNDM7JiM0Mzs7XG4gXHRpZiAobGlzdF9zaXplICUgMTAwMCA9PSAwKSB7XG4gXHRcdHByaW50ZihcJiMzNDtsb2FkZWQgJWRcXHJcJiMzNDssIGxpc3Rfc2l6ZSk7XG5AQCAtNTczLDYgJiM0Mzs2MzQsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZV9jdWxsX2FyZ3MoY29uc3QgY2hhciAqYXJnX3N0cilcbiBcdFx0XHRjdWxsIHw9IENVTExfU1RBQ0tUUkFDRTtcbiBcdFx0ZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX0FMTE9DQVRPUilcbiBcdFx0XHRjdWxsIHw9IENVTExfQUxMT0NBVE9SO1xuJiM0MztcdFx0ZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX01PRFVMRSlcbiYjNDM7XHRcdFx0Y3VsbCB8PSBDVUxMX01PRFVMRTtcbiBcdFx0ZWxzZSB7XG4gXHRcdFx0ZnJlZV9leHBsb2RlKGFyZ3MsIHNpemUpO1xuIFx0XHRcdHJldHVybiBmYWxzZTtcbkBAIC02MzUsNiAmIzQzOzY5OCw4IEBAIHN0YXRpYyBib29sIHBhcnNlX3NvcnRfYXJncyhjb25zdCBjaGFyICphcmdfc3RyKVxuIFx0XHRcdHNjLmNtcHNbaV0gPSBjb21wYXJlX3R4dDtcbiBcdFx0ZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX0FMTE9DQVRPUilcbiBcdFx0XHRzYy5jbXBzW2ldID0gY29tcGFyZV9hbGxvY2F0b3I7XG4mIzQzO1x0XHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfTU9EVUxFKVxuJiM0MztcdFx0XHRzYy5jbXBzW2ldID0gY29tcGFyZV9tb2R1bGU7XG4gXHRcdGVsc2Uge1xuIFx0XHRcdGZyZWVfZXhwbG9kZShhcmdzLCBzaXplKTtcbiBcdFx0XHRzYy5zaXplID0gMDtcbkBAIC02OTEsNyAmIzQzOzc1Niw4IEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpXG4gXHRcdFwmIzM0Oy1wXFx0XFx0XFx0U29ydCBieSBwaWQuXFxuXCYjMzQ7XG4gXHRcdFwmIzM0Oy1QXFx0XFx0XFx0U29ydCBieSB0Z2lkLlxcblwmIzM0O1xuIFx0XHRcJiMzNDstc1xcdFxcdFxcdFNvcnQgYnkgdGhlIHN0YWNrdHJhY2UuXFxuXCYjMzQ7XG4tXHRcdFwmIzM0Oy10XFx0XFx0XFx0U29ydCBieSBudW1iZXIgb2YgdGltZXMgcmVjb3JkIGlzIHNlZW4gKGRlZmF1bHQpLlxcblxcblwmIzM0O1xuJiM0MztcdFx0XCYjMzQ7LXRcXHRcXHRcXHRTb3J0IGJ5IG51bWJlciBvZiB0aW1lcyByZWNvcmQgaXMgc2VlbiAoZGVmYXVsdCkuXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDstTVxcdFxcdFxcdFNvcnQgYnkgbW9kdWxlIG5hbWUuXFxuXFxuXCYjMzQ7XG4gXHRcdFwmIzM0Oy0tcGlkIFx1MDAzY3BpZGxpc3RcdTAwM2VcXHRcXHRTZWxlY3QgYnkgcGlkLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXCYjMzQ7XG4gXHRcdFwmIzM0OyBvZlxcblxcdFxcdFxcdGJsb2NrcyB3aG9zZSBwcm9jZXNzIElEIG51bWJlcnMgYXBwZWFyIGluIFx1MDAzY3BpZGxpc3RcdTAwM2UuXFxuXCYjMzQ7XG4gXHRcdFwmIzM0Oy0tdGdpZCBcdTAwM2N0Z2lkbGlzdFx1MDAzZVxcdFNlbGVjdCBieSB0Z2lkLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXCYjMzQ7XG5AQCAtNzAwLDExICYjNDM7NzY2LDIxIEBAIHN0YXRpYyB2b2lkIHVzYWdlKHZvaWQpXG4gXHRcdFwmIzM0Oy0tbmFtZSBcdTAwM2NjbWRsaXN0XHUwMDNlXFx0U2VsZWN0IGJ5IGNvbW1hbmQgbmFtZS4gVGhpcyBzZWxlY3RzIHRoZVwmIzM0O1xuIFx0XHRcJiMzNDsgaW5mb3JtYXRpb25cXG5cXHRcXHRcXHRvZiBibG9ja3Mgd2hvc2UgY29tbWFuZCBuYW1lIGFwcGVhcnMgaW5cJiMzNDtcbiBcdFx0XCYjMzQ7IFx1MDAzY2NtZGxpc3RcdTAwM2UuXFxuXCYjMzQ7XG4tXHRcdFwmIzM0Oy0tY3VsbCBcdTAwM2NydWxlc1x1MDAzZVxcdFxcdEN1bGwgYnkgdXNlci1kZWZpbmVkIHJ1bGVzLiBcdTAwM2NydWxlc1x1MDAzZSBpcyBhIFwmIzM0O1xuLVx0XHRcJiMzNDtzaW5nbGVcXG5cXHRcXHRcXHRhcmd1bWVudCBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IFwmIzM0O1xuLVx0XHRcJiMzNDt3aXRoIHNvbWVcXG5cXHRcXHRcXHRjb21tb24gZmllbGRzIHByZWRlZmluZWQgKHBpZCwgdGdpZCwgY29tbSwgXCYjMzQ7XG4tXHRcdFwmIzM0O3N0YWNrdHJhY2UsIGFsbG9jYXRvcilcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0Oy0tbW9kdWxlIFx1MDAzY21vZGxpc3RcdTAwM2VcXHRTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgaW5mb3JtYXRpb25cXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdG9mIGJsb2NrcyB3aG9zZSBtb2R1bGUgbmFtZSBhcHBlYXJzIGluIFx1MDAzY21vZGxpc3RcdTAwM2UuXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDstLWN1bGwgXHUwMDNjcnVsZXNcdTAwM2VcXHRcXHRDdWxsIGJ5IHVzZXItZGVmaW5lZCBydWxlcy4gXHUwMDNjcnVsZXNcdTAwM2UgaXMgYSBzaW5nbGVcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdGFyZ3VtZW50IGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgd2l0aCBzb21lXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRjb21tb24gZmllbGRzIHByZWRlZmluZWQgKHBpZCwgdGdpZCwgY29tbSwgc3RhY2t0cmFjZSwgYWxsb2NhdG9yLCBtb2R1bGUpXFxuXCYjMzQ7XG4gXHRcdFwmIzM0Oy0tc29ydCBcdTAwM2NvcmRlclx1MDAzZVxcdFxcdFNwZWNpZnkgc29ydCBvcmRlciBhczogWyYjNDM7fC1da2V5WyxbJiM0Mzt8LV1rZXlbLC4uLl1dXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRBdmFpbGFibGUga2V5czpcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdCAgcGlkKHApLCB0Z2lkKHRnKSwgbmFtZShuKSwgc3RhY2t0cmFjZShzdCksXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHQgIHR4dChUKSwgYWxsb2NfdHMoYXQpLCBhbGxvY2F0b3IoYXRvciksIG1vZHVsZShtb2QpXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRUaGUgXFxcJiMzNDsmIzQzO1xcXCYjMzQ7IGlzIG9wdGlvbmFsIHNpbmNlIGRlZmF1bHQgZGlyZWN0aW9uIGlzXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRpbmNyZWFzaW5nIG51bWVyaWNhbCBvciBsZXhpY29ncmFwaGljIG9yZGVyLlxcblwmIzM0O1xuJiM0MztcdFx0XCYjMzQ7XFx0XFx0XFx0TWl4ZWQgdXNlIG9mIGFiYnJldmlhdGVkIGFuZCBjb21wbGV0ZS1mb3JtIGlzIGFsbG93ZWQuXFxuXCYjMzQ7XG4mIzQzO1x0XHRcJiMzNDtcXHRcXHRcXHRFeGFtcGxlczpcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdCAgLS1zb3J0PW4sJiM0MztwaWQsLXRnaWRcXG5cJiMzNDtcbiYjNDM7XHRcdFwmIzM0O1xcdFxcdFxcdCAgLS1zb3J0PW1vZCxhdFxcblwmIzM0O1xuIFx0KTtcbiB9XG4gXG5AQCAtNzIxLDEzICYjNDM7Nzk3LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0eyBcJiMzNDtuYW1lXCYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMyB9LFxuIFx0XHR7IFwmIzM0O2N1bGxcJiMzNDssIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCA0IH0sXG4gXHRcdHsgXCYjMzQ7c29ydFwmIzM0OywgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDUgfSxcbiYjNDM7XHRcdHsgXCYjMzQ7bW9kdWxlXCYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNiB9LFxuIFx0XHR7IFwmIzM0O2hlbHBcJiMzNDssIG5vX2FyZ3VtZW50LCBOVUxMLCAmIzM5O2gmIzM5OyB9LFxuIFx0XHR7IDAsIDAsIDAsIDB9LFxuIFx0fTtcbiBcbiBcdGNvbXBhcmVfZmxhZyA9IENPTVBfTk9fRkxBRztcbiBcbi1cdHdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgXCYjMzQ7YWRtbnBzdFBoXCYjMzQ7LCBsb25nb3B0cywgTlVMTCkpICE9IC0xKVxuJiM0MztcdHdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgXCYjMzQ7YWRtbnBzdFBNaFwmIzM0OywgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSlcbiBcdFx0c3dpdGNoIChvcHQpIHtcbiBcdFx0Y2FzZSAmIzM5O2EmIzM5OzpcbiBcdFx0XHRjb21wYXJlX2ZsYWcgfD0gQ09NUF9BTExPQztcbkBAIC03NTMsNiAmIzQzOzgzMCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0Y2FzZSAmIzM5O24mIzM5OzpcbiBcdFx0XHRjb21wYXJlX2ZsYWcgfD0gQ09NUF9DT01NO1xuIFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0Y2FzZSAmIzM5O00mIzM5OzpcbiYjNDM7XHRcdFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfTU9EVUxFO1xuJiM0MztcdFx0XHRicmVhaztcbiBcdFx0Y2FzZSAmIzM5O2gmIzM5OzpcbiBcdFx0XHR1c2FnZSgpO1xuIFx0XHRcdGV4aXQoMCk7XG5AQCAtNzkyLDYgJiM0Mzs4NzIsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRcdFx0ZXhpdCgxKTtcbiBcdFx0XHR9XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIDY6XG4mIzQzO1x0XHRcdGZpbHRlciA9IGZpbHRlciB8IEZJTFRFUl9NT0RVTEU7XG4mIzQzO1x0XHRcdGZjLm1vZHVsZXMgPSBleHBsb2RlKCYjMzk7LCYjMzk7LCBvcHRhcmcsIFx1MDAyNmZjLm1vZHVsZXNfc2l6ZSk7XG4mIzQzO1x0XHRcdGJyZWFrO1xuIFx0XHRkZWZhdWx0OlxuIFx0XHRcdHVzYWdlKCk7XG4gXHRcdFx0ZXhpdCgxKTtcbkBAIC04MjEsNiAmIzQzOzkwNSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfc3RhY2t0cmFjZSwgU09SVF9BU0MpO1xuIFx0XHRicmVhaztcbiBcdGNhc2UgQ09NUF9OT19GTEFHOlxuJiM0MztcdFx0aWYgKHNjLnNpemUgXHUwMDNlIDApXG4mIzQzO1x0XHRcdGJyZWFrO1xuJiM0MztcdFx0c2V0X3NpbmdsZV9jbXAoY29tcGFyZV9udW0sIFNPUlRfREVTQyk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGNhc2UgQ09NUF9OVU06XG4gXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbnVtLCBTT1JUX0RFU0MpO1xuIFx0XHRicmVhaztcbkBAIC04MzAsNiAmIzQzOzkxOCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdGNhc2UgQ09NUF9DT01NOlxuIFx0XHRzZXRfc2luZ2xlX2NtcChjb21wYXJlX2NvbW0sIFNPUlRfQVNDKTtcbiBcdFx0YnJlYWs7XG4mIzQzO1x0Y2FzZSBDT01QX01PRFVMRTpcbiYjNDM7XHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbW9kdWxlLCBTT1JUX0FTQyk7XG4mIzQzO1x0XHRicmVhaztcbiBcdGRlZmF1bHQ6XG4gXHRcdHVzYWdlKCk7XG4gXHRcdGV4aXQoMSk7XG5AQCAtODUzLDYgJiM0Mzs5NDQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHRcdGdvdG8gb3V0X2NvbW07XG4gXHRpZiAoIWNoZWNrX3JlZ2NvbXAoXHUwMDI2dHNfbnNlY19wYXR0ZXJuLCBcJiMzNDt0c1xcXFxzKihbMC05XSopXFxcXHMqbnNcJiMzNDspKVxuIFx0XHRnb3RvIG91dF90cztcbiYjNDM7XHRpZiAoIWNoZWNrX3JlZ2NvbXAoXHUwMDI2bW9kdWxlX3BhdHRlcm4sIFwmIzM0O1xcXFwmIzQzOzB4WzAtOWEtZl0mIzQzOy8weFswLTlhLWZdJiM0MztcXFxccypcXFxcWyhbYS16QS1aMC05Xy1dJiM0MzspXFxcXF1cJiMzNDspKVxuJiM0MztcdFx0Z290byBvdXRfbW9kdWxlO1xuIFxuIFx0ZnN0YXQoZmlsZW5vKGZpbiksIFx1MDAyNnN0KTtcbiBcdG1heF9zaXplID0gc3Quc3Rfc2l6ZSAvIDEwMDsgLyogaGFjayAuLi4gKi9cbkBAIC05MTEsNiAmIzQzOzEwMDQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwmIzM0OywgVEdJRCAlZFwmIzM0OywgbGlzdFtpXS50Z2lkKTtcbiBcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9DT01NIHx8IGZpbHRlciBcdTAwMjYgRklMVEVSX0NPTU0pXG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwmIzM0OywgdGFza19jb21tX25hbWU6ICVzXCYjMzQ7LCBsaXN0W2ldLmNvbW0pO1xuJiM0MztcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9NT0RVTEUgfHwgZmlsdGVyIFx1MDAyNiBGSUxURVJfTU9EVUxFKVxuJiM0MztcdFx0XHRcdGZwcmludGYoZm91dCwgXCYjMzQ7LCBtb2R1bGU6ICVzXCYjMzQ7LCBsaXN0W2ldLm1vZHVsZSk7XG4gXHRcdFx0aWYgKGN1bGwgXHUwMDI2IENVTExfQUxMT0NBVE9SKSB7XG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwmIzM0OywgXCYjMzQ7KTtcbiBcdFx0XHRcdHByaW50X2FsbG9jYXRvcihmb3V0LCBsaXN0W2ldLmFsbG9jYXRvcik7XG5AQCAtOTMxLDYgJiM0MzsxMDI2LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRcdGZyZWVfYmxvY2tfbGlzdChcdTAwMjZsaXN0W2ldKTtcbiBcdFx0ZnJlZShsaXN0KTtcbiBcdH1cbiYjNDM7b3V0X21vZHVsZTpcbiYjNDM7XHRyZWdmcmVlKFx1MDAyNm1vZHVsZV9wYXR0ZXJuKTtcbiBvdXRfdHM6XG4gXHRyZWdmcmVlKFx1MDAyNnRzX25zZWNfcGF0dGVybik7XG4gb3V0X2NvbW06XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDY6NTI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1ZmIwMjE5MGIyMTJjMmVlZjJiMzFiYmY0NDdlNjUxNzgzNjgxZTgzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBBdWcgMyAwNjo1Mjo0NSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0CmluZGV4IGE2YmQzZmU2NDIzYWQuLmJkMDI3Mzc3ZGZmNmUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3QKJiM0MzsmIzQzOyYjNDM7IGIvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdApAQCAtMTk5LDYgJiM0MzsxOTksNyBAQCBVc2FnZQogCQktcAkJU29ydCBieSBwaWQuCiAJCS1QCQlTb3J0IGJ5IHRnaWQuCiAJCS1uCQlTb3J0IGJ5IHRhc2sgY29tbWFuZCBuYW1lLgomIzQzOwkJLU0JCVNvcnQgYnkgbW9kdWxlIG5hbWUuCiAJCS1yCQlTb3J0IGJ5IG1lbW9yeSByZWxlYXNlIHRpbWUuCiAJCS1zCQlTb3J0IGJ5IHN0YWNrIHRyYWNlLgogCQktdAkJU29ydCBieSB0aW1lcyAoZGVmYXVsdCkuCkBAIC0yNDAsOCAmIzQzOzI0MSwxMCBAQCBVc2FnZQogCQkJCQlncm91cCBJRCBudW1iZXJzIGFwcGVhciBpbiAmbHQ7dGdpZGxpc3QmZ3Q7LgogCQktLW5hbWUgJmx0O2NtZGxpc3QmZ3Q7CVNlbGVjdCBieSB0YXNrIGNvbW1hbmQgbmFtZS4gVGhpcyBzZWxlY3RzIHRoZSBibG9ja3Mgd2hvc2UKIAkJCQkJdGFzayBjb21tYW5kIG5hbWUgYXBwZWFyIGluICZsdDtjbWRsaXN0Jmd0Oy4KJiM0MzsJCS0tbW9kdWxlICZsdDttb2RsaXN0Jmd0OwlTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgYmxvY2tzIHdob3NlCiYjNDM7CQkJCQltb2R1bGUgbmFtZSBhcHBlYXIgaW4gJmx0O21vZGxpc3QmZ3Q7LgogCi0JCSZsdDtwaWRsaXN0Jmd0OywgJmx0O3RnaWRsaXN0Jmd0OywgJmx0O2NtZGxpc3QmZ3Q7IGFyZSBzaW5nbGUgYXJndW1lbnRzIGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsCiYjNDM7CQkmbHQ7cGlkbGlzdCZndDssICZsdDt0Z2lkbGlzdCZndDssICZsdDtjbWRsaXN0Jmd0OywgJmx0O21vZGxpc3QmZ3Q7IGFyZSBzaW5nbGUgYXJndW1lbnRzIGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsCiAJCXdoaWNoIG9mZmVycyBhIHdheSB0byBzcGVjaWZ5IGluZGl2aWR1YWwgc2VsZWN0aW5nIHJ1bGVzLgogCiAKQEAgLTI0OSw2ICYjNDM7MjUyLDcgQEAgVXNhZ2UKIAkJCQkuL3BhZ2Vfb3duZXJfc29ydCAmbHQ7aW5wdXQmZ3Q7ICZsdDtvdXRwdXQmZ3Q7IC0tcGlkPTEKIAkJCQkuL3BhZ2Vfb3duZXJfc29ydCAmbHQ7aW5wdXQmZ3Q7ICZsdDtvdXRwdXQmZ3Q7IC0tdGdpZD0xLDIsMwogCQkJCS4vcGFnZV9vd25lcl9zb3J0ICZsdDtpbnB1dCZndDsgJmx0O291dHB1dCZndDsgLS1uYW1lIG5hbWUxLG5hbWUyCiYjNDM7CQkJCS4vcGFnZV9vd25lcl9zb3J0ICZsdDtpbnB1dCZndDsgJmx0O291dHB1dCZndDsgLS1tb2R1bGUgeGZzLGV4dDQKIAogU1RBTkRBUkQgRk9STUFUIFNQRUNJRklFUlMKID09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0yNjUsNiAmIzQzOzI2OSw3IEBAIFNUQU5EQVJEIEZPUk1BVCBTUEVDSUZJRVJTCiAJZnQJCWZyZWVfdHMJCXRpbWVzdGFtcCBvZiB0aGUgcGFnZSB3aGVuIGl0IHdhcyByZWxlYXNlZAogCWF0CQlhbGxvY190cwl0aW1lc3RhbXAgb2YgdGhlIHBhZ2Ugd2hlbiBpdCB3YXMgYWxsb2NhdGVkCiAJYXRvcgkJYWxsb2NhdG9yCW1lbW9yeSBhbGxvY2F0b3IgZm9yIHBhZ2VzCiYjNDM7CW1vZAkJbW9kdWxlCQlrZXJuZWwgbW9kdWxlIG5hbWUKIAogICBGb3IgLS1jdWxsIG9wdGlvbjoKIApAQCAtMjc1LDYgJiM0MzsyODAsNyBAQCBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSUwogCWYJCWZyZWUJCXdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVsZWFzZWQgb3Igbm90CiAJc3QJCXN0YWNrdHJhY2UJc3RhY2sgdHJhY2Ugb2YgdGhlIHBhZ2UgYWxsb2NhdGlvbgogCWF0b3IJCWFsbG9jYXRvcgltZW1vcnkgYWxsb2NhdG9yIGZvciBwYWdlcwomIzQzOwltb2QJCW1vZHVsZQkJa2VybmVsIG1vZHVsZSBuYW1lCiAKIEZpbHRlcmluZyBwYWdlX293bmVyIG91dHB1dAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMgYi90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwppbmRleCAzNWQzZDI1NDk0MWM5Li5jNWJjM2I1MjRjMGE5IDEwMDY0NAotLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwomIzQzOyYjNDM7JiM0MzsgYi90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYwpAQCAtMjUsMTEgJiM0MzsyNSwxMyBAQAogI2luY2x1ZGUgJmx0O2dldG9wdC5oJmd0OwogCiAjZGVmaW5lIFRBU0tfQ09NTV9MRU4gMTYKJiM0MzsjZGVmaW5lIE1PRFVMRV9OQU1FX0xFTiA2NAogCiBzdHJ1Y3QgYmxvY2tfbGlzdCB7CiAJY2hhciAqdHh0OwogCWNoYXIgKmNvbW07IC8vIHRhc2sgY29tbWFuZCBuYW1lCiAJY2hhciAqc3RhY2t0cmFjZTsKJiM0MzsJY2hhciAqbW9kdWxlOyAvLyBrZXJuZWwgbW9kdWxlIG5hbWUKIAlfX3U2NCB0c19uc2VjOwogCWludCBsZW47CiAJaW50IG51bTsKQEAgLTQxLDcgJiM0Mzs0Myw4IEBAIHN0cnVjdCBibG9ja19saXN0IHsKIGVudW0gRklMVEVSX0JJVCB7CiAJRklMVEVSX1BJRCA9IDEmbHQ7Jmx0OzEsCiAJRklMVEVSX1RHSUQgPSAxJmx0OyZsdDsyLAotCUZJTFRFUl9DT01NID0gMSZsdDsmbHQ7MwomIzQzOwlGSUxURVJfQ09NTSA9IDEmbHQ7Jmx0OzMsCiYjNDM7CUZJTFRFUl9NT0RVTEUgPSAxJmx0OyZsdDs0CiB9OwogCiBlbnVtIEZJTFRFUl9SRVNVTFQgewpAQCAtNTUsNyAmIzQzOzU4LDggQEAgZW51bSBDVUxMX0JJVCB7CiAJQ1VMTF9UR0lEID0gMSZsdDsmbHQ7MiwKIAlDVUxMX0NPTU0gPSAxJmx0OyZsdDszLAogCUNVTExfU1RBQ0tUUkFDRSA9IDEmbHQ7Jmx0OzQsCi0JQ1VMTF9BTExPQ0FUT1IgPSAxJmx0OyZsdDs1CiYjNDM7CUNVTExfQUxMT0NBVE9SID0gMSZsdDsmbHQ7NSwKJiM0MzsJQ1VMTF9NT0RVTEUgPSAxJmx0OyZsdDs2CiB9OwogZW51bSBBTExPQ0FUT1JfQklUIHsKIAlBTExPQ0FUT1JfQ01BID0gMSZsdDsmbHQ7MSwKQEAgLTY1LDcgJiM0Mzs2OSw4IEBAIGVudW0gQUxMT0NBVE9SX0JJVCB7CiB9OwogZW51bSBBUkdfVFlQRSB7CiAJQVJHX1RYVCwgQVJHX0NPTU0sIEFSR19TVEFDS1RSQUNFLCBBUkdfQUxMT0NfVFMsIEFSR19DVUxMX1RJTUUsCi0JQVJHX1BBR0VfTlVNLCBBUkdfUElELCBBUkdfVEdJRCwgQVJHX1VOS05PV04sIEFSR19BTExPQ0FUT1IKJiM0MzsJQVJHX1BBR0VfTlVNLCBBUkdfUElELCBBUkdfVEdJRCwgQVJHX1VOS05PV04sIEFSR19BTExPQ0FUT1IsCiYjNDM7CUFSR19NT0RVTEUKIH07CiBlbnVtIFNPUlRfT1JERVIgewogCVNPUlRfQVNDID0gMSwKQEAgLTc5LDE1ICYjNDM7ODQsMTggQEAgZW51bSBDT01QX0ZMQUcgewogCUNPTVBfU1RBQ0sgPSAxJmx0OyZsdDszLAogCUNPTVBfTlVNID0gMSZsdDsmbHQ7NCwKIAlDT01QX1RHSUQgPSAxJmx0OyZsdDs1LAotCUNPTVBfQ09NTSA9IDEmbHQ7Jmx0OzYKJiM0MzsJQ09NUF9DT01NID0gMSZsdDsmbHQ7NiwKJiM0MzsJQ09NUF9NT0RVTEUgPSAxJmx0OyZsdDs3CiB9Owogc3RydWN0IGZpbHRlcl9jb25kaXRpb24gewogCXBpZF90ICpwaWRzOwogCXBpZF90ICp0Z2lkczsKIAljaGFyICoqY29tbXM7CiYjNDM7CWNoYXIgKiptb2R1bGVzOwogCWludCBwaWRzX3NpemU7CiAJaW50IHRnaWRzX3NpemU7CiAJaW50IGNvbW1zX3NpemU7CiYjNDM7CWludCBtb2R1bGVzX3NpemU7CiB9Owogc3RydWN0IHNvcnRfY29uZGl0aW9uIHsKIAlpbnQgKCoqY21wcykoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwpAQCAtMTAxLDYgJiM0MzsxMDksNyBAQCBzdGF0aWMgcmVnZXhfdCBwaWRfcGF0dGVybjsKIHN0YXRpYyByZWdleF90IHRnaWRfcGF0dGVybjsKIHN0YXRpYyByZWdleF90IGNvbW1fcGF0dGVybjsKIHN0YXRpYyByZWdleF90IHRzX25zZWNfcGF0dGVybjsKJiM0MztzdGF0aWMgcmVnZXhfdCBtb2R1bGVfcGF0dGVybjsKIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfbGlzdCAqbGlzdDsKIHN0YXRpYyBpbnQgbGlzdF9zaXplOwogc3RhdGljIGludCBtYXhfc2l6ZTsKQEAgLTE4NCw2ICYjNDM7MTkzLDEzIEBAIHN0YXRpYyBpbnQgY29tcGFyZV9jb21tKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKIAlyZXR1cm4gc3RyY21wKGwxLSZndDtjb21tLCBsMi0mZ3Q7Y29tbSk7CiB9CiAKJiM0MztzdGF0aWMgaW50IGNvbXBhcmVfbW9kdWxlKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKJiM0Mzt7CiYjNDM7CWNvbnN0IHN0cnVjdCBibG9ja19saXN0ICpsMSA9IHAxLCAqbDIgPSBwMjsKJiM0MzsKJiM0MzsJcmV0dXJuIHN0cmNtcChsMS0mZ3Q7bW9kdWxlLCBsMi0mZ3Q7bW9kdWxlKTsKJiM0Mzt9CiYjNDM7CiBzdGF0aWMgaW50IGNvbXBhcmVfdHMoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQogewogCWNvbnN0IHN0cnVjdCBibG9ja19saXN0ICpsMSA9IHAxLCAqbDIgPSBwMjsKQEAgLTIwNyw2ICYjNDM7MjIzLDggQEAgc3RhdGljIGludCBjb21wYXJlX2N1bGxfY29uZGl0aW9uKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMikKIAkJcmV0dXJuIGNvbXBhcmVfdGdpZChwMSwgcDIpOwogCWlmICgoY3VsbCAmYW1wOyBDVUxMX0NPTU0pICZhbXA7JmFtcDsgY29tcGFyZV9jb21tKHAxLCBwMikpCiAJCXJldHVybiBjb21wYXJlX2NvbW0ocDEsIHAyKTsKJiM0MzsJaWYgKChjdWxsICZhbXA7IENVTExfTU9EVUxFKSAmYW1wOyZhbXA7IGNvbXBhcmVfbW9kdWxlKHAxLCBwMikpCiYjNDM7CQlyZXR1cm4gY29tcGFyZV9tb2R1bGUocDEsIHAyKTsKIAlpZiAoKGN1bGwgJmFtcDsgQ1VMTF9BTExPQ0FUT1IpICZhbXA7JmFtcDsgY29tcGFyZV9hbGxvY2F0b3IocDEsIHAyKSkKIAkJcmV0dXJuIGNvbXBhcmVfYWxsb2NhdG9yKHAxLCBwMik7CiAJcmV0dXJuIDA7CkBAIC00MTEsOSAmIzQzOzQyOSwzMyBAQCBzdGF0aWMgY2hhciAqZ2V0X2NvbW0oY2hhciAqYnVmKQogCXJldHVybiBjb21tX3N0cjsKIH0KIAomIzQzO3N0YXRpYyBjaGFyICpnZXRfbW9kdWxlKGNoYXIgKmJ1ZikKJiM0Mzt7CiYjNDM7CWNoYXIgKm1vZHVsZV9zdHIgPSBtYWxsb2MoTU9EVUxFX05BTUVfTEVOKTsKJiM0MzsJcmVnbWF0Y2hfdCBwbWF0Y2hbMl07CiYjNDM7CWludCB2YWxfbGVuOwomIzQzOwomIzQzOwlpZiAoIW1vZHVsZV9zdHIpCiYjNDM7CQlyZXR1cm4gTlVMTDsKJiM0MzsJbWVtc2V0KG1vZHVsZV9zdHIsIDAsIE1PRFVMRV9OQU1FX0xFTik7CiYjNDM7CWlmIChyZWdleGVjKCZhbXA7bW9kdWxlX3BhdHRlcm4sIGJ1ZiwgMiwgcG1hdGNoLCBSRUdfTk9UQk9MKSAhPSAwIHx8IHBtYXRjaFsxXS5ybV9zbyA9PSAtMSkgewomIzQzOwkJc3RyY3B5KG1vZHVsZV9zdHIsICYjMzQ7dm1saW51eCYjMzQ7KTsKJiM0MzsJCXJldHVybiBtb2R1bGVfc3RyOwomIzQzOwl9CiYjNDM7CiYjNDM7CXZhbF9sZW4gPSBwbWF0Y2hbMV0ucm1fZW8gLSBwbWF0Y2hbMV0ucm1fc287CiYjNDM7CWlmICgoc2l6ZV90KXZhbF9sZW4gJmd0Oz0gTU9EVUxFX05BTUVfTEVOKQomIzQzOwkJdmFsX2xlbiA9IE1PRFVMRV9OQU1FX0xFTiAtIDE7CiYjNDM7CW1lbWNweShtb2R1bGVfc3RyLCBidWYgJiM0MzsgcG1hdGNoWzFdLnJtX3NvLCB2YWxfbGVuKTsKJiM0MzsJbW9kdWxlX3N0clt2YWxfbGVuXSA9ICYjMzk7XDAmIzM5OzsKJiM0MzsKJiM0MzsJcmV0dXJuIG1vZHVsZV9zdHI7CiYjNDM7fQomIzQzOwogc3RhdGljIHZvaWQgZnJlZV9ibG9ja19saXN0KHN0cnVjdCBibG9ja19saXN0ICpibG9jaykKIHsKIAlmcmVlKGJsb2NrLSZndDtjb21tKTsKJiM0MzsJZnJlZShibG9jay0mZ3Q7bW9kdWxlKTsKIAlmcmVlKGJsb2NrLSZndDt0eHQpOwogfQogCkBAIC00MzMsNiAmIzQzOzQ3NSw4IEBAIHN0YXRpYyBpbnQgZ2V0X2FyZ190eXBlKGNvbnN0IGNoYXIgKmFyZykKIAkJcmV0dXJuIEFSR19BTExPQ19UUzsKIAllbHNlIGlmICghc3RyY21wKGFyZywgJiMzNDthbGxvY2F0b3ImIzM0OykgfHwgIXN0cmNtcChhcmcsICYjMzQ7YXRvciYjMzQ7KSkKIAkJcmV0dXJuIEFSR19BTExPQ0FUT1I7CiYjNDM7CWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAmIzM0O21vZHVsZSYjMzQ7KSB8fCAhc3RyY21wKGFyZywgJiMzNDttb2QmIzM0OykpCiYjNDM7CQlyZXR1cm4gQVJHX01PRFVMRTsKIAllbHNlIHsKIAkJcmV0dXJuIEFSR19VTktOT1dOOwogCX0KQEAgLTQ4MywyNSAmIzQzOzUyNywzNiBAQCBzdGF0aWMgYm9vbCBtYXRjaF9zdHJfbGlzdChjb25zdCBjaGFyICpzdHIsIGNoYXIgKipsaXN0LCBpbnQgbGlzdF9zaXplKQogCiBzdGF0aWMgZW51bSBGSUxURVJfUkVTVUxUIGZpbHRlcl9yZWNvcmQoY2hhciAqYnVmKQogewotCWNoYXIgKmNvbW07CiYjNDM7CWNoYXIgKmNvbW0sICptb2R1bGU7CiAKIAlpZiAoKGZpbHRlciAmYW1wOyBGSUxURVJfUElEKSAmYW1wOyZhbXA7ICFtYXRjaF9udW1fbGlzdChnZXRfcGlkKGJ1ZiksIGZjLnBpZHMsIGZjLnBpZHNfc2l6ZSkpCiAJCXJldHVybiBGSUxURVJfU0tJUDsKIAlpZiAoKGZpbHRlciAmYW1wOyBGSUxURVJfVEdJRCkgJmFtcDsmYW1wOwogCQkhbWF0Y2hfbnVtX2xpc3QoZ2V0X3RnaWQoYnVmKSwgZmMudGdpZHMsIGZjLnRnaWRzX3NpemUpKQogCQlyZXR1cm4gRklMVEVSX1NLSVA7Ci0JaWYgKCEoZmlsdGVyICZhbXA7IEZJTFRFUl9DT01NKSkKJiM0MzsJaWYgKCEoZmlsdGVyICZhbXA7IChGSUxURVJfQ09NTSB8IEZJTFRFUl9NT0RVTEUpKSkKIAkJcmV0dXJuIEZJTFRFUl9NQVRDSDsKIAotCWNvbW0gPSBnZXRfY29tbShidWYpOwotCWlmICghY29tbSkKLQkJcmV0dXJuIEZJTFRFUl9FUlJPUjsKLQotCWlmICghbWF0Y2hfc3RyX2xpc3QoY29tbSwgZmMuY29tbXMsIGZjLmNvbW1zX3NpemUpKSB7CiYjNDM7CWlmIChmaWx0ZXIgJmFtcDsgRklMVEVSX0NPTU0pIHsKJiM0MzsJCWNvbW0gPSBnZXRfY29tbShidWYpOwomIzQzOwkJaWYgKCFjb21tKQomIzQzOwkJCXJldHVybiBGSUxURVJfRVJST1I7CiYjNDM7CQlpZiAoIW1hdGNoX3N0cl9saXN0KGNvbW0sIGZjLmNvbW1zLCBmYy5jb21tc19zaXplKSkgewomIzQzOwkJCWZyZWUoY29tbSk7CiYjNDM7CQkJcmV0dXJuIEZJTFRFUl9TS0lQOwomIzQzOwkJfQogCQlmcmVlKGNvbW0pOwotCQlyZXR1cm4gRklMVEVSX1NLSVA7CiAJfQotCWZyZWUoY29tbSk7CiYjNDM7CWlmIChmaWx0ZXIgJmFtcDsgRklMVEVSX01PRFVMRSkgewomIzQzOwkJbW9kdWxlID0gZ2V0X21vZHVsZShidWYpOwomIzQzOwkJaWYgKCFtb2R1bGUpCiYjNDM7CQkJcmV0dXJuIEZJTFRFUl9FUlJPUjsKJiM0MzsJCWlmICghbWF0Y2hfc3RyX2xpc3QobW9kdWxlLCBmYy5tb2R1bGVzLCBmYy5tb2R1bGVzX3NpemUpKSB7CiYjNDM7CQkJZnJlZShtb2R1bGUpOwomIzQzOwkJCXJldHVybiBGSUxURVJfU0tJUDsKJiM0MzsJCX0KJiM0MzsJCWZyZWUobW9kdWxlKTsKJiM0MzsJfQogCXJldHVybiBGSUxURVJfTUFUQ0g7CiB9CiAKQEAgLTU0Nyw2ICYjNDM7NjAyLDEyIEBAIHN0YXRpYyBib29sIGFkZF9saXN0KGNoYXIgKmJ1ZiwgaW50IGxlbiwgY2hhciAqZXh0X2J1ZikKIAkJbGlzdFtsaXN0X3NpemVdLnN0YWNrdHJhY2UmIzQzOyYjNDM7OwogCWxpc3RbbGlzdF9zaXplXS50c19uc2VjID0gZ2V0X3RzX25zZWMoYnVmKTsKIAlsaXN0W2xpc3Rfc2l6ZV0uYWxsb2NhdG9yID0gZ2V0X2FsbG9jYXRvcihidWYsIGV4dF9idWYpOwomIzQzOwlsaXN0W2xpc3Rfc2l6ZV0ubW9kdWxlID0gZ2V0X21vZHVsZShidWYpOwomIzQzOwlpZiAoIWxpc3RbbGlzdF9zaXplXS5tb2R1bGUpIHsKJiM0MzsJCWZwcmludGYoc3RkZXJyLCAmIzM0O091dCBvZiBtZW1vcnlcbiYjMzQ7KTsKJiM0MzsJCWZyZWVfYmxvY2tfbGlzdCgmYW1wO2xpc3RbbGlzdF9zaXplXSk7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KIAlsaXN0X3NpemUmIzQzOyYjNDM7OwogCWlmIChsaXN0X3NpemUgJSAxMDAwID09IDApIHsKIAkJcHJpbnRmKCYjMzQ7bG9hZGVkICVkXHImIzM0OywgbGlzdF9zaXplKTsKQEAgLTU3Myw2ICYjNDM7NjM0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VfY3VsbF9hcmdzKGNvbnN0IGNoYXIgKmFyZ19zdHIpCiAJCQljdWxsIHw9IENVTExfU1RBQ0tUUkFDRTsKIAkJZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX0FMTE9DQVRPUikKIAkJCWN1bGwgfD0gQ1VMTF9BTExPQ0FUT1I7CiYjNDM7CQllbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfTU9EVUxFKQomIzQzOwkJCWN1bGwgfD0gQ1VMTF9NT0RVTEU7CiAJCWVsc2UgewogCQkJZnJlZV9leHBsb2RlKGFyZ3MsIHNpemUpOwogCQkJcmV0dXJuIGZhbHNlOwpAQCAtNjM1LDYgJiM0Mzs2OTgsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZV9zb3J0X2FyZ3MoY29uc3QgY2hhciAqYXJnX3N0cikKIAkJCXNjLmNtcHNbaV0gPSBjb21wYXJlX3R4dDsKIAkJZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX0FMTE9DQVRPUikKIAkJCXNjLmNtcHNbaV0gPSBjb21wYXJlX2FsbG9jYXRvcjsKJiM0MzsJCWVsc2UgaWYgKGFyZ190eXBlID09IEFSR19NT0RVTEUpCiYjNDM7CQkJc2MuY21wc1tpXSA9IGNvbXBhcmVfbW9kdWxlOwogCQllbHNlIHsKIAkJCWZyZWVfZXhwbG9kZShhcmdzLCBzaXplKTsKIAkJCXNjLnNpemUgPSAwOwpAQCAtNjkxLDcgJiM0Mzs3NTYsOCBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKQogCQkmIzM0Oy1wXHRcdFx0U29ydCBieSBwaWQuXG4mIzM0OwogCQkmIzM0Oy1QXHRcdFx0U29ydCBieSB0Z2lkLlxuJiMzNDsKIAkJJiMzNDstc1x0XHRcdFNvcnQgYnkgdGhlIHN0YWNrdHJhY2UuXG4mIzM0OwotCQkmIzM0Oy10XHRcdFx0U29ydCBieSBudW1iZXIgb2YgdGltZXMgcmVjb3JkIGlzIHNlZW4gKGRlZmF1bHQpLlxuXG4mIzM0OwomIzQzOwkJJiMzNDstdFx0XHRcdFNvcnQgYnkgbnVtYmVyIG9mIHRpbWVzIHJlY29yZCBpcyBzZWVuIChkZWZhdWx0KS5cbiYjMzQ7CiYjNDM7CQkmIzM0Oy1NXHRcdFx0U29ydCBieSBtb2R1bGUgbmFtZS5cblxuJiMzNDsKIAkJJiMzNDstLXBpZCAmbHQ7cGlkbGlzdCZndDtcdFx0U2VsZWN0IGJ5IHBpZC4gVGhpcyBzZWxlY3RzIHRoZSBpbmZvcm1hdGlvbiYjMzQ7CiAJCSYjMzQ7IG9mXG5cdFx0XHRibG9ja3Mgd2hvc2UgcHJvY2VzcyBJRCBudW1iZXJzIGFwcGVhciBpbiAmbHQ7cGlkbGlzdCZndDsuXG4mIzM0OwogCQkmIzM0Oy0tdGdpZCAmbHQ7dGdpZGxpc3QmZ3Q7XHRTZWxlY3QgYnkgdGdpZC4gVGhpcyBzZWxlY3RzIHRoZSBpbmZvcm1hdGlvbiYjMzQ7CkBAIC03MDAsMTEgJiM0Mzs3NjYsMjEgQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9pZCkKIAkJJiMzNDstLW5hbWUgJmx0O2NtZGxpc3QmZ3Q7XHRTZWxlY3QgYnkgY29tbWFuZCBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlJiMzNDsKIAkJJiMzNDsgaW5mb3JtYXRpb25cblx0XHRcdG9mIGJsb2NrcyB3aG9zZSBjb21tYW5kIG5hbWUgYXBwZWFycyBpbiYjMzQ7CiAJCSYjMzQ7ICZsdDtjbWRsaXN0Jmd0Oy5cbiYjMzQ7Ci0JCSYjMzQ7LS1jdWxsICZsdDtydWxlcyZndDtcdFx0Q3VsbCBieSB1c2VyLWRlZmluZWQgcnVsZXMuICZsdDtydWxlcyZndDsgaXMgYSAmIzM0OwotCQkmIzM0O3NpbmdsZVxuXHRcdFx0YXJndW1lbnQgaW4gdGhlIGZvcm0gb2YgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCAmIzM0OwotCQkmIzM0O3dpdGggc29tZVxuXHRcdFx0Y29tbW9uIGZpZWxkcyBwcmVkZWZpbmVkIChwaWQsIHRnaWQsIGNvbW0sICYjMzQ7Ci0JCSYjMzQ7c3RhY2t0cmFjZSwgYWxsb2NhdG9yKVxuJiMzNDsKJiM0MzsJCSYjMzQ7LS1tb2R1bGUgJmx0O21vZGxpc3QmZ3Q7XHRTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgaW5mb3JtYXRpb25cbiYjMzQ7CiYjNDM7CQkmIzM0O1x0XHRcdG9mIGJsb2NrcyB3aG9zZSBtb2R1bGUgbmFtZSBhcHBlYXJzIGluICZsdDttb2RsaXN0Jmd0Oy5cbiYjMzQ7CiYjNDM7CQkmIzM0Oy0tY3VsbCAmbHQ7cnVsZXMmZ3Q7XHRcdEN1bGwgYnkgdXNlci1kZWZpbmVkIHJ1bGVzLiAmbHQ7cnVsZXMmZ3Q7IGlzIGEgc2luZ2xlXG4mIzM0OwomIzQzOwkJJiMzNDtcdFx0XHRhcmd1bWVudCBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggc29tZVxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0Y29tbW9uIGZpZWxkcyBwcmVkZWZpbmVkIChwaWQsIHRnaWQsIGNvbW0sIHN0YWNrdHJhY2UsIGFsbG9jYXRvciwgbW9kdWxlKVxuJiMzNDsKIAkJJiMzNDstLXNvcnQgJmx0O29yZGVyJmd0O1x0XHRTcGVjaWZ5IHNvcnQgb3JkZXIgYXM6IFsmIzQzO3wtXWtleVssWyYjNDM7fC1da2V5WywuLi5dXVxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0QXZhaWxhYmxlIGtleXM6XG4mIzM0OwomIzQzOwkJJiMzNDtcdFx0XHQgIHBpZChwKSwgdGdpZCh0ZyksIG5hbWUobiksIHN0YWNrdHJhY2Uoc3QpLFxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0ICB0eHQoVCksIGFsbG9jX3RzKGF0KSwgYWxsb2NhdG9yKGF0b3IpLCBtb2R1bGUobW9kKVxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0VGhlIFwmIzM0OyYjNDM7XCYjMzQ7IGlzIG9wdGlvbmFsIHNpbmNlIGRlZmF1bHQgZGlyZWN0aW9uIGlzXG4mIzM0OwomIzQzOwkJJiMzNDtcdFx0XHRpbmNyZWFzaW5nIG51bWVyaWNhbCBvciBsZXhpY29ncmFwaGljIG9yZGVyLlxuJiMzNDsKJiM0MzsJCSYjMzQ7XHRcdFx0TWl4ZWQgdXNlIG9mIGFiYnJldmlhdGVkIGFuZCBjb21wbGV0ZS1mb3JtIGlzIGFsbG93ZWQuXG4mIzM0OwomIzQzOwkJJiMzNDtcdFx0XHRFeGFtcGxlczpcbiYjMzQ7CiYjNDM7CQkmIzM0O1x0XHRcdCAgLS1zb3J0PW4sJiM0MztwaWQsLXRnaWRcbiYjMzQ7CiYjNDM7CQkmIzM0O1x0XHRcdCAgLS1zb3J0PW1vZCxhdFxuJiMzNDsKIAkpOwogfQogCkBAIC03MjEsMTMgJiM0Mzs3OTcsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7ICYjMzQ7bmFtZSYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgMyB9LAogCQl7ICYjMzQ7Y3VsbCYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNCB9LAogCQl7ICYjMzQ7c29ydCYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNSB9LAomIzQzOwkJeyAmIzM0O21vZHVsZSYjMzQ7LCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNiB9LAogCQl7ICYjMzQ7aGVscCYjMzQ7LCBub19hcmd1bWVudCwgTlVMTCwgJiMzOTtoJiMzOTsgfSwKIAkJeyAwLCAwLCAwLCAwfSwKIAl9OwogCiAJY29tcGFyZV9mbGFnID0gQ09NUF9OT19GTEFHOwogCi0Jd2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAmIzM0O2FkbW5wc3RQaCYjMzQ7LCBsb25nb3B0cywgTlVMTCkpICE9IC0xKQomIzQzOwl3aGlsZSAoKG9wdCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICYjMzQ7YWRtbnBzdFBNaCYjMzQ7LCBsb25nb3B0cywgTlVMTCkpICE9IC0xKQogCQlzd2l0Y2ggKG9wdCkgewogCQljYXNlICYjMzk7YSYjMzk7OgogCQkJY29tcGFyZV9mbGFnIHw9IENPTVBfQUxMT0M7CkBAIC03NTMsNiAmIzQzOzgzMCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJY2FzZSAmIzM5O24mIzM5OzoKIAkJCWNvbXBhcmVfZmxhZyB8PSBDT01QX0NPTU07CiAJCQlicmVhazsKJiM0MzsJCWNhc2UgJiMzOTtNJiMzOTs6CiYjNDM7CQkJY29tcGFyZV9mbGFnIHw9IENPTVBfTU9EVUxFOwomIzQzOwkJCWJyZWFrOwogCQljYXNlICYjMzk7aCYjMzk7OgogCQkJdXNhZ2UoKTsKIAkJCWV4aXQoMCk7CkBAIC03OTIsNiAmIzQzOzg3MiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJZXhpdCgxKTsKIAkJCX0KIAkJCWJyZWFrOwomIzQzOwkJY2FzZSA2OgomIzQzOwkJCWZpbHRlciA9IGZpbHRlciB8IEZJTFRFUl9NT0RVTEU7CiYjNDM7CQkJZmMubW9kdWxlcyA9IGV4cGxvZGUoJiMzOTssJiMzOTssIG9wdGFyZywgJmFtcDtmYy5tb2R1bGVzX3NpemUpOwomIzQzOwkJCWJyZWFrOwogCQlkZWZhdWx0OgogCQkJdXNhZ2UoKTsKIAkJCWV4aXQoMSk7CkBAIC04MjEsNiAmIzQzOzkwNSwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXNldF9zaW5nbGVfY21wKGNvbXBhcmVfc3RhY2t0cmFjZSwgU09SVF9BU0MpOwogCQlicmVhazsKIAljYXNlIENPTVBfTk9fRkxBRzoKJiM0MzsJCWlmIChzYy5zaXplICZndDsgMCkKJiM0MzsJCQlicmVhazsKJiM0MzsJCXNldF9zaW5nbGVfY21wKGNvbXBhcmVfbnVtLCBTT1JUX0RFU0MpOwomIzQzOwkJYnJlYWs7CiAJY2FzZSBDT01QX05VTToKIAkJc2V0X3NpbmdsZV9jbXAoY29tcGFyZV9udW0sIFNPUlRfREVTQyk7CiAJCWJyZWFrOwpAQCAtODMwLDYgJiM0Mzs5MTgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJY2FzZSBDT01QX0NPTU06CiAJCXNldF9zaW5nbGVfY21wKGNvbXBhcmVfY29tbSwgU09SVF9BU0MpOwogCQlicmVhazsKJiM0MzsJY2FzZSBDT01QX01PRFVMRToKJiM0MzsJCXNldF9zaW5nbGVfY21wKGNvbXBhcmVfbW9kdWxlLCBTT1JUX0FTQyk7CiYjNDM7CQlicmVhazsKIAlkZWZhdWx0OgogCQl1c2FnZSgpOwogCQlleGl0KDEpOwpAQCAtODUzLDYgJiM0Mzs5NDQsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWdvdG8gb3V0X2NvbW07CiAJaWYgKCFjaGVja19yZWdjb21wKCZhbXA7dHNfbnNlY19wYXR0ZXJuLCAmIzM0O3RzXFxzKihbMC05XSopXFxzKm5zJiMzNDspKQogCQlnb3RvIG91dF90czsKJiM0MzsJaWYgKCFjaGVja19yZWdjb21wKCZhbXA7bW9kdWxlX3BhdHRlcm4sICYjMzQ7XFwmIzQzOzB4WzAtOWEtZl0mIzQzOy8weFswLTlhLWZdJiM0MztcXHMqXFxbKFthLXpBLVowLTlfLV0mIzQzOylcXF0mIzM0OykpCiYjNDM7CQlnb3RvIG91dF9tb2R1bGU7CiAKIAlmc3RhdChmaWxlbm8oZmluKSwgJmFtcDtzdCk7CiAJbWF4X3NpemUgPSBzdC5zdF9zaXplIC8gMTAwOyAvKiBoYWNrIC4uLiAqLwpAQCAtOTExLDYgJiM0MzsxMDA0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWZwcmludGYoZm91dCwgJiMzNDssIFRHSUQgJWQmIzM0OywgbGlzdFtpXS50Z2lkKTsKIAkJCWlmIChjdWxsICZhbXA7IENVTExfQ09NTSB8fCBmaWx0ZXIgJmFtcDsgRklMVEVSX0NPTU0pCiAJCQkJZnByaW50Zihmb3V0LCAmIzM0OywgdGFza19jb21tX25hbWU6ICVzJiMzNDssIGxpc3RbaV0uY29tbSk7CiYjNDM7CQkJaWYgKGN1bGwgJmFtcDsgQ1VMTF9NT0RVTEUgfHwgZmlsdGVyICZhbXA7IEZJTFRFUl9NT0RVTEUpCiYjNDM7CQkJCWZwcmludGYoZm91dCwgJiMzNDssIG1vZHVsZTogJXMmIzM0OywgbGlzdFtpXS5tb2R1bGUpOwogCQkJaWYgKGN1bGwgJmFtcDsgQ1VMTF9BTExPQ0FUT1IpIHsKIAkJCQlmcHJpbnRmKGZvdXQsICYjMzQ7LCAmIzM0Oyk7CiAJCQkJcHJpbnRfYWxsb2NhdG9yKGZvdXQsIGxpc3RbaV0uYWxsb2NhdG9yKTsKQEAgLTkzMSw2ICYjNDM7MTAyNiw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWZyZWVfYmxvY2tfbGlzdCgmYW1wO2xpc3RbaV0pOwogCQlmcmVlKGxpc3QpOwogCX0KJiM0MztvdXRfbW9kdWxlOgomIzQzOwlyZWdmcmVlKCZhbXA7bW9kdWxlX3BhdHRlcm4pOwogb3V0X3RzOgogCXJlZ2ZyZWUoJmFtcDt0c19uc2VjX3BhdHRlcm4pOwogb3V0X2NvbW06CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDA2OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY4NzkKCQkJCQkJCW91dHB1dDogNjkKCQkJCQkJCXRob3VnaHRzOiAzMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqUGF0Y2ggRXZhbHVhdGlvbjogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgbGV0JiMzOTtzIGFzc2VzcyB0aGlzIHBhdGNoIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQmIzM5O3MgbGlrZWx5ICpub3QqIHdvcnRoIGZ1enppbmcsIGJ1dCBsZXQmIzM5O3MgYmUgdGhvcm91Z2guIFRoZSBwYXRjaCB0b3VjaGVzIGBEb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0YCBhbmQgYHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jYC4gUmlnaHQgYXdheSwgdGhlIGB0b29scy9gIGRpcmVjdG9yeSBpcyBhIHJlZCBmbGFnIGluIHRlcm1zIG9mIHN5emthbGxlciBmdXp6aW5nIHRhcmdldHM7IHRvb2xzIGluIHRoZXJlIGFyZSBnZW5lcmFsbHkgdXNlci1zcGFjZSB1dGlsaXRpZXMgYW5kIG5vdCBwYXJ0IG9mIHRoZSBjb3JlIGtlcm5lbCBleGVjdXRpb24gcGF0aCB3ZSYjMzk7cmUgdGFyZ2V0aW5nLgoKV2FpdCwganVzdCBhIHNhbml0eSBjaGVjay4gTGV0JiMzOTtzIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZXJlIGFyZW4mIzM5O3QgYW55IHNuZWFreSBrZXJuZWwgY2hhbmdlcyBidXJpZWQgaW4gdGhlcmUuIERvdWJsZS1jaGVja2luZy4uLiBZZXAsIHRoZSBkaWZmIG9ubHkgc2hvd3MgdGhvc2UgdHdvIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdGAgYW5kIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AuIE9rYXksIHNvIHdlJiMzOTtyZSBzYWZlLiBVc2VyLXNwYWNlIHRvb2xzIGFyZSBleHBsaWNpdGx5ICpvdXRzaWRlKiB0aGUgc2NvcGUgb2Ygd2hhdCB3ZSB3YW50IHRvIGZ1enogd2l0aCBzeXprYWxsZXIuCgpMZXQmIzM5O3MgY29uZmlybSB0aG9zZSBmaWxlIGxvY2F0aW9ucyBhZ2FpbjoKCiogICBgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdGAgLSBEb2N1bWVudGF0aW9uLCBub3QgY29kZS4KKiAgIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AgLSBVc2VyLXNwYWNlIHRvb2wuCgpTbywgc2luY2UgYm90aCBtb2RpZmllZCBmaWxlcyBhcmUgZGVmaW5pdGVseSAqbm90KiBrZXJuZWwgc291cmNlLCB3ZSBjYW4gc2FmZWx5IG1hcmsgdGhpcyBhcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gVGhlIHJlYXNvbmluZyBpcyBzdHJhaWdodGZvcndhcmQ6IHRoaXMgcGF0Y2ggaXMgY29uZmluZWQgdG8gYSB1c2VyLXNwYWNlIHV0aWxpdHkgYW5kIGl0cyBkb2N1bWVudGF0aW9uLiBJdCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZiwgc28gdGhlcmUmIzM5O3Mgbm90aGluZyBmb3Igc3l6a2FsbGVyIHRvIHRhcmdldC4KCk5vdywgbGV0JiMzOTtzIHB1dCBpdCBhbGwgdG9nZXRoZXIgY29uY2lzZWx5LgoKYFdvcnRoRnV6emluZzogZmFsc2VgCmBGb2N1c1N5bWJvbHM6IFtdYApgRW5hYmxlQ29uZmlnczogW11gCmBSZWFzb25pbmc6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0O2AKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwNjo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo1Mjo0Ni4zMjYwMzU4MTlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTc4MjUzMDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlci1zcGFjZSB0b29sICh0b29scy9tbS9wYWdlX293bmVyX3NvcnQuYykgYW5kIGl0cyBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo1Mjo0Ni4zMjYwNDQyMDlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwMDU1MDk2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVmYjAyMTkwYjIxMmMyZWVmMmIzMWJiZjQ0N2U2NTE3ODM2ODFlODNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo1Mjo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0IGIvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxcbmluZGV4IGE2YmQzZmU2NDIzYWQuLmJkMDI3Mzc3ZGZmNmUgMTAwNjQ0XFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxcbisrKyBiL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3RcXG5AQCAtMTk5LDYgKzE5OSw3IEBAIFVzYWdlXFxuIFxcdFxcdC1wXFx0XFx0U29ydCBieSBwaWQuXFxuIFxcdFxcdC1QXFx0XFx0U29ydCBieSB0Z2lkLlxcbiBcXHRcXHQtblxcdFxcdFNvcnQgYnkgdGFzayBjb21tYW5kIG5hbWUuXFxuK1xcdFxcdC1NXFx0XFx0U29ydCBieSBtb2R1bGUgbmFtZS5cXG4gXFx0XFx0LXJcXHRcXHRTb3J0IGJ5IG1lbW9yeSByZWxlYXNlIHRpbWUuXFxuIFxcdFxcdC1zXFx0XFx0U29ydCBieSBzdGFjayB0cmFjZS5cXG4gXFx0XFx0LXRcXHRcXHRTb3J0IGJ5IHRpbWVzIChkZWZhdWx0KS5cXG5AQCAtMjQwLDggKzI0MSwxMCBAQCBVc2FnZVxcbiBcXHRcXHRcXHRcXHRcXHRncm91cCBJRCBudW1iZXJzIGFwcGVhciBpbiBcXHUwMDNjdGdpZGxpc3RcXHUwMDNlLlxcbiBcXHRcXHQtLW5hbWUgXFx1MDAzY2NtZGxpc3RcXHUwMDNlXFx0U2VsZWN0IGJ5IHRhc2sgY29tbWFuZCBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlIGJsb2NrcyB3aG9zZVxcbiBcXHRcXHRcXHRcXHRcXHR0YXNrIGNvbW1hbmQgbmFtZSBhcHBlYXIgaW4gXFx1MDAzY2NtZGxpc3RcXHUwMDNlLlxcbitcXHRcXHQtLW1vZHVsZSBcXHUwMDNjbW9kbGlzdFxcdTAwM2VcXHRTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgYmxvY2tzIHdob3NlXFxuK1xcdFxcdFxcdFxcdFxcdG1vZHVsZSBuYW1lIGFwcGVhciBpbiBcXHUwMDNjbW9kbGlzdFxcdTAwM2UuXFxuIFxcbi1cXHRcXHRcXHUwMDNjcGlkbGlzdFxcdTAwM2UsIFxcdTAwM2N0Z2lkbGlzdFxcdTAwM2UsIFxcdTAwM2NjbWRsaXN0XFx1MDAzZSBhcmUgc2luZ2xlIGFyZ3VtZW50cyBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LFxcbitcXHRcXHRcXHUwMDNjcGlkbGlzdFxcdTAwM2UsIFxcdTAwM2N0Z2lkbGlzdFxcdTAwM2UsIFxcdTAwM2NjbWRsaXN0XFx1MDAzZSwgXFx1MDAzY21vZGxpc3RcXHUwMDNlIGFyZSBzaW5nbGUgYXJndW1lbnRzIGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsXFxuIFxcdFxcdHdoaWNoIG9mZmVycyBhIHdheSB0byBzcGVjaWZ5IGluZGl2aWR1YWwgc2VsZWN0aW5nIHJ1bGVzLlxcbiBcXG4gXFxuQEAgLTI0OSw2ICsyNTIsNyBAQCBVc2FnZVxcbiBcXHRcXHRcXHRcXHQuL3BhZ2Vfb3duZXJfc29ydCBcXHUwMDNjaW5wdXRcXHUwMDNlIFxcdTAwM2NvdXRwdXRcXHUwMDNlIC0tcGlkPTFcXG4gXFx0XFx0XFx0XFx0Li9wYWdlX293bmVyX3NvcnQgXFx1MDAzY2lucHV0XFx1MDAzZSBcXHUwMDNjb3V0cHV0XFx1MDAzZSAtLXRnaWQ9MSwyLDNcXG4gXFx0XFx0XFx0XFx0Li9wYWdlX293bmVyX3NvcnQgXFx1MDAzY2lucHV0XFx1MDAzZSBcXHUwMDNjb3V0cHV0XFx1MDAzZSAtLW5hbWUgbmFtZTEsbmFtZTJcXG4rXFx0XFx0XFx0XFx0Li9wYWdlX293bmVyX3NvcnQgXFx1MDAzY2lucHV0XFx1MDAzZSBcXHUwMDNjb3V0cHV0XFx1MDAzZSAtLW1vZHVsZSB4ZnMsZXh0NFxcbiBcXG4gU1RBTkRBUkQgRk9STUFUIFNQRUNJRklFUlNcXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT1cXG5AQCAtMjY1LDYgKzI2OSw3IEBAIFNUQU5EQVJEIEZPUk1BVCBTUEVDSUZJRVJTXFxuIFxcdGZ0XFx0XFx0ZnJlZV90c1xcdFxcdHRpbWVzdGFtcCBvZiB0aGUgcGFnZSB3aGVuIGl0IHdhcyByZWxlYXNlZFxcbiBcXHRhdFxcdFxcdGFsbG9jX3RzXFx0dGltZXN0YW1wIG9mIHRoZSBwYWdlIHdoZW4gaXQgd2FzIGFsbG9jYXRlZFxcbiBcXHRhdG9yXFx0XFx0YWxsb2NhdG9yXFx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcXG4rXFx0bW9kXFx0XFx0bW9kdWxlXFx0XFx0a2VybmVsIG1vZHVsZSBuYW1lXFxuIFxcbiAgIEZvciAtLWN1bGwgb3B0aW9uOlxcbiBcXG5AQCAtMjc1LDYgKzI4MCw3IEBAIFNUQU5EQVJEIEZPUk1BVCBTUEVDSUZJRVJTXFxuIFxcdGZcXHRcXHRmcmVlXFx0XFx0d2hldGhlciB0aGUgcGFnZSBoYXMgYmVlbiByZWxlYXNlZCBvciBub3RcXG4gXFx0c3RcXHRcXHRzdGFja3RyYWNlXFx0c3RhY2sgdHJhY2Ugb2YgdGhlIHBhZ2UgYWxsb2NhdGlvblxcbiBcXHRhdG9yXFx0XFx0YWxsb2NhdG9yXFx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcXG4rXFx0bW9kXFx0XFx0bW9kdWxlXFx0XFx0a2VybmVsIG1vZHVsZSBuYW1lXFxuIFxcbiBGaWx0ZXJpbmcgcGFnZV9vd25lciBvdXRwdXRcXG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxcbmRpZmYgLS1naXQgYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuYyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXFxuaW5kZXggMzVkM2QyNTQ5NDFjOS4uYzViYzNiNTI0YzBhOSAxMDA2NDRcXG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xcbisrKyBiL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jXFxuQEAgLTI1LDExICsyNSwxMyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjZ2V0b3B0LmhcXHUwMDNlXFxuIFxcbiAjZGVmaW5lIFRBU0tfQ09NTV9MRU4gMTZcXG4rI2RlZmluZSBNT0RVTEVfTkFNRV9MRU4gNjRcXG4gXFxuIHN0cnVjdCBibG9ja19saXN0IHtcXG4gXFx0Y2hhciAqdHh0O1xcbiBcXHRjaGFyICpjb21tOyAvLyB0YXNrIGNvbW1hbmQgbmFtZVxcbiBcXHRjaGFyICpzdGFja3RyYWNlO1xcbitcXHRjaGFyICptb2R1bGU7IC8vIGtlcm5lbCBtb2R1bGUgbmFtZVxcbiBcXHRfX3U2NCB0c19uc2VjO1xcbiBcXHRpbnQgbGVuO1xcbiBcXHRpbnQgbnVtO1xcbkBAIC00MSw3ICs0Myw4IEBAIHN0cnVjdCBibG9ja19saXN0IHtcXG4gZW51bSBGSUxURVJfQklUIHtcXG4gXFx0RklMVEVSX1BJRCA9IDFcXHUwMDNjXFx1MDAzYzEsXFxuIFxcdEZJTFRFUl9UR0lEID0gMVxcdTAwM2NcXHUwMDNjMixcXG4tXFx0RklMVEVSX0NPTU0gPSAxXFx1MDAzY1xcdTAwM2MzXFxuK1xcdEZJTFRFUl9DT01NID0gMVxcdTAwM2NcXHUwMDNjMyxcXG4rXFx0RklMVEVSX01PRFVMRSA9IDFcXHUwMDNjXFx1MDAzYzRcXG4gfTtcXG4gXFxuIGVudW0gRklMVEVSX1JFU1VMVCB7XFxuQEAgLTU1LDcgKzU4LDggQEAgZW51bSBDVUxMX0JJVCB7XFxuIFxcdENVTExfVEdJRCA9IDFcXHUwMDNjXFx1MDAzYzIsXFxuIFxcdENVTExfQ09NTSA9IDFcXHUwMDNjXFx1MDAzYzMsXFxuIFxcdENVTExfU1RBQ0tUUkFDRSA9IDFcXHUwMDNjXFx1MDAzYzQsXFxuLVxcdENVTExfQUxMT0NBVE9SID0gMVxcdTAwM2NcXHUwMDNjNVxcbitcXHRDVUxMX0FMTE9DQVRPUiA9IDFcXHUwMDNjXFx1MDAzYzUsXFxuK1xcdENVTExfTU9EVUxFID0gMVxcdTAwM2NcXHUwMDNjNlxcbiB9O1xcbiBlbnVtIEFMTE9DQVRPUl9CSVQge1xcbiBcXHRBTExPQ0FUT1JfQ01BID0gMVxcdTAwM2NcXHUwMDNjMSxcXG5AQCAtNjUsNyArNjksOCBAQCBlbnVtIEFMTE9DQVRPUl9CSVQge1xcbiB9O1xcbiBlbnVtIEFSR19UWVBFIHtcXG4gXFx0QVJHX1RYVCwgQVJHX0NPTU0sIEFSR19TVEFDS1RSQUNFLCBBUkdfQUxMT0NfVFMsIEFSR19DVUxMX1RJTUUsXFxuLVxcdEFSR19QQUdFX05VTSwgQVJHX1BJRCwgQVJHX1RHSUQsIEFSR19VTktOT1dOLCBBUkdfQUxMT0NBVE9SXFxuK1xcdEFSR19QQUdFX05VTSwgQVJHX1BJRCwgQVJHX1RHSUQsIEFSR19VTktOT1dOLCBBUkdfQUxMT0NBVE9SLFxcbitcXHRBUkdfTU9EVUxFXFxuIH07XFxuIGVudW0gU09SVF9PUkRFUiB7XFxuIFxcdFNPUlRfQVNDID0gMSxcXG5AQCAtNzksMTUgKzg0LDE4IEBAIGVudW0gQ09NUF9GTEFHIHtcXG4gXFx0Q09NUF9TVEFDSyA9IDFcXHUwMDNjXFx1MDAzYzMsXFxuIFxcdENPTVBfTlVNID0gMVxcdTAwM2NcXHUwMDNjNCxcXG4gXFx0Q09NUF9UR0lEID0gMVxcdTAwM2NcXHUwMDNjNSxcXG4tXFx0Q09NUF9DT01NID0gMVxcdTAwM2NcXHUwMDNjNlxcbitcXHRDT01QX0NPTU0gPSAxXFx1MDAzY1xcdTAwM2M2LFxcbitcXHRDT01QX01PRFVMRSA9IDFcXHUwMDNjXFx1MDAzYzdcXG4gfTtcXG4gc3RydWN0IGZpbHRlcl9jb25kaXRpb24ge1xcbiBcXHRwaWRfdCAqcGlkcztcXG4gXFx0cGlkX3QgKnRnaWRzO1xcbiBcXHRjaGFyICoqY29tbXM7XFxuK1xcdGNoYXIgKiptb2R1bGVzO1xcbiBcXHRpbnQgcGlkc19zaXplO1xcbiBcXHRpbnQgdGdpZHNfc2l6ZTtcXG4gXFx0aW50IGNvbW1zX3NpemU7XFxuK1xcdGludCBtb2R1bGVzX3NpemU7XFxuIH07XFxuIHN0cnVjdCBzb3J0X2NvbmRpdGlvbiB7XFxuIFxcdGludCAoKipjbXBzKShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7XFxuQEAgLTEwMSw2ICsxMDksNyBAQCBzdGF0aWMgcmVnZXhfdCBwaWRfcGF0dGVybjtcXG4gc3RhdGljIHJlZ2V4X3QgdGdpZF9wYXR0ZXJuO1xcbiBzdGF0aWMgcmVnZXhfdCBjb21tX3BhdHRlcm47XFxuIHN0YXRpYyByZWdleF90IHRzX25zZWNfcGF0dGVybjtcXG4rc3RhdGljIHJlZ2V4X3QgbW9kdWxlX3BhdHRlcm47XFxuIHN0YXRpYyBzdHJ1Y3QgYmxvY2tfbGlzdCAqbGlzdDtcXG4gc3RhdGljIGludCBsaXN0X3NpemU7XFxuIHN0YXRpYyBpbnQgbWF4X3NpemU7XFxuQEAgLTE4NCw2ICsxOTMsMTMgQEAgc3RhdGljIGludCBjb21wYXJlX2NvbW0oY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKVxcbiBcXHRyZXR1cm4gc3RyY21wKGwxLVxcdTAwM2Vjb21tLCBsMi1cXHUwMDNlY29tbSk7XFxuIH1cXG4gXFxuK3N0YXRpYyBpbnQgY29tcGFyZV9tb2R1bGUoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKVxcbit7XFxuK1xcdGNvbnN0IHN0cnVjdCBibG9ja19saXN0ICpsMSA9IHAxLCAqbDIgPSBwMjtcXG4rXFxuK1xcdHJldHVybiBzdHJjbXAobDEtXFx1MDAzZW1vZHVsZSwgbDItXFx1MDAzZW1vZHVsZSk7XFxuK31cXG4rXFxuIHN0YXRpYyBpbnQgY29tcGFyZV90cyhjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXFxuIHtcXG4gXFx0Y29uc3Qgc3RydWN0IGJsb2NrX2xpc3QgKmwxID0gcDEsICpsMiA9IHAyO1xcbkBAIC0yMDcsNiArMjIzLDggQEAgc3RhdGljIGludCBjb21wYXJlX2N1bGxfY29uZGl0aW9uKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMilcXG4gXFx0XFx0cmV0dXJuIGNvbXBhcmVfdGdpZChwMSwgcDIpO1xcbiBcXHRpZiAoKGN1bGwgXFx1MDAyNiBDVUxMX0NPTU0pIFxcdTAwMjZcXHUwMDI2IGNvbXBhcmVfY29tbShwMSwgcDIpKVxcbiBcXHRcXHRyZXR1cm4gY29tcGFyZV9jb21tKHAxLCBwMik7XFxuK1xcdGlmICgoY3VsbCBcXHUwMDI2IENVTExfTU9EVUxFKSBcXHUwMDI2XFx1MDAyNiBjb21wYXJlX21vZHVsZShwMSwgcDIpKVxcbitcXHRcXHRyZXR1cm4gY29tcGFyZV9tb2R1bGUocDEsIHAyKTtcXG4gXFx0aWYgKChjdWxsIFxcdTAwMjYgQ1VMTF9BTExPQ0FUT1IpIFxcdTAwMjZcXHUwMDI2IGNvbXBhcmVfYWxsb2NhdG9yKHAxLCBwMikpXFxuIFxcdFxcdHJldHVybiBjb21wYXJlX2FsbG9jYXRvcihwMSwgcDIpO1xcbiBcXHRyZXR1cm4gMDtcXG5AQCAtNDExLDkgKzQyOSwzMyBAQCBzdGF0aWMgY2hhciAqZ2V0X2NvbW0oY2hhciAqYnVmKVxcbiBcXHRyZXR1cm4gY29tbV9zdHI7XFxuIH1cXG4gXFxuK3N0YXRpYyBjaGFyICpnZXRfbW9kdWxlKGNoYXIgKmJ1ZilcXG4re1xcbitcXHRjaGFyICptb2R1bGVfc3RyID0gbWFsbG9jKE1PRFVMRV9OQU1FX0xFTik7XFxuK1xcdHJlZ21hdGNoX3QgcG1hdGNoWzJdO1xcbitcXHRpbnQgdmFsX2xlbjtcXG4rXFxuK1xcdGlmICghbW9kdWxlX3N0cilcXG4rXFx0XFx0cmV0dXJuIE5VTEw7XFxuK1xcdG1lbXNldChtb2R1bGVfc3RyLCAwLCBNT0RVTEVfTkFNRV9MRU4pO1xcbitcXHRpZiAocmVnZXhlYyhcXHUwMDI2bW9kdWxlX3BhdHRlcm4sIGJ1ZiwgMiwgcG1hdGNoLCBSRUdfTk9UQk9MKSAhPSAwIHx8IHBtYXRjaFsxXS5ybV9zbyA9PSAtMSkge1xcbitcXHRcXHRzdHJjcHkobW9kdWxlX3N0ciwgXFxcInZtbGludXhcXFwiKTtcXG4rXFx0XFx0cmV0dXJuIG1vZHVsZV9zdHI7XFxuK1xcdH1cXG4rXFxuK1xcdHZhbF9sZW4gPSBwbWF0Y2hbMV0ucm1fZW8gLSBwbWF0Y2hbMV0ucm1fc287XFxuK1xcdGlmICgoc2l6ZV90KXZhbF9sZW4gXFx1MDAzZT0gTU9EVUxFX05BTUVfTEVOKVxcbitcXHRcXHR2YWxfbGVuID0gTU9EVUxFX05BTUVfTEVOIC0gMTtcXG4rXFx0bWVtY3B5KG1vZHVsZV9zdHIsIGJ1ZiArIHBtYXRjaFsxXS5ybV9zbywgdmFsX2xlbik7XFxuK1xcdG1vZHVsZV9zdHJbdmFsX2xlbl0gPSAnXFxcXDAnO1xcbitcXG4rXFx0cmV0dXJuIG1vZHVsZV9zdHI7XFxuK31cXG4rXFxuIHN0YXRpYyB2b2lkIGZyZWVfYmxvY2tfbGlzdChzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2spXFxuIHtcXG4gXFx0ZnJlZShibG9jay1cXHUwMDNlY29tbSk7XFxuK1xcdGZyZWUoYmxvY2stXFx1MDAzZW1vZHVsZSk7XFxuIFxcdGZyZWUoYmxvY2stXFx1MDAzZXR4dCk7XFxuIH1cXG4gXFxuQEAgLTQzMyw2ICs0NzUsOCBAQCBzdGF0aWMgaW50IGdldF9hcmdfdHlwZShjb25zdCBjaGFyICphcmcpXFxuIFxcdFxcdHJldHVybiBBUkdfQUxMT0NfVFM7XFxuIFxcdGVsc2UgaWYgKCFzdHJjbXAoYXJnLCBcXFwiYWxsb2NhdG9yXFxcIikgfHwgIXN0cmNtcChhcmcsIFxcXCJhdG9yXFxcIikpXFxuIFxcdFxcdHJldHVybiBBUkdfQUxMT0NBVE9SO1xcbitcXHRlbHNlIGlmICghc3RyY21wKGFyZywgXFxcIm1vZHVsZVxcXCIpIHx8ICFzdHJjbXAoYXJnLCBcXFwibW9kXFxcIikpXFxuK1xcdFxcdHJldHVybiBBUkdfTU9EVUxFO1xcbiBcXHRlbHNlIHtcXG4gXFx0XFx0cmV0dXJuIEFSR19VTktOT1dOO1xcbiBcXHR9XFxuQEAgLTQ4MywyNSArNTI3LDM2IEBAIHN0YXRpYyBib29sIG1hdGNoX3N0cl9saXN0KGNvbnN0IGNoYXIgKnN0ciwgY2hhciAqKmxpc3QsIGludCBsaXN0X3NpemUpXFxuIFxcbiBzdGF0aWMgZW51bSBGSUxURVJfUkVTVUxUIGZpbHRlcl9yZWNvcmQoY2hhciAqYnVmKVxcbiB7XFxuLVxcdGNoYXIgKmNvbW07XFxuK1xcdGNoYXIgKmNvbW0sICptb2R1bGU7XFxuIFxcbiBcXHRpZiAoKGZpbHRlciBcXHUwMDI2IEZJTFRFUl9QSUQpIFxcdTAwMjZcXHUwMDI2ICFtYXRjaF9udW1fbGlzdChnZXRfcGlkKGJ1ZiksIGZjLnBpZHMsIGZjLnBpZHNfc2l6ZSkpXFxuIFxcdFxcdHJldHVybiBGSUxURVJfU0tJUDtcXG4gXFx0aWYgKChmaWx0ZXIgXFx1MDAyNiBGSUxURVJfVEdJRCkgXFx1MDAyNlxcdTAwMjZcXG4gXFx0XFx0IW1hdGNoX251bV9saXN0KGdldF90Z2lkKGJ1ZiksIGZjLnRnaWRzLCBmYy50Z2lkc19zaXplKSlcXG4gXFx0XFx0cmV0dXJuIEZJTFRFUl9TS0lQO1xcbi1cXHRpZiAoIShmaWx0ZXIgXFx1MDAyNiBGSUxURVJfQ09NTSkpXFxuK1xcdGlmICghKGZpbHRlciBcXHUwMDI2IChGSUxURVJfQ09NTSB8IEZJTFRFUl9NT0RVTEUpKSlcXG4gXFx0XFx0cmV0dXJuIEZJTFRFUl9NQVRDSDtcXG4gXFxuLVxcdGNvbW0gPSBnZXRfY29tbShidWYpO1xcbi1cXHRpZiAoIWNvbW0pXFxuLVxcdFxcdHJldHVybiBGSUxURVJfRVJST1I7XFxuLVxcbi1cXHRpZiAoIW1hdGNoX3N0cl9saXN0KGNvbW0sIGZjLmNvbW1zLCBmYy5jb21tc19zaXplKSkge1xcbitcXHRpZiAoZmlsdGVyIFxcdTAwMjYgRklMVEVSX0NPTU0pIHtcXG4rXFx0XFx0Y29tbSA9IGdldF9jb21tKGJ1Zik7XFxuK1xcdFxcdGlmICghY29tbSlcXG4rXFx0XFx0XFx0cmV0dXJuIEZJTFRFUl9FUlJPUjtcXG4rXFx0XFx0aWYgKCFtYXRjaF9zdHJfbGlzdChjb21tLCBmYy5jb21tcywgZmMuY29tbXNfc2l6ZSkpIHtcXG4rXFx0XFx0XFx0ZnJlZShjb21tKTtcXG4rXFx0XFx0XFx0cmV0dXJuIEZJTFRFUl9TS0lQO1xcbitcXHRcXHR9XFxuIFxcdFxcdGZyZWUoY29tbSk7XFxuLVxcdFxcdHJldHVybiBGSUxURVJfU0tJUDtcXG4gXFx0fVxcbi1cXHRmcmVlKGNvbW0pO1xcbitcXHRpZiAoZmlsdGVyIFxcdTAwMjYgRklMVEVSX01PRFVMRSkge1xcbitcXHRcXHRtb2R1bGUgPSBnZXRfbW9kdWxlKGJ1Zik7XFxuK1xcdFxcdGlmICghbW9kdWxlKVxcbitcXHRcXHRcXHRyZXR1cm4gRklMVEVSX0VSUk9SO1xcbitcXHRcXHRpZiAoIW1hdGNoX3N0cl9saXN0KG1vZHVsZSwgZmMubW9kdWxlcywgZmMubW9kdWxlc19zaXplKSkge1xcbitcXHRcXHRcXHRmcmVlKG1vZHVsZSk7XFxuK1xcdFxcdFxcdHJldHVybiBGSUxURVJfU0tJUDtcXG4rXFx0XFx0fVxcbitcXHRcXHRmcmVlKG1vZHVsZSk7XFxuK1xcdH1cXG4gXFx0cmV0dXJuIEZJTFRFUl9NQVRDSDtcXG4gfVxcbiBcXG5AQCAtNTQ3LDYgKzYwMiwxMiBAQCBzdGF0aWMgYm9vbCBhZGRfbGlzdChjaGFyICpidWYsIGludCBsZW4sIGNoYXIgKmV4dF9idWYpXFxuIFxcdFxcdGxpc3RbbGlzdF9zaXplXS5zdGFja3RyYWNlKys7XFxuIFxcdGxpc3RbbGlzdF9zaXplXS50c19uc2VjID0gZ2V0X3RzX25zZWMoYnVmKTtcXG4gXFx0bGlzdFtsaXN0X3NpemVdLmFsbG9jYXRvciA9IGdldF9hbGxvY2F0b3IoYnVmLCBleHRfYnVmKTtcXG4rXFx0bGlzdFtsaXN0X3NpemVdLm1vZHVsZSA9IGdldF9tb2R1bGUoYnVmKTtcXG4rXFx0aWYgKCFsaXN0W2xpc3Rfc2l6ZV0ubW9kdWxlKSB7XFxuK1xcdFxcdGZwcmludGYoc3RkZXJyLCBcXFwiT3V0IG9mIG1lbW9yeVxcXFxuXFxcIik7XFxuK1xcdFxcdGZyZWVfYmxvY2tfbGlzdChcXHUwMDI2bGlzdFtsaXN0X3NpemVdKTtcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXHR9XFxuIFxcdGxpc3Rfc2l6ZSsrO1xcbiBcXHRpZiAobGlzdF9zaXplICUgMTAwMCA9PSAwKSB7XFxuIFxcdFxcdHByaW50ZihcXFwibG9hZGVkICVkXFxcXHJcXFwiLCBsaXN0X3NpemUpO1xcbkBAIC01NzMsNiArNjM0LDggQEAgc3RhdGljIGJvb2wgcGFyc2VfY3VsbF9hcmdzKGNvbnN0IGNoYXIgKmFyZ19zdHIpXFxuIFxcdFxcdFxcdGN1bGwgfD0gQ1VMTF9TVEFDS1RSQUNFO1xcbiBcXHRcXHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfQUxMT0NBVE9SKVxcbiBcXHRcXHRcXHRjdWxsIHw9IENVTExfQUxMT0NBVE9SO1xcbitcXHRcXHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfTU9EVUxFKVxcbitcXHRcXHRcXHRjdWxsIHw9IENVTExfTU9EVUxFO1xcbiBcXHRcXHRlbHNlIHtcXG4gXFx0XFx0XFx0ZnJlZV9leHBsb2RlKGFyZ3MsIHNpemUpO1xcbiBcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuQEAgLTYzNSw2ICs2OTgsOCBAQCBzdGF0aWMgYm9vbCBwYXJzZV9zb3J0X2FyZ3MoY29uc3QgY2hhciAqYXJnX3N0cilcXG4gXFx0XFx0XFx0c2MuY21wc1tpXSA9IGNvbXBhcmVfdHh0O1xcbiBcXHRcXHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfQUxMT0NBVE9SKVxcbiBcXHRcXHRcXHRzYy5jbXBzW2ldID0gY29tcGFyZV9hbGxvY2F0b3I7XFxuK1xcdFxcdGVsc2UgaWYgKGFyZ190eXBlID09IEFSR19NT0RVTEUpXFxuK1xcdFxcdFxcdHNjLmNtcHNbaV0gPSBjb21wYXJlX21vZHVsZTtcXG4gXFx0XFx0ZWxzZSB7XFxuIFxcdFxcdFxcdGZyZWVfZXhwbG9kZShhcmdzLCBzaXplKTtcXG4gXFx0XFx0XFx0c2Muc2l6ZSA9IDA7XFxuQEAgLTY5MSw3ICs3NTYsOCBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKVxcbiBcXHRcXHRcXFwiLXBcXFxcdFxcXFx0XFxcXHRTb3J0IGJ5IHBpZC5cXFxcblxcXCJcXG4gXFx0XFx0XFxcIi1QXFxcXHRcXFxcdFxcXFx0U29ydCBieSB0Z2lkLlxcXFxuXFxcIlxcbiBcXHRcXHRcXFwiLXNcXFxcdFxcXFx0XFxcXHRTb3J0IGJ5IHRoZSBzdGFja3RyYWNlLlxcXFxuXFxcIlxcbi1cXHRcXHRcXFwiLXRcXFxcdFxcXFx0XFxcXHRTb3J0IGJ5IG51bWJlciBvZiB0aW1lcyByZWNvcmQgaXMgc2VlbiAoZGVmYXVsdCkuXFxcXG5cXFxcblxcXCJcXG4rXFx0XFx0XFxcIi10XFxcXHRcXFxcdFxcXFx0U29ydCBieSBudW1iZXIgb2YgdGltZXMgcmVjb3JkIGlzIHNlZW4gKGRlZmF1bHQpLlxcXFxuXFxcIlxcbitcXHRcXHRcXFwiLU1cXFxcdFxcXFx0XFxcXHRTb3J0IGJ5IG1vZHVsZSBuYW1lLlxcXFxuXFxcXG5cXFwiXFxuIFxcdFxcdFxcXCItLXBpZCBcXHUwMDNjcGlkbGlzdFxcdTAwM2VcXFxcdFxcXFx0U2VsZWN0IGJ5IHBpZC4gVGhpcyBzZWxlY3RzIHRoZSBpbmZvcm1hdGlvblxcXCJcXG4gXFx0XFx0XFxcIiBvZlxcXFxuXFxcXHRcXFxcdFxcXFx0YmxvY2tzIHdob3NlIHByb2Nlc3MgSUQgbnVtYmVycyBhcHBlYXIgaW4gXFx1MDAzY3BpZGxpc3RcXHUwMDNlLlxcXFxuXFxcIlxcbiBcXHRcXHRcXFwiLS10Z2lkIFxcdTAwM2N0Z2lkbGlzdFxcdTAwM2VcXFxcdFNlbGVjdCBieSB0Z2lkLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXFxcIlxcbkBAIC03MDAsMTEgKzc2NiwyMSBAQCBzdGF0aWMgdm9pZCB1c2FnZSh2b2lkKVxcbiBcXHRcXHRcXFwiLS1uYW1lIFxcdTAwM2NjbWRsaXN0XFx1MDAzZVxcXFx0U2VsZWN0IGJ5IGNvbW1hbmQgbmFtZS4gVGhpcyBzZWxlY3RzIHRoZVxcXCJcXG4gXFx0XFx0XFxcIiBpbmZvcm1hdGlvblxcXFxuXFxcXHRcXFxcdFxcXFx0b2YgYmxvY2tzIHdob3NlIGNvbW1hbmQgbmFtZSBhcHBlYXJzIGluXFxcIlxcbiBcXHRcXHRcXFwiIFxcdTAwM2NjbWRsaXN0XFx1MDAzZS5cXFxcblxcXCJcXG4tXFx0XFx0XFxcIi0tY3VsbCBcXHUwMDNjcnVsZXNcXHUwMDNlXFxcXHRcXFxcdEN1bGwgYnkgdXNlci1kZWZpbmVkIHJ1bGVzLiBcXHUwMDNjcnVsZXNcXHUwMDNlIGlzIGEgXFxcIlxcbi1cXHRcXHRcXFwic2luZ2xlXFxcXG5cXFxcdFxcXFx0XFxcXHRhcmd1bWVudCBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IFxcXCJcXG4tXFx0XFx0XFxcIndpdGggc29tZVxcXFxuXFxcXHRcXFxcdFxcXFx0Y29tbW9uIGZpZWxkcyBwcmVkZWZpbmVkIChwaWQsIHRnaWQsIGNvbW0sIFxcXCJcXG4tXFx0XFx0XFxcInN0YWNrdHJhY2UsIGFsbG9jYXRvcilcXFxcblxcXCJcXG4rXFx0XFx0XFxcIi0tbW9kdWxlIFxcdTAwM2Ntb2RsaXN0XFx1MDAzZVxcXFx0U2VsZWN0IGJ5IG1vZHVsZSBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdFxcXFx0XFxcXHRvZiBibG9ja3Mgd2hvc2UgbW9kdWxlIG5hbWUgYXBwZWFycyBpbiBcXHUwMDNjbW9kbGlzdFxcdTAwM2UuXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCItLWN1bGwgXFx1MDAzY3J1bGVzXFx1MDAzZVxcXFx0XFxcXHRDdWxsIGJ5IHVzZXItZGVmaW5lZCBydWxlcy4gXFx1MDAzY3J1bGVzXFx1MDAzZSBpcyBhIHNpbmdsZVxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0YXJndW1lbnQgaW4gdGhlIGZvcm0gb2YgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCB3aXRoIHNvbWVcXFxcblxcXCJcXG4rXFx0XFx0XFxcIlxcXFx0XFxcXHRcXFxcdGNvbW1vbiBmaWVsZHMgcHJlZGVmaW5lZCAocGlkLCB0Z2lkLCBjb21tLCBzdGFja3RyYWNlLCBhbGxvY2F0b3IsIG1vZHVsZSlcXFxcblxcXCJcXG4gXFx0XFx0XFxcIi0tc29ydCBcXHUwMDNjb3JkZXJcXHUwMDNlXFxcXHRcXFxcdFNwZWNpZnkgc29ydCBvcmRlciBhczogWyt8LV1rZXlbLFsrfC1da2V5WywuLi5dXVxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0QXZhaWxhYmxlIGtleXM6XFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdFxcXFx0XFxcXHQgIHBpZChwKSwgdGdpZCh0ZyksIG5hbWUobiksIHN0YWNrdHJhY2Uoc3QpLFxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0ICB0eHQoVCksIGFsbG9jX3RzKGF0KSwgYWxsb2NhdG9yKGF0b3IpLCBtb2R1bGUobW9kKVxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0VGhlIFxcXFxcXFwiK1xcXFxcXFwiIGlzIG9wdGlvbmFsIHNpbmNlIGRlZmF1bHQgZGlyZWN0aW9uIGlzXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdFxcXFx0XFxcXHRpbmNyZWFzaW5nIG51bWVyaWNhbCBvciBsZXhpY29ncmFwaGljIG9yZGVyLlxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0TWl4ZWQgdXNlIG9mIGFiYnJldmlhdGVkIGFuZCBjb21wbGV0ZS1mb3JtIGlzIGFsbG93ZWQuXFxcXG5cXFwiXFxuK1xcdFxcdFxcXCJcXFxcdFxcXFx0XFxcXHRFeGFtcGxlczpcXFxcblxcXCJcXG4rXFx0XFx0XFxcIlxcXFx0XFxcXHRcXFxcdCAgLS1zb3J0PW4sK3BpZCwtdGdpZFxcXFxuXFxcIlxcbitcXHRcXHRcXFwiXFxcXHRcXFxcdFxcXFx0ICAtLXNvcnQ9bW9kLGF0XFxcXG5cXFwiXFxuIFxcdCk7XFxuIH1cXG4gXFxuQEAgLTcyMSwxMyArNzk3LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0XFx0eyBcXFwibmFtZVxcXCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAzIH0sXFxuIFxcdFxcdHsgXFxcImN1bGxcXFwiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNCB9LFxcbiBcXHRcXHR7IFxcXCJzb3J0XFxcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDUgfSxcXG4rXFx0XFx0eyBcXFwibW9kdWxlXFxcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDYgfSxcXG4gXFx0XFx0eyBcXFwiaGVscFxcXCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAnaCcgfSxcXG4gXFx0XFx0eyAwLCAwLCAwLCAwfSxcXG4gXFx0fTtcXG4gXFxuIFxcdGNvbXBhcmVfZmxhZyA9IENPTVBfTk9fRkxBRztcXG4gXFxuLVxcdHdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgXFxcImFkbW5wc3RQaFxcXCIsIGxvbmdvcHRzLCBOVUxMKSkgIT0gLTEpXFxuK1xcdHdoaWxlICgob3B0ID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgXFxcImFkbW5wc3RQTWhcXFwiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKVxcbiBcXHRcXHRzd2l0Y2ggKG9wdCkge1xcbiBcXHRcXHRjYXNlICdhJzpcXG4gXFx0XFx0XFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfQUxMT0M7XFxuQEAgLTc1Myw2ICs4MzAsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcdFxcdGNhc2UgJ24nOlxcbiBcXHRcXHRcXHRjb21wYXJlX2ZsYWcgfD0gQ09NUF9DT01NO1xcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSAnTSc6XFxuK1xcdFxcdFxcdGNvbXBhcmVfZmxhZyB8PSBDT01QX01PRFVMRTtcXG4rXFx0XFx0XFx0YnJlYWs7XFxuIFxcdFxcdGNhc2UgJ2gnOlxcbiBcXHRcXHRcXHR1c2FnZSgpO1xcbiBcXHRcXHRcXHRleGl0KDApO1xcbkBAIC03OTIsNiArODcyLDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0XFx0XFx0XFx0ZXhpdCgxKTtcXG4gXFx0XFx0XFx0fVxcbiBcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0Y2FzZSA2OlxcbitcXHRcXHRcXHRmaWx0ZXIgPSBmaWx0ZXIgfCBGSUxURVJfTU9EVUxFO1xcbitcXHRcXHRcXHRmYy5tb2R1bGVzID0gZXhwbG9kZSgnLCcsIG9wdGFyZywgXFx1MDAyNmZjLm1vZHVsZXNfc2l6ZSk7XFxuK1xcdFxcdFxcdGJyZWFrO1xcbiBcXHRcXHRkZWZhdWx0OlxcbiBcXHRcXHRcXHR1c2FnZSgpO1xcbiBcXHRcXHRcXHRleGl0KDEpO1xcbkBAIC04MjEsNiArOTA1LDEwIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0XFx0c2V0X3NpbmdsZV9jbXAoY29tcGFyZV9zdGFja3RyYWNlLCBTT1JUX0FTQyk7XFxuIFxcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIENPTVBfTk9fRkxBRzpcXG4rXFx0XFx0aWYgKHNjLnNpemUgXFx1MDAzZSAwKVxcbitcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0c2V0X3NpbmdsZV9jbXAoY29tcGFyZV9udW0sIFNPUlRfREVTQyk7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRjYXNlIENPTVBfTlVNOlxcbiBcXHRcXHRzZXRfc2luZ2xlX2NtcChjb21wYXJlX251bSwgU09SVF9ERVNDKTtcXG4gXFx0XFx0YnJlYWs7XFxuQEAgLTgzMCw2ICs5MTgsOSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcdGNhc2UgQ09NUF9DT01NOlxcbiBcXHRcXHRzZXRfc2luZ2xlX2NtcChjb21wYXJlX2NvbW0sIFNPUlRfQVNDKTtcXG4gXFx0XFx0YnJlYWs7XFxuK1xcdGNhc2UgQ09NUF9NT0RVTEU6XFxuK1xcdFxcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbW9kdWxlLCBTT1JUX0FTQyk7XFxuK1xcdFxcdGJyZWFrO1xcbiBcXHRkZWZhdWx0OlxcbiBcXHRcXHR1c2FnZSgpO1xcbiBcXHRcXHRleGl0KDEpO1xcbkBAIC04NTMsNiArOTQ0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxcbiBcXHRcXHRnb3RvIG91dF9jb21tO1xcbiBcXHRpZiAoIWNoZWNrX3JlZ2NvbXAoXFx1MDAyNnRzX25zZWNfcGF0dGVybiwgXFxcInRzXFxcXFxcXFxzKihbMC05XSopXFxcXFxcXFxzKm5zXFxcIikpXFxuIFxcdFxcdGdvdG8gb3V0X3RzO1xcbitcXHRpZiAoIWNoZWNrX3JlZ2NvbXAoXFx1MDAyNm1vZHVsZV9wYXR0ZXJuLCBcXFwiXFxcXFxcXFwrMHhbMC05YS1mXSsvMHhbMC05YS1mXStcXFxcXFxcXHMqXFxcXFxcXFxbKFthLXpBLVowLTlfLV0rKVxcXFxcXFxcXVxcXCIpKVxcbitcXHRcXHRnb3RvIG91dF9tb2R1bGU7XFxuIFxcbiBcXHRmc3RhdChmaWxlbm8oZmluKSwgXFx1MDAyNnN0KTtcXG4gXFx0bWF4X3NpemUgPSBzdC5zdF9zaXplIC8gMTAwOyAvKiBoYWNrIC4uLiAqL1xcbkBAIC05MTEsNiArMTAwNCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcXG4gXFx0XFx0XFx0XFx0ZnByaW50Zihmb3V0LCBcXFwiLCBUR0lEICVkXFxcIiwgbGlzdFtpXS50Z2lkKTtcXG4gXFx0XFx0XFx0aWYgKGN1bGwgXFx1MDAyNiBDVUxMX0NPTU0gfHwgZmlsdGVyIFxcdTAwMjYgRklMVEVSX0NPTU0pXFxuIFxcdFxcdFxcdFxcdGZwcmludGYoZm91dCwgXFxcIiwgdGFza19jb21tX25hbWU6ICVzXFxcIiwgbGlzdFtpXS5jb21tKTtcXG4rXFx0XFx0XFx0aWYgKGN1bGwgXFx1MDAyNiBDVUxMX01PRFVMRSB8fCBmaWx0ZXIgXFx1MDAyNiBGSUxURVJfTU9EVUxFKVxcbitcXHRcXHRcXHRcXHRmcHJpbnRmKGZvdXQsIFxcXCIsIG1vZHVsZTogJXNcXFwiLCBsaXN0W2ldLm1vZHVsZSk7XFxuIFxcdFxcdFxcdGlmIChjdWxsIFxcdTAwMjYgQ1VMTF9BTExPQ0FUT1IpIHtcXG4gXFx0XFx0XFx0XFx0ZnByaW50Zihmb3V0LCBcXFwiLCBcXFwiKTtcXG4gXFx0XFx0XFx0XFx0cHJpbnRfYWxsb2NhdG9yKGZvdXQsIGxpc3RbaV0uYWxsb2NhdG9yKTtcXG5AQCAtOTMxLDYgKzEwMjYsOCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXFxuIFxcdFxcdFxcdGZyZWVfYmxvY2tfbGlzdChcXHUwMDI2bGlzdFtpXSk7XFxuIFxcdFxcdGZyZWUobGlzdCk7XFxuIFxcdH1cXG4rb3V0X21vZHVsZTpcXG4rXFx0cmVnZnJlZShcXHUwMDI2bW9kdWxlX3BhdHRlcm4pO1xcbiBvdXRfdHM6XFxuIFxcdHJlZ2ZyZWUoXFx1MDAyNnRzX25zZWNfcGF0dGVybik7XFxuIG91dF9jb21tOlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwNjo1Mjo0Ni42MjcxOTI0NzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo4Njc3MDkxMTczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IG1vZGlmaWVzIGEgdXNlci1zcGFjZSB0b29sICh0b29scy9tbS9wYWdlX293bmVyX3NvcnQuYykgYW5kIGl0cyBkb2N1bWVudGF0aW9uLiBJdCBkb2VzIG5vdCBtYWtlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA1ZmIwMjE5MGIyMTJjMmVlZjJiMzFiYmY0NDdlNjUxNzgzNjgxZTgzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBBdWcgMyAwNjo1Mjo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbW0vcGFnZV9vd25lci5yc3QgYi9Eb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0XG5pbmRleCBhNmJkM2ZlNjQyM2FkLi5iZDAyNzM3N2RmZjZlIDEwMDY0NFxuLS0tIGEvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxuKysrIGIvRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdFxuQEAgLTE5OSw2ICsxOTksNyBAQCBVc2FnZVxuIFx0XHQtcFx0XHRTb3J0IGJ5IHBpZC5cbiBcdFx0LVBcdFx0U29ydCBieSB0Z2lkLlxuIFx0XHQtblx0XHRTb3J0IGJ5IHRhc2sgY29tbWFuZCBuYW1lLlxuK1x0XHQtTVx0XHRTb3J0IGJ5IG1vZHVsZSBuYW1lLlxuIFx0XHQtclx0XHRTb3J0IGJ5IG1lbW9yeSByZWxlYXNlIHRpbWUuXG4gXHRcdC1zXHRcdFNvcnQgYnkgc3RhY2sgdHJhY2UuXG4gXHRcdC10XHRcdFNvcnQgYnkgdGltZXMgKGRlZmF1bHQpLlxuQEAgLTI0MCw4ICsyNDEsMTAgQEAgVXNhZ2VcbiBcdFx0XHRcdFx0Z3JvdXAgSUQgbnVtYmVycyBhcHBlYXIgaW4gXHUwMDNjdGdpZGxpc3RcdTAwM2UuXG4gXHRcdC0tbmFtZSBcdTAwM2NjbWRsaXN0XHUwMDNlXHRTZWxlY3QgYnkgdGFzayBjb21tYW5kIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgYmxvY2tzIHdob3NlXG4gXHRcdFx0XHRcdHRhc2sgY29tbWFuZCBuYW1lIGFwcGVhciBpbiBcdTAwM2NjbWRsaXN0XHUwMDNlLlxuK1x0XHQtLW1vZHVsZSBcdTAwM2Ntb2RsaXN0XHUwMDNlXHRTZWxlY3QgYnkgbW9kdWxlIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGUgYmxvY2tzIHdob3NlXG4rXHRcdFx0XHRcdG1vZHVsZSBuYW1lIGFwcGVhciBpbiBcdTAwM2Ntb2RsaXN0XHUwMDNlLlxuIFxuLVx0XHRcdTAwM2NwaWRsaXN0XHUwMDNlLCBcdTAwM2N0Z2lkbGlzdFx1MDAzZSwgXHUwMDNjY21kbGlzdFx1MDAzZSBhcmUgc2luZ2xlIGFyZ3VtZW50cyBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LFxuK1x0XHRcdTAwM2NwaWRsaXN0XHUwMDNlLCBcdTAwM2N0Z2lkbGlzdFx1MDAzZSwgXHUwMDNjY21kbGlzdFx1MDAzZSwgXHUwMDNjbW9kbGlzdFx1MDAzZSBhcmUgc2luZ2xlIGFyZ3VtZW50cyBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LFxuIFx0XHR3aGljaCBvZmZlcnMgYSB3YXkgdG8gc3BlY2lmeSBpbmRpdmlkdWFsIHNlbGVjdGluZyBydWxlcy5cbiBcbiBcbkBAIC0yNDksNiArMjUyLDcgQEAgVXNhZ2VcbiBcdFx0XHRcdC4vcGFnZV9vd25lcl9zb3J0IFx1MDAzY2lucHV0XHUwMDNlIFx1MDAzY291dHB1dFx1MDAzZSAtLXBpZD0xXG4gXHRcdFx0XHQuL3BhZ2Vfb3duZXJfc29ydCBcdTAwM2NpbnB1dFx1MDAzZSBcdTAwM2NvdXRwdXRcdTAwM2UgLS10Z2lkPTEsMiwzXG4gXHRcdFx0XHQuL3BhZ2Vfb3duZXJfc29ydCBcdTAwM2NpbnB1dFx1MDAzZSBcdTAwM2NvdXRwdXRcdTAwM2UgLS1uYW1lIG5hbWUxLG5hbWUyXG4rXHRcdFx0XHQuL3BhZ2Vfb3duZXJfc29ydCBcdTAwM2NpbnB1dFx1MDAzZSBcdTAwM2NvdXRwdXRcdTAwM2UgLS1tb2R1bGUgeGZzLGV4dDRcbiBcbiBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuID09PT09PT09PT09PT09PT09PT09PT09PT09XG5AQCAtMjY1LDYgKzI2OSw3IEBAIFNUQU5EQVJEIEZPUk1BVCBTUEVDSUZJRVJTXG4gXHRmdFx0XHRmcmVlX3RzXHRcdHRpbWVzdGFtcCBvZiB0aGUgcGFnZSB3aGVuIGl0IHdhcyByZWxlYXNlZFxuIFx0YXRcdFx0YWxsb2NfdHNcdHRpbWVzdGFtcCBvZiB0aGUgcGFnZSB3aGVuIGl0IHdhcyBhbGxvY2F0ZWRcbiBcdGF0b3JcdFx0YWxsb2NhdG9yXHRtZW1vcnkgYWxsb2NhdG9yIGZvciBwYWdlc1xuK1x0bW9kXHRcdG1vZHVsZVx0XHRrZXJuZWwgbW9kdWxlIG5hbWVcbiBcbiAgIEZvciAtLWN1bGwgb3B0aW9uOlxuIFxuQEAgLTI3NSw2ICsyODAsNyBAQCBTVEFOREFSRCBGT1JNQVQgU1BFQ0lGSUVSU1xuIFx0Zlx0XHRmcmVlXHRcdHdoZXRoZXIgdGhlIHBhZ2UgaGFzIGJlZW4gcmVsZWFzZWQgb3Igbm90XG4gXHRzdFx0XHRzdGFja3RyYWNlXHRzdGFjayB0cmFjZSBvZiB0aGUgcGFnZSBhbGxvY2F0aW9uXG4gXHRhdG9yXHRcdGFsbG9jYXRvclx0bWVtb3J5IGFsbG9jYXRvciBmb3IgcGFnZXNcbitcdG1vZFx0XHRtb2R1bGVcdFx0a2VybmVsIG1vZHVsZSBuYW1lXG4gXG4gRmlsdGVyaW5nIHBhZ2Vfb3duZXIgb3V0cHV0XG4gPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuZGlmZiAtLWdpdCBhL3Rvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jIGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbmluZGV4IDM1ZDNkMjU0OTQxYzkuLmM1YmMzYjUyNGMwYTkgMTAwNjQ0XG4tLS0gYS90b29scy9tbS9wYWdlX293bmVyX3NvcnQuY1xuKysrIGIvdG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmNcbkBAIC0yNSwxMSArMjUsMTMgQEBcbiAjaW5jbHVkZSBcdTAwM2NnZXRvcHQuaFx1MDAzZVxuIFxuICNkZWZpbmUgVEFTS19DT01NX0xFTiAxNlxuKyNkZWZpbmUgTU9EVUxFX05BTUVfTEVOIDY0XG4gXG4gc3RydWN0IGJsb2NrX2xpc3Qge1xuIFx0Y2hhciAqdHh0O1xuIFx0Y2hhciAqY29tbTsgLy8gdGFzayBjb21tYW5kIG5hbWVcbiBcdGNoYXIgKnN0YWNrdHJhY2U7XG4rXHRjaGFyICptb2R1bGU7IC8vIGtlcm5lbCBtb2R1bGUgbmFtZVxuIFx0X191NjQgdHNfbnNlYztcbiBcdGludCBsZW47XG4gXHRpbnQgbnVtO1xuQEAgLTQxLDcgKzQzLDggQEAgc3RydWN0IGJsb2NrX2xpc3Qge1xuIGVudW0gRklMVEVSX0JJVCB7XG4gXHRGSUxURVJfUElEID0gMVx1MDAzY1x1MDAzYzEsXG4gXHRGSUxURVJfVEdJRCA9IDFcdTAwM2NcdTAwM2MyLFxuLVx0RklMVEVSX0NPTU0gPSAxXHUwMDNjXHUwMDNjM1xuK1x0RklMVEVSX0NPTU0gPSAxXHUwMDNjXHUwMDNjMyxcbitcdEZJTFRFUl9NT0RVTEUgPSAxXHUwMDNjXHUwMDNjNFxuIH07XG4gXG4gZW51bSBGSUxURVJfUkVTVUxUIHtcbkBAIC01NSw3ICs1OCw4IEBAIGVudW0gQ1VMTF9CSVQge1xuIFx0Q1VMTF9UR0lEID0gMVx1MDAzY1x1MDAzYzIsXG4gXHRDVUxMX0NPTU0gPSAxXHUwMDNjXHUwMDNjMyxcbiBcdENVTExfU1RBQ0tUUkFDRSA9IDFcdTAwM2NcdTAwM2M0LFxuLVx0Q1VMTF9BTExPQ0FUT1IgPSAxXHUwMDNjXHUwMDNjNVxuK1x0Q1VMTF9BTExPQ0FUT1IgPSAxXHUwMDNjXHUwMDNjNSxcbitcdENVTExfTU9EVUxFID0gMVx1MDAzY1x1MDAzYzZcbiB9O1xuIGVudW0gQUxMT0NBVE9SX0JJVCB7XG4gXHRBTExPQ0FUT1JfQ01BID0gMVx1MDAzY1x1MDAzYzEsXG5AQCAtNjUsNyArNjksOCBAQCBlbnVtIEFMTE9DQVRPUl9CSVQge1xuIH07XG4gZW51bSBBUkdfVFlQRSB7XG4gXHRBUkdfVFhULCBBUkdfQ09NTSwgQVJHX1NUQUNLVFJBQ0UsIEFSR19BTExPQ19UUywgQVJHX0NVTExfVElNRSxcbi1cdEFSR19QQUdFX05VTSwgQVJHX1BJRCwgQVJHX1RHSUQsIEFSR19VTktOT1dOLCBBUkdfQUxMT0NBVE9SXG4rXHRBUkdfUEFHRV9OVU0sIEFSR19QSUQsIEFSR19UR0lELCBBUkdfVU5LTk9XTiwgQVJHX0FMTE9DQVRPUixcbitcdEFSR19NT0RVTEVcbiB9O1xuIGVudW0gU09SVF9PUkRFUiB7XG4gXHRTT1JUX0FTQyA9IDEsXG5AQCAtNzksMTUgKzg0LDE4IEBAIGVudW0gQ09NUF9GTEFHIHtcbiBcdENPTVBfU1RBQ0sgPSAxXHUwMDNjXHUwMDNjMyxcbiBcdENPTVBfTlVNID0gMVx1MDAzY1x1MDAzYzQsXG4gXHRDT01QX1RHSUQgPSAxXHUwMDNjXHUwMDNjNSxcbi1cdENPTVBfQ09NTSA9IDFcdTAwM2NcdTAwM2M2XG4rXHRDT01QX0NPTU0gPSAxXHUwMDNjXHUwMDNjNixcbitcdENPTVBfTU9EVUxFID0gMVx1MDAzY1x1MDAzYzdcbiB9O1xuIHN0cnVjdCBmaWx0ZXJfY29uZGl0aW9uIHtcbiBcdHBpZF90ICpwaWRzO1xuIFx0cGlkX3QgKnRnaWRzO1xuIFx0Y2hhciAqKmNvbW1zO1xuK1x0Y2hhciAqKm1vZHVsZXM7XG4gXHRpbnQgcGlkc19zaXplO1xuIFx0aW50IHRnaWRzX3NpemU7XG4gXHRpbnQgY29tbXNfc2l6ZTtcbitcdGludCBtb2R1bGVzX3NpemU7XG4gfTtcbiBzdHJ1Y3Qgc29ydF9jb25kaXRpb24ge1xuIFx0aW50ICgqKmNtcHMpKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTtcbkBAIC0xMDEsNiArMTA5LDcgQEAgc3RhdGljIHJlZ2V4X3QgcGlkX3BhdHRlcm47XG4gc3RhdGljIHJlZ2V4X3QgdGdpZF9wYXR0ZXJuO1xuIHN0YXRpYyByZWdleF90IGNvbW1fcGF0dGVybjtcbiBzdGF0aWMgcmVnZXhfdCB0c19uc2VjX3BhdHRlcm47XG4rc3RhdGljIHJlZ2V4X3QgbW9kdWxlX3BhdHRlcm47XG4gc3RhdGljIHN0cnVjdCBibG9ja19saXN0ICpsaXN0O1xuIHN0YXRpYyBpbnQgbGlzdF9zaXplO1xuIHN0YXRpYyBpbnQgbWF4X3NpemU7XG5AQCAtMTg0LDYgKzE5MywxMyBAQCBzdGF0aWMgaW50IGNvbXBhcmVfY29tbShjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4gXHRyZXR1cm4gc3RyY21wKGwxLVx1MDAzZWNvbW0sIGwyLVx1MDAzZWNvbW0pO1xuIH1cbiBcbitzdGF0aWMgaW50IGNvbXBhcmVfbW9kdWxlKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMilcbit7XG4rXHRjb25zdCBzdHJ1Y3QgYmxvY2tfbGlzdCAqbDEgPSBwMSwgKmwyID0gcDI7XG4rXG4rXHRyZXR1cm4gc3RyY21wKGwxLVx1MDAzZW1vZHVsZSwgbDItXHUwMDNlbW9kdWxlKTtcbit9XG4rXG4gc3RhdGljIGludCBjb21wYXJlX3RzKGNvbnN0IHZvaWQgKnAxLCBjb25zdCB2b2lkICpwMilcbiB7XG4gXHRjb25zdCBzdHJ1Y3QgYmxvY2tfbGlzdCAqbDEgPSBwMSwgKmwyID0gcDI7XG5AQCAtMjA3LDYgKzIyMyw4IEBAIHN0YXRpYyBpbnQgY29tcGFyZV9jdWxsX2NvbmRpdGlvbihjb25zdCB2b2lkICpwMSwgY29uc3Qgdm9pZCAqcDIpXG4gXHRcdHJldHVybiBjb21wYXJlX3RnaWQocDEsIHAyKTtcbiBcdGlmICgoY3VsbCBcdTAwMjYgQ1VMTF9DT01NKSBcdTAwMjZcdTAwMjYgY29tcGFyZV9jb21tKHAxLCBwMikpXG4gXHRcdHJldHVybiBjb21wYXJlX2NvbW0ocDEsIHAyKTtcbitcdGlmICgoY3VsbCBcdTAwMjYgQ1VMTF9NT0RVTEUpIFx1MDAyNlx1MDAyNiBjb21wYXJlX21vZHVsZShwMSwgcDIpKVxuK1x0XHRyZXR1cm4gY29tcGFyZV9tb2R1bGUocDEsIHAyKTtcbiBcdGlmICgoY3VsbCBcdTAwMjYgQ1VMTF9BTExPQ0FUT1IpIFx1MDAyNlx1MDAyNiBjb21wYXJlX2FsbG9jYXRvcihwMSwgcDIpKVxuIFx0XHRyZXR1cm4gY29tcGFyZV9hbGxvY2F0b3IocDEsIHAyKTtcbiBcdHJldHVybiAwO1xuQEAgLTQxMSw5ICs0MjksMzMgQEAgc3RhdGljIGNoYXIgKmdldF9jb21tKGNoYXIgKmJ1ZilcbiBcdHJldHVybiBjb21tX3N0cjtcbiB9XG4gXG4rc3RhdGljIGNoYXIgKmdldF9tb2R1bGUoY2hhciAqYnVmKVxuK3tcbitcdGNoYXIgKm1vZHVsZV9zdHIgPSBtYWxsb2MoTU9EVUxFX05BTUVfTEVOKTtcbitcdHJlZ21hdGNoX3QgcG1hdGNoWzJdO1xuK1x0aW50IHZhbF9sZW47XG4rXG4rXHRpZiAoIW1vZHVsZV9zdHIpXG4rXHRcdHJldHVybiBOVUxMO1xuK1x0bWVtc2V0KG1vZHVsZV9zdHIsIDAsIE1PRFVMRV9OQU1FX0xFTik7XG4rXHRpZiAocmVnZXhlYyhcdTAwMjZtb2R1bGVfcGF0dGVybiwgYnVmLCAyLCBwbWF0Y2gsIFJFR19OT1RCT0wpICE9IDAgfHwgcG1hdGNoWzFdLnJtX3NvID09IC0xKSB7XG4rXHRcdHN0cmNweShtb2R1bGVfc3RyLCBcInZtbGludXhcIik7XG4rXHRcdHJldHVybiBtb2R1bGVfc3RyO1xuK1x0fVxuK1xuK1x0dmFsX2xlbiA9IHBtYXRjaFsxXS5ybV9lbyAtIHBtYXRjaFsxXS5ybV9zbztcbitcdGlmICgoc2l6ZV90KXZhbF9sZW4gXHUwMDNlPSBNT0RVTEVfTkFNRV9MRU4pXG4rXHRcdHZhbF9sZW4gPSBNT0RVTEVfTkFNRV9MRU4gLSAxO1xuK1x0bWVtY3B5KG1vZHVsZV9zdHIsIGJ1ZiArIHBtYXRjaFsxXS5ybV9zbywgdmFsX2xlbik7XG4rXHRtb2R1bGVfc3RyW3ZhbF9sZW5dID0gJ1xcMCc7XG4rXG4rXHRyZXR1cm4gbW9kdWxlX3N0cjtcbit9XG4rXG4gc3RhdGljIHZvaWQgZnJlZV9ibG9ja19saXN0KHN0cnVjdCBibG9ja19saXN0ICpibG9jaylcbiB7XG4gXHRmcmVlKGJsb2NrLVx1MDAzZWNvbW0pO1xuK1x0ZnJlZShibG9jay1cdTAwM2Vtb2R1bGUpO1xuIFx0ZnJlZShibG9jay1cdTAwM2V0eHQpO1xuIH1cbiBcbkBAIC00MzMsNiArNDc1LDggQEAgc3RhdGljIGludCBnZXRfYXJnX3R5cGUoY29uc3QgY2hhciAqYXJnKVxuIFx0XHRyZXR1cm4gQVJHX0FMTE9DX1RTO1xuIFx0ZWxzZSBpZiAoIXN0cmNtcChhcmcsIFwiYWxsb2NhdG9yXCIpIHx8ICFzdHJjbXAoYXJnLCBcImF0b3JcIikpXG4gXHRcdHJldHVybiBBUkdfQUxMT0NBVE9SO1xuK1x0ZWxzZSBpZiAoIXN0cmNtcChhcmcsIFwibW9kdWxlXCIpIHx8ICFzdHJjbXAoYXJnLCBcIm1vZFwiKSlcbitcdFx0cmV0dXJuIEFSR19NT0RVTEU7XG4gXHRlbHNlIHtcbiBcdFx0cmV0dXJuIEFSR19VTktOT1dOO1xuIFx0fVxuQEAgLTQ4MywyNSArNTI3LDM2IEBAIHN0YXRpYyBib29sIG1hdGNoX3N0cl9saXN0KGNvbnN0IGNoYXIgKnN0ciwgY2hhciAqKmxpc3QsIGludCBsaXN0X3NpemUpXG4gXG4gc3RhdGljIGVudW0gRklMVEVSX1JFU1VMVCBmaWx0ZXJfcmVjb3JkKGNoYXIgKmJ1ZilcbiB7XG4tXHRjaGFyICpjb21tO1xuK1x0Y2hhciAqY29tbSwgKm1vZHVsZTtcbiBcbiBcdGlmICgoZmlsdGVyIFx1MDAyNiBGSUxURVJfUElEKSBcdTAwMjZcdTAwMjYgIW1hdGNoX251bV9saXN0KGdldF9waWQoYnVmKSwgZmMucGlkcywgZmMucGlkc19zaXplKSlcbiBcdFx0cmV0dXJuIEZJTFRFUl9TS0lQO1xuIFx0aWYgKChmaWx0ZXIgXHUwMDI2IEZJTFRFUl9UR0lEKSBcdTAwMjZcdTAwMjZcbiBcdFx0IW1hdGNoX251bV9saXN0KGdldF90Z2lkKGJ1ZiksIGZjLnRnaWRzLCBmYy50Z2lkc19zaXplKSlcbiBcdFx0cmV0dXJuIEZJTFRFUl9TS0lQO1xuLVx0aWYgKCEoZmlsdGVyIFx1MDAyNiBGSUxURVJfQ09NTSkpXG4rXHRpZiAoIShmaWx0ZXIgXHUwMDI2IChGSUxURVJfQ09NTSB8IEZJTFRFUl9NT0RVTEUpKSlcbiBcdFx0cmV0dXJuIEZJTFRFUl9NQVRDSDtcbiBcbi1cdGNvbW0gPSBnZXRfY29tbShidWYpO1xuLVx0aWYgKCFjb21tKVxuLVx0XHRyZXR1cm4gRklMVEVSX0VSUk9SO1xuLVxuLVx0aWYgKCFtYXRjaF9zdHJfbGlzdChjb21tLCBmYy5jb21tcywgZmMuY29tbXNfc2l6ZSkpIHtcbitcdGlmIChmaWx0ZXIgXHUwMDI2IEZJTFRFUl9DT01NKSB7XG4rXHRcdGNvbW0gPSBnZXRfY29tbShidWYpO1xuK1x0XHRpZiAoIWNvbW0pXG4rXHRcdFx0cmV0dXJuIEZJTFRFUl9FUlJPUjtcbitcdFx0aWYgKCFtYXRjaF9zdHJfbGlzdChjb21tLCBmYy5jb21tcywgZmMuY29tbXNfc2l6ZSkpIHtcbitcdFx0XHRmcmVlKGNvbW0pO1xuK1x0XHRcdHJldHVybiBGSUxURVJfU0tJUDtcbitcdFx0fVxuIFx0XHRmcmVlKGNvbW0pO1xuLVx0XHRyZXR1cm4gRklMVEVSX1NLSVA7XG4gXHR9XG4tXHRmcmVlKGNvbW0pO1xuK1x0aWYgKGZpbHRlciBcdTAwMjYgRklMVEVSX01PRFVMRSkge1xuK1x0XHRtb2R1bGUgPSBnZXRfbW9kdWxlKGJ1Zik7XG4rXHRcdGlmICghbW9kdWxlKVxuK1x0XHRcdHJldHVybiBGSUxURVJfRVJST1I7XG4rXHRcdGlmICghbWF0Y2hfc3RyX2xpc3QobW9kdWxlLCBmYy5tb2R1bGVzLCBmYy5tb2R1bGVzX3NpemUpKSB7XG4rXHRcdFx0ZnJlZShtb2R1bGUpO1xuK1x0XHRcdHJldHVybiBGSUxURVJfU0tJUDtcbitcdFx0fVxuK1x0XHRmcmVlKG1vZHVsZSk7XG4rXHR9XG4gXHRyZXR1cm4gRklMVEVSX01BVENIO1xuIH1cbiBcbkBAIC01NDcsNiArNjAyLDEyIEBAIHN0YXRpYyBib29sIGFkZF9saXN0KGNoYXIgKmJ1ZiwgaW50IGxlbiwgY2hhciAqZXh0X2J1ZilcbiBcdFx0bGlzdFtsaXN0X3NpemVdLnN0YWNrdHJhY2UrKztcbiBcdGxpc3RbbGlzdF9zaXplXS50c19uc2VjID0gZ2V0X3RzX25zZWMoYnVmKTtcbiBcdGxpc3RbbGlzdF9zaXplXS5hbGxvY2F0b3IgPSBnZXRfYWxsb2NhdG9yKGJ1ZiwgZXh0X2J1Zik7XG4rXHRsaXN0W2xpc3Rfc2l6ZV0ubW9kdWxlID0gZ2V0X21vZHVsZShidWYpO1xuK1x0aWYgKCFsaXN0W2xpc3Rfc2l6ZV0ubW9kdWxlKSB7XG4rXHRcdGZwcmludGYoc3RkZXJyLCBcIk91dCBvZiBtZW1vcnlcXG5cIik7XG4rXHRcdGZyZWVfYmxvY2tfbGlzdChcdTAwMjZsaXN0W2xpc3Rfc2l6ZV0pO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4gXHRsaXN0X3NpemUrKztcbiBcdGlmIChsaXN0X3NpemUgJSAxMDAwID09IDApIHtcbiBcdFx0cHJpbnRmKFwibG9hZGVkICVkXFxyXCIsIGxpc3Rfc2l6ZSk7XG5AQCAtNTczLDYgKzYzNCw4IEBAIHN0YXRpYyBib29sIHBhcnNlX2N1bGxfYXJncyhjb25zdCBjaGFyICphcmdfc3RyKVxuIFx0XHRcdGN1bGwgfD0gQ1VMTF9TVEFDS1RSQUNFO1xuIFx0XHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfQUxMT0NBVE9SKVxuIFx0XHRcdGN1bGwgfD0gQ1VMTF9BTExPQ0FUT1I7XG4rXHRcdGVsc2UgaWYgKGFyZ190eXBlID09IEFSR19NT0RVTEUpXG4rXHRcdFx0Y3VsbCB8PSBDVUxMX01PRFVMRTtcbiBcdFx0ZWxzZSB7XG4gXHRcdFx0ZnJlZV9leHBsb2RlKGFyZ3MsIHNpemUpO1xuIFx0XHRcdHJldHVybiBmYWxzZTtcbkBAIC02MzUsNiArNjk4LDggQEAgc3RhdGljIGJvb2wgcGFyc2Vfc29ydF9hcmdzKGNvbnN0IGNoYXIgKmFyZ19zdHIpXG4gXHRcdFx0c2MuY21wc1tpXSA9IGNvbXBhcmVfdHh0O1xuIFx0XHRlbHNlIGlmIChhcmdfdHlwZSA9PSBBUkdfQUxMT0NBVE9SKVxuIFx0XHRcdHNjLmNtcHNbaV0gPSBjb21wYXJlX2FsbG9jYXRvcjtcbitcdFx0ZWxzZSBpZiAoYXJnX3R5cGUgPT0gQVJHX01PRFVMRSlcbitcdFx0XHRzYy5jbXBzW2ldID0gY29tcGFyZV9tb2R1bGU7XG4gXHRcdGVsc2Uge1xuIFx0XHRcdGZyZWVfZXhwbG9kZShhcmdzLCBzaXplKTtcbiBcdFx0XHRzYy5zaXplID0gMDtcbkBAIC02OTEsNyArNzU2LDggQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9pZClcbiBcdFx0XCItcFxcdFxcdFxcdFNvcnQgYnkgcGlkLlxcblwiXG4gXHRcdFwiLVBcXHRcXHRcXHRTb3J0IGJ5IHRnaWQuXFxuXCJcbiBcdFx0XCItc1xcdFxcdFxcdFNvcnQgYnkgdGhlIHN0YWNrdHJhY2UuXFxuXCJcbi1cdFx0XCItdFxcdFxcdFxcdFNvcnQgYnkgbnVtYmVyIG9mIHRpbWVzIHJlY29yZCBpcyBzZWVuIChkZWZhdWx0KS5cXG5cXG5cIlxuK1x0XHRcIi10XFx0XFx0XFx0U29ydCBieSBudW1iZXIgb2YgdGltZXMgcmVjb3JkIGlzIHNlZW4gKGRlZmF1bHQpLlxcblwiXG4rXHRcdFwiLU1cXHRcXHRcXHRTb3J0IGJ5IG1vZHVsZSBuYW1lLlxcblxcblwiXG4gXHRcdFwiLS1waWQgXHUwMDNjcGlkbGlzdFx1MDAzZVxcdFxcdFNlbGVjdCBieSBwaWQuIFRoaXMgc2VsZWN0cyB0aGUgaW5mb3JtYXRpb25cIlxuIFx0XHRcIiBvZlxcblxcdFxcdFxcdGJsb2NrcyB3aG9zZSBwcm9jZXNzIElEIG51bWJlcnMgYXBwZWFyIGluIFx1MDAzY3BpZGxpc3RcdTAwM2UuXFxuXCJcbiBcdFx0XCItLXRnaWQgXHUwMDNjdGdpZGxpc3RcdTAwM2VcXHRTZWxlY3QgYnkgdGdpZC4gVGhpcyBzZWxlY3RzIHRoZSBpbmZvcm1hdGlvblwiXG5AQCAtNzAwLDExICs3NjYsMjEgQEAgc3RhdGljIHZvaWQgdXNhZ2Uodm9pZClcbiBcdFx0XCItLW5hbWUgXHUwMDNjY21kbGlzdFx1MDAzZVxcdFNlbGVjdCBieSBjb21tYW5kIG5hbWUuIFRoaXMgc2VsZWN0cyB0aGVcIlxuIFx0XHRcIiBpbmZvcm1hdGlvblxcblxcdFxcdFxcdG9mIGJsb2NrcyB3aG9zZSBjb21tYW5kIG5hbWUgYXBwZWFycyBpblwiXG4gXHRcdFwiIFx1MDAzY2NtZGxpc3RcdTAwM2UuXFxuXCJcbi1cdFx0XCItLWN1bGwgXHUwMDNjcnVsZXNcdTAwM2VcXHRcXHRDdWxsIGJ5IHVzZXItZGVmaW5lZCBydWxlcy4gXHUwMDNjcnVsZXNcdTAwM2UgaXMgYSBcIlxuLVx0XHRcInNpbmdsZVxcblxcdFxcdFxcdGFyZ3VtZW50IGluIHRoZSBmb3JtIG9mIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QgXCJcbi1cdFx0XCJ3aXRoIHNvbWVcXG5cXHRcXHRcXHRjb21tb24gZmllbGRzIHByZWRlZmluZWQgKHBpZCwgdGdpZCwgY29tbSwgXCJcbi1cdFx0XCJzdGFja3RyYWNlLCBhbGxvY2F0b3IpXFxuXCJcbitcdFx0XCItLW1vZHVsZSBcdTAwM2Ntb2RsaXN0XHUwMDNlXFx0U2VsZWN0IGJ5IG1vZHVsZSBuYW1lLiBUaGlzIHNlbGVjdHMgdGhlIGluZm9ybWF0aW9uXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRvZiBibG9ja3Mgd2hvc2UgbW9kdWxlIG5hbWUgYXBwZWFycyBpbiBcdTAwM2Ntb2RsaXN0XHUwMDNlLlxcblwiXG4rXHRcdFwiLS1jdWxsIFx1MDAzY3J1bGVzXHUwMDNlXFx0XFx0Q3VsbCBieSB1c2VyLWRlZmluZWQgcnVsZXMuIFx1MDAzY3J1bGVzXHUwMDNlIGlzIGEgc2luZ2xlXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRhcmd1bWVudCBpbiB0aGUgZm9ybSBvZiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IHdpdGggc29tZVxcblwiXG4rXHRcdFwiXFx0XFx0XFx0Y29tbW9uIGZpZWxkcyBwcmVkZWZpbmVkIChwaWQsIHRnaWQsIGNvbW0sIHN0YWNrdHJhY2UsIGFsbG9jYXRvciwgbW9kdWxlKVxcblwiXG4gXHRcdFwiLS1zb3J0IFx1MDAzY29yZGVyXHUwMDNlXFx0XFx0U3BlY2lmeSBzb3J0IG9yZGVyIGFzOiBbK3wtXWtleVssWyt8LV1rZXlbLC4uLl1dXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRBdmFpbGFibGUga2V5czpcXG5cIlxuK1x0XHRcIlxcdFxcdFxcdCAgcGlkKHApLCB0Z2lkKHRnKSwgbmFtZShuKSwgc3RhY2t0cmFjZShzdCksXFxuXCJcbitcdFx0XCJcXHRcXHRcXHQgIHR4dChUKSwgYWxsb2NfdHMoYXQpLCBhbGxvY2F0b3IoYXRvciksIG1vZHVsZShtb2QpXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRUaGUgXFxcIitcXFwiIGlzIG9wdGlvbmFsIHNpbmNlIGRlZmF1bHQgZGlyZWN0aW9uIGlzXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRpbmNyZWFzaW5nIG51bWVyaWNhbCBvciBsZXhpY29ncmFwaGljIG9yZGVyLlxcblwiXG4rXHRcdFwiXFx0XFx0XFx0TWl4ZWQgdXNlIG9mIGFiYnJldmlhdGVkIGFuZCBjb21wbGV0ZS1mb3JtIGlzIGFsbG93ZWQuXFxuXCJcbitcdFx0XCJcXHRcXHRcXHRFeGFtcGxlczpcXG5cIlxuK1x0XHRcIlxcdFxcdFxcdCAgLS1zb3J0PW4sK3BpZCwtdGdpZFxcblwiXG4rXHRcdFwiXFx0XFx0XFx0ICAtLXNvcnQ9bW9kLGF0XFxuXCJcbiBcdCk7XG4gfVxuIFxuQEAgLTcyMSwxMyArNzk3LDE0IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0eyBcIm5hbWVcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDMgfSxcbiBcdFx0eyBcImN1bGxcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDQgfSxcbiBcdFx0eyBcInNvcnRcIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsIDUgfSxcbitcdFx0eyBcIm1vZHVsZVwiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgNiB9LFxuIFx0XHR7IFwiaGVscFwiLCBub19hcmd1bWVudCwgTlVMTCwgJ2gnIH0sXG4gXHRcdHsgMCwgMCwgMCwgMH0sXG4gXHR9O1xuIFxuIFx0Y29tcGFyZV9mbGFnID0gQ09NUF9OT19GTEFHO1xuIFxuLVx0d2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCBcImFkbW5wc3RQaFwiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKVxuK1x0d2hpbGUgKChvcHQgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCBcImFkbW5wc3RQTWhcIiwgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSlcbiBcdFx0c3dpdGNoIChvcHQpIHtcbiBcdFx0Y2FzZSAnYSc6XG4gXHRcdFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfQUxMT0M7XG5AQCAtNzUzLDYgKzgzMCw5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0Y2FzZSAnbic6XG4gXHRcdFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfQ09NTTtcbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSAnTSc6XG4rXHRcdFx0Y29tcGFyZV9mbGFnIHw9IENPTVBfTU9EVUxFO1xuK1x0XHRcdGJyZWFrO1xuIFx0XHRjYXNlICdoJzpcbiBcdFx0XHR1c2FnZSgpO1xuIFx0XHRcdGV4aXQoMCk7XG5AQCAtNzkyLDYgKzg3MiwxMCBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpXG4gXHRcdFx0XHRleGl0KDEpO1xuIFx0XHRcdH1cbiBcdFx0XHRicmVhaztcbitcdFx0Y2FzZSA2OlxuK1x0XHRcdGZpbHRlciA9IGZpbHRlciB8IEZJTFRFUl9NT0RVTEU7XG4rXHRcdFx0ZmMubW9kdWxlcyA9IGV4cGxvZGUoJywnLCBvcHRhcmcsIFx1MDAyNmZjLm1vZHVsZXNfc2l6ZSk7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0dXNhZ2UoKTtcbiBcdFx0XHRleGl0KDEpO1xuQEAgLTgyMSw2ICs5MDUsMTAgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRzZXRfc2luZ2xlX2NtcChjb21wYXJlX3N0YWNrdHJhY2UsIFNPUlRfQVNDKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIENPTVBfTk9fRkxBRzpcbitcdFx0aWYgKHNjLnNpemUgXHUwMDNlIDApXG4rXHRcdFx0YnJlYWs7XG4rXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbnVtLCBTT1JUX0RFU0MpO1xuK1x0XHRicmVhaztcbiBcdGNhc2UgQ09NUF9OVU06XG4gXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbnVtLCBTT1JUX0RFU0MpO1xuIFx0XHRicmVhaztcbkBAIC04MzAsNiArOTE4LDkgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0Y2FzZSBDT01QX0NPTU06XG4gXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfY29tbSwgU09SVF9BU0MpO1xuIFx0XHRicmVhaztcbitcdGNhc2UgQ09NUF9NT0RVTEU6XG4rXHRcdHNldF9zaW5nbGVfY21wKGNvbXBhcmVfbW9kdWxlLCBTT1JUX0FTQyk7XG4rXHRcdGJyZWFrO1xuIFx0ZGVmYXVsdDpcbiBcdFx0dXNhZ2UoKTtcbiBcdFx0ZXhpdCgxKTtcbkBAIC04NTMsNiArOTQ0LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRnb3RvIG91dF9jb21tO1xuIFx0aWYgKCFjaGVja19yZWdjb21wKFx1MDAyNnRzX25zZWNfcGF0dGVybiwgXCJ0c1xcXFxzKihbMC05XSopXFxcXHMqbnNcIikpXG4gXHRcdGdvdG8gb3V0X3RzO1xuK1x0aWYgKCFjaGVja19yZWdjb21wKFx1MDAyNm1vZHVsZV9wYXR0ZXJuLCBcIlxcXFwrMHhbMC05YS1mXSsvMHhbMC05YS1mXStcXFxccypcXFxcWyhbYS16QS1aMC05Xy1dKylcXFxcXVwiKSlcbitcdFx0Z290byBvdXRfbW9kdWxlO1xuIFxuIFx0ZnN0YXQoZmlsZW5vKGZpbiksIFx1MDAyNnN0KTtcbiBcdG1heF9zaXplID0gc3Quc3Rfc2l6ZSAvIDEwMDsgLyogaGFjayAuLi4gKi9cbkBAIC05MTEsNiArMTAwNCw4IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndilcbiBcdFx0XHRcdGZwcmludGYoZm91dCwgXCIsIFRHSUQgJWRcIiwgbGlzdFtpXS50Z2lkKTtcbiBcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9DT01NIHx8IGZpbHRlciBcdTAwMjYgRklMVEVSX0NPTU0pXG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwiLCB0YXNrX2NvbW1fbmFtZTogJXNcIiwgbGlzdFtpXS5jb21tKTtcbitcdFx0XHRpZiAoY3VsbCBcdTAwMjYgQ1VMTF9NT0RVTEUgfHwgZmlsdGVyIFx1MDAyNiBGSUxURVJfTU9EVUxFKVxuK1x0XHRcdFx0ZnByaW50Zihmb3V0LCBcIiwgbW9kdWxlOiAlc1wiLCBsaXN0W2ldLm1vZHVsZSk7XG4gXHRcdFx0aWYgKGN1bGwgXHUwMDI2IENVTExfQUxMT0NBVE9SKSB7XG4gXHRcdFx0XHRmcHJpbnRmKGZvdXQsIFwiLCBcIik7XG4gXHRcdFx0XHRwcmludF9hbGxvY2F0b3IoZm91dCwgbGlzdFtpXS5hbGxvY2F0b3IpO1xuQEAgLTkzMSw2ICsxMDI2LDggQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KVxuIFx0XHRcdGZyZWVfYmxvY2tfbGlzdChcdTAwMjZsaXN0W2ldKTtcbiBcdFx0ZnJlZShsaXN0KTtcbiBcdH1cbitvdXRfbW9kdWxlOlxuK1x0cmVnZnJlZShcdTAwMjZtb2R1bGVfcGF0dGVybik7XG4gb3V0X3RzOlxuIFx0cmVnZnJlZShcdTAwMjZ0c19uc2VjX3BhdHRlcm4pO1xuIG91dF9jb21tOlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDY6NTI6NDYuNjI3MTkzNzE0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODY3NzA1MjAzNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipQYXRjaCBFdmFsdWF0aW9uOiBOb3QgV29ydGggRnV6emluZyoqXG5cbk9rYXksIGxldCdzIGFzc2VzcyB0aGlzIHBhdGNoIGZvciBmdXp6aW5nIHBvdGVudGlhbC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBsaWtlbHkgKm5vdCogd29ydGggZnV6emluZywgYnV0IGxldCdzIGJlIHRob3JvdWdoLiBUaGUgcGF0Y2ggdG91Y2hlcyBgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdGAgYW5kIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AuIFJpZ2h0IGF3YXksIHRoZSBgdG9vbHMvYCBkaXJlY3RvcnkgaXMgYSByZWQgZmxhZyBpbiB0ZXJtcyBvZiBzeXprYWxsZXIgZnV6emluZyB0YXJnZXRzOyB0b29scyBpbiB0aGVyZSBhcmUgZ2VuZXJhbGx5IHVzZXItc3BhY2UgdXRpbGl0aWVzIGFuZCBub3QgcGFydCBvZiB0aGUgY29yZSBrZXJuZWwgZXhlY3V0aW9uIHBhdGggd2UncmUgdGFyZ2V0aW5nLlxuXG5XYWl0LCBqdXN0IGEgc2FuaXR5IGNoZWNrLiBMZXQncyBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGVyZSBhcmVuJ3QgYW55IHNuZWFreSBrZXJuZWwgY2hhbmdlcyBidXJpZWQgaW4gdGhlcmUuIERvdWJsZS1jaGVja2luZy4uLiBZZXAsIHRoZSBkaWZmIG9ubHkgc2hvd3MgdGhvc2UgdHdvIGZpbGVzOiBgRG9jdW1lbnRhdGlvbi9tbS9wYWdlX293bmVyLnJzdGAgYW5kIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AuIE9rYXksIHNvIHdlJ3JlIHNhZmUuIFVzZXItc3BhY2UgdG9vbHMgYXJlIGV4cGxpY2l0bHkgKm91dHNpZGUqIHRoZSBzY29wZSBvZiB3aGF0IHdlIHdhbnQgdG8gZnV6eiB3aXRoIHN5emthbGxlci5cblxuTGV0J3MgY29uZmlybSB0aG9zZSBmaWxlIGxvY2F0aW9ucyBhZ2FpbjpcblxuKiAgIGBEb2N1bWVudGF0aW9uL21tL3BhZ2Vfb3duZXIucnN0YCAtIERvY3VtZW50YXRpb24sIG5vdCBjb2RlLlxuKiAgIGB0b29scy9tbS9wYWdlX293bmVyX3NvcnQuY2AgLSBVc2VyLXNwYWNlIHRvb2wuXG5cblNvLCBzaW5jZSBib3RoIG1vZGlmaWVkIGZpbGVzIGFyZSBkZWZpbml0ZWx5ICpub3QqIGtlcm5lbCBzb3VyY2UsIHdlIGNhbiBzYWZlbHkgbWFyayB0aGlzIGFzIGBXb3J0aEZ1enppbmc9ZmFsc2VgLiBUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBpcyBjb25maW5lZCB0byBhIHVzZXItc3BhY2UgdXRpbGl0eSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXNuJ3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCBpdHNlbGYsIHNvIHRoZXJlJ3Mgbm90aGluZyBmb3Igc3l6a2FsbGVyIHRvIHRhcmdldC5cblxuTm93LCBsZXQncyBwdXQgaXQgYWxsIHRvZ2V0aGVyIGNvbmNpc2VseS5cblxuYFdvcnRoRnV6emluZzogZmFsc2VgXG5gRm9jdXNTeW1ib2xzOiBbXWBcbmBFbmFibGVDb25maWdzOiBbXWBcbmBSZWFzb25pbmc6IFwiVGhlIHBhdGNoIG9ubHkgbW9kaWZpZXMgYSB1c2VyLXNwYWNlIHRvb2wgKHRvb2xzL21tL3BhZ2Vfb3duZXJfc29ydC5jKSBhbmQgaXRzIGRvY3VtZW50YXRpb24uIEl0IGRvZXMgbm90IG1ha2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIGl0c2VsZi5cImBcblxuXG4iLCJJbnB1dFRva2VucyI6Njg3OSwiT3V0cHV0VG9rZW5zIjo2OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAzVDA2OjUyOjU1LjMwNDI0ODY1OFoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzMzMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXItc3BhY2UgdG9vbCAodG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMpIGFuZCBpdHMgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSBtb2RpZmllcyBhIHVzZXItc3BhY2UgdG9vbCAodG9vbHMvbW0vcGFnZV9vd25lcl9zb3J0LmMpIGFuZCBpdHMgZG9jdW1lbnRhdGlvbi4gSXQgZG9lcyBub3QgbWFrZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgaXRzZWxmLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowchl44[1] Phase: Running StartedAt: 2026-08-03 06:53:06 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowchl44[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 06:53:06 +0000 UTC FinishedAt: 2026-08-03 06:53:11 +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,}