Name: series-workflowbznrk Phase: Failed StartedAt: 2026-08-08 00:33:45 +0000 UTC FinishedAt: 2026-08-08 00:36:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbznrk[0] Phase: Succeeded StartedAt: 2026-08-08 00:33:45 +0000 UTC FinishedAt: 2026-08-08 00:36:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbznrk[0].run-triage Phase: Succeeded StartedAt: 2026-08-08 00:33:45 +0000 UTC FinishedAt: 2026-08-08 00:36:28 +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+CgkJCTx0ZD4yMDI2LzA4LzA4IDAwOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBvbmUtbGluZSBmaXggaW4gYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCAoYWRtaW4gcXVldWUgdGltZW91dCkgdGhhdCByZXBsYWNlcyBhIHN5bmNocm9ub3VzIHJlc2V0IHdpdGggYW4gYXN5bmNocm9ub3VzIHNjaGVkdWxlZCByZXNldCB0byBsaWtlbHkgYXZvaWQgYSBkZWFkbG9jay4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRhcmdldGVkIGZ1enppbmcsIGFuZCB0aGUgZXJyb3IgcGF0aCBpcyBkaWZmaWN1bHQgdG8gdHJpZ2dlciByZWxpYWJseSBmcm9tIGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBiNjIwNWQ1OWEyOWVkZGZlMjZmMmJmYmQ1OWM3MDk4NDlhM2E5MDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAwOjM1OjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNcbmluZGV4IDA4NTg3YmY0MGVkNGEuLjIwMzdiMTc0ZTU2MWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNcbkBAIC0xMzIyLDcgJiM0MzsxMzIyLDcgQEAgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcbiBcbiBcdGlmIChlcnIgPT0gLUVUSU1FKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7VGltZW91dCB0byBjb25maWd1cmUgdGhlIGZsb3cgcnVsZSwgdHJpZ2dlciByZXNldFwmIzM0Oyk7XG4tXHRcdGd2ZV9yZXNldChwcml2LCB0cnVlKTtcbiYjNDM7XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcbiBcdH0gZWxzZSBpZiAoIWVycikge1xuIFx0XHRwcml2LVx1MDAzZWZsb3dfcnVsZXNfY2FjaGUucnVsZXNfY2FjaGVfc3luY2VkID0gZmFsc2U7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDA6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgb25lLWxpbmUgZml4IGluIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggKGFkbWluIHF1ZXVlIHRpbWVvdXQpIHRoYXQgcmVwbGFjZXMgYSBzeW5jaHJvbm91cyByZXNldCB3aXRoIGFuIGFzeW5jaHJvbm91cyBzY2hlZHVsZWQgcmVzZXQgdG8gbGlrZWx5IGF2b2lkIGEgZGVhZGxvY2suIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLCBhbmQgdGhlIGVycm9yIHBhdGggaXMgZGlmZmljdWx0IHRvIHRyaWdnZXIgcmVsaWFibHkgZnJvbSBhIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYjYyMDVkNTlhMjllZGRmZTI2ZjJiZmJkNTljNzA5ODQ5YTNhOTA0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwMDozNTo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMKaW5kZXggMDg1ODdiZjQwZWQ0YS4uMjAzN2IxNzRlNTYxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMKQEAgLTEzMjIsNyAmIzQzOzEzMjIsNyBAQCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LAogCiAJaWYgKGVyciA9PSAtRVRJTUUpIHsKIAkJZGV2X2VycigmYW1wO3ByaXYtJmd0O3BkZXYtJmd0O2RldiwgJiMzNDtUaW1lb3V0IHRvIGNvbmZpZ3VyZSB0aGUgZmxvdyBydWxlLCB0cmlnZ2VyIHJlc2V0JiMzNDspOwotCQlndmVfcmVzZXQocHJpdiwgdHJ1ZSk7CiYjNDM7CQlndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7CiAJfSBlbHNlIGlmICghZXJyKSB7CiAJCXByaXYtJmd0O2Zsb3dfcnVsZXNfY2FjaGUucnVsZXNfY2FjaGVfc3luY2VkID0gZmFsc2U7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIHN3YXBwaW5nIG91dCBgZ3ZlX3Jlc2V0KHByaXYsIHRydWUpO2AgZm9yIGBndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7YCB3aXRoaW4gdGhlIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIGZ1bmN0aW9uLgoKTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMsICYjMzQ7SXMgdGhpcyBldmVuIHJlbGV2YW50PyYjMzQ7IEdpdmVuIG15IGtub3dsZWRnZSBvZiB0aGUgR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQgZHJpdmVyIChgZ3ZlYCkgYW5kIGl0cyB1c2UgaW4gR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCBhbmQgY29uc2lkZXJpbmcgc3l6a2FsbGVyJiMzOTtzIGZyZXF1ZW50IHJ1bnMgb24gR0NFLCBJIGNhbiBjb25maWRlbnRseSBzYXksICYjMzQ7WWVzLCB0aGlzIGlzIGRlZmluaXRlbHkgYSByZWFjaGFibGUgY29kZSBwYXRoLiYjMzQ7IFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQuCgpOb3csIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgY29kZSBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGUgZGlyZWN0IHJlc2V0IHdhcyByZXBsYWNlZCB3aXRoIGEgc2NoZWR1bGVkIG9uZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSB3aXRoaW4gYGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZWAgYW5kIGFsc28gaG93IGBndmVfc2NoZWR1bGVfcmVzZXRgIHdvcmtzLiBJcyB0aGVyZSBhIHJhY2UgY29uZGl0aW9uIHRoZXkmIzM5O3JlIHRyeWluZyB0byBhdm9pZD8gQSBsb2NraW5nIGlzc3VlIHBlcmhhcHM/IElzIHRoZSBzY2hlZHVsZSBhIG1lYW5zIG9mIGRlZmVycmluZyBhIHJlc2V0IHRvIGF2b2lkIGEgYmxvY2tpbmcgY2FsbD8gTW9yZSBpbXBvcnRhbnRseSwgaXMgdGhpcyBhIHBvdGVudGlhbCBmaXggZm9yIGEga25vd24gaXNzdWUsIG9yIGEgcHJvYWN0aXZlIGNoYW5nZSB0byBwcmV2ZW50IGEgZnV0dXJlIHByb2JsZW0/IEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIHRoZSBjb21taXQgbWVzc2FnZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZm9jdXMgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlICYjMzQ7d2h5JiMzNDsgYW5kICYjMzQ7aG93JiMzNDsgb2YgdGhpcyBhZGp1c3RtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMxNTpndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMxNjpcdFx0XHQgICAgICAgc3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSAqZmxvd19ydWxlX2NtZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMTktXHRcdFx0R1ZFX0FETUlOUV9DT05GSUdVUkVfRkxPV19SVUxFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMyMDpcdFx0XHRzaXplb2Yoc3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzIxLVx0XHRcdGZsb3dfcnVsZV9jbWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMzM9aW50IGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfYWRtaW5xX2Zsb3dfcnVsZSAqcnVsZSwgdTMyIGxvYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMzNTpcdHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUgZmxvd19ydWxlX2NtZCA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMzYtXHRcdC5vcGNvZGUgPSBjcHVfdG9fYmUxNihHVkVfRkxPV19SVUxFX0NGR19BREQpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzQxOlx0cmV0dXJuIGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShwcml2LCBcdTAwMjZmbG93X3J1bGVfY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNDItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzNDQ9aW50IGd2ZV9hZG1pbnFfZGVsX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHUzMiBsb2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jOjEzNDY6XHRzdHJ1Y3QgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlIGZsb3dfcnVsZV9jbWQgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ3LVx0XHQub3Bjb2RlID0gY3B1X3RvX2JlMTYoR1ZFX0ZMT1dfUlVMRV9DRkdfREVMKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTM1MTpcdHJldHVybiBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUocHJpdiwgXHUwMDI2Zmxvd19ydWxlX2NtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzUyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYz0xMzU0PWludCBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXMoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzU2Olx0c3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSBmbG93X3J1bGVfY21kID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM1Ny1cdFx0Lm9wY29kZSA9IGNwdV90b19iZTE2KEdWRV9GTE9XX1JVTEVfQ0ZHX1JFU0VUKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTM2MDpcdHJldHVybiBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUocHJpdiwgXHUwMDI2Zmxvd19ydWxlX2NtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzYxLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaD01MTQ9c3RydWN0IGd2ZV9hZG1pbnFfZmxvd19ydWxlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaDo1MjE6c3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjItXHRfX2JlMTYgb3Bjb2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oLTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oOjUyODpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKSA9PSA5Mik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyNQoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipBbmFseXppbmcgRmxvdyBSdWxlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhlc2UgdGhyZWUga2V5IGZ1bmN0aW9uczogYGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZWAsIGBndmVfYWRtaW5xX2RlbF9mbG93X3J1bGVgLCBhbmQgYGd2ZV9hZG1pbnFfcmVzZXRfZmxvd19ydWxlc2AuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyB0aGF0IHRoZXkgYWxsIGZ1bm5lbCBkb3duIGludG8gYSBzaW5nbGUgZnVuY3Rpb246IGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgLiBUaGF0JiMzOTtzIHNtYXJ0OyBpdCBjZW50cmFsaXplcyB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gbG9naWMsIHdoaWNoIGlzIGdvb2QgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgcmVkdWNlcyByZWR1bmRhbmN5LiBOb3csIG15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IHNpbmdsZSBjYWxsIHRvIHRob3NlIHRocmVlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgdG8gZnVsbHkgZ3Jhc3AgaG93IGZsb3cgcnVsZXMgYXJlIGFkZGVkLCBkZWxldGVkLCBhbmQgcmVzZXQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gS25vd2luZyAqd2hlcmUqIHRob3NlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpbGwgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndmVfYWRtaW5xX2FkZF9mbG93X3J1bGV8Z3ZlX2FkbWlucV9kZWxfZmxvd19ydWxlfGd2ZV9hZG1pbnFfcmVzZXRfZmxvd19ydWxlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMTU9Z3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMzMzppbnQgZ3ZlX2FkbWlucV9hZGRfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9hZG1pbnFfZmxvd19ydWxlICpydWxlLCB1MzIgbG9jKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTMzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jOjEzNDQ6aW50IGd2ZV9hZG1pbnFfZGVsX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHUzMiBsb2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTM1NDppbnQgZ3ZlX2FkbWlucV9yZXNldF9mbG93X3J1bGVzKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oPTY0Nj1pbnQgZ3ZlX2FkbWlucV9yZXBvcnRfbGlua19zcGVlZChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NjQ3OmludCBndmVfYWRtaW5xX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX2FkbWlucV9mbG93X3J1bGUgKnJ1bGUsIHUzMiBsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NjQ4OmludCBndmVfYWRtaW5xX2RlbF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCB1MzIgbG9jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oOjY0OTppbnQgZ3ZlX2FkbWlucV9yZXNldF9mbG93X3J1bGVzKHN0cnVjdCBndmVfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC02NTAtaW50IGd2ZV9hZG1pbnFfcXVlcnlfZmxvd19ydWxlcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHUxNiBxdWVyeV9vcGNvZGUsIHUzMiBzdGFydGluZ19sb2MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jPTI2Mz1pbnQgZ3ZlX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jOjI4MDpcdGVyciA9IGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZShwcml2LCBydWxlLCBmc3AtXHUwMDNlbG9jYXRpb24pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmMtMjgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jPTI5MD1pbnQgZ3ZlX2RlbF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jOjI5NzpcdHJldHVybiBndmVfYWRtaW5xX2RlbF9mbG93X3J1bGUocHJpdiwgZnNwLVx1MDAzZWxvY2F0aW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE4NDU9aW50IGd2ZV9mbG93X3J1bGVzX3Jlc2V0KHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTg0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxODUwOlx0cmV0dXJuIGd2ZV9hZG1pbnFfcmVzZXRfZmxvd19ydWxlcyhwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xODUxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzY2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBFdGh0b29sIEZsb3cgUnVsZSBJbnRlcmFjdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZXNlIGZ1bmN0aW9ucywgYGd2ZV9hZGRfZmxvd19ydWxlYCBhbmQgYGd2ZV9kZWxfZmxvd19ydWxlYC4gVGhlIGNvbnRleHQgaXMgZXRodG9vbCwgYW5kIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGV5JiMzOTtyZSBiZWluZyBpbnZva2VkLiBUaGUgY3J1Y2lhbCBzdGVwIGlzIHZlcmlmeWluZyB0aGF0IGV0aHRvb2wgaXMsIGluIGZhY3QsIHRoZSBjYWxsZXIuIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGNoZWNrLCBvZiBjb3Vyc2UsIGJ1dCBhc3N1bXB0aW9ucyBhcmUgYWx3YXlzIGRhbmdlcm91cywgYW5kIGFuIGluY29ycmVjdCBjYWxsaW5nIGNoYWluIGNhbiBsZWFkIHRvIHNvbWUgcHJldHR5IGduYXJseSBkZWJ1Z2dpbmcgc2Vzc2lvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgbGlua2FnZSBiZXR3ZWVuIGV0aHRvb2wgYW5kIHRoZXNlIGZ1bmN0aW9ucyB0byBwcm9jZWVkIHdpdGggYW55IGFuYWx5c2lzIG9yIG1vZGlmaWNhdGlvbnMgd2l0aCBjb25maWRlbmNlLiBTaW1wbGUgZW5vdWdoLCBidXQgbmVjZXNzYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d2ZV9hZGRfZmxvd19ydWxlfGd2ZV9kZWxfZmxvd19ydWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaD0xMzE5PWludCBndmVfZ2V0X2Zsb3dfcnVsZV9pZHMoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLCB1MzIgKnJ1bGVfbG9jcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjEzMjA6aW50IGd2ZV9hZGRfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjEzMjE6aW50IGd2ZV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTEzMjItaW50IGd2ZV9mbG93X3J1bGVzX3Jlc2V0KHN0cnVjdCBndmVfcHJpdiAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jPTgxOD1zdGF0aWMgaW50IGd2ZV9zZXRfcnhuZmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtODI3LVx0Y2FzZSBFVEhUT09MX1NSWENMU1JMSU5TOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jOjgyODpcdFx0ZXJyID0gZ3ZlX2FkZF9mbG93X3J1bGUocHJpdiwgY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYy04MjktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jLTgzMC1cdGNhc2UgRVRIVE9PTF9TUlhDTFNSTERFTDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYzo4MzE6XHRcdGVyciA9IGd2ZV9kZWxfZmxvd19ydWxlKHByaXYsIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtODMyLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYz0yMzM9aW50IGd2ZV9nZXRfZmxvd19ydWxlX2lkcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQsIHUzMiAqcnVsZV9sb2NzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jOjI2MzppbnQgZ3ZlX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmMtMjY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYzoyOTA6aW50IGd2ZV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5MS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBHVkUgRHJpdmVyIFJlc2V0IExvZ2ljKioKCk9rYXksIHNvIGBndmVfYWRkX2Zsb3dfcnVsZWAgYW5kIGBndmVfZGVsX2Zsb3dfcnVsZWAgYXJlIGFjY2Vzc2VkIHRocm91Z2ggYGV0aHRvb2xgIGNvbW1hbmRzLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gVGhpcyBwYXRjaCBjaGFuZ2VzIGEgc3luY2hyb25vdXMgcmVzZXQgdG8gYW4gYXN5bmNocm9ub3VzIG9uZSB1c2luZyBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgdGhlIHJlc2V0IGZyb20gaW1tZWRpYXRlIHRvIHNjaGVkdWxlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/CgpJdCYjMzk7cyBhIHJlbGF0aXZlbHkgc21hbGwgY2hhbmdlLCBtb3N0bHkgcmVsYXRlZCB0byBlcnJvciBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGEgdGltZW91dCBzY2VuYXJpby4gVGhlIHRpbWVvdXQgb2NjdXJzIHdoZW4gYGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZWAgcmV0dXJucyBgLUVUSU1FYCwgbWVhbmluZyB0aGUgYWRtaW4gcXVldWUgY29tbWFuZCB0aW1lZCBvdXQuIENhbiBJIGNyYWZ0IGEgZnV6emVyIHRoYXQgKnJlbGlhYmx5KiB0cmlnZ2VycyB0aGlzPyBHaXZlbiB0aGF0IHRoZXNlIHRpbWVvdXRzIGFyZSB1c3VhbGx5IGhhcmR3YXJlIG9yIGZpcm13YXJlLXJlbGF0ZWQsIGl0IHNlZW1zIHVubGlrZWx5LiBIb3dldmVyLCBzeXprYWxsZXIgcnVucyBpbiBHQ0UsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHVzaW5nIHRoZSByZWFsIEdWRSBkcml2ZXIuIFNvLCBjb3VsZCAqaXQqIHBvdGVudGlhbGx5IGdlbmVyYXRlIGFuIGFkbWluIHF1ZXVlIHRpbWVvdXQ/IFBlcmhhcHMgaWYgdGhlIGZ1enplciBjb3VsZCBzdGFsbCB0aGUgYWRtaW4gcXVldWUgb3Igc29tZWhvdyBzZW5kIGEgY29tcGxldGVseSBtYWxmb3JtZWQgY29tbWFuZCB0aGF0IHRoZSBiYWNrZW5kIGp1c3QgZHJvcHMuIEJ1dCBldmVuIGlmIGl0IGNvdWxkLCB0aGUgY2hhbmdlIGlzIGp1c3Qgc2NoZWR1bGluZyB0aGUgcmVzZXQsIG5vdCBhIHNpZ25pZmljYW50IG92ZXJoYXVsIG9mIHRoZSByZXNldCBsb2dpYyBpdHNlbGYuCgpUaGlua2luZyBhYm91dCBpdCwgaXMgdGhlcmUgYW55IG5ldyBjb2RlIHRvIGV2ZW4gZnV6ej8gYGd2ZV9zY2hlZHVsZV9yZXNldGAgaXMgYWxyZWFkeSBwYXJ0IG9mIHRoZSBkcml2ZXIuIFNvLCBwZXJoYXBzIHRoZSAqaW1wYWN0KiBvZiBhIHRpbWVvdXQgaXMgZGlmZmVyZW50LCBidXQgdGhlIGNvZGUgYmVpbmcgZXhlY3V0ZWQgaXMgbm90IG5ldy4gTWlnaHQgYmUgd29ydGggdGFraW5nIGEgcXVpY2sgbG9vayBhdCBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCBqdXN0IHRvIGNvbmZpcm0sIGJ1dCBvdmVyYWxsLCB0aGUgYWRkZWQgdmFsdWUgc2VlbXMgbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndmVfc2NoZWR1bGVfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oPTEyOTc9c3RydWN0IHBhZ2VfcG9vbCAqZ3ZlX3J4X2NyZWF0ZV9wYWdlX3Bvb2woc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMTMwMS0vKiBSZXNldCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaDoxMzAyOnZvaWQgZ3ZlX3NjaGVkdWxlX3Jlc2V0KHN0cnVjdCBndmVfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTEzMDMtaW50IGd2ZV9yZXNldChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGJvb2wgYXR0ZW1wdF90ZWFyZG93bik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM9MTMxNT1ndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMjQtXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7VGltZW91dCB0byBjb25maWd1cmUgdGhlIGZsb3cgcnVsZSwgdHJpZ2dlciByZXNldFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzI1Olx0XHRndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzI2LVx0fSBlbHNlIGlmICghZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTExNjk9dm9pZCBndmVfZnJlZV9xdWV1ZV9wYWdlX2xpc3Qoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMTk4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjExOTk6dm9pZCBndmVfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyMDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0yMDg1PXN0YXRpYyB2b2lkIGd2ZV90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDkzLVx0aWYgKCFndmVfdHhfdGltZW91dF90cnlfcV9raWNrKHByaXYsIHR4cXVldWUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjIwOTQ6XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDk1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM9NTM0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3ZlX3J4X2NvcHlfdG9fcG9vbChzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtNTUwLVx0XHRpZiAodW5saWtlbHkocmVjeWNsZSBcdTAwM2MgMCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM6NTUxOlx0XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChyeC1cdTAwM2VndmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy01NTItXHRcdFx0cmV0dXJuIE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYz02NDg9c3RhdGljIHN0cnVjdCBza19idWZmICpndmVfcnhfc2tiKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTY3MC1cdFx0aWYgKHVubGlrZWx5KHJlY3ljbGUgXHUwMDNjIDApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jOjY3MTpcdFx0XHRndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTY3Mi1cdFx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jPTc5Nj1zdGF0aWMgdm9pZCBndmVfcngoc3RydWN0IGd2ZV9yeF9yaW5nICpyeCwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTgzMi1cdFx0bmFwaV9mcmVlX2ZyYWdzKG5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYzo4MzM6XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChyeC1cdTAwM2VndmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy04MzQtXHRcdGdvdG8gZmluaXNoX2ZyYWc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYz05NDc9c3RhdGljIGJvb2wgZ3ZlX3J4X3JlZmlsbF9idWZmZXJzKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTk3Ny1cdFx0XHRcdGlmICghcngtXHUwMDNlZGF0YS5yYXdfYWRkcmVzc2luZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM6OTc4Olx0XHRcdFx0XHRndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTk3OS1cdFx0XHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jPTEwMDA9c3RhdGljIGludCBndmVfY2xlYW5fcnhfZG9uZShzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4LCBpbnQgYnVkZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtMTAzNi1cdFx0XHQgICAgR1ZFX1NFUU5PKGRlc2MtXHUwMDNlZmxhZ3Nfc2VxKSwgcngtXHUwMDNlZGVzYy5zZXFubyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jOjEwMzc6XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChyeC1cdTAwM2VndmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy0xMDM4LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDkzCgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogNTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGEgTWlub3IgR1ZFIERyaXZlciBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGFuZCBpdCYjMzk7cyBhIHNpbXBsZSBzdWJzdGl0dXRpb246IHJlcGxhY2luZyBhIGRpcmVjdCBjYWxsIHRvIGBndmVfcmVzZXQocHJpdiwgdHJ1ZSlgIHdpdGggYGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KWAuICBUaGUga2V5IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IGBndmVfcmVzZXRgIGlzIHN5bmNocm9ub3VzLCB3aGlsZSBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCB1dGlsaXplcyBhIHdvcmtxdWV1ZS4gVGhpcyBsb29rcyBsaWtlIGEgdmVyeSBtaW5vciB0d2VhayBpbiBlcnJvciBoYW5kbGluZy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gc2lkZXN0ZXAgYSBidWcgd2hlcmUgYGd2ZV9yZXNldGAgd2FzIHBvdGVudGlhbGx5IGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dCDigJMgbWF5YmUgaG9sZGluZyBhIGxvY2sgaXQgc2hvdWxkbiYjMzk7dCwgb3IgZnJvbSBhbiBhdG9taWMgY29udGV4dCwgb3IganVzdCBpbiBhIGJsb2NraW5nIHNpdHVhdGlvbiB3aGVyZSB0aGF0JiMzOTtzIGEgbm8tZ28uCgpOb3csIGxldCYjMzk7cyB0cmFjZSB0aGlzLiAgYGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZWAg4oCTIHdoZXJlIHRoZSBjaGFuZ2UgaGFwcGVucyDigJMgaXMgY2FsbGVkIGZyb20gZXRodG9vbCwgd2hpY2ggKnNob3VsZCogYmUgcHJvY2VzcyBjb250ZXh0LCByaWdodD8gQnV0LCBhbmQgdGhpcyBpcyB0aGUgY3J1Y2lhbCBwYXJ0LCBgZ3ZlX3Jlc2V0YCBtaWdodCBiZSB0YWtpbmcgbG9ja3MgdGhhdCBhcmUgKmFscmVhZHkqIGhlbGQgYnkgdGhlIGV0aHRvb2wgcGF0aC4gIEZvciBpbnN0YW5jZSwgYHJ0bmxfbG9ja2AgY291bGQgYmUgdGhlIGN1bHByaXQuICBJZiBgZXRodG9vbGAgYWxyZWFkeSBob2xkcyBgcnRubF9sb2NrYCBhbmQgdGhlbiBgZ3ZlX3Jlc2V0YCB0cmllcyB0byB0YWtlIGl0LCAqYmFtKiDigJMgZGVhZGxvY2suIFRoaXMgaXMgbGlrZWx5IHRoZSByb290IG9mIHRoZSBwcm9ibGVtLiBTY2hlZHVsaW5nIHRoZSByZXNldCB0aHJvdWdoIHRoZSB3b3JrcXVldWUgYXZvaWRzIHRoaXMgY29udGVudGlvbi4KClNvLCB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgcGF0Y2ggd29ydGggdGhyb3dpbmcgZnV6emluZyBhdD8gIEl0JiMzOTtzIGEgb25lLWxpbmUgZml4IG9uIGFuIGVycm9yIHBhdGggKGEgdGltZW91dCksIGVzc2VudGlhbGx5IHByZXZlbnRpbmcgYSBkZWFkbG9jayBvciBzaW1pbGFyIGNvbnRleHQgaXNzdWUuIEl0JiMzOTtzIGEgbG93LXJpc2ssIGRlZmVuc2l2ZSBjaGFuZ2UuIFRoZSBlcnJvciBwYXRoIGl0c2VsZiBpcyB0b3VnaCB0byB0cmlnZ2VyLiBBbiBhZG1pbnEgdGltZW91dCBpcyByZXF1aXJlZCwgbm90IHNvbWV0aGluZyB0aGF0JiMzOTtzIGxpa2VseSB0byBoYXBwZW4gd2l0aCBmcmVxdWVudCB1c2UuIFRoZSBwYXRjaCBpcyBub3QgaW50cm9kdWNpbmcgbm92ZWwgZnVuY3Rpb25hbGl0eTsgaXQmIzM5O3MgbWVyZWx5IHVzaW5nIGFuIGV4aXN0aW5nIGhlbHBlciB0byBkbyB3aGF0IHdhcyBwcmV2aW91c2x5IGRvbmUgc3luY2hyb25vdXNseS4KCkNvbnNpZGVyaW5nIGFsbCB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIGxlYW4gdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQmIzM5O3MgYSB0cml2aWFsIGVycm9yIGhhbmRsaW5nIGZpeCBpbiBhIGhhcmQtdG8taGl0IHNjZW5hcmlvIGFuZCBhZGRzIG5vIG5ldyBsb2dpYyB0byBmdXp6LgoKTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBhZ2FpbiB0byBiZSBzdXJlOgoKYGBgZGlmZgotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYwpAQCAtMTMyMiw3ICYjNDM7MTMyMiw3IEBAIGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsCiAKIAlpZiAoZXJyID09IC1FVElNRSkgewogCQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0O1RpbWVvdXQgdG8gY29uZmlndXJlIHRoZSBmbG93IHJ1bGUsIHRyaWdnZXIgcmVzZXQmIzM0Oyk7Ci0JCWd2ZV9yZXNldChwcml2LCB0cnVlKTsKJiM0MzsJCWd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTsKIAl9IGVsc2UgaWYgKCFlcnIpIHsKIAkJcHJpdi0mZ3Q7Zmxvd19ydWxlc19jYWNoZS5ydWxlc19jYWNoZV9zeW5jZWQgPSBmYWxzZTsKIAl9CmBgYAoKWXVwLCBzaW1wbGUuICBUaGlzIHJlYWxseSBkb2VzIGp1c3Qgb2ZmbG9hZCB0aGUgcmVzZXQgdG8gYSB3b3JrcXVldWUgdG8gYXZvaWQgYSBwb3RlbnRpYWwgbG9jayBjb250ZW50aW9uIGlzc3VlLiBWZXJ5IHN0cmFpZ2h0Zm9yd2FyZC4gIFNpbmNlIGl0JiMzOTtzIG9uIGEgdGltZW91dCBlcnJvciBwYXRoIGFuZCBvbmx5IGFsdGVycyBhIHNtYWxsIHBvcnRpb24gb2YgdGhlIGNvZGUsIGFuZCB0aGVyZSBpcyBubyBuZXcgZnVuY3Rpb25hbGl0eSwgZnV6emluZyBpc24mIzM5O3QgZ29pbmcgdG8gYmUgdGhlIGhpZ2hlc3QgeWllbGQgaGVyZS4gVGhlcmVmb3JlIEkmIzM5O2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIG9uZS1saW5lIGZpeCBpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoIChhZG1pbiBxdWV1ZSB0aW1lb3V0KSB0aGF0IHJlcGxhY2VzIGEgc3luY2hyb25vdXMgcmVzZXQgd2l0aCBhbiBhc3luY2hyb25vdXMgc2NoZWR1bGVkIHJlc2V0IHRvIGxpa2VseSBhdm9pZCBhIGRlYWRsb2NrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZywgYW5kIHRoZSBlcnJvciBwYXRoIGlzIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHJlbGlhYmx5IGZyb20gYSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIG9uZS1saW5lIGZpeCBpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoIChhZG1pbiBxdWV1ZSB0aW1lb3V0KSB0aGF0IHJlcGxhY2VzIGEgc3luY2hyb25vdXMgcmVzZXQgd2l0aCBhbiBhc3luY2hyb25vdXMgc2NoZWR1bGVkIHJlc2V0IHRvIGxpa2VseSBhdm9pZCBhIGRlYWRsb2NrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZywgYW5kIHRoZSBlcnJvciBwYXRoIGlzIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHJlbGlhYmx5IGZyb20gYSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDA6MzU6NDcuNjgzMTgyNzg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk2MzM0NTQ0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIG9uZS1saW5lIGZpeCBpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoIChhZG1pbiBxdWV1ZSB0aW1lb3V0KSB0aGF0IHJlcGxhY2VzIGEgc3luY2hyb25vdXMgcmVzZXQgd2l0aCBhbiBhc3luY2hyb25vdXMgc2NoZWR1bGVkIHJlc2V0IHRvIGxpa2VseSBhdm9pZCBhIGRlYWRsb2NrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZywgYW5kIHRoZSBlcnJvciBwYXRoIGlzIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHJlbGlhYmx5IGZyb20gYSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo0Ny42ODMxODkzNTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzM0MjE2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBiNjIwNWQ1OWEyOWVkZGZlMjZmMmJmYmQ1OWM3MDk4NDlhM2E5MDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgOCAwMDozNTo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jXFxuaW5kZXggMDg1ODdiZjQwZWQ0YS4uMjAzN2IxNzRlNTYxYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jXFxuQEAgLTEzMjIsNyArMTMyMiw3IEBAIGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuIFxcbiBcXHRpZiAoZXJyID09IC1FVElNRSkge1xcbiBcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJUaW1lb3V0IHRvIGNvbmZpZ3VyZSB0aGUgZmxvdyBydWxlLCB0cmlnZ2VyIHJlc2V0XFxcIik7XFxuLVxcdFxcdGd2ZV9yZXNldChwcml2LCB0cnVlKTtcXG4rXFx0XFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHByaXYpO1xcbiBcXHR9IGVsc2UgaWYgKCFlcnIpIHtcXG4gXFx0XFx0cHJpdi1cXHUwMDNlZmxvd19ydWxlc19jYWNoZS5ydWxlc19jYWNoZV9zeW5jZWQgPSBmYWxzZTtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo0OC4xMzczMTAyMDlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyOTE3OTMxMzg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBvbmUtbGluZSBmaXggaW4gYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCAoYWRtaW4gcXVldWUgdGltZW91dCkgdGhhdCByZXBsYWNlcyBhIHN5bmNocm9ub3VzIHJlc2V0IHdpdGggYW4gYXN5bmNocm9ub3VzIHNjaGVkdWxlZCByZXNldCB0byBsaWtlbHkgYXZvaWQgYSBkZWFkbG9jay4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRhcmdldGVkIGZ1enppbmcsIGFuZCB0aGUgZXJyb3IgcGF0aCBpcyBkaWZmaWN1bHQgdG8gdHJpZ2dlciByZWxpYWJseSBmcm9tIGEgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGI2MjA1ZDU5YTI5ZWRkZmUyNmYyYmZiZDU5YzcwOTg0OWEzYTkwNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMDA6MzU6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jXG5pbmRleCAwODU4N2JmNDBlZDRhLi4yMDM3YjE3NGU1NjFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jXG5AQCAtMTMyMiw3ICsxMzIyLDcgQEAgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcbiBcbiBcdGlmIChlcnIgPT0gLUVUSU1FKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCJUaW1lb3V0IHRvIGNvbmZpZ3VyZSB0aGUgZmxvdyBydWxlLCB0cmlnZ2VyIHJlc2V0XCIpO1xuLVx0XHRndmVfcmVzZXQocHJpdiwgdHJ1ZSk7XG4rXHRcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcbiBcdH0gZWxzZSBpZiAoIWVycikge1xuIFx0XHRwcml2LVx1MDAzZWZsb3dfcnVsZXNfY2FjaGUucnVsZXNfY2FjaGVfc3luY2VkID0gZmFsc2U7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo0OC4xMzczMTE0ODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk0MDU2NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNgLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIHN3YXBwaW5nIG91dCBgZ3ZlX3Jlc2V0KHByaXYsIHRydWUpO2AgZm9yIGBndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7YCB3aXRoaW4gdGhlIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIGZ1bmN0aW9uLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cywgXCJJcyB0aGlzIGV2ZW4gcmVsZXZhbnQ/XCIgR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBHb29nbGUgVmlydHVhbCBFdGhlcm5ldCBkcml2ZXIgKGBndmVgKSBhbmQgaXRzIHVzZSBpbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIGFuZCBjb25zaWRlcmluZyBzeXprYWxsZXIncyBmcmVxdWVudCBydW5zIG9uIEdDRSwgSSBjYW4gY29uZmlkZW50bHkgc2F5LCBcIlllcywgdGhpcyBpcyBkZWZpbml0ZWx5IGEgcmVhY2hhYmxlIGNvZGUgcGF0aC5cIiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQuXG5cbk5vdywgSSdsbCBkaXZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhlIGRpcmVjdCByZXNldCB3YXMgcmVwbGFjZWQgd2l0aCBhIHNjaGVkdWxlZCBvbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIGFuZCBhbHNvIGhvdyBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCB3b3Jrcy4gSXMgdGhlcmUgYSByYWNlIGNvbmRpdGlvbiB0aGV5J3JlIHRyeWluZyB0byBhdm9pZD8gQSBsb2NraW5nIGlzc3VlIHBlcmhhcHM/IElzIHRoZSBzY2hlZHVsZSBhIG1lYW5zIG9mIGRlZmVycmluZyBhIHJlc2V0IHRvIGF2b2lkIGEgYmxvY2tpbmcgY2FsbD8gTW9yZSBpbXBvcnRhbnRseSwgaXMgdGhpcyBhIHBvdGVudGlhbCBmaXggZm9yIGEga25vd24gaXNzdWUsIG9yIGEgcHJvYWN0aXZlIGNoYW5nZSB0byBwcmV2ZW50IGEgZnV0dXJlIHByb2JsZW0/IEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBmb2N1cyBub3cgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgXCJ3aHlcIiBhbmQgXCJob3dcIiBvZiB0aGlzIGFkanVzdG1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo1My40MzEzNzAwNThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjAyMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMTQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jOjEzMTU6Z3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzE2OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlICpmbG93X3J1bGVfY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTMxOS1cXHRcXHRcXHRHVkVfQURNSU5RX0NPTkZJR1VSRV9GTE9XX1JVTEUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMyMDpcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTMyMS1cXHRcXHRcXHRmbG93X3J1bGVfY21kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMzM9aW50IGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfYWRtaW5xX2Zsb3dfcnVsZSAqcnVsZSwgdTMyIGxvYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzM0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzM1OlxcdHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUgZmxvd19ydWxlX2NtZCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzM2LVxcdFxcdC5vcGNvZGUgPSBjcHVfdG9fYmUxNihHVkVfRkxPV19SVUxFX0NGR19BREQpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzQxOlxcdHJldHVybiBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUocHJpdiwgXFx1MDAyNmZsb3dfcnVsZV9jbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNDItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM9MTM0ND1pbnQgZ3ZlX2FkbWlucV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgdTMyIGxvYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzQ2OlxcdHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUgZmxvd19ydWxlX2NtZCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ3LVxcdFxcdC5vcGNvZGUgPSBjcHVfdG9fYmUxNihHVkVfRkxPV19SVUxFX0NGR19ERUwpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzUxOlxcdHJldHVybiBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUocHJpdiwgXFx1MDAyNmZsb3dfcnVsZV9jbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNTItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM9MTM1ND1pbnQgZ3ZlX2FkbWlucV9yZXNldF9mbG93X3J1bGVzKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzU2OlxcdHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUgZmxvd19ydWxlX2NtZCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzU3LVxcdFxcdC5vcGNvZGUgPSBjcHVfdG9fYmUxNihHVkVfRkxPV19SVUxFX0NGR19SRVNFVCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jOjEzNjA6XFx0cmV0dXJuIGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShwcml2LCBcXHUwMDI2Zmxvd19ydWxlX2NtZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM2MS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaD01MTQ9c3RydWN0IGd2ZV9hZG1pbnFfZmxvd19ydWxlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oLTUyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaDo1MjE6c3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmgtNTIyLVxcdF9fYmUxNiBvcGNvZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NTI4OnN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUpID09IDkyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM1OjUzLjQ3NjYzNjkyN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzA3NzM2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkFuYWx5emluZyBGbG93IFJ1bGUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoZXNlIHRocmVlIGtleSBmdW5jdGlvbnM6IGBndmVfYWRtaW5xX2FkZF9mbG93X3J1bGVgLCBgZ3ZlX2FkbWlucV9kZWxfZmxvd19ydWxlYCwgYW5kIGBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXNgLiBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgdGhhdCB0aGV5IGFsbCBmdW5uZWwgZG93biBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uOiBgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlYC4gVGhhdCdzIHNtYXJ0OyBpdCBjZW50cmFsaXplcyB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gbG9naWMsIHdoaWNoIGlzIGdvb2QgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgcmVkdWNlcyByZWR1bmRhbmN5LiBOb3csIG15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgc2luZ2xlIGNhbGwgdG8gdGhvc2UgdGhyZWUgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyB0byBmdWxseSBncmFzcCBob3cgZmxvdyBydWxlcyBhcmUgYWRkZWQsIGRlbGV0ZWQsIGFuZCByZXNldCB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLiBLbm93aW5nICp3aGVyZSogdGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBwcm9wZXJseSBldmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTI1LCJPdXRwdXRUb2tlbnMiOjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDA6MzU6NTcuMTQ3NDEzMTIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDg0MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZXxndmVfYWRtaW5xX2RlbF9mbG93X3J1bGV8Z3ZlX2FkbWlucV9yZXNldF9mbG93X3J1bGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMTU9Z3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMzMzppbnQgZ3ZlX2FkbWlucV9hZGRfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9hZG1pbnFfZmxvd19ydWxlICpydWxlLCB1MzIgbG9jKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzQ0OmludCBndmVfYWRtaW5xX2RlbF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCB1MzIgbG9jKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzU0OmludCBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXMoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg9NjQ2PWludCBndmVfYWRtaW5xX3JlcG9ydF9saW5rX3NwZWVkKHN0cnVjdCBndmVfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NjQ3OmludCBndmVfYWRtaW5xX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX2FkbWlucV9mbG93X3J1bGUgKnJ1bGUsIHUzMiBsb2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oOjY0ODppbnQgZ3ZlX2FkbWlucV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgdTMyIGxvYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NjQ5OmludCBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXMoc3RydWN0IGd2ZV9wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC02NTAtaW50IGd2ZV9hZG1pbnFfcXVlcnlfZmxvd19ydWxlcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHUxNiBxdWVyeV9vcGNvZGUsIHUzMiBzdGFydGluZ19sb2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmM9MjYzPWludCBndmVfYWRkX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmM6MjgwOlxcdGVyciA9IGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZShwcml2LCBydWxlLCBmc3AtXFx1MDAzZWxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yODEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYz0yOTA9aW50IGd2ZV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYzoyOTc6XFx0cmV0dXJuIGd2ZV9hZG1pbnFfZGVsX2Zsb3dfcnVsZShwcml2LCBmc3AtXFx1MDAzZWxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yOTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE4NDU9aW50IGd2ZV9mbG93X3J1bGVzX3Jlc2V0KHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xODQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxODUwOlxcdHJldHVybiBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXMocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE4NTEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo1Ny4xOTU1MDM0MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM1OTg2NjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEV0aHRvb2wgRmxvdyBSdWxlIEludGVyYWN0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIGluIG9uIHRoZXNlIGZ1bmN0aW9ucywgYGd2ZV9hZGRfZmxvd19ydWxlYCBhbmQgYGd2ZV9kZWxfZmxvd19ydWxlYC4gVGhlIGNvbnRleHQgaXMgZXRodG9vbCwgYW5kIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGV5J3JlIGJlaW5nIGludm9rZWQuIFRoZSBjcnVjaWFsIHN0ZXAgaXMgdmVyaWZ5aW5nIHRoYXQgZXRodG9vbCBpcywgaW4gZmFjdCwgdGhlIGNhbGxlci4gSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBjaGVjaywgb2YgY291cnNlLCBidXQgYXNzdW1wdGlvbnMgYXJlIGFsd2F5cyBkYW5nZXJvdXMsIGFuZCBhbiBpbmNvcnJlY3QgY2FsbGluZyBjaGFpbiBjYW4gbGVhZCB0byBzb21lIHByZXR0eSBnbmFybHkgZGVidWdnaW5nIHNlc3Npb25zLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgbGlua2FnZSBiZXR3ZWVuIGV0aHRvb2wgYW5kIHRoZXNlIGZ1bmN0aW9ucyB0byBwcm9jZWVkIHdpdGggYW55IGFuYWx5c2lzIG9yIG1vZGlmaWNhdGlvbnMgd2l0aCBjb25maWRlbmNlLiBTaW1wbGUgZW5vdWdoLCBidXQgbmVjZXNzYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzY2LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDA6MzY6MDAuNTMxNDkzODIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODY1Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd2ZV9hZGRfZmxvd19ydWxlfGd2ZV9kZWxfZmxvd19ydWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9MTMxOT1pbnQgZ3ZlX2dldF9mbG93X3J1bGVfaWRzKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCwgdTMyICpydWxlX2xvY3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6MTMyMDppbnQgZ3ZlX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjEzMjE6aW50IGd2ZV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0xMzIyLWludCBndmVfZmxvd19ydWxlc19yZXNldChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jPTgxOD1zdGF0aWMgaW50IGd2ZV9zZXRfcnhuZmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYy04MjctXFx0Y2FzZSBFVEhUT09MX1NSWENMU1JMSU5TOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYzo4Mjg6XFx0XFx0ZXJyID0gZ3ZlX2FkZF9mbG93X3J1bGUocHJpdiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtODI5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYy04MzAtXFx0Y2FzZSBFVEhUT09MX1NSWENMU1JMREVMOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYzo4MzE6XFx0XFx0ZXJyID0gZ3ZlX2RlbF9mbG93X3J1bGUocHJpdiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtODMyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmM9MjMzPWludCBndmVfZ2V0X2Zsb3dfcnVsZV9pZHMoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLCB1MzIgKnJ1bGVfbG9jcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYzoyNjM6aW50IGd2ZV9hZGRfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmMtMjg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jOjI5MDppbnQgZ3ZlX2RlbF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM2OjAwLjU4MTM2NTUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA3MDY0MjkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBHVkUgRHJpdmVyIFJlc2V0IExvZ2ljKipcblxuT2theSwgc28gYGd2ZV9hZGRfZmxvd19ydWxlYCBhbmQgYGd2ZV9kZWxfZmxvd19ydWxlYCBhcmUgYWNjZXNzZWQgdGhyb3VnaCBgZXRodG9vbGAgY29tbWFuZHMuIFRoYXQncyBnb29kIHRvIGtub3cuIFRoaXMgcGF0Y2ggY2hhbmdlcyBhIHN5bmNocm9ub3VzIHJlc2V0IHRvIGFuIGFzeW5jaHJvbm91cyBvbmUgdXNpbmcgYGd2ZV9zY2hlZHVsZV9yZXNldGAuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgdGhlIHJlc2V0IGZyb20gaW1tZWRpYXRlIHRvIHNjaGVkdWxlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/XG5cbkl0J3MgYSByZWxhdGl2ZWx5IHNtYWxsIGNoYW5nZSwgbW9zdGx5IHJlbGF0ZWQgdG8gZXJyb3IgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBhIHRpbWVvdXQgc2NlbmFyaW8uIFRoZSB0aW1lb3V0IG9jY3VycyB3aGVuIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIHJldHVybnMgYC1FVElNRWAsIG1lYW5pbmcgdGhlIGFkbWluIHF1ZXVlIGNvbW1hbmQgdGltZWQgb3V0LiBDYW4gSSBjcmFmdCBhIGZ1enplciB0aGF0ICpyZWxpYWJseSogdHJpZ2dlcnMgdGhpcz8gR2l2ZW4gdGhhdCB0aGVzZSB0aW1lb3V0cyBhcmUgdXN1YWxseSBoYXJkd2FyZSBvciBmaXJtd2FyZS1yZWxhdGVkLCBpdCBzZWVtcyB1bmxpa2VseS4gSG93ZXZlciwgc3l6a2FsbGVyIHJ1bnMgaW4gR0NFLCB3aGljaCBtZWFucyBpdCdzIHVzaW5nIHRoZSByZWFsIEdWRSBkcml2ZXIuIFNvLCBjb3VsZCAqaXQqIHBvdGVudGlhbGx5IGdlbmVyYXRlIGFuIGFkbWluIHF1ZXVlIHRpbWVvdXQ/IFBlcmhhcHMgaWYgdGhlIGZ1enplciBjb3VsZCBzdGFsbCB0aGUgYWRtaW4gcXVldWUgb3Igc29tZWhvdyBzZW5kIGEgY29tcGxldGVseSBtYWxmb3JtZWQgY29tbWFuZCB0aGF0IHRoZSBiYWNrZW5kIGp1c3QgZHJvcHMuIEJ1dCBldmVuIGlmIGl0IGNvdWxkLCB0aGUgY2hhbmdlIGlzIGp1c3Qgc2NoZWR1bGluZyB0aGUgcmVzZXQsIG5vdCBhIHNpZ25pZmljYW50IG92ZXJoYXVsIG9mIHRoZSByZXNldCBsb2dpYyBpdHNlbGYuXG5cblRoaW5raW5nIGFib3V0IGl0LCBpcyB0aGVyZSBhbnkgbmV3IGNvZGUgdG8gZXZlbiBmdXp6PyBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIGRyaXZlci4gU28sIHBlcmhhcHMgdGhlICppbXBhY3QqIG9mIGEgdGltZW91dCBpcyBkaWZmZXJlbnQsIGJ1dCB0aGUgY29kZSBiZWluZyBleGVjdXRlZCBpcyBub3QgbmV3LiBNaWdodCBiZSB3b3J0aCB0YWtpbmcgYSBxdWljayBsb29rIGF0IGBndmVfc2NoZWR1bGVfcmVzZXRgIGp1c3QgdG8gY29uZmlybSwgYnV0IG92ZXJhbGwsIHRoZSBhZGRlZCB2YWx1ZSBzZWVtcyBsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzOTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDA6MzY6MDYuNjUyMDExMjg3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU1MTA0MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3ZlX3NjaGVkdWxlX3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9MTI5Nz1zdHJ1Y3QgcGFnZV9wb29sICpndmVfcnhfY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTEzMDEtLyogUmVzZXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjEzMDI6dm9pZCBndmVfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGd2ZV9wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTEzMDMtaW50IGd2ZV9yZXNldChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGJvb2wgYXR0ZW1wdF90ZWFyZG93bik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYz0xMzE1PWd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzI0LVxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcIlRpbWVvdXQgdG8gY29uZmlndXJlIHRoZSBmbG93IHJ1bGUsIHRyaWdnZXIgcmVzZXRcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzI1OlxcdFxcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzI2LVxcdH0gZWxzZSBpZiAoIWVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTExNjk9dm9pZCBndmVfZnJlZV9xdWV1ZV9wYWdlX2xpc3Qoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTExOTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjExOTk6dm9pZCBndmVfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0yMDg1PXN0YXRpYyB2b2lkIGd2ZV90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwOTMtXFx0aWYgKCFndmVfdHhfdGltZW91dF90cnlfcV9raWNrKHByaXYsIHR4cXVldWUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyMDk0OlxcdFxcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjA5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM9NTM0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3ZlX3J4X2NvcHlfdG9fcG9vbChzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy01NTAtXFx0XFx0aWYgKHVubGlrZWx5KHJlY3ljbGUgXFx1MDAzYyAwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM6NTUxOlxcdFxcdFxcdGd2ZV9zY2hlZHVsZV9yZXNldChyeC1cXHUwMDNlZ3ZlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTU1Mi1cXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM9NjQ4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3ZlX3J4X3NrYihzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfcnhfcmluZyAqcngsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTY3MC1cXHRcXHRpZiAodW5saWtlbHkocmVjeWNsZSBcXHUwMDNjIDApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYzo2NzE6XFx0XFx0XFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtNjcyLVxcdFxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYz03OTY9c3RhdGljIHZvaWQgZ3ZlX3J4KHN0cnVjdCBndmVfcnhfcmluZyAqcngsIG5ldGRldl9mZWF0dXJlc190IGZlYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTgzMi1cXHRcXHRuYXBpX2ZyZWVfZnJhZ3MobmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYzo4MzM6XFx0XFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHJ4LVxcdTAwM2VndmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtODM0LVxcdFxcdGdvdG8gZmluaXNoX2ZyYWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jPTk0Nz1zdGF0aWMgYm9vbCBndmVfcnhfcmVmaWxsX2J1ZmZlcnMoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy05NzctXFx0XFx0XFx0XFx0aWYgKCFyeC1cXHUwMDNlZGF0YS5yYXdfYWRkcmVzc2luZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jOjk3ODpcXHRcXHRcXHRcXHRcXHRndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy05NzktXFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYz0xMDAwPXN0YXRpYyBpbnQgZ3ZlX2NsZWFuX3J4X2RvbmUoc3RydWN0IGd2ZV9yeF9yaW5nICpyeCwgaW50IGJ1ZGdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtMTAzNi1cXHRcXHRcXHQgICAgR1ZFX1NFUU5PKGRlc2MtXFx1MDAzZWZsYWdzX3NlcSksIHJ4LVxcdTAwM2VkZXNjLnNlcW5vKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jOjEwMzc6XFx0XFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHJ4LVxcdTAwM2VndmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtMTAzOC1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM2OjA2Ljk0NzUzMDkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzY5MDYyNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIGEgTWlub3IgR1ZFIERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbmQgaXQncyBhIHNpbXBsZSBzdWJzdGl0dXRpb246IHJlcGxhY2luZyBhIGRpcmVjdCBjYWxsIHRvIGBndmVfcmVzZXQocHJpdiwgdHJ1ZSlgIHdpdGggYGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KWAuICBUaGUga2V5IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IGBndmVfcmVzZXRgIGlzIHN5bmNocm9ub3VzLCB3aGlsZSBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCB1dGlsaXplcyBhIHdvcmtxdWV1ZS4gVGhpcyBsb29rcyBsaWtlIGEgdmVyeSBtaW5vciB0d2VhayBpbiBlcnJvciBoYW5kbGluZy4gSXQncyBkZXNpZ25lZCB0byBzaWRlc3RlcCBhIGJ1ZyB3aGVyZSBgZ3ZlX3Jlc2V0YCB3YXMgcG90ZW50aWFsbHkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0IOKAkyBtYXliZSBob2xkaW5nIGEgbG9jayBpdCBzaG91bGRuJ3QsIG9yIGZyb20gYW4gYXRvbWljIGNvbnRleHQsIG9yIGp1c3QgaW4gYSBibG9ja2luZyBzaXR1YXRpb24gd2hlcmUgdGhhdCdzIGEgbm8tZ28uXG5cbk5vdywgbGV0J3MgdHJhY2UgdGhpcy4gIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIOKAkyB3aGVyZSB0aGUgY2hhbmdlIGhhcHBlbnMg4oCTIGlzIGNhbGxlZCBmcm9tIGV0aHRvb2wsIHdoaWNoICpzaG91bGQqIGJlIHByb2Nlc3MgY29udGV4dCwgcmlnaHQ/IEJ1dCwgYW5kIHRoaXMgaXMgdGhlIGNydWNpYWwgcGFydCwgYGd2ZV9yZXNldGAgbWlnaHQgYmUgdGFraW5nIGxvY2tzIHRoYXQgYXJlICphbHJlYWR5KiBoZWxkIGJ5IHRoZSBldGh0b29sIHBhdGguICBGb3IgaW5zdGFuY2UsIGBydG5sX2xvY2tgIGNvdWxkIGJlIHRoZSBjdWxwcml0LiAgSWYgYGV0aHRvb2xgIGFscmVhZHkgaG9sZHMgYHJ0bmxfbG9ja2AgYW5kIHRoZW4gYGd2ZV9yZXNldGAgdHJpZXMgdG8gdGFrZSBpdCwgKmJhbSog4oCTIGRlYWRsb2NrLiBUaGlzIGlzIGxpa2VseSB0aGUgcm9vdCBvZiB0aGUgcHJvYmxlbS4gU2NoZWR1bGluZyB0aGUgcmVzZXQgdGhyb3VnaCB0aGUgd29ya3F1ZXVlIGF2b2lkcyB0aGlzIGNvbnRlbnRpb24uXG5cblNvLCB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgcGF0Y2ggd29ydGggdGhyb3dpbmcgZnV6emluZyBhdD8gIEl0J3MgYSBvbmUtbGluZSBmaXggb24gYW4gZXJyb3IgcGF0aCAoYSB0aW1lb3V0KSwgZXNzZW50aWFsbHkgcHJldmVudGluZyBhIGRlYWRsb2NrIG9yIHNpbWlsYXIgY29udGV4dCBpc3N1ZS4gSXQncyBhIGxvdy1yaXNrLCBkZWZlbnNpdmUgY2hhbmdlLiBUaGUgZXJyb3IgcGF0aCBpdHNlbGYgaXMgdG91Z2ggdG8gdHJpZ2dlci4gQW4gYWRtaW5xIHRpbWVvdXQgaXMgcmVxdWlyZWQsIG5vdCBzb21ldGhpbmcgdGhhdCdzIGxpa2VseSB0byBoYXBwZW4gd2l0aCBmcmVxdWVudCB1c2UuIFRoZSBwYXRjaCBpcyBub3QgaW50cm9kdWNpbmcgbm92ZWwgZnVuY3Rpb25hbGl0eTsgaXQncyBtZXJlbHkgdXNpbmcgYW4gZXhpc3RpbmcgaGVscGVyIHRvIGRvIHdoYXQgd2FzIHByZXZpb3VzbHkgZG9uZSBzeW5jaHJvbm91c2x5LlxuXG5Db25zaWRlcmluZyBhbGwgdGhpcywgSSdtIGdvaW5nIHRvIGxlYW4gdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBhIHRyaXZpYWwgZXJyb3IgaGFuZGxpbmcgZml4IGluIGEgaGFyZC10by1oaXQgc2NlbmFyaW8gYW5kIGFkZHMgbm8gbmV3IGxvZ2ljIHRvIGZ1enouXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBhZ2FpbiB0byBiZSBzdXJlOlxuXG5gYGBkaWZmXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNcbkBAIC0xMzIyLDcgKzEzMjIsNyBAQCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuIFxuIFx0aWYgKGVyciA9PSAtRVRJTUUpIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcIlRpbWVvdXQgdG8gY29uZmlndXJlIHRoZSBmbG93IHJ1bGUsIHRyaWdnZXIgcmVzZXRcIik7XG4tXHRcdGd2ZV9yZXNldChwcml2LCB0cnVlKTtcbitcdFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHByaXYpO1xuIFx0fSBlbHNlIGlmICghZXJyKSB7XG4gXHRcdHByaXYtXHUwMDNlZmxvd19ydWxlc19jYWNoZS5ydWxlc19jYWNoZV9zeW5jZWQgPSBmYWxzZTtcbiBcdH1cbmBgYFxuXG5ZdXAsIHNpbXBsZS4gIFRoaXMgcmVhbGx5IGRvZXMganVzdCBvZmZsb2FkIHRoZSByZXNldCB0byBhIHdvcmtxdWV1ZSB0byBhdm9pZCBhIHBvdGVudGlhbCBsb2NrIGNvbnRlbnRpb24gaXNzdWUuIFZlcnkgc3RyYWlnaHRmb3J3YXJkLiAgU2luY2UgaXQncyBvbiBhIHRpbWVvdXQgZXJyb3IgcGF0aCBhbmQgb25seSBhbHRlcnMgYSBzbWFsbCBwb3J0aW9uIG9mIHRoZSBjb2RlLCBhbmQgdGhlcmUgaXMgbm8gbmV3IGZ1bmN0aW9uYWxpdHksIGZ1enppbmcgaXNuJ3QgZ29pbmcgdG8gYmUgdGhlIGhpZ2hlc3QgeWllbGQgaGVyZS4gVGhlcmVmb3JlIEknbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDkzLCJPdXRwdXRUb2tlbnMiOjk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM2OjE3LjMxNjU5NjUyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgb25lLWxpbmUgZml4IGluIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggKGFkbWluIHF1ZXVlIHRpbWVvdXQpIHRoYXQgcmVwbGFjZXMgYSBzeW5jaHJvbm91cyByZXNldCB3aXRoIGFuIGFzeW5jaHJvbm91cyBzY2hlZHVsZWQgcmVzZXQgdG8gbGlrZWx5IGF2b2lkIGEgZGVhZGxvY2suIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLCBhbmQgdGhlIGVycm9yIHBhdGggaXMgZGlmZmljdWx0IHRvIHRyaWdnZXIgcmVsaWFibHkgZnJvbSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgb25lLWxpbmUgZml4IGluIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggKGFkbWluIHF1ZXVlIHRpbWVvdXQpIHRoYXQgcmVwbGFjZXMgYSBzeW5jaHJvbm91cyByZXNldCB3aXRoIGFuIGFzeW5jaHJvbm91cyBzY2hlZHVsZWQgcmVzZXQgdG8gbGlrZWx5IGF2b2lkIGEgZGVhZGxvY2suIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLCBhbmQgdGhlIGVycm9yIHBhdGggaXMgZGlmZmljdWx0IHRvIHRyaWdnZXIgcmVsaWFibHkgZnJvbSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM2OjE3LjMxNjYyNTkwOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbznrk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-08 00:33:45 +0000 UTC FinishedAt: 2026-08-08 00:36:18 +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+CgkJCTx0ZD4yMDI2LzA4LzA4IDAwOjM1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDsmIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBvbmUtbGluZSBmaXggaW4gYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCAoYWRtaW4gcXVldWUgdGltZW91dCkgdGhhdCByZXBsYWNlcyBhIHN5bmNocm9ub3VzIHJlc2V0IHdpdGggYW4gYXN5bmNocm9ub3VzIHNjaGVkdWxlZCByZXNldCB0byBsaWtlbHkgYXZvaWQgYSBkZWFkbG9jay4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRhcmdldGVkIGZ1enppbmcsIGFuZCB0aGUgZXJyb3IgcGF0aCBpcyBkaWZmaWN1bHQgdG8gdHJpZ2dlciByZWxpYWJseSBmcm9tIGEgZnV6emVyLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBiNjIwNWQ1OWEyOWVkZGZlMjZmMmJmYmQ1OWM3MDk4NDlhM2E5MDRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEF1ZyA4IDAwOjM1OjQ2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNcbmluZGV4IDA4NTg3YmY0MGVkNGEuLjIwMzdiMTc0ZTU2MWIgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNcbkBAIC0xMzIyLDcgJiM0MzsxMzIyLDcgQEAgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcbiBcbiBcdGlmIChlcnIgPT0gLUVUSU1FKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7VGltZW91dCB0byBjb25maWd1cmUgdGhlIGZsb3cgcnVsZSwgdHJpZ2dlciByZXNldFwmIzM0Oyk7XG4tXHRcdGd2ZV9yZXNldChwcml2LCB0cnVlKTtcbiYjNDM7XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcbiBcdH0gZWxzZSBpZiAoIWVycikge1xuIFx0XHRwcml2LVx1MDAzZWZsb3dfcnVsZXNfY2FjaGUucnVsZXNfY2FjaGVfc3luY2VkID0gZmFsc2U7XG4gXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDA6MzU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgb25lLWxpbmUgZml4IGluIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggKGFkbWluIHF1ZXVlIHRpbWVvdXQpIHRoYXQgcmVwbGFjZXMgYSBzeW5jaHJvbm91cyByZXNldCB3aXRoIGFuIGFzeW5jaHJvbm91cyBzY2hlZHVsZWQgcmVzZXQgdG8gbGlrZWx5IGF2b2lkIGEgZGVhZGxvY2suIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLCBhbmQgdGhlIGVycm9yIHBhdGggaXMgZGlmZmljdWx0IHRvIHRyaWdnZXIgcmVsaWFibHkgZnJvbSBhIGZ1enplci4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYjYyMDVkNTlhMjllZGRmZTI2ZjJiZmJkNTljNzA5ODQ5YTNhOTA0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBBdWcgOCAwMDozNTo0NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMKaW5kZXggMDg1ODdiZjQwZWQ0YS4uMjAzN2IxNzRlNTYxYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMKQEAgLTEzMjIsNyAmIzQzOzEzMjIsNyBAQCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LAogCiAJaWYgKGVyciA9PSAtRVRJTUUpIHsKIAkJZGV2X2VycigmYW1wO3ByaXYtJmd0O3BkZXYtJmd0O2RldiwgJiMzNDtUaW1lb3V0IHRvIGNvbmZpZ3VyZSB0aGUgZmxvdyBydWxlLCB0cmlnZ2VyIHJlc2V0JiMzNDspOwotCQlndmVfcmVzZXQocHJpdiwgdHJ1ZSk7CiYjNDM7CQlndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7CiAJfSBlbHNlIGlmICghZXJyKSB7CiAJCXByaXYtJmd0O2Zsb3dfcnVsZXNfY2FjaGUucnVsZXNfY2FjaGVfc3luY2VkID0gZmFsc2U7CiAJfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDM4CgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGluIGBkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuY2AuIEl0JiMzOTtzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIHN3YXBwaW5nIG91dCBgZ3ZlX3Jlc2V0KHByaXYsIHRydWUpO2AgZm9yIGBndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7YCB3aXRoaW4gdGhlIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIGZ1bmN0aW9uLgoKTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMsICYjMzQ7SXMgdGhpcyBldmVuIHJlbGV2YW50PyYjMzQ7IEdpdmVuIG15IGtub3dsZWRnZSBvZiB0aGUgR29vZ2xlIFZpcnR1YWwgRXRoZXJuZXQgZHJpdmVyIChgZ3ZlYCkgYW5kIGl0cyB1c2UgaW4gR29vZ2xlIENvbXB1dGUgRW5naW5lIChHQ0UpLCBhbmQgY29uc2lkZXJpbmcgc3l6a2FsbGVyJiMzOTtzIGZyZXF1ZW50IHJ1bnMgb24gR0NFLCBJIGNhbiBjb25maWRlbnRseSBzYXksICYjMzQ7WWVzLCB0aGlzIGlzIGRlZmluaXRlbHkgYSByZWFjaGFibGUgY29kZSBwYXRoLiYjMzQ7IFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQuCgpOb3csIEkmIzM5O2xsIGRpdmUgaW50byB0aGUgY29kZSBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGUgZGlyZWN0IHJlc2V0IHdhcyByZXBsYWNlZCB3aXRoIGEgc2NoZWR1bGVkIG9uZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZSB3aXRoaW4gYGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZWAgYW5kIGFsc28gaG93IGBndmVfc2NoZWR1bGVfcmVzZXRgIHdvcmtzLiBJcyB0aGVyZSBhIHJhY2UgY29uZGl0aW9uIHRoZXkmIzM5O3JlIHRyeWluZyB0byBhdm9pZD8gQSBsb2NraW5nIGlzc3VlIHBlcmhhcHM/IElzIHRoZSBzY2hlZHVsZSBhIG1lYW5zIG9mIGRlZmVycmluZyBhIHJlc2V0IHRvIGF2b2lkIGEgYmxvY2tpbmcgY2FsbD8gTW9yZSBpbXBvcnRhbnRseSwgaXMgdGhpcyBhIHBvdGVudGlhbCBmaXggZm9yIGEga25vd24gaXNzdWUsIG9yIGEgcHJvYWN0aXZlIGNoYW5nZSB0byBwcmV2ZW50IGEgZnV0dXJlIHByb2JsZW0/IEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIHRoZSBjb21taXQgbWVzc2FnZSB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZm9jdXMgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlICYjMzQ7d2h5JiMzNDsgYW5kICYjMzQ7aG93JiMzNDsgb2YgdGhpcyBhZGp1c3RtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMTQ9c3RhdGljIGludFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMxNTpndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMxNjpcdFx0XHQgICAgICAgc3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSAqZmxvd19ydWxlX2NtZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMTcte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMTktXHRcdFx0R1ZFX0FETUlOUV9DT05GSUdVUkVfRkxPV19SVUxFLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMyMDpcdFx0XHRzaXplb2Yoc3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzIxLVx0XHRcdGZsb3dfcnVsZV9jbWQpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMzM9aW50IGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfYWRtaW5xX2Zsb3dfcnVsZSAqcnVsZSwgdTMyIGxvYylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMzQte1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMzNTpcdHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUgZmxvd19ydWxlX2NtZCA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMzYtXHRcdC5vcGNvZGUgPSBjcHVfdG9fYmUxNihHVkVfRkxPV19SVUxFX0NGR19BREQpLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNDAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzQxOlx0cmV0dXJuIGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShwcml2LCBcdTAwMjZmbG93X3J1bGVfY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNDItfVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzNDQ9aW50IGd2ZV9hZG1pbnFfZGVsX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHUzMiBsb2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ1LXtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jOjEzNDY6XHRzdHJ1Y3QgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlIGZsb3dfcnVsZV9jbWQgPSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ3LVx0XHQub3Bjb2RlID0gY3B1X3RvX2JlMTYoR1ZFX0ZMT1dfUlVMRV9DRkdfREVMKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzUwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTM1MTpcdHJldHVybiBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUocHJpdiwgXHUwMDI2Zmxvd19ydWxlX2NtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzUyLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYz0xMzU0PWludCBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXMoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM1NS17XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzU2Olx0c3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSBmbG93X3J1bGVfY21kID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM1Ny1cdFx0Lm9wY29kZSA9IGNwdV90b19iZTE2KEdWRV9GTE9XX1JVTEVfQ0ZHX1JFU0VUKSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzU5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTM2MDpcdHJldHVybiBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUocHJpdiwgXHUwMDI2Zmxvd19ydWxlX2NtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzYxLX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaD01MTQ9c3RydWN0IGd2ZV9hZG1pbnFfZmxvd19ydWxlIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjAtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaDo1MjE6c3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjItXHRfX2JlMTYgb3Bjb2RlO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oLTUyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oOjUyODpzdGF0aWNfYXNzZXJ0KHNpemVvZihzdHJ1Y3QgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKSA9PSA5Mik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjktXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkyNQoJCQkJCQkJb3V0cHV0OiA2NwoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipBbmFseXppbmcgRmxvdyBSdWxlIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhlc2UgdGhyZWUga2V5IGZ1bmN0aW9uczogYGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZWAsIGBndmVfYWRtaW5xX2RlbF9mbG93X3J1bGVgLCBhbmQgYGd2ZV9hZG1pbnFfcmVzZXRfZmxvd19ydWxlc2AuIFRoZSBpbnRlcmVzdGluZyB0aGluZyBpcyB0aGF0IHRoZXkgYWxsIGZ1bm5lbCBkb3duIGludG8gYSBzaW5nbGUgZnVuY3Rpb246IGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgLiBUaGF0JiMzOTtzIHNtYXJ0OyBpdCBjZW50cmFsaXplcyB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gbG9naWMsIHdoaWNoIGlzIGdvb2QgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgcmVkdWNlcyByZWR1bmRhbmN5LiBOb3csIG15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSYjMzk7bSBnb2luZyB0byB0cmFjayBkb3duIGV2ZXJ5IHNpbmdsZSBjYWxsIHRvIHRob3NlIHRocmVlIGhpZ2hlci1sZXZlbCBmdW5jdGlvbnMgdG8gZnVsbHkgZ3Jhc3AgaG93IGZsb3cgcnVsZXMgYXJlIGFkZGVkLCBkZWxldGVkLCBhbmQgcmVzZXQgd2l0aGluIHRoZSBicm9hZGVyIHN5c3RlbS4gS25vd2luZyAqd2hlcmUqIHRob3NlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpbGwgZ2l2ZSBtZSB0aGUgY29udGV4dCBJIG5lZWQgdG8gcHJvcGVybHkgZXZhbHVhdGUgdGhlIGNvbmZpZ3VyYXRpb24gcHJvY2Vzcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndmVfYWRtaW5xX2FkZF9mbG93X3J1bGV8Z3ZlX2FkbWlucV9kZWxfZmxvd19ydWxlfGd2ZV9hZG1pbnFfcmVzZXRfZmxvd19ydWxlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMTU9Z3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMzMzppbnQgZ3ZlX2FkbWlucV9hZGRfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9hZG1pbnFfZmxvd19ydWxlICpydWxlLCB1MzIgbG9jKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTMzNC17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jOjEzNDQ6aW50IGd2ZV9hZG1pbnFfZGVsX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHUzMiBsb2MpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ1LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzUzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTM1NDppbnQgZ3ZlX2FkbWlucV9yZXNldF9mbG93X3J1bGVzKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNTUte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oPTY0Nj1pbnQgZ3ZlX2FkbWlucV9yZXBvcnRfbGlua19zcGVlZChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NjQ3OmludCBndmVfYWRtaW5xX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX2FkbWlucV9mbG93X3J1bGUgKnJ1bGUsIHUzMiBsb2MpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NjQ4OmludCBndmVfYWRtaW5xX2RlbF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCB1MzIgbG9jKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oOjY0OTppbnQgZ3ZlX2FkbWlucV9yZXNldF9mbG93X3J1bGVzKHN0cnVjdCBndmVfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC02NTAtaW50IGd2ZV9hZG1pbnFfcXVlcnlfZmxvd19ydWxlcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHUxNiBxdWVyeV9vcGNvZGUsIHUzMiBzdGFydGluZ19sb2MpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jPTI2Mz1pbnQgZ3ZlX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI3OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jOjI4MDpcdGVyciA9IGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZShwcml2LCBydWxlLCBmc3AtXHUwMDNlbG9jYXRpb24pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmMtMjgxLVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jPTI5MD1pbnQgZ3ZlX2RlbF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jOjI5NzpcdHJldHVybiBndmVfYWRtaW5xX2RlbF9mbG93X3J1bGUocHJpdiwgZnNwLVx1MDAzZWxvY2F0aW9uKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5OC19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE4NDU9aW50IGd2ZV9mbG93X3J1bGVzX3Jlc2V0KHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTg0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxODUwOlx0cmV0dXJuIGd2ZV9hZG1pbnFfcmVzZXRfZmxvd19ydWxlcyhwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xODUxLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzY2CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBFdGh0b29sIEZsb3cgUnVsZSBJbnRlcmFjdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGZvY3VzaW5nIGluIG9uIHRoZXNlIGZ1bmN0aW9ucywgYGd2ZV9hZGRfZmxvd19ydWxlYCBhbmQgYGd2ZV9kZWxfZmxvd19ydWxlYC4gVGhlIGNvbnRleHQgaXMgZXRodG9vbCwgYW5kIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGV5JiMzOTtyZSBiZWluZyBpbnZva2VkLiBUaGUgY3J1Y2lhbCBzdGVwIGlzIHZlcmlmeWluZyB0aGF0IGV0aHRvb2wgaXMsIGluIGZhY3QsIHRoZSBjYWxsZXIuIEl0JiMzOTtzIGEgc3RyYWlnaHRmb3J3YXJkIGNoZWNrLCBvZiBjb3Vyc2UsIGJ1dCBhc3N1bXB0aW9ucyBhcmUgYWx3YXlzIGRhbmdlcm91cywgYW5kIGFuIGluY29ycmVjdCBjYWxsaW5nIGNoYWluIGNhbiBsZWFkIHRvIHNvbWUgcHJldHR5IGduYXJseSBkZWJ1Z2dpbmcgc2Vzc2lvbnMuIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGUgbGlua2FnZSBiZXR3ZWVuIGV0aHRvb2wgYW5kIHRoZXNlIGZ1bmN0aW9ucyB0byBwcm9jZWVkIHdpdGggYW55IGFuYWx5c2lzIG9yIG1vZGlmaWNhdGlvbnMgd2l0aCBjb25maWRlbmNlLiBTaW1wbGUgZW5vdWdoLCBidXQgbmVjZXNzYXJ5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA4IDAwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2d2ZV9hZGRfZmxvd19ydWxlfGd2ZV9kZWxfZmxvd19ydWxlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaD0xMzE5PWludCBndmVfZ2V0X2Zsb3dfcnVsZV9pZHMoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLCB1MzIgKnJ1bGVfbG9jcyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjEzMjA6aW50IGd2ZV9hZGRfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjEzMjE6aW50IGd2ZV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTEzMjItaW50IGd2ZV9mbG93X3J1bGVzX3Jlc2V0KHN0cnVjdCBndmVfcHJpdiAqcHJpdik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jPTgxOD1zdGF0aWMgaW50IGd2ZV9zZXRfcnhuZmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtODI3LVx0Y2FzZSBFVEhUT09MX1NSWENMU1JMSU5TOlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jOjgyODpcdFx0ZXJyID0gZ3ZlX2FkZF9mbG93X3J1bGUocHJpdiwgY21kKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYy04MjktXHRcdGJyZWFrO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jLTgzMC1cdGNhc2UgRVRIVE9PTF9TUlhDTFNSTERFTDpcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYzo4MzE6XHRcdGVyciA9IGd2ZV9kZWxfZmxvd19ydWxlKHByaXYsIGNtZCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtODMyLVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYz0yMzM9aW50IGd2ZV9nZXRfZmxvd19ydWxlX2lkcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQsIHUzMiAqcnVsZV9sb2NzKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI2Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jOjI2MzppbnQgZ3ZlX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmMtMjY0LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yODktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYzoyOTA6aW50IGd2ZV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5MS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM5NwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDI4OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIHRoZSBHVkUgRHJpdmVyIFJlc2V0IExvZ2ljKioKCk9rYXksIHNvIGBndmVfYWRkX2Zsb3dfcnVsZWAgYW5kIGBndmVfZGVsX2Zsb3dfcnVsZWAgYXJlIGFjY2Vzc2VkIHRocm91Z2ggYGV0aHRvb2xgIGNvbW1hbmRzLiBUaGF0JiMzOTtzIGdvb2QgdG8ga25vdy4gVGhpcyBwYXRjaCBjaGFuZ2VzIGEgc3luY2hyb25vdXMgcmVzZXQgdG8gYW4gYXN5bmNocm9ub3VzIG9uZSB1c2luZyBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YC4gSXQmIzM5O3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgdGhlIHJlc2V0IGZyb20gaW1tZWRpYXRlIHRvIHNjaGVkdWxlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/CgpJdCYjMzk7cyBhIHJlbGF0aXZlbHkgc21hbGwgY2hhbmdlLCBtb3N0bHkgcmVsYXRlZCB0byBlcnJvciBoYW5kbGluZywgc3BlY2lmaWNhbGx5IGEgdGltZW91dCBzY2VuYXJpby4gVGhlIHRpbWVvdXQgb2NjdXJzIHdoZW4gYGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZWAgcmV0dXJucyBgLUVUSU1FYCwgbWVhbmluZyB0aGUgYWRtaW4gcXVldWUgY29tbWFuZCB0aW1lZCBvdXQuIENhbiBJIGNyYWZ0IGEgZnV6emVyIHRoYXQgKnJlbGlhYmx5KiB0cmlnZ2VycyB0aGlzPyBHaXZlbiB0aGF0IHRoZXNlIHRpbWVvdXRzIGFyZSB1c3VhbGx5IGhhcmR3YXJlIG9yIGZpcm13YXJlLXJlbGF0ZWQsIGl0IHNlZW1zIHVubGlrZWx5LiBIb3dldmVyLCBzeXprYWxsZXIgcnVucyBpbiBHQ0UsIHdoaWNoIG1lYW5zIGl0JiMzOTtzIHVzaW5nIHRoZSByZWFsIEdWRSBkcml2ZXIuIFNvLCBjb3VsZCAqaXQqIHBvdGVudGlhbGx5IGdlbmVyYXRlIGFuIGFkbWluIHF1ZXVlIHRpbWVvdXQ/IFBlcmhhcHMgaWYgdGhlIGZ1enplciBjb3VsZCBzdGFsbCB0aGUgYWRtaW4gcXVldWUgb3Igc29tZWhvdyBzZW5kIGEgY29tcGxldGVseSBtYWxmb3JtZWQgY29tbWFuZCB0aGF0IHRoZSBiYWNrZW5kIGp1c3QgZHJvcHMuIEJ1dCBldmVuIGlmIGl0IGNvdWxkLCB0aGUgY2hhbmdlIGlzIGp1c3Qgc2NoZWR1bGluZyB0aGUgcmVzZXQsIG5vdCBhIHNpZ25pZmljYW50IG92ZXJoYXVsIG9mIHRoZSByZXNldCBsb2dpYyBpdHNlbGYuCgpUaGlua2luZyBhYm91dCBpdCwgaXMgdGhlcmUgYW55IG5ldyBjb2RlIHRvIGV2ZW4gZnV6ej8gYGd2ZV9zY2hlZHVsZV9yZXNldGAgaXMgYWxyZWFkeSBwYXJ0IG9mIHRoZSBkcml2ZXIuIFNvLCBwZXJoYXBzIHRoZSAqaW1wYWN0KiBvZiBhIHRpbWVvdXQgaXMgZGlmZmVyZW50LCBidXQgdGhlIGNvZGUgYmVpbmcgZXhlY3V0ZWQgaXMgbm90IG5ldy4gTWlnaHQgYmUgd29ydGggdGFraW5nIGEgcXVpY2sgbG9vayBhdCBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCBqdXN0IHRvIGNvbmZpcm0sIGJ1dCBvdmVyYWxsLCB0aGUgYWRkZWQgdmFsdWUgc2VlbXMgbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtndmVfc2NoZWR1bGVfcmVzZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oPTEyOTc9c3RydWN0IHBhZ2VfcG9vbCAqZ3ZlX3J4X2NyZWF0ZV9wYWdlX3Bvb2woc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmgtMTMwMS0vKiBSZXNldCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaDoxMzAyOnZvaWQgZ3ZlX3NjaGVkdWxlX3Jlc2V0KHN0cnVjdCBndmVfcHJpdiAqcHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTEzMDMtaW50IGd2ZV9yZXNldChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGJvb2wgYXR0ZW1wdF90ZWFyZG93bik7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM9MTMxNT1ndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMjQtXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCYjMzQ7VGltZW91dCB0byBjb25maWd1cmUgdGhlIGZsb3cgcnVsZSwgdHJpZ2dlciByZXNldFwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzI1Olx0XHRndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzI2LVx0fSBlbHNlIGlmICghZXJyKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTExNjk9dm9pZCBndmVfZnJlZV9xdWV1ZV9wYWdlX2xpc3Qoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMTk4LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjExOTk6dm9pZCBndmVfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTEyMDAte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0yMDg1PXN0YXRpYyB2b2lkIGd2ZV90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDkzLVx0aWYgKCFndmVfdHhfdGltZW91dF90cnlfcV9raWNrKHByaXYsIHR4cXVldWUpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjIwOTQ6XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDk1LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM9NTM0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3ZlX3J4X2NvcHlfdG9fcG9vbChzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtNTUwLVx0XHRpZiAodW5saWtlbHkocmVjeWNsZSBcdTAwM2MgMCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM6NTUxOlx0XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChyeC1cdTAwM2VndmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy01NTItXHRcdFx0cmV0dXJuIE5VTEw7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYz02NDg9c3RhdGljIHN0cnVjdCBza19idWZmICpndmVfcnhfc2tiKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTY3MC1cdFx0aWYgKHVubGlrZWx5KHJlY3ljbGUgXHUwMDNjIDApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jOjY3MTpcdFx0XHRndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTY3Mi1cdFx0XHRyZXR1cm4gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jPTc5Nj1zdGF0aWMgdm9pZCBndmVfcngoc3RydWN0IGd2ZV9yeF9yaW5nICpyeCwgbmV0ZGV2X2ZlYXR1cmVzX3QgZmVhdCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTgzMi1cdFx0bmFwaV9mcmVlX2ZyYWdzKG5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYzo4MzM6XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChyeC1cdTAwM2VndmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy04MzQtXHRcdGdvdG8gZmluaXNoX2ZyYWc7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYz05NDc9c3RhdGljIGJvb2wgZ3ZlX3J4X3JlZmlsbF9idWZmZXJzKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9yeF9yaW5nICpyeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTk3Ny1cdFx0XHRcdGlmICghcngtXHUwMDNlZGF0YS5yYXdfYWRkcmVzc2luZylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM6OTc4Olx0XHRcdFx0XHRndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTk3OS1cdFx0XHRcdHJldHVybiBmYWxzZTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jPTEwMDA9c3RhdGljIGludCBndmVfY2xlYW5fcnhfZG9uZShzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4LCBpbnQgYnVkZ2V0LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtMTAzNi1cdFx0XHQgICAgR1ZFX1NFUU5PKGRlc2MtXHUwMDNlZmxhZ3Nfc2VxKSwgcngtXHUwMDNlZGVzYy5zZXFubyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jOjEwMzc6XHRcdGd2ZV9zY2hlZHVsZV9yZXNldChyeC1cdTAwM2VndmUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy0xMDM4LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NDkzCgkJCQkJCQlvdXRwdXQ6IDk1CgkJCQkJCQl0aG91Z2h0czogNTkwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5c2lzIG9mIGEgTWlub3IgR1ZFIERyaXZlciBDaGFuZ2UqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGFuZCBpdCYjMzk7cyBhIHNpbXBsZSBzdWJzdGl0dXRpb246IHJlcGxhY2luZyBhIGRpcmVjdCBjYWxsIHRvIGBndmVfcmVzZXQocHJpdiwgdHJ1ZSlgIHdpdGggYGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KWAuICBUaGUga2V5IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IGBndmVfcmVzZXRgIGlzIHN5bmNocm9ub3VzLCB3aGlsZSBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCB1dGlsaXplcyBhIHdvcmtxdWV1ZS4gVGhpcyBsb29rcyBsaWtlIGEgdmVyeSBtaW5vciB0d2VhayBpbiBlcnJvciBoYW5kbGluZy4gSXQmIzM5O3MgZGVzaWduZWQgdG8gc2lkZXN0ZXAgYSBidWcgd2hlcmUgYGd2ZV9yZXNldGAgd2FzIHBvdGVudGlhbGx5IGNhbGxlZCBpbiB0aGUgd3JvbmcgY29udGV4dCDigJMgbWF5YmUgaG9sZGluZyBhIGxvY2sgaXQgc2hvdWxkbiYjMzk7dCwgb3IgZnJvbSBhbiBhdG9taWMgY29udGV4dCwgb3IganVzdCBpbiBhIGJsb2NraW5nIHNpdHVhdGlvbiB3aGVyZSB0aGF0JiMzOTtzIGEgbm8tZ28uCgpOb3csIGxldCYjMzk7cyB0cmFjZSB0aGlzLiAgYGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZWAg4oCTIHdoZXJlIHRoZSBjaGFuZ2UgaGFwcGVucyDigJMgaXMgY2FsbGVkIGZyb20gZXRodG9vbCwgd2hpY2ggKnNob3VsZCogYmUgcHJvY2VzcyBjb250ZXh0LCByaWdodD8gQnV0LCBhbmQgdGhpcyBpcyB0aGUgY3J1Y2lhbCBwYXJ0LCBgZ3ZlX3Jlc2V0YCBtaWdodCBiZSB0YWtpbmcgbG9ja3MgdGhhdCBhcmUgKmFscmVhZHkqIGhlbGQgYnkgdGhlIGV0aHRvb2wgcGF0aC4gIEZvciBpbnN0YW5jZSwgYHJ0bmxfbG9ja2AgY291bGQgYmUgdGhlIGN1bHByaXQuICBJZiBgZXRodG9vbGAgYWxyZWFkeSBob2xkcyBgcnRubF9sb2NrYCBhbmQgdGhlbiBgZ3ZlX3Jlc2V0YCB0cmllcyB0byB0YWtlIGl0LCAqYmFtKiDigJMgZGVhZGxvY2suIFRoaXMgaXMgbGlrZWx5IHRoZSByb290IG9mIHRoZSBwcm9ibGVtLiBTY2hlZHVsaW5nIHRoZSByZXNldCB0aHJvdWdoIHRoZSB3b3JrcXVldWUgYXZvaWRzIHRoaXMgY29udGVudGlvbi4KClNvLCB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgcGF0Y2ggd29ydGggdGhyb3dpbmcgZnV6emluZyBhdD8gIEl0JiMzOTtzIGEgb25lLWxpbmUgZml4IG9uIGFuIGVycm9yIHBhdGggKGEgdGltZW91dCksIGVzc2VudGlhbGx5IHByZXZlbnRpbmcgYSBkZWFkbG9jayBvciBzaW1pbGFyIGNvbnRleHQgaXNzdWUuIEl0JiMzOTtzIGEgbG93LXJpc2ssIGRlZmVuc2l2ZSBjaGFuZ2UuIFRoZSBlcnJvciBwYXRoIGl0c2VsZiBpcyB0b3VnaCB0byB0cmlnZ2VyLiBBbiBhZG1pbnEgdGltZW91dCBpcyByZXF1aXJlZCwgbm90IHNvbWV0aGluZyB0aGF0JiMzOTtzIGxpa2VseSB0byBoYXBwZW4gd2l0aCBmcmVxdWVudCB1c2UuIFRoZSBwYXRjaCBpcyBub3QgaW50cm9kdWNpbmcgbm92ZWwgZnVuY3Rpb25hbGl0eTsgaXQmIzM5O3MgbWVyZWx5IHVzaW5nIGFuIGV4aXN0aW5nIGhlbHBlciB0byBkbyB3aGF0IHdhcyBwcmV2aW91c2x5IGRvbmUgc3luY2hyb25vdXNseS4KCkNvbnNpZGVyaW5nIGFsbCB0aGlzLCBJJiMzOTttIGdvaW5nIHRvIGxlYW4gdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQmIzM5O3MgYSB0cml2aWFsIGVycm9yIGhhbmRsaW5nIGZpeCBpbiBhIGhhcmQtdG8taGl0IHNjZW5hcmlvIGFuZCBhZGRzIG5vIG5ldyBsb2dpYyB0byBmdXp6LgoKTGV0JiMzOTtzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBhZ2FpbiB0byBiZSBzdXJlOgoKYGBgZGlmZgotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYwpAQCAtMTMyMiw3ICYjNDM7MTMyMiw3IEBAIGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsCiAKIAlpZiAoZXJyID09IC1FVElNRSkgewogCQlkZXZfZXJyKCZhbXA7cHJpdi0mZ3Q7cGRldi0mZ3Q7ZGV2LCAmIzM0O1RpbWVvdXQgdG8gY29uZmlndXJlIHRoZSBmbG93IHJ1bGUsIHRyaWdnZXIgcmVzZXQmIzM0Oyk7Ci0JCWd2ZV9yZXNldChwcml2LCB0cnVlKTsKJiM0MzsJCWd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTsKIAl9IGVsc2UgaWYgKCFlcnIpIHsKIAkJcHJpdi0mZ3Q7Zmxvd19ydWxlc19jYWNoZS5ydWxlc19jYWNoZV9zeW5jZWQgPSBmYWxzZTsKIAl9CmBgYAoKWXVwLCBzaW1wbGUuICBUaGlzIHJlYWxseSBkb2VzIGp1c3Qgb2ZmbG9hZCB0aGUgcmVzZXQgdG8gYSB3b3JrcXVldWUgdG8gYXZvaWQgYSBwb3RlbnRpYWwgbG9jayBjb250ZW50aW9uIGlzc3VlLiBWZXJ5IHN0cmFpZ2h0Zm9yd2FyZC4gIFNpbmNlIGl0JiMzOTtzIG9uIGEgdGltZW91dCBlcnJvciBwYXRoIGFuZCBvbmx5IGFsdGVycyBhIHNtYWxsIHBvcnRpb24gb2YgdGhlIGNvZGUsIGFuZCB0aGVyZSBpcyBubyBuZXcgZnVuY3Rpb25hbGl0eSwgZnV6emluZyBpc24mIzM5O3QgZ29pbmcgdG8gYmUgdGhlIGhpZ2hlc3QgeWllbGQgaGVyZS4gVGhlcmVmb3JlIEkmIzM5O2xsIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDggMDA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIG9uZS1saW5lIGZpeCBpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoIChhZG1pbiBxdWV1ZSB0aW1lb3V0KSB0aGF0IHJlcGxhY2VzIGEgc3luY2hyb25vdXMgcmVzZXQgd2l0aCBhbiBhc3luY2hyb25vdXMgc2NoZWR1bGVkIHJlc2V0IHRvIGxpa2VseSBhdm9pZCBhIGRlYWRsb2NrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZywgYW5kIHRoZSBlcnJvciBwYXRoIGlzIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHJlbGlhYmx5IGZyb20gYSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIG9uZS1saW5lIGZpeCBpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoIChhZG1pbiBxdWV1ZSB0aW1lb3V0KSB0aGF0IHJlcGxhY2VzIGEgc3luY2hyb25vdXMgcmVzZXQgd2l0aCBhbiBhc3luY2hyb25vdXMgc2NoZWR1bGVkIHJlc2V0IHRvIGxpa2VseSBhdm9pZCBhIGRlYWRsb2NrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZywgYW5kIHRoZSBlcnJvciBwYXRoIGlzIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHJlbGlhYmx5IGZyb20gYSBmdXp6ZXIuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wOCAwMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDA6MzU6NDcuNjgzMTgyNzg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk2MzM0NTQ0MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJcIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIG9uZS1saW5lIGZpeCBpbiBhbiBlcnJvciBoYW5kbGluZyBwYXRoIChhZG1pbiBxdWV1ZSB0aW1lb3V0KSB0aGF0IHJlcGxhY2VzIGEgc3luY2hyb25vdXMgcmVzZXQgd2l0aCBhbiBhc3luY2hyb25vdXMgc2NoZWR1bGVkIHJlc2V0IHRvIGxpa2VseSBhdm9pZCBhIGRlYWRsb2NrLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgbmV3IGZ1bmN0aW9uYWwgbG9naWMgdGhhdCB3b3VsZCBiZW5lZml0IGZyb20gdGFyZ2V0ZWQgZnV6emluZywgYW5kIHRoZSBlcnJvciBwYXRoIGlzIGRpZmZpY3VsdCB0byB0cmlnZ2VyIHJlbGlhYmx5IGZyb20gYSBmdXp6ZXIuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo0Ny42ODMxODkzNTlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MzM0MjE2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBiNjIwNWQ1OWEyOWVkZGZlMjZmMmJmYmQ1OWM3MDk4NDlhM2E5MDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgOCAwMDozNTo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jXFxuaW5kZXggMDg1ODdiZjQwZWQ0YS4uMjAzN2IxNzRlNTYxYiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuY1xcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jXFxuQEAgLTEzMjIsNyArMTMyMiw3IEBAIGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuIFxcbiBcXHRpZiAoZXJyID09IC1FVElNRSkge1xcbiBcXHRcXHRkZXZfZXJyKFxcdTAwMjZwcml2LVxcdTAwM2VwZGV2LVxcdTAwM2VkZXYsIFxcXCJUaW1lb3V0IHRvIGNvbmZpZ3VyZSB0aGUgZmxvdyBydWxlLCB0cmlnZ2VyIHJlc2V0XFxcIik7XFxuLVxcdFxcdGd2ZV9yZXNldChwcml2LCB0cnVlKTtcXG4rXFx0XFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHByaXYpO1xcbiBcXHR9IGVsc2UgaWYgKCFlcnIpIHtcXG4gXFx0XFx0cHJpdi1cXHUwMDNlZmxvd19ydWxlc19jYWNoZS5ydWxlc19jYWNoZV9zeW5jZWQgPSBmYWxzZTtcXG4gXFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo0OC4xMzczMTAyMDlaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyOTE3OTMxMzg0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaXMgYSBvbmUtbGluZSBmaXggaW4gYW4gZXJyb3IgaGFuZGxpbmcgcGF0aCAoYWRtaW4gcXVldWUgdGltZW91dCkgdGhhdCByZXBsYWNlcyBhIHN5bmNocm9ub3VzIHJlc2V0IHdpdGggYW4gYXN5bmNocm9ub3VzIHNjaGVkdWxlZCByZXNldCB0byBsaWtlbHkgYXZvaWQgYSBkZWFkbG9jay4gSXQgZG9lcyBub3QgaW50cm9kdWNlIG5ldyBmdW5jdGlvbmFsIGxvZ2ljIHRoYXQgd291bGQgYmVuZWZpdCBmcm9tIHRhcmdldGVkIGZ1enppbmcsIGFuZCB0aGUgZXJyb3IgcGF0aCBpcyBkaWZmaWN1bHQgdG8gdHJpZ2dlciByZWxpYWJseSBmcm9tIGEgZnV6emVyLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGI2MjA1ZDU5YTI5ZWRkZmUyNmYyYmZiZDU5YzcwOTg0OWEzYTkwNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDggMDA6MzU6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jXG5pbmRleCAwODU4N2JmNDBlZDRhLi4yMDM3YjE3NGU1NjFiIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNcbisrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jXG5AQCAtMTMyMiw3ICsxMzIyLDcgQEAgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcbiBcbiBcdGlmIChlcnIgPT0gLUVUSU1FKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2cHJpdi1cdTAwM2VwZGV2LVx1MDAzZWRldiwgXCJUaW1lb3V0IHRvIGNvbmZpZ3VyZSB0aGUgZmxvdyBydWxlLCB0cmlnZ2VyIHJlc2V0XCIpO1xuLVx0XHRndmVfcmVzZXQocHJpdiwgdHJ1ZSk7XG4rXHRcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcbiBcdH0gZWxzZSBpZiAoIWVycikge1xuIFx0XHRwcml2LVx1MDAzZWZsb3dfcnVsZXNfY2FjaGUucnVsZXNfY2FjaGVfc3luY2VkID0gZmFsc2U7XG4gXHR9XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo0OC4xMzczMTE0ODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mjk0MDU2NDk5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNgLiBJdCdzIGEgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCBjaGFuZ2UsIHN3YXBwaW5nIG91dCBgZ3ZlX3Jlc2V0KHByaXYsIHRydWUpO2AgZm9yIGBndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7YCB3aXRoaW4gdGhlIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIGZ1bmN0aW9uLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzIGFsd2F5cywgXCJJcyB0aGlzIGV2ZW4gcmVsZXZhbnQ/XCIgR2l2ZW4gbXkga25vd2xlZGdlIG9mIHRoZSBHb29nbGUgVmlydHVhbCBFdGhlcm5ldCBkcml2ZXIgKGBndmVgKSBhbmQgaXRzIHVzZSBpbiBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgKEdDRSksIGFuZCBjb25zaWRlcmluZyBzeXprYWxsZXIncyBmcmVxdWVudCBydW5zIG9uIEdDRSwgSSBjYW4gY29uZmlkZW50bHkgc2F5LCBcIlllcywgdGhpcyBpcyBkZWZpbml0ZWx5IGEgcmVhY2hhYmxlIGNvZGUgcGF0aC5cIiBUaGF0J3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBUaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgcmVsZXZhbnQuXG5cbk5vdywgSSdsbCBkaXZlIGludG8gdGhlIGNvZGUgaXRzZWxmLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhlIGRpcmVjdCByZXNldCB3YXMgcmVwbGFjZWQgd2l0aCBhIHNjaGVkdWxlZCBvbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2Ugd2l0aGluIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIGFuZCBhbHNvIGhvdyBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCB3b3Jrcy4gSXMgdGhlcmUgYSByYWNlIGNvbmRpdGlvbiB0aGV5J3JlIHRyeWluZyB0byBhdm9pZD8gQSBsb2NraW5nIGlzc3VlIHBlcmhhcHM/IElzIHRoZSBzY2hlZHVsZSBhIG1lYW5zIG9mIGRlZmVycmluZyBhIHJlc2V0IHRvIGF2b2lkIGEgYmxvY2tpbmcgY2FsbD8gTW9yZSBpbXBvcnRhbnRseSwgaXMgdGhpcyBhIHBvdGVudGlhbCBmaXggZm9yIGEga25vd24gaXNzdWUsIG9yIGEgcHJvYWN0aXZlIGNoYW5nZSB0byBwcmV2ZW50IGEgZnV0dXJlIHByb2JsZW0/IEknbGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgdGhlIGNvbW1pdCBtZXNzYWdlIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLiBNeSBmb2N1cyBub3cgaXMgb24gdW5kZXJzdGFuZGluZyB0aGUgXCJ3aHlcIiBhbmQgXCJob3dcIiBvZiB0aGlzIGFkanVzdG1lbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMzgsIk91dHB1dFRva2VucyI6NDMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo1My40MzEzNzAwNThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUyNjAyMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMTQ9c3RhdGljIGludFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jOjEzMTU6Z3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzE2OlxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlICpmbG93X3J1bGVfY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMTcte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTMxOS1cXHRcXHRcXHRHVkVfQURNSU5RX0NPTkZJR1VSRV9GTE9XX1JVTEUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMyMDpcXHRcXHRcXHRzaXplb2Yoc3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTMyMS1cXHRcXHRcXHRmbG93X3J1bGVfY21kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMzM9aW50IGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfYWRtaW5xX2Zsb3dfcnVsZSAqcnVsZSwgdTMyIGxvYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzM0LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzM1OlxcdHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUgZmxvd19ydWxlX2NtZCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzM2LVxcdFxcdC5vcGNvZGUgPSBjcHVfdG9fYmUxNihHVkVfRkxPV19SVUxFX0NGR19BREQpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM0MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzQxOlxcdHJldHVybiBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUocHJpdiwgXFx1MDAyNmZsb3dfcnVsZV9jbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNDItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM9MTM0ND1pbnQgZ3ZlX2FkbWlucV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgdTMyIGxvYylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzQ2OlxcdHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUgZmxvd19ydWxlX2NtZCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzQ3LVxcdFxcdC5vcGNvZGUgPSBjcHVfdG9fYmUxNihHVkVfRkxPV19SVUxFX0NGR19ERUwpLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM1MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzUxOlxcdHJldHVybiBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUocHJpdiwgXFx1MDAyNmZsb3dfcnVsZV9jbWQpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNTItfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM9MTM1ND1pbnQgZ3ZlX2FkbWlucV9yZXNldF9mbG93X3J1bGVzKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzU1LXtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzU2OlxcdHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUgZmxvd19ydWxlX2NtZCA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzU3LVxcdFxcdC5vcGNvZGUgPSBjcHVfdG9fYmUxNihHVkVfRkxPV19SVUxFX0NGR19SRVNFVCksXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jOjEzNjA6XFx0cmV0dXJuIGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShwcml2LCBcXHUwMDI2Zmxvd19ydWxlX2NtZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM2MS19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaD01MTQ9c3RydWN0IGd2ZV9hZG1pbnFfZmxvd19ydWxlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oLTUyMC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaDo1MjE6c3RydWN0IGd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmgtNTIyLVxcdF9fYmUxNiBvcGNvZGU7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NTI4OnN0YXRpY19hc3NlcnQoc2l6ZW9mKHN0cnVjdCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUpID09IDkyKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC01MjktXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM1OjUzLjQ3NjYzNjkyN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NzA3NzM2OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkFuYWx5emluZyBGbG93IFJ1bGUgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoZXNlIHRocmVlIGtleSBmdW5jdGlvbnM6IGBndmVfYWRtaW5xX2FkZF9mbG93X3J1bGVgLCBgZ3ZlX2FkbWlucV9kZWxfZmxvd19ydWxlYCwgYW5kIGBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXNgLiBUaGUgaW50ZXJlc3RpbmcgdGhpbmcgaXMgdGhhdCB0aGV5IGFsbCBmdW5uZWwgZG93biBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uOiBgZ3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlYC4gVGhhdCdzIHNtYXJ0OyBpdCBjZW50cmFsaXplcyB0aGUgYWN0dWFsIGNvbmZpZ3VyYXRpb24gbG9naWMsIHdoaWNoIGlzIGdvb2QgZm9yIG1haW50YWluYWJpbGl0eSBhbmQgcmVkdWNlcyByZWR1bmRhbmN5LiBOb3csIG15IG5leHQgc3RlcCBpcyBjbGVhci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRyb2wgZmxvdy4gSSdtIGdvaW5nIHRvIHRyYWNrIGRvd24gZXZlcnkgc2luZ2xlIGNhbGwgdG8gdGhvc2UgdGhyZWUgaGlnaGVyLWxldmVsIGZ1bmN0aW9ucyB0byBmdWxseSBncmFzcCBob3cgZmxvdyBydWxlcyBhcmUgYWRkZWQsIGRlbGV0ZWQsIGFuZCByZXNldCB3aXRoaW4gdGhlIGJyb2FkZXIgc3lzdGVtLiBLbm93aW5nICp3aGVyZSogdGhvc2UgZnVuY3Rpb25zIGFyZSBjYWxsZWQgd2lsbCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byBwcm9wZXJseSBldmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTI1LCJPdXRwdXRUb2tlbnMiOjY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDA6MzU6NTcuMTQ3NDEzMTIyWiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MDg0MTg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZXxndmVfYWRtaW5xX2RlbF9mbG93X3J1bGV8Z3ZlX2FkbWlucV9yZXNldF9mbG93X3J1bGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jPTEzMTU9Z3ZlX2FkbWlucV9jb25maWd1cmVfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmM6MTMzMzppbnQgZ3ZlX2FkbWlucV9hZGRfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGd2ZV9hZG1pbnFfZmxvd19ydWxlICpydWxlLCB1MzIgbG9jKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzQ0OmludCBndmVfYWRtaW5xX2RlbF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCB1MzIgbG9jKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmMtMTM1My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzU0OmludCBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXMoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5jLTEzNTUte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg9NjQ2PWludCBndmVfYWRtaW5xX3JlcG9ydF9saW5rX3NwZWVkKHN0cnVjdCBndmVfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NjQ3OmludCBndmVfYWRtaW5xX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX2FkbWlucV9mbG93X3J1bGUgKnJ1bGUsIHUzMiBsb2MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2FkbWlucS5oOjY0ODppbnQgZ3ZlX2FkbWlucV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgdTMyIGxvYyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmg6NjQ5OmludCBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXMoc3RydWN0IGd2ZV9wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuaC02NTAtaW50IGd2ZV9hZG1pbnFfcXVlcnlfZmxvd19ydWxlcyhzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHUxNiBxdWVyeV9vcGNvZGUsIHUzMiBzdGFydGluZ19sb2MpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmM9MjYzPWludCBndmVfYWRkX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBldGh0b29sX3J4bmZjICpjbWQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yNzktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmM6MjgwOlxcdGVyciA9IGd2ZV9hZG1pbnFfYWRkX2Zsb3dfcnVsZShwcml2LCBydWxlLCBmc3AtXFx1MDAzZWxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yODEtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYz0yOTA9aW50IGd2ZV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYzoyOTc6XFx0cmV0dXJuIGd2ZV9hZG1pbnFfZGVsX2Zsb3dfcnVsZShwcml2LCBmc3AtXFx1MDAzZWxvY2F0aW9uKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yOTgtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE4NDU9aW50IGd2ZV9mbG93X3J1bGVzX3Jlc2V0KHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xODQ5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxODUwOlxcdHJldHVybiBndmVfYWRtaW5xX3Jlc2V0X2Zsb3dfcnVsZXMocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE4NTEtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wOFQwMDozNTo1Ny4xOTU1MDM0MTFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzM1OTg2NjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEV0aHRvb2wgRmxvdyBSdWxlIEludGVyYWN0aW9uKipcblxuQWxyaWdodCwgc28gSSdtIGZvY3VzaW5nIGluIG9uIHRoZXNlIGZ1bmN0aW9ucywgYGd2ZV9hZGRfZmxvd19ydWxlYCBhbmQgYGd2ZV9kZWxfZmxvd19ydWxlYC4gVGhlIGNvbnRleHQgaXMgZXRodG9vbCwgYW5kIG15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGV5J3JlIGJlaW5nIGludm9rZWQuIFRoZSBjcnVjaWFsIHN0ZXAgaXMgdmVyaWZ5aW5nIHRoYXQgZXRodG9vbCBpcywgaW4gZmFjdCwgdGhlIGNhbGxlci4gSXQncyBhIHN0cmFpZ2h0Zm9yd2FyZCBjaGVjaywgb2YgY291cnNlLCBidXQgYXNzdW1wdGlvbnMgYXJlIGFsd2F5cyBkYW5nZXJvdXMsIGFuZCBhbiBpbmNvcnJlY3QgY2FsbGluZyBjaGFpbiBjYW4gbGVhZCB0byBzb21lIHByZXR0eSBnbmFybHkgZGVidWdnaW5nIHNlc3Npb25zLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGUgbGlua2FnZSBiZXR3ZWVuIGV0aHRvb2wgYW5kIHRoZXNlIGZ1bmN0aW9ucyB0byBwcm9jZWVkIHdpdGggYW55IGFuYWx5c2lzIG9yIG1vZGlmaWNhdGlvbnMgd2l0aCBjb25maWRlbmNlLiBTaW1wbGUgZW5vdWdoLCBidXQgbmVjZXNzYXJ5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzY2LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDA6MzY6MDAuNTMxNDkzODIyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODY1Nzk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImd2ZV9hZGRfZmxvd19ydWxlfGd2ZV9kZWxfZmxvd19ydWxlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9MTMxOT1pbnQgZ3ZlX2dldF9mbG93X3J1bGVfaWRzKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCwgdTMyICpydWxlX2xvY3MpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg6MTMyMDppbnQgZ3ZlX2FkZF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjEzMjE6aW50IGd2ZV9kZWxfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmUuaC0xMzIyLWludCBndmVfZmxvd19ydWxlc19yZXNldChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZXRodG9vbC5jPTgxOD1zdGF0aWMgaW50IGd2ZV9zZXRfcnhuZmMoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYy04MjctXFx0Y2FzZSBFVEhUT09MX1NSWENMU1JMSU5TOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYzo4Mjg6XFx0XFx0ZXJyID0gZ3ZlX2FkZF9mbG93X3J1bGUocHJpdiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtODI5LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYy04MzAtXFx0Y2FzZSBFVEhUT09MX1NSWENMU1JMREVMOlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2V0aHRvb2wuYzo4MzE6XFx0XFx0ZXJyID0gZ3ZlX2RlbF9mbG93X3J1bGUocHJpdiwgY21kKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9ldGh0b29sLmMtODMyLVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmM9MjMzPWludCBndmVfZ2V0X2Zsb3dfcnVsZV9pZHMoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kLCB1MzIgKnJ1bGVfbG9jcylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI2Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYzoyNjM6aW50IGd2ZV9hZGRfZmxvd19ydWxlKHN0cnVjdCBndmVfcHJpdiAqcHJpdiwgc3RydWN0IGV0aHRvb2xfcnhuZmMgKmNtZClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9mbG93X3J1bGUuYy0yNjQte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfZmxvd19ydWxlLmMtMjg5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jOjI5MDppbnQgZ3ZlX2RlbF9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZXRodG9vbF9yeG5mYyAqY21kKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX2Zsb3dfcnVsZS5jLTI5MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM2OjAwLjU4MTM2NTUxWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjA3MDY0MjkwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIHRoZSBHVkUgRHJpdmVyIFJlc2V0IExvZ2ljKipcblxuT2theSwgc28gYGd2ZV9hZGRfZmxvd19ydWxlYCBhbmQgYGd2ZV9kZWxfZmxvd19ydWxlYCBhcmUgYWNjZXNzZWQgdGhyb3VnaCBgZXRodG9vbGAgY29tbWFuZHMuIFRoYXQncyBnb29kIHRvIGtub3cuIFRoaXMgcGF0Y2ggY2hhbmdlcyBhIHN5bmNocm9ub3VzIHJlc2V0IHRvIGFuIGFzeW5jaHJvbm91cyBvbmUgdXNpbmcgYGd2ZV9zY2hlZHVsZV9yZXNldGAuIEl0J3MgYSBmdW5jdGlvbmFsIGNoYW5nZSwgc2hpZnRpbmcgdGhlIHJlc2V0IGZyb20gaW1tZWRpYXRlIHRvIHNjaGVkdWxlZC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIHdvcnRoIGZ1enppbmc/XG5cbkl0J3MgYSByZWxhdGl2ZWx5IHNtYWxsIGNoYW5nZSwgbW9zdGx5IHJlbGF0ZWQgdG8gZXJyb3IgaGFuZGxpbmcsIHNwZWNpZmljYWxseSBhIHRpbWVvdXQgc2NlbmFyaW8uIFRoZSB0aW1lb3V0IG9jY3VycyB3aGVuIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIHJldHVybnMgYC1FVElNRWAsIG1lYW5pbmcgdGhlIGFkbWluIHF1ZXVlIGNvbW1hbmQgdGltZWQgb3V0LiBDYW4gSSBjcmFmdCBhIGZ1enplciB0aGF0ICpyZWxpYWJseSogdHJpZ2dlcnMgdGhpcz8gR2l2ZW4gdGhhdCB0aGVzZSB0aW1lb3V0cyBhcmUgdXN1YWxseSBoYXJkd2FyZSBvciBmaXJtd2FyZS1yZWxhdGVkLCBpdCBzZWVtcyB1bmxpa2VseS4gSG93ZXZlciwgc3l6a2FsbGVyIHJ1bnMgaW4gR0NFLCB3aGljaCBtZWFucyBpdCdzIHVzaW5nIHRoZSByZWFsIEdWRSBkcml2ZXIuIFNvLCBjb3VsZCAqaXQqIHBvdGVudGlhbGx5IGdlbmVyYXRlIGFuIGFkbWluIHF1ZXVlIHRpbWVvdXQ/IFBlcmhhcHMgaWYgdGhlIGZ1enplciBjb3VsZCBzdGFsbCB0aGUgYWRtaW4gcXVldWUgb3Igc29tZWhvdyBzZW5kIGEgY29tcGxldGVseSBtYWxmb3JtZWQgY29tbWFuZCB0aGF0IHRoZSBiYWNrZW5kIGp1c3QgZHJvcHMuIEJ1dCBldmVuIGlmIGl0IGNvdWxkLCB0aGUgY2hhbmdlIGlzIGp1c3Qgc2NoZWR1bGluZyB0aGUgcmVzZXQsIG5vdCBhIHNpZ25pZmljYW50IG92ZXJoYXVsIG9mIHRoZSByZXNldCBsb2dpYyBpdHNlbGYuXG5cblRoaW5raW5nIGFib3V0IGl0LCBpcyB0aGVyZSBhbnkgbmV3IGNvZGUgdG8gZXZlbiBmdXp6PyBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCBpcyBhbHJlYWR5IHBhcnQgb2YgdGhlIGRyaXZlci4gU28sIHBlcmhhcHMgdGhlICppbXBhY3QqIG9mIGEgdGltZW91dCBpcyBkaWZmZXJlbnQsIGJ1dCB0aGUgY29kZSBiZWluZyBleGVjdXRlZCBpcyBub3QgbmV3LiBNaWdodCBiZSB3b3J0aCB0YWtpbmcgYSBxdWljayBsb29rIGF0IGBndmVfc2NoZWR1bGVfcmVzZXRgIGp1c3QgdG8gY29uZmlybSwgYnV0IG92ZXJhbGwsIHRoZSBhZGRlZCB2YWx1ZSBzZWVtcyBsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzOTcsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDhUMDA6MzY6MDYuNjUyMDExMjg3WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyOTU1MTA0MTMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZ3ZlX3NjaGVkdWxlX3Jlc2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlLmg9MTI5Nz1zdHJ1Y3QgcGFnZV9wb29sICpndmVfcnhfY3JlYXRlX3BhZ2VfcG9vbChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTEzMDEtLyogUmVzZXQgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oOjEzMDI6dm9pZCBndmVfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGd2ZV9wcml2ICpwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZS5oLTEzMDMtaW50IGd2ZV9yZXNldChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIGJvb2wgYXR0ZW1wdF90ZWFyZG93bik7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYz0xMzE1PWd2ZV9hZG1pbnFfY29uZmlndXJlX2Zsb3dfcnVsZShzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzI0LVxcdFxcdGRldl9lcnIoXFx1MDAyNnByaXYtXFx1MDAzZXBkZXYtXFx1MDAzZWRldiwgXFxcIlRpbWVvdXQgdG8gY29uZmlndXJlIHRoZSBmbG93IHJ1bGUsIHRyaWdnZXIgcmVzZXRcXFwiKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYzoxMzI1OlxcdFxcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuYy0xMzI2LVxcdH0gZWxzZSBpZiAoIWVycikge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTExNjk9dm9pZCBndmVfZnJlZV9xdWV1ZV9wYWdlX2xpc3Qoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTExOTgtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjExOTk6dm9pZCBndmVfc2NoZWR1bGVfcmVzZXQoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xMjAwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0yMDg1PXN0YXRpYyB2b2lkIGd2ZV90eF90aW1lb3V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCB0eHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwOTMtXFx0aWYgKCFndmVfdHhfdGltZW91dF90cnlfcV9raWNrKHByaXYsIHR4cXVldWUpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyMDk0OlxcdFxcdGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjA5NS1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM9NTM0PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3ZlX3J4X2NvcHlfdG9fcG9vbChzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy01NTAtXFx0XFx0aWYgKHVubGlrZWx5KHJlY3ljbGUgXFx1MDAzYyAwKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM6NTUxOlxcdFxcdFxcdGd2ZV9zY2hlZHVsZV9yZXNldChyeC1cXHUwMDNlZ3ZlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTU1Mi1cXHRcXHRcXHRyZXR1cm4gTlVMTDtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmM9NjQ4PXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqZ3ZlX3J4X3NrYihzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYsIHN0cnVjdCBndmVfcnhfcmluZyAqcngsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTY3MC1cXHRcXHRpZiAodW5saWtlbHkocmVjeWNsZSBcXHUwMDNjIDApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYzo2NzE6XFx0XFx0XFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHByaXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtNjcyLVxcdFxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYz03OTY9c3RhdGljIHZvaWQgZ3ZlX3J4KHN0cnVjdCBndmVfcnhfcmluZyAqcngsIG5ldGRldl9mZWF0dXJlc190IGZlYXQsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jLTgzMi1cXHRcXHRuYXBpX2ZyZWVfZnJhZ3MobmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYzo4MzM6XFx0XFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHJ4LVxcdTAwM2VndmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtODM0LVxcdFxcdGdvdG8gZmluaXNoX2ZyYWc7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jPTk0Nz1zdGF0aWMgYm9vbCBndmVfcnhfcmVmaWxsX2J1ZmZlcnMoc3RydWN0IGd2ZV9wcml2ICpwcml2LCBzdHJ1Y3QgZ3ZlX3J4X3JpbmcgKnJ4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy05NzctXFx0XFx0XFx0XFx0aWYgKCFyeC1cXHUwMDNlZGF0YS5yYXdfYWRkcmVzc2luZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jOjk3ODpcXHRcXHRcXHRcXHRcXHRndmVfc2NoZWR1bGVfcmVzZXQocHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYy05NzktXFx0XFx0XFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfcnguYz0xMDAwPXN0YXRpYyBpbnQgZ3ZlX2NsZWFuX3J4X2RvbmUoc3RydWN0IGd2ZV9yeF9yaW5nICpyeCwgaW50IGJ1ZGdldCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtMTAzNi1cXHRcXHRcXHQgICAgR1ZFX1NFUU5PKGRlc2MtXFx1MDAzZWZsYWdzX3NlcSksIHJ4LVxcdTAwM2VkZXNjLnNlcW5vKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9yeC5jOjEwMzc6XFx0XFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHJ4LVxcdTAwM2VndmUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX3J4LmMtMTAzOC1cXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM2OjA2Ljk0NzUzMDkzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMzY5MDYyNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5c2lzIG9mIGEgTWlub3IgR1ZFIERyaXZlciBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBhbmQgaXQncyBhIHNpbXBsZSBzdWJzdGl0dXRpb246IHJlcGxhY2luZyBhIGRpcmVjdCBjYWxsIHRvIGBndmVfcmVzZXQocHJpdiwgdHJ1ZSlgIHdpdGggYGd2ZV9zY2hlZHVsZV9yZXNldChwcml2KWAuICBUaGUga2V5IGRpZmZlcmVuY2UgaGVyZSBpcyB0aGF0IGBndmVfcmVzZXRgIGlzIHN5bmNocm9ub3VzLCB3aGlsZSBgZ3ZlX3NjaGVkdWxlX3Jlc2V0YCB1dGlsaXplcyBhIHdvcmtxdWV1ZS4gVGhpcyBsb29rcyBsaWtlIGEgdmVyeSBtaW5vciB0d2VhayBpbiBlcnJvciBoYW5kbGluZy4gSXQncyBkZXNpZ25lZCB0byBzaWRlc3RlcCBhIGJ1ZyB3aGVyZSBgZ3ZlX3Jlc2V0YCB3YXMgcG90ZW50aWFsbHkgY2FsbGVkIGluIHRoZSB3cm9uZyBjb250ZXh0IOKAkyBtYXliZSBob2xkaW5nIGEgbG9jayBpdCBzaG91bGRuJ3QsIG9yIGZyb20gYW4gYXRvbWljIGNvbnRleHQsIG9yIGp1c3QgaW4gYSBibG9ja2luZyBzaXR1YXRpb24gd2hlcmUgdGhhdCdzIGEgbm8tZ28uXG5cbk5vdywgbGV0J3MgdHJhY2UgdGhpcy4gIGBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGVgIOKAkyB3aGVyZSB0aGUgY2hhbmdlIGhhcHBlbnMg4oCTIGlzIGNhbGxlZCBmcm9tIGV0aHRvb2wsIHdoaWNoICpzaG91bGQqIGJlIHByb2Nlc3MgY29udGV4dCwgcmlnaHQ/IEJ1dCwgYW5kIHRoaXMgaXMgdGhlIGNydWNpYWwgcGFydCwgYGd2ZV9yZXNldGAgbWlnaHQgYmUgdGFraW5nIGxvY2tzIHRoYXQgYXJlICphbHJlYWR5KiBoZWxkIGJ5IHRoZSBldGh0b29sIHBhdGguICBGb3IgaW5zdGFuY2UsIGBydG5sX2xvY2tgIGNvdWxkIGJlIHRoZSBjdWxwcml0LiAgSWYgYGV0aHRvb2xgIGFscmVhZHkgaG9sZHMgYHJ0bmxfbG9ja2AgYW5kIHRoZW4gYGd2ZV9yZXNldGAgdHJpZXMgdG8gdGFrZSBpdCwgKmJhbSog4oCTIGRlYWRsb2NrLiBUaGlzIGlzIGxpa2VseSB0aGUgcm9vdCBvZiB0aGUgcHJvYmxlbS4gU2NoZWR1bGluZyB0aGUgcmVzZXQgdGhyb3VnaCB0aGUgd29ya3F1ZXVlIGF2b2lkcyB0aGlzIGNvbnRlbnRpb24uXG5cblNvLCB0aGUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgcGF0Y2ggd29ydGggdGhyb3dpbmcgZnV6emluZyBhdD8gIEl0J3MgYSBvbmUtbGluZSBmaXggb24gYW4gZXJyb3IgcGF0aCAoYSB0aW1lb3V0KSwgZXNzZW50aWFsbHkgcHJldmVudGluZyBhIGRlYWRsb2NrIG9yIHNpbWlsYXIgY29udGV4dCBpc3N1ZS4gSXQncyBhIGxvdy1yaXNrLCBkZWZlbnNpdmUgY2hhbmdlLiBUaGUgZXJyb3IgcGF0aCBpdHNlbGYgaXMgdG91Z2ggdG8gdHJpZ2dlci4gQW4gYWRtaW5xIHRpbWVvdXQgaXMgcmVxdWlyZWQsIG5vdCBzb21ldGhpbmcgdGhhdCdzIGxpa2VseSB0byBoYXBwZW4gd2l0aCBmcmVxdWVudCB1c2UuIFRoZSBwYXRjaCBpcyBub3QgaW50cm9kdWNpbmcgbm92ZWwgZnVuY3Rpb25hbGl0eTsgaXQncyBtZXJlbHkgdXNpbmcgYW4gZXhpc3RpbmcgaGVscGVyIHRvIGRvIHdoYXQgd2FzIHByZXZpb3VzbHkgZG9uZSBzeW5jaHJvbm91c2x5LlxuXG5Db25zaWRlcmluZyBhbGwgdGhpcywgSSdtIGdvaW5nIHRvIGxlYW4gdG93YXJkcyBgV29ydGhGdXp6aW5nPWZhbHNlYC4gSXQncyBhIHRyaXZpYWwgZXJyb3IgaGFuZGxpbmcgZml4IGluIGEgaGFyZC10by1oaXQgc2NlbmFyaW8gYW5kIGFkZHMgbm8gbmV3IGxvZ2ljIHRvIGZ1enouXG5cbkxldCdzIHF1aWNrbHkgZG91YmxlLWNoZWNrIHRoZSBwYXRjaCBhZ2FpbiB0byBiZSBzdXJlOlxuXG5gYGBkaWZmXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9hZG1pbnEuY1xuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfYWRtaW5xLmNcbkBAIC0xMzIyLDcgKzEzMjIsNyBAQCBndmVfYWRtaW5xX2NvbmZpZ3VyZV9mbG93X3J1bGUoc3RydWN0IGd2ZV9wcml2ICpwcml2LFxuIFxuIFx0aWYgKGVyciA9PSAtRVRJTUUpIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZwcml2LVx1MDAzZXBkZXYtXHUwMDNlZGV2LCBcIlRpbWVvdXQgdG8gY29uZmlndXJlIHRoZSBmbG93IHJ1bGUsIHRyaWdnZXIgcmVzZXRcIik7XG4tXHRcdGd2ZV9yZXNldChwcml2LCB0cnVlKTtcbitcdFx0Z3ZlX3NjaGVkdWxlX3Jlc2V0KHByaXYpO1xuIFx0fSBlbHNlIGlmICghZXJyKSB7XG4gXHRcdHByaXYtXHUwMDNlZmxvd19ydWxlc19jYWNoZS5ydWxlc19jYWNoZV9zeW5jZWQgPSBmYWxzZTtcbiBcdH1cbmBgYFxuXG5ZdXAsIHNpbXBsZS4gIFRoaXMgcmVhbGx5IGRvZXMganVzdCBvZmZsb2FkIHRoZSByZXNldCB0byBhIHdvcmtxdWV1ZSB0byBhdm9pZCBhIHBvdGVudGlhbCBsb2NrIGNvbnRlbnRpb24gaXNzdWUuIFZlcnkgc3RyYWlnaHRmb3J3YXJkLiAgU2luY2UgaXQncyBvbiBhIHRpbWVvdXQgZXJyb3IgcGF0aCBhbmQgb25seSBhbHRlcnMgYSBzbWFsbCBwb3J0aW9uIG9mIHRoZSBjb2RlLCBhbmQgdGhlcmUgaXMgbm8gbmV3IGZ1bmN0aW9uYWxpdHksIGZ1enppbmcgaXNuJ3QgZ29pbmcgdG8gYmUgdGhlIGhpZ2hlc3QgeWllbGQgaGVyZS4gVGhlcmVmb3JlIEknbGwgcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NDkzLCJPdXRwdXRUb2tlbnMiOjk1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTkwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM2OjE3LjMxNjU5NjUyOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2MjgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgb25lLWxpbmUgZml4IGluIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggKGFkbWluIHF1ZXVlIHRpbWVvdXQpIHRoYXQgcmVwbGFjZXMgYSBzeW5jaHJvbm91cyByZXNldCB3aXRoIGFuIGFzeW5jaHJvbm91cyBzY2hlZHVsZWQgcmVzZXQgdG8gbGlrZWx5IGF2b2lkIGEgZGVhZGxvY2suIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLCBhbmQgdGhlIGVycm9yIHBhdGggaXMgZGlmZmljdWx0IHRvIHRyaWdnZXIgcmVsaWFibHkgZnJvbSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgb25lLWxpbmUgZml4IGluIGFuIGVycm9yIGhhbmRsaW5nIHBhdGggKGFkbWluIHF1ZXVlIHRpbWVvdXQpIHRoYXQgcmVwbGFjZXMgYSBzeW5jaHJvbm91cyByZXNldCB3aXRoIGFuIGFzeW5jaHJvbm91cyBzY2hlZHVsZWQgcmVzZXQgdG8gbGlrZWx5IGF2b2lkIGEgZGVhZGxvY2suIEl0IGRvZXMgbm90IGludHJvZHVjZSBuZXcgZnVuY3Rpb25hbCBsb2dpYyB0aGF0IHdvdWxkIGJlbmVmaXQgZnJvbSB0YXJnZXRlZCBmdXp6aW5nLCBhbmQgdGhlIGVycm9yIHBhdGggaXMgZGlmZmljdWx0IHRvIHRyaWdnZXIgcmVsaWFibHkgZnJvbSBhIGZ1enplci5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA4VDAwOjM2OjE3LjMxNjYyNTkwOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowbznrk[1] Phase: Running StartedAt: 2026-08-08 00:36:28 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowbznrk[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-08 00:36:28 +0000 UTC FinishedAt: 2026-08-08 00:36:33 +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,}