Name: series-workflowrmvcp Phase: Failed StartedAt: 2026-08-03 01:11:36 +0000 UTC FinishedAt: 2026-08-03 01:32:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmvcp[0] Phase: Succeeded StartedAt: 2026-08-03 01:11:36 +0000 UTC FinishedAt: 2026-08-03 01:32:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmvcp[0].run-triage Phase: Succeeded StartedAt: 2026-08-03 01:11:36 +0000 UTC FinishedAt: 2026-08-03 01:32:20 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDAxOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVmYWN0b3JzIHRoZSByZXR1cm4gdHlwZSBvZiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKSBhbmQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKCkgZnJvbSBpbnQgdG8gdm9pZC4gTm9uZSBvZiB0aGUgY2FsbGVycyB3ZXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUsIHNvIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMvcmVmYWN0b3JpbmcgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAxOjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWZiM2YzMTc0NThlODdhNjk3Y2JhNGQ2NzIxMDRhN2YzYzMyYjFhYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDE6MzE6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbmluZGV4IDlkMWZhYzZlODA4MjkuLjYzOGI4YWE1MjE0ZDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5AQCAtMjkxOSw4ICYjNDM7MjkxOSw4IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxIHtcbiAgKlx0YXV0b25vbW91c2x5IG1hbmFnZXMgdGhlIFBTIHN0YXR1cyBvZiBjb25uZWN0ZWQgc3RhdGlvbnMuIFdoZW5cbiAgKlx0dGhpcyBmbGFnIGlzIHNldCBtYWM4MDIxMSB3aWxsIG5vdCB0cmlnZ2VyIFBTIG1vZGUgZm9yIGNvbm5lY3RlZFxuICAqXHRzdGF0aW9ucyBiYXNlZCBvbiB0aGUgUE0gYml0IG9mIGluY29taW5nIGZyYW1lcy5cbi0gKlx0VXNlIGllZWU4MDIxMV9zdGFydF9wcygpL2llZWU4MDIxX2VuZF9wcygpIHRvIG1hbnVhbGx5IGNvbmZpZ3VyZVxuLSAqXHR0aGUgUFMgbW9kZSBvZiBjb25uZWN0ZWQgc3RhdGlvbnMuXG4mIzQzOyAqXHRVc2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgdG8gbWFudWFsbHkgdG9nZ2xlIHRoZSBQUyBtb2RlXG4mIzQzOyAqXHRvZiBjb25uZWN0ZWQgc3RhdGlvbnMuXG4gICpcbiAgKiBASUVFRTgwMjExX0hXX1RYX0FNUERVX1NFVFVQX0lOX0hXOiBUaGUgZGV2aWNlIGhhbmRsZXMgVFggQS1NUERVIHNlc3Npb25cbiAgKlx0c2V0dXAgc3RyaWN0bHkgaW4gSFcuIG1hYzgwMjExIHNob3VsZCBub3QgYXR0ZW1wdCB0byBkbyB0aGlzIGluXG5AQCAtNTQ5OSwxMCAmIzQzOzU0OTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3J4X25pKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuICAqXG4gICogQHN0YTogY3VycmVudGx5IGNvbm5lY3RlZCBzdGFcbiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFNcbi0gKlxuLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLiAtRUlOVkFMIHdoZW4gdGhlIHJlcXVlc3RlZCBQUyBtb2RlIGlzIGFscmVhZHkgc2V0LlxuICAqL1xuLWludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgYm9vbCBzdGFydCk7XG4mIzQzO3ZvaWQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpO1xuIFxuIC8qKlxuICAqIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaSAtIFBTIHRyYW5zaXRpb24gZm9yIGNvbm5lY3RlZCBzdGFcbkBAIC01NTE0LDE5ICYjNDM7NTUxMiwxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpO1xuICAqXG4gICogQHN0YTogY3VycmVudGx5IGNvbm5lY3RlZCBzdGFcbiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFNcbi0gKlxuLSAqIFJldHVybjogTGlrZSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKS5cbiAgKi9cbi1zdGF0aWMgaW5saW5lIGludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuIFx0XHRcdFx0XHRcdCAgYm9vbCBzdGFydClcbiB7XG4tXHRpbnQgcmV0O1xuLVxuIFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuLVx0cmV0ID0gaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgc3RhcnQpO1xuJiM0MztcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHN0YXJ0KTtcbiBcdGxvY2FsX2JoX2VuYWJsZSgpO1xuLVxuLVx0cmV0dXJuIHJldDtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3J4LmMgYi9uZXQvbWFjODAyMTEvcnguY1xuaW5kZXggNWUyNmJlOGUyN2Q4Zi4uNDBlZDAzYTc3NWJhMyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvcnguY1xuQEAgLTE3NDQsNyAmIzQzOzE3NDQsNyBAQCBzdGF0aWMgdm9pZCBzdGFfcHNfZW5kKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuIFx0aWVlZTgwMjExX3N0YV9wc19kZWxpdmVyX3dha2V1cChzdGEpO1xuIH1cbiBcbi1pbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXG4mIzQzO3ZvaWQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXG4ge1xuIFx0c3RydWN0IHN0YV9pbmZvICpzdGEgPSBjb250YWluZXJfb2YocHVic3RhLCBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7XG4gXHRib29sIGluX3BzO1xuQEAgLTE3NTMsMTUgJiM0MzsxNzUzLDEzIEBAIGludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcbiBcbiBcdC8qIERvbiYjMzk7dCBsZXQgdGhlIHNhbWUgUFMgc3RhdGUgYmUgc2V0IHR3aWNlICovXG4gXHRpbl9wcyA9IHRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9QU19TVEEpO1xuLVx0aWYgKChzdGFydCBcdTAwMjZcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXHUwMDI2XHUwMDI2ICFpbl9wcykpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdGlmIChzdGFydCA9PSBpbl9wcylcbiYjNDM7XHRcdHJldHVybjtcbiBcbiBcdGlmIChzdGFydClcbiBcdFx0c3RhX3BzX3N0YXJ0KHN0YSk7XG4gXHRlbHNlXG4gXHRcdHN0YV9wc19lbmQoc3RhKTtcbi1cbi1cdHJldHVybiAwO1xuIH1cbiBFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbik7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDE6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVmYWN0b3JzIHRoZSByZXR1cm4gdHlwZSBvZiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKSBhbmQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKCkgZnJvbSBpbnQgdG8gdm9pZC4gTm9uZSBvZiB0aGUgY2FsbGVycyB3ZXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUsIHNvIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMvcmVmYWN0b3JpbmcgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWZiM2YzMTc0NThlODdhNjk3Y2JhNGQ2NzIxMDRhN2YzYzMyYjFhYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDE6MzE6NDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAppbmRleCA5ZDFmYWM2ZTgwODI5Li42MzhiOGFhNTIxNGQ3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKQEAgLTI5MTksOCAmIzQzOzI5MTksOCBAQCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSB7CiAgKglhdXRvbm9tb3VzbHkgbWFuYWdlcyB0aGUgUFMgc3RhdHVzIG9mIGNvbm5lY3RlZCBzdGF0aW9ucy4gV2hlbgogICoJdGhpcyBmbGFnIGlzIHNldCBtYWM4MDIxMSB3aWxsIG5vdCB0cmlnZ2VyIFBTIG1vZGUgZm9yIGNvbm5lY3RlZAogICoJc3RhdGlvbnMgYmFzZWQgb24gdGhlIFBNIGJpdCBvZiBpbmNvbWluZyBmcmFtZXMuCi0gKglVc2UgaWVlZTgwMjExX3N0YXJ0X3BzKCkvaWVlZTgwMjFfZW5kX3BzKCkgdG8gbWFudWFsbHkgY29uZmlndXJlCi0gKgl0aGUgUFMgbW9kZSBvZiBjb25uZWN0ZWQgc3RhdGlvbnMuCiYjNDM7ICoJVXNlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIHRvIG1hbnVhbGx5IHRvZ2dsZSB0aGUgUFMgbW9kZQomIzQzOyAqCW9mIGNvbm5lY3RlZCBzdGF0aW9ucy4KICAqCiAgKiBASUVFRTgwMjExX0hXX1RYX0FNUERVX1NFVFVQX0lOX0hXOiBUaGUgZGV2aWNlIGhhbmRsZXMgVFggQS1NUERVIHNlc3Npb24KICAqCXNldHVwIHN0cmljdGx5IGluIEhXLiBtYWM4MDIxMSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZG8gdGhpcyBpbgpAQCAtNTQ5OSwxMCAmIzQzOzU0OTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3J4X25pKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogICoKICAqIEBzdGE6IGN1cnJlbnRseSBjb25uZWN0ZWQgc3RhCiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFMKLSAqCi0gKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gLUVJTlZBTCB3aGVuIHRoZSByZXF1ZXN0ZWQgUFMgbW9kZSBpcyBhbHJlYWR5IHNldC4KICAqLwotaW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTsKJiM0Mzt2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTsKIAogLyoqCiAgKiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkgLSBQUyB0cmFuc2l0aW9uIGZvciBjb25uZWN0ZWQgc3RhCkBAIC01NTE0LDE5ICYjNDM7NTUxMiwxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpOwogICoKICAqIEBzdGE6IGN1cnJlbnRseSBjb25uZWN0ZWQgc3RhCiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFMKLSAqCi0gKiBSZXR1cm46IExpa2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkuCiAgKi8KLXN0YXRpYyBpbmxpbmUgaW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwKIAkJCQkJCSAgYm9vbCBzdGFydCkKIHsKLQlpbnQgcmV0OwotCiAJbG9jYWxfYmhfZGlzYWJsZSgpOwotCXJldCA9IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHN0YXJ0KTsKJiM0MzsJaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgc3RhcnQpOwogCWxvY2FsX2JoX2VuYWJsZSgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvcnguYyBiL25ldC9tYWM4MDIxMS9yeC5jCmluZGV4IDVlMjZiZThlMjdkOGYuLjQwZWQwM2E3NzViYTMgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9yeC5jCkBAIC0xNzQ0LDcgJiM0MzsxNzQ0LDcgQEAgc3RhdGljIHZvaWQgc3RhX3BzX2VuZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSkKIAlpZWVlODAyMTFfc3RhX3BzX2RlbGl2ZXJfd2FrZXVwKHN0YSk7CiB9CiAKLWludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydCkKJiM0Mzt2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCBib29sIHN0YXJ0KQogewogCXN0cnVjdCBzdGFfaW5mbyAqc3RhID0gY29udGFpbmVyX29mKHB1YnN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpOwogCWJvb2wgaW5fcHM7CkBAIC0xNzUzLDE1ICYjNDM7MTc1MywxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpCiAKIAkvKiBEb24mIzM5O3QgbGV0IHRoZSBzYW1lIFBTIHN0YXRlIGJlIHNldCB0d2ljZSAqLwogCWluX3BzID0gdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1BTX1NUQSk7Ci0JaWYgKChzdGFydCAmYW1wOyZhbXA7IGluX3BzKSB8fCAoIXN0YXJ0ICZhbXA7JmFtcDsgIWluX3BzKSkKLQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CWlmIChzdGFydCA9PSBpbl9wcykKJiM0MzsJCXJldHVybjsKIAogCWlmIChzdGFydCkKIAkJc3RhX3BzX3N0YXJ0KHN0YSk7CiAJZWxzZQogCQlzdGFfcHNfZW5kKHN0YSk7Ci0KLQlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pbm9yIG1hYzgwMjExIFJlZmFjdG9yaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25gIGFuZCBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pYCBpbiBgbmV0L21hYzgwMjExYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBqdXN0IHNoaWZ0aW5nIHRoZSByZXR1cm4gdHlwZSB0byBgdm9pZGAgYW5kIHJlbW92aW5nIHRoZSByZXR1cm4gc3RhdGVtZW50IGZyb20gdGhlc2UgZnVuY3Rpb25zLiBJdCYjMzk7cyBmdW5jdGlvbmFsbHkgYSB2ZXJ5IHNtYWxsIGNoYW5nZSwgYmFzaWNhbGx5IHJlbW92aW5nIGEgcmV0dXJuIHZhbHVlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMuLi4gd2VsbCwgaXQmIzM5O3MganVzdCBhIHJldHVybiB2YWx1ZSwgbm90IGEgc2lnbmlmaWNhbnQgYmVoYXZpb3JhbCBjaGFuZ2UsIHJpZ2h0PwoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgbG9naWMuIEJlZm9yZSB0aGUgcGF0Y2gsIHRoZXJlIHdhcyBhIGNoZWNrOgoKYGBgYwoJaWYgKChzdGFydCAmYW1wOyZhbXA7IGluX3BzKSB8fCAoIXN0YXJ0ICZhbXA7JmFtcDsgIWluX3BzKSkKCQlyZXR1cm4gLUVJTlZBTDsKYGBgCgpBbmQgbm93IGl0JiMzOTtzOgoKYGBgYwoJaWYgKHN0YXJ0ID09IGluX3BzKQoJCXJldHVybjsKYGBgCgpSaWdodCwgaXQmIzM5O3MgZXF1aXZhbGVudC4gYChzdGFydCAmYW1wOyZhbXA7IGluX3BzKSB8fCAoIXN0YXJ0ICZhbXA7JmFtcDsgIWluX3BzKWAgaXMgbG9naWNhbGx5IHRoZSBzYW1lIGFzIGBzdGFydCA9PSBpbl9wc2AuIFRoZSBiZWhhdmlvciBpcyBleGFjdGx5IHRoZSBzYW1lLCBidXQgaW5zdGVhZCBvZiByZXR1cm5pbmcgYC1FSU5WQUxgIGZvciB0aGF0IGNhc2UsIHdlIGFyZSBub3cganVzdCByZXR1cm5pbmcgYHZvaWRgLiBTbyB3ZSBhcmUgcmVtb3ZpbmcgdGhlIHJldHVybiB2YWx1ZSwgbm90IGNoYW5naW5nIHRoZSBjb250cm9sIGZsb3cgb2YgdGhlIGZ1bmN0aW9uLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIGEgcHJldHR5IG1pbm9yIHJlZmFjdG9yaW5nIGluIG1hYzgwMjExLCB3aGljaCB1c3VhbGx5IHRyYW5zbGF0ZXMgdG8gJiMzNDtwcm9iYWJseSBub3QmIzM0Oy4gQnV0LCB5b3UgbmV2ZXIga25vdywgcmlnaHQ/IE15IG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYW55IGNhbGxlcnMgb2YgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbmAgb3IgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaWAgd2VyZSBhY3R1YWxseSAqdXNpbmcqIHRoZSByZXR1cm4gdmFsdWUuIERpZCB0aGUgcGF0Y2ggaXRzZWxmIHRvdWNoIGFueSBjYWxsZXJzPyBJdCBzZWVtcyBub3QuIFRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbi4gVGhhdCBtZWFucyBlaXRoZXIgbm8gY2FsbGVycyBjYXJlIGFib3V0IHRoZSByZXR1cm4gdmFsdWUgKGFuZCB3ZSYjMzk7cmUgZ29vZCksIG9yIGFub3RoZXIgcmVsYXRlZCBwYXRjaCBtdXN0IGhhdmUgbW9kaWZpZWQgY2FsbGVycy4KClNvLCBsZXQmIzM5O3MgZ28gY2hlY2sgdGhlIGNhbGxlcnMganVzdCB0byBiZSBzdXJlLiBJdCYjMzk7cyB1bmxpa2VseSwgYnV0IG5vdCBpbXBvc3NpYmxlLCB0aGF0IHNvbWUgb3RoZXIgcGF0Y2ggbWFkZSB0aGUgcmV0dXJuIHZhbHVlIGltcG9ydGFudCBhbmQgbm93IHdlJiMzOTt2ZSBicm9rZW4gc29tZXRoaW5nLiBXZSYjMzk7cmUgdGFsa2luZyBtYWM4MDIxMSwgc28gaXQmIzM5O3MgcHJvYmFibHkgYmV0dGVyIHRvIGRvdWJsZSBjaGVjayB0aGUgY2FsbGVyLCBnaXZlbiBob3cgaW50cmljYXRlIHRoZXNlIGZ1bmN0aW9ucyBjYW4gZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvODAyMTEvbWFjODAyMTEtYWR2YW5jZWQucnN0PTc1PXN1cHBvcnQgZm9yIHBvd2Vyc2F2aW5nIGNsaWVudHNcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvODAyMTEvbWFjODAyMTEtYWR2YW5jZWQucnN0LTg2LVx0aWVlZTgwMjExX2ZyYW1lX3JlbGVhc2VfdHlwZVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdDo4NzpcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvblxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdDo4ODpcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdC04OS1cdGllZWU4MDIxMV9zdGFfc2V0X2J1ZmZlcmVkXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYz0zMzE2PXZvaWQgaXdsX212bV9zdGFfcG1fbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0zMzQ2LVx0XHRcdHN0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjMzNDc6XHRcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHNsZWVwaW5nKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtMzM0OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTQ2Mz1tdDc2X2NoZWNrX3N0YShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTUyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTI3Olx0aWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1MjgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NjAyOT1ydHc4OV9tYWNfYzJoX3B3cl9pbnRfbm90aWZ5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTYwNTQtXHRzdGEgPSBydHdzdGFfdG9fc3RhKHJ0d3N0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjYwNTU6XHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTYwNTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3BzLmM9MTEzPXZvaWQgd2wxMnh4X3BzX2xpbmtfc3RhcnQoc3RydWN0IHdsMTI3MSAqd2wsIHN0cnVjdCB3bDEyeHhfdmlmICp3bHZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvcHMuYy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvcHMuYzoxMzk6XHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RhLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jLTE0MC1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jPTE0OT12b2lkIHdsMTJ4eF9wc19saW5rX2VuZChzdHJ1Y3Qgd2wxMjcxICp3bCwgc3RydWN0IHdsMTJ4eF92aWYgKndsdmlmLCB1OCBobGlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jLTE2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jOjE2OTpcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdGEsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jLTE3MC1lbmQ6XG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0yODI1PXN0cnVjdCBpZWVlODAyMTFfdHhxIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTI5MjEtICpcdHN0YXRpb25zIGJhc2VkIG9uIHRoZSBQTSBiaXQgb2YgaW5jb21pbmcgZnJhbWVzLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDoyOTIyOiAqXHRVc2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgdG8gbWFudWFsbHkgdG9nZ2xlIHRoZSBQUyBtb2RlXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTI5MjMtICpcdG9mIGNvbm5lY3RlZCBzdGF0aW9ucy5cbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTM0NjA9dm9pZCBpZWVlODAyMTFfcHVyZ2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNzM0LSAqIHBvd2Vyc2F2aW5nIGNsaWVudHMgYW5kIHdpbGwgaWdub3JlIHRoZSBQTSBiaXQgaW4gaW5jb21pbmcgZnJhbWVzLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDozNzM1OiAqIERyaXZlcnMgdGhlbiB1c2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgdG8gaW5mb3JtIG1hYzgwMjExIG9mXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTM3MzYtICogc3RhdGlvbnMmIzM5OyBwb3dlcnNhdmUgdHJhbnNpdGlvbnMuIEluIHRoaXMgbW9kZSwgbWFjODAyMTEgYWxzbyBkb2VzbiYjMzk7dFxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9NTQ4MD1zdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3J4X25pKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTQ4OC0vKipcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NTQ4OTogKiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24gLSBQUyB0cmFuc2l0aW9uIGZvciBjb25uZWN0ZWQgc3RhXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU0OTAtICpcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MDItICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MDM6dm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgYm9vbCBzdGFydCk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MDQtXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MDUtLyoqXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MDY6ICogaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pIC0gUFMgdHJhbnNpdGlvbiBmb3IgY29ubmVjdGVkIHN0YVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTA3LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbiBwcm9jZXNzIGNvbnRleHQpXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MDgtICpcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NTUwOTogKiBMaWtlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGJ1dCBjYW4gYmUgY2FsbGVkIGluIHByb2Nlc3MgY29udGV4dFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTEwLSAqIChpbnRlcm5hbGx5IGRpc2FibGVzIGJvdHRvbSBoYWx2ZXMpLiBDb25jdXJyZW50IGNhbGwgcmVzdHJpY3Rpb24gc3RpbGxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MTUtICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MTY6c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTE3LVx0XHRcdFx0XHRcdCAgYm9vbCBzdGFydClcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MTktXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MjA6XHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBzdGFydCk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MjEtXHRsb2NhbF9iaF9lbmFibGUoKTtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MzAtICogY29ubmVjdGVkIHN0YXRpb24gd2FzIHJlY2VpdmVkLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo1NTMxOiAqIFRoaXMgbXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKClcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUzMi0gKiBhbmQgcG9zc2libHkgaWVlZTgwMjExX3N0YV91YXBzZF90cmlnZ2VyKCk7IGNhbGxzIHRvIGFsbCB0aHJlZSBtdXN0XG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD01NTM1PXZvaWQgaWVlZTgwMjExX3N0YV9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7XG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTQ0LSAqIGZyb20gYSBjb25uZWN0ZWQgc3RhdGlvbiB3YXMgcmVjZWl2ZWQuXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1NDU6ICogVGhpcyBtdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTQ2LSAqIGFuZCBwb3NzaWJseSBpZWVlODAyMTFfc3RhX3BzcG9sbCgpOyBjYWxscyB0byBhbGwgdGhyZWUgbXVzdCBiZVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE3MjQ9c3RhdGljIHZvaWQgc3RhX3BzX2VuZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xNzQ2LVxubmV0L21hYzgwMjExL3J4LmM6MTc0Nzp2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCBib29sIHN0YXJ0KVxubmV0L21hYzgwMjExL3J4LmMtMTc0OC17XG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTc2My19XG5uZXQvbWFjODAyMTEvcnguYzoxNzY0OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NjUtXG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDcyMD12b2lkIGllZWU4MDIxMV9jaGVja19mYXN0X3J4KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODItXHRcdC8qIHBhcmFsbGVsLXJ4IHJlcXVpcmVzIHRoaXMsIGF0IGxlYXN0IHdpdGggY2FsbHMgdG9cbm5ldC9tYWM4MDIxMS9yeC5jOjQ3ODM6XHRcdCAqIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpXG5uZXQvbWFjODAyMTEvcnguYy00Nzg0LVx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDM1CgkJCQkJCQlvdXRwdXQ6IDEwMQoJCQkJCQkJdGhvdWdodHM6IDY3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNaW5vciBDb2RlIFJlZmFjdG9yaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYSBub24tZXZlbnQuIFRoZSBjb2RlIGNoYW5nZXMgaW52b2x2ZSB0aGVzZSBmdW5jdGlvbnM6IGBpd2xfbXZtX3N0YV9wbV9ub3RpZmAsIGBtdDc2X2NoZWNrX3N0YWAsIGBydHc4OV9tYWNfYzJoX3B3cl9pbnRfbm90aWZ5YCwgYHdsMTJ4eF9wc19saW5rX3N0YXJ0YCwgYW5kIGB3bDEyeHhfcHNfbGlua19lbmRgLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFsdGVycyBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uYCBhbmQgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaWAsIGNoYW5naW5nIHRoZWlyIHJldHVybiB0eXBlIGZyb20gYGludGAgdG8gYHZvaWRgIGFuZCByZW1vdmluZyB0aGUgYC1FSU5WQUxgIHJldHVybiB3aGVuIHRoZSBwb3dlciBzdGF0ZSBkb2VzbiYjMzk7dCBjaGFuZ2UuCgpNeSBmaXJzdCB0aG91Z2h0IHdhcywgJiMzNDtXYWl0LCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8mIzM0OyBUaGUgcGF0Y2ggc2VlbXMgaW5jcmVkaWJseSBtaW5vciwgcHVyZWx5IHJlZmFjdG9yaW5nLCBhbmQgZnVuY3Rpb25hbGx5IGluZXJ0LiBUaGUgb2xkIGNvZGUgcmV0dXJuZWQgYW4gZXJyb3IgY29kZSAoYC1FSU5WQUxgKSBpZiB0aGUgc3RhdGUgZGlkbiYjMzk7dCBjaGFuZ2UsIGJ1dCAqbm8qIGNhbGxlciB3YXMgYWN0dWFsbHkgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSBhbnl3YXkhCgpUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgd2VudCBiYWNrIGFuZCByZS1leGFtaW5lZCB0aGUgY29kZS4gVGhlIGBncmVwYCBvdXRwdXQgY29uZmlybXM6IG5vbmUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHV0aWxpemUgdGhlIHJldHVybiB2YWx1ZSBvZiBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uYCBvciBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pYC4gU28sIHRoZSBlbnRpcmUgcGF0Y2ggYm9pbHMgZG93biB0byBhIGNvc21ldGljIGNoYW5nZSBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGUuIE5vIGJlaGF2aW9yIGhhcyBjaGFuZ2VkLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBjb25jbHVzaW9uIGlzIGNsZWFyOiBXb3J0aEZ1enppbmc9ZmFsc2UuIFRoaXMgaXMgYSBzaW1wbGUgY2xlYW51cCwgY29tcGxldGVseSBzYWZlIGZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAxOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZWZhY3RvcnMgdGhlIHJldHVybiB0eXBlIG9mIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGFuZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoKSBmcm9tIGludCB0byB2b2lkLiBOb25lIG9mIHRoZSBjYWxsZXJzIHdlcmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSwgc28gdGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYy9yZWZhY3RvcmluZyBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVmYWN0b3JzIHRoZSByZXR1cm4gdHlwZSBvZiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKSBhbmQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKCkgZnJvbSBpbnQgdG8gdm9pZC4gTm9uZSBvZiB0aGUgY2FsbGVycyB3ZXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUsIHNvIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMvcmVmYWN0b3JpbmcgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDE6MzE6NTAuOTI2Mjk3NTc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwNjcyMzE2NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVmYWN0b3JzIHRoZSByZXR1cm4gdHlwZSBvZiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKSBhbmQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKCkgZnJvbSBpbnQgdG8gdm9pZC4gTm9uZSBvZiB0aGUgY2FsbGVycyB3ZXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUsIHNvIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMvcmVmYWN0b3JpbmcgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMTozMTo1MC45MjYzMDgwMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDQzNDcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVmYjNmMzE3NDU4ZTg3YTY5N2NiYTRkNjcyMTA0YTdmM2MzMmIxYWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwMTozMTo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxcbmluZGV4IDlkMWZhYzZlODA4MjkuLjYzOGI4YWE1MjE0ZDcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcXG5AQCAtMjkxOSw4ICsyOTE5LDggQEAgc3RydWN0IGllZWU4MDIxMV90eHEge1xcbiAgKlxcdGF1dG9ub21vdXNseSBtYW5hZ2VzIHRoZSBQUyBzdGF0dXMgb2YgY29ubmVjdGVkIHN0YXRpb25zLiBXaGVuXFxuICAqXFx0dGhpcyBmbGFnIGlzIHNldCBtYWM4MDIxMSB3aWxsIG5vdCB0cmlnZ2VyIFBTIG1vZGUgZm9yIGNvbm5lY3RlZFxcbiAgKlxcdHN0YXRpb25zIGJhc2VkIG9uIHRoZSBQTSBiaXQgb2YgaW5jb21pbmcgZnJhbWVzLlxcbi0gKlxcdFVzZSBpZWVlODAyMTFfc3RhcnRfcHMoKS9pZWVlODAyMV9lbmRfcHMoKSB0byBtYW51YWxseSBjb25maWd1cmVcXG4tICpcXHR0aGUgUFMgbW9kZSBvZiBjb25uZWN0ZWQgc3RhdGlvbnMuXFxuKyAqXFx0VXNlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIHRvIG1hbnVhbGx5IHRvZ2dsZSB0aGUgUFMgbW9kZVxcbisgKlxcdG9mIGNvbm5lY3RlZCBzdGF0aW9ucy5cXG4gICpcXG4gICogQElFRUU4MDIxMV9IV19UWF9BTVBEVV9TRVRVUF9JTl9IVzogVGhlIGRldmljZSBoYW5kbGVzIFRYIEEtTVBEVSBzZXNzaW9uXFxuICAqXFx0c2V0dXAgc3RyaWN0bHkgaW4gSFcuIG1hYzgwMjExIHNob3VsZCBub3QgYXR0ZW1wdCB0byBkbyB0aGlzIGluXFxuQEAgLTU0OTksMTAgKzU0OTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3J4X25pKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiAgKlxcbiAgKiBAc3RhOiBjdXJyZW50bHkgY29ubmVjdGVkIHN0YVxcbiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFNcXG4tICpcXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIC1FSU5WQUwgd2hlbiB0aGUgcmVxdWVzdGVkIFBTIG1vZGUgaXMgYWxyZWFkeSBzZXQuXFxuICAqL1xcbi1pbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpO1xcbit2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTtcXG4gXFxuIC8qKlxcbiAgKiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkgLSBQUyB0cmFuc2l0aW9uIGZvciBjb25uZWN0ZWQgc3RhXFxuQEAgLTU1MTQsMTkgKzU1MTIsMTMgQEAgaW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTtcXG4gICpcXG4gICogQHN0YTogY3VycmVudGx5IGNvbm5lY3RlZCBzdGFcXG4gICogQHN0YXJ0OiBzdGFydCBvciBzdG9wIFBTXFxuLSAqXFxuLSAqIFJldHVybjogTGlrZSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKS5cXG4gICovXFxuLXN0YXRpYyBpbmxpbmUgaW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbitzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgYm9vbCBzdGFydClcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4gXFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbi1cXHRyZXQgPSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBzdGFydCk7XFxuK1xcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHN0YXJ0KTtcXG4gXFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3J4LmMgYi9uZXQvbWFjODAyMTEvcnguY1xcbmluZGV4IDVlMjZiZThlMjdkOGYuLjQwZWQwM2E3NzViYTMgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL3J4LmNcXG4rKysgYi9uZXQvbWFjODAyMTEvcnguY1xcbkBAIC0xNzQ0LDcgKzE3NDQsNyBAQCBzdGF0aWMgdm9pZCBzdGFfcHNfZW5kKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbiBcXHRpZWVlODAyMTFfc3RhX3BzX2RlbGl2ZXJfd2FrZXVwKHN0YSk7XFxuIH1cXG4gXFxuLWludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcXG4rdm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcXG4ge1xcbiBcXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IGNvbnRhaW5lcl9vZihwdWJzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcXG4gXFx0Ym9vbCBpbl9wcztcXG5AQCAtMTc1MywxNSArMTc1MywxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXFxuIFxcbiBcXHQvKiBEb24ndCBsZXQgdGhlIHNhbWUgUFMgc3RhdGUgYmUgc2V0IHR3aWNlICovXFxuIFxcdGluX3BzID0gdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1BTX1NUQSk7XFxuLVxcdGlmICgoc3RhcnQgXFx1MDAyNlxcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXFx1MDAyNlxcdTAwMjYgIWluX3BzKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdGlmIChzdGFydCA9PSBpbl9wcylcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKHN0YXJ0KVxcbiBcXHRcXHRzdGFfcHNfc3RhcnQoc3RhKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRzdGFfcHNfZW5kKHN0YSk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbik7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMTozMTo1MS40MjE3NDg4MTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNzU3MTc3NTI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZWZhY3RvcnMgdGhlIHJldHVybiB0eXBlIG9mIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGFuZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoKSBmcm9tIGludCB0byB2b2lkLiBOb25lIG9mIHRoZSBjYWxsZXJzIHdlcmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSwgc28gdGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYy9yZWZhY3RvcmluZyBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVmYjNmMzE3NDU4ZTg3YTY5N2NiYTRkNjcyMTA0YTdmM2MzMmIxYWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAxOjMxOjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbmluZGV4IDlkMWZhYzZlODA4MjkuLjYzOGI4YWE1MjE0ZDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG4rKysgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5AQCAtMjkxOSw4ICsyOTE5LDggQEAgc3RydWN0IGllZWU4MDIxMV90eHEge1xuICAqXHRhdXRvbm9tb3VzbHkgbWFuYWdlcyB0aGUgUFMgc3RhdHVzIG9mIGNvbm5lY3RlZCBzdGF0aW9ucy4gV2hlblxuICAqXHR0aGlzIGZsYWcgaXMgc2V0IG1hYzgwMjExIHdpbGwgbm90IHRyaWdnZXIgUFMgbW9kZSBmb3IgY29ubmVjdGVkXG4gICpcdHN0YXRpb25zIGJhc2VkIG9uIHRoZSBQTSBiaXQgb2YgaW5jb21pbmcgZnJhbWVzLlxuLSAqXHRVc2UgaWVlZTgwMjExX3N0YXJ0X3BzKCkvaWVlZTgwMjFfZW5kX3BzKCkgdG8gbWFudWFsbHkgY29uZmlndXJlXG4tICpcdHRoZSBQUyBtb2RlIG9mIGNvbm5lY3RlZCBzdGF0aW9ucy5cbisgKlx0VXNlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIHRvIG1hbnVhbGx5IHRvZ2dsZSB0aGUgUFMgbW9kZVxuKyAqXHRvZiBjb25uZWN0ZWQgc3RhdGlvbnMuXG4gICpcbiAgKiBASUVFRTgwMjExX0hXX1RYX0FNUERVX1NFVFVQX0lOX0hXOiBUaGUgZGV2aWNlIGhhbmRsZXMgVFggQS1NUERVIHNlc3Npb25cbiAgKlx0c2V0dXAgc3RyaWN0bHkgaW4gSFcuIG1hYzgwMjExIHNob3VsZCBub3QgYXR0ZW1wdCB0byBkbyB0aGlzIGluXG5AQCAtNTQ5OSwxMCArNTQ5OSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfcnhfbmkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gICpcbiAgKiBAc3RhOiBjdXJyZW50bHkgY29ubmVjdGVkIHN0YVxuICAqIEBzdGFydDogc3RhcnQgb3Igc3RvcCBQU1xuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIC1FSU5WQUwgd2hlbiB0aGUgcmVxdWVzdGVkIFBTIG1vZGUgaXMgYWxyZWFkeSBzZXQuXG4gICovXG4taW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTtcbit2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTtcbiBcbiAvKipcbiAgKiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkgLSBQUyB0cmFuc2l0aW9uIGZvciBjb25uZWN0ZWQgc3RhXG5AQCAtNTUxNCwxOSArNTUxMiwxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpO1xuICAqXG4gICogQHN0YTogY3VycmVudGx5IGNvbm5lY3RlZCBzdGFcbiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFNcbi0gKlxuLSAqIFJldHVybjogTGlrZSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKS5cbiAgKi9cbi1zdGF0aWMgaW5saW5lIGludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbitzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4gXHRcdFx0XHRcdFx0ICBib29sIHN0YXJ0KVxuIHtcbi1cdGludCByZXQ7XG4tXG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4tXHRyZXQgPSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBzdGFydCk7XG4rXHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBzdGFydCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbi1cbi1cdHJldHVybiByZXQ7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9yeC5jIGIvbmV0L21hYzgwMjExL3J4LmNcbmluZGV4IDVlMjZiZThlMjdkOGYuLjQwZWQwM2E3NzViYTMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvcnguY1xuKysrIGIvbmV0L21hYzgwMjExL3J4LmNcbkBAIC0xNzQ0LDcgKzE3NDQsNyBAQCBzdGF0aWMgdm9pZCBzdGFfcHNfZW5kKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuIFx0aWVlZTgwMjExX3N0YV9wc19kZWxpdmVyX3dha2V1cChzdGEpO1xuIH1cbiBcbi1pbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXG4rdm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcbiB7XG4gXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IGNvbnRhaW5lcl9vZihwdWJzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcbiBcdGJvb2wgaW5fcHM7XG5AQCAtMTc1MywxNSArMTc1MywxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXG4gXG4gXHQvKiBEb24ndCBsZXQgdGhlIHNhbWUgUFMgc3RhdGUgYmUgc2V0IHR3aWNlICovXG4gXHRpbl9wcyA9IHRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9QU19TVEEpO1xuLVx0aWYgKChzdGFydCBcdTAwMjZcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXHUwMDI2XHUwMDI2ICFpbl9wcykpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0aWYgKHN0YXJ0ID09IGluX3BzKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRpZiAoc3RhcnQpXG4gXHRcdHN0YV9wc19zdGFydChzdGEpO1xuIFx0ZWxzZVxuIFx0XHRzdGFfcHNfZW5kKHN0YSk7XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTChpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24pO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDE6MzE6NTEuNDIxNzUwODU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0MjA4NTMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaW5vciBtYWM4MDIxMSBSZWZhY3RvcmluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbmAgYW5kIGBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmlgIGluIGBuZXQvbWFjODAyMTFgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGp1c3Qgc2hpZnRpbmcgdGhlIHJldHVybiB0eXBlIHRvIGB2b2lkYCBhbmQgcmVtb3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgZnJvbSB0aGVzZSBmdW5jdGlvbnMuIEl0J3MgZnVuY3Rpb25hbGx5IGEgdmVyeSBzbWFsbCBjaGFuZ2UsIGJhc2ljYWxseSByZW1vdmluZyBhIHJldHVybiB2YWx1ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLi4uIHdlbGwsIGl0J3MganVzdCBhIHJldHVybiB2YWx1ZSwgbm90IGEgc2lnbmlmaWNhbnQgYmVoYXZpb3JhbCBjaGFuZ2UsIHJpZ2h0P1xuXG5MZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBsb2dpYy4gQmVmb3JlIHRoZSBwYXRjaCwgdGhlcmUgd2FzIGEgY2hlY2s6XG5cbmBgYGNcblx0aWYgKChzdGFydCBcdTAwMjZcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXHUwMDI2XHUwMDI2ICFpbl9wcykpXG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5gYGBcblxuQW5kIG5vdyBpdCdzOlxuXG5gYGBjXG5cdGlmIChzdGFydCA9PSBpbl9wcylcblx0XHRyZXR1cm47XG5gYGBcblxuUmlnaHQsIGl0J3MgZXF1aXZhbGVudC4gYChzdGFydCBcdTAwMjZcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXHUwMDI2XHUwMDI2ICFpbl9wcylgIGlzIGxvZ2ljYWxseSB0aGUgc2FtZSBhcyBgc3RhcnQgPT0gaW5fcHNgLiBUaGUgYmVoYXZpb3IgaXMgZXhhY3RseSB0aGUgc2FtZSwgYnV0IGluc3RlYWQgb2YgcmV0dXJuaW5nIGAtRUlOVkFMYCBmb3IgdGhhdCBjYXNlLCB3ZSBhcmUgbm93IGp1c3QgcmV0dXJuaW5nIGB2b2lkYC4gU28gd2UgYXJlIHJlbW92aW5nIHRoZSByZXR1cm4gdmFsdWUsIG5vdCBjaGFuZ2luZyB0aGUgY29udHJvbCBmbG93IG9mIHRoZSBmdW5jdGlvbi5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEl0J3MgYSBwcmV0dHkgbWlub3IgcmVmYWN0b3JpbmcgaW4gbWFjODAyMTEsIHdoaWNoIHVzdWFsbHkgdHJhbnNsYXRlcyB0byBcInByb2JhYmx5IG5vdFwiLiBCdXQsIHlvdSBuZXZlciBrbm93LCByaWdodD8gTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiBhbnkgY2FsbGVycyBvZiBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uYCBvciBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pYCB3ZXJlIGFjdHVhbGx5ICp1c2luZyogdGhlIHJldHVybiB2YWx1ZS4gRGlkIHRoZSBwYXRjaCBpdHNlbGYgdG91Y2ggYW55IGNhbGxlcnM/IEl0IHNlZW1zIG5vdC4gVGhlIGNoYW5nZXMgYXJlIGlzb2xhdGVkIHRvIHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24uIFRoYXQgbWVhbnMgZWl0aGVyIG5vIGNhbGxlcnMgY2FyZSBhYm91dCB0aGUgcmV0dXJuIHZhbHVlIChhbmQgd2UncmUgZ29vZCksIG9yIGFub3RoZXIgcmVsYXRlZCBwYXRjaCBtdXN0IGhhdmUgbW9kaWZpZWQgY2FsbGVycy5cblxuU28sIGxldCdzIGdvIGNoZWNrIHRoZSBjYWxsZXJzIGp1c3QgdG8gYmUgc3VyZS4gSXQncyB1bmxpa2VseSwgYnV0IG5vdCBpbXBvc3NpYmxlLCB0aGF0IHNvbWUgb3RoZXIgcGF0Y2ggbWFkZSB0aGUgcmV0dXJuIHZhbHVlIGltcG9ydGFudCBhbmQgbm93IHdlJ3ZlIGJyb2tlbiBzb21ldGhpbmcuIFdlJ3JlIHRhbGtpbmcgbWFjODAyMTEsIHNvIGl0J3MgcHJvYmFibHkgYmV0dGVyIHRvIGRvdWJsZSBjaGVjayB0aGUgY2FsbGVyLCBnaXZlbiBob3cgaW50cmljYXRlIHRoZXNlIGZ1bmN0aW9ucyBjYW4gZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDY3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDE6MzE6NTguMDYzODM5ODgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjUzNjg2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS84MDIxMS9tYWM4MDIxMS1hZHZhbmNlZC5yc3Q9NzU9c3VwcG9ydCBmb3IgcG93ZXJzYXZpbmcgY2xpZW50c1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdC04Ni1cXHRpZWVlODAyMTFfZnJhbWVfcmVsZWFzZV90eXBlXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdDo4NzpcXHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvODAyMTEvbWFjODAyMTEtYWR2YW5jZWQucnN0Ojg4OlxcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS84MDIxMS9tYWM4MDIxMS1hZHZhbmNlZC5yc3QtODktXFx0aWVlZTgwMjExX3N0YV9zZXRfYnVmZmVyZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9MzMxNj12b2lkIGl3bF9tdm1fc3RhX3BtX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0zMzQ2LVxcdFxcdFxcdHN0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYzozMzQ3OlxcdFxcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHNsZWVwaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTMzNDgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE0NjM9bXQ3Nl9jaGVja19zdGEoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTUyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTUyNzpcXHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBwcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1MjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz02MDI5PXJ0dzg5X21hY19jMmhfcHdyX2ludF9ub3RpZnkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy02MDU0LVxcdHN0YSA9IHJ0d3N0YV90b19zdGEocnR3c3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjYwNTU6XFx0aWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNjA1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jPTExMz12b2lkIHdsMTJ4eF9wc19saW5rX3N0YXJ0KHN0cnVjdCB3bDEyNzEgKndsLCBzdHJ1Y3Qgd2wxMnh4X3ZpZiAqd2x2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvcHMuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3BzLmM6MTM5OlxcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdGEsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jLTE0MC1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jPTE0OT12b2lkIHdsMTJ4eF9wc19saW5rX2VuZChzdHJ1Y3Qgd2wxMjcxICp3bCwgc3RydWN0IHdsMTJ4eF92aWYgKndsdmlmLCB1OCBobGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3BzLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jOjE2OTpcXHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RhLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3BzLmMtMTcwLWVuZDpcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9MjgyNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSB7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTI5MjEtICpcXHRzdGF0aW9ucyBiYXNlZCBvbiB0aGUgUE0gYml0IG9mIGluY29taW5nIGZyYW1lcy5cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjI5MjI6ICpcXHRVc2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgdG8gbWFudWFsbHkgdG9nZ2xlIHRoZSBQUyBtb2RlXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0yOTIzLSAqXFx0b2YgY29ubmVjdGVkIHN0YXRpb25zLlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0zNDYwPXZvaWQgaWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNzM0LSAqIHBvd2Vyc2F2aW5nIGNsaWVudHMgYW5kIHdpbGwgaWdub3JlIHRoZSBQTSBiaXQgaW4gaW5jb21pbmcgZnJhbWVzLlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6MzczNTogKiBEcml2ZXJzIHRoZW4gdXNlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIHRvIGluZm9ybSBtYWM4MDIxMSBvZlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzczNi0gKiBzdGF0aW9ucycgcG93ZXJzYXZlIHRyYW5zaXRpb25zLiBJbiB0aGlzIG1vZGUsIG1hYzgwMjExIGFsc28gZG9lc24ndFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD01NDgwPXN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfcnhfbmkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU0ODgtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo1NDg5OiAqIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbiAtIFBTIHRyYW5zaXRpb24gZm9yIGNvbm5lY3RlZCBzdGFcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU0OTAtICpcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUwMi0gKi9cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MDM6dm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgYm9vbCBzdGFydCk7XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTA0LVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUwNS0vKipcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MDY6ICogaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pIC0gUFMgdHJhbnNpdGlvbiBmb3IgY29ubmVjdGVkIHN0YVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUwNy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW4gcHJvY2VzcyBjb250ZXh0KVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUwOC0gKlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NTUwOTogKiBMaWtlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGJ1dCBjYW4gYmUgY2FsbGVkIGluIHByb2Nlc3MgY29udGV4dFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUxMC0gKiAoaW50ZXJuYWxseSBkaXNhYmxlcyBib3R0b20gaGFsdmVzKS4gQ29uY3VycmVudCBjYWxsIHJlc3RyaWN0aW9uIHN0aWxsXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MTUtICovXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo1NTE2OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MTctXFx0XFx0XFx0XFx0XFx0XFx0ICBib29sIHN0YXJ0KVxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTE5LVxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MjA6XFx0aWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgc3RhcnQpO1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUyMS1cXHRsb2NhbF9iaF9lbmFibGUoKTtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUzMC0gKiBjb25uZWN0ZWQgc3RhdGlvbiB3YXMgcmVjZWl2ZWQuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo1NTMxOiAqIFRoaXMgbXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKClcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MzItICogYW5kIHBvc3NpYmx5IGllZWU4MDIxMV9zdGFfdWFwc2RfdHJpZ2dlcigpOyBjYWxscyB0byBhbGwgdGhyZWUgbXVzdFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD01NTM1PXZvaWQgaWVlZTgwMjExX3N0YV9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1NDQtICogZnJvbSBhIGNvbm5lY3RlZCBzdGF0aW9uIHdhcyByZWNlaXZlZC5cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1NDU6ICogVGhpcyBtdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTU0Ni0gKiBhbmQgcG9zc2libHkgaWVlZTgwMjExX3N0YV9wc3BvbGwoKTsgY2FsbHMgdG8gYWxsIHRocmVlIG11c3QgYmVcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTE3MjQ9c3RhdGljIHZvaWQgc3RhX3BzX2VuZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NDYtXFxubmV0L21hYzgwMjExL3J4LmM6MTc0Nzp2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCBib29sIHN0YXJ0KVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NDgte1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTc2My19XFxubmV0L21hYzgwMjExL3J4LmM6MTc2NDpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbik7XFxubmV0L21hYzgwMjExL3J4LmMtMTc2NS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQ3MjA9dm9pZCBpZWVlODAyMTFfY2hlY2tfZmFzdF9yeChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODItXFx0XFx0LyogcGFyYWxsZWwtcnggcmVxdWlyZXMgdGhpcywgYXQgbGVhc3Qgd2l0aCBjYWxscyB0b1xcbm5ldC9tYWM4MDIxMS9yeC5jOjQ3ODM6XFx0XFx0ICogaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKClcXG5uZXQvbWFjODAyMTEvcnguYy00Nzg0LVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMTozMjowMC40ODkyMTI3NDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTA0Mjg4NDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1pbm9yIENvZGUgUmVmYWN0b3JpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYSBub24tZXZlbnQuIFRoZSBjb2RlIGNoYW5nZXMgaW52b2x2ZSB0aGVzZSBmdW5jdGlvbnM6IGBpd2xfbXZtX3N0YV9wbV9ub3RpZmAsIGBtdDc2X2NoZWNrX3N0YWAsIGBydHc4OV9tYWNfYzJoX3B3cl9pbnRfbm90aWZ5YCwgYHdsMTJ4eF9wc19saW5rX3N0YXJ0YCwgYW5kIGB3bDEyeHhfcHNfbGlua19lbmRgLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFsdGVycyBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uYCBhbmQgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaWAsIGNoYW5naW5nIHRoZWlyIHJldHVybiB0eXBlIGZyb20gYGludGAgdG8gYHZvaWRgIGFuZCByZW1vdmluZyB0aGUgYC1FSU5WQUxgIHJldHVybiB3aGVuIHRoZSBwb3dlciBzdGF0ZSBkb2Vzbid0IGNoYW5nZS5cblxuTXkgZmlyc3QgdGhvdWdodCB3YXMsIFwiV2FpdCwgaXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/XCIgVGhlIHBhdGNoIHNlZW1zIGluY3JlZGlibHkgbWlub3IsIHB1cmVseSByZWZhY3RvcmluZywgYW5kIGZ1bmN0aW9uYWxseSBpbmVydC4gVGhlIG9sZCBjb2RlIHJldHVybmVkIGFuIGVycm9yIGNvZGUgKGAtRUlOVkFMYCkgaWYgdGhlIHN0YXRlIGRpZG4ndCBjaGFuZ2UsIGJ1dCAqbm8qIGNhbGxlciB3YXMgYWN0dWFsbHkgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSBhbnl3YXkhXG5cblRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSB3ZW50IGJhY2sgYW5kIHJlLWV4YW1pbmVkIHRoZSBjb2RlLiBUaGUgYGdyZXBgIG91dHB1dCBjb25maXJtczogbm9uZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbnMgdXRpbGl6ZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25gIG9yIGBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmlgLiBTbywgdGhlIGVudGlyZSBwYXRjaCBib2lscyBkb3duIHRvIGEgY29zbWV0aWMgY2hhbmdlIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZS4gTm8gYmVoYXZpb3IgaGFzIGNoYW5nZWQuXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgY29uY2x1c2lvbiBpcyBjbGVhcjogV29ydGhGdXp6aW5nPWZhbHNlLiBUaGlzIGlzIGEgc2ltcGxlIGNsZWFudXAsIGNvbXBsZXRlbHkgc2FmZSBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzNSwiT3V0cHV0VG9rZW5zIjoxMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDE6MzI6MDguOTkzNTAzMTkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlZmFjdG9ycyB0aGUgcmV0dXJuIHR5cGUgb2YgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgYW5kIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaSgpIGZyb20gaW50IHRvIHZvaWQuIE5vbmUgb2YgdGhlIGNhbGxlcnMgd2VyZSBjaGVja2luZyB0aGUgcmV0dXJuIHZhbHVlLCBzbyB0aGlzIGlzIGEgcHVyZWx5IGNvc21ldGljL3JlZmFjdG9yaW5nIGNoYW5nZSB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZWZhY3RvcnMgdGhlIHJldHVybiB0eXBlIG9mIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGFuZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoKSBmcm9tIGludCB0byB2b2lkLiBOb25lIG9mIHRoZSBjYWxsZXJzIHdlcmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSwgc28gdGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYy9yZWZhY3RvcmluZyBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrmvcp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-03 01:11:36 +0000 UTC FinishedAt: 2026-08-03 01:32:10 +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+CgkJCTx0ZD4yMDI2LzA4LzAzIDAxOjMxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVmYWN0b3JzIHRoZSByZXR1cm4gdHlwZSBvZiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKSBhbmQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKCkgZnJvbSBpbnQgdG8gdm9pZC4gTm9uZSBvZiB0aGUgY2FsbGVycyB3ZXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUsIHNvIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMvcmVmYWN0b3JpbmcgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAxOjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNWZiM2YzMTc0NThlODdhNjk3Y2JhNGQ2NzIxMDRhN2YzYzMyYjFhYVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gQXVnIDMgMDE6MzE6NDkgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbmluZGV4IDlkMWZhYzZlODA4MjkuLjYzOGI4YWE1MjE0ZDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5AQCAtMjkxOSw4ICYjNDM7MjkxOSw4IEBAIHN0cnVjdCBpZWVlODAyMTFfdHhxIHtcbiAgKlx0YXV0b25vbW91c2x5IG1hbmFnZXMgdGhlIFBTIHN0YXR1cyBvZiBjb25uZWN0ZWQgc3RhdGlvbnMuIFdoZW5cbiAgKlx0dGhpcyBmbGFnIGlzIHNldCBtYWM4MDIxMSB3aWxsIG5vdCB0cmlnZ2VyIFBTIG1vZGUgZm9yIGNvbm5lY3RlZFxuICAqXHRzdGF0aW9ucyBiYXNlZCBvbiB0aGUgUE0gYml0IG9mIGluY29taW5nIGZyYW1lcy5cbi0gKlx0VXNlIGllZWU4MDIxMV9zdGFydF9wcygpL2llZWU4MDIxX2VuZF9wcygpIHRvIG1hbnVhbGx5IGNvbmZpZ3VyZVxuLSAqXHR0aGUgUFMgbW9kZSBvZiBjb25uZWN0ZWQgc3RhdGlvbnMuXG4mIzQzOyAqXHRVc2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgdG8gbWFudWFsbHkgdG9nZ2xlIHRoZSBQUyBtb2RlXG4mIzQzOyAqXHRvZiBjb25uZWN0ZWQgc3RhdGlvbnMuXG4gICpcbiAgKiBASUVFRTgwMjExX0hXX1RYX0FNUERVX1NFVFVQX0lOX0hXOiBUaGUgZGV2aWNlIGhhbmRsZXMgVFggQS1NUERVIHNlc3Npb25cbiAgKlx0c2V0dXAgc3RyaWN0bHkgaW4gSFcuIG1hYzgwMjExIHNob3VsZCBub3QgYXR0ZW1wdCB0byBkbyB0aGlzIGluXG5AQCAtNTQ5OSwxMCAmIzQzOzU0OTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3J4X25pKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuICAqXG4gICogQHN0YTogY3VycmVudGx5IGNvbm5lY3RlZCBzdGFcbiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFNcbi0gKlxuLSAqIFJldHVybjogMCBvbiBzdWNjZXNzLiAtRUlOVkFMIHdoZW4gdGhlIHJlcXVlc3RlZCBQUyBtb2RlIGlzIGFscmVhZHkgc2V0LlxuICAqL1xuLWludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgYm9vbCBzdGFydCk7XG4mIzQzO3ZvaWQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpO1xuIFxuIC8qKlxuICAqIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaSAtIFBTIHRyYW5zaXRpb24gZm9yIGNvbm5lY3RlZCBzdGFcbkBAIC01NTE0LDE5ICYjNDM7NTUxMiwxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpO1xuICAqXG4gICogQHN0YTogY3VycmVudGx5IGNvbm5lY3RlZCBzdGFcbiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFNcbi0gKlxuLSAqIFJldHVybjogTGlrZSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKS5cbiAgKi9cbi1zdGF0aWMgaW5saW5lIGludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbiYjNDM7c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuIFx0XHRcdFx0XHRcdCAgYm9vbCBzdGFydClcbiB7XG4tXHRpbnQgcmV0O1xuLVxuIFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuLVx0cmV0ID0gaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgc3RhcnQpO1xuJiM0MztcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHN0YXJ0KTtcbiBcdGxvY2FsX2JoX2VuYWJsZSgpO1xuLVxuLVx0cmV0dXJuIHJldDtcbiB9XG4gXG4gLyoqXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3J4LmMgYi9uZXQvbWFjODAyMTEvcnguY1xuaW5kZXggNWUyNmJlOGUyN2Q4Zi4uNDBlZDAzYTc3NWJhMyAxMDA2NDRcbi0tLSBhL25ldC9tYWM4MDIxMS9yeC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbWFjODAyMTEvcnguY1xuQEAgLTE3NDQsNyAmIzQzOzE3NDQsNyBAQCBzdGF0aWMgdm9pZCBzdGFfcHNfZW5kKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuIFx0aWVlZTgwMjExX3N0YV9wc19kZWxpdmVyX3dha2V1cChzdGEpO1xuIH1cbiBcbi1pbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXG4mIzQzO3ZvaWQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXG4ge1xuIFx0c3RydWN0IHN0YV9pbmZvICpzdGEgPSBjb250YWluZXJfb2YocHVic3RhLCBzdHJ1Y3Qgc3RhX2luZm8sIHN0YSk7XG4gXHRib29sIGluX3BzO1xuQEAgLTE3NTMsMTUgJiM0MzsxNzUzLDEzIEBAIGludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcbiBcbiBcdC8qIERvbiYjMzk7dCBsZXQgdGhlIHNhbWUgUFMgc3RhdGUgYmUgc2V0IHR3aWNlICovXG4gXHRpbl9wcyA9IHRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9QU19TVEEpO1xuLVx0aWYgKChzdGFydCBcdTAwMjZcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXHUwMDI2XHUwMDI2ICFpbl9wcykpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuJiM0MztcdGlmIChzdGFydCA9PSBpbl9wcylcbiYjNDM7XHRcdHJldHVybjtcbiBcbiBcdGlmIChzdGFydClcbiBcdFx0c3RhX3BzX3N0YXJ0KHN0YSk7XG4gXHRlbHNlXG4gXHRcdHN0YV9wc19lbmQoc3RhKTtcbi1cbi1cdHJldHVybiAwO1xuIH1cbiBFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbik7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDMgMDE6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVmYWN0b3JzIHRoZSByZXR1cm4gdHlwZSBvZiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKSBhbmQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKCkgZnJvbSBpbnQgdG8gdm9pZC4gTm9uZSBvZiB0aGUgY2FsbGVycyB3ZXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUsIHNvIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMvcmVmYWN0b3JpbmcgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWZiM2YzMTc0NThlODdhNjk3Y2JhNGQ2NzIxMDRhN2YzYzMyYjFhYQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gQXVnIDMgMDE6MzE6NDkgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaAppbmRleCA5ZDFmYWM2ZTgwODI5Li42MzhiOGFhNTIxNGQ3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKQEAgLTI5MTksOCAmIzQzOzI5MTksOCBAQCBzdHJ1Y3QgaWVlZTgwMjExX3R4cSB7CiAgKglhdXRvbm9tb3VzbHkgbWFuYWdlcyB0aGUgUFMgc3RhdHVzIG9mIGNvbm5lY3RlZCBzdGF0aW9ucy4gV2hlbgogICoJdGhpcyBmbGFnIGlzIHNldCBtYWM4MDIxMSB3aWxsIG5vdCB0cmlnZ2VyIFBTIG1vZGUgZm9yIGNvbm5lY3RlZAogICoJc3RhdGlvbnMgYmFzZWQgb24gdGhlIFBNIGJpdCBvZiBpbmNvbWluZyBmcmFtZXMuCi0gKglVc2UgaWVlZTgwMjExX3N0YXJ0X3BzKCkvaWVlZTgwMjFfZW5kX3BzKCkgdG8gbWFudWFsbHkgY29uZmlndXJlCi0gKgl0aGUgUFMgbW9kZSBvZiBjb25uZWN0ZWQgc3RhdGlvbnMuCiYjNDM7ICoJVXNlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIHRvIG1hbnVhbGx5IHRvZ2dsZSB0aGUgUFMgbW9kZQomIzQzOyAqCW9mIGNvbm5lY3RlZCBzdGF0aW9ucy4KICAqCiAgKiBASUVFRTgwMjExX0hXX1RYX0FNUERVX1NFVFVQX0lOX0hXOiBUaGUgZGV2aWNlIGhhbmRsZXMgVFggQS1NUERVIHNlc3Npb24KICAqCXNldHVwIHN0cmljdGx5IGluIEhXLiBtYWM4MDIxMSBzaG91bGQgbm90IGF0dGVtcHQgdG8gZG8gdGhpcyBpbgpAQCAtNTQ5OSwxMCAmIzQzOzU0OTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3J4X25pKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogICoKICAqIEBzdGE6IGN1cnJlbnRseSBjb25uZWN0ZWQgc3RhCiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFMKLSAqCi0gKiBSZXR1cm46IDAgb24gc3VjY2Vzcy4gLUVJTlZBTCB3aGVuIHRoZSByZXF1ZXN0ZWQgUFMgbW9kZSBpcyBhbHJlYWR5IHNldC4KICAqLwotaW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTsKJiM0Mzt2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTsKIAogLyoqCiAgKiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkgLSBQUyB0cmFuc2l0aW9uIGZvciBjb25uZWN0ZWQgc3RhCkBAIC01NTE0LDE5ICYjNDM7NTUxMiwxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpOwogICoKICAqIEBzdGE6IGN1cnJlbnRseSBjb25uZWN0ZWQgc3RhCiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFMKLSAqCi0gKiBSZXR1cm46IExpa2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkuCiAgKi8KLXN0YXRpYyBpbmxpbmUgaW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLAomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwKIAkJCQkJCSAgYm9vbCBzdGFydCkKIHsKLQlpbnQgcmV0OwotCiAJbG9jYWxfYmhfZGlzYWJsZSgpOwotCXJldCA9IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHN0YXJ0KTsKJiM0MzsJaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgc3RhcnQpOwogCWxvY2FsX2JoX2VuYWJsZSgpOwotCi0JcmV0dXJuIHJldDsKIH0KIAogLyoqCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvcnguYyBiL25ldC9tYWM4MDIxMS9yeC5jCmluZGV4IDVlMjZiZThlMjdkOGYuLjQwZWQwM2E3NzViYTMgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9yeC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9yeC5jCkBAIC0xNzQ0LDcgJiM0MzsxNzQ0LDcgQEAgc3RhdGljIHZvaWQgc3RhX3BzX2VuZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSkKIAlpZWVlODAyMTFfc3RhX3BzX2RlbGl2ZXJfd2FrZXVwKHN0YSk7CiB9CiAKLWludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydCkKJiM0Mzt2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCBib29sIHN0YXJ0KQogewogCXN0cnVjdCBzdGFfaW5mbyAqc3RhID0gY29udGFpbmVyX29mKHB1YnN0YSwgc3RydWN0IHN0YV9pbmZvLCBzdGEpOwogCWJvb2wgaW5fcHM7CkBAIC0xNzUzLDE1ICYjNDM7MTc1MywxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpCiAKIAkvKiBEb24mIzM5O3QgbGV0IHRoZSBzYW1lIFBTIHN0YXRlIGJlIHNldCB0d2ljZSAqLwogCWluX3BzID0gdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1BTX1NUQSk7Ci0JaWYgKChzdGFydCAmYW1wOyZhbXA7IGluX3BzKSB8fCAoIXN0YXJ0ICZhbXA7JmFtcDsgIWluX3BzKSkKLQkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CWlmIChzdGFydCA9PSBpbl9wcykKJiM0MzsJCXJldHVybjsKIAogCWlmIChzdGFydCkKIAkJc3RhX3BzX3N0YXJ0KHN0YSk7CiAJZWxzZQogCQlzdGFfcHNfZW5kKHN0YSk7Ci0KLQlyZXR1cm4gMDsKIH0KIEVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDY3CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMzA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE1pbm9yIG1hYzgwMjExIFJlZmFjdG9yaW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25gIGFuZCBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pYCBpbiBgbmV0L21hYzgwMjExYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBqdXN0IHNoaWZ0aW5nIHRoZSByZXR1cm4gdHlwZSB0byBgdm9pZGAgYW5kIHJlbW92aW5nIHRoZSByZXR1cm4gc3RhdGVtZW50IGZyb20gdGhlc2UgZnVuY3Rpb25zLiBJdCYjMzk7cyBmdW5jdGlvbmFsbHkgYSB2ZXJ5IHNtYWxsIGNoYW5nZSwgYmFzaWNhbGx5IHJlbW92aW5nIGEgcmV0dXJuIHZhbHVlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMuLi4gd2VsbCwgaXQmIzM5O3MganVzdCBhIHJldHVybiB2YWx1ZSwgbm90IGEgc2lnbmlmaWNhbnQgYmVoYXZpb3JhbCBjaGFuZ2UsIHJpZ2h0PwoKTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgbG9naWMuIEJlZm9yZSB0aGUgcGF0Y2gsIHRoZXJlIHdhcyBhIGNoZWNrOgoKYGBgYwoJaWYgKChzdGFydCAmYW1wOyZhbXA7IGluX3BzKSB8fCAoIXN0YXJ0ICZhbXA7JmFtcDsgIWluX3BzKSkKCQlyZXR1cm4gLUVJTlZBTDsKYGBgCgpBbmQgbm93IGl0JiMzOTtzOgoKYGBgYwoJaWYgKHN0YXJ0ID09IGluX3BzKQoJCXJldHVybjsKYGBgCgpSaWdodCwgaXQmIzM5O3MgZXF1aXZhbGVudC4gYChzdGFydCAmYW1wOyZhbXA7IGluX3BzKSB8fCAoIXN0YXJ0ICZhbXA7JmFtcDsgIWluX3BzKWAgaXMgbG9naWNhbGx5IHRoZSBzYW1lIGFzIGBzdGFydCA9PSBpbl9wc2AuIFRoZSBiZWhhdmlvciBpcyBleGFjdGx5IHRoZSBzYW1lLCBidXQgaW5zdGVhZCBvZiByZXR1cm5pbmcgYC1FSU5WQUxgIGZvciB0aGF0IGNhc2UsIHdlIGFyZSBub3cganVzdCByZXR1cm5pbmcgYHZvaWRgLiBTbyB3ZSBhcmUgcmVtb3ZpbmcgdGhlIHJldHVybiB2YWx1ZSwgbm90IGNoYW5naW5nIHRoZSBjb250cm9sIGZsb3cgb2YgdGhlIGZ1bmN0aW9uLgoKTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEl0JiMzOTtzIGEgcHJldHR5IG1pbm9yIHJlZmFjdG9yaW5nIGluIG1hYzgwMjExLCB3aGljaCB1c3VhbGx5IHRyYW5zbGF0ZXMgdG8gJiMzNDtwcm9iYWJseSBub3QmIzM0Oy4gQnV0LCB5b3UgbmV2ZXIga25vdywgcmlnaHQ/IE15IG5leHQgc3RlcCBpcyB0byBzZWUgaWYgYW55IGNhbGxlcnMgb2YgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbmAgb3IgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaWAgd2VyZSBhY3R1YWxseSAqdXNpbmcqIHRoZSByZXR1cm4gdmFsdWUuIERpZCB0aGUgcGF0Y2ggaXRzZWxmIHRvdWNoIGFueSBjYWxsZXJzPyBJdCBzZWVtcyBub3QuIFRoZSBjaGFuZ2VzIGFyZSBpc29sYXRlZCB0byB0aGUgZnVuY3Rpb24mIzM5O3MgZGVmaW5pdGlvbi4gVGhhdCBtZWFucyBlaXRoZXIgbm8gY2FsbGVycyBjYXJlIGFib3V0IHRoZSByZXR1cm4gdmFsdWUgKGFuZCB3ZSYjMzk7cmUgZ29vZCksIG9yIGFub3RoZXIgcmVsYXRlZCBwYXRjaCBtdXN0IGhhdmUgbW9kaWZpZWQgY2FsbGVycy4KClNvLCBsZXQmIzM5O3MgZ28gY2hlY2sgdGhlIGNhbGxlcnMganVzdCB0byBiZSBzdXJlLiBJdCYjMzk7cyB1bmxpa2VseSwgYnV0IG5vdCBpbXBvc3NpYmxlLCB0aGF0IHNvbWUgb3RoZXIgcGF0Y2ggbWFkZSB0aGUgcmV0dXJuIHZhbHVlIGltcG9ydGFudCBhbmQgbm93IHdlJiMzOTt2ZSBicm9rZW4gc29tZXRoaW5nLiBXZSYjMzk7cmUgdGFsa2luZyBtYWM4MDIxMSwgc28gaXQmIzM5O3MgcHJvYmFibHkgYmV0dGVyIHRvIGRvdWJsZSBjaGVjayB0aGUgY2FsbGVyLCBnaXZlbiBob3cgaW50cmljYXRlIHRoZXNlIGZ1bmN0aW9ucyBjYW4gZ2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAxOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2llZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvODAyMTEvbWFjODAyMTEtYWR2YW5jZWQucnN0PTc1PXN1cHBvcnQgZm9yIHBvd2Vyc2F2aW5nIGNsaWVudHNcbi0tXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvODAyMTEvbWFjODAyMTEtYWR2YW5jZWQucnN0LTg2LVx0aWVlZTgwMjExX2ZyYW1lX3JlbGVhc2VfdHlwZVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdDo4NzpcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvblxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdDo4ODpcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaVxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdC04OS1cdGllZWU4MDIxMV9zdGFfc2V0X2J1ZmZlcmVkXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYz0zMzE2PXZvaWQgaXdsX212bV9zdGFfcG1fbm90aWYoc3RydWN0IGl3bF9tdm0gKm12bSwgc3RydWN0IGl3bF9yeF9jbWRfYnVmZmVyICpyeGIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0zMzQ2LVx0XHRcdHN0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jOjMzNDc6XHRcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHNsZWVwaW5nKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmMtMzM0OC1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM9MTQ2Mz1tdDc2X2NoZWNrX3N0YShzdHJ1Y3QgbXQ3Nl9kZXYgKmRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTUyNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL21lZGlhdGVrL210NzYvbWFjODAyMTEuYzoxNTI3Olx0aWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgcHMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1MjgtfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmM9NjAyOT1ydHc4OV9tYWNfYzJoX3B3cl9pbnRfbm90aWZ5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldiwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgdTMyIGxlbilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTYwNTQtXHRzdGEgPSBydHdzdGFfdG9fc3RhKHJ0d3N0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjYwNTU6XHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBwcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jLTYwNTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3BzLmM9MTEzPXZvaWQgd2wxMnh4X3BzX2xpbmtfc3RhcnQoc3RydWN0IHdsMTI3MSAqd2wsIHN0cnVjdCB3bDEyeHhfdmlmICp3bHZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvcHMuYy0xMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvcHMuYzoxMzk6XHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RhLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jLTE0MC1cdHJjdV9yZWFkX3VubG9jaygpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jPTE0OT12b2lkIHdsMTJ4eF9wc19saW5rX2VuZChzdHJ1Y3Qgd2wxMjcxICp3bCwgc3RydWN0IHdsMTJ4eF92aWYgKndsdmlmLCB1OCBobGlkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jLTE2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jOjE2OTpcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdGEsIGZhbHNlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jLTE3MC1lbmQ6XG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0yODI1PXN0cnVjdCBpZWVlODAyMTFfdHhxIHtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTI5MjEtICpcdHN0YXRpb25zIGJhc2VkIG9uIHRoZSBQTSBiaXQgb2YgaW5jb21pbmcgZnJhbWVzLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDoyOTIyOiAqXHRVc2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgdG8gbWFudWFsbHkgdG9nZ2xlIHRoZSBQUyBtb2RlXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTI5MjMtICpcdG9mIGNvbm5lY3RlZCBzdGF0aW9ucy5cbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oPTM0NjA9dm9pZCBpZWVlODAyMTFfcHVyZ2VfdHhfcXVldWUoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNzM0LSAqIHBvd2Vyc2F2aW5nIGNsaWVudHMgYW5kIHdpbGwgaWdub3JlIHRoZSBQTSBiaXQgaW4gaW5jb21pbmcgZnJhbWVzLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDozNzM1OiAqIERyaXZlcnMgdGhlbiB1c2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgdG8gaW5mb3JtIG1hYzgwMjExIG9mXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTM3MzYtICogc3RhdGlvbnMmIzM5OyBwb3dlcnNhdmUgdHJhbnNpdGlvbnMuIEluIHRoaXMgbW9kZSwgbWFjODAyMTEgYWxzbyBkb2VzbiYjMzk7dFxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9NTQ4MD1zdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3J4X25pKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTQ4OC0vKipcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NTQ4OTogKiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24gLSBQUyB0cmFuc2l0aW9uIGZvciBjb25uZWN0ZWQgc3RhXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU0OTAtICpcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MDItICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MDM6dm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgYm9vbCBzdGFydCk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MDQtXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MDUtLyoqXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MDY6ICogaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pIC0gUFMgdHJhbnNpdGlvbiBmb3IgY29ubmVjdGVkIHN0YVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTA3LSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbiBwcm9jZXNzIGNvbnRleHQpXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MDgtICpcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NTUwOTogKiBMaWtlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGJ1dCBjYW4gYmUgY2FsbGVkIGluIHByb2Nlc3MgY29udGV4dFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTEwLSAqIChpbnRlcm5hbGx5IGRpc2FibGVzIGJvdHRvbSBoYWx2ZXMpLiBDb25jdXJyZW50IGNhbGwgcmVzdHJpY3Rpb24gc3RpbGxcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MTUtICovXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MTY6c3RhdGljIGlubGluZSB2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTE3LVx0XHRcdFx0XHRcdCAgYm9vbCBzdGFydClcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MTktXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MjA6XHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBzdGFydCk7XG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MjEtXHRsb2NhbF9iaF9lbmFibGUoKTtcbi0tXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MzAtICogY29ubmVjdGVkIHN0YXRpb24gd2FzIHJlY2VpdmVkLlxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo1NTMxOiAqIFRoaXMgbXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKClcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUzMi0gKiBhbmQgcG9zc2libHkgaWVlZTgwMjExX3N0YV91YXBzZF90cmlnZ2VyKCk7IGNhbGxzIHRvIGFsbCB0aHJlZSBtdXN0XG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD01NTM1PXZvaWQgaWVlZTgwMjExX3N0YV9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7XG4tLVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTQ0LSAqIGZyb20gYSBjb25uZWN0ZWQgc3RhdGlvbiB3YXMgcmVjZWl2ZWQuXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1NDU6ICogVGhpcyBtdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKVxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTQ2LSAqIGFuZCBwb3NzaWJseSBpZWVlODAyMTFfc3RhX3BzcG9sbCgpOyBjYWxscyB0byBhbGwgdGhyZWUgbXVzdCBiZVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE3MjQ9c3RhdGljIHZvaWQgc3RhX3BzX2VuZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0xNzQ2LVxubmV0L21hYzgwMjExL3J4LmM6MTc0Nzp2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCBib29sIHN0YXJ0KVxubmV0L21hYzgwMjExL3J4LmMtMTc0OC17XG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTc2My19XG5uZXQvbWFjODAyMTEvcnguYzoxNzY0OkVYUE9SVF9TWU1CT0woaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKTtcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NjUtXG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDcyMD12b2lkIGllZWU4MDIxMV9jaGVja19mYXN0X3J4KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODItXHRcdC8qIHBhcmFsbGVsLXJ4IHJlcXVpcmVzIHRoaXMsIGF0IGxlYXN0IHdpdGggY2FsbHMgdG9cbm5ldC9tYWM4MDIxMS9yeC5jOjQ3ODM6XHRcdCAqIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpXG5uZXQvbWFjODAyMTEvcnguYy00Nzg0LVx0XHQgKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMyAwMTozMjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDM1CgkJCQkJCQlvdXRwdXQ6IDEwMQoJCQkJCQkJdGhvdWdodHM6IDY3NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBNaW5vciBDb2RlIFJlZmFjdG9yaW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYSBub24tZXZlbnQuIFRoZSBjb2RlIGNoYW5nZXMgaW52b2x2ZSB0aGVzZSBmdW5jdGlvbnM6IGBpd2xfbXZtX3N0YV9wbV9ub3RpZmAsIGBtdDc2X2NoZWNrX3N0YWAsIGBydHc4OV9tYWNfYzJoX3B3cl9pbnRfbm90aWZ5YCwgYHdsMTJ4eF9wc19saW5rX3N0YXJ0YCwgYW5kIGB3bDEyeHhfcHNfbGlua19lbmRgLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFsdGVycyBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uYCBhbmQgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaWAsIGNoYW5naW5nIHRoZWlyIHJldHVybiB0eXBlIGZyb20gYGludGAgdG8gYHZvaWRgIGFuZCByZW1vdmluZyB0aGUgYC1FSU5WQUxgIHJldHVybiB3aGVuIHRoZSBwb3dlciBzdGF0ZSBkb2VzbiYjMzk7dCBjaGFuZ2UuCgpNeSBmaXJzdCB0aG91Z2h0IHdhcywgJiMzNDtXYWl0LCBpcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz8mIzM0OyBUaGUgcGF0Y2ggc2VlbXMgaW5jcmVkaWJseSBtaW5vciwgcHVyZWx5IHJlZmFjdG9yaW5nLCBhbmQgZnVuY3Rpb25hbGx5IGluZXJ0LiBUaGUgb2xkIGNvZGUgcmV0dXJuZWQgYW4gZXJyb3IgY29kZSAoYC1FSU5WQUxgKSBpZiB0aGUgc3RhdGUgZGlkbiYjMzk7dCBjaGFuZ2UsIGJ1dCAqbm8qIGNhbGxlciB3YXMgYWN0dWFsbHkgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSBhbnl3YXkhCgpUbyBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkgd2VudCBiYWNrIGFuZCByZS1leGFtaW5lZCB0aGUgY29kZS4gVGhlIGBncmVwYCBvdXRwdXQgY29uZmlybXM6IG5vbmUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb25zIHV0aWxpemUgdGhlIHJldHVybiB2YWx1ZSBvZiBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uYCBvciBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pYC4gU28sIHRoZSBlbnRpcmUgcGF0Y2ggYm9pbHMgZG93biB0byBhIGNvc21ldGljIGNoYW5nZSBhbmQgZG9jdW1lbnRhdGlvbiB1cGRhdGUuIE5vIGJlaGF2aW9yIGhhcyBjaGFuZ2VkLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBjb25jbHVzaW9uIGlzIGNsZWFyOiBXb3J0aEZ1enppbmc9ZmFsc2UuIFRoaXMgaXMgYSBzaW1wbGUgY2xlYW51cCwgY29tcGxldGVseSBzYWZlIGZyb20gYSBmdW5jdGlvbmFsIHBlcnNwZWN0aXZlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAzIDAxOjMyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggb25seSByZWZhY3RvcnMgdGhlIHJldHVybiB0eXBlIG9mIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGFuZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoKSBmcm9tIGludCB0byB2b2lkLiBOb25lIG9mIHRoZSBjYWxsZXJzIHdlcmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSwgc28gdGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYy9yZWZhY3RvcmluZyBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG9ubHkgcmVmYWN0b3JzIHRoZSByZXR1cm4gdHlwZSBvZiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKSBhbmQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKCkgZnJvbSBpbnQgdG8gdm9pZC4gTm9uZSBvZiB0aGUgY2FsbGVycyB3ZXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUsIHNvIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMvcmVmYWN0b3JpbmcgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3QuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDE6MzE6NTAuOTI2Mjk3NTc2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTgwNjcyMzE2NDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG9ubHkgcmVmYWN0b3JzIHRoZSByZXR1cm4gdHlwZSBvZiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKSBhbmQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKCkgZnJvbSBpbnQgdG8gdm9pZC4gTm9uZSBvZiB0aGUgY2FsbGVycyB3ZXJlIGNoZWNraW5nIHRoZSByZXR1cm4gdmFsdWUsIHNvIHRoaXMgaXMgYSBwdXJlbHkgY29zbWV0aWMvcmVmYWN0b3JpbmcgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3QuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMTozMTo1MC45MjYzMDgwMDZaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5NDQzNDcxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDVmYjNmMzE3NDU4ZTg3YTY5N2NiYTRkNjcyMTA0YTdmM2MzMmIxYWFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBBdWcgMyAwMTozMTo0OSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxcbmluZGV4IDlkMWZhYzZlODA4MjkuLjYzOGI4YWE1MjE0ZDcgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaFxcbisrKyBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcXG5AQCAtMjkxOSw4ICsyOTE5LDggQEAgc3RydWN0IGllZWU4MDIxMV90eHEge1xcbiAgKlxcdGF1dG9ub21vdXNseSBtYW5hZ2VzIHRoZSBQUyBzdGF0dXMgb2YgY29ubmVjdGVkIHN0YXRpb25zLiBXaGVuXFxuICAqXFx0dGhpcyBmbGFnIGlzIHNldCBtYWM4MDIxMSB3aWxsIG5vdCB0cmlnZ2VyIFBTIG1vZGUgZm9yIGNvbm5lY3RlZFxcbiAgKlxcdHN0YXRpb25zIGJhc2VkIG9uIHRoZSBQTSBiaXQgb2YgaW5jb21pbmcgZnJhbWVzLlxcbi0gKlxcdFVzZSBpZWVlODAyMTFfc3RhcnRfcHMoKS9pZWVlODAyMV9lbmRfcHMoKSB0byBtYW51YWxseSBjb25maWd1cmVcXG4tICpcXHR0aGUgUFMgbW9kZSBvZiBjb25uZWN0ZWQgc3RhdGlvbnMuXFxuKyAqXFx0VXNlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIHRvIG1hbnVhbGx5IHRvZ2dsZSB0aGUgUFMgbW9kZVxcbisgKlxcdG9mIGNvbm5lY3RlZCBzdGF0aW9ucy5cXG4gICpcXG4gICogQElFRUU4MDIxMV9IV19UWF9BTVBEVV9TRVRVUF9JTl9IVzogVGhlIGRldmljZSBoYW5kbGVzIFRYIEEtTVBEVSBzZXNzaW9uXFxuICAqXFx0c2V0dXAgc3RyaWN0bHkgaW4gSFcuIG1hYzgwMjExIHNob3VsZCBub3QgYXR0ZW1wdCB0byBkbyB0aGlzIGluXFxuQEAgLTU0OTksMTAgKzU0OTksOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3J4X25pKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiAgKlxcbiAgKiBAc3RhOiBjdXJyZW50bHkgY29ubmVjdGVkIHN0YVxcbiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFNcXG4tICpcXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIC1FSU5WQUwgd2hlbiB0aGUgcmVxdWVzdGVkIFBTIG1vZGUgaXMgYWxyZWFkeSBzZXQuXFxuICAqL1xcbi1pbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpO1xcbit2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTtcXG4gXFxuIC8qKlxcbiAgKiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkgLSBQUyB0cmFuc2l0aW9uIGZvciBjb25uZWN0ZWQgc3RhXFxuQEAgLTU1MTQsMTkgKzU1MTIsMTMgQEAgaW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTtcXG4gICpcXG4gICogQHN0YTogY3VycmVudGx5IGNvbm5lY3RlZCBzdGFcXG4gICogQHN0YXJ0OiBzdGFydCBvciBzdG9wIFBTXFxuLSAqXFxuLSAqIFJldHVybjogTGlrZSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKS5cXG4gICovXFxuLXN0YXRpYyBpbmxpbmUgaW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLFxcbitzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgYm9vbCBzdGFydClcXG4ge1xcbi1cXHRpbnQgcmV0O1xcbi1cXG4gXFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xcbi1cXHRyZXQgPSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBzdGFydCk7XFxuK1xcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHN0YXJ0KTtcXG4gXFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuLVxcbi1cXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbiAvKipcXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3J4LmMgYi9uZXQvbWFjODAyMTEvcnguY1xcbmluZGV4IDVlMjZiZThlMjdkOGYuLjQwZWQwM2E3NzViYTMgMTAwNjQ0XFxuLS0tIGEvbmV0L21hYzgwMjExL3J4LmNcXG4rKysgYi9uZXQvbWFjODAyMTEvcnguY1xcbkBAIC0xNzQ0LDcgKzE3NDQsNyBAQCBzdGF0aWMgdm9pZCBzdGFfcHNfZW5kKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbiBcXHRpZWVlODAyMTFfc3RhX3BzX2RlbGl2ZXJfd2FrZXVwKHN0YSk7XFxuIH1cXG4gXFxuLWludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcXG4rdm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcXG4ge1xcbiBcXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IGNvbnRhaW5lcl9vZihwdWJzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcXG4gXFx0Ym9vbCBpbl9wcztcXG5AQCAtMTc1MywxNSArMTc1MywxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXFxuIFxcbiBcXHQvKiBEb24ndCBsZXQgdGhlIHNhbWUgUFMgc3RhdGUgYmUgc2V0IHR3aWNlICovXFxuIFxcdGluX3BzID0gdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1BTX1NUQSk7XFxuLVxcdGlmICgoc3RhcnQgXFx1MDAyNlxcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXFx1MDAyNlxcdTAwMjYgIWluX3BzKSlcXG4tXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuK1xcdGlmIChzdGFydCA9PSBpbl9wcylcXG4rXFx0XFx0cmV0dXJuO1xcbiBcXG4gXFx0aWYgKHN0YXJ0KVxcbiBcXHRcXHRzdGFfcHNfc3RhcnQoc3RhKTtcXG4gXFx0ZWxzZVxcbiBcXHRcXHRzdGFfcHNfZW5kKHN0YSk7XFxuLVxcbi1cXHRyZXR1cm4gMDtcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbik7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMTozMTo1MS40MjE3NDg4MTZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNzU3MTc3NTI2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZWZhY3RvcnMgdGhlIHJldHVybiB0eXBlIG9mIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGFuZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoKSBmcm9tIGludCB0byB2b2lkLiBOb25lIG9mIHRoZSBjYWxsZXJzIHdlcmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSwgc28gdGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYy9yZWZhY3RvcmluZyBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVmYjNmMzE3NDU4ZTg3YTY5N2NiYTRkNjcyMTA0YTdmM2MzMmIxYWFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEF1ZyAzIDAxOjMxOjQ5IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvbWFjODAyMTEuaCBiL2luY2x1ZGUvbmV0L21hYzgwMjExLmhcbmluZGV4IDlkMWZhYzZlODA4MjkuLjYzOGI4YWE1MjE0ZDcgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG4rKysgYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oXG5AQCAtMjkxOSw4ICsyOTE5LDggQEAgc3RydWN0IGllZWU4MDIxMV90eHEge1xuICAqXHRhdXRvbm9tb3VzbHkgbWFuYWdlcyB0aGUgUFMgc3RhdHVzIG9mIGNvbm5lY3RlZCBzdGF0aW9ucy4gV2hlblxuICAqXHR0aGlzIGZsYWcgaXMgc2V0IG1hYzgwMjExIHdpbGwgbm90IHRyaWdnZXIgUFMgbW9kZSBmb3IgY29ubmVjdGVkXG4gICpcdHN0YXRpb25zIGJhc2VkIG9uIHRoZSBQTSBiaXQgb2YgaW5jb21pbmcgZnJhbWVzLlxuLSAqXHRVc2UgaWVlZTgwMjExX3N0YXJ0X3BzKCkvaWVlZTgwMjFfZW5kX3BzKCkgdG8gbWFudWFsbHkgY29uZmlndXJlXG4tICpcdHRoZSBQUyBtb2RlIG9mIGNvbm5lY3RlZCBzdGF0aW9ucy5cbisgKlx0VXNlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIHRvIG1hbnVhbGx5IHRvZ2dsZSB0aGUgUFMgbW9kZVxuKyAqXHRvZiBjb25uZWN0ZWQgc3RhdGlvbnMuXG4gICpcbiAgKiBASUVFRTgwMjExX0hXX1RYX0FNUERVX1NFVFVQX0lOX0hXOiBUaGUgZGV2aWNlIGhhbmRsZXMgVFggQS1NUERVIHNlc3Npb25cbiAgKlx0c2V0dXAgc3RyaWN0bHkgaW4gSFcuIG1hYzgwMjExIHNob3VsZCBub3QgYXR0ZW1wdCB0byBkbyB0aGlzIGluXG5AQCAtNTQ5OSwxMCArNTQ5OSw4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfcnhfbmkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gICpcbiAgKiBAc3RhOiBjdXJyZW50bHkgY29ubmVjdGVkIHN0YVxuICAqIEBzdGFydDogc3RhcnQgb3Igc3RvcCBQU1xuLSAqXG4tICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MuIC1FSU5WQUwgd2hlbiB0aGUgcmVxdWVzdGVkIFBTIG1vZGUgaXMgYWxyZWFkeSBzZXQuXG4gICovXG4taW50IGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTtcbit2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqc3RhLCBib29sIHN0YXJ0KTtcbiBcbiAvKipcbiAgKiBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkgLSBQUyB0cmFuc2l0aW9uIGZvciBjb25uZWN0ZWQgc3RhXG5AQCAtNTUxNCwxOSArNTUxMiwxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsIGJvb2wgc3RhcnQpO1xuICAqXG4gICogQHN0YTogY3VycmVudGx5IGNvbm5lY3RlZCBzdGFcbiAgKiBAc3RhcnQ6IHN0YXJ0IG9yIHN0b3AgUFNcbi0gKlxuLSAqIFJldHVybjogTGlrZSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKS5cbiAgKi9cbi1zdGF0aWMgaW5saW5lIGludCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcbitzdGF0aWMgaW5saW5lIHZvaWQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pKHN0cnVjdCBpZWVlODAyMTFfc3RhICpzdGEsXG4gXHRcdFx0XHRcdFx0ICBib29sIHN0YXJ0KVxuIHtcbi1cdGludCByZXQ7XG4tXG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4tXHRyZXQgPSBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBzdGFydCk7XG4rXHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBzdGFydCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbi1cbi1cdHJldHVybiByZXQ7XG4gfVxuIFxuIC8qKlxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9yeC5jIGIvbmV0L21hYzgwMjExL3J4LmNcbmluZGV4IDVlMjZiZThlMjdkOGYuLjQwZWQwM2E3NzViYTMgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvcnguY1xuKysrIGIvbmV0L21hYzgwMjExL3J4LmNcbkBAIC0xNzQ0LDcgKzE3NDQsNyBAQCBzdGF0aWMgdm9pZCBzdGFfcHNfZW5kKHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuIFx0aWVlZTgwMjExX3N0YV9wc19kZWxpdmVyX3dha2V1cChzdGEpO1xuIH1cbiBcbi1pbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXG4rdm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnB1YnN0YSwgYm9vbCBzdGFydClcbiB7XG4gXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSA9IGNvbnRhaW5lcl9vZihwdWJzdGEsIHN0cnVjdCBzdGFfaW5mbywgc3RhKTtcbiBcdGJvb2wgaW5fcHM7XG5AQCAtMTc1MywxNSArMTc1MywxMyBAQCBpbnQgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3RhICpwdWJzdGEsIGJvb2wgc3RhcnQpXG4gXG4gXHQvKiBEb24ndCBsZXQgdGhlIHNhbWUgUFMgc3RhdGUgYmUgc2V0IHR3aWNlICovXG4gXHRpbl9wcyA9IHRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9QU19TVEEpO1xuLVx0aWYgKChzdGFydCBcdTAwMjZcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXHUwMDI2XHUwMDI2ICFpbl9wcykpXG4tXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0aWYgKHN0YXJ0ID09IGluX3BzKVxuK1x0XHRyZXR1cm47XG4gXG4gXHRpZiAoc3RhcnQpXG4gXHRcdHN0YV9wc19zdGFydChzdGEpO1xuIFx0ZWxzZVxuIFx0XHRzdGFfcHNfZW5kKHN0YSk7XG4tXG4tXHRyZXR1cm4gMDtcbiB9XG4gRVhQT1JUX1NZTUJPTChpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24pO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDE6MzE6NTEuNDIxNzUwODU2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0MjA4NTMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBNaW5vciBtYWM4MDIxMSBSZWZhY3RvcmluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbmAgYW5kIGBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmlgIGluIGBuZXQvbWFjODAyMTFgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGp1c3Qgc2hpZnRpbmcgdGhlIHJldHVybiB0eXBlIHRvIGB2b2lkYCBhbmQgcmVtb3ZpbmcgdGhlIHJldHVybiBzdGF0ZW1lbnQgZnJvbSB0aGVzZSBmdW5jdGlvbnMuIEl0J3MgZnVuY3Rpb25hbGx5IGEgdmVyeSBzbWFsbCBjaGFuZ2UsIGJhc2ljYWxseSByZW1vdmluZyBhIHJldHVybiB2YWx1ZS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLi4uIHdlbGwsIGl0J3MganVzdCBhIHJldHVybiB2YWx1ZSwgbm90IGEgc2lnbmlmaWNhbnQgYmVoYXZpb3JhbCBjaGFuZ2UsIHJpZ2h0P1xuXG5MZXQgbWUgZG91YmxlLWNoZWNrIHRoZSBsb2dpYy4gQmVmb3JlIHRoZSBwYXRjaCwgdGhlcmUgd2FzIGEgY2hlY2s6XG5cbmBgYGNcblx0aWYgKChzdGFydCBcdTAwMjZcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXHUwMDI2XHUwMDI2ICFpbl9wcykpXG5cdFx0cmV0dXJuIC1FSU5WQUw7XG5gYGBcblxuQW5kIG5vdyBpdCdzOlxuXG5gYGBjXG5cdGlmIChzdGFydCA9PSBpbl9wcylcblx0XHRyZXR1cm47XG5gYGBcblxuUmlnaHQsIGl0J3MgZXF1aXZhbGVudC4gYChzdGFydCBcdTAwMjZcdTAwMjYgaW5fcHMpIHx8ICghc3RhcnQgXHUwMDI2XHUwMDI2ICFpbl9wcylgIGlzIGxvZ2ljYWxseSB0aGUgc2FtZSBhcyBgc3RhcnQgPT0gaW5fcHNgLiBUaGUgYmVoYXZpb3IgaXMgZXhhY3RseSB0aGUgc2FtZSwgYnV0IGluc3RlYWQgb2YgcmV0dXJuaW5nIGAtRUlOVkFMYCBmb3IgdGhhdCBjYXNlLCB3ZSBhcmUgbm93IGp1c3QgcmV0dXJuaW5nIGB2b2lkYC4gU28gd2UgYXJlIHJlbW92aW5nIHRoZSByZXR1cm4gdmFsdWUsIG5vdCBjaGFuZ2luZyB0aGUgY29udHJvbCBmbG93IG9mIHRoZSBmdW5jdGlvbi5cblxuTm93LCB0aGUgaW1wb3J0YW50IHF1ZXN0aW9uOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IEl0J3MgYSBwcmV0dHkgbWlub3IgcmVmYWN0b3JpbmcgaW4gbWFjODAyMTEsIHdoaWNoIHVzdWFsbHkgdHJhbnNsYXRlcyB0byBcInByb2JhYmx5IG5vdFwiLiBCdXQsIHlvdSBuZXZlciBrbm93LCByaWdodD8gTXkgbmV4dCBzdGVwIGlzIHRvIHNlZSBpZiBhbnkgY2FsbGVycyBvZiBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uYCBvciBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pYCB3ZXJlIGFjdHVhbGx5ICp1c2luZyogdGhlIHJldHVybiB2YWx1ZS4gRGlkIHRoZSBwYXRjaCBpdHNlbGYgdG91Y2ggYW55IGNhbGxlcnM/IEl0IHNlZW1zIG5vdC4gVGhlIGNoYW5nZXMgYXJlIGlzb2xhdGVkIHRvIHRoZSBmdW5jdGlvbidzIGRlZmluaXRpb24uIFRoYXQgbWVhbnMgZWl0aGVyIG5vIGNhbGxlcnMgY2FyZSBhYm91dCB0aGUgcmV0dXJuIHZhbHVlIChhbmQgd2UncmUgZ29vZCksIG9yIGFub3RoZXIgcmVsYXRlZCBwYXRjaCBtdXN0IGhhdmUgbW9kaWZpZWQgY2FsbGVycy5cblxuU28sIGxldCdzIGdvIGNoZWNrIHRoZSBjYWxsZXJzIGp1c3QgdG8gYmUgc3VyZS4gSXQncyB1bmxpa2VseSwgYnV0IG5vdCBpbXBvc3NpYmxlLCB0aGF0IHNvbWUgb3RoZXIgcGF0Y2ggbWFkZSB0aGUgcmV0dXJuIHZhbHVlIGltcG9ydGFudCBhbmQgbm93IHdlJ3ZlIGJyb2tlbiBzb21ldGhpbmcuIFdlJ3JlIHRhbGtpbmcgbWFjODAyMTEsIHNvIGl0J3MgcHJvYmFibHkgYmV0dGVyIHRvIGRvdWJsZSBjaGVjayB0aGUgY2FsbGVyLCBnaXZlbiBob3cgaW50cmljYXRlIHRoZXNlIGZ1bmN0aW9ucyBjYW4gZ2V0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDY3LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDE6MzE6NTguMDYzODM5ODgzWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MjUzNjg2MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS84MDIxMS9tYWM4MDIxMS1hZHZhbmNlZC5yc3Q9NzU9c3VwcG9ydCBmb3IgcG93ZXJzYXZpbmcgY2xpZW50c1xcbi0tXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdC04Ni1cXHRpZWVlODAyMTFfZnJhbWVfcmVsZWFzZV90eXBlXFxuRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpLzgwMjExL21hYzgwMjExLWFkdmFuY2VkLnJzdDo4NzpcXHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25cXG5Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvODAyMTEvbWFjODAyMTEtYWR2YW5jZWQucnN0Ojg4OlxcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaVxcbkRvY3VtZW50YXRpb24vZHJpdmVyLWFwaS84MDIxMS9tYWM4MDIxMS1hZHZhbmNlZC5yc3QtODktXFx0aWVlZTgwMjExX3N0YV9zZXRfYnVmZmVyZWRcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2ludGVsL2l3bHdpZmkvbXZtL21hYzgwMjExLmM9MzMxNj12b2lkIGl3bF9tdm1fc3RhX3BtX25vdGlmKHN0cnVjdCBpd2xfbXZtICptdm0sIHN0cnVjdCBpd2xfcnhfY21kX2J1ZmZlciAqcnhiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYy0zMzQ2LVxcdFxcdFxcdHN0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvaW50ZWwvaXdsd2lmaS9tdm0vbWFjODAyMTEuYzozMzQ3OlxcdFxcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdGEsIHNsZWVwaW5nKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9pbnRlbC9pd2x3aWZpL212bS9tYWM4MDIxMS5jLTMzNDgtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jPTE0NjM9bXQ3Nl9jaGVja19zdGEoc3RydWN0IG10NzZfZGV2ICpkZXYsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmMtMTUyNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9tZWRpYXRlay9tdDc2L21hYzgwMjExLmM6MTUyNzpcXHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RhLCBwcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvbWVkaWF0ZWsvbXQ3Ni9tYWM4MDIxMS5jLTE1MjgtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYz02MDI5PXJ0dzg5X21hY19jMmhfcHdyX2ludF9ub3RpZnkoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1MzIgbGVuKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWMuYy02MDU0LVxcdHN0YSA9IHJ0d3N0YV90b19zdGEocnR3c3RhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYy5jOjYwNTU6XFx0aWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgcHMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjLmMtNjA1Ni1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jPTExMz12b2lkIHdsMTJ4eF9wc19saW5rX3N0YXJ0KHN0cnVjdCB3bDEyNzEgKndsLCBzdHJ1Y3Qgd2wxMnh4X3ZpZiAqd2x2aWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvcHMuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3BzLmM6MTM5OlxcdGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaShzdGEsIHRydWUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jLTE0MC1cXHRyY3VfcmVhZF91bmxvY2soKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jPTE0OT12b2lkIHdsMTJ4eF9wc19saW5rX2VuZChzdHJ1Y3Qgd2wxMjcxICp3bCwgc3RydWN0IHdsMTJ4eF92aWYgKndsdmlmLCB1OCBobGlkKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3BzLmMtMTY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsY29yZS9wcy5jOjE2OTpcXHRpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RhLCBmYWxzZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2xjb3JlL3BzLmMtMTcwLWVuZDpcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg9MjgyNT1zdHJ1Y3QgaWVlZTgwMjExX3R4cSB7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTI5MjEtICpcXHRzdGF0aW9ucyBiYXNlZCBvbiB0aGUgUE0gYml0IG9mIGluY29taW5nIGZyYW1lcy5cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjI5MjI6ICpcXHRVc2UgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgdG8gbWFudWFsbHkgdG9nZ2xlIHRoZSBQUyBtb2RlXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0yOTIzLSAqXFx0b2YgY29ubmVjdGVkIHN0YXRpb25zLlxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD0zNDYwPXZvaWQgaWVlZTgwMjExX3B1cmdlX3R4X3F1ZXVlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC0zNzM0LSAqIHBvd2Vyc2F2aW5nIGNsaWVudHMgYW5kIHdpbGwgaWdub3JlIHRoZSBQTSBiaXQgaW4gaW5jb21pbmcgZnJhbWVzLlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6MzczNTogKiBEcml2ZXJzIHRoZW4gdXNlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIHRvIGluZm9ybSBtYWM4MDIxMSBvZlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtMzczNi0gKiBzdGF0aW9ucycgcG93ZXJzYXZlIHRyYW5zaXRpb25zLiBJbiB0aGlzIG1vZGUsIG1hYzgwMjExIGFsc28gZG9lc24ndFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD01NDgwPXN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfcnhfbmkoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU0ODgtLyoqXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo1NDg5OiAqIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbiAtIFBTIHRyYW5zaXRpb24gZm9yIGNvbm5lY3RlZCBzdGFcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU0OTAtICpcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUwMi0gKi9cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MDM6dm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSwgYm9vbCBzdGFydCk7XFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTA0LVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUwNS0vKipcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MDY6ICogaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uX25pIC0gUFMgdHJhbnNpdGlvbiBmb3IgY29ubmVjdGVkIHN0YVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUwNy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW4gcHJvY2VzcyBjb250ZXh0KVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUwOC0gKlxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmg6NTUwOTogKiBMaWtlIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGJ1dCBjYW4gYmUgY2FsbGVkIGluIHByb2Nlc3MgY29udGV4dFxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUxMC0gKiAoaW50ZXJuYWxseSBkaXNhYmxlcyBib3R0b20gaGFsdmVzKS4gQ29uY3VycmVudCBjYWxsIHJlc3RyaWN0aW9uIHN0aWxsXFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MTUtICovXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo1NTE2OnN0YXRpYyBpbmxpbmUgdm9pZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSxcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MTctXFx0XFx0XFx0XFx0XFx0XFx0ICBib29sIHN0YXJ0KVxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaC01NTE5LVxcdGxvY2FsX2JoX2Rpc2FibGUoKTtcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1MjA6XFx0aWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKHN0YSwgc3RhcnQpO1xcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUyMS1cXHRsb2NhbF9iaF9lbmFibGUoKTtcXG4tLVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTUzMC0gKiBjb25uZWN0ZWQgc3RhdGlvbiB3YXMgcmVjZWl2ZWQuXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaDo1NTMxOiAqIFRoaXMgbXVzdCBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKClcXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1MzItICogYW5kIHBvc3NpYmx5IGllZWU4MDIxMV9zdGFfdWFwc2RfdHJpZ2dlcigpOyBjYWxscyB0byBhbGwgdGhyZWUgbXVzdFxcbi0tXFxuaW5jbHVkZS9uZXQvbWFjODAyMTEuaD01NTM1PXZvaWQgaWVlZTgwMjExX3N0YV9wc3BvbGwoc3RydWN0IGllZWU4MDIxMV9zdGEgKnN0YSk7XFxuLS1cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oLTU1NDQtICogZnJvbSBhIGNvbm5lY3RlZCBzdGF0aW9uIHdhcyByZWNlaXZlZC5cXG5pbmNsdWRlL25ldC9tYWM4MDIxMS5oOjU1NDU6ICogVGhpcyBtdXN0IGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb24oKVxcbmluY2x1ZGUvbmV0L21hYzgwMjExLmgtNTU0Ni0gKiBhbmQgcG9zc2libHkgaWVlZTgwMjExX3N0YV9wc3BvbGwoKTsgY2FsbHMgdG8gYWxsIHRocmVlIG11c3QgYmVcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTE3MjQ9c3RhdGljIHZvaWQgc3RhX3BzX2VuZChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NDYtXFxubmV0L21hYzgwMjExL3J4LmM6MTc0Nzp2b2lkIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbihzdHJ1Y3QgaWVlZTgwMjExX3N0YSAqcHVic3RhLCBib29sIHN0YXJ0KVxcbm5ldC9tYWM4MDIxMS9yeC5jLTE3NDgte1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTc2My19XFxubmV0L21hYzgwMjExL3J4LmM6MTc2NDpFWFBPUlRfU1lNQk9MKGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbik7XFxubmV0L21hYzgwMjExL3J4LmMtMTc2NS1cXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTQ3MjA9dm9pZCBpZWVlODAyMTFfY2hlY2tfZmFzdF9yeChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQ3ODItXFx0XFx0LyogcGFyYWxsZWwtcnggcmVxdWlyZXMgdGhpcywgYXQgbGVhc3Qgd2l0aCBjYWxscyB0b1xcbm5ldC9tYWM4MDIxMS9yeC5jOjQ3ODM6XFx0XFx0ICogaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKClcXG5uZXQvbWFjODAyMTEvcnguYy00Nzg0LVxcdFxcdCAqL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wM1QwMTozMjowMC40ODkyMTI3NDJaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTA0Mjg4NDcxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1pbm9yIENvZGUgUmVmYWN0b3JpbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgcGF0Y2ggaXMgYSBub24tZXZlbnQuIFRoZSBjb2RlIGNoYW5nZXMgaW52b2x2ZSB0aGVzZSBmdW5jdGlvbnM6IGBpd2xfbXZtX3N0YV9wbV9ub3RpZmAsIGBtdDc2X2NoZWNrX3N0YWAsIGBydHc4OV9tYWNfYzJoX3B3cl9pbnRfbm90aWZ5YCwgYHdsMTJ4eF9wc19saW5rX3N0YXJ0YCwgYW5kIGB3bDEyeHhfcHNfbGlua19lbmRgLiBUaGUgcGF0Y2ggc3BlY2lmaWNhbGx5IGFsdGVycyBgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uYCBhbmQgYGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaWAsIGNoYW5naW5nIHRoZWlyIHJldHVybiB0eXBlIGZyb20gYGludGAgdG8gYHZvaWRgIGFuZCByZW1vdmluZyB0aGUgYC1FSU5WQUxgIHJldHVybiB3aGVuIHRoZSBwb3dlciBzdGF0ZSBkb2Vzbid0IGNoYW5nZS5cblxuTXkgZmlyc3QgdGhvdWdodCB3YXMsIFwiV2FpdCwgaXMgdGhpcyBldmVuIHdvcnRoIGZ1enppbmc/XCIgVGhlIHBhdGNoIHNlZW1zIGluY3JlZGlibHkgbWlub3IsIHB1cmVseSByZWZhY3RvcmluZywgYW5kIGZ1bmN0aW9uYWxseSBpbmVydC4gVGhlIG9sZCBjb2RlIHJldHVybmVkIGFuIGVycm9yIGNvZGUgKGAtRUlOVkFMYCkgaWYgdGhlIHN0YXRlIGRpZG4ndCBjaGFuZ2UsIGJ1dCAqbm8qIGNhbGxlciB3YXMgYWN0dWFsbHkgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSBhbnl3YXkhXG5cblRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSB3ZW50IGJhY2sgYW5kIHJlLWV4YW1pbmVkIHRoZSBjb2RlLiBUaGUgYGdyZXBgIG91dHB1dCBjb25maXJtczogbm9uZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbnMgdXRpbGl6ZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25gIG9yIGBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmlgLiBTbywgdGhlIGVudGlyZSBwYXRjaCBib2lscyBkb3duIHRvIGEgY29zbWV0aWMgY2hhbmdlIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZS4gTm8gYmVoYXZpb3IgaGFzIGNoYW5nZWQuXG5cblRoZXJlZm9yZSwgbXkgZmluYWwgY29uY2x1c2lvbiBpcyBjbGVhcjogV29ydGhGdXp6aW5nPWZhbHNlLiBUaGlzIGlzIGEgc2ltcGxlIGNsZWFudXAsIGNvbXBsZXRlbHkgc2FmZSBmcm9tIGEgZnVuY3Rpb25hbCBwZXJzcGVjdGl2ZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzNSwiT3V0cHV0VG9rZW5zIjoxMDEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NzcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDNUMDE6MzI6MDguOTkzNTAzMTkzWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW10sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBvbmx5IHJlZmFjdG9ycyB0aGUgcmV0dXJuIHR5cGUgb2YgaWVlZTgwMjExX3N0YV9wc190cmFuc2l0aW9uKCkgYW5kIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbl9uaSgpIGZyb20gaW50IHRvIHZvaWQuIE5vbmUgb2YgdGhlIGNhbGxlcnMgd2VyZSBjaGVja2luZyB0aGUgcmV0dXJuIHZhbHVlLCBzbyB0aGlzIGlzIGEgcHVyZWx5IGNvc21ldGljL3JlZmFjdG9yaW5nIGNoYW5nZSB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggb25seSByZWZhY3RvcnMgdGhlIHJldHVybiB0eXBlIG9mIGllZWU4MDIxMV9zdGFfcHNfdHJhbnNpdGlvbigpIGFuZCBpZWVlODAyMTFfc3RhX3BzX3RyYW5zaXRpb25fbmkoKSBmcm9tIGludCB0byB2b2lkLiBOb25lIG9mIHRoZSBjYWxsZXJzIHdlcmUgY2hlY2tpbmcgdGhlIHJldHVybiB2YWx1ZSwgc28gdGhpcyBpcyBhIHB1cmVseSBjb3NtZXRpYy9yZWZhY3RvcmluZyBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflowrmvcp[1] Phase: Running StartedAt: 2026-08-03 01:32:20 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowrmvcp[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-03 01:32:20 +0000 UTC FinishedAt: 2026-08-03 01:32:32 +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,}