Name: series-workflow42nxx Phase: Failed StartedAt: 2026-07-26 06:46:29 +0000 UTC FinishedAt: 2026-07-26 07:10:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42nxx[0] Phase: Succeeded StartedAt: 2026-07-26 06:46:29 +0000 UTC FinishedAt: 2026-07-26 07:10:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42nxx[0].run-triage Phase: Succeeded StartedAt: 2026-07-26 06:46:29 +0000 UTC FinishedAt: 2026-07-26 07:10:44 +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+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgYml0ZmllbGQgc3RydWN0IGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2l0aCBhIHNpbXBsZSBgX19sZTY0IGF0dHJpYnV0ZXNgIGluIGBncHRfZW50cnlgLiBUaGUgYGF0dHJpYnV0ZXNgIGZpZWxkIGlzIG5ldmVyIGFjY2Vzc2VkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZS4gVGhlIHNpemUgb2YgYGdwdF9lbnRyeWAgcmVtYWlucyBleGFjdGx5IHRoZSBzYW1lICgxMjggYnl0ZXMpIGJlY2F1c2UgdGhlIG9sZCBzdHJ1Y3Qgd2FzIGBfX3BhY2tlZGAgYW5kIGNvbnRhaW5lZCBleGFjdGx5IDY0IGJpdHMgb2YgYml0ZmllbGRzLiBUaGVyZWZvcmUsIHRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZS9jbGVhbnVwIGNoYW5nZSB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFlODcxZjNjNmU2ZDk0Y2U3MjhjNDU3ZmYxNWU4ZGY0OWMyMDdjY2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAwNzowODozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2VmaS5oIGIvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuaW5kZXggODRiOWYzNmI5ZTQ3OTcuLjFmNTZmOTNiMjgwNDhmIDEwMDY0NFxuLS0tIGEvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuQEAgLTc1LDE4ICYjNDM7NzUsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgX2dwdF9oZWFkZXIge1xuIFx0ICovXG4gfSBfX3BhY2tlZCBncHRfaGVhZGVyO1xuIFxuLXR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnlfYXR0cmlidXRlcyB7XG4tXHR1NjQgcmVxdWlyZWRfdG9fZnVuY3Rpb246MTtcbi1cdHU2NCByZXNlcnZlZDo0Nztcbi0gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7XG4tfSBfX3BhY2tlZCBncHRfZW50cnlfYXR0cmlidXRlcztcbi1cbiB0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcbiBcdGVmaV9ndWlkX3QgcGFydGl0aW9uX3R5cGVfZ3VpZDtcbiBcdGVmaV9ndWlkX3QgdW5pcXVlX3BhcnRpdGlvbl9ndWlkO1xuIFx0X19sZTY0IHN0YXJ0aW5nX2xiYTtcbiBcdF9fbGU2NCBlbmRpbmdfbGJhO1xuLVx0Z3B0X2VudHJ5X2F0dHJpYnV0ZXMgYXR0cmlidXRlcztcbiYjNDM7XHRfX2xlNjQgYXR0cmlidXRlcztcbiBcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XG4gfSBfX3BhY2tlZCBncHRfZW50cnk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgYml0ZmllbGQgc3RydWN0IGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2l0aCBhIHNpbXBsZSBgX19sZTY0IGF0dHJpYnV0ZXNgIGluIGBncHRfZW50cnlgLiBUaGUgYGF0dHJpYnV0ZXNgIGZpZWxkIGlzIG5ldmVyIGFjY2Vzc2VkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZS4gVGhlIHNpemUgb2YgYGdwdF9lbnRyeWAgcmVtYWlucyBleGFjdGx5IHRoZSBzYW1lICgxMjggYnl0ZXMpIGJlY2F1c2UgdGhlIG9sZCBzdHJ1Y3Qgd2FzIGBfX3BhY2tlZGAgYW5kIGNvbnRhaW5lZCBleGFjdGx5IDY0IGJpdHMgb2YgYml0ZmllbGRzLiBUaGVyZWZvcmUsIHRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZS9jbGVhbnVwIGNoYW5nZSB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFlODcxZjNjNmU2ZDk0Y2U3MjhjNDU3ZmYxNWU4ZGY0OWMyMDdjY2IKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAwNzowODozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmggYi9ibG9jay9wYXJ0aXRpb25zL2VmaS5oCmluZGV4IDg0YjlmMzZiOWU0Nzk3Li4xZjU2ZjkzYjI4MDQ4ZiAxMDA2NDQKLS0tIGEvYmxvY2svcGFydGl0aW9ucy9lZmkuaAomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9wYXJ0aXRpb25zL2VmaS5oCkBAIC03NSwxOCAmIzQzOzc1LDEyIEBAIHR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHsKIAkgKi8KIH0gX19wYWNrZWQgZ3B0X2hlYWRlcjsKIAotdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHsKLQl1NjQgcmVxdWlyZWRfdG9fZnVuY3Rpb246MTsKLQl1NjQgcmVzZXJ2ZWQ6NDc7Ci0gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7Ci19IF9fcGFja2VkIGdwdF9lbnRyeV9hdHRyaWJ1dGVzOwotCiB0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHsKIAllZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7CiAJZWZpX2d1aWRfdCB1bmlxdWVfcGFydGl0aW9uX2d1aWQ7CiAJX19sZTY0IHN0YXJ0aW5nX2xiYTsKIAlfX2xlNjQgZW5kaW5nX2xiYTsKLQlncHRfZW50cnlfYXR0cmlidXRlcyBhdHRyaWJ1dGVzOwomIzQzOwlfX2xlNjQgYXR0cmlidXRlczsKIAlfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildOwogfSBfX3BhY2tlZCBncHRfZW50cnk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRUZJIFBhcnRpdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmhgLCBhbmQgaXQgbG9va3MgbGlrZSBhIGdvb2Qgb25lLiBUaGV5JiMzOTtyZSByZW1vdmluZyB0aGUgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCBzdHJ1Y3QsIHdoaWNoIHdhcyB1c2luZyBiaXRmaWVsZHMsIGFuZCByZXBsYWNpbmcgaXQgd2l0aCBhIHNpbXBsZSBgX19sZTY0IGF0dHJpYnV0ZXNgIGZpZWxkIGRpcmVjdGx5IHdpdGhpbiB0aGUgYGdwdF9lbnRyeWAgc3RydWN0LiBUaGlzIGlzIGEgc21hcnQgbW92ZSwgSSBpbW1lZGlhdGVseSBzZWUgdGhlIGJlbmVmaXQuIEJpdGZpZWxkcyBhcmUgbm90b3Jpb3VzIGZvciBiZWluZyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkOyB0aGUgbGF5b3V0IGlzbiYjMzk7dCBndWFyYW50ZWVkIHRvIGJlIGNvbnNpc3RlbnQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLCBhbmQgdGhhdCBjYW4gbGVhZCB0byBzb21lIG5hc3R5IGVuZGlhbm5lc3MgYW5kIGxheW91dCBidWdzIGRvd24gdGhlIGxpbmUuIFVzaW5nIGBfX2xlNjRgIHByb3ZpZGVzIGEgbXVjaCBtb3JlIHByZWRpY3RhYmxlIGFuZCBwb3J0YWJsZSB3YXkgdG8gaGFuZGxlIHRoZXNlIGF0dHJpYnV0ZXMsIGVmZmVjdGl2ZWx5IGVuc3VyaW5nIHRoZSBkYXRhIGlzIGNvcnJlY3RseSBpbnRlcnByZXRlZCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0mIzM5O3MgYnl0ZSBvcmRlci4gSXQmIzM5O3MgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGZpeCB0byBhIHBvdGVudGlhbCBsb25nLXRlcm0gcHJvYmxlbS4gSSBsaWtlIHRoaXMuIEJ1dCwganVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgY2hlY2sgaWYgdGhpcyBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdhcyB1c2VkIGFueXdoZXJlIGVsc2UuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGZyb20gdGhpcyBjaGFuZ2UuIEFsd2F5cyBkb3VibGUgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtncHRfZW50cnlfYXR0cmlidXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwMwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgZ3B0X2VudHJ5YCBVc2FnZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGdlYXJlZCB0b3dhcmRzIGEgdGFyZ2V0ZWQgc2VhcmNoLiBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnkgaW5zdGFuY2Ugb2YgYGdwdF9lbnRyeWAuIFRoaXMgaXMgbGlrZWx5IHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBhIHNwZWNpZmljIG1vZHVsZSwgZnVuY3Rpb24sIG9yIGRhdGEgc3RydWN0dXJlIHdpdGhpbiB0aGlzIGNvZGUgYmFzZS4gSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCB0aGUgYmVzdCBzZWFyY2ggdG9vbHMgdG8gdXNlIOKAkyBncmVwLCByaXBncmVwLCB0aGUgSURFJiMzOTtzIGJ1aWx0LWluIHNlYXJjaCB3aXRoIGFkdmFuY2VkIG9wdGlvbnMuLi4gSSBuZWVkIGEgc2VhcmNoIHRoYXQmIzM5O3MgcHJlY2lzZSBidXQgYWxzbyBjb3ZlcnMgcG90ZW50aWFsIHZhcmlhdGlvbnMuIEFtIEkgbG9va2luZyBmb3IgYSBsaXRlcmFsIHN0cmluZyBtYXRjaCwgb3Igc2hvdWxkIEkgY29uc2lkZXIgcmVndWxhciBleHByZXNzaW9ucyB0byBhY2NvdW50IGZvciBkaWZmZXJlbnQgY2FwaXRhbGl6YXRpb24gb3IgbmFtaW5nIGNvbnZlbnRpb25zIChgR1BUX0VOVFJZYCwgYEdwdEVudHJ5YCwgZXRjLik/IEFsc28sIEkgbmVlZCB0byBjb25zaWRlciB3aGVyZSBJIHNob3VsZCBiZSBzZWFyY2hpbmcuIElzIGl0IHRoZSBlbnRpcmUgcHJvamVjdCwgb3IgYSBzdWJzZXQgb2YgZGlyZWN0b3JpZXMgYmFzZWQgb24gbXkgZXhpc3Rpbmcga25vd2xlZGdlPyBUaGUgc2NvcGUgd2lsbCBzaWduaWZpY2FudGx5IGltcGFjdCBib3RoIHRoZSB0aW1lIHRvIHJ1biBhbmQgdGhlIG5vaXNlLXRvLXNpZ25hbCByYXRpbyBvZiB0aGUgcmVzdWx0cy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBhbnkgY29uZmlndXJhdGlvbiBmaWxlcywgZG9jdW1lbnRhdGlvbiwgYW5kIGV2ZW4gdGVzdCBjYXNlcywgYXMgdGhvc2UgYXJlIG9mdGVuIHdoZXJlIHRoZXNlIHR5cGVzIG9mIHRoaW5ncyBhcmUgZGVmaW5lZCBhbmQgdXNlZC4gTGV0JiMzOTtzIGdldCBzZWFyY2hpbmcgYW5kIHNlZSB3aGF0IHdlIHVuY292ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z3B0X2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI2OS0gKi9cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjcxLVx0XHRcdFx0XHQgZ3B0X2hlYWRlciAqZ3B0KVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjczLVx0c2l6ZV90IGNvdW50O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzoyNzQ6XHRncHRfZW50cnkgKnB0ZTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MzM0PXN0YXRpYyBpbnQgaXNfZ3B0X3ZhbGlkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHU2NCBsYmEsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcdFx0XHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0zMzYte1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVx0LyogQ2hlY2sgdGhhdCBzaXplb2ZfcGFydGl0aW9uX2VudHJ5IGhhcyB0aGUgY29ycmVjdCB2YWx1ZSAqL1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0MTU6XHRpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKSB7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQxNi1cdFx0cHJfZGVidWcoXCYjMzQ7R1VJRCBQYXJ0aXRpb24gRW50cnkgU2l6ZSBjaGVjayBmYWlsZWQuXFxuXCYjMzQ7KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTQ1OT1zdGF0aWMgaW5saW5lIGludFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0NjA6aXNfcHRlX3ZhbGlkKGNvbnN0IGdwdF9lbnRyeSAqcHRlLCBjb25zdCB1NjQgbGFzdGxiYSlcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTU4MD1zdGF0aWMgaW50IGZpbmRfdmFsaWRfZ3B0KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGdwdF9oZWFkZXIgKipncHQsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcdFx0XHQgIGdwdF9lbnRyeSAqKnB0ZXMpXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Mi17XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXHRncHRfaGVhZGVyICpwZ3B0ID0gTlVMTCwgKmFncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo1ODU6XHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNTg2LVx0bGVnYWN5X21iciAqbGVnYWN5bWJyO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NzEyPWludCBlZmlfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXHRncHRfaGVhZGVyICpncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3MTU6XHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTYtXHR1MzIgaTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oPTU1PXR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo3ODp0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNzktXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC04NC1cdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oOjg1On0gX19wYWNrZWQgZ3B0X2VudHJ5O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuaC04Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTg5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1BUIFBhcnRpdGlvbiBUYWJsZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyB0aGUgYGF0dHJpYnV0ZXNgIGZpZWxkIHdpdGhpbiB0aGUgYGdwdF9lbnRyeWAgc3RydWN0dXJlIGZyb20gYSBiaXRmaWVsZCBzdHJ1Y3QgdG8gYSBgX19sZTY0YCB0eXBlLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBhIGdvb2Qgb25lIGF0IHRoYXQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBlbmRpYW5uZXNzIG9yIGxheW91dCBwcm9ibGVtcywgd2hpY2ggaXMgY3JpdGljYWwgd2hlbiBkZWFsaW5nIHdpdGggRUZJIEdVSUQgUGFydGl0aW9uIFRhYmxlcyAoR1BUcykuCgpUaGUgcmVsZXZhbnQgZmlsZSBpcyBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoaXMgY29kZSBpcyByZXNwb25zaWJsZSBmb3IgcGFyc2luZyBHUFQgcGFydGl0aW9uIHRhYmxlcy4gSSBjYW4gc2VlIHRoZSByZWxldmFuY2UsIGdpdmVuIHRoYXQgdGhpcyBpcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSBibG9jayBkZXZpY2UgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSBoYW5kbGluZyBob3cgdGhlIHN5c3RlbSB1bmRlcnN0YW5kcyBhbmQgdXRpbGl6ZXMgc3RvcmFnZSBkZXZpY2VzLgoKVGhlIHBhdGggdG8gdGhpcyBjb2RlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYSBibG9jayBkZXZpY2Ugd2l0aCBhIEdQVCBwYXJ0aXRpb24gdGFibGUuIEFuZCB0aGUgZW50cnkgcG9pbnQgZm9yIEVGSSBwYXJ0aXRpb24gcGFyc2luZyBpcyB0aGUgYGVmaV9wYXJ0aXRpb25gIGZ1bmN0aW9uLCBhbHNvIGluIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYC4KCk5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgYmVpbmcgdXNlZC4gU2VlaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2Ugd2lsbCBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIGhvdyB0aGlzIGFmZmVjdHMgb3RoZXIgcmVsYXRlZCBzdHJ1Y3R1cmVzIG9yIGZ1bmN0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXR0cmlidXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMjgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgLCBhbmQgSSYjMzk7bSBhIGJpdCBwdXp6bGVkLiBJIHdhcyBleHBlY3RpbmcgdG8gZmluZCByZWZlcmVuY2VzIHRvIHRoZSBgYXR0cmlidXRlc2AgdmFyaWFibGUgaW4gdGhlcmUsIGJ1dCBpdCYjMzk7cyBub3QgcHJlc2VudC4gVGhhdCBzZWVtcyBvZGQsIHJpZ2h0PyBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhhdCB2YXJpYWJsZSBpcyB1c2VkIGluIG90aGVyIHBsYWNlcyB3aXRoaW4gdGhlIGNvZGViYXNlLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgYSB2YXJpYWJsZSBpcyBkZWZpbmVkIGFuZCBob3cgaXQmIzM5O3MgdXNlZCwgZXZlbiBpZiBpdCYjMzk7cyBub3QgaW4gdGhlIGV4cGVjdGVkIGxvY2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IHdpbGwgaGVscCBtZSB3aXRoIGFueSBjaGFuZ2VzIHRvIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgYXR0cmlidXRlc2AgdG8gc2VlIHdoZXJlIGl0IGNvbWVzIGludG8gcGxheS4gSSBhbSBzdXJlIEkgd2lsbCBmaW5kIHNvbWUgY29ubmVjdGlvbnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0dHJpYnV0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5oPTc4PXR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnkge1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODItXHRfX2xlNjQgZW5kaW5nX2xiYTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6ODM6XHRfX2xlNjQgYXR0cmlidXRlcztcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODQtXHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzQxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBHUFQgUGFydGl0aW9uIEVudHJ5IEF0dHJpYnV0ZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhpcyBgYXR0cmlidXRlc2AgZmllbGQgd2l0aGluIHRoZSBgZ3B0X2VudHJ5YCBzdHJ1Y3R1cmUuIEl0IGluaXRpYWxseSBzZWVtZWQgdW51c2VkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGFjdHVhbCBjb2RlLCBqdXN0IGRlZmluZWQgYXMgcGFydCBvZiB0aGUgc3RydWN0dXJlLiBCdXQgaG9sZCBvbiwgdGhlIGBzaXplb2YoZ3B0X2VudHJ5KWAgaXMgaW5kZWVkIHVzZWQsIHNwZWNpZmljYWxseSBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AsIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFRoZSBjb2RlIGNoZWNrcyBgaWYgKGxlMzJfdG9fY3B1KCgqZ3B0KS0mZ3Q7c2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSkgIT0gc2l6ZW9mKGdwdF9lbnRyeSkpYC4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzaXplLiBCZWZvcmUsIHRoZSBgZ3B0X2VudHJ5YCBzaXplIHdhcyAxMjggYnl0ZXMsIGFuZCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpdCAqc3RpbGwqIGlzIDEyOCBieXRlcy4gR29vZCwgdGhhdCBtYXRjaGVzIG15IGludHVpdGlvbi4gU28sIHRoZSBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdhczoKYGBgYwp0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5X2F0dHJpYnV0ZXMgewoJdTY0IHJlcXVpcmVkX3RvX2Z1bmN0aW9uOjE7Cgl1NjQgcmVzZXJ2ZWQ6NDc7CiAgICAgICAgdTY0IHR5cGVfZ3VpZF9zcGVjaWZpYzoxNjsKfSBfX3BhY2tlZCBncHRfZW50cnlfYXR0cmlidXRlczsKYGBgCgpUaGF0JiMzOTtzIGFuIDgtYnl0ZSBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIHNlbnNlLiBBbmQgdGhlIGBfX2xlNjQgYXR0cmlidXRlcztgIG1lbWJlciBpcyBhbHNvIDggYnl0ZXMuIFNvIHRoZSBjaGFuZ2UgdG8gdGhlIGBhdHRyaWJ1dGVzYCBkZWZpbml0aW9uIGRpZG4mIzM5O3QgYWZmZWN0IHRoZSBvdmVyYWxsIGBncHRfZW50cnlgIHNpemUuIEkgd2FzIG9uIHRoZSByaWdodCB0cmFjayB0aGVyZS4gSG93ZXZlciwganVzdCBiZWNhdXNlIHRoZSBzaXplIGlzIGNvcnJlY3QgZG9lc24mIzM5O3QgbWVhbiBpdCYjMzk7cyByaWdodC4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGZvciBtb3JlIHVzZXMgb2YgYGF0dHJpYnV0ZXNgIHRvIGJlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z3B0X2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI2OS0gKi9cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjcxLVx0XHRcdFx0XHQgZ3B0X2hlYWRlciAqZ3B0KVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjczLVx0c2l6ZV90IGNvdW50O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzoyNzQ6XHRncHRfZW50cnkgKnB0ZTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MzM0PXN0YXRpYyBpbnQgaXNfZ3B0X3ZhbGlkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHU2NCBsYmEsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcdFx0XHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0zMzYte1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVx0LyogQ2hlY2sgdGhhdCBzaXplb2ZfcGFydGl0aW9uX2VudHJ5IGhhcyB0aGUgY29ycmVjdCB2YWx1ZSAqL1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0MTU6XHRpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKSB7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQxNi1cdFx0cHJfZGVidWcoXCYjMzQ7R1VJRCBQYXJ0aXRpb24gRW50cnkgU2l6ZSBjaGVjayBmYWlsZWQuXFxuXCYjMzQ7KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTQ1OT1zdGF0aWMgaW5saW5lIGludFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0NjA6aXNfcHRlX3ZhbGlkKGNvbnN0IGdwdF9lbnRyeSAqcHRlLCBjb25zdCB1NjQgbGFzdGxiYSlcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTU4MD1zdGF0aWMgaW50IGZpbmRfdmFsaWRfZ3B0KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGdwdF9oZWFkZXIgKipncHQsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcdFx0XHQgIGdwdF9lbnRyeSAqKnB0ZXMpXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Mi17XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXHRncHRfaGVhZGVyICpwZ3B0ID0gTlVMTCwgKmFncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo1ODU6XHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNTg2LVx0bGVnYWN5X21iciAqbGVnYWN5bWJyO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NzEyPWludCBlZmlfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXHRncHRfaGVhZGVyICpncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3MTU6XHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTYtXHR1MzIgaTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oPTU1PXR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo3ODp0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNzktXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC04NC1cdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oOjg1On0gX19wYWNrZWQgZ3B0X2VudHJ5O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuaC04Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyMAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIFR5cGUgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHByb3Bvc2VkIGNoYW5nZSBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1dhaXQgYSBtaW51dGUsIGlmIGBhdHRyaWJ1dGVzYCBpc24mIzM5O3QgYWN0dWFsbHkgKnVzZWQqIGFueXdoZXJlLCB0aGVuIGFsdGVyaW5nIGl0cyB0eXBlIHNob3VsZG4mIzM5O3QgY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdyBhdCBhbGwsIHJpZ2h0PyYjMzQ7IFRoZSBvbmx5IHNpdHVhdGlvbiB3aGVyZSB0aGlzIG1pZ2h0ICpub3QqIGJlIHRydWUgaXMgaWYgdGhlIGBncHRfZW50cnlfYXR0cmlidXRlc2Agc3RydWN0IHNvbWVob3cgaGFkIGEgZGlmZmVyZW50IHNpemUgdGhhbiA4IGJ5dGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy4gVGhpcyBjb3VsZCBoYXBwZW4gZHVlIHRvIGJpdGZpZWxkIHBhY2tpbmcgcnVsZXMsIHdoaWNoIGNvdWxkIHRoZW4gYWx0ZXIgdGhlIGBzaXplb2YoZ3B0X2VudHJ5KWAuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0JiMzOTtzIHRoZSBjYXNlLiBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGRlZmluaXRpb24gb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYDoKCmBgYGMKdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHsKCXU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxOwoJdTY0IHJlc2VydmVkOjQ3OwogICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7Cn0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7CmBgYAoKQWhhISBJdCYjMzk7cyBnb3QgYF9fcGFja2VkYC4gVGhhdCBzaG91bGQgZm9yY2UgaXQgdG8gYmUgZXhhY3RseSA4IGJ5dGVzLCByZWdhcmRsZXNzIG9mIHRoZSBhcmNoaXRlY3R1cmUuIFNvLCBpZiBpdCBpcyBpbmRlZWQgOCBieXRlcywgYW5kIG5ldmVyIGFjdHVhbGx5IGFjY2Vzc2VkLCB0aGVuIHRoaXMgd2hvbGUgdGhpbmcgaXMgZXNzZW50aWFsbHkgYSBjb3NtZXRpYyBjaGFuZ2Ugb3IgY2xlYW51cCBvcGVyYXRpb24uCgpOb3csIEkgcmVhbGx5IG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IHdvcmsuIExldCYjMzk7cyB0aG9yb3VnaGx5IHNlYXJjaCB0aGUga2VybmVsIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhpcyBgYXR0cmlidXRlc2AgZmllbGQgaXNuJiMzOTt0IGJlaW5nIGFjY2Vzc2VkIGFueXdoZXJlLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIGJlZm9yZSBJIGNvbWUgdG8gYSBjb25jbHVzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXC5hdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2MzcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHk9NTExPWRlZiB2aXNpdF9rZXJuZWxfcmVuZGVyKHNlbGYsIG5vZGUpOlxuLS1cbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHktNTM1LSAgICBjb2RlICAgICAgPSBsaXRlcmFsX2Jsb2NrLmFzdGV4dCgpXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5OjUzNjogICAgaGFzaG9iaiAgID0gY29kZS5lbmNvZGUoJiMzOTt1dGYtOCYjMzk7KSAjICBzdHIobm9kZS5hdHRyaWJ1dGVzKVxuRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weS01MzctICAgIGZuYW1lICAgICA9IHBhdGguam9pbigmIzM5OyVzLSVzJiMzOTsgJSAoc3JjbGFuZywgc2hhMShoYXNob2JqKS5oZXhkaWdlc3QoKSkpXG4tLVxuRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weS01NDYtXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5OjU0NzogICAgaW1nX25vZGUgPSBub2Rlcy5pbWFnZShub2RlLnJhd3NvdXJjZSwgKipub2RlLmF0dHJpYnV0ZXMpXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5LTU0OC0gICAgaW1nX25vZGVbJiMzOTt1cmkmIzM5O10gPSBwYXRoLmpvaW4oc2VsZi5idWlsZGVyLmltZ3BhdGgsIGZuYW1lICYjNDM7IHRtcF9leHQpXG4tLVxuRG9jdW1lbnRhdGlvbi9zcGhpbngvcnN0RmxhdFRhYmxlLnB5PTEzNj1jbGFzcyBMaXN0VGFibGVCdWlsZGVyKG9iamVjdCk6XG4tLVxuRG9jdW1lbnRhdGlvbi9zcGhpbngvcnN0RmxhdFRhYmxlLnB5LTE3MC0gICAgICAgICAgICBpZiBzdHViX2NvbHVtbnM6XG5Eb2N1bWVudGF0aW9uL3NwaGlueC9yc3RGbGF0VGFibGUucHk6MTcxOiAgICAgICAgICAgICAgICBjb2xzcGVjLmF0dHJpYnV0ZXNbJiMzOTtzdHViJiMzOTtdID0gMVxuRG9jdW1lbnRhdGlvbi9zcGhpbngvcnN0RmxhdFRhYmxlLnB5LTE3Mi0gICAgICAgICAgICAgICAgc3R1Yl9jb2x1bW5zIC09IDFcbi0tXG5hcmNoL2FybS9pbmNsdWRlL2FzbS92bWxpbnV4Lmxkcy5oLTg2LVx0XHRFTEZfREVUQUlMU1x0XHRcdFx0XHRcdFxcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS92bWxpbnV4Lmxkcy5oOjg3Olx0XHQuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgKiguQVJNLmF0dHJpYnV0ZXMpIH1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3ZtbGludXgubGRzLmgtODgtXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TPTIxPVNFQ1RJT05TXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TLTQwLVx0XHQqKC5ub3RlLkdOVS1zdGFjayAubm90ZS5nbnUucHJvcGVydHkpXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlM6NDE6XHRcdCooLkFSTS5hdHRyaWJ1dGVzKVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TLTQyLVx0fVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TPTIwPVNFQ1RJT05TXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzbzMyL3Zkc28ubGRzLlMtNjAtXHRFTEZfREVUQUlMU1xuYXJjaC9hcm02NC9rZXJuZWwvdmRzbzMyL3Zkc28ubGRzLlM6NjE6XHQuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgKiguQVJNLmF0dHJpYnV0ZXMpIH1cbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TLTYyLVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM9MTc0PVNFQ1RJT05TXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUy0xODUtXHRcdCooLmR5bnN5bSAuZHluc3RyIC5oYXNoIC5nbnUuaGFzaClcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM6MTg2Olx0XHQqKC5BUk0uYXR0cmlidXRlcylcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtMTg3LVx0fVxuLS1cbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUz0yNj1TRUNUSU9OU1xuLS1cbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUy02Ni1cdEVMRl9ERVRBSUxTXG5hcmNoL2hleGFnb24va2VybmVsL3ZtbGludXgubGRzLlM6Njc6XHQuaGV4YWdvbi5hdHRyaWJ1dGVzIDAgOiB7ICooLmhleGFnb24uYXR0cmlidXRlcykgfVxuYXJjaC9oZXhhZ29uL2tlcm5lbC92bWxpbnV4Lmxkcy5TLTY4LVxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92bWxpbnV4Lmxkcy5TPTQxPVNFQ1RJT05TXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3ZtbGludXgubGRzLlMtMTc4LVx0XHQqKC5keW5hbWljIC5keW5zeW0gLmR5bnN0ciAuaGFzaCAuZ251Lmhhc2gpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdm1saW51eC5sZHMuUzoxNzk6XHRcdCooLmdudS5hdHRyaWJ1dGVzKVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3ZtbGludXgubGRzLlMtMTgwLVx0XHQqKC5vcHRpb25zKVxuLS1cbmFyY2gvbG9vbmdhcmNoL3Zkc28vdmRzby5sZHMuUz0xMj1TRUNUSU9OU1xuLS1cbmFyY2gvbG9vbmdhcmNoL3Zkc28vdmRzby5sZHMuUy00My1cdC9ESVNDQVJEL1x0OiB7XG5hcmNoL2xvb25nYXJjaC92ZHNvL3Zkc28ubGRzLlM6NDQ6XHRcdCooLmdudS5hdHRyaWJ1dGVzKVxuYXJjaC9sb29uZ2FyY2gvdmRzby92ZHNvLmxkcy5TLTQ1LVx0XHQqKC5ub3RlLkdOVS1zdGFjaylcbi0tXG5hcmNoL21pcHMva2VybmVsL3ZtbGludXgubGRzLlM9NDM9U0VDVElPTlNcbi0tXG5hcmNoL21pcHMva2VybmVsL3ZtbGludXgubGRzLlMtMjM4LVx0XHQqKC5NSVBTLm9wdGlvbnMpXG5hcmNoL21pcHMva2VybmVsL3ZtbGludXgubGRzLlM6MjM5Olx0XHQqKC5nbnUuYXR0cmlidXRlcylcbmFyY2gvbWlwcy9rZXJuZWwvdm1saW51eC5sZHMuUy0yNDAtXHRcdCooLm9wdGlvbnMpXG4tLVxuYXJjaC9taXBzL3Zkc28vdmRzby5sZHMuUz0yMT1TRUNUSU9OU1xuLS1cbmFyY2gvbWlwcy92ZHNvL3Zkc28ubGRzLlMtNjUtXHRcdCooLk1JUFMuYWJpZmxhZ3MpXG5hcmNoL21pcHMvdmRzby92ZHNvLmxkcy5TOjY2Olx0XHQqKC5nbnUuYXR0cmlidXRlcylcbmFyY2gvbWlwcy92ZHNvL3Zkc28ubGRzLlMtNjctXHRcdCooLm5vdGUuR05VLXN0YWNrKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUz00OD1TRUNUSU9OU1xuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUy00MDctXHRcdCooLmdudS52ZXJzaW9uKilcbmFyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUzo0MDg6XHRcdCooLmdudS5hdHRyaWJ1dGVzKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC92bWxpbnV4Lmxkcy5TLTQwOS1cdFx0KiguZWhfZnJhbWUpXG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUz0yNj1TRUNUSU9OU1xuLS1cbmFyY2gvcmlzY3Yva2VybmVsL3ZtbGludXgubGRzLlMtMTcwLVx0RUxGX0RFVEFJTFNcbmFyY2gvcmlzY3Yva2VybmVsL3ZtbGludXgubGRzLlM6MTcxOlx0LnJpc2N2LmF0dHJpYnV0ZXMgMCA6IHsgKigucmlzY3YuYXR0cmlidXRlcykgfVxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUy0xNzItXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvL3Zkc28ubGRzLlM9MTY9U0VDVElPTlNcbi0tXG5hcmNoL3MzOTAva2VybmVsL3Zkc28vdmRzby5sZHMuUy02NS1cdC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH1cbmFyY2gvczM5MC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TOjY2Olx0LmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfVxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvL3Zkc28ubGRzLlMtNjctXG4tLVxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jPTEzND1zdGF0aWMgaW50IGh2X3Z0bF9icmluZ3VwX3ZjcHUodTMyIHRhcmdldF92cF9pbmRleCwgaW50IGNwdSwgdTY0IGVpcF9pZ25vcmVkKVxuLS1cbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMDEtXHRpbnB1dC1cdTAwM2V2cF9jb250ZXh0LmNzLmxpbWl0ID0gMHhmZmZmZmZmZjtcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYzoyMDI6XHRpbnB1dC1cdTAwM2V2cF9jb250ZXh0LmNzLmF0dHJpYnV0ZXMgPSAweGEwOWI7XG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmMtMjAzLVx0LyogTm9uLXN5c3RlbSBkZXNjICg2NGJpdCksIGRhdGEsIHByZXNlbnQsIGdyYW51bGFyaXR5LCBkZWZhdWx0ICovXG4tLVxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIwNi1cdGlucHV0LVx1MDAzZXZwX2NvbnRleHQuc3MubGltaXQgPSAweGZmZmZmZmZmO1xuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jOjIwNzpcdGlucHV0LVx1MDAzZXZwX2NvbnRleHQuc3MuYXR0cmlidXRlcyA9IDB4YzA5MztcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMDgtXG4tLVxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIxMi1cdGlucHV0LVx1MDAzZXZwX2NvbnRleHQubGR0ci5saW1pdCA9IGh2X3Z0bF9zeXN0ZW1fZGVzY19saW1pdChsZHQpO1xuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jOjIxMzpcdGlucHV0LVx1MDAzZXZwX2NvbnRleHQubGR0ci5hdHRyaWJ1dGVzID0gMHg4MjtcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMTQtXG4tLVxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIxOC1cdGlucHV0LVx1MDAzZXZwX2NvbnRleHQudHIubGltaXQgPSBodl92dGxfc3lzdGVtX2Rlc2NfbGltaXQodHNzKTtcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYzoyMTk6XHRpbnB1dC1cdTAwM2V2cF9jb250ZXh0LnRyLmF0dHJpYnV0ZXMgPSAweDhiO1xuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIyMC1cbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L3NneC9pb2N0bC5jPTQ2Nz1zdGF0aWMgaW50IHNneF9lbmNsX2luaXQoc3RydWN0IHNneF9lbmNsICplbmNsLCBzdHJ1Y3Qgc2d4X3NpZ3N0cnVjdCAqc2lnc3RydWN0LFxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvc2d4L2lvY3RsLmMtNDg2LVx0ICogb3B0IHRvIHNpZ24gd2l0aCBBVlggYml0IGluIHhmcm0sIGJ1dCBzdGlsbCBiZSBsb2FkYWJsZSBvbiBhIHBsYXRmb3JtXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L3NneC9pb2N0bC5jOjQ4NzpcdCAqIHdpdGhvdXQgaXQgaWYgdGhlIHNpZ3N0cnVjdC1cdTAwM2Vib2R5LmF0dHJpYnV0ZXNfbWFzayBkb2VzIG5vdCB0dXJuIHRoYXRcbmFyY2gveDg2L2tlcm5lbC9jcHUvc2d4L2lvY3RsLmMtNDg4LVx0ICogYml0IG9uLlxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYy00ODktXHQgKi9cbmFyY2gveDg2L2tlcm5lbC9jcHUvc2d4L2lvY3RsLmM6NDkwOlx0aWYgKHNpZ3N0cnVjdC1cdTAwM2Vib2R5LmF0dHJpYnV0ZXMgXHUwMDI2IHNpZ3N0cnVjdC1cdTAwM2Vib2R5LmF0dHJpYnV0ZXNfbWFzayBcdTAwMjZcbmFyY2gveDg2L2tlcm5lbC9jcHUvc2d4L2lvY3RsLmMtNDkxLVx0ICAgIHNneF9hdHRyaWJ1dGVzX3Jlc2VydmVkX21hc2spXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYz04MDIxPWJvb2wga3ZtX2FyY2hfcHJlX3NldF9tZW1vcnlfYXR0cmlidXRlcyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MDczLVx0LyogVW5tYXAgdGhlIG9sZCBhdHRyaWJ1dGUgcGFnZS4gKi9cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODA3NDpcdGlmIChyYW5nZS1cdTAwM2VhcmcuYXR0cmlidXRlcyBcdTAwMjYgS1ZNX01FTU9SWV9BVFRSSUJVVEVfUFJJVkFURSlcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtODA3NS1cdFx0cmFuZ2UtXHUwMDNlYXR0cl9maWx0ZXIgPSBLVk1fRklMVEVSX1NIQVJFRDtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTgxMDE9Ym9vbCBrdm1fYXJjaF9wb3N0X3NldF9tZW1vcnlfYXR0cmlidXRlcyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MTAzLXtcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODEwNDpcdHVuc2lnbmVkIGxvbmcgYXR0cnMgPSByYW5nZS1cdTAwM2VhcmcuYXR0cmlidXRlcztcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtODEwNS1cdHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QgPSByYW5nZS1cdTAwM2VzbG90O1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHBjLmM9MTAzPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2FjbnRwYyA9IHtcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRwYy5jLTEzMi1cdH0sXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRwYy5jOjEzMzpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hY250cGMuYy0xMzQtXHRcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmM9ODk9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYWNudHNhID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmMtMTE5LVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmM6MTIwOlx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRzYS5jLTEyMS1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hcG9sbG8uYz0xMDE9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYXBvbGxvID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYXBvbGxvLmMtMTMxLVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYXBvbGxvLmM6MTMyOlx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Fwb2xsby5jLTEzMy1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hdWRwdHIuYz05Mj1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9hdWRwdHIgPSB7XG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hdWRwdHIuYy0xMjItXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hdWRwdHIuYzoxMjM6XHQuYXR0cmlidXRlcyA9IHtcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYXVkcHRyLmMtMTI0LVx0XHQuYXR0cnMgPSBzeW50aF9hdHRycyxcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jPTg1PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2JucyA9IHtcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jLTExNS1cdH0sXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jOjExNjpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9ibnMuYy0xMTctXHRcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjZXh0LmM9MTE1PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2RlY2V4dCA9IHtcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY2V4dC5jLTE0Ni1cdH0sXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY2V4dC5jOjE0NzpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNleHQuYy0xNDgtXHRcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjcGMuYz0yMTM9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfZGVjX3BjID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjcGMuYy0yNDItXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNwYy5jOjI0MzpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNwYy5jLTI0NC1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWN0bGsuYz0xMjI9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfZGVjdGxrID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjdGxrLmMtMTU1LVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjdGxrLmM6MTU2Olx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3Rsay5jLTE1Ny1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmM9MTE5PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2R0bGsgPSB7XG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmMtMTQ4LVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZHRsay5jOjE0OTpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmMtMTUwLVx0XHQuYXR0cnMgPSBzeW50aF9hdHRycyxcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2R1bW15LmM9MTA1PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2R1bW15ID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZHVtbXkuYy0xMzUtXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdW1teS5jOjEzNjpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdW1teS5jLTEzNy1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9rZXlwYy5jPTk0PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2tleXBjID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfa2V5cGMuYy0xMjMtXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9rZXlwYy5jOjEyNDpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9rZXlwYy5jLTEyNS1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmM9MTAxPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2x0bGsgPSB7XG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmMtMTMxLVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfbHRsay5jOjEzMjpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmMtMTMzLVx0XHQuYXR0cnMgPSBzeW50aF9hdHRycyxcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYz0xMjg9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfc29mdCA9IHtcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYy0xNTYtXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9zb2Z0LmM6MTU3Olx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYy0xNTgtXHRcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmM9OTI9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfc3Brb3V0ID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmMtMTIyLVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmM6MTIzOlx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3Nwa291dC5jLTEyNC1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jPTkwPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX3R4cHJ0ID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfdHhwcnQuYy0xMjAtXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jOjEyMTpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jLTEyMi1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi94ODYtc3R1Yi5jPTM2Nz1lZmlfc3RhdHVzX3QgZWZpX2FkanVzdF9tZW1vcnlfcmFuZ2VfcHJvdGVjdGlvbih1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYy00MjMtXHRcdCAgICAgZGVzYy5nY2RfbWVtb3J5X3R5cGUgIT0gRWZpR2NkTWVtb3J5VHlwZU1vcmVSZWxpYWJsZSkgfHxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYzo0MjQ6XHRcdCAgICAoZGVzYy5hdHRyaWJ1dGVzIFx1MDAyNiAoRUZJX01FTU9SWV9STyB8IEVGSV9NRU1PUllfWFApKSA9PSAwKVxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi94ODYtc3R1Yi5jLTQyNS1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM9MTM5PXN0YXRpYyBsb25nIGVmaV9ydW50aW1lX2dldF92YXJpYWJsZSh1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtMTcxLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjE3MjpcdGF0ID0gZ2V0dmFyaWFibGUuYXR0cmlidXRlcyA/IFx1MDAyNmF0dHIgOiBOVUxMO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTE3My1cdGR6ID0gZ2V0dmFyaWFibGUuZGF0YV9zaXplID8gXHUwMDI2ZGF0YXNpemUgOiBOVUxMO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0yMTQtXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM6MjE1Olx0aWYgKGF0IFx1MDAyNlx1MDAyNiBwdXRfdXNlcihhdHRyLCBnZXR2YXJpYWJsZS5hdHRyaWJ1dGVzKSkge1xuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTIxNi1cdFx0cnYgPSAtRUZBVUxUO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYz0yMjk9c3RhdGljIGxvbmcgZWZpX3J1bnRpbWVfc2V0X3ZhcmlhYmxlKHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0yNTktXHRzdGF0dXMgPSBlZmkuc2V0X3ZhcmlhYmxlKG5hbWUsIFx1MDAyNnZlbmRvcl9ndWlkLFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjI2MDpcdFx0XHRcdHNldHZhcmlhYmxlLmF0dHJpYnV0ZXMsXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtMjYxLVx0XHRcdFx0c2V0dmFyaWFibGUuZGF0YV9zaXplLCBkYXRhKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM9NTYzPXN0YXRpYyBsb25nIGVmaV9ydW50aW1lX3F1ZXJ5X3ZhcmlhYmxlaW5mbyh1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtNTc1LVxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjU3NjpcdHN0YXR1cyA9IGVmaS5xdWVyeV92YXJpYWJsZV9pbmZvKHF1ZXJ5dmFyaWFibGVpbmZvLmF0dHJpYnV0ZXMsXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtNTc3LVx0XHRcdFx0XHQgXHUwMDI2bWF4X3N0b3JhZ2UsIFx1MDAyNnJlbWFpbmluZywgXHUwMDI2bWF4X3NpemUpO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZ29vZ2xlL2dzbWkuYz00MzI9c3RhdGljIGVmaV9zdGF0dXNfdCBnc21pX3NldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsXG4tLVxuZHJpdmVycy9maXJtd2FyZS9nb29nbGUvZ3NtaS5jLTQ0MS1cdFx0LmRhdGFfbGVuID0gKHUzMilkYXRhX3NpemUsXG5kcml2ZXJzL2Zpcm13YXJlL2dvb2dsZS9nc21pLmM6NDQyOlx0XHQuYXR0cmlidXRlcyA9IEVGSV9WQVJJQUJMRV9OT05fVk9MQVRJTEUgfFxuZHJpdmVycy9maXJtd2FyZS9nb29nbGUvZ3NtaS5jLTQ0My1cdFx0XHQgICAgICBFRklfVkFSSUFCTEVfQk9PVFNFUlZJQ0VfQUNDRVNTIHxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz03MzE9dm9pZCBod3NzX2J1aWxkX2Zhc3Rfc2VxdWVuY2Uoc3RydWN0IGRjICpkYyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy04ODAtXHRcdFx0XHRjdXJyZW50X3BpcGUtXHUwMDNlcGxhbmVfcmVzLmh1YnA7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzo4ODE6XHRcdFx0YmxvY2tfc2VxdWVuY2VbKm51bV9zdGVwc10ucGFyYW1zLmh1YnBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzID1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTg4Mi1cdFx0XHRcdFx1MDAyNmN1cnJlbnRfcGlwZS1cdTAwM2VzdHJlYW0tXHUwMDNlY3Vyc29yX2F0dHJpYnV0ZXM7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtODg3LVx0XHRcdFx0Y3VycmVudF9waXBlLVx1MDAzZXBsYW5lX3Jlcy5kcHA7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzo4ODg6XHRcdFx0YmxvY2tfc2VxdWVuY2VbKm51bV9zdGVwc10ucGFyYW1zLmRwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXMgPVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtODg5LVx0XHRcdFx0XHUwMDI2Y3VycmVudF9waXBlLVx1MDAzZXN0cmVhbS1cdTAwM2VjdXJzb3JfYXR0cmlidXRlcztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz0zNTY4PXZvaWQgaHdzc19odWJwX3NldF9jdXJzb3JfYXR0cmlidXRlcyh1bmlvbiBibG9ja19zZXF1ZW5jZV9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy0zNTcwLVx0c3RydWN0IGh1YnAgKmh1YnAgPSBwYXJhbXMtXHUwMDNlaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmh1YnA7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzozNTcxOlx0Y29uc3Qgc3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzICphdHRyaWJ1dGVzID0gcGFyYW1zLVx1MDAzZWh1YnBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtMzU3Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz0zNTc3PXZvaWQgaHdzc19kcHBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzKHVuaW9uIGJsb2NrX3NlcXVlbmNlX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTM1NzktXHRzdHJ1Y3QgZHBwICpkcHAgPSBwYXJhbXMtXHUwMDNlZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuZHBwO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM6MzU4MDpcdHN0cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyAqYXR0cmlidXRlcyA9IHBhcmFtcy1cdTAwM2VkcHBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtMzU4MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz00NjkyPXZvaWQgaHdzc19hZGRfaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXMoc3RydWN0IGJsb2NrX3NlcXVlbmNlX3N0YXRlICpzZXFfc3RhdGUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtNDY5OC1cdFx0c2VxX3N0YXRlLVx1MDAzZXN0ZXBzWypzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmh1YnAgPSBodWJwO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM6NDY5OTpcdFx0c2VxX3N0YXRlLVx1MDAzZXN0ZXBzWypzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtNDcwMC1cdFx0KCpzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzKSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM9NDcwND12b2lkIGh3c3NfYWRkX2RwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXMoc3RydWN0IGJsb2NrX3NlcXVlbmNlX3N0YXRlICpzZXFfc3RhdGUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtNDcxMC1cdFx0c2VxX3N0YXRlLVx1MDAzZXN0ZXBzWypzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuZHBwID0gZHBwO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM6NDcxMTpcdFx0c2VxX3N0YXRlLVx1MDAzZXN0ZXBzWypzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy00NzEyLVx0XHQoKnNlcV9zdGF0ZS1cdTAwM2VudW1fc3RlcHMpJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvYWN4LmM9ODI4PWludCB3bDEyNTFfYWN4X21lbV9jZmcoc3RydWN0IHdsMTI1MSAqd2wpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2wxMjUxL2FjeC5jLTg1Ny1cdFx0bWVtX2NvbmYtXHUwMDNldHhfcXVldWVfY29uZmlnW2ldLm51bV9kZXNjcyA9IEFDWF9UWF9ERVNDX0RFRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9hY3guYzo4NTg6XHRcdG1lbV9jb25mLVx1MDAzZXR4X3F1ZXVlX2NvbmZpZ1tpXS5hdHRyaWJ1dGVzID0gaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9hY3guYy04NTktXHR9XG4tLVxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jPTg0MD1zdGF0aWMgYmxrX3N0YXR1c190IG52bWVfc2V0dXBfZGlzY2FyZChzdHJ1Y3QgbnZtZV9ucyAqbnMsIHN0cnVjdCByZXF1ZXN0ICpyZXEsXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTkwMS1cdGNtbmQtXHUwMDNlZHNtLm5yID0gY3B1X3RvX2xlMzIoc2VnbWVudHMgLSAxKTtcbmRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYzo5MDI6XHRjbW5kLVx1MDAzZWRzbS5hdHRyaWJ1dGVzID0gY3B1X3RvX2xlMzIoTlZNRV9EU01HTVRfQUQpO1xuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTkwMy1cbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1iZGV2LmM9NDEwPXN0YXRpYyB2b2lkIG52bWV0X2JkZXZfZXhlY3V0ZV9kc20oc3RydWN0IG52bWV0X3JlcSAqcmVxKVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWJkZXYuYy00MTQtXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1iZGV2LmM6NDE1Olx0c3dpdGNoIChsZTMyX3RvX2NwdShyZXEtXHUwMDNlY21kLVx1MDAzZWRzbS5hdHRyaWJ1dGVzKSkge1xuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtYmRldi5jLTQxNi1cdGNhc2UgTlZNRV9EU01HTVRfQUQ6XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtZmlsZS5jPTMwNz1zdGF0aWMgdm9pZCBudm1ldF9maWxlX2RzbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1maWxlLmMtMzEwLVxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtZmlsZS5jOjMxMTpcdHN3aXRjaCAobGUzMl90b19jcHUocmVxLVx1MDAzZWNtZC1cdTAwM2Vkc20uYXR0cmlidXRlcykpIHtcbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWZpbGUuYy0zMTItXHRjYXNlIE5WTUVfRFNNR01UX0FEOlxuLS1cbmRyaXZlcnMvczM5MC9jaGFyL2NvbjMyNzAuYz0xMzI5PXN0YXRpYyB2b2lkIHR0eTMyNzBfaW5zZXJ0X2NoYXJhY3RlcnMoc3RydWN0IHR0eTMyNzAgKnRwLCBpbnQgbilcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9jb24zMjcwLmMtMTM0Ni1cdFx0bGluZS1cdTAwM2VjZWxsc1t0cC1cdTAwM2VjeCAmIzQzOyBuXS5jaGFyYWN0ZXIgPSAmIzM5OyAmIzM5OztcbmRyaXZlcnMvczM5MC9jaGFyL2NvbjMyNzAuYzoxMzQ3Olx0XHRsaW5lLVx1MDAzZWNlbGxzW3RwLVx1MDAzZWN4ICYjNDM7IG5dLmF0dHJpYnV0ZXMgPSB0cC1cdTAwM2VhdHRyaWJ1dGVzO1xuZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3MC5jLTEzNDgtXHR9XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9wa2V5X2FwaS5jPTI3Nj1zdGF0aWMgaW50IHBrZXlfaW9jdGxfdmVyaWZ5a2V5KHN0cnVjdCBwa2V5X3ZlcmlmeWtleSBfX3VzZXIgKnV2aylcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmMtMjkzLVx0XHRyYyA9IC1FSU5WQUw7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmM6Mjk0Olx0a3ZrLmF0dHJpYnV0ZXMgPSBQS0VZX1ZFUklGWV9BVFRSX0FFUztcbmRyaXZlcnMvczM5MC9jcnlwdG8vcGtleV9hcGkuYy0yOTUtXHRrdmsua2V5c2l6ZSA9ICh1MTYpa2V5Yml0c2l6ZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vcGtleV9hcGkuYy0yOTYtXHRpZiAoZmxhZ3MgXHUwMDI2IFBLRVlfRkxBR1NfTUFUQ0hfQUxUX01LVlApXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmM6Mjk3Olx0XHRrdmsuYXR0cmlidXRlcyB8PSBQS0VZX1ZFUklGWV9BVFRSX09MRF9NS1ZQO1xuZHJpdmVycy9zMzkwL2NyeXB0by9wa2V5X2FwaS5jLTI5OC1cdGlmICghcmMgXHUwMDI2XHUwMDI2IGNvcHlfdG9fdXNlcih1dmssIFx1MDAyNmt2aywgc2l6ZW9mKGt2aykpKVxuLS1cbmRyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvcHN5LmM9MzU9c3RhdGljIGludCB1Y3NpX3BzeV9nZXRfc2NvcGUoc3RydWN0IHVjc2lfY29ubmVjdG9yICpjb24sXG4tLVxuZHJpdmVycy91c2IvdHlwZWMvdWNzaS9wc3kuYy00NS1cbmRyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvcHN5LmM6NDY6XHRcdGlmIChjb24tXHUwMDNldWNzaS1cdTAwM2VjYXAuYXR0cmlidXRlcyBcdTAwMjYgbWFzaylcbmRyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvcHN5LmMtNDctXHRcdFx0c2NvcGUgPSBQT1dFUl9TVVBQTFlfU0NPUEVfU1lTVEVNO1xuLS1cbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jPTQzMT1zdGF0aWMgdm9pZCBzdGlfZHVtcF9vdXRwdHIoc3RydWN0IHN0aV9zdHJ1Y3QgKnN0aSlcbi0tXG5kcml2ZXJzL3ZpZGVvL3N0aWNvcmUuYy00MzktXHRcdCBzdGktXHUwMDNlc3RpX2RhdGEtXHUwMDNlaW5xX291dHB0ci5wbGFuZXMsXG5kcml2ZXJzL3ZpZGVvL3N0aWNvcmUuYzo0NDA6XHRcdCBzdGktXHUwMDNlc3RpX2RhdGEtXHUwMDNlaW5xX291dHB0ci5hdHRyaWJ1dGVzKTtcbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jLTQ0MS19XG4tLVxuZnMvb3JhbmdlZnMvbmFtZWkuYz0xOD1zdGF0aWMgaW50IG9yYW5nZWZzX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbi0tXG5mcy9vcmFuZ2Vmcy9uYW1laS5jLTQwLVxuZnMvb3JhbmdlZnMvbmFtZWkuYzo0MTpcdGZpbGxfZGVmYXVsdF9zeXNfYXR0cnMobmV3X29wLVx1MDAzZXVwY2FsbC5yZXEuY3JlYXRlLmF0dHJpYnV0ZXMsIG1vZGUpO1xuZnMvb3JhbmdlZnMvbmFtZWkuYy00Mi1cbi0tXG5mcy9vcmFuZ2Vmcy9uYW1laS5jPTIxNT1zdGF0aWMgaW50IG9yYW5nZWZzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsXG4tLVxuZnMvb3JhbmdlZnMvbmFtZWkuYy0yNDEtXG5mcy9vcmFuZ2Vmcy9uYW1laS5jOjI0MjpcdGZpbGxfZGVmYXVsdF9zeXNfYXR0cnMobmV3X29wLVx1MDAzZXVwY2FsbC5yZXEuc3ltLmF0dHJpYnV0ZXMsIG1vZGUpO1xuZnMvb3JhbmdlZnMvbmFtZWkuYy0yNDMtXG4tLVxuZnMvb3JhbmdlZnMvbmFtZWkuYz0zMDA9c3RhdGljIHN0cnVjdCBkZW50cnkgKm9yYW5nZWZzX21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbi0tXG5mcy9vcmFuZ2Vmcy9uYW1laS5jLTMxNS1cbmZzL29yYW5nZWZzL25hbWVpLmM6MzE2Olx0ZmlsbF9kZWZhdWx0X3N5c19hdHRycyhuZXdfb3AtXHUwMDNldXBjYWxsLnJlcS5ta2Rpci5hdHRyaWJ1dGVzLCBtb2RlKTtcbmZzL29yYW5nZWZzL25hbWVpLmMtMzE3LVxuLS1cbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM9MjM2PWludCBvcmFuZ2Vmc19pbm9kZV9nZXRhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBmbGFncylcbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMwMS1cdFx0cmV0ID0gb3JhbmdlZnNfaW5vZGVfaXNfc3RhbGUoaW5vZGUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjMwMjpcdFx0ICAgIFx1MDAyNm5ld19vcC1cdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcyxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzAzLVx0XHQgICAgbmV3X29wLVx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5saW5rX3RhcmdldCk7XG4tLVxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zMTAtXHR0eXBlID0gb3JhbmdlZnNfaW5vZGVfdHlwZShuZXdfb3AtXHUwMDNlXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjMxMTpcdCAgICBkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5vYmp0eXBlKTtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzEyLVx0c3dpdGNoICh0eXBlKSB7XG4tLVxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zMTQtXHRcdGlub2RlLVx1MDAzZWlfZmxhZ3MgPSBvcmFuZ2Vmc19pbm9kZV9mbGFncyhcdTAwMjZuZXdfb3AtXHUwMDNlXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjMxNTpcdFx0ICAgIGRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzKTtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzE2LVx0XHRpZiAoZmxhZ3MpIHtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzE3LVx0XHRcdGlub2RlX3NpemUgPSAobG9mZl90KW5ld19vcC1cdTAwM2VcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzE4Olx0XHRcdCAgICBkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5zaXplO1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zMTktXHRcdFx0aW5vZGUtXHUwMDNlaV9zaXplID0gaW5vZGVfc2l6ZTtcbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM1Ni1cdGlub2RlLVx1MDAzZWlfdWlkID0gbWFrZV9rdWlkKFx1MDAyNmluaXRfdXNlcl9ucywgbmV3X29wLVx1MDAzZVxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozNTc6XHQgICAgZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMub3duZXIpO1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNTgtXHRpbm9kZS1cdTAwM2VpX2dpZCA9IG1ha2Vfa2dpZChcdTAwMjZpbml0X3VzZXJfbnMsIG5ld19vcC1cdTAwM2VcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzU5Olx0ICAgIGRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLmdyb3VwKTtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzYwLVx0aW5vZGVfc2V0X2F0aW1lKGlub2RlLFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozNjE6XHRcdFx0KHRpbWU2NF90KW5ld19vcC1cdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5hdGltZSxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzYyLVx0XHRcdDApO1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNjMtXHRpbm9kZV9zZXRfbXRpbWUoaW5vZGUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjM2NDpcdFx0XHQodGltZTY0X3QpbmV3X29wLVx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLm10aW1lLFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNjUtXHRcdFx0MCk7XG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM2Ni1cdGlub2RlX3NldF9jdGltZShpbm9kZSxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzY3Olx0XHRcdCh0aW1lNjRfdCluZXdfb3AtXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMuY3RpbWUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM2OC1cdFx0XHQwKTtcbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM3MS1cdGlub2RlLVx1MDAzZWlfbW9kZSA9IHR5cGUgfCAoaXNfcm9vdF9oYW5kbGUoaW5vZGUpID8gU19JU1ZUWCA6IDApIHxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzcyOlx0ICAgIG9yYW5nZWZzX2lub2RlX3Blcm1zKFx1MDAyNm5ld19vcC1cdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcyk7XG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM3My1cbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jPTM4ND1pbnQgb3JhbmdlZnNfaW5vZGVfY2hlY2tfY2hhbmdlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtNDA1LVx0cmV0ID0gb3JhbmdlZnNfaW5vZGVfaXNfc3RhbGUoaW5vZGUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjQwNjpcdCAgICBcdTAwMjZuZXdfb3AtXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTQwNy1cdCAgICBuZXdfb3AtXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmxpbmtfdGFyZ2V0KTtcbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jPTQxNz1pbnQgb3JhbmdlZnNfaW5vZGVfc2V0YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtNDMxLVx0Y29weV9hdHRyaWJ1dGVzX2Zyb21faW5vZGUoaW5vZGUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjQzMjpcdCAgICBcdTAwMjZuZXdfb3AtXHUwMDNldXBjYWxsLnJlcS5zZXRhdHRyLmF0dHJpYnV0ZXMpO1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy00MzMtXHRvcmFuZ2Vmc19pbm9kZS1cdTAwM2VhdHRyX3ZhbGlkID0gMDtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6NDM0Olx0aWYgKCFuZXdfb3AtXHUwMDNldXBjYWxsLnJlcS5zZXRhdHRyLmF0dHJpYnV0ZXMubWFzaykge1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy00MzUtXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tLVxuaW5jbHVkZS9saW51eC9jYWNoZWluZm8uaD0xMjI9c3RhdGljIGlubGluZSBzdHJ1Y3QgY2FjaGVpbmZvICpnZXRfY3B1X2NhY2hlaW5mb19sZXZlbChpbnQgY3B1LCBpbnQgbGV2ZWwpXG4tLVxuaW5jbHVkZS9saW51eC9jYWNoZWluZm8uaC0xMzAtXHRcdGlmIChjaS1cdTAwM2VpbmZvX2xpc3RbaV0ubGV2ZWwgPT0gbGV2ZWwpIHtcbmluY2x1ZGUvbGludXgvY2FjaGVpbmZvLmg6MTMxOlx0XHRcdGlmIChjaS1cdTAwM2VpbmZvX2xpc3RbaV0uYXR0cmlidXRlcyBcdTAwMjYgQ0FDSEVfSUQpXG5pbmNsdWRlL2xpbnV4L2NhY2hlaW5mby5oLTEzMi1cdFx0XHRcdHJldHVybiBcdTAwMjZjaS1cdTAwM2VpbmZvX2xpc3RbaV07XG4tLVxuc291bmQvcGNpL2FzaWhwaS9ocGlmdW5jLmM9Mjg0PXUxNiBocGlfZm9ybWF0X2NyZWF0ZShzdHJ1Y3QgaHBpX2Zvcm1hdCAqcF9mb3JtYXQsIHUxNiBjaGFubmVscywgdTE2IGZvcm1hdCxcbi0tXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYy0zNjgtXHRcdH1cbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jOjM2OTpcdFx0Zm10LmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuc291bmQvcGNpL2FzaWhwaS9ocGlmdW5jLmMtMzcwLVx0XHRicmVhaztcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTM3MS1cdGRlZmF1bHQ6XG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYzozNzI6XHRcdGZtdC5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTM3My1cdH1cbi0tXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYz0xMDI2PXUxNiBocGlfaW5zdHJlYW1fYW5jaWxsYXJ5X3Jlc2V0KHUzMiBoX2luc3RyZWFtLCB1MTYgYnl0ZXNfcGVyX2ZyYW1lLFxuLS1cbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTEwMzQtXHRcdHJldHVybiBIUElfRVJST1JfSU5WQUxJRF9IQU5ETEU7XG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYzoxMDM1Olx0aG0udS5kLnUuZGF0YS5mb3JtYXQuYXR0cmlidXRlcyA9IGJ5dGVzX3Blcl9mcmFtZTtcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTEwMzYtXHRobS51LmQudS5kYXRhLmZvcm1hdC5mb3JtYXQgPSAobW9kZSBcdTAwM2NcdTAwM2MgOCkgfCAoYWxpZ25tZW50IFx1MDAyNiAweGZmKTtcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04MTU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBza2xfZGVzYyA9IHtcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04MTktXHQuY29yZV9pbml0X21hc2sgPSAxLFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM6ODIwOlx0LmF0dHJpYnV0ZXMgPSBBVlNfUExBVEFUVFJfQ0xETUEsXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04MjEtXHQuc3JhbSA9IFx1MDAyNnNrbF9zcmFtX3NwZWMsXG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM9ODI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXZzX3NwZWMgYXBsX2Rlc2MgPSB7XG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODI5LVx0LmNvcmVfaW5pdF9tYXNrID0gMyxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjgzMDpcdC5hdHRyaWJ1dGVzID0gQVZTX1BMQVRBVFRSX0lNUixcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTgzMS1cdC5zcmFtID0gXHUwMDI2YXBsX3NyYW1fc3BlYyxcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBjbmxfZGVzYyA9IHtcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04MzktXHQuY29yZV9pbml0X21hc2sgPSAxLFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM6ODQwOlx0LmF0dHJpYnV0ZXMgPSBBVlNfUExBVEFUVFJfSU1SLFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODQxLVx0LnNyYW0gPSBcdTAwMjZhcGxfc3JhbV9zcGVjLFxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jPTg0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGF2c19zcGVjIGljbF9kZXNjID0ge1xuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg0OS1cdC5jb3JlX2luaXRfbWFzayA9IDEsXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYzo4NTA6XHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04NTEtXHQuc3JhbSA9IFx1MDAyNmFwbF9zcmFtX3NwZWMsXG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM9ODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXZzX3NwZWMganNsX2Rlc2MgPSB7XG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODU5LVx0LmNvcmVfaW5pdF9tYXNrID0gMSxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg2MDpcdC5hdHRyaWJ1dGVzID0gQVZTX1BMQVRBVFRSX0lNUixcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg2MS1cdC5zcmFtID0gXHUwMDI2YXBsX3NyYW1fc3BlYyxcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBzbmFtZSMjX2Rlc2MgPSB7XHRcXFxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg3MC1cdC5jb3JlX2luaXRfbWFzayA9IDEsXHRcdFx0XFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg3MTpcdC5hdHRyaWJ1dGVzID0gQVZTX1BMQVRBVFRSX0lNUixcdFx0XFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg3Mi1cdC5zcmFtID0gXHUwMDI2YXBsX3NyYW1fc3BlYyxcdFx0XHRcXFxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jPTg4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGF2c19zcGVjIGZjbF9kZXNjID0ge1xuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg4Ni1cdC5jb3JlX2luaXRfbWFzayA9IDEsXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYzo4ODc6XHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIgfCBBVlNfUExBVEFUVFJfQUNFIHwgQVZTX1BMQVRBVFRSX0FMVEhEQSxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg4OC1cdC5zcmFtID0gXHUwMDI2bXRsX3NyYW1fc3BlYyxcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmM9Njc9aW50IGF2c19pcGNfY3JlYXRlX3BpcGVsaW5lKHN0cnVjdCBhdnNfZGV2ICphZGV2LCB1MTYgcmVxX3NpemUsIHU4IHByaW9yaXR5LFxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy03Ni1cdG1zZy5leHQuY3JlYXRlX3BwbC5scCA9IGxwO1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jOjc3Olx0bXNnLmV4dC5jcmVhdGVfcHBsLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jLTc4LVx0cmVxdWVzdC5oZWFkZXIgPSBtc2cudmFsO1xuLS1cbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC0xMzctXHRcdFx0LmVwX2F0dHIgPSBVU0JfRU5EUE9JTlRfWEZFUl9JU09DLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjEzODpcdFx0XHQuYXR0cmlidXRlcyA9IDAsXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTM5LVx0XHRcdC5yYXRlcyA9IFNORFJWX1BDTV9SQVRFX0NPTlRJTlVPVVMsXG4tLVxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oPTQ0MT1ZQU1BSEFfREVWSUNFKDB4NzAxMCwgXCYjMzQ7VUI5OVwmIzM0OyksXG4tLVxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ3MS1cdFx0XHRcdFx0LmFsdHNldF9pZHggPSAxLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjQ3MjpcdFx0XHRcdFx0LmF0dHJpYnV0ZXMgPSAwLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ3My1cdFx0XHRcdFx0LmVuZHBvaW50ID0gMHgwMSxcbi0tXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtNDg2LVx0XHRcdFx0XHQuYWx0c2V0X2lkeCA9IDEsXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg6NDg3Olx0XHRcdFx0XHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX0ZJTExfTUFYLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ4OC1cdFx0XHRcdFx0LmVuZHBvaW50ID0gMHg4MSxcbi0tXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtNzk2LVx0XHRcdFx0XHQuYWx0c2V0X2lkeCA9IDEsXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg6Nzk3Olx0XHRcdFx0XHQuYXR0cmlidXRlcyA9IDAsXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtNzk4LVx0XHRcdFx0XHQuZW5kcG9pbnQgPSAweDAxLFxuLS1cbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC04MTEtXHRcdFx0XHRcdC5hbHRzZXRfaWR4ID0gMSxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDo4MTI6XHRcdFx0XHRcdC5hdHRyaWJ1dGVzID0gMCxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC04MTMtXHRcdFx0XHRcdC5lbmRwb2ludCA9IDB4ODIsXG4tLVxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTE1OTktXHRcdFx0XHRcdC5hbHRzZXRfaWR4ID0gMSxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDoxNjAwOlx0XHRcdFx0XHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX1NBTVBMRV9SQVRFLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTE2MDEtXHRcdFx0XHRcdC5lbmRwb2ludCA9IDB4MDEsXG4tLVxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTE2MjMtXHRcdFx0XHRcdC5hbHRzZXRfaWR4ID0gMSxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDoxNjI0Olx0XHRcdFx0XHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX1NBTVBMRV9SQVRFLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTE2MjUtXHRcdFx0XHRcdC5lbmRwb2ludCA9IDB4ODEsXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTMzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVbnVzZWQgQ29kZSBhbmQgQXR0cmlidXRlIEFjY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBzcG90dGVkIHNvbWV0aGluZyBpbW1lZGlhdGVseTogaXQgbG9va3MgbGlrZSBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIGlzbiYjMzk7dCBhY3R1YWxseSBiZWluZyB1dGlsaXplZCBhbnl3aGVyZSBpbiB0aGUgY29kZWJhc2UuIFRoYXQmIzM5O3MgYWx3YXlzIGEgcmVkIGZsYWcg4oCTIHVudXNlZCBjb2RlIGlzIG9mdGVuIGEgc3ltcHRvbSBvZiBzb21ldGhpbmcsIGFuZCBpdCYjMzk7cyB3b3J0aCB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMuCgpOb3csIG15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCB0aGUgYGF0dHJpYnV0ZXNgIGZpZWxkICp3aXRoaW4qIGBncHRfZW50cnlgIGl0c2VsZj8gSXQmIzM5O3MgcG9zc2libGUgd2UgaGF2ZSBhIHJlbGF0ZWQgaXNzdWUsIG9yIHBlcmhhcHMgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgaW50ZW5kZWQgYXMgYSBzdGFuZGFsb25lIHN0cnVjdHVyZSwgYW5kIHRoZSBsb2dpYyB3YXMgcmV3b3JrZWQuIFNvLCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgYGdwdF9lbnRyeWAgaXMgYWN0dWFsbHkgKnVzZWQqLgoKTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2Agc2luY2UgdGhhdCYjMzk7cyB3aGVyZSBHUFQgcGFydGl0aW9uaW5nIGlzIHR5cGljYWxseSBoYW5kbGVkLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYGdwdF9lbnRyeWAgaXMgdXNlZCB0aGVyZSwgYW5kLCBjcnVjaWFsbHksIGlmIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgYmVpbmcgYWNjZXNzZWQuIEtub3dpbmcgdGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGV0aGVyIHRoaXMgdW51c2VkIHZhcmlhYmxlIGlzIGFuIG9ycGhhbiwgYSBsZWdhY3kgcGllY2UsIG9yIGlmIGl0IGhhcyBzb21lIHN1YnRsZSBjb25uZWN0aW9uIHRvIHRoZSBtYWluIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0ZS1cdTAwM2VhdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9lZmkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIE1lbW9yeSBBdHRyaWJ1dGVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byB6ZXJvIGluIG9uIHRoZSBtZW1vcnkgYXR0cmlidXRlIHN0cnVjdHVyZXMuIEkmIzM5O2Qgc3RhcnQgYnkgaW5zcGVjdGluZyBzb21ldGhpbmcgbGlrZSBgcHRlXFsuKlxdXC5hdHRyaWJ1dGVzYOKAlG9yIHBlcmhhcHMgYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uIHVzZWQgaW4gdGhlIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBvciBrZXJuZWwgSSYjMzk7bSB3b3JraW5nIHdpdGguIFRoZSBgLipgIGFjdHMgYXMgYSB3aWxkY2FyZDsgSSBuZWVkIHRvIGJlIGZsZXhpYmxlIGFuZCBhY2NvdW50IGZvciBwb3RlbnRpYWwgdmFyaWF0aW9ucyBpbiB0aGUgZXhhY3QgZmllbGQgbmFtZS4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgaG93IHRoZXNlIG1lbW9yeSBhdHRyaWJ1dGVzIGFyZSBzZXQgYW5kIHdoYXQgdGhlaXIgY3VycmVudCB2YWx1ZXMgYXJlLCBiZWNhdXNlIHRob3NlIGF0dHJpYnV0ZXMgYXJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3IuIEl0IHNlZW1zIGxpa2UgaXQgd2lsbCBiZSBzb21lIGtpbmQgb2YgUFRFIChQYWdlIFRhYmxlIEVudHJ5KSBhdHRyaWJ1dGUgdGhhdCBpcyBjYXVzaW5nIHRoZSBwcm9ibGVtLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHZhbHVlcyBpdCBzaG91bGQgYmUgc2V0IHRvIHRvIHNvbHZlIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwdGVzXFxbLipcXF1cXC5hdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9lZmkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTE2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gdGhlIGZpZWxkIGFuZCBwcm9jZXNzaW5nIHRoaXMgaW5mb3JtYXRpb246CgoqKkFuYWx5emluZyBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgVXNhZ2Ugb2YgYGF0dHJpYnV0ZXNgKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoZSBjb2RlIGluIHRoaXMgZmlsZSBpbnRlcmFjdHMgd2l0aCB0aGUgYGF0dHJpYnV0ZXNgIHZhcmlhYmxlLiBJcyBpdCBldmVuIHJlZmVyZW5jZWQ/IERvZXMgdGhlIGNvZGUgcmVseSBvbiByZWFkaW5nIG9yIG1vZGlmeWluZyB0aGVzZSBhdHRyaWJ1dGVzPyBLbm93aW5nIHRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIHdoZXRoZXIgaXQmIzM5O3MgZXNzZW50aWFsIGZvciB0aGUgbG9naWMuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHVzYWdlIHdpdGhpbiB0aGlzIHNwZWNpZmljIHBhcnRpdGlvbmluZyBjb250ZXh0IHRvIGFzc2VzcyBwb3RlbnRpYWwgaW1wYWN0cyBvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IHRoZSBzY29wZSBhbmQgaG93IGl0IGlzIHVzZWQgdG8gYXNzZXNzIGlmIHRoaXMgYSBwb3RlbnRpYWwgc2VjdXJpdHkgZmxhdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9lZmkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzM2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgRUZJIFBhcnRpdGlvbiBBdHRyaWJ1dGUgVXNhZ2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSYjMzk7cyBwb2ludGluZyBtZSBhdCBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgY29tbWVudCBtZW50aW9uaW5nICYjMzQ7YXR0cmlidXRlcy4mIzM0OyBJdCYjMzk7cyBzdWdnZXN0aW5nIGBhdHRyaWJ1dGVzYCAqYXJlbiYjMzk7dCogYmVpbmcgZGlyZWN0bHkgdXNlZCBpbiB0aGlzIHNwZWNpZmljIGZpbGUsIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKTm93LCB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnIGluIG15IG1pbmQuIElmIGBhdHRyaWJ1dGVzYCBhcmVuJiMzOTt0IGFjY2Vzc2VkICpoZXJlKiwgdGhhdCBkb2VzbiYjMzk7dCBtZWFuIHRoZXkgYXJlbiYjMzk7dCBjcnVjaWFsLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhleSBhcmUgdXNlZCBlbHNld2hlcmUsIGJlY2F1c2Ugd2h5IGVsc2Ugd291bGQgdGhleSBiZSBtZW50aW9uZWQgaGVyZT8gSSBzaG91bGQgbWFrZSBhIG5vdGUgdG8gY2hlY2sgaG93IHRoZSBhdHRyaWJ1dGVzIGFyZSB1c2VkLCBhbmQgd2hldGhlciB0aGVpciBiZWluZyBvbWl0dGVkIGhlcmUgaXMgYSBzaWduLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBmaWxlcyBvciBmdW5jdGlvbnMgdGhhdCByZWx5IG9uIHRoaXMgZGF0YS4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGViYXNlIHdvdWxkIGJlIG15IG5leHQgbG9naWNhbCBzdGVwLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSBwcmVmZXJyZWQgc2VhcmNoIHRvb2xzIGFuZCBtYXliZSBzb21lIGdyZXBwaW5nIHRvIHNlZSB0aGUgb3RoZXIgZmlsZXMgd2hlcmUgdGhlIGBhdHRyaWJ1dGVzYCB2YXJpYWJsZSBvciBzdHJ1Y3QgbWlnaHQgYmUgcmVmZXJlbmNlZC4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgZGV0YWlsLCBhbmQgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSWYgaXQmIzM5O3Mgbm90IGJlaW5nIHVzZWQsIHRoZW4gdGhhdCYjMzk7cyBhIGRpZmZlcmVudCBwcm9ibGVtIGFsdG9nZXRoZXIhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dwdF9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jPTIzND1zdGF0aWMgc2l6ZV90IHJlYWRfbGJhKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNjktICovXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjI3MDpzdGF0aWMgZ3B0X2VudHJ5ICphbGxvY19yZWFkX2dwdF9lbnRyaWVzKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cdFx0XHRcdFx0IGdwdF9oZWFkZXIgKmdwdClcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3My1cdHNpemVfdCBjb3VudDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0Olx0Z3B0X2VudHJ5ICpwdGU7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3NS1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTMzND1zdGF0aWMgaW50IGlzX2dwdF92YWxpZChzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCB1NjQgbGJhLFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzozMzU6XHRcdFx0Z3B0X2hlYWRlciAqKmdwdCwgZ3B0X2VudHJ5ICoqcHRlcylcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQxNC1cdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6NDE1Olx0aWYgKGxlMzJfdG9fY3B1KCgqZ3B0KS1cdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy00MTYtXHRcdHByX2RlYnVnKFwmIzM0O0dVSUQgUGFydGl0aW9uIEVudHJ5IFNpemUgY2hlY2sgZmFpbGVkLlxcblwmIzM0Oyk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6NDYwOmlzX3B0ZV92YWxpZChjb25zdCBncHRfZW50cnkgKnB0ZSwgY29uc3QgdTY0IGxhc3RsYmEpXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQ2MS17XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz01ODA9c3RhdGljIGludCBmaW5kX3ZhbGlkX2dwdChzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCBncHRfaGVhZGVyICoqZ3B0LFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo1ODE6XHRcdFx0ICBncHRfZW50cnkgKipwdGVzKVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNTg0LVx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6NTg1Olx0Z3B0X2VudHJ5ICpwcHRlcyA9IE5VTEwsICphcHRlcyA9IE5VTEw7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cdGxlZ2FjeV9tYnIgKmxlZ2FjeW1icjtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE0LVx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6NzE1Olx0Z3B0X2VudHJ5ICpwdGVzID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVx0dTMyIGk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaD01NT10eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC03Ny1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6Nzg6dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc5LVx0ZWZpX2d1aWRfdCBwYXJ0aXRpb25fdHlwZV9ndWlkO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODQtXHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4NTp9IF9fcGFja2VkIGdwdF9lbnRyeTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDQzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgSW1wYWN0cyBvZiBhIEdQVCBFbnRyeSBTdHJ1Y3R1cmUgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHNwZWNpZmljYWxseSBhdCBgZ3B0X2VudHJ5YC4gSXQgbG9va3MgbGlrZSBgZ3B0X2VudHJ5YCBpcyBvbmx5IHVzZWQgd2l0aGluIHRoZSBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgYW5kIGAuaGAgZmlsZXMuIEluaXRpYWxseSwgbXkgY29uY2VybiB3YXMgc3BhcmtlZCBieSB0aGUgc2VlbWluZ2x5IHVudXNlZCBgYXR0cmlidXRlc2AgZmllbGQgd2l0aGluIHRoZSBgZ3B0X2VudHJ5YCBzdHJ1Y3QuIEkgd29uZGVyZWQgaWYgdGhlIGNoYW5nZSBpbiBob3cgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgZGVmaW5lZCBjb3VsZCBhZmZlY3QgdGhlIG92ZXJhbGwgc2l6ZSBvZiBgZ3B0X2VudHJ5YCBnaXZlbiB0aGF0IGBzaXplb2YoZ3B0X2VudHJ5KWAgKmlzKiB1c2VkLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYSBiaXRmaWVsZCwgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGNvbXBpbGVyLCBjb3VsZCByZXN1bHQgaW4gc2l6ZSBvciBhbGlnbm1lbnQgZGlmZmVyZW5jZXMuCgpIb3dldmVyLCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBkZWZpbml0aW9uIG9mIGBncHRfZW50cnlfYXR0cmlidXRlc2AgcmV2ZWFscyB0aGUgYF9fcGFja2VkYCBhdHRyaWJ1dGUuIFRoaXMgY29uZmlybXMgdGhhdCB0aGUgc3RydWN0dXJlIGlzIGluZGVlZCA4IGJ5dGVzLiBHb2luZyBhIHN0ZXAgZnVydGhlciB0byBkb3VibGUtY2hlY2ssIEkgY2FuIHNlZSB0aGF0IHRoZSBzdHJ1Y3QgYGdwdF9lbnRyeWAgaXRzZWxmIGlzIGFsc28gYF9fcGFja2VkYC4KClNvLCB0aGUgbmV3IHN0cnVjdCBgZ3B0X2VudHJ5YCBkZWZpbml0aW9uIHVzaW5nIGBfX3BhY2tlZGAgc2hvdWxkIGJlOiAxNiAoZm9yIHBhcnRpdGlvbl90eXBlX2d1aWQpICYjNDM7IDE2IChmb3IgdW5pcXVlX3BhcnRpdGlvbl9ndWlkKSAmIzQzOyA4ICYjNDM7IDggJiM0MzsgOCAoYXR0cmlidXRlcykgJiM0MzsgNzIgPSAxMjggYnl0ZXMuIFRoZSBvbGQgZGVmaW5pdGlvbiwgd2l0aCBgX19sZTY0IGF0dHJpYnV0ZXM7YCwgd291bGQgYWxzbyBoYXZlIGJlZW4gMTI4IGJ5dGVzLiBUaGUgYHNpemVvZihncHRfZW50cnkpYCBpcyB0aGVyZWZvcmUgaWRlbnRpY2FsLiBUaGVyZSYjMzk7cyBubyBzaXplIGNoYW5nZSBhdCBhbGwuCgpIb3dldmVyLCBJIHN0YXJ0ZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIG9mIHRoaXMgZmllbGQgYmVpbmcgYSBiaXRmaWVsZCwgcGFydGljdWxhcmx5IHNpbmNlIGl0JiMzOTtzIGEgYHU2NGAuIEJpdGZpZWxkcyBvZiB0aGlzIHNpemUgY2FuIHNvbWV0aW1lcyBiZSBwcm9ibGVtYXRpYyBpbiBDLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIHdhcm5pbmdzIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIgdXNlZCwgb3IgbW9yZSBzaWduaWZpY2FudGx5LCBpbnRyb2R1Y2luZyBlbmRpYW5uZXNzIGlzc3Vlcy4gQnV0LCB3YWl0Li4udGhlIGNyaXRpY2FsIHBvaW50IGhlcmUgaXMgdGhhdCB0aGUgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCBmaWVsZCBpdHNlbGYgaXMgKm5ldmVyKiBhY2Nlc3NlZC4gVGhlcmVmb3JlLCB0aGUgZW5kaWFubmVzcyBvZiB0aGUgYml0ZmllbGQgZG9lc24mIzM5O3QgbWF0dGVyLCBhbmQgdGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTdGlsbCwgdG8gYmUgY29tcGxldGVseSB0aG9yb3VnaCwgSSBzaG91bGQgbG9vayBhdCBhbGwgb3RoZXIgZmlsZXMgdGhhdCBpbmNsdWRlIGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYCwganVzdCB0byBiZSBjZXJ0YWluIHRoYXQgSSBhbSBzZWVpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VmaVxcLmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jLTkwLSNpbmNsdWRlIFwmIzM0O2NoZWNrLmhcJiMzNDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6OTE6I2luY2x1ZGUgXCYjMzQ7ZWZpLmhcJiMzNDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtOTItXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC00LSAqIFBlciBJbnRlbCBFRkkgU3BlY2lmaWNhdGlvbiB2MS4wMlxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo1OiAqIGh0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tL3RlY2hub2xvZ3kvZWZpL2VmaS5odG1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNi0gKlxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtMTgtI2luY2x1ZGUgXHUwMDNjbGludXgvc3RyaW5nLmhcdTAwM2VcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6MTk6I2luY2x1ZGUgXHUwMDNjbGludXgvZWZpLmhcdTAwM2VcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtMjAtI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zMS0jaW5jbHVkZSBcJiMzNDtjaGVjay5oXCYjMzQ7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzI6I2luY2x1ZGUgXCYjMzQ7ZWZpLmhcJiMzNDtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NTQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBNU0RPUyBQYXJ0aXRpb24gQXR0cmlidXRlIEFjY2VzcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgYGJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuY2AgY29kZSBpcyBpbnRlcmFjdGluZyB3aXRoIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgaW4gdGhlIGNvbnRleHQgb2YgTVNET1MgcGFydGl0aW9uIHRhYmxlcy4gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiB0aGlzIGludmVzdGlnYXRpb24uIFNwZWNpZmljYWxseSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZmlsZSBgYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBmb3IgaGFuZGxpbmcgTVNET1MtZm9ybWF0dGVkIHBhcnRpdGlvbiB0YWJsZXMgcmVzaWRlcywgc28gaWYgdGhlcmUmIzM5O3MgYW55IGFjY2VzcyB0byBhdHRyaWJ1dGVzLCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IHRvIGJlIGZvdW5kIGhlcmUuIE15IGdvYWwgaXMgdG8gY29uZmlybSBvciBkZW55IHRoaXMgYXR0cmlidXRlIGludGVyYWN0aW9uLiBJIHdpbGwgbm93IGV4YW1pbmUgdGhpcyBmaWxlIGluIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4ODIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTZWVtaW5nbHkgVXNlbGVzcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGlzIHZhcmlhYmxlLi4uIGl0JiMzOTtzIGp1c3QgKm5ldmVyKiB1c2VkLiBUaGF0JiMzOTtzIGEgYml0IHBlcnBsZXhpbmcuIFRoZSBxdWVzdGlvbiBpcywgd2h5IHdhcyB0aGlzIHBhdGNoIGV2ZW4gc3VibWl0dGVkPyBXaGF0JiMzOTtzIHRoZSByYXRpb25hbGU/CgpNeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgd2FzIGl0IHNvbWV0aGluZyBzdWJ0bGU/IERpZCB0aGUgY29tcGlsZXIgc3RhcnQgdGhyb3dpbmcgdXAgc3BhcnNlIHdhcm5pbmdzIG9yIHRyaWdnZXIgYml0ZmllbGQtcmVsYXRlZCB3YXJuaW5ncz8gVGhhdCYjMzk7cyBhIHBvc3NpYmlsaXR5LCBidXQgSSYjMzk7bSBub3QgdG90YWxseSBjb252aW5jZWQuIE9yLCBwZXJoYXBzIGl0JiMzOTtzIHNpbXBseSBhIGNsZWFudXAgZWZmb3J0LCBzb21lb25lIHN0cmVhbWxpbmluZyB0aGUgY29kZWJhc2UuIEJ1dCB3YWl0Li4uIGlmIGl0JiMzOTtzIGdlbnVpbmVseSBpbmFjY2Vzc2libGUsIHRoZW4gZnVuY3Rpb25hbGx5LCBub3RoaW5nIGFjdHVhbGx5ICpjaGFuZ2VkKi4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgYnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgpJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aHJvdWdoIGBlZmkuaGAgdG8gbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBzb21lIHNuZWFreSBtYWNybyBvciBpbmxpbmUgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSBpbmRpcmVjdGx5IHVzaW5nIHRoaXMgdmFsdWUuIEp1c3Qgd2FudCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIGx1cmtpbmcgaW4gdGhpcyBmaWxlLiBHb3R0YSBkb3QgdGhlIGkmIzM5O3MgYW5kIGNyb3NzIHRoZSB0JiMzOTtzIGJlZm9yZSBtb3Zpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9lZmkuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqL1xuICAgMjpcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgIDM6XHQgKiBFRkkgR1VJRCBQYXJ0aXRpb24gVGFibGVcbiAgIDQ6XHQgKiBQZXIgSW50ZWwgRUZJIFNwZWNpZmljYXRpb24gdjEuMDJcbiAgIDU6XHQgKiBodHRwOi8vZGV2ZWxvcGVyLmludGVsLmNvbS90ZWNobm9sb2d5L2VmaS9lZmkuaHRtXG4gICA2Olx0ICpcbiAgIDc6XHQgKiBCeSBNYXR0IERvbXNjaCBcdTAwM2NNYXR0X0RvbXNjaEBkZWxsLmNvbVx1MDAzZSAgRnJpIFNlcCAyMiAyMjoxNTo1NiBDRFQgMjAwMCAgXG4gICA4Olx0ICogICBDb3B5cmlnaHQgMjAwMCwyMDAxIERlbGwgSW5jLlxuICAgOTpcdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gIDEwOlx0XG4gIDExOlx0I2lmbmRlZiBGU19QQVJUX0VGSV9IX0lOQ0xVREVEXG4gIDEyOlx0I2RlZmluZSBGU19QQVJUX0VGSV9IX0lOQ0xVREVEXG4gIDEzOlx0XG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbiAgMTY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21ham9yLmhcdTAwM2VcbiAgMTg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zdHJpbmcuaFx1MDAzZVxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2VmaS5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuICAyMTpcdFxuICAyMjpcdCNkZWZpbmUgTVNET1NfTUJSX1NJR05BVFVSRSAweGFhNTVcbiAgMjM6XHQjZGVmaW5lIEVGSV9QTUJSX09TVFlQRV9FRkkgMHhFRlxuICAyNDpcdCNkZWZpbmUgRUZJX1BNQlJfT1NUWVBFX0VGSV9HUFQgMHhFRVxuICAyNTpcdFxuICAyNjpcdCNkZWZpbmUgR1BUX01CUl9QUk9URUNUSVZFICAxXG4gIDI3Olx0I2RlZmluZSBHUFRfTUJSX0hZQlJJRCAgICAgIDJcbiAgMjg6XHRcbiAgMjk6XHQjZGVmaW5lIEdQVF9IRUFERVJfU0lHTkFUVVJFIDB4NTQ1MjQxNTAyMDQ5NDY0NVVMTFxuICAzMDpcdCNkZWZpbmUgR1BUX0hFQURFUl9SRVZJU0lPTl9WMSAweDAwMDEwMDAwXG4gIDMxOlx0I2RlZmluZSBHUFRfUFJJTUFSWV9QQVJUSVRJT05fVEFCTEVfTEJBIDFcbiAgMzI6XHRcbiAgMzM6XHQjZGVmaW5lIFBBUlRJVElPTl9TWVNURU1fR1VJRCBcXFxuICAzNDpcdCAgICBFRklfR1VJRCggMHhDMTJBNzMyOCwgMHhGODFGLCAweDExZDIsIFxcXG4gIDM1Olx0ICAgICAgICAgICAgICAweEJBLCAweDRCLCAweDAwLCAweEEwLCAweEM5LCAweDNFLCAweEM5LCAweDNCKSBcbiAgMzY6XHQjZGVmaW5lIExFR0FDWV9NQlJfUEFSVElUSU9OX0dVSUQgXFxcbiAgMzc6XHQgICAgRUZJX0dVSUQoIDB4MDI0REVFNDEsIDB4MzNFNywgMHgxMWQzLCBcXFxuICAzODpcdCAgICAgICAgICAgICAgMHg5RCwgMHg2OSwgMHgwMCwgMHgwOCwgMHhDNywgMHg4MSwgMHhGMywgMHg5RilcbiAgMzk6XHQjZGVmaW5lIFBBUlRJVElPTl9NU0ZUX1JFU0VSVkVEX0dVSUQgXFxcbiAgNDA6XHQgICAgRUZJX0dVSUQoIDB4RTNDOUUzMTYsIDB4MEI1QywgMHg0REI4LCBcXFxuICA0MTpcdCAgICAgICAgICAgICAgMHg4MSwgMHg3RCwgMHhGOSwgMHgyRCwgMHhGMCwgMHgwMiwgMHgxNSwgMHhBRSlcbiAgNDI6XHQjZGVmaW5lIFBBUlRJVElPTl9CQVNJQ19EQVRBX0dVSUQgXFxcbiAgNDM6XHQgICAgRUZJX0dVSUQoIDB4RUJEMEEwQTIsIDB4QjlFNSwgMHg0NDMzLCBcXFxuICA0NDpcdCAgICAgICAgICAgICAgMHg4NywgMHhDMCwgMHg2OCwgMHhCNiwgMHhCNywgMHgyNiwgMHg5OSwgMHhDNylcbiAgNDU6XHQjZGVmaW5lIFBBUlRJVElPTl9MSU5VWF9SQUlEX0dVSUQgXFxcbiAgNDY6XHQgICAgRUZJX0dVSUQoIDB4YTE5ZDg4MGYsIDB4MDVmYywgMHg0ZDNiLCBcXFxuICA0NzpcdCAgICAgICAgICAgICAgMHhhMCwgMHgwNiwgMHg3NCwgMHgzZiwgMHgwZiwgMHg4NCwgMHg5MSwgMHgxZSlcbiAgNDg6XHQjZGVmaW5lIFBBUlRJVElPTl9MSU5VWF9TV0FQX0dVSUQgXFxcbiAgNDk6XHQgICAgRUZJX0dVSUQoIDB4MDY1N2ZkNmQsIDB4YTRhYiwgMHg0M2M0LCBcXFxuICA1MDpcdCAgICAgICAgICAgICAgMHg4NCwgMHhlNSwgMHgwOSwgMHgzMywgMHhjOCwgMHg0YiwgMHg0ZiwgMHg0ZilcbiAgNTE6XHQjZGVmaW5lIFBBUlRJVElPTl9MSU5VWF9MVk1fR1VJRCBcXFxuICA1MjpcdCAgICBFRklfR1VJRCggMHhlNmQ2ZDM3OSwgMHhmNTA3LCAweDQ0YzIsIFxcXG4gIDUzOlx0ICAgICAgICAgICAgICAweGEyLCAweDNjLCAweDIzLCAweDhmLCAweDJhLCAweDNkLCAweGY5LCAweDI4KVxuICA1NDpcdFxuICA1NTpcdHR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHtcbiAgNTY6XHRcdF9fbGU2NCBzaWduYXR1cmU7XG4gIDU3Olx0XHRfX2xlMzIgcmV2aXNpb247XG4gIDU4Olx0XHRfX2xlMzIgaGVhZGVyX3NpemU7XG4gIDU5Olx0XHRfX2xlMzIgaGVhZGVyX2NyYzMyO1xuICA2MDpcdFx0X19sZTMyIHJlc2VydmVkMTtcbiAgNjE6XHRcdF9fbGU2NCBteV9sYmE7XG4gIDYyOlx0XHRfX2xlNjQgYWx0ZXJuYXRlX2xiYTtcbiAgNjM6XHRcdF9fbGU2NCBmaXJzdF91c2FibGVfbGJhO1xuICA2NDpcdFx0X19sZTY0IGxhc3RfdXNhYmxlX2xiYTtcbiAgNjU6XHRcdGVmaV9ndWlkX3QgZGlza19ndWlkO1xuICA2NjpcdFx0X19sZTY0IHBhcnRpdGlvbl9lbnRyeV9sYmE7XG4gIDY3Olx0XHRfX2xlMzIgbnVtX3BhcnRpdGlvbl9lbnRyaWVzO1xuICA2ODpcdFx0X19sZTMyIHNpemVvZl9wYXJ0aXRpb25fZW50cnk7XG4gIDY5Olx0XHRfX2xlMzIgcGFydGl0aW9uX2VudHJ5X2FycmF5X2NyYzMyO1xuICA3MDpcdFxuICA3MTpcdFx0LyogVGhlIHJlc3Qgb2YgdGhlIGxvZ2ljYWwgYmxvY2sgaXMgcmVzZXJ2ZWQgYnkgVUVGSSBhbmQgbXVzdCBiZSB6ZXJvLlxuICA3MjpcdFx0ICogRUZJIHN0YW5kYXJkIGhhbmRsZXMgdGhpcyBieTpcbiAgNzM6XHRcdCAqXG4gIDc0Olx0XHQgKiB1aW50OF90XHRcdHJlc2VydmVkMlsgQmxvY2tTaXplIC0gOTIgXTtcbiAgNzU6XHRcdCAqL1xuICA3NjpcdH0gX19wYWNrZWQgZ3B0X2hlYWRlcjtcbiAgNzc6XHRcbiAgNzg6XHR0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcbiAgNzk6XHRcdGVmaV9ndWlkX3QgcGFydGl0aW9uX3R5cGVfZ3VpZDtcbiAgODA6XHRcdGVmaV9ndWlkX3QgdW5pcXVlX3BhcnRpdGlvbl9ndWlkO1xuICA4MTpcdFx0X19sZTY0IHN0YXJ0aW5nX2xiYTtcbiAgODI6XHRcdF9fbGU2NCBlbmRpbmdfbGJhO1xuICA4MzpcdFx0X19sZTY0IGF0dHJpYnV0ZXM7XG4gIDg0Olx0XHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xuICA4NTpcdH0gX19wYWNrZWQgZ3B0X2VudHJ5O1xuICA4NjpcdFxuICA4NzpcdHR5cGVkZWYgc3RydWN0IF9ncHRfbWJyX3JlY29yZCB7XG4gIDg4Olx0XHR1OFx0Ym9vdF9pbmRpY2F0b3I7IC8qIHVudXNlZCBieSBFRkksIHNldCB0byAweDgwIGZvciBib290YWJsZSAqL1xuICA4OTpcdFx0dThcdHN0YXJ0X2hlYWQ7ICAgICAvKiB1bnVzZWQgYnkgRUZJLCBwdCBzdGFydCBpbiBDSFMgKi9cbiAgOTA6XHRcdHU4XHRzdGFydF9zZWN0b3I7ICAgLyogdW51c2VkIGJ5IEVGSSwgcHQgc3RhcnQgaW4gQ0hTICovXG4gIDkxOlx0XHR1OFx0c3RhcnRfdHJhY2s7XG4gIDkyOlx0XHR1OFx0b3NfdHlwZTsgICAgICAgIC8qIEVGSSBhbmQgbGVnYWN5IG5vbi1FRkkgT1MgdHlwZXMgKi9cbiAgOTM6XHRcdHU4XHRlbmRfaGVhZDsgICAgICAgLyogdW51c2VkIGJ5IEVGSSwgcHQgZW5kIGluIENIUyAqL1xuICA5NDpcdFx0dThcdGVuZF9zZWN0b3I7ICAgICAvKiB1bnVzZWQgYnkgRUZJLCBwdCBlbmQgaW4gQ0hTICovXG4gIDk1Olx0XHR1OFx0ZW5kX3RyYWNrOyAgICAgIC8qIHVudXNlZCBieSBFRkksIHB0IGVuZCBpbiBDSFMgKi9cbiAgOTY6XHRcdF9fbGUzMlx0c3RhcnRpbmdfbGJhOyAgIC8qIHVzZWQgYnkgRUZJIC0gc3RhcnQgYWRkciBvZiB0aGUgb24gZGlzayBwdCAqL1xuICA5NzpcdFx0X19sZTMyXHRzaXplX2luX2xiYTsgICAgLyogdXNlZCBieSBFRkkgLSBzaXplIG9mIHB0IGluIExCQSAqL1xuICA5ODpcdH0gX19wYWNrZWQgZ3B0X21icl9yZWNvcmQ7XG4gIDk5Olx0XG4gMTAwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjU4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1BUIEVudHJ5IEF0dHJpYnV0ZSBDaGFuZ2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgZ3B0X2VudHJ5YCBpcyBkZWZpbmVkIGluIGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYC4gVGhlIHZhcmlhYmxlIGBhdHRyaWJ1dGVzYCB3aXRoaW4gdGhhdCBzdHJ1Y3QgaXMgdGhlIHNwZWNpZmljIHRoaW5nIEkmIzM5O20gZm9jdXNlZCBvbi4gSW5pdGlhbGx5LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoaXMgYWN0dWFsbHkgKnVzZWQqIGFueXdoZXJlPyYjMzQ7IEEgcXVpY2sgZ3JlcCBkaWRuJiMzOTt0IHR1cm4gdXAgYW55dGhpbmcgaW4gYGJsb2NrL3BhcnRpdGlvbnMvYCBiZXlvbmQgdGhlIGRlZmluaXRpb24gaXRzZWxmLiBJIGRvdWJsZS1jaGVja2VkLCBncmVwcGluZyBmb3IgYGdwdF9lbnRyeWAsIGFuZCBjb25maXJtZWQgaXRzIHVzYWdlIGlzIGxpbWl0ZWQgdG8gdGhlIGBlZmkuY2AgYW5kIGBlZmkuaGAgZmlsZXMgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBTbywgaXQgcmVhbGx5ICppcyogbmV2ZXIgYWNjZXNzZWQsIGF0IGxlYXN0IG5vdCBkaXJlY3RseS4gVGhhdCYjMzk7cyBvZGQuCgpXaHkgdGhlIGNoYW5nZSB0aGVuPyBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgYSBiaXRmaWVsZC4gQWgsIHRoZSBkYW5nZXIgb2YgYml0ZmllbGRzISBNYXBwaW5nIHN0cnVjdHVyZXMgd2l0aCBiaXRmaWVsZHMgZGlyZWN0bHkgdG8gb24tZGlzayBkYXRhIGlzIGdlbmVyYWxseSBhIG5vLW5vLiBDb21waWxlciBiZWhhdmlvciByZWdhcmRpbmcgYml0ZmllbGQgcGFja2luZyBjYW4gdmFyeSB3aWxkbHkgYmV0d2VlbiBhcmNoaXRlY3R1cmVzIGFuZCBlbmRpYW5uZXNzLiBIb3dldmVyLCB0aGUga2VybmVsICpuZXZlciogcmVhZHMgb3Igd3JpdGVzIHRoYXQgZmllbGQ7IHRoZSBleGVjdXRpb24gZmxvdyBpc24mIzM5O3QgaW1wYWN0ZWQgaGVyZS4KCkJ1dCB3YWl0IGEgc2Vjb25kLi4uIGBzaXplb2YoZ3B0X2VudHJ5KWAgaXMgdXNlZCBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgaW4gYSBjcnVjaWFsIHNpemUgY2hlY2s6CgpgYGBjCglpZiAobGUzMl90b19jcHUoKCpncHQpLSZndDtzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkgewoJCXByX2RlYnVnKCYjMzQ7R1VJRCBQYXJ0aXRpb24gRW50cnkgU2l6ZSBjaGVjayBmYWlsZWQuXG4mIzM0Oyk7CmBgYAoKSWYgdGhlIHNpemUgb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgKmRpZmZlcmVudCogZHVlIHRvIHRoZSBiaXRmaWVsZCBjaGFuZ2UsIGBzaXplb2YoZ3B0X2VudHJ5KWAgd291bGQgaGF2ZSBiZWVuIGFmZmVjdGVkIGFuZCBwb3RlbnRpYWxseSBicm9rZW4gdGhlIGNoZWNrISBCdXQsIHRoZSBvcmlnaW5hbCBzdHJ1Y3QsIGBncHRfZW50cnlfYXR0cmlidXRlc2AsIHdhczoKCmBgYGMKdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHsKCXU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxOwoJdTY0IHJlc2VydmVkOjQ3OwogICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7Cn0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7CmBgYAoKSXQgd2FzIGEgYHU2NGAgYml0ZmllbGQgd2l0aCBhIHRvdGFsIG9mIDY0IGJpdHMgd2l0aCB0aGUgYF9fcGFja2VkYCBhdHRyaWJ1dGUgdG8gZW5zdXJlIG5vIHBhZGRpbmcuIFNvIHRoZSBzaXplIHdhcyA4IGJ5dGVzIGJlZm9yZSAqYW5kKiBhZnRlciB0aGUgY2hhbmdlLCBtYWtpbmcgYHNpemVvZihncHRfZW50cnkpYCBzdGF5IGF0IDEyOCBieXRlcyBpbiBib3RoIGNhc2VzLiBJcyB0aGVyZSAqYW55KiBmdW5jdGlvbmFsIGNoYW5nZSB0aGVuPwoKSG9sZCBvbi4uLiBldmVuIGlmIHRoZSBzaXplIHJlbWFpbnMgdGhlIHNhbWUsIGEgYml0ZmllbGQgYHU2NGAgbWlnaHQgdHJpZ2dlciBjb21waWxlciB3YXJuaW5ncywgb3IgZXZlbiBzcGFyc2UgZXJyb3JzLiBBbHNvLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgdGhlIG9yaWdpbmFsIGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2FzbiYjMzk7dCB1c2luZyBgX19sZTY0YC4gSWYgaXQgKndlcmUqIHJlYWQsIGl0IHdvdWxkIGJlIGludGVycHJldGVkIGluIGhvc3QgYnl0ZSBvcmRlciwgd2hpY2ggaXMgKndyb25nKiBmb3Igb24tZGlzayBHUFQgZGF0YSAobGl0dGxlLWVuZGlhbikuIEJ1dCBzaW5jZSBpdCYjMzk7cyBuZXZlciByZWFkLCBpdCYjMzk7cyBub3QgYSBwcm9ibGVtLgoKSG1tLCBidXQgKmNvdWxkKiBgZ3B0X2VudHJ5YCBnZXQgY29waWVkIHRvIHVzZXJzcGFjZT8gTGV0JiMzOTtzIGNoZWNrLiBJZiBgZ3B0X2VudHJ5YCB3ZXJlIGV4cG9zZWQgdG8gdXNlcmxhbmQsIHRoZW4gdGhpcyBjaGFuZ2UgKndvdWxkKiBiZSBpbnRlcmVzdGluZywgYnV0IGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYCBpc24mIzM5O3QgaW4gYGluY2x1ZGUvdWFwaS9gLCBzbyBpdCYjMzk7cyBpbnRlcm5hbCB0byB0aGUga2VybmVsLiBJcyBpdCBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgc29tZSBJT0NUTD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3B5X3RvX3VzZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2NzUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBkaXJlY3QgcmVmbGVjdGlvbiBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBgZ3B0X2VudHJ5YCBVc2FnZSoqCgpBbHJpZ2h0LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBnZXQgYSBoYW5kbGUgb24gdGhpcyBgZ3B0X2VudHJ5YCB0aGluZy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaXRzIHNjb3BlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyB2YXJpYWJsZSBvciBmdW5jdGlvbiDigJMgd2hhdGV2ZXIgaXQgaXMg4oCTIGlzIGJlaW5nIHBhc3NlZCBhcm91bmQgdG8gb3RoZXIgc3Vic3lzdGVtcy4gVW5kZXJzdGFuZGluZyBpdHMgcHJvcGFnYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMsIHNpZGUgZWZmZWN0cywgYW5kIG92ZXJhbGwgYXJjaGl0ZWN0dXJhbCBpbXBhY3QuIElzIGl0IGlzb2xhdGVkLCBvciBpcyBpdCBhIGNlbnRyYWwgcG9pbnQgb2YgaW50ZWdyYXRpb24/IEtub3dpbmcgdGhlIGFuc3dlciB0byB0aGF0IHF1ZXN0aW9uIHdpbGwgaW5mb3JtIGFueSBmdXJ0aGVyIGFuYWx5c2lzIEkgbmVlZCB0byBkby4gSSBuZWVkIHRvIG1hcCB3aGVyZSBpdCB0b3VjaGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtncHRfZW50cnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI2OS0gKi9cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjcxLVx0XHRcdFx0XHQgZ3B0X2hlYWRlciAqZ3B0KVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjczLVx0c2l6ZV90IGNvdW50O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzoyNzQ6XHRncHRfZW50cnkgKnB0ZTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MzM0PXN0YXRpYyBpbnQgaXNfZ3B0X3ZhbGlkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHU2NCBsYmEsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcdFx0XHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0zMzYte1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVx0LyogQ2hlY2sgdGhhdCBzaXplb2ZfcGFydGl0aW9uX2VudHJ5IGhhcyB0aGUgY29ycmVjdCB2YWx1ZSAqL1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0MTU6XHRpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKSB7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQxNi1cdFx0cHJfZGVidWcoXCYjMzQ7R1VJRCBQYXJ0aXRpb24gRW50cnkgU2l6ZSBjaGVjayBmYWlsZWQuXFxuXCYjMzQ7KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTQ1OT1zdGF0aWMgaW5saW5lIGludFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0NjA6aXNfcHRlX3ZhbGlkKGNvbnN0IGdwdF9lbnRyeSAqcHRlLCBjb25zdCB1NjQgbGFzdGxiYSlcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTU4MD1zdGF0aWMgaW50IGZpbmRfdmFsaWRfZ3B0KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGdwdF9oZWFkZXIgKipncHQsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcdFx0XHQgIGdwdF9lbnRyeSAqKnB0ZXMpXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Mi17XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXHRncHRfaGVhZGVyICpwZ3B0ID0gTlVMTCwgKmFncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo1ODU6XHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNTg2LVx0bGVnYWN5X21iciAqbGVnYWN5bWJyO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NzEyPWludCBlZmlfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXHRncHRfaGVhZGVyICpncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3MTU6XHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTYtXHR1MzIgaTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MjMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDoKCioqSW50ZXJuYWwgR1BUIFBhcnNpbmcgQW5hbHlzaXMqKgoKUmlnaHQsIGl0IGxvb2tzIGxpa2UgYGdwdF9lbnRyeWAgaXMgc3RyaWN0bHkgYSAqcHJpdmF0ZSogZnVuY3Rpb24sIGEgaGVscGVyIHByaW1hcmlseSBmb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBwYXJzaW5nIHByb2Nlc3MuIEl0JiMzOTtzIG5vdCBleHBvc2VkIGV4dGVybmFsbHksIHdoaWNoIG1ha2VzIHNlbnNlLiBJdHMgb25seSBqb2IgaXMgdG8gYnJlYWsgZG93biB0aGUgR1BUIHN0cnVjdHVyZXMsIGFuZCB0aGVuIGZlZWQgdGhlIHJlc3VsdHMgaW50byBgc3RhdGVgLCB3aGljaCwgSSBzZWUsIGlzIGEgYHBhcnNlZF9wYXJ0aXRpb25zYCBzdHJ1Y3QuIE1ha2VzIHRoZSBhcmNoaXRlY3R1cmUgcHJldHR5IGNsZWFyLiBMZXQgbWUgcXVpY2tseSBqdW1wIG92ZXIgdG8gYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgYGVmaV9wYXJ0aXRpb25gIGNvZGUg4oCTIEkgd2FudCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBwYXJzaW5nIHByb2Nlc3MuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBmb2N1cyBvbiBob3cgYGVmaV9wYXJ0aXRpb25gIGhhbmRsZXMgdGhhdCBwYXJzZWQgZGF0YSB0aGF0IG9yaWdpbmF0ZXMgZnJvbSBgZ3B0X2VudHJ5YC4gSSYjMzk7bSBndWVzc2luZyB0aGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGxvZ2ljIGlzLCBob3cgdGhlIHBhcnNlZCBHUFQgZW50cmllcyB1bHRpbWF0ZWx5IHRyYW5zbGF0ZSBpbnRvIHVzYWJsZSBwYXJ0aXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzeXN0ZW0uIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGRldmlsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gYGVmaS5jYCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzEyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzEyOlx0aW50IGVmaV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbiA3MTM6XHR7XG4gNzE0Olx0XHRncHRfaGVhZGVyICpncHQgPSBOVUxMO1xuIDcxNTpcdFx0Z3B0X2VudHJ5ICpwdGVzID0gTlVMTDtcbiA3MTY6XHRcdHUzMiBpO1xuIDcxNzpcdFx0dW5zaWduZWQgc3N6ID0gcXVldWVfbG9naWNhbF9ibG9ja19zaXplKHN0YXRlLVx1MDAzZWRpc2stXHUwMDNlcXVldWUpIC8gNTEyO1xuIDcxODpcdFxuIDcxOTpcdFx0aWYgKCFmaW5kX3ZhbGlkX2dwdChzdGF0ZSwgXHUwMDI2Z3B0LCBcdTAwMjZwdGVzKSB8fCAhZ3B0IHx8ICFwdGVzKSB7XG4gNzIwOlx0XHRcdGtmcmVlKGdwdCk7XG4gNzIxOlx0XHRcdGtmcmVlKHB0ZXMpO1xuIDcyMjpcdFx0XHRyZXR1cm4gMDtcbiA3MjM6XHRcdH1cbiA3MjQ6XHRcbiA3MjU6XHRcdHByX2RlYnVnKFwmIzM0O0dVSUQgUGFydGl0aW9uIFRhYmxlIGlzIHZhbGlkISAgWWVhIVxcblwmIzM0Oyk7XG4gNzI2Olx0XG4gNzI3Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZTMyX3RvX2NwdShncHQtXHUwMDNlbnVtX3BhcnRpdGlvbl9lbnRyaWVzKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2Mgc3RhdGUtXHUwMDNlbGltaXQtMTsgaSYjNDM7JiM0MzspIHtcbiA3Mjg6XHRcdFx0c3RydWN0IHBhcnRpdGlvbl9tZXRhX2luZm8gKmluZm87XG4gNzI5Olx0XHRcdHVuc2lnbmVkIGxhYmVsX21heDtcbiA3MzA6XHRcdFx0dTY0IHN0YXJ0ID0gbGU2NF90b19jcHUocHRlc1tpXS5zdGFydGluZ19sYmEpO1xuIDczMTpcdFx0XHR1NjQgc2l6ZSA9IGxlNjRfdG9fY3B1KHB0ZXNbaV0uZW5kaW5nX2xiYSkgLVxuIDczMjpcdFx0XHRcdCAgIGxlNjRfdG9fY3B1KHB0ZXNbaV0uc3RhcnRpbmdfbGJhKSAmIzQzOyAxVUxMO1xuIDczMzpcdFxuIDczNDpcdFx0XHRpZiAoIWlzX3B0ZV92YWxpZChcdTAwMjZwdGVzW2ldLCBsYXN0X2xiYShzdGF0ZS1cdTAwM2VkaXNrKSkpXG4gNzM1Olx0XHRcdFx0Y29udGludWU7XG4gNzM2Olx0XG4gNzM3Olx0XHRcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIGkmIzQzOzEsIHN0YXJ0ICogc3N6LCBzaXplICogc3N6KTtcbiA3Mzg6XHRcbiA3Mzk6XHRcdFx0LyogSWYgdGhpcyBpcyBhIFJBSUQgdm9sdW1lLCB0ZWxsIG1kICovXG4gNzQwOlx0XHRcdGlmICghZWZpX2d1aWRjbXAocHRlc1tpXS5wYXJ0aXRpb25fdHlwZV9ndWlkLCBQQVJUSVRJT05fTElOVVhfUkFJRF9HVUlEKSlcbiA3NDE6XHRcdFx0XHRzdGF0ZS1cdTAwM2VwYXJ0c1tpICYjNDM7IDFdLmZsYWdzID0gQUREUEFSVF9GTEFHX1JBSUQ7XG4gNzQyOlx0XG4gNzQzOlx0XHRcdGluZm8gPSBcdTAwMjZzdGF0ZS1cdTAwM2VwYXJ0c1tpICYjNDM7IDFdLmluZm87XG4gNzQ0Olx0XHRcdGVmaV9ndWlkX3RvX3N0cihcdTAwMjZwdGVzW2ldLnVuaXF1ZV9wYXJ0aXRpb25fZ3VpZCwgaW5mby1cdTAwM2V1dWlkKTtcbiA3NDU6XHRcbiA3NDY6XHRcdFx0LyogTmFpdmVseSBjb252ZXJ0IFVURjE2LUxFIHRvIDcgYml0cy4gKi9cbiA3NDc6XHRcdFx0bGFiZWxfbWF4ID0gbWluKEFSUkFZX1NJWkUoaW5mby1cdTAwM2V2b2xuYW1lKSAtIDEsXG4gNzQ4Olx0XHRcdFx0XHRBUlJBWV9TSVpFKHB0ZXNbaV0ucGFydGl0aW9uX25hbWUpKTtcbiA3NDk6XHRcdFx0dXRmMTZfbGVfdG9fN2JpdChwdGVzW2ldLnBhcnRpdGlvbl9uYW1lLCBsYWJlbF9tYXgsIGluZm8tXHUwMDNldm9sbmFtZSk7XG4gNzUwOlx0XHRcdHN0YXRlLVx1MDAzZXBhcnRzW2kgJiM0MzsgMV0uaGFzX2luZm8gPSB0cnVlO1xuIDc1MTpcdFx0fVxuIDc1MjpcdFx0a2ZyZWUocHRlcyk7XG4gNzUzOlx0XHRrZnJlZShncHQpO1xuIDc1NDpcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiA3NTU6XHRcdHJldHVybiAxO1xuIDc1NjpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NzUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBiaXQgcHV6emxpbmcgYXQgZmlyc3QgZ2xhbmNlLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGNoYW5naW5nIHRoZSBkYXRhIHR5cGUgb2YgdGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCBmcm9tIGEgYml0ZmllbGQgc3RydWN0IHRvIGEgYF9fbGU2NGAuIFRoZSBrZXJuZWwmIzM5O3MgYWN0dWFsbHkgKm5vdCogdXNpbmcgdGhvc2UgYGF0dHJpYnV0ZXNgIGFueXdoZXJlLCBzbyBvbiB0aGUgZmFjZSBvZiBpdCwgdGhpcyBjaGFuZ2Ugc2hvdWxkIGJlIGNvbXBsZXRlbHkgaW5lcnQuIEl0IHdvbiYjMzk7dCBhZmZlY3QgdGhlIGV4ZWN1dGlvbiBwYXRoIGluIHRoZSBzbGlnaHRlc3QuCgpJdCYjMzk7cyBwcm9iYWJseSBqdXN0IGEgY2xlYW51cCwgcmlnaHQ/IFBlcmhhcHMgdGhleSYjMzk7cmUgZ2V0dGluZyByaWQgb2YgdGhlIGJpdGZpZWxkIGJlY2F1c2UgaXQmIzM5O3Mgbm9uLXN0YW5kYXJkLCBvciBtYXliZSBpdCB3YXMgZ2VuZXJhdGluZyBzcGFyc2Ugd2FybmluZ3MuIE9yLCBtb3JlIGxpa2VseSwgdGhleSYjMzk7cmUgYWxpZ25pbmcgdGhlIGRhdGEgdHlwZSB0byBtYXRjaCBob3cgdGhlIGZpZWxkIGlzIHJlcHJlc2VudGVkIG9uIGRpc2ssIGFzc3VtaW5nIGxpdHRsZS1lbmRpYW5uZXNzIGlzIHJlbGV2YW50LgoKSG9sZCBvbiBhIHNlY29uZCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCBpc24mIzM5O3QgKnVzZWQqIGFueXdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbC4gR290dGEgYmUgdGhvcm91Z2guIEp1c3Qgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjcnVjaWFsIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtncHRfZW50cnlfYXR0cmlidXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDQ4CgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWNpc2lvbjogTm8gRnV6emluZyBOZWNlc3NhcnkqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIHRocm91Z2ggdGhlIGNoYW5nZXMuIE5vIG1hdGNoZXMsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHB1cmVseSB3aXRoIGRlY29yYXRpdmUgdXBkYXRlcyBvciBjb2RlIGNsZWFudXAuIENvbnNlcXVlbnRseSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgc2V0IHRvIGBmYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGZvciBhbnkgc3VidGxlLCB1bmV4cGVjdGVkIGltcGFjdHMuIEhtbW0sIGNvdWxkIHRoZSBgc2l6ZW9mKGdwdF9lbnRyeSlgIGhhdmUgY2hhbmdlZCwgZXZlbiBzdWJ0bHk/IExldCYjMzk7cyByZWZyZXNoIG91ciBtZW1vcnkgb24gYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYDoKCmBgYGMKdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHsKCXU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxOwoJdTY0IHJlc2VydmVkOjQ3OwogICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7Cn0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7CmBgYAoKUmlnaHQsIGl0JiMzOTtzIGBfX3BhY2tlZGAuIEEgcGFja2VkIHN0cnVjdCwgdXNpbmcgNjQgYml0cyB3aXRoIGJpdGZpZWxkcywgKmFsd2F5cyogZW5kcyB1cCBiZWluZyBleGFjdGx5IDggYnl0ZXMuIEFuZCBgX19sZTY0YCBpcyBhbHNvIHByZWNpc2VseSA4IGJ5dGVzLiBTbywgYmFzZWQgb24gdGhpcyByZXZpZXcgb2YgdGhlIGNoYW5nZXMsIHRoZSBgc2l6ZW9mKGdwdF9lbnRyeSlgIHJlbWFpbnMgKmlkZW50aWNhbCouIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aGF0c29ldmVyLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBkZWNpc2lvbiBpcyBjbGVhcjogSSYjMzk7bSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSBiaXRmaWVsZCBzdHJ1Y3QgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3aXRoIGEgc2ltcGxlIGBfX2xlNjQgYXR0cmlidXRlc2AgaW4gYGdwdF9lbnRyeWAuIFRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgbmV2ZXIgYWNjZXNzZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlLiBUaGUgc2l6ZSBvZiBgZ3B0X2VudHJ5YCByZW1haW5zIGV4YWN0bHkgdGhlIHNhbWUgKDEyOCBieXRlcykgYmVjYXVzZSB0aGUgb2xkIHN0cnVjdCB3YXMgYF9fcGFja2VkYCBhbmQgY29udGFpbmVkIGV4YWN0bHkgNjQgYml0cyBvZiBiaXRmaWVsZHMuIFRoZXJlZm9yZSwgdGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2NsZWFudXAgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIGJpdGZpZWxkIHN0cnVjdCBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdpdGggYSBzaW1wbGUgYF9fbGU2NCBhdHRyaWJ1dGVzYCBpbiBgZ3B0X2VudHJ5YC4gVGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCBpcyBuZXZlciBhY2Nlc3NlZCBhbnl3aGVyZSBpbiB0aGUga2VybmVsIGNvZGUuIFRoZSBzaXplIG9mIGBncHRfZW50cnlgIHJlbWFpbnMgZXhhY3RseSB0aGUgc2FtZSAoMTI4IGJ5dGVzKSBiZWNhdXNlIHRoZSBvbGQgc3RydWN0IHdhcyBgX19wYWNrZWRgIGFuZCBjb250YWluZWQgZXhhY3RseSA2NCBiaXRzIG9mIGJpdGZpZWxkcy4gVGhlcmVmb3JlLCB0aGlzIGlzIGEgcHVyZWx5IGRlY29yYXRpdmUvY2xlYW51cCBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowODo0MS4zMjYwMTk1NjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE4Nzk3NjYyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgYml0ZmllbGQgc3RydWN0IGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2l0aCBhIHNpbXBsZSBgX19sZTY0IGF0dHJpYnV0ZXNgIGluIGBncHRfZW50cnlgLiBUaGUgYGF0dHJpYnV0ZXNgIGZpZWxkIGlzIG5ldmVyIGFjY2Vzc2VkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZS4gVGhlIHNpemUgb2YgYGdwdF9lbnRyeWAgcmVtYWlucyBleGFjdGx5IHRoZSBzYW1lICgxMjggYnl0ZXMpIGJlY2F1c2UgdGhlIG9sZCBzdHJ1Y3Qgd2FzIGBfX3BhY2tlZGAgYW5kIGNvbnRhaW5lZCBleGFjdGx5IDY0IGJpdHMgb2YgYml0ZmllbGRzLiBUaGVyZWZvcmUsIHRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZS9jbGVhbnVwIGNoYW5nZSB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDg6NDEuMzI2MDI3MzM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDU3MTM3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhZTg3MWYzYzZlNmQ5NGNlNzI4YzQ1N2ZmMTVlOGRmNDljMjA3Y2NiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDA3OjA4OjM5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmggYi9ibG9jay9wYXJ0aXRpb25zL2VmaS5oXFxuaW5kZXggODRiOWYzNmI5ZTQ3OTcuLjFmNTZmOTNiMjgwNDhmIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmhcXG4rKysgYi9ibG9jay9wYXJ0aXRpb25zL2VmaS5oXFxuQEAgLTc1LDE4ICs3NSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XFxuIFxcdCAqL1xcbiB9IF9fcGFja2VkIGdwdF9oZWFkZXI7XFxuIFxcbi10eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5X2F0dHJpYnV0ZXMge1xcbi1cXHR1NjQgcmVxdWlyZWRfdG9fZnVuY3Rpb246MTtcXG4tXFx0dTY0IHJlc2VydmVkOjQ3O1xcbi0gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7XFxuLX0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7XFxuLVxcbiB0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcXG4gXFx0ZWZpX2d1aWRfdCBwYXJ0aXRpb25fdHlwZV9ndWlkO1xcbiBcXHRlZmlfZ3VpZF90IHVuaXF1ZV9wYXJ0aXRpb25fZ3VpZDtcXG4gXFx0X19sZTY0IHN0YXJ0aW5nX2xiYTtcXG4gXFx0X19sZTY0IGVuZGluZ19sYmE7XFxuLVxcdGdwdF9lbnRyeV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7XFxuK1xcdF9fbGU2NCBhdHRyaWJ1dGVzO1xcbiBcXHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xcbiB9IF9fcGFja2VkIGdwdF9lbnRyeTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA4OjQyLjAzMjg2NDk5MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExMTE3MjkxMzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBiaXRmaWVsZCBzdHJ1Y3QgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3aXRoIGEgc2ltcGxlIGBfX2xlNjQgYXR0cmlidXRlc2AgaW4gYGdwdF9lbnRyeWAuIFRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgbmV2ZXIgYWNjZXNzZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlLiBUaGUgc2l6ZSBvZiBgZ3B0X2VudHJ5YCByZW1haW5zIGV4YWN0bHkgdGhlIHNhbWUgKDEyOCBieXRlcykgYmVjYXVzZSB0aGUgb2xkIHN0cnVjdCB3YXMgYF9fcGFja2VkYCBhbmQgY29udGFpbmVkIGV4YWN0bHkgNjQgYml0cyBvZiBiaXRmaWVsZHMuIFRoZXJlZm9yZSwgdGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2NsZWFudXAgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhZTg3MWYzYzZlNmQ5NGNlNzI4YzQ1N2ZmMTVlOGRmNDljMjA3Y2NiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDc6MDg6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2VmaS5oIGIvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuaW5kZXggODRiOWYzNmI5ZTQ3OTcuLjFmNTZmOTNiMjgwNDhmIDEwMDY0NFxuLS0tIGEvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuKysrIGIvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuQEAgLTc1LDE4ICs3NSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XG4gXHQgKi9cbiB9IF9fcGFja2VkIGdwdF9oZWFkZXI7XG4gXG4tdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHtcbi1cdHU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxO1xuLVx0dTY0IHJlc2VydmVkOjQ3O1xuLSAgICAgICAgdTY0IHR5cGVfZ3VpZF9zcGVjaWZpYzoxNjtcbi19IF9fcGFja2VkIGdwdF9lbnRyeV9hdHRyaWJ1dGVzO1xuLVxuIHR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnkge1xuIFx0ZWZpX2d1aWRfdCBwYXJ0aXRpb25fdHlwZV9ndWlkO1xuIFx0ZWZpX2d1aWRfdCB1bmlxdWVfcGFydGl0aW9uX2d1aWQ7XG4gXHRfX2xlNjQgc3RhcnRpbmdfbGJhO1xuIFx0X19sZTY0IGVuZGluZ19sYmE7XG4tXHRncHRfZW50cnlfYXR0cmlidXRlcyBhdHRyaWJ1dGVzO1xuK1x0X19sZTY0IGF0dHJpYnV0ZXM7XG4gXHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xuIH0gX19wYWNrZWQgZ3B0X2VudHJ5O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDg6NDIuMDMyODY3MDkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NTM3MTQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVGSSBQYXJ0aXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgYmxvY2svcGFydGl0aW9ucy9lZmkuaGAsIGFuZCBpdCBsb29rcyBsaWtlIGEgZ29vZCBvbmUuIFRoZXkncmUgcmVtb3ZpbmcgdGhlIGBncHRfZW50cnlfYXR0cmlidXRlc2Agc3RydWN0LCB3aGljaCB3YXMgdXNpbmcgYml0ZmllbGRzLCBhbmQgcmVwbGFjaW5nIGl0IHdpdGggYSBzaW1wbGUgYF9fbGU2NCBhdHRyaWJ1dGVzYCBmaWVsZCBkaXJlY3RseSB3aXRoaW4gdGhlIGBncHRfZW50cnlgIHN0cnVjdC4gVGhpcyBpcyBhIHNtYXJ0IG1vdmUsIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBiZW5lZml0LiBCaXRmaWVsZHMgYXJlIG5vdG9yaW91cyBmb3IgYmVpbmcgaW1wbGVtZW50YXRpb24tZGVmaW5lZDsgdGhlIGxheW91dCBpc24ndCBndWFyYW50ZWVkIHRvIGJlIGNvbnNpc3RlbnQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLCBhbmQgdGhhdCBjYW4gbGVhZCB0byBzb21lIG5hc3R5IGVuZGlhbm5lc3MgYW5kIGxheW91dCBidWdzIGRvd24gdGhlIGxpbmUuIFVzaW5nIGBfX2xlNjRgIHByb3ZpZGVzIGEgbXVjaCBtb3JlIHByZWRpY3RhYmxlIGFuZCBwb3J0YWJsZSB3YXkgdG8gaGFuZGxlIHRoZXNlIGF0dHJpYnV0ZXMsIGVmZmVjdGl2ZWx5IGVuc3VyaW5nIHRoZSBkYXRhIGlzIGNvcnJlY3RseSBpbnRlcnByZXRlZCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBieXRlIG9yZGVyLiBJdCdzIGEgY2xlYW4gYW5kIGVmZmljaWVudCBmaXggdG8gYSBwb3RlbnRpYWwgbG9uZy10ZXJtIHByb2JsZW0uIEkgbGlrZSB0aGlzLiBCdXQsIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGNoZWNrIGlmIHRoaXMgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgdXNlZCBhbnl3aGVyZSBlbHNlLiBHb3R0YSBtYWtlIHN1cmUgd2UncmUgbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGZyb20gdGhpcyBjaGFuZ2UuIEFsd2F5cyBkb3VibGUgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA4OjQ1LjkwODI0MTIxOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTYzMTI1NjQwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncHRfZW50cnlfYXR0cmlidXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA4OjUxLjQ3MTM3NjMzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDkwNzcyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgZ3B0X2VudHJ5YCBVc2FnZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgZ2VhcmVkIHRvd2FyZHMgYSB0YXJnZXRlZCBzZWFyY2guIEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSBvZiBgZ3B0X2VudHJ5YC4gVGhpcyBpcyBsaWtlbHkgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGEgc3BlY2lmaWMgbW9kdWxlLCBmdW5jdGlvbiwgb3IgZGF0YSBzdHJ1Y3R1cmUgd2l0aGluIHRoaXMgY29kZSBiYXNlLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGJlc3Qgc2VhcmNoIHRvb2xzIHRvIHVzZSDigJMgZ3JlcCwgcmlwZ3JlcCwgdGhlIElERSdzIGJ1aWx0LWluIHNlYXJjaCB3aXRoIGFkdmFuY2VkIG9wdGlvbnMuLi4gSSBuZWVkIGEgc2VhcmNoIHRoYXQncyBwcmVjaXNlIGJ1dCBhbHNvIGNvdmVycyBwb3RlbnRpYWwgdmFyaWF0aW9ucy4gQW0gSSBsb29raW5nIGZvciBhIGxpdGVyYWwgc3RyaW5nIG1hdGNoLCBvciBzaG91bGQgSSBjb25zaWRlciByZWd1bGFyIGV4cHJlc3Npb25zIHRvIGFjY291bnQgZm9yIGRpZmZlcmVudCBjYXBpdGFsaXphdGlvbiBvciBuYW1pbmcgY29udmVudGlvbnMgKGBHUFRfRU5UUllgLCBgR3B0RW50cnlgLCBldGMuKT8gQWxzbywgSSBuZWVkIHRvIGNvbnNpZGVyIHdoZXJlIEkgc2hvdWxkIGJlIHNlYXJjaGluZy4gSXMgaXQgdGhlIGVudGlyZSBwcm9qZWN0LCBvciBhIHN1YnNldCBvZiBkaXJlY3RvcmllcyBiYXNlZCBvbiBteSBleGlzdGluZyBrbm93bGVkZ2U/IFRoZSBzY29wZSB3aWxsIHNpZ25pZmljYW50bHkgaW1wYWN0IGJvdGggdGhlIHRpbWUgdG8gcnVuIGFuZCB0aGUgbm9pc2UtdG8tc2lnbmFsIHJhdGlvIG9mIHRoZSByZXN1bHRzLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGRvY3VtZW50YXRpb24sIGFuZCBldmVuIHRlc3QgY2FzZXMsIGFzIHRob3NlIGFyZSBvZnRlbiB3aGVyZSB0aGVzZSB0eXBlcyBvZiB0aGluZ3MgYXJlIGRlZmluZWQgYW5kIHVzZWQuIExldCdzIGdldCBzZWFyY2hpbmcgYW5kIHNlZSB3aGF0IHdlIHVuY292ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MDMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowODo1NC41ODA0NTU5ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2OTg0NTk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncHRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjY5LSAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cXHRcXHRcXHRcXHRcXHQgZ3B0X2hlYWRlciAqZ3B0KVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNzMtXFx0c2l6ZV90IGNvdW50O1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0OlxcdGdwdF9lbnRyeSAqcHRlO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz0zMzQ9c3RhdGljIGludCBpc19ncHRfdmFsaWQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTY0IGxiYSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcXHRcXHRcXHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVxcdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQxNTpcXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVxcdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE2LVxcdFxcdHByX2RlYnVnKFxcXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXFxcblxcXCIpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQ2MDppc19wdGVfdmFsaWQoY29uc3QgZ3B0X2VudHJ5ICpwdGUsIGNvbnN0IHU2NCBsYXN0bGJhKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NTgwPXN0YXRpYyBpbnQgZmluZF92YWxpZF9ncHQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgZ3B0X2hlYWRlciAqKmdwdCxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcXHRcXHRcXHQgIGdwdF9lbnRyeSAqKnB0ZXMpXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXFx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4NTpcXHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cXHRsZWdhY3lfbWJyICpsZWdhY3ltYnI7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXFx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjcxNTpcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVxcdHUzMiBpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaD01NT10eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6Nzg6dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC03OS1cXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg0LVxcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4NTp9IF9fcGFja2VkIGdwdF9lbnRyeTtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowODo1OS4yNTAzMDc5NTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODIyMTc4Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR1BUIFBhcnRpdGlvbiBUYWJsZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgd2l0aGluIHRoZSBgZ3B0X2VudHJ5YCBzdHJ1Y3R1cmUgZnJvbSBhIGJpdGZpZWxkIHN0cnVjdCB0byBhIGBfX2xlNjRgIHR5cGUuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgYSBnb29kIG9uZSBhdCB0aGF0LiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBlbmRpYW5uZXNzIG9yIGxheW91dCBwcm9ibGVtcywgd2hpY2ggaXMgY3JpdGljYWwgd2hlbiBkZWFsaW5nIHdpdGggRUZJIEdVSUQgUGFydGl0aW9uIFRhYmxlcyAoR1BUcykuXG5cblRoZSByZWxldmFudCBmaWxlIGlzIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhpcyBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIEdQVCBwYXJ0aXRpb24gdGFibGVzLiBJIGNhbiBzZWUgdGhlIHJlbGV2YW5jZSwgZ2l2ZW4gdGhhdCB0aGlzIGlzIGEgY29yZSBjb21wb25lbnQgb2YgdGhlIGJsb2NrIGRldmljZSBpbnRlcmFjdGlvbiwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGhvdyB0aGUgc3lzdGVtIHVuZGVyc3RhbmRzIGFuZCB1dGlsaXplcyBzdG9yYWdlIGRldmljZXMuXG5cblRoZSBwYXRoIHRvIHRoaXMgY29kZSBpcyBzdHJhaWdodGZvcndhcmQ6IGEgYmxvY2sgZGV2aWNlIHdpdGggYSBHUFQgcGFydGl0aW9uIHRhYmxlLiBBbmQgdGhlIGVudHJ5IHBvaW50IGZvciBFRkkgcGFydGl0aW9uIHBhcnNpbmcgaXMgdGhlIGBlZmlfcGFydGl0aW9uYCBmdW5jdGlvbiwgYWxzbyBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AuXG5cbk5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgYmVpbmcgdXNlZC4gU2VlaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2Ugd2lsbCBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIGhvdyB0aGlzIGFmZmVjdHMgb3RoZXIgcmVsYXRlZCBzdHJ1Y3R1cmVzIG9yIGZ1bmN0aW9ucy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MDMuMDcyNDg5NDI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzQxMjEzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXR0cmlidXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL2VmaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOTowMy42NzU5MDk3NTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA2NTA4NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgLCBhbmQgSSdtIGEgYml0IHB1enpsZWQuIEkgd2FzIGV4cGVjdGluZyB0byBmaW5kIHJlZmVyZW5jZXMgdG8gdGhlIGBhdHRyaWJ1dGVzYCB2YXJpYWJsZSBpbiB0aGVyZSwgYnV0IGl0J3Mgbm90IHByZXNlbnQuIFRoYXQgc2VlbXMgb2RkLCByaWdodD8gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhhdCB2YXJpYWJsZSBpcyB1c2VkIGluIG90aGVyIHBsYWNlcyB3aXRoaW4gdGhlIGNvZGViYXNlLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB3aGVyZSBhIHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIGhvdyBpdCdzIHVzZWQsIGV2ZW4gaWYgaXQncyBub3QgaW4gdGhlIGV4cGVjdGVkIGxvY2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IHdpbGwgaGVscCBtZSB3aXRoIGFueSBjaGFuZ2VzIHRvIHRoZSBjb2RlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGBhdHRyaWJ1dGVzYCB0byBzZWUgd2hlcmUgaXQgY29tZXMgaW50byBwbGF5LiBJIGFtIHN1cmUgSSB3aWxsIGZpbmQgc29tZSBjb25uZWN0aW9ucyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDAyOCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjA3LjA4MjQyMTA4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNzM3NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0dHJpYnV0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svcGFydGl0aW9ucy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svcGFydGl0aW9ucy9lZmkuaD03OD10eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODItXFx0X19sZTY0IGVuZGluZ19sYmE7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4MzpcXHRfX2xlNjQgYXR0cmlidXRlcztcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg0LVxcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjA3LjIxNjE3NzcwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc5NTM2MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBHUFQgUGFydGl0aW9uIEVudHJ5IEF0dHJpYnV0ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoaXMgYGF0dHJpYnV0ZXNgIGZpZWxkIHdpdGhpbiB0aGUgYGdwdF9lbnRyeWAgc3RydWN0dXJlLiBJdCBpbml0aWFsbHkgc2VlbWVkIHVudXNlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIGFjdHVhbCBjb2RlLCBqdXN0IGRlZmluZWQgYXMgcGFydCBvZiB0aGUgc3RydWN0dXJlLiBCdXQgaG9sZCBvbiwgdGhlIGBzaXplb2YoZ3B0X2VudHJ5KWAgaXMgaW5kZWVkIHVzZWQsIHNwZWNpZmljYWxseSBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AsIHRoYXQncyBpbnRlcmVzdGluZy4gVGhlIGNvZGUgY2hlY2tzIGBpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKWAuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzaXplLiBCZWZvcmUsIHRoZSBgZ3B0X2VudHJ5YCBzaXplIHdhcyAxMjggYnl0ZXMsIGFuZCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpdCAqc3RpbGwqIGlzIDEyOCBieXRlcy4gR29vZCwgdGhhdCBtYXRjaGVzIG15IGludHVpdGlvbi4gU28sIHRoZSBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdhczpcbmBgYGNcbnR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnlfYXR0cmlidXRlcyB7XG5cdHU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxO1xuXHR1NjQgcmVzZXJ2ZWQ6NDc7XG4gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7XG59IF9fcGFja2VkIGdwdF9lbnRyeV9hdHRyaWJ1dGVzO1xuYGBgXG5cblRoYXQncyBhbiA4LWJ5dGUgc3RydWN0dXJlLCB3aGljaCBtYWtlcyBzZW5zZS4gQW5kIHRoZSBgX19sZTY0IGF0dHJpYnV0ZXM7YCBtZW1iZXIgaXMgYWxzbyA4IGJ5dGVzLiBTbyB0aGUgY2hhbmdlIHRvIHRoZSBgYXR0cmlidXRlc2AgZGVmaW5pdGlvbiBkaWRuJ3QgYWZmZWN0IHRoZSBvdmVyYWxsIGBncHRfZW50cnlgIHNpemUuIEkgd2FzIG9uIHRoZSByaWdodCB0cmFjayB0aGVyZS4gSG93ZXZlciwganVzdCBiZWNhdXNlIHRoZSBzaXplIGlzIGNvcnJlY3QgZG9lc24ndCBtZWFuIGl0J3MgcmlnaHQuIEknbSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGZvciBtb3JlIHVzZXMgb2YgYGF0dHJpYnV0ZXNgIHRvIGJlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjExLjc5NTcxNzAwNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxODYyMDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncHRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjY5LSAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cXHRcXHRcXHRcXHRcXHQgZ3B0X2hlYWRlciAqZ3B0KVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNzMtXFx0c2l6ZV90IGNvdW50O1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0OlxcdGdwdF9lbnRyeSAqcHRlO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz0zMzQ9c3RhdGljIGludCBpc19ncHRfdmFsaWQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTY0IGxiYSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcXHRcXHRcXHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVxcdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQxNTpcXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVxcdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE2LVxcdFxcdHByX2RlYnVnKFxcXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXFxcblxcXCIpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQ2MDppc19wdGVfdmFsaWQoY29uc3QgZ3B0X2VudHJ5ICpwdGUsIGNvbnN0IHU2NCBsYXN0bGJhKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NTgwPXN0YXRpYyBpbnQgZmluZF92YWxpZF9ncHQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgZ3B0X2hlYWRlciAqKmdwdCxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcXHRcXHRcXHQgIGdwdF9lbnRyeSAqKnB0ZXMpXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXFx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4NTpcXHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cXHRsZWdhY3lfbWJyICpsZWdhY3ltYnI7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXFx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjcxNTpcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVxcdHUzMiBpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaD01NT10eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6Nzg6dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC03OS1cXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg0LVxcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4NTp9IF9fcGFja2VkIGdwdF9lbnRyeTtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOToxNi42MTQzNDMwMTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MTkxOTMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIFR5cGUgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwcm9wb3NlZCBjaGFuZ2UgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJXYWl0IGEgbWludXRlLCBpZiBgYXR0cmlidXRlc2AgaXNuJ3QgYWN0dWFsbHkgKnVzZWQqIGFueXdoZXJlLCB0aGVuIGFsdGVyaW5nIGl0cyB0eXBlIHNob3VsZG4ndCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGF0IGFsbCwgcmlnaHQ/XCIgVGhlIG9ubHkgc2l0dWF0aW9uIHdoZXJlIHRoaXMgbWlnaHQgKm5vdCogYmUgdHJ1ZSBpcyBpZiB0aGUgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCBzdHJ1Y3Qgc29tZWhvdyBoYWQgYSBkaWZmZXJlbnQgc2l6ZSB0aGFuIDggYnl0ZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzLiBUaGlzIGNvdWxkIGhhcHBlbiBkdWUgdG8gYml0ZmllbGQgcGFja2luZyBydWxlcywgd2hpY2ggY291bGQgdGhlbiBhbHRlciB0aGUgYHNpemVvZihncHRfZW50cnkpYC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhhdCdzIHRoZSBjYXNlLiBMZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgOlxuXG5gYGBjXG50eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5X2F0dHJpYnV0ZXMge1xuXHR1NjQgcmVxdWlyZWRfdG9fZnVuY3Rpb246MTtcblx0dTY0IHJlc2VydmVkOjQ3O1xuICAgICAgICB1NjQgdHlwZV9ndWlkX3NwZWNpZmljOjE2O1xufSBfX3BhY2tlZCBncHRfZW50cnlfYXR0cmlidXRlcztcbmBgYFxuXG5BaGEhIEl0J3MgZ290IGBfX3BhY2tlZGAuIFRoYXQgc2hvdWxkIGZvcmNlIGl0IHRvIGJlIGV4YWN0bHkgOCBieXRlcywgcmVnYXJkbGVzcyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBTbywgaWYgaXQgaXMgaW5kZWVkIDggYnl0ZXMsIGFuZCBuZXZlciBhY3R1YWxseSBhY2Nlc3NlZCwgdGhlbiB0aGlzIHdob2xlIHRoaW5nIGlzIGVzc2VudGlhbGx5IGEgY29zbWV0aWMgY2hhbmdlIG9yIGNsZWFudXAgb3BlcmF0aW9uLlxuXG5Ob3csIEkgcmVhbGx5IG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IHdvcmsuIExldCdzIHRob3JvdWdobHkgc2VhcmNoIHRoZSBrZXJuZWwgY29kZSB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGlzIGBhdHRyaWJ1dGVzYCBmaWVsZCBpc24ndCBiZWluZyBhY2Nlc3NlZCBhbnl3aGVyZS4gSSBuZWVkIHRvIGJlIDEwMCUgc3VyZSBiZWZvcmUgSSBjb21lIHRvIGEgY29uY2x1c2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOToyMC45ODYyNjYwMzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4Nzg3ODU2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXFxcXC5hdHRyaWJ1dGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDYzNyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weT01MTE9ZGVmIHZpc2l0X2tlcm5lbF9yZW5kZXIoc2VsZiwgbm9kZSk6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5LTUzNS0gICAgY29kZSAgICAgID0gbGl0ZXJhbF9ibG9jay5hc3RleHQoKVxcbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHk6NTM2OiAgICBoYXNob2JqICAgPSBjb2RlLmVuY29kZSgndXRmLTgnKSAjICBzdHIobm9kZS5hdHRyaWJ1dGVzKVxcbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHktNTM3LSAgICBmbmFtZSAgICAgPSBwYXRoLmpvaW4oJyVzLSVzJyAlIChzcmNsYW5nLCBzaGExKGhhc2hvYmopLmhleGRpZ2VzdCgpKSlcXG4tLVxcbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHktNTQ2LVxcbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHk6NTQ3OiAgICBpbWdfbm9kZSA9IG5vZGVzLmltYWdlKG5vZGUucmF3c291cmNlLCAqKm5vZGUuYXR0cmlidXRlcylcXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5LTU0OC0gICAgaW1nX25vZGVbJ3VyaSddID0gcGF0aC5qb2luKHNlbGYuYnVpbGRlci5pbWdwYXRoLCBmbmFtZSArIHRtcF9leHQpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9yc3RGbGF0VGFibGUucHk9MTM2PWNsYXNzIExpc3RUYWJsZUJ1aWxkZXIob2JqZWN0KTpcXG4tLVxcbkRvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weS0xNzAtICAgICAgICAgICAgaWYgc3R1Yl9jb2x1bW5zOlxcbkRvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weToxNzE6ICAgICAgICAgICAgICAgIGNvbHNwZWMuYXR0cmlidXRlc1snc3R1YiddID0gMVxcbkRvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weS0xNzItICAgICAgICAgICAgICAgIHN0dWJfY29sdW1ucyAtPSAxXFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS92bWxpbnV4Lmxkcy5oLTg2LVxcdFxcdEVMRl9ERVRBSUxTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3ZtbGludXgubGRzLmg6ODc6XFx0XFx0LkFSTS5hdHRyaWJ1dGVzIDAgOiB7ICooLkFSTS5hdHRyaWJ1dGVzKSB9XFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vdm1saW51eC5sZHMuaC04OC1cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUz0yMT1TRUNUSU9OU1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TLTQwLVxcdFxcdCooLm5vdGUuR05VLXN0YWNrIC5ub3RlLmdudS5wcm9wZXJ0eSlcXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlM6NDE6XFx0XFx0KiguQVJNLmF0dHJpYnV0ZXMpXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TLTQyLVxcdH1cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TPTIwPVNFQ1RJT05TXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvMzIvdmRzby5sZHMuUy02MC1cXHRFTEZfREVUQUlMU1xcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TOjYxOlxcdC5BUk0uYXR0cmlidXRlcyAwIDogeyAqKC5BUk0uYXR0cmlidXRlcykgfVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TLTYyLVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUz0xNzQ9U0VDVElPTlNcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtMTg1LVxcdFxcdCooLmR5bnN5bSAuZHluc3RyIC5oYXNoIC5nbnUuaGFzaClcXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjE4NjpcXHRcXHQqKC5BUk0uYXR0cmlidXRlcylcXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TLTE4Ny1cXHR9XFxuLS1cXG5hcmNoL2hleGFnb24va2VybmVsL3ZtbGludXgubGRzLlM9MjY9U0VDVElPTlNcXG4tLVxcbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUy02Ni1cXHRFTEZfREVUQUlMU1xcbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUzo2NzpcXHQuaGV4YWdvbi5hdHRyaWJ1dGVzIDAgOiB7ICooLmhleGFnb24uYXR0cmlidXRlcykgfVxcbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUy02OC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92bWxpbnV4Lmxkcy5TPTQxPVNFQ1RJT05TXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdm1saW51eC5sZHMuUy0xNzgtXFx0XFx0KiguZHluYW1pYyAuZHluc3ltIC5keW5zdHIgLmhhc2ggLmdudS5oYXNoKVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92bWxpbnV4Lmxkcy5TOjE3OTpcXHRcXHQqKC5nbnUuYXR0cmlidXRlcylcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdm1saW51eC5sZHMuUy0xODAtXFx0XFx0Kigub3B0aW9ucylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL3Zkc28vdmRzby5sZHMuUz0xMj1TRUNUSU9OU1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvdmRzby92ZHNvLmxkcy5TLTQzLVxcdC9ESVNDQVJEL1xcdDoge1xcbmFyY2gvbG9vbmdhcmNoL3Zkc28vdmRzby5sZHMuUzo0NDpcXHRcXHQqKC5nbnUuYXR0cmlidXRlcylcXG5hcmNoL2xvb25nYXJjaC92ZHNvL3Zkc28ubGRzLlMtNDUtXFx0XFx0Kigubm90ZS5HTlUtc3RhY2spXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3ZtbGludXgubGRzLlM9NDM9U0VDVElPTlNcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvdm1saW51eC5sZHMuUy0yMzgtXFx0XFx0KiguTUlQUy5vcHRpb25zKVxcbmFyY2gvbWlwcy9rZXJuZWwvdm1saW51eC5sZHMuUzoyMzk6XFx0XFx0KiguZ251LmF0dHJpYnV0ZXMpXFxuYXJjaC9taXBzL2tlcm5lbC92bWxpbnV4Lmxkcy5TLTI0MC1cXHRcXHQqKC5vcHRpb25zKVxcbi0tXFxuYXJjaC9taXBzL3Zkc28vdmRzby5sZHMuUz0yMT1TRUNUSU9OU1xcbi0tXFxuYXJjaC9taXBzL3Zkc28vdmRzby5sZHMuUy02NS1cXHRcXHQqKC5NSVBTLmFiaWZsYWdzKVxcbmFyY2gvbWlwcy92ZHNvL3Zkc28ubGRzLlM6NjY6XFx0XFx0KiguZ251LmF0dHJpYnV0ZXMpXFxuYXJjaC9taXBzL3Zkc28vdmRzby5sZHMuUy02Ny1cXHRcXHQqKC5ub3RlLkdOVS1zdGFjaylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUz00OD1TRUNUSU9OU1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC92bWxpbnV4Lmxkcy5TLTQwNy1cXHRcXHQqKC5nbnUudmVyc2lvbiopXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC92bWxpbnV4Lmxkcy5TOjQwODpcXHRcXHQqKC5nbnUuYXR0cmlidXRlcylcXG5hcmNoL3Bvd2VycGMva2VybmVsL3ZtbGludXgubGRzLlMtNDA5LVxcdFxcdCooLmVoX2ZyYW1lKVxcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUz0yNj1TRUNUSU9OU1xcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUy0xNzAtXFx0RUxGX0RFVEFJTFNcXG5hcmNoL3Jpc2N2L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjE3MTpcXHQucmlzY3YuYXR0cmlidXRlcyAwIDogeyAqKC5yaXNjdi5hdHRyaWJ1dGVzKSB9XFxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUy0xNzItXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3Zkc28vdmRzby5sZHMuUz0xNj1TRUNUSU9OU1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvL3Zkc28ubGRzLlMtNjUtXFx0LmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfVxcbmFyY2gvczM5MC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TOjY2OlxcdC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH1cXG5hcmNoL3MzOTAva2VybmVsL3Zkc28vdmRzby5sZHMuUy02Ny1cXG4tLVxcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYz0xMzQ9c3RhdGljIGludCBodl92dGxfYnJpbmd1cF92Y3B1KHUzMiB0YXJnZXRfdnBfaW5kZXgsIGludCBjcHUsIHU2NCBlaXBfaWdub3JlZClcXG4tLVxcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMDEtXFx0aW5wdXQtXFx1MDAzZXZwX2NvbnRleHQuY3MubGltaXQgPSAweGZmZmZmZmZmO1xcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYzoyMDI6XFx0aW5wdXQtXFx1MDAzZXZwX2NvbnRleHQuY3MuYXR0cmlidXRlcyA9IDB4YTA5YjtcXG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmMtMjAzLVxcdC8qIE5vbi1zeXN0ZW0gZGVzYyAoNjRiaXQpLCBkYXRhLCBwcmVzZW50LCBncmFudWxhcml0eSwgZGVmYXVsdCAqL1xcbi0tXFxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIwNi1cXHRpbnB1dC1cXHUwMDNldnBfY29udGV4dC5zcy5saW1pdCA9IDB4ZmZmZmZmZmY7XFxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jOjIwNzpcXHRpbnB1dC1cXHUwMDNldnBfY29udGV4dC5zcy5hdHRyaWJ1dGVzID0gMHhjMDkzO1xcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMDgtXFxuLS1cXG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmMtMjEyLVxcdGlucHV0LVxcdTAwM2V2cF9jb250ZXh0LmxkdHIubGltaXQgPSBodl92dGxfc3lzdGVtX2Rlc2NfbGltaXQobGR0KTtcXG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmM6MjEzOlxcdGlucHV0LVxcdTAwM2V2cF9jb250ZXh0LmxkdHIuYXR0cmlidXRlcyA9IDB4ODI7XFxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIxNC1cXG4tLVxcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMTgtXFx0aW5wdXQtXFx1MDAzZXZwX2NvbnRleHQudHIubGltaXQgPSBodl92dGxfc3lzdGVtX2Rlc2NfbGltaXQodHNzKTtcXG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmM6MjE5OlxcdGlucHV0LVxcdTAwM2V2cF9jb250ZXh0LnRyLmF0dHJpYnV0ZXMgPSAweDhiO1xcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMjAtXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L3NneC9pb2N0bC5jPTQ2Nz1zdGF0aWMgaW50IHNneF9lbmNsX2luaXQoc3RydWN0IHNneF9lbmNsICplbmNsLCBzdHJ1Y3Qgc2d4X3NpZ3N0cnVjdCAqc2lnc3RydWN0LFxcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYy00ODYtXFx0ICogb3B0IHRvIHNpZ24gd2l0aCBBVlggYml0IGluIHhmcm0sIGJ1dCBzdGlsbCBiZSBsb2FkYWJsZSBvbiBhIHBsYXRmb3JtXFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYzo0ODc6XFx0ICogd2l0aG91dCBpdCBpZiB0aGUgc2lnc3RydWN0LVxcdTAwM2Vib2R5LmF0dHJpYnV0ZXNfbWFzayBkb2VzIG5vdCB0dXJuIHRoYXRcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L3NneC9pb2N0bC5jLTQ4OC1cXHQgKiBiaXQgb24uXFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYy00ODktXFx0ICovXFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYzo0OTA6XFx0aWYgKHNpZ3N0cnVjdC1cXHUwMDNlYm9keS5hdHRyaWJ1dGVzIFxcdTAwMjYgc2lnc3RydWN0LVxcdTAwM2Vib2R5LmF0dHJpYnV0ZXNfbWFzayBcXHUwMDI2XFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYy00OTEtXFx0ICAgIHNneF9hdHRyaWJ1dGVzX3Jlc2VydmVkX21hc2spXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTgwMjE9Ym9vbCBrdm1fYXJjaF9wcmVfc2V0X21lbW9yeV9hdHRyaWJ1dGVzKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtODA3My1cXHQvKiBVbm1hcCB0aGUgb2xkIGF0dHJpYnV0ZSBwYWdlLiAqL1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODA3NDpcXHRpZiAocmFuZ2UtXFx1MDAzZWFyZy5hdHRyaWJ1dGVzIFxcdTAwMjYgS1ZNX01FTU9SWV9BVFRSSUJVVEVfUFJJVkFURSlcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTgwNzUtXFx0XFx0cmFuZ2UtXFx1MDAzZWF0dHJfZmlsdGVyID0gS1ZNX0ZJTFRFUl9TSEFSRUQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTgxMDE9Ym9vbCBrdm1fYXJjaF9wb3N0X3NldF9tZW1vcnlfYXR0cmlidXRlcyhzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTgxMDMte1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODEwNDpcXHR1bnNpZ25lZCBsb25nIGF0dHJzID0gcmFuZ2UtXFx1MDAzZWFyZy5hdHRyaWJ1dGVzO1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtODEwNS1cXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90ID0gcmFuZ2UtXFx1MDAzZXNsb3Q7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRwYy5jPTEwMz1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9hY250cGMgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRwYy5jLTEzMi1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHBjLmM6MTMzOlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHBjLmMtMTM0LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hY250c2EuYz04OT1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9hY250c2EgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRzYS5jLTExOS1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmM6MTIwOlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmMtMTIxLVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hcG9sbG8uYz0xMDE9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYXBvbGxvID0ge1xcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hcG9sbG8uYy0xMzEtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Fwb2xsby5jOjEzMjpcXHQuYXR0cmlidXRlcyA9IHtcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Fwb2xsby5jLTEzMy1cXHRcXHQuYXR0cnMgPSBzeW50aF9hdHRycyxcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYXVkcHRyLmM9OTI9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYXVkcHRyID0ge1xcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hdWRwdHIuYy0xMjItXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2F1ZHB0ci5jOjEyMzpcXHQuYXR0cmlidXRlcyA9IHtcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2F1ZHB0ci5jLTEyNC1cXHRcXHQuYXR0cnMgPSBzeW50aF9hdHRycyxcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYm5zLmM9ODU9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYm5zID0ge1xcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9ibnMuYy0xMTUtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jOjExNjpcXHQuYXR0cmlidXRlcyA9IHtcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jLTExNy1cXHRcXHQuYXR0cnMgPSBzeW50aF9hdHRycyxcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjZXh0LmM9MTE1PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2RlY2V4dCA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjZXh0LmMtMTQ2LVxcdH0sXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNleHQuYzoxNDc6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNleHQuYy0xNDgtXFx0XFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3BjLmM9MjEzPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2RlY19wYyA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjcGMuYy0yNDItXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3BjLmM6MjQzOlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjcGMuYy0yNDQtXFx0XFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3Rsay5jPTEyMj1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9kZWN0bGsgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3Rsay5jLTE1NS1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjdGxrLmM6MTU2OlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjdGxrLmMtMTU3LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmM9MTE5PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2R0bGsgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2R0bGsuYy0xNDgtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2R0bGsuYzoxNDk6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmMtMTUwLVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdW1teS5jPTEwNT1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9kdW1teSA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZHVtbXkuYy0xMzUtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2R1bW15LmM6MTM2OlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZHVtbXkuYy0xMzctXFx0XFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2tleXBjLmM9OTQ9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfa2V5cGMgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2tleXBjLmMtMTIzLVxcdH0sXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9rZXlwYy5jOjEyNDpcXHQuYXR0cmlidXRlcyA9IHtcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2tleXBjLmMtMTI1LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmM9MTAxPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2x0bGsgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2x0bGsuYy0xMzEtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2x0bGsuYzoxMzI6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmMtMTMzLVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9zb2Z0LmM9MTI4PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX3NvZnQgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYy0xNTYtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYzoxNTc6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9zb2Z0LmMtMTU4LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9zcGtvdXQuYz05Mj1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9zcGtvdXQgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3Nwa291dC5jLTEyMi1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmM6MTIzOlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmMtMTI0LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jPTkwPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX3R4cHJ0ID0ge1xcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jLTEyMC1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfdHhwcnQuYzoxMjE6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jLTEyMi1cXHRcXHQuYXR0cnMgPSBzeW50aF9hdHRycyxcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYz0zNjc9ZWZpX3N0YXR1c190IGVmaV9hZGp1c3RfbWVtb3J5X3JhbmdlX3Byb3RlY3Rpb24odW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYy00MjMtXFx0XFx0ICAgICBkZXNjLmdjZF9tZW1vcnlfdHlwZSAhPSBFZmlHY2RNZW1vcnlUeXBlTW9yZVJlbGlhYmxlKSB8fFxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYzo0MjQ6XFx0XFx0ICAgIChkZXNjLmF0dHJpYnV0ZXMgXFx1MDAyNiAoRUZJX01FTU9SWV9STyB8IEVGSV9NRU1PUllfWFApKSA9PSAwKVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYy00MjUtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM9MTM5PXN0YXRpYyBsb25nIGVmaV9ydW50aW1lX2dldF92YXJpYWJsZSh1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0xNzEtXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjE3MjpcXHRhdCA9IGdldHZhcmlhYmxlLmF0dHJpYnV0ZXMgPyBcXHUwMDI2YXR0ciA6IE5VTEw7XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTE3My1cXHRkeiA9IGdldHZhcmlhYmxlLmRhdGFfc2l6ZSA/IFxcdTAwMjZkYXRhc2l6ZSA6IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtMjE0LVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYzoyMTU6XFx0aWYgKGF0IFxcdTAwMjZcXHUwMDI2IHB1dF91c2VyKGF0dHIsIGdldHZhcmlhYmxlLmF0dHJpYnV0ZXMpKSB7XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTIxNi1cXHRcXHRydiA9IC1FRkFVTFQ7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM9MjI5PXN0YXRpYyBsb25nIGVmaV9ydW50aW1lX3NldF92YXJpYWJsZSh1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0yNTktXFx0c3RhdHVzID0gZWZpLnNldF92YXJpYWJsZShuYW1lLCBcXHUwMDI2dmVuZG9yX2d1aWQsXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjI2MDpcXHRcXHRcXHRcXHRzZXR2YXJpYWJsZS5hdHRyaWJ1dGVzLFxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0yNjEtXFx0XFx0XFx0XFx0c2V0dmFyaWFibGUuZGF0YV9zaXplLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYz01NjM9c3RhdGljIGxvbmcgZWZpX3J1bnRpbWVfcXVlcnlfdmFyaWFibGVpbmZvKHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTU3NS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM6NTc2OlxcdHN0YXR1cyA9IGVmaS5xdWVyeV92YXJpYWJsZV9pbmZvKHF1ZXJ5dmFyaWFibGVpbmZvLmF0dHJpYnV0ZXMsXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTU3Ny1cXHRcXHRcXHRcXHRcXHQgXFx1MDAyNm1heF9zdG9yYWdlLCBcXHUwMDI2cmVtYWluaW5nLCBcXHUwMDI2bWF4X3NpemUpO1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9nb29nbGUvZ3NtaS5jPTQzMj1zdGF0aWMgZWZpX3N0YXR1c190IGdzbWlfc2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZ29vZ2xlL2dzbWkuYy00NDEtXFx0XFx0LmRhdGFfbGVuID0gKHUzMilkYXRhX3NpemUsXFxuZHJpdmVycy9maXJtd2FyZS9nb29nbGUvZ3NtaS5jOjQ0MjpcXHRcXHQuYXR0cmlidXRlcyA9IEVGSV9WQVJJQUJMRV9OT05fVk9MQVRJTEUgfFxcbmRyaXZlcnMvZmlybXdhcmUvZ29vZ2xlL2dzbWkuYy00NDMtXFx0XFx0XFx0ICAgICAgRUZJX1ZBUklBQkxFX0JPT1RTRVJWSUNFX0FDQ0VTUyB8XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz03MzE9dm9pZCBod3NzX2J1aWxkX2Zhc3Rfc2VxdWVuY2Uoc3RydWN0IGRjICpkYyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTg4MC1cXHRcXHRcXHRcXHRjdXJyZW50X3BpcGUtXFx1MDAzZXBsYW5lX3Jlcy5odWJwO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jOjg4MTpcXHRcXHRcXHRibG9ja19zZXF1ZW5jZVsqbnVtX3N0ZXBzXS5wYXJhbXMuaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXMgPVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTg4Mi1cXHRcXHRcXHRcXHRcXHUwMDI2Y3VycmVudF9waXBlLVxcdTAwM2VzdHJlYW0tXFx1MDAzZWN1cnNvcl9hdHRyaWJ1dGVzO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtODg3LVxcdFxcdFxcdFxcdGN1cnJlbnRfcGlwZS1cXHUwMDNlcGxhbmVfcmVzLmRwcDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzo4ODg6XFx0XFx0XFx0YmxvY2tfc2VxdWVuY2VbKm51bV9zdGVwc10ucGFyYW1zLmRwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXMgPVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTg4OS1cXHRcXHRcXHRcXHRcXHUwMDI2Y3VycmVudF9waXBlLVxcdTAwM2VzdHJlYW0tXFx1MDAzZWN1cnNvcl9hdHRyaWJ1dGVzO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM9MzU2OD12b2lkIGh3c3NfaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXModW5pb24gYmxvY2tfc2VxdWVuY2VfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy0zNTcwLVxcdHN0cnVjdCBodWJwICpodWJwID0gcGFyYW1zLVxcdTAwM2VodWJwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuaHVicDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzozNTcxOlxcdGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyAqYXR0cmlidXRlcyA9IHBhcmFtcy1cXHUwMDNlaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXM7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtMzU3Mi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jPTM1Nzc9dm9pZCBod3NzX2RwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXModW5pb24gYmxvY2tfc2VxdWVuY2VfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy0zNTc5LVxcdHN0cnVjdCBkcHAgKmRwcCA9IHBhcmFtcy1cXHUwMDNlZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuZHBwO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jOjM1ODA6XFx0c3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzICphdHRyaWJ1dGVzID0gcGFyYW1zLVxcdTAwM2VkcHBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTM1ODEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz00NjkyPXZvaWQgaHdzc19hZGRfaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXMoc3RydWN0IGJsb2NrX3NlcXVlbmNlX3N0YXRlICpzZXFfc3RhdGUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy00Njk4LVxcdFxcdHNlcV9zdGF0ZS1cXHUwMDNlc3RlcHNbKnNlcV9zdGF0ZS1cXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmh1YnAgPSBodWJwO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jOjQ2OTk6XFx0XFx0c2VxX3N0YXRlLVxcdTAwM2VzdGVwc1sqc2VxX3N0YXRlLVxcdTAwM2VudW1fc3RlcHNdLnBhcmFtcy5odWJwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtNDcwMC1cXHRcXHQoKnNlcV9zdGF0ZS1cXHUwMDNlbnVtX3N0ZXBzKSsrO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM9NDcwND12b2lkIGh3c3NfYWRkX2RwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXMoc3RydWN0IGJsb2NrX3NlcXVlbmNlX3N0YXRlICpzZXFfc3RhdGUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy00NzEwLVxcdFxcdHNlcV9zdGF0ZS1cXHUwMDNlc3RlcHNbKnNlcV9zdGF0ZS1cXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuZHBwID0gZHBwO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jOjQ3MTE6XFx0XFx0c2VxX3N0YXRlLVxcdTAwM2VzdGVwc1sqc2VxX3N0YXRlLVxcdTAwM2VudW1fc3RlcHNdLnBhcmFtcy5kcHBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy00NzEyLVxcdFxcdCgqc2VxX3N0YXRlLVxcdTAwM2VudW1fc3RlcHMpKys7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvYWN4LmM9ODI4PWludCB3bDEyNTFfYWN4X21lbV9jZmcoc3RydWN0IHdsMTI1MSAqd2wpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvYWN4LmMtODU3LVxcdFxcdG1lbV9jb25mLVxcdTAwM2V0eF9xdWV1ZV9jb25maWdbaV0ubnVtX2Rlc2NzID0gQUNYX1RYX0RFU0NfREVGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9hY3guYzo4NTg6XFx0XFx0bWVtX2NvbmYtXFx1MDAzZXR4X3F1ZXVlX2NvbmZpZ1tpXS5hdHRyaWJ1dGVzID0gaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvYWN4LmMtODU5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYz04NDA9c3RhdGljIGJsa19zdGF0dXNfdCBudm1lX3NldHVwX2Rpc2NhcmQoc3RydWN0IG52bWVfbnMgKm5zLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTkwMS1cXHRjbW5kLVxcdTAwM2Vkc20ubnIgPSBjcHVfdG9fbGUzMihzZWdtZW50cyAtIDEpO1xcbmRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYzo5MDI6XFx0Y21uZC1cXHUwMDNlZHNtLmF0dHJpYnV0ZXMgPSBjcHVfdG9fbGUzMihOVk1FX0RTTUdNVF9BRCk7XFxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTkwMy1cXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWJkZXYuYz00MTA9c3RhdGljIHZvaWQgbnZtZXRfYmRldl9leGVjdXRlX2RzbShzdHJ1Y3QgbnZtZXRfcmVxICpyZXEpXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1iZGV2LmMtNDE0LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWJkZXYuYzo0MTU6XFx0c3dpdGNoIChsZTMyX3RvX2NwdShyZXEtXFx1MDAzZWNtZC1cXHUwMDNlZHNtLmF0dHJpYnV0ZXMpKSB7XFxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtYmRldi5jLTQxNi1cXHRjYXNlIE5WTUVfRFNNR01UX0FEOlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtZmlsZS5jPTMwNz1zdGF0aWMgdm9pZCBudm1ldF9maWxlX2RzbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWZpbGUuYy0zMTAtXFxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtZmlsZS5jOjMxMTpcXHRzd2l0Y2ggKGxlMzJfdG9fY3B1KHJlcS1cXHUwMDNlY21kLVxcdTAwM2Vkc20uYXR0cmlidXRlcykpIHtcXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1maWxlLmMtMzEyLVxcdGNhc2UgTlZNRV9EU01HTVRfQUQ6XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9jb24zMjcwLmM9MTMyOT1zdGF0aWMgdm9pZCB0dHkzMjcwX2luc2VydF9jaGFyYWN0ZXJzKHN0cnVjdCB0dHkzMjcwICp0cCwgaW50IG4pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9jb24zMjcwLmMtMTM0Ni1cXHRcXHRsaW5lLVxcdTAwM2VjZWxsc1t0cC1cXHUwMDNlY3ggKyBuXS5jaGFyYWN0ZXIgPSAnICc7XFxuZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3MC5jOjEzNDc6XFx0XFx0bGluZS1cXHUwMDNlY2VsbHNbdHAtXFx1MDAzZWN4ICsgbl0uYXR0cmlidXRlcyA9IHRwLVxcdTAwM2VhdHRyaWJ1dGVzO1xcbmRyaXZlcnMvczM5MC9jaGFyL2NvbjMyNzAuYy0xMzQ4LVxcdH1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vcGtleV9hcGkuYz0yNzY9c3RhdGljIGludCBwa2V5X2lvY3RsX3ZlcmlmeWtleShzdHJ1Y3QgcGtleV92ZXJpZnlrZXkgX191c2VyICp1dmspXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmMtMjkzLVxcdFxcdHJjID0gLUVJTlZBTDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmM6Mjk0OlxcdGt2ay5hdHRyaWJ1dGVzID0gUEtFWV9WRVJJRllfQVRUUl9BRVM7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9wa2V5X2FwaS5jLTI5NS1cXHRrdmsua2V5c2l6ZSA9ICh1MTYpa2V5Yml0c2l6ZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmMtMjk2LVxcdGlmIChmbGFncyBcXHUwMDI2IFBLRVlfRkxBR1NfTUFUQ0hfQUxUX01LVlApXFxuZHJpdmVycy9zMzkwL2NyeXB0by9wa2V5X2FwaS5jOjI5NzpcXHRcXHRrdmsuYXR0cmlidXRlcyB8PSBQS0VZX1ZFUklGWV9BVFRSX09MRF9NS1ZQO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vcGtleV9hcGkuYy0yOTgtXFx0aWYgKCFyYyBcXHUwMDI2XFx1MDAyNiBjb3B5X3RvX3VzZXIodXZrLCBcXHUwMDI2a3ZrLCBzaXplb2Yoa3ZrKSkpXFxuLS1cXG5kcml2ZXJzL3VzYi90eXBlYy91Y3NpL3BzeS5jPTM1PXN0YXRpYyBpbnQgdWNzaV9wc3lfZ2V0X3Njb3BlKHN0cnVjdCB1Y3NpX2Nvbm5lY3RvciAqY29uLFxcbi0tXFxuZHJpdmVycy91c2IvdHlwZWMvdWNzaS9wc3kuYy00NS1cXG5kcml2ZXJzL3VzYi90eXBlYy91Y3NpL3BzeS5jOjQ2OlxcdFxcdGlmIChjb24tXFx1MDAzZXVjc2ktXFx1MDAzZWNhcC5hdHRyaWJ1dGVzIFxcdTAwMjYgbWFzaylcXG5kcml2ZXJzL3VzYi90eXBlYy91Y3NpL3BzeS5jLTQ3LVxcdFxcdFxcdHNjb3BlID0gUE9XRVJfU1VQUExZX1NDT1BFX1NZU1RFTTtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jPTQzMT1zdGF0aWMgdm9pZCBzdGlfZHVtcF9vdXRwdHIoc3RydWN0IHN0aV9zdHJ1Y3QgKnN0aSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jLTQzOS1cXHRcXHQgc3RpLVxcdTAwM2VzdGlfZGF0YS1cXHUwMDNlaW5xX291dHB0ci5wbGFuZXMsXFxuZHJpdmVycy92aWRlby9zdGljb3JlLmM6NDQwOlxcdFxcdCBzdGktXFx1MDAzZXN0aV9kYXRhLVxcdTAwM2VpbnFfb3V0cHRyLmF0dHJpYnV0ZXMpO1xcbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jLTQ0MS19XFxuLS1cXG5mcy9vcmFuZ2Vmcy9uYW1laS5jPTE4PXN0YXRpYyBpbnQgb3JhbmdlZnNfY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuZnMvb3JhbmdlZnMvbmFtZWkuYy00MC1cXG5mcy9vcmFuZ2Vmcy9uYW1laS5jOjQxOlxcdGZpbGxfZGVmYXVsdF9zeXNfYXR0cnMobmV3X29wLVxcdTAwM2V1cGNhbGwucmVxLmNyZWF0ZS5hdHRyaWJ1dGVzLCBtb2RlKTtcXG5mcy9vcmFuZ2Vmcy9uYW1laS5jLTQyLVxcbi0tXFxuZnMvb3JhbmdlZnMvbmFtZWkuYz0yMTU9c3RhdGljIGludCBvcmFuZ2Vmc19zeW1saW5rKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuZnMvb3JhbmdlZnMvbmFtZWkuYy0yNDEtXFxuZnMvb3JhbmdlZnMvbmFtZWkuYzoyNDI6XFx0ZmlsbF9kZWZhdWx0X3N5c19hdHRycyhuZXdfb3AtXFx1MDAzZXVwY2FsbC5yZXEuc3ltLmF0dHJpYnV0ZXMsIG1vZGUpO1xcbmZzL29yYW5nZWZzL25hbWVpLmMtMjQzLVxcbi0tXFxuZnMvb3JhbmdlZnMvbmFtZWkuYz0zMDA9c3RhdGljIHN0cnVjdCBkZW50cnkgKm9yYW5nZWZzX21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcXG4tLVxcbmZzL29yYW5nZWZzL25hbWVpLmMtMzE1LVxcbmZzL29yYW5nZWZzL25hbWVpLmM6MzE2OlxcdGZpbGxfZGVmYXVsdF9zeXNfYXR0cnMobmV3X29wLVxcdTAwM2V1cGNhbGwucmVxLm1rZGlyLmF0dHJpYnV0ZXMsIG1vZGUpO1xcbmZzL29yYW5nZWZzL25hbWVpLmMtMzE3LVxcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYz0yMzY9aW50IG9yYW5nZWZzX2lub2RlX2dldGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgaW50IGZsYWdzKVxcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zMDEtXFx0XFx0cmV0ID0gb3JhbmdlZnNfaW5vZGVfaXNfc3RhbGUoaW5vZGUsXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozMDI6XFx0XFx0ICAgIFxcdTAwMjZuZXdfb3AtXFx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzAzLVxcdFxcdCAgICBuZXdfb3AtXFx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5saW5rX3RhcmdldCk7XFxuLS1cXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMxMC1cXHR0eXBlID0gb3JhbmdlZnNfaW5vZGVfdHlwZShuZXdfb3AtXFx1MDAzZVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzExOlxcdCAgICBkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5vYmp0eXBlKTtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMxMi1cXHRzd2l0Y2ggKHR5cGUpIHtcXG4tLVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzE0LVxcdFxcdGlub2RlLVxcdTAwM2VpX2ZsYWdzID0gb3JhbmdlZnNfaW5vZGVfZmxhZ3MoXFx1MDAyNm5ld19vcC1cXHUwMDNlXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozMTU6XFx0XFx0ICAgIGRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzKTtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMxNi1cXHRcXHRpZiAoZmxhZ3MpIHtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMxNy1cXHRcXHRcXHRpbm9kZV9zaXplID0gKGxvZmZfdCluZXdfb3AtXFx1MDAzZVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzE4OlxcdFxcdFxcdCAgICBkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5zaXplO1xcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzE5LVxcdFxcdFxcdGlub2RlLVxcdTAwM2VpX3NpemUgPSBpbm9kZV9zaXplO1xcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNTYtXFx0aW5vZGUtXFx1MDAzZWlfdWlkID0gbWFrZV9rdWlkKFxcdTAwMjZpbml0X3VzZXJfbnMsIG5ld19vcC1cXHUwMDNlXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozNTc6XFx0ICAgIGRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLm93bmVyKTtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM1OC1cXHRpbm9kZS1cXHUwMDNlaV9naWQgPSBtYWtlX2tnaWQoXFx1MDAyNmluaXRfdXNlcl9ucywgbmV3X29wLVxcdTAwM2VcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjM1OTpcXHQgICAgZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMuZ3JvdXApO1xcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzYwLVxcdGlub2RlX3NldF9hdGltZShpbm9kZSxcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjM2MTpcXHRcXHRcXHQodGltZTY0X3QpbmV3X29wLVxcdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5hdGltZSxcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM2Mi1cXHRcXHRcXHQwKTtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM2My1cXHRpbm9kZV9zZXRfbXRpbWUoaW5vZGUsXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozNjQ6XFx0XFx0XFx0KHRpbWU2NF90KW5ld19vcC1cXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMubXRpbWUsXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNjUtXFx0XFx0XFx0MCk7XFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNjYtXFx0aW5vZGVfc2V0X2N0aW1lKGlub2RlLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzY3OlxcdFxcdFxcdCh0aW1lNjRfdCluZXdfb3AtXFx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLmN0aW1lLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzY4LVxcdFxcdFxcdDApO1xcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNzEtXFx0aW5vZGUtXFx1MDAzZWlfbW9kZSA9IHR5cGUgfCAoaXNfcm9vdF9oYW5kbGUoaW5vZGUpID8gU19JU1ZUWCA6IDApIHxcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjM3MjpcXHQgICAgb3JhbmdlZnNfaW5vZGVfcGVybXMoXFx1MDAyNm5ld19vcC1cXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMpO1xcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzczLVxcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYz0zODQ9aW50IG9yYW5nZWZzX2lub2RlX2NoZWNrX2NoYW5nZWQoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtNDA1LVxcdHJldCA9IG9yYW5nZWZzX2lub2RlX2lzX3N0YWxlKGlub2RlLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6NDA2OlxcdCAgICBcXHUwMDI2bmV3X29wLVxcdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcyxcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTQwNy1cXHQgICAgbmV3X29wLVxcdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIubGlua190YXJnZXQpO1xcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYz00MTc9aW50IG9yYW5nZWZzX2lub2RlX3NldGF0dHIoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtNDMxLVxcdGNvcHlfYXR0cmlidXRlc19mcm9tX2lub2RlKGlub2RlLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6NDMyOlxcdCAgICBcXHUwMDI2bmV3X29wLVxcdTAwM2V1cGNhbGwucmVxLnNldGF0dHIuYXR0cmlidXRlcyk7XFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy00MzMtXFx0b3JhbmdlZnNfaW5vZGUtXFx1MDAzZWF0dHJfdmFsaWQgPSAwO1xcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6NDM0OlxcdGlmICghbmV3X29wLVxcdTAwM2V1cGNhbGwucmVxLnNldGF0dHIuYXR0cmlidXRlcy5tYXNrKSB7XFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy00MzUtXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jYWNoZWluZm8uaD0xMjI9c3RhdGljIGlubGluZSBzdHJ1Y3QgY2FjaGVpbmZvICpnZXRfY3B1X2NhY2hlaW5mb19sZXZlbChpbnQgY3B1LCBpbnQgbGV2ZWwpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NhY2hlaW5mby5oLTEzMC1cXHRcXHRpZiAoY2ktXFx1MDAzZWluZm9fbGlzdFtpXS5sZXZlbCA9PSBsZXZlbCkge1xcbmluY2x1ZGUvbGludXgvY2FjaGVpbmZvLmg6MTMxOlxcdFxcdFxcdGlmIChjaS1cXHUwMDNlaW5mb19saXN0W2ldLmF0dHJpYnV0ZXMgXFx1MDAyNiBDQUNIRV9JRClcXG5pbmNsdWRlL2xpbnV4L2NhY2hlaW5mby5oLTEzMi1cXHRcXHRcXHRcXHRyZXR1cm4gXFx1MDAyNmNpLVxcdTAwM2VpbmZvX2xpc3RbaV07XFxuLS1cXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYz0yODQ9dTE2IGhwaV9mb3JtYXRfY3JlYXRlKHN0cnVjdCBocGlfZm9ybWF0ICpwX2Zvcm1hdCwgdTE2IGNoYW5uZWxzLCB1MTYgZm9ybWF0LFxcbi0tXFxuc291bmQvcGNpL2FzaWhwaS9ocGlmdW5jLmMtMzY4LVxcdFxcdH1cXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYzozNjk6XFx0XFx0Zm10LmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTM3MC1cXHRcXHRicmVhaztcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYy0zNzEtXFx0ZGVmYXVsdDpcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYzozNzI6XFx0XFx0Zm10LmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTM3My1cXHR9XFxuLS1cXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYz0xMDI2PXUxNiBocGlfaW5zdHJlYW1fYW5jaWxsYXJ5X3Jlc2V0KHUzMiBoX2luc3RyZWFtLCB1MTYgYnl0ZXNfcGVyX2ZyYW1lLFxcbi0tXFxuc291bmQvcGNpL2FzaWhwaS9ocGlmdW5jLmMtMTAzNC1cXHRcXHRyZXR1cm4gSFBJX0VSUk9SX0lOVkFMSURfSEFORExFO1xcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jOjEwMzU6XFx0aG0udS5kLnUuZGF0YS5mb3JtYXQuYXR0cmlidXRlcyA9IGJ5dGVzX3Blcl9mcmFtZTtcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYy0xMDM2LVxcdGhtLnUuZC51LmRhdGEuZm9ybWF0LmZvcm1hdCA9IChtb2RlIFxcdTAwM2NcXHUwMDNjIDgpIHwgKGFsaWdubWVudCBcXHUwMDI2IDB4ZmYpO1xcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM9ODE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXZzX3NwZWMgc2tsX2Rlc2MgPSB7XFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04MTktXFx0LmNvcmVfaW5pdF9tYXNrID0gMSxcXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYzo4MjA6XFx0LmF0dHJpYnV0ZXMgPSBBVlNfUExBVEFUVFJfQ0xETUEsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODIxLVxcdC5zcmFtID0gXFx1MDAyNnNrbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBhcGxfZGVzYyA9IHtcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTgyOS1cXHQuY29yZV9pbml0X21hc2sgPSAzLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjgzMDpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODMxLVxcdC5zcmFtID0gXFx1MDAyNmFwbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBjbmxfZGVzYyA9IHtcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTgzOS1cXHQuY29yZV9pbml0X21hc2sgPSAxLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg0MDpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODQxLVxcdC5zcmFtID0gXFx1MDAyNmFwbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04NDU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBpY2xfZGVzYyA9IHtcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg0OS1cXHQuY29yZV9pbml0X21hc2sgPSAxLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg1MDpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODUxLVxcdC5zcmFtID0gXFx1MDAyNmFwbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBqc2xfZGVzYyA9IHtcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg1OS1cXHQuY29yZV9pbml0X21hc2sgPSAxLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg2MDpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODYxLVxcdC5zcmFtID0gXFx1MDAyNmFwbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBzbmFtZSMjX2Rlc2MgPSB7XFx0XFxcXFxcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODcwLVxcdC5jb3JlX2luaXRfbWFzayA9IDEsXFx0XFx0XFx0XFxcXFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg3MTpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFx0XFx0XFxcXFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg3Mi1cXHQuc3JhbSA9IFxcdTAwMjZhcGxfc3JhbV9zcGVjLFxcdFxcdFxcdFxcXFxcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jPTg4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGF2c19zcGVjIGZjbF9kZXNjID0ge1xcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODg2LVxcdC5jb3JlX2luaXRfbWFzayA9IDEsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM6ODg3OlxcdC5hdHRyaWJ1dGVzID0gQVZTX1BMQVRBVFRSX0lNUiB8IEFWU19QTEFUQVRUUl9BQ0UgfCBBVlNfUExBVEFUVFJfQUxUSERBLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg4OC1cXHQuc3JhbSA9IFxcdTAwMjZtdGxfc3JhbV9zcGVjLFxcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jPTY3PWludCBhdnNfaXBjX2NyZWF0ZV9waXBlbGluZShzdHJ1Y3QgYXZzX2RldiAqYWRldiwgdTE2IHJlcV9zaXplLCB1OCBwcmlvcml0eSxcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy03Ni1cXHRtc2cuZXh0LmNyZWF0ZV9wcGwubHAgPSBscDtcXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmM6Nzc6XFx0bXNnLmV4dC5jcmVhdGVfcHBsLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xcbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy03OC1cXHRyZXF1ZXN0LmhlYWRlciA9IG1zZy52YWw7XFxuLS1cXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTM3LVxcdFxcdFxcdC5lcF9hdHRyID0gVVNCX0VORFBPSU5UX1hGRVJfSVNPQyxcXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg6MTM4OlxcdFxcdFxcdC5hdHRyaWJ1dGVzID0gMCxcXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTM5LVxcdFxcdFxcdC5yYXRlcyA9IFNORFJWX1BDTV9SQVRFX0NPTlRJTlVPVVMsXFxuLS1cXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg9NDQxPVlBTUFIQV9ERVZJQ0UoMHg3MDEwLCBcXFwiVUI5OVxcXCIpLFxcbi0tXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ3MS1cXHRcXHRcXHRcXHRcXHQuYWx0c2V0X2lkeCA9IDEsXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjQ3MjpcXHRcXHRcXHRcXHRcXHQuYXR0cmlidXRlcyA9IDAsXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ3My1cXHRcXHRcXHRcXHRcXHQuZW5kcG9pbnQgPSAweDAxLFxcbi0tXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ4Ni1cXHRcXHRcXHRcXHRcXHQuYWx0c2V0X2lkeCA9IDEsXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjQ4NzpcXHRcXHRcXHRcXHRcXHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX0ZJTExfTUFYLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC00ODgtXFx0XFx0XFx0XFx0XFx0LmVuZHBvaW50ID0gMHg4MSxcXG4tLVxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC03OTYtXFx0XFx0XFx0XFx0XFx0LmFsdHNldF9pZHggPSAxLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDo3OTc6XFx0XFx0XFx0XFx0XFx0LmF0dHJpYnV0ZXMgPSAwLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC03OTgtXFx0XFx0XFx0XFx0XFx0LmVuZHBvaW50ID0gMHgwMSxcXG4tLVxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC04MTEtXFx0XFx0XFx0XFx0XFx0LmFsdHNldF9pZHggPSAxLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDo4MTI6XFx0XFx0XFx0XFx0XFx0LmF0dHJpYnV0ZXMgPSAwLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC04MTMtXFx0XFx0XFx0XFx0XFx0LmVuZHBvaW50ID0gMHg4MixcXG4tLVxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC0xNTk5LVxcdFxcdFxcdFxcdFxcdC5hbHRzZXRfaWR4ID0gMSxcXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg6MTYwMDpcXHRcXHRcXHRcXHRcXHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX1NBTVBMRV9SQVRFLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC0xNjAxLVxcdFxcdFxcdFxcdFxcdC5lbmRwb2ludCA9IDB4MDEsXFxuLS1cXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTYyMy1cXHRcXHRcXHRcXHRcXHQuYWx0c2V0X2lkeCA9IDEsXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjE2MjQ6XFx0XFx0XFx0XFx0XFx0LmF0dHJpYnV0ZXMgPSBVQUNfRVBfQ1NfQVRUUl9TQU1QTEVfUkFURSxcXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTYyNS1cXHRcXHRcXHRcXHRcXHQuZW5kcG9pbnQgPSAweDgxLFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjI2Ljg2NTA2MDM1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE3OTM2NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVW51c2VkIENvZGUgYW5kIEF0dHJpYnV0ZSBBY2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGltbWVkaWF0ZWx5OiBpdCBsb29rcyBsaWtlIGBncHRfZW50cnlfYXR0cmlidXRlc2AgaXNuJ3QgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQgYW55d2hlcmUgaW4gdGhlIGNvZGViYXNlLiBUaGF0J3MgYWx3YXlzIGEgcmVkIGZsYWcg4oCTIHVudXNlZCBjb2RlIGlzIG9mdGVuIGEgc3ltcHRvbSBvZiBzb21ldGhpbmcsIGFuZCBpdCdzIHdvcnRoIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucy5cblxuTm93LCBteSBuZXh0IHRob3VnaHQgaXMsIHdoYXQgYWJvdXQgdGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCAqd2l0aGluKiBgZ3B0X2VudHJ5YCBpdHNlbGY/IEl0J3MgcG9zc2libGUgd2UgaGF2ZSBhIHJlbGF0ZWQgaXNzdWUsIG9yIHBlcmhhcHMgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgaW50ZW5kZWQgYXMgYSBzdGFuZGFsb25lIHN0cnVjdHVyZSwgYW5kIHRoZSBsb2dpYyB3YXMgcmV3b3JrZWQuIFNvLCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgYGdwdF9lbnRyeWAgaXMgYWN0dWFsbHkgKnVzZWQqLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGlzIG9uIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBzaW5jZSB0aGF0J3Mgd2hlcmUgR1BUIHBhcnRpdGlvbmluZyBpcyB0eXBpY2FsbHkgaGFuZGxlZC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBncHRfZW50cnlgIGlzIHVzZWQgdGhlcmUsIGFuZCwgY3J1Y2lhbGx5LCBpZiB0aGUgYGF0dHJpYnV0ZXNgIGZpZWxkIGlzIGJlaW5nIGFjY2Vzc2VkLiBLbm93aW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hldGhlciB0aGlzIHVudXNlZCB2YXJpYWJsZSBpcyBhbiBvcnBoYW4sIGEgbGVnYWN5IHBpZWNlLCBvciBpZiBpdCBoYXMgc29tZSBzdWJ0bGUgY29ubmVjdGlvbiB0byB0aGUgbWFpbiBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1MzMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOTozMC41ODMwMDAzNjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzM2Mjg0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHRlLVxcdTAwM2VhdHRyaWJ1dGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjMwLjc3NjM3MjAyNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYyNTE3MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZWJ1Z2dpbmcgTWVtb3J5IEF0dHJpYnV0ZXMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byB6ZXJvIGluIG9uIHRoZSBtZW1vcnkgYXR0cmlidXRlIHN0cnVjdHVyZXMuIEknZCBzdGFydCBieSBpbnNwZWN0aW5nIHNvbWV0aGluZyBsaWtlIGBwdGVcXFsuKlxcXVxcLmF0dHJpYnV0ZXNg4oCUb3IgcGVyaGFwcyBhIHNpbWlsYXIgbmFtaW5nIGNvbnZlbnRpb24gdXNlZCBpbiB0aGUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIG9yIGtlcm5lbCBJJ20gd29ya2luZyB3aXRoLiBUaGUgYC4qYCBhY3RzIGFzIGEgd2lsZGNhcmQ7IEkgbmVlZCB0byBiZSBmbGV4aWJsZSBhbmQgYWNjb3VudCBmb3IgcG90ZW50aWFsIHZhcmlhdGlvbnMgaW4gdGhlIGV4YWN0IGZpZWxkIG5hbWUuIFRoZSBnb2FsIGlzIHRvIGlkZW50aWZ5IGhvdyB0aGVzZSBtZW1vcnkgYXR0cmlidXRlcyBhcmUgc2V0IGFuZCB3aGF0IHRoZWlyIGN1cnJlbnQgdmFsdWVzIGFyZSwgYmVjYXVzZSB0aG9zZSBhdHRyaWJ1dGVzIGFyZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG9ic2VydmVkIGJlaGF2aW9yLiBJdCBzZWVtcyBsaWtlIGl0IHdpbGwgYmUgc29tZSBraW5kIG9mIFBURSAoUGFnZSBUYWJsZSBFbnRyeSkgYXR0cmlidXRlIHRoYXQgaXMgY2F1c2luZyB0aGUgcHJvYmxlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB2YWx1ZXMgaXQgc2hvdWxkIGJlIHNldCB0byB0byBzb2x2ZSB0aGUgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODcwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MzQuMDM4ODkzMzU1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1NjEzNDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInB0ZXNcXFxcWy4qXFxcXF1cXFxcLmF0dHJpYnV0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svcGFydGl0aW9ucy9lZmkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MzQuMTc0NDY2OTg1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzA0NTAwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUga25vd2xlZGdlYWJsZSBpbiB0aGUgZmllbGQgYW5kIHByb2Nlc3NpbmcgdGhpcyBpbmZvcm1hdGlvbjpcblxuKipBbmFseXppbmcgYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgIFVzYWdlIG9mIGBhdHRyaWJ1dGVzYCoqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlIGNvZGUgaW4gdGhpcyBmaWxlIGludGVyYWN0cyB3aXRoIHRoZSBgYXR0cmlidXRlc2AgdmFyaWFibGUuIElzIGl0IGV2ZW4gcmVmZXJlbmNlZD8gRG9lcyB0aGUgY29kZSByZWx5IG9uIHJlYWRpbmcgb3IgbW9kaWZ5aW5nIHRoZXNlIGF0dHJpYnV0ZXM/IEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgd2hldGhlciBpdCdzIGVzc2VudGlhbCBmb3IgdGhlIGxvZ2ljLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyB1c2FnZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBwYXJ0aXRpb25pbmcgY29udGV4dCB0byBhc3Nlc3MgcG90ZW50aWFsIGltcGFjdHMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8ga25vdyB0aGUgc2NvcGUgYW5kIGhvdyBpdCBpcyB1c2VkIHRvIGFzc2VzcyBpZiB0aGlzIGEgcG90ZW50aWFsIHNlY3VyaXR5IGZsYXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTE2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MzcuMzQ0OTIwMDkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAzNTE5MDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0dHJpYnV0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svcGFydGl0aW9ucy9lZmkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MzcuNDk1Mjc5OTQxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzE4NDkzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgRUZJIFBhcnRpdGlvbiBBdHRyaWJ1dGUgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gdGhlIGNvZGUncyBwb2ludGluZyBtZSBhdCBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgY29tbWVudCBtZW50aW9uaW5nIFwiYXR0cmlidXRlcy5cIiBJdCdzIHN1Z2dlc3RpbmcgYGF0dHJpYnV0ZXNgICphcmVuJ3QqIGJlaW5nIGRpcmVjdGx5IHVzZWQgaW4gdGhpcyBzcGVjaWZpYyBmaWxlLCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuTm93LCB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnIGluIG15IG1pbmQuIElmIGBhdHRyaWJ1dGVzYCBhcmVuJ3QgYWNjZXNzZWQgKmhlcmUqLCB0aGF0IGRvZXNuJ3QgbWVhbiB0aGV5IGFyZW4ndCBjcnVjaWFsLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhleSBhcmUgdXNlZCBlbHNld2hlcmUsIGJlY2F1c2Ugd2h5IGVsc2Ugd291bGQgdGhleSBiZSBtZW50aW9uZWQgaGVyZT8gSSBzaG91bGQgbWFrZSBhIG5vdGUgdG8gY2hlY2sgaG93IHRoZSBhdHRyaWJ1dGVzIGFyZSB1c2VkLCBhbmQgd2hldGhlciB0aGVpciBiZWluZyBvbWl0dGVkIGhlcmUgaXMgYSBzaWduLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGZpbGVzIG9yIGZ1bmN0aW9ucyB0aGF0IHJlbHkgb24gdGhpcyBkYXRhLiBBIHF1aWNrIHNlYXJjaCBvZiB0aGUgY29kZWJhc2Ugd291bGQgYmUgbXkgbmV4dCBsb2dpY2FsIHN0ZXAuIEknbGwgbmVlZCB0byB1c2UgbXkgcHJlZmVycmVkIHNlYXJjaCB0b29scyBhbmQgbWF5YmUgc29tZSBncmVwcGluZyB0byBzZWUgdGhlIG90aGVyIGZpbGVzIHdoZXJlIHRoZSBgYXR0cmlidXRlc2AgdmFyaWFibGUgb3Igc3RydWN0IG1pZ2h0IGJlIHJlZmVyZW5jZWQuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbCwgYW5kIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0J3MgYmVpbmcgdXNlZC4gSWYgaXQncyBub3QgYmVpbmcgdXNlZCwgdGhlbiB0aGF0J3MgYSBkaWZmZXJlbnQgcHJvYmxlbSBhbHRvZ2V0aGVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxODMzNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjQxLjEyNzEzMjAyOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxOTI5OTU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncHRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjY5LSAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cXHRcXHRcXHRcXHRcXHQgZ3B0X2hlYWRlciAqZ3B0KVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNzMtXFx0c2l6ZV90IGNvdW50O1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0OlxcdGdwdF9lbnRyeSAqcHRlO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz0zMzQ9c3RhdGljIGludCBpc19ncHRfdmFsaWQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTY0IGxiYSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcXHRcXHRcXHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVxcdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQxNTpcXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVxcdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE2LVxcdFxcdHByX2RlYnVnKFxcXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXFxcblxcXCIpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQ2MDppc19wdGVfdmFsaWQoY29uc3QgZ3B0X2VudHJ5ICpwdGUsIGNvbnN0IHU2NCBsYXN0bGJhKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NTgwPXN0YXRpYyBpbnQgZmluZF92YWxpZF9ncHQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgZ3B0X2hlYWRlciAqKmdwdCxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcXHRcXHRcXHQgIGdwdF9lbnRyeSAqKnB0ZXMpXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXFx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4NTpcXHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cXHRsZWdhY3lfbWJyICpsZWdhY3ltYnI7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXFx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjcxNTpcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVxcdHUzMiBpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaD01NT10eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6Nzg6dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC03OS1cXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg0LVxcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4NTp9IF9fcGFja2VkIGdwdF9lbnRyeTtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOTo0NS42NDY0MzY3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyODMxNTA5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBJbXBhY3RzIG9mIGEgR1BUIEVudHJ5IFN0cnVjdHVyZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHNwZWNpZmljYWxseSBhdCBgZ3B0X2VudHJ5YC4gSXQgbG9va3MgbGlrZSBgZ3B0X2VudHJ5YCBpcyBvbmx5IHVzZWQgd2l0aGluIHRoZSBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgYW5kIGAuaGAgZmlsZXMuIEluaXRpYWxseSwgbXkgY29uY2VybiB3YXMgc3BhcmtlZCBieSB0aGUgc2VlbWluZ2x5IHVudXNlZCBgYXR0cmlidXRlc2AgZmllbGQgd2l0aGluIHRoZSBgZ3B0X2VudHJ5YCBzdHJ1Y3QuIEkgd29uZGVyZWQgaWYgdGhlIGNoYW5nZSBpbiBob3cgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgZGVmaW5lZCBjb3VsZCBhZmZlY3QgdGhlIG92ZXJhbGwgc2l6ZSBvZiBgZ3B0X2VudHJ5YCBnaXZlbiB0aGF0IGBzaXplb2YoZ3B0X2VudHJ5KWAgKmlzKiB1c2VkLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYSBiaXRmaWVsZCwgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGNvbXBpbGVyLCBjb3VsZCByZXN1bHQgaW4gc2l6ZSBvciBhbGlnbm1lbnQgZGlmZmVyZW5jZXMuXG5cbkhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGRlZmluaXRpb24gb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCByZXZlYWxzIHRoZSBgX19wYWNrZWRgIGF0dHJpYnV0ZS4gVGhpcyBjb25maXJtcyB0aGF0IHRoZSBzdHJ1Y3R1cmUgaXMgaW5kZWVkIDggYnl0ZXMuIEdvaW5nIGEgc3RlcCBmdXJ0aGVyIHRvIGRvdWJsZS1jaGVjaywgSSBjYW4gc2VlIHRoYXQgdGhlIHN0cnVjdCBgZ3B0X2VudHJ5YCBpdHNlbGYgaXMgYWxzbyBgX19wYWNrZWRgLlxuXG5TbywgdGhlIG5ldyBzdHJ1Y3QgYGdwdF9lbnRyeWAgZGVmaW5pdGlvbiB1c2luZyBgX19wYWNrZWRgIHNob3VsZCBiZTogMTYgKGZvciBwYXJ0aXRpb25fdHlwZV9ndWlkKSArIDE2IChmb3IgdW5pcXVlX3BhcnRpdGlvbl9ndWlkKSArIDggKyA4ICsgOCAoYXR0cmlidXRlcykgKyA3MiA9IDEyOCBieXRlcy4gVGhlIG9sZCBkZWZpbml0aW9uLCB3aXRoIGBfX2xlNjQgYXR0cmlidXRlcztgLCB3b3VsZCBhbHNvIGhhdmUgYmVlbiAxMjggYnl0ZXMuIFRoZSBgc2l6ZW9mKGdwdF9lbnRyeSlgIGlzIHRoZXJlZm9yZSBpZGVudGljYWwuIFRoZXJlJ3Mgbm8gc2l6ZSBjaGFuZ2UgYXQgYWxsLlxuXG5Ib3dldmVyLCBJIHN0YXJ0ZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIG9mIHRoaXMgZmllbGQgYmVpbmcgYSBiaXRmaWVsZCwgcGFydGljdWxhcmx5IHNpbmNlIGl0J3MgYSBgdTY0YC4gQml0ZmllbGRzIG9mIHRoaXMgc2l6ZSBjYW4gc29tZXRpbWVzIGJlIHByb2JsZW1hdGljIGluIEMsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gd2FybmluZ3MgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciB1c2VkLCBvciBtb3JlIHNpZ25pZmljYW50bHksIGludHJvZHVjaW5nIGVuZGlhbm5lc3MgaXNzdWVzLiBCdXQsIHdhaXQuLi50aGUgY3JpdGljYWwgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZSBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIGZpZWxkIGl0c2VsZiBpcyAqbmV2ZXIqIGFjY2Vzc2VkLiBUaGVyZWZvcmUsIHRoZSBlbmRpYW5uZXNzIG9mIHRoZSBiaXRmaWVsZCBkb2Vzbid0IG1hdHRlciwgYW5kIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5TdGlsbCwgdG8gYmUgY29tcGxldGVseSB0aG9yb3VnaCwgSSBzaG91bGQgbG9vayBhdCBhbGwgb3RoZXIgZmlsZXMgdGhhdCBpbmNsdWRlIGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYCwganVzdCB0byBiZSBjZXJ0YWluIHRoYXQgSSBhbSBzZWVpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NDQzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjUyLjkyOTU5MDYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzQ3NjA5MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZWZpXFxcXC5oXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtOTAtI2luY2x1ZGUgXFxcImNoZWNrLmhcXFwiXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo5MTojaW5jbHVkZSBcXFwiZWZpLmhcXFwiXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy05Mi1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNC0gKiBQZXIgSW50ZWwgRUZJIFNwZWNpZmljYXRpb24gdjEuMDJcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oOjU6ICogaHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20vdGVjaG5vbG9neS9lZmkvZWZpLmh0bVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNi0gKlxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC0xOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nLmhcXHUwMDNlXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDoxOTojaW5jbHVkZSBcXHUwMDNjbGludXgvZWZpLmhcXHUwMDNlXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zMS0jaW5jbHVkZSBcXFwiY2hlY2suaFxcXCJcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzI6I2luY2x1ZGUgXFxcImVmaS5oXFxcIlxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6NTMuNjA0MzYwNTQyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODM1ODI4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyBNU0RPUyBQYXJ0aXRpb24gQXR0cmlidXRlIEFjY2VzcyoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBgYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jYCBjb2RlIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCBpbiB0aGUgY29udGV4dCBvZiBNU0RPUyBwYXJ0aXRpb24gdGFibGVzLiBUaGF0J3MgdGhlIGNydXggb2YgdGhpcyBpbnZlc3RpZ2F0aW9uLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIGZpbGUgYGJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIGhhbmRsaW5nIE1TRE9TLWZvcm1hdHRlZCBwYXJ0aXRpb24gdGFibGVzIHJlc2lkZXMsIHNvIGlmIHRoZXJlJ3MgYW55IGFjY2VzcyB0byBhdHRyaWJ1dGVzLCBpdCdzIGhpZ2hseSBsaWtlbHkgdG8gYmUgZm91bmQgaGVyZS4gTXkgZ29hbCBpcyB0byBjb25maXJtIG9yIGRlbnkgdGhpcyBhdHRyaWJ1dGUgaW50ZXJhY3Rpb24uIEkgd2lsbCBub3cgZXhhbWluZSB0aGlzIGZpbGUgaW4gZGV0YWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDY1NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjU2Ljk4Nzk0NjMwMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1NjU1MjAzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdHRyaWJ1dGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6NTcuMjEzNjA5MDY2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMDk0NTk3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU2VlbWluZ2x5IFVzZWxlc3MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoaXMgdmFyaWFibGUuLi4gaXQncyBqdXN0ICpuZXZlciogdXNlZC4gVGhhdCdzIGEgYml0IHBlcnBsZXhpbmcuIFRoZSBxdWVzdGlvbiBpcywgd2h5IHdhcyB0aGlzIHBhdGNoIGV2ZW4gc3VibWl0dGVkPyBXaGF0J3MgdGhlIHJhdGlvbmFsZT9cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUsIHdhcyBpdCBzb21ldGhpbmcgc3VidGxlPyBEaWQgdGhlIGNvbXBpbGVyIHN0YXJ0IHRocm93aW5nIHVwIHNwYXJzZSB3YXJuaW5ncyBvciB0cmlnZ2VyIGJpdGZpZWxkLXJlbGF0ZWQgd2FybmluZ3M/IFRoYXQncyBhIHBvc3NpYmlsaXR5LCBidXQgSSdtIG5vdCB0b3RhbGx5IGNvbnZpbmNlZC4gT3IsIHBlcmhhcHMgaXQncyBzaW1wbHkgYSBjbGVhbnVwIGVmZm9ydCwgc29tZW9uZSBzdHJlYW1saW5pbmcgdGhlIGNvZGViYXNlLiBCdXQgd2FpdC4uLiBpZiBpdCdzIGdlbnVpbmVseSBpbmFjY2Vzc2libGUsIHRoZW4gZnVuY3Rpb25hbGx5LCBub3RoaW5nIGFjdHVhbGx5ICpjaGFuZ2VkKi4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgYnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cbkknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCBgZWZpLmhgIHRvIG1ha2Ugc3VyZSB0aGVyZSBpc24ndCBzb21lIHNuZWFreSBtYWNybyBvciBpbmxpbmUgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSBpbmRpcmVjdGx5IHVzaW5nIHRoaXMgdmFsdWUuIEp1c3Qgd2FudCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIGx1cmtpbmcgaW4gdGhpcyBmaWxlLiBHb3R0YSBkb3QgdGhlIGkncyBhbmQgY3Jvc3MgdGhlIHQncyBiZWZvcmUgbW92aW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg4MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjEwOjAxLjIyMzA3MzU2NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTI1OTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi9cXG4gICAyOlxcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gICAzOlxcdCAqIEVGSSBHVUlEIFBhcnRpdGlvbiBUYWJsZVxcbiAgIDQ6XFx0ICogUGVyIEludGVsIEVGSSBTcGVjaWZpY2F0aW9uIHYxLjAyXFxuICAgNTpcXHQgKiBodHRwOi8vZGV2ZWxvcGVyLmludGVsLmNvbS90ZWNobm9sb2d5L2VmaS9lZmkuaHRtXFxuICAgNjpcXHQgKlxcbiAgIDc6XFx0ICogQnkgTWF0dCBEb21zY2ggXFx1MDAzY01hdHRfRG9tc2NoQGRlbGwuY29tXFx1MDAzZSAgRnJpIFNlcCAyMiAyMjoxNTo1NiBDRFQgMjAwMCAgXFxuICAgODpcXHQgKiAgIENvcHlyaWdodCAyMDAwLDIwMDEgRGVsbCBJbmMuXFxuICAgOTpcXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiAgMTA6XFx0XFxuICAxMTpcXHQjaWZuZGVmIEZTX1BBUlRfRUZJX0hfSU5DTFVERURcXG4gIDEyOlxcdCNkZWZpbmUgRlNfUEFSVF9FRklfSF9JTkNMVURFRFxcbiAgMTM6XFx0XFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gIDE1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcbiAgMTY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgMTc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21ham9yLmhcXHUwMDNlXFxuICAxODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nLmhcXHUwMDNlXFxuICAxOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZWZpLmhcXHUwMDNlXFxuICAyMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4gIDIxOlxcdFxcbiAgMjI6XFx0I2RlZmluZSBNU0RPU19NQlJfU0lHTkFUVVJFIDB4YWE1NVxcbiAgMjM6XFx0I2RlZmluZSBFRklfUE1CUl9PU1RZUEVfRUZJIDB4RUZcXG4gIDI0OlxcdCNkZWZpbmUgRUZJX1BNQlJfT1NUWVBFX0VGSV9HUFQgMHhFRVxcbiAgMjU6XFx0XFxuICAyNjpcXHQjZGVmaW5lIEdQVF9NQlJfUFJPVEVDVElWRSAgMVxcbiAgMjc6XFx0I2RlZmluZSBHUFRfTUJSX0hZQlJJRCAgICAgIDJcXG4gIDI4OlxcdFxcbiAgMjk6XFx0I2RlZmluZSBHUFRfSEVBREVSX1NJR05BVFVSRSAweDU0NTI0MTUwMjA0OTQ2NDVVTExcXG4gIDMwOlxcdCNkZWZpbmUgR1BUX0hFQURFUl9SRVZJU0lPTl9WMSAweDAwMDEwMDAwXFxuICAzMTpcXHQjZGVmaW5lIEdQVF9QUklNQVJZX1BBUlRJVElPTl9UQUJMRV9MQkEgMVxcbiAgMzI6XFx0XFxuICAzMzpcXHQjZGVmaW5lIFBBUlRJVElPTl9TWVNURU1fR1VJRCBcXFxcXFxuICAzNDpcXHQgICAgRUZJX0dVSUQoIDB4QzEyQTczMjgsIDB4RjgxRiwgMHgxMWQyLCBcXFxcXFxuICAzNTpcXHQgICAgICAgICAgICAgIDB4QkEsIDB4NEIsIDB4MDAsIDB4QTAsIDB4QzksIDB4M0UsIDB4QzksIDB4M0IpIFxcbiAgMzY6XFx0I2RlZmluZSBMRUdBQ1lfTUJSX1BBUlRJVElPTl9HVUlEIFxcXFxcXG4gIDM3OlxcdCAgICBFRklfR1VJRCggMHgwMjRERUU0MSwgMHgzM0U3LCAweDExZDMsIFxcXFxcXG4gIDM4OlxcdCAgICAgICAgICAgICAgMHg5RCwgMHg2OSwgMHgwMCwgMHgwOCwgMHhDNywgMHg4MSwgMHhGMywgMHg5RilcXG4gIDM5OlxcdCNkZWZpbmUgUEFSVElUSU9OX01TRlRfUkVTRVJWRURfR1VJRCBcXFxcXFxuICA0MDpcXHQgICAgRUZJX0dVSUQoIDB4RTNDOUUzMTYsIDB4MEI1QywgMHg0REI4LCBcXFxcXFxuICA0MTpcXHQgICAgICAgICAgICAgIDB4ODEsIDB4N0QsIDB4RjksIDB4MkQsIDB4RjAsIDB4MDIsIDB4MTUsIDB4QUUpXFxuICA0MjpcXHQjZGVmaW5lIFBBUlRJVElPTl9CQVNJQ19EQVRBX0dVSUQgXFxcXFxcbiAgNDM6XFx0ICAgIEVGSV9HVUlEKCAweEVCRDBBMEEyLCAweEI5RTUsIDB4NDQzMywgXFxcXFxcbiAgNDQ6XFx0ICAgICAgICAgICAgICAweDg3LCAweEMwLCAweDY4LCAweEI2LCAweEI3LCAweDI2LCAweDk5LCAweEM3KVxcbiAgNDU6XFx0I2RlZmluZSBQQVJUSVRJT05fTElOVVhfUkFJRF9HVUlEIFxcXFxcXG4gIDQ2OlxcdCAgICBFRklfR1VJRCggMHhhMTlkODgwZiwgMHgwNWZjLCAweDRkM2IsIFxcXFxcXG4gIDQ3OlxcdCAgICAgICAgICAgICAgMHhhMCwgMHgwNiwgMHg3NCwgMHgzZiwgMHgwZiwgMHg4NCwgMHg5MSwgMHgxZSlcXG4gIDQ4OlxcdCNkZWZpbmUgUEFSVElUSU9OX0xJTlVYX1NXQVBfR1VJRCBcXFxcXFxuICA0OTpcXHQgICAgRUZJX0dVSUQoIDB4MDY1N2ZkNmQsIDB4YTRhYiwgMHg0M2M0LCBcXFxcXFxuICA1MDpcXHQgICAgICAgICAgICAgIDB4ODQsIDB4ZTUsIDB4MDksIDB4MzMsIDB4YzgsIDB4NGIsIDB4NGYsIDB4NGYpXFxuICA1MTpcXHQjZGVmaW5lIFBBUlRJVElPTl9MSU5VWF9MVk1fR1VJRCBcXFxcXFxuICA1MjpcXHQgICAgRUZJX0dVSUQoIDB4ZTZkNmQzNzksIDB4ZjUwNywgMHg0NGMyLCBcXFxcXFxuICA1MzpcXHQgICAgICAgICAgICAgIDB4YTIsIDB4M2MsIDB4MjMsIDB4OGYsIDB4MmEsIDB4M2QsIDB4ZjksIDB4MjgpXFxuICA1NDpcXHRcXG4gIDU1OlxcdHR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHtcXG4gIDU2OlxcdFxcdF9fbGU2NCBzaWduYXR1cmU7XFxuICA1NzpcXHRcXHRfX2xlMzIgcmV2aXNpb247XFxuICA1ODpcXHRcXHRfX2xlMzIgaGVhZGVyX3NpemU7XFxuICA1OTpcXHRcXHRfX2xlMzIgaGVhZGVyX2NyYzMyO1xcbiAgNjA6XFx0XFx0X19sZTMyIHJlc2VydmVkMTtcXG4gIDYxOlxcdFxcdF9fbGU2NCBteV9sYmE7XFxuICA2MjpcXHRcXHRfX2xlNjQgYWx0ZXJuYXRlX2xiYTtcXG4gIDYzOlxcdFxcdF9fbGU2NCBmaXJzdF91c2FibGVfbGJhO1xcbiAgNjQ6XFx0XFx0X19sZTY0IGxhc3RfdXNhYmxlX2xiYTtcXG4gIDY1OlxcdFxcdGVmaV9ndWlkX3QgZGlza19ndWlkO1xcbiAgNjY6XFx0XFx0X19sZTY0IHBhcnRpdGlvbl9lbnRyeV9sYmE7XFxuICA2NzpcXHRcXHRfX2xlMzIgbnVtX3BhcnRpdGlvbl9lbnRyaWVzO1xcbiAgNjg6XFx0XFx0X19sZTMyIHNpemVvZl9wYXJ0aXRpb25fZW50cnk7XFxuICA2OTpcXHRcXHRfX2xlMzIgcGFydGl0aW9uX2VudHJ5X2FycmF5X2NyYzMyO1xcbiAgNzA6XFx0XFxuICA3MTpcXHRcXHQvKiBUaGUgcmVzdCBvZiB0aGUgbG9naWNhbCBibG9jayBpcyByZXNlcnZlZCBieSBVRUZJIGFuZCBtdXN0IGJlIHplcm8uXFxuICA3MjpcXHRcXHQgKiBFRkkgc3RhbmRhcmQgaGFuZGxlcyB0aGlzIGJ5OlxcbiAgNzM6XFx0XFx0ICpcXG4gIDc0OlxcdFxcdCAqIHVpbnQ4X3RcXHRcXHRyZXNlcnZlZDJbIEJsb2NrU2l6ZSAtIDkyIF07XFxuICA3NTpcXHRcXHQgKi9cXG4gIDc2OlxcdH0gX19wYWNrZWQgZ3B0X2hlYWRlcjtcXG4gIDc3OlxcdFxcbiAgNzg6XFx0dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XFxuICA3OTpcXHRcXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XFxuICA4MDpcXHRcXHRlZmlfZ3VpZF90IHVuaXF1ZV9wYXJ0aXRpb25fZ3VpZDtcXG4gIDgxOlxcdFxcdF9fbGU2NCBzdGFydGluZ19sYmE7XFxuICA4MjpcXHRcXHRfX2xlNjQgZW5kaW5nX2xiYTtcXG4gIDgzOlxcdFxcdF9fbGU2NCBhdHRyaWJ1dGVzO1xcbiAgODQ6XFx0XFx0X19sZTE2IHBhcnRpdGlvbl9uYW1lWzcyL3NpemVvZihfX2xlMTYpXTtcXG4gIDg1OlxcdH0gX19wYWNrZWQgZ3B0X2VudHJ5O1xcbiAgODY6XFx0XFxuICA4NzpcXHR0eXBlZGVmIHN0cnVjdCBfZ3B0X21icl9yZWNvcmQge1xcbiAgODg6XFx0XFx0dThcXHRib290X2luZGljYXRvcjsgLyogdW51c2VkIGJ5IEVGSSwgc2V0IHRvIDB4ODAgZm9yIGJvb3RhYmxlICovXFxuICA4OTpcXHRcXHR1OFxcdHN0YXJ0X2hlYWQ7ICAgICAvKiB1bnVzZWQgYnkgRUZJLCBwdCBzdGFydCBpbiBDSFMgKi9cXG4gIDkwOlxcdFxcdHU4XFx0c3RhcnRfc2VjdG9yOyAgIC8qIHVudXNlZCBieSBFRkksIHB0IHN0YXJ0IGluIENIUyAqL1xcbiAgOTE6XFx0XFx0dThcXHRzdGFydF90cmFjaztcXG4gIDkyOlxcdFxcdHU4XFx0b3NfdHlwZTsgICAgICAgIC8qIEVGSSBhbmQgbGVnYWN5IG5vbi1FRkkgT1MgdHlwZXMgKi9cXG4gIDkzOlxcdFxcdHU4XFx0ZW5kX2hlYWQ7ICAgICAgIC8qIHVudXNlZCBieSBFRkksIHB0IGVuZCBpbiBDSFMgKi9cXG4gIDk0OlxcdFxcdHU4XFx0ZW5kX3NlY3RvcjsgICAgIC8qIHVudXNlZCBieSBFRkksIHB0IGVuZCBpbiBDSFMgKi9cXG4gIDk1OlxcdFxcdHU4XFx0ZW5kX3RyYWNrOyAgICAgIC8qIHVudXNlZCBieSBFRkksIHB0IGVuZCBpbiBDSFMgKi9cXG4gIDk2OlxcdFxcdF9fbGUzMlxcdHN0YXJ0aW5nX2xiYTsgICAvKiB1c2VkIGJ5IEVGSSAtIHN0YXJ0IGFkZHIgb2YgdGhlIG9uIGRpc2sgcHQgKi9cXG4gIDk3OlxcdFxcdF9fbGUzMlxcdHNpemVfaW5fbGJhOyAgICAvKiB1c2VkIGJ5IEVGSSAtIHNpemUgb2YgcHQgaW4gTEJBICovXFxuICA5ODpcXHR9IF9fcGFja2VkIGdwdF9tYnJfcmVjb3JkO1xcbiAgOTk6XFx0XFxuIDEwMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MDEuMjMxMDA1MTI4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MzYxMzc1NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHUFQgRW50cnkgQXR0cmlidXRlIENoYW5nZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgZ3B0X2VudHJ5YCBpcyBkZWZpbmVkIGluIGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYC4gVGhlIHZhcmlhYmxlIGBhdHRyaWJ1dGVzYCB3aXRoaW4gdGhhdCBzdHJ1Y3QgaXMgdGhlIHNwZWNpZmljIHRoaW5nIEknbSBmb2N1c2VkIG9uLiBJbml0aWFsbHksIEknbSB0aGlua2luZywgXCJJcyB0aGlzIGFjdHVhbGx5ICp1c2VkKiBhbnl3aGVyZT9cIiBBIHF1aWNrIGdyZXAgZGlkbid0IHR1cm4gdXAgYW55dGhpbmcgaW4gYGJsb2NrL3BhcnRpdGlvbnMvYCBiZXlvbmQgdGhlIGRlZmluaXRpb24gaXRzZWxmLiBJIGRvdWJsZS1jaGVja2VkLCBncmVwcGluZyBmb3IgYGdwdF9lbnRyeWAsIGFuZCBjb25maXJtZWQgaXRzIHVzYWdlIGlzIGxpbWl0ZWQgdG8gdGhlIGBlZmkuY2AgYW5kIGBlZmkuaGAgZmlsZXMgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBTbywgaXQgcmVhbGx5ICppcyogbmV2ZXIgYWNjZXNzZWQsIGF0IGxlYXN0IG5vdCBkaXJlY3RseS4gVGhhdCdzIG9kZC5cblxuV2h5IHRoZSBjaGFuZ2UgdGhlbj8gVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIG9mIGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2FzIGEgYml0ZmllbGQuIEFoLCB0aGUgZGFuZ2VyIG9mIGJpdGZpZWxkcyEgTWFwcGluZyBzdHJ1Y3R1cmVzIHdpdGggYml0ZmllbGRzIGRpcmVjdGx5IHRvIG9uLWRpc2sgZGF0YSBpcyBnZW5lcmFsbHkgYSBuby1uby4gQ29tcGlsZXIgYmVoYXZpb3IgcmVnYXJkaW5nIGJpdGZpZWxkIHBhY2tpbmcgY2FuIHZhcnkgd2lsZGx5IGJldHdlZW4gYXJjaGl0ZWN0dXJlcyBhbmQgZW5kaWFubmVzcy4gSG93ZXZlciwgdGhlIGtlcm5lbCAqbmV2ZXIqIHJlYWRzIG9yIHdyaXRlcyB0aGF0IGZpZWxkOyB0aGUgZXhlY3V0aW9uIGZsb3cgaXNuJ3QgaW1wYWN0ZWQgaGVyZS5cblxuQnV0IHdhaXQgYSBzZWNvbmQuLi4gYHNpemVvZihncHRfZW50cnkpYCBpcyB1c2VkIGluIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBpbiBhIGNydWNpYWwgc2l6ZSBjaGVjazpcblxuYGBgY1xuXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKSB7XG5cdFx0cHJfZGVidWcoXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXG5cIik7XG5gYGBcblxuSWYgdGhlIHNpemUgb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgKmRpZmZlcmVudCogZHVlIHRvIHRoZSBiaXRmaWVsZCBjaGFuZ2UsIGBzaXplb2YoZ3B0X2VudHJ5KWAgd291bGQgaGF2ZSBiZWVuIGFmZmVjdGVkIGFuZCBwb3RlbnRpYWxseSBicm9rZW4gdGhlIGNoZWNrISBCdXQsIHRoZSBvcmlnaW5hbCBzdHJ1Y3QsIGBncHRfZW50cnlfYXR0cmlidXRlc2AsIHdhczpcblxuYGBgY1xudHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHtcblx0dTY0IHJlcXVpcmVkX3RvX2Z1bmN0aW9uOjE7XG5cdHU2NCByZXNlcnZlZDo0NztcbiAgICAgICAgdTY0IHR5cGVfZ3VpZF9zcGVjaWZpYzoxNjtcbn0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7XG5gYGBcblxuSXQgd2FzIGEgYHU2NGAgYml0ZmllbGQgd2l0aCBhIHRvdGFsIG9mIDY0IGJpdHMgd2l0aCB0aGUgYF9fcGFja2VkYCBhdHRyaWJ1dGUgdG8gZW5zdXJlIG5vIHBhZGRpbmcuIFNvIHRoZSBzaXplIHdhcyA4IGJ5dGVzIGJlZm9yZSAqYW5kKiBhZnRlciB0aGUgY2hhbmdlLCBtYWtpbmcgYHNpemVvZihncHRfZW50cnkpYCBzdGF5IGF0IDEyOCBieXRlcyBpbiBib3RoIGNhc2VzLiBJcyB0aGVyZSAqYW55KiBmdW5jdGlvbmFsIGNoYW5nZSB0aGVuP1xuXG5Ib2xkIG9uLi4uIGV2ZW4gaWYgdGhlIHNpemUgcmVtYWlucyB0aGUgc2FtZSwgYSBiaXRmaWVsZCBgdTY0YCBtaWdodCB0cmlnZ2VyIGNvbXBpbGVyIHdhcm5pbmdzLCBvciBldmVuIHNwYXJzZSBlcnJvcnMuIEFsc28sIGFuZCBtb3JlIGltcG9ydGFudGx5LCB0aGUgb3JpZ2luYWwgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXNuJ3QgdXNpbmcgYF9fbGU2NGAuIElmIGl0ICp3ZXJlKiByZWFkLCBpdCB3b3VsZCBiZSBpbnRlcnByZXRlZCBpbiBob3N0IGJ5dGUgb3JkZXIsIHdoaWNoIGlzICp3cm9uZyogZm9yIG9uLWRpc2sgR1BUIGRhdGEgKGxpdHRsZS1lbmRpYW4pLiBCdXQgc2luY2UgaXQncyBuZXZlciByZWFkLCBpdCdzIG5vdCBhIHByb2JsZW0uXG5cbkhtbSwgYnV0ICpjb3VsZCogYGdwdF9lbnRyeWAgZ2V0IGNvcGllZCB0byB1c2Vyc3BhY2U/IExldCdzIGNoZWNrLiBJZiBgZ3B0X2VudHJ5YCB3ZXJlIGV4cG9zZWQgdG8gdXNlcmxhbmQsIHRoZW4gdGhpcyBjaGFuZ2UgKndvdWxkKiBiZSBpbnRlcmVzdGluZywgYnV0IGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYCBpc24ndCBpbiBgaW5jbHVkZS91YXBpL2AsIHNvIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGtlcm5lbC4gSXMgaXQgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHNvbWUgSU9DVEw/IEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyNTgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzoxMDoxMS4wNjcxNDY0NjJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjgyODU4MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29weV90b191c2VyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjEwOjExLjI5NDAxMDQ4NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDcyMzUzNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgZGlyZWN0IHJlZmxlY3Rpb24gb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBgZ3B0X2VudHJ5YCBVc2FnZSoqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgZ2V0IGEgaGFuZGxlIG9uIHRoaXMgYGdwdF9lbnRyeWAgdGhpbmcuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGl0cyBzY29wZSBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyB2YXJpYWJsZSBvciBmdW5jdGlvbiDigJMgd2hhdGV2ZXIgaXQgaXMg4oCTIGlzIGJlaW5nIHBhc3NlZCBhcm91bmQgdG8gb3RoZXIgc3Vic3lzdGVtcy4gVW5kZXJzdGFuZGluZyBpdHMgcHJvcGFnYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMsIHNpZGUgZWZmZWN0cywgYW5kIG92ZXJhbGwgYXJjaGl0ZWN0dXJhbCBpbXBhY3QuIElzIGl0IGlzb2xhdGVkLCBvciBpcyBpdCBhIGNlbnRyYWwgcG9pbnQgb2YgaW50ZWdyYXRpb24/IEtub3dpbmcgdGhlIGFuc3dlciB0byB0aGF0IHF1ZXN0aW9uIHdpbGwgaW5mb3JtIGFueSBmdXJ0aGVyIGFuYWx5c2lzIEkgbmVlZCB0byBkby4gSSBuZWVkIHRvIG1hcCB3aGVyZSBpdCB0b3VjaGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY3NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjEwOjE0LjM2NjM2NjUxNVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3OTM3MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdwdF9lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL2VmaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjY5LSAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cXHRcXHRcXHRcXHRcXHQgZ3B0X2hlYWRlciAqZ3B0KVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNzMtXFx0c2l6ZV90IGNvdW50O1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0OlxcdGdwdF9lbnRyeSAqcHRlO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz0zMzQ9c3RhdGljIGludCBpc19ncHRfdmFsaWQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTY0IGxiYSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcXHRcXHRcXHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVxcdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQxNTpcXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVxcdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE2LVxcdFxcdHByX2RlYnVnKFxcXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXFxcblxcXCIpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQ2MDppc19wdGVfdmFsaWQoY29uc3QgZ3B0X2VudHJ5ICpwdGUsIGNvbnN0IHU2NCBsYXN0bGJhKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NTgwPXN0YXRpYyBpbnQgZmluZF92YWxpZF9ncHQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgZ3B0X2hlYWRlciAqKmdwdCxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcXHRcXHRcXHQgIGdwdF9lbnRyeSAqKnB0ZXMpXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXFx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4NTpcXHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cXHRsZWdhY3lfbWJyICpsZWdhY3ltYnI7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXFx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjcxNTpcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVxcdHUzMiBpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzoxMDoxNC40OTQzMDk4MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc5MTQzMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6XG5cbioqSW50ZXJuYWwgR1BUIFBhcnNpbmcgQW5hbHlzaXMqKlxuXG5SaWdodCwgaXQgbG9va3MgbGlrZSBgZ3B0X2VudHJ5YCBpcyBzdHJpY3RseSBhICpwcml2YXRlKiBmdW5jdGlvbiwgYSBoZWxwZXIgcHJpbWFyaWx5IGZvciB0aGUgcGFydGl0aW9uIHRhYmxlIHBhcnNpbmcgcHJvY2Vzcy4gSXQncyBub3QgZXhwb3NlZCBleHRlcm5hbGx5LCB3aGljaCBtYWtlcyBzZW5zZS4gSXRzIG9ubHkgam9iIGlzIHRvIGJyZWFrIGRvd24gdGhlIEdQVCBzdHJ1Y3R1cmVzLCBhbmQgdGhlbiBmZWVkIHRoZSByZXN1bHRzIGludG8gYHN0YXRlYCwgd2hpY2gsIEkgc2VlLCBpcyBhIGBwYXJzZWRfcGFydGl0aW9uc2Agc3RydWN0LiBNYWtlcyB0aGUgYXJjaGl0ZWN0dXJlIHByZXR0eSBjbGVhci4gTGV0IG1lIHF1aWNrbHkganVtcCBvdmVyIHRvIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBlZmlfcGFydGl0aW9uYCBjb2RlIOKAkyBJIHdhbnQgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgcGFyc2luZyBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBJJ2xsIGZvY3VzIG9uIGhvdyBgZWZpX3BhcnRpdGlvbmAgaGFuZGxlcyB0aGF0IHBhcnNlZCBkYXRhIHRoYXQgb3JpZ2luYXRlcyBmcm9tIGBncHRfZW50cnlgLiBJJ20gZ3Vlc3NpbmcgdGhhdCdzIHdoZXJlIHRoZSByZWFsIGxvZ2ljIGlzLCBob3cgdGhlIHBhcnNlZCBHUFQgZW50cmllcyB1bHRpbWF0ZWx5IHRyYW5zbGF0ZSBpbnRvIHVzYWJsZSBwYXJ0aXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzeXN0ZW0uIFRoYXQncyB3aGVyZSB0aGUgZGV2aWwgaXMgaW4gdGhlIGRldGFpbHMsIHNvIGxldCdzIGRpZyBpbnRvIGBlZmkuY2AhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTIzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MTguNjczNDU1ODUzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJibG9jay9wYXJ0aXRpb25zL2VmaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcxMixcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MTI6XFx0aW50IGVmaV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4gNzEzOlxcdHtcXG4gNzE0OlxcdFxcdGdwdF9oZWFkZXIgKmdwdCA9IE5VTEw7XFxuIDcxNTpcXHRcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbiA3MTY6XFx0XFx0dTMyIGk7XFxuIDcxNzpcXHRcXHR1bnNpZ25lZCBzc3ogPSBxdWV1ZV9sb2dpY2FsX2Jsb2NrX3NpemUoc3RhdGUtXFx1MDAzZWRpc2stXFx1MDAzZXF1ZXVlKSAvIDUxMjtcXG4gNzE4OlxcdFxcbiA3MTk6XFx0XFx0aWYgKCFmaW5kX3ZhbGlkX2dwdChzdGF0ZSwgXFx1MDAyNmdwdCwgXFx1MDAyNnB0ZXMpIHx8ICFncHQgfHwgIXB0ZXMpIHtcXG4gNzIwOlxcdFxcdFxcdGtmcmVlKGdwdCk7XFxuIDcyMTpcXHRcXHRcXHRrZnJlZShwdGVzKTtcXG4gNzIyOlxcdFxcdFxcdHJldHVybiAwO1xcbiA3MjM6XFx0XFx0fVxcbiA3MjQ6XFx0XFxuIDcyNTpcXHRcXHRwcl9kZWJ1ZyhcXFwiR1VJRCBQYXJ0aXRpb24gVGFibGUgaXMgdmFsaWQhICBZZWEhXFxcXG5cXFwiKTtcXG4gNzI2OlxcdFxcbiA3Mjc6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlMzJfdG9fY3B1KGdwdC1cXHUwMDNlbnVtX3BhcnRpdGlvbl9lbnRyaWVzKSBcXHUwMDI2XFx1MDAyNiBpIFxcdTAwM2Mgc3RhdGUtXFx1MDAzZWxpbWl0LTE7IGkrKykge1xcbiA3Mjg6XFx0XFx0XFx0c3RydWN0IHBhcnRpdGlvbl9tZXRhX2luZm8gKmluZm87XFxuIDcyOTpcXHRcXHRcXHR1bnNpZ25lZCBsYWJlbF9tYXg7XFxuIDczMDpcXHRcXHRcXHR1NjQgc3RhcnQgPSBsZTY0X3RvX2NwdShwdGVzW2ldLnN0YXJ0aW5nX2xiYSk7XFxuIDczMTpcXHRcXHRcXHR1NjQgc2l6ZSA9IGxlNjRfdG9fY3B1KHB0ZXNbaV0uZW5kaW5nX2xiYSkgLVxcbiA3MzI6XFx0XFx0XFx0XFx0ICAgbGU2NF90b19jcHUocHRlc1tpXS5zdGFydGluZ19sYmEpICsgMVVMTDtcXG4gNzMzOlxcdFxcbiA3MzQ6XFx0XFx0XFx0aWYgKCFpc19wdGVfdmFsaWQoXFx1MDAyNnB0ZXNbaV0sIGxhc3RfbGJhKHN0YXRlLVxcdTAwM2VkaXNrKSkpXFxuIDczNTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNzM2OlxcdFxcbiA3Mzc6XFx0XFx0XFx0cHV0X3BhcnRpdGlvbihzdGF0ZSwgaSsxLCBzdGFydCAqIHNzeiwgc2l6ZSAqIHNzeik7XFxuIDczODpcXHRcXG4gNzM5OlxcdFxcdFxcdC8qIElmIHRoaXMgaXMgYSBSQUlEIHZvbHVtZSwgdGVsbCBtZCAqL1xcbiA3NDA6XFx0XFx0XFx0aWYgKCFlZmlfZ3VpZGNtcChwdGVzW2ldLnBhcnRpdGlvbl90eXBlX2d1aWQsIFBBUlRJVElPTl9MSU5VWF9SQUlEX0dVSUQpKVxcbiA3NDE6XFx0XFx0XFx0XFx0c3RhdGUtXFx1MDAzZXBhcnRzW2kgKyAxXS5mbGFncyA9IEFERFBBUlRfRkxBR19SQUlEO1xcbiA3NDI6XFx0XFxuIDc0MzpcXHRcXHRcXHRpbmZvID0gXFx1MDAyNnN0YXRlLVxcdTAwM2VwYXJ0c1tpICsgMV0uaW5mbztcXG4gNzQ0OlxcdFxcdFxcdGVmaV9ndWlkX3RvX3N0cihcXHUwMDI2cHRlc1tpXS51bmlxdWVfcGFydGl0aW9uX2d1aWQsIGluZm8tXFx1MDAzZXV1aWQpO1xcbiA3NDU6XFx0XFxuIDc0NjpcXHRcXHRcXHQvKiBOYWl2ZWx5IGNvbnZlcnQgVVRGMTYtTEUgdG8gNyBiaXRzLiAqL1xcbiA3NDc6XFx0XFx0XFx0bGFiZWxfbWF4ID0gbWluKEFSUkFZX1NJWkUoaW5mby1cXHUwMDNldm9sbmFtZSkgLSAxLFxcbiA3NDg6XFx0XFx0XFx0XFx0XFx0QVJSQVlfU0laRShwdGVzW2ldLnBhcnRpdGlvbl9uYW1lKSk7XFxuIDc0OTpcXHRcXHRcXHR1dGYxNl9sZV90b183Yml0KHB0ZXNbaV0ucGFydGl0aW9uX25hbWUsIGxhYmVsX21heCwgaW5mby1cXHUwMDNldm9sbmFtZSk7XFxuIDc1MDpcXHRcXHRcXHRzdGF0ZS1cXHUwMDNlcGFydHNbaSArIDFdLmhhc19pbmZvID0gdHJ1ZTtcXG4gNzUxOlxcdFxcdH1cXG4gNzUyOlxcdFxcdGtmcmVlKHB0ZXMpO1xcbiA3NTM6XFx0XFx0a2ZyZWUoZ3B0KTtcXG4gNzU0OlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuIDc1NTpcXHRcXHRyZXR1cm4gMTtcXG4gNzU2OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MTguNjczNTk0NjAzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzI4NDc3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGJpdCBwdXp6bGluZyBhdCBmaXJzdCBnbGFuY2UuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBjaGFuZ2luZyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgZnJvbSBhIGJpdGZpZWxkIHN0cnVjdCB0byBhIGBfX2xlNjRgLiBUaGUga2VybmVsJ3MgYWN0dWFsbHkgKm5vdCogdXNpbmcgdGhvc2UgYGF0dHJpYnV0ZXNgIGFueXdoZXJlLCBzbyBvbiB0aGUgZmFjZSBvZiBpdCwgdGhpcyBjaGFuZ2Ugc2hvdWxkIGJlIGNvbXBsZXRlbHkgaW5lcnQuIEl0IHdvbid0IGFmZmVjdCB0aGUgZXhlY3V0aW9uIHBhdGggaW4gdGhlIHNsaWdodGVzdC5cblxuSXQncyBwcm9iYWJseSBqdXN0IGEgY2xlYW51cCwgcmlnaHQ/IFBlcmhhcHMgdGhleSdyZSBnZXR0aW5nIHJpZCBvZiB0aGUgYml0ZmllbGQgYmVjYXVzZSBpdCdzIG5vbi1zdGFuZGFyZCwgb3IgbWF5YmUgaXQgd2FzIGdlbmVyYXRpbmcgc3BhcnNlIHdhcm5pbmdzLiBPciwgbW9yZSBsaWtlbHksIHRoZXkncmUgYWxpZ25pbmcgdGhlIGRhdGEgdHlwZSB0byBtYXRjaCBob3cgdGhlIGZpZWxkIGlzIHJlcHJlc2VudGVkIG9uIGRpc2ssIGFzc3VtaW5nIGxpdHRsZS1lbmRpYW5uZXNzIGlzIHJlbGV2YW50LlxuXG5Ib2xkIG9uIGEgc2Vjb25kLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIGlzbid0ICp1c2VkKiBhbnl3aGVyZSBlbHNlIGluIHRoZSBrZXJuZWwuIEdvdHRhIGJlIHRob3JvdWdoLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBjcnVjaWFsIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NzUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzoxMDoyMi45NDY0NDcyODZaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzgyNjcxOTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdwdF9lbnRyeV9hdHRyaWJ1dGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MjcuODI0NzIzMzYzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODEwMjE2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVjaXNpb246IE5vIEZ1enppbmcgTmVjZXNzYXJ5KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgdGhyb3VnaCB0aGUgY2hhbmdlcy4gTm8gbWF0Y2hlcywgd2hpY2ggbWVhbnMgd2UncmUgZGVhbGluZyBwdXJlbHkgd2l0aCBkZWNvcmF0aXZlIHVwZGF0ZXMgb3IgY29kZSBjbGVhbnVwLiBDb25zZXF1ZW50bHksIGBXb3J0aEZ1enppbmdgIHNob3VsZCBkZWZpbml0ZWx5IGJlIHNldCB0byBgZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBzdWJ0bGUsIHVuZXhwZWN0ZWQgaW1wYWN0cy4gSG1tbSwgY291bGQgdGhlIGBzaXplb2YoZ3B0X2VudHJ5KWAgaGF2ZSBjaGFuZ2VkLCBldmVuIHN1YnRseT8gTGV0J3MgcmVmcmVzaCBvdXIgbWVtb3J5IG9uIGBncHRfZW50cnlfYXR0cmlidXRlc2A6XG5cbmBgYGNcbnR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnlfYXR0cmlidXRlcyB7XG5cdHU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxO1xuXHR1NjQgcmVzZXJ2ZWQ6NDc7XG4gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7XG59IF9fcGFja2VkIGdwdF9lbnRyeV9hdHRyaWJ1dGVzO1xuYGBgXG5cblJpZ2h0LCBpdCdzIGBfX3BhY2tlZGAuIEEgcGFja2VkIHN0cnVjdCwgdXNpbmcgNjQgYml0cyB3aXRoIGJpdGZpZWxkcywgKmFsd2F5cyogZW5kcyB1cCBiZWluZyBleGFjdGx5IDggYnl0ZXMuIEFuZCBgX19sZTY0YCBpcyBhbHNvIHByZWNpc2VseSA4IGJ5dGVzLiBTbywgYmFzZWQgb24gdGhpcyByZXZpZXcgb2YgdGhlIGNoYW5nZXMsIHRoZSBgc2l6ZW9mKGdwdF9lbnRyeSlgIHJlbWFpbnMgKmlkZW50aWNhbCouIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aGF0c29ldmVyLlxuXG5UaGVyZWZvcmUsIG15IGZpbmFsIGRlY2lzaW9uIGlzIGNsZWFyOiBJJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA0OCwiT3V0cHV0VG9rZW5zIjoxMzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MzMuMjA1NzQ4Mjc4WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBiaXRmaWVsZCBzdHJ1Y3QgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3aXRoIGEgc2ltcGxlIGBfX2xlNjQgYXR0cmlidXRlc2AgaW4gYGdwdF9lbnRyeWAuIFRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgbmV2ZXIgYWNjZXNzZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlLiBUaGUgc2l6ZSBvZiBgZ3B0X2VudHJ5YCByZW1haW5zIGV4YWN0bHkgdGhlIHNhbWUgKDEyOCBieXRlcykgYmVjYXVzZSB0aGUgb2xkIHN0cnVjdCB3YXMgYF9fcGFja2VkYCBhbmQgY29udGFpbmVkIGV4YWN0bHkgNjQgYml0cyBvZiBiaXRmaWVsZHMuIFRoZXJlZm9yZSwgdGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2NsZWFudXAgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBhIGJpdGZpZWxkIHN0cnVjdCBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdpdGggYSBzaW1wbGUgYF9fbGU2NCBhdHRyaWJ1dGVzYCBpbiBgZ3B0X2VudHJ5YC4gVGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCBpcyBuZXZlciBhY2Nlc3NlZCBhbnl3aGVyZSBpbiB0aGUga2VybmVsIGNvZGUuIFRoZSBzaXplIG9mIGBncHRfZW50cnlgIHJlbWFpbnMgZXhhY3RseSB0aGUgc2FtZSAoMTI4IGJ5dGVzKSBiZWNhdXNlIHRoZSBvbGQgc3RydWN0IHdhcyBgX19wYWNrZWRgIGFuZCBjb250YWluZWQgZXhhY3RseSA2NCBiaXRzIG9mIGJpdGZpZWxkcy4gVGhlcmVmb3JlLCB0aGlzIGlzIGEgcHVyZWx5IGRlY29yYXRpdmUvY2xlYW51cCBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow42nxx[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-26 06:46:29 +0000 UTC FinishedAt: 2026-07-26 07:10:34 +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+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgYml0ZmllbGQgc3RydWN0IGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2l0aCBhIHNpbXBsZSBgX19sZTY0IGF0dHJpYnV0ZXNgIGluIGBncHRfZW50cnlgLiBUaGUgYGF0dHJpYnV0ZXNgIGZpZWxkIGlzIG5ldmVyIGFjY2Vzc2VkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZS4gVGhlIHNpemUgb2YgYGdwdF9lbnRyeWAgcmVtYWlucyBleGFjdGx5IHRoZSBzYW1lICgxMjggYnl0ZXMpIGJlY2F1c2UgdGhlIG9sZCBzdHJ1Y3Qgd2FzIGBfX3BhY2tlZGAgYW5kIGNvbnRhaW5lZCBleGFjdGx5IDY0IGJpdHMgb2YgYml0ZmllbGRzLiBUaGVyZWZvcmUsIHRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZS9jbGVhbnVwIGNoYW5nZSB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFlODcxZjNjNmU2ZDk0Y2U3MjhjNDU3ZmYxNWU4ZGY0OWMyMDdjY2JcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEp1bCAyNiAwNzowODozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2VmaS5oIGIvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuaW5kZXggODRiOWYzNmI5ZTQ3OTcuLjFmNTZmOTNiMjgwNDhmIDEwMDY0NFxuLS0tIGEvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuJiM0MzsmIzQzOyYjNDM7IGIvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuQEAgLTc1LDE4ICYjNDM7NzUsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgX2dwdF9oZWFkZXIge1xuIFx0ICovXG4gfSBfX3BhY2tlZCBncHRfaGVhZGVyO1xuIFxuLXR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnlfYXR0cmlidXRlcyB7XG4tXHR1NjQgcmVxdWlyZWRfdG9fZnVuY3Rpb246MTtcbi1cdHU2NCByZXNlcnZlZDo0Nztcbi0gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7XG4tfSBfX3BhY2tlZCBncHRfZW50cnlfYXR0cmlidXRlcztcbi1cbiB0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcbiBcdGVmaV9ndWlkX3QgcGFydGl0aW9uX3R5cGVfZ3VpZDtcbiBcdGVmaV9ndWlkX3QgdW5pcXVlX3BhcnRpdGlvbl9ndWlkO1xuIFx0X19sZTY0IHN0YXJ0aW5nX2xiYTtcbiBcdF9fbGU2NCBlbmRpbmdfbGJhO1xuLVx0Z3B0X2VudHJ5X2F0dHJpYnV0ZXMgYXR0cmlidXRlcztcbiYjNDM7XHRfX2xlNjQgYXR0cmlidXRlcztcbiBcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XG4gfSBfX3BhY2tlZCBncHRfZW50cnk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGEgYml0ZmllbGQgc3RydWN0IGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2l0aCBhIHNpbXBsZSBgX19sZTY0IGF0dHJpYnV0ZXNgIGluIGBncHRfZW50cnlgLiBUaGUgYGF0dHJpYnV0ZXNgIGZpZWxkIGlzIG5ldmVyIGFjY2Vzc2VkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZS4gVGhlIHNpemUgb2YgYGdwdF9lbnRyeWAgcmVtYWlucyBleGFjdGx5IHRoZSBzYW1lICgxMjggYnl0ZXMpIGJlY2F1c2UgdGhlIG9sZCBzdHJ1Y3Qgd2FzIGBfX3BhY2tlZGAgYW5kIGNvbnRhaW5lZCBleGFjdGx5IDY0IGJpdHMgb2YgYml0ZmllbGRzLiBUaGVyZWZvcmUsIHRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZS9jbGVhbnVwIGNoYW5nZSB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIGV4ZWN1dGlvbiBmbG93LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFlODcxZjNjNmU2ZDk0Y2U3MjhjNDU3ZmYxNWU4ZGY0OWMyMDdjY2IKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEp1bCAyNiAwNzowODozOSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmggYi9ibG9jay9wYXJ0aXRpb25zL2VmaS5oCmluZGV4IDg0YjlmMzZiOWU0Nzk3Li4xZjU2ZjkzYjI4MDQ4ZiAxMDA2NDQKLS0tIGEvYmxvY2svcGFydGl0aW9ucy9lZmkuaAomIzQzOyYjNDM7JiM0MzsgYi9ibG9jay9wYXJ0aXRpb25zL2VmaS5oCkBAIC03NSwxOCAmIzQzOzc1LDEyIEBAIHR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHsKIAkgKi8KIH0gX19wYWNrZWQgZ3B0X2hlYWRlcjsKIAotdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHsKLQl1NjQgcmVxdWlyZWRfdG9fZnVuY3Rpb246MTsKLQl1NjQgcmVzZXJ2ZWQ6NDc7Ci0gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7Ci19IF9fcGFja2VkIGdwdF9lbnRyeV9hdHRyaWJ1dGVzOwotCiB0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHsKIAllZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7CiAJZWZpX2d1aWRfdCB1bmlxdWVfcGFydGl0aW9uX2d1aWQ7CiAJX19sZTY0IHN0YXJ0aW5nX2xiYTsKIAlfX2xlNjQgZW5kaW5nX2xiYTsKLQlncHRfZW50cnlfYXR0cmlidXRlcyBhdHRyaWJ1dGVzOwomIzQzOwlfX2xlNjQgYXR0cmlidXRlczsKIAlfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildOwogfSBfX3BhY2tlZCBncHRfZW50cnk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMgoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRUZJIFBhcnRpdGlvbiBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmhgLCBhbmQgaXQgbG9va3MgbGlrZSBhIGdvb2Qgb25lLiBUaGV5JiMzOTtyZSByZW1vdmluZyB0aGUgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCBzdHJ1Y3QsIHdoaWNoIHdhcyB1c2luZyBiaXRmaWVsZHMsIGFuZCByZXBsYWNpbmcgaXQgd2l0aCBhIHNpbXBsZSBgX19sZTY0IGF0dHJpYnV0ZXNgIGZpZWxkIGRpcmVjdGx5IHdpdGhpbiB0aGUgYGdwdF9lbnRyeWAgc3RydWN0LiBUaGlzIGlzIGEgc21hcnQgbW92ZSwgSSBpbW1lZGlhdGVseSBzZWUgdGhlIGJlbmVmaXQuIEJpdGZpZWxkcyBhcmUgbm90b3Jpb3VzIGZvciBiZWluZyBpbXBsZW1lbnRhdGlvbi1kZWZpbmVkOyB0aGUgbGF5b3V0IGlzbiYjMzk7dCBndWFyYW50ZWVkIHRvIGJlIGNvbnNpc3RlbnQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLCBhbmQgdGhhdCBjYW4gbGVhZCB0byBzb21lIG5hc3R5IGVuZGlhbm5lc3MgYW5kIGxheW91dCBidWdzIGRvd24gdGhlIGxpbmUuIFVzaW5nIGBfX2xlNjRgIHByb3ZpZGVzIGEgbXVjaCBtb3JlIHByZWRpY3RhYmxlIGFuZCBwb3J0YWJsZSB3YXkgdG8gaGFuZGxlIHRoZXNlIGF0dHJpYnV0ZXMsIGVmZmVjdGl2ZWx5IGVuc3VyaW5nIHRoZSBkYXRhIGlzIGNvcnJlY3RseSBpbnRlcnByZXRlZCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0mIzM5O3MgYnl0ZSBvcmRlci4gSXQmIzM5O3MgYSBjbGVhbiBhbmQgZWZmaWNpZW50IGZpeCB0byBhIHBvdGVudGlhbCBsb25nLXRlcm0gcHJvYmxlbS4gSSBsaWtlIHRoaXMuIEJ1dCwganVzdCB0byBiZSB0aG9yb3VnaCwgSSBzaG91bGQgY2hlY2sgaWYgdGhpcyBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdhcyB1c2VkIGFueXdoZXJlIGVsc2UuIEdvdHRhIG1ha2Ugc3VyZSB3ZSYjMzk7cmUgbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGZyb20gdGhpcyBjaGFuZ2UuIEFsd2F5cyBkb3VibGUgY2hlY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtncHRfZW50cnlfYXR0cmlidXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUwMwoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyBgZ3B0X2VudHJ5YCBVc2FnZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpdmUgaW4uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIGlzIGdlYXJlZCB0b3dhcmRzIGEgdGFyZ2V0ZWQgc2VhcmNoLiBJIG5lZWQgdG8gcGlucG9pbnQgZXZlcnkgaW5zdGFuY2Ugb2YgYGdwdF9lbnRyeWAuIFRoaXMgaXMgbGlrZWx5IHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyBhIHNwZWNpZmljIG1vZHVsZSwgZnVuY3Rpb24sIG9yIGRhdGEgc3RydWN0dXJlIHdpdGhpbiB0aGlzIGNvZGUgYmFzZS4gSSYjMzk7bSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCB0aGUgYmVzdCBzZWFyY2ggdG9vbHMgdG8gdXNlIOKAkyBncmVwLCByaXBncmVwLCB0aGUgSURFJiMzOTtzIGJ1aWx0LWluIHNlYXJjaCB3aXRoIGFkdmFuY2VkIG9wdGlvbnMuLi4gSSBuZWVkIGEgc2VhcmNoIHRoYXQmIzM5O3MgcHJlY2lzZSBidXQgYWxzbyBjb3ZlcnMgcG90ZW50aWFsIHZhcmlhdGlvbnMuIEFtIEkgbG9va2luZyBmb3IgYSBsaXRlcmFsIHN0cmluZyBtYXRjaCwgb3Igc2hvdWxkIEkgY29uc2lkZXIgcmVndWxhciBleHByZXNzaW9ucyB0byBhY2NvdW50IGZvciBkaWZmZXJlbnQgY2FwaXRhbGl6YXRpb24gb3IgbmFtaW5nIGNvbnZlbnRpb25zIChgR1BUX0VOVFJZYCwgYEdwdEVudHJ5YCwgZXRjLik/IEFsc28sIEkgbmVlZCB0byBjb25zaWRlciB3aGVyZSBJIHNob3VsZCBiZSBzZWFyY2hpbmcuIElzIGl0IHRoZSBlbnRpcmUgcHJvamVjdCwgb3IgYSBzdWJzZXQgb2YgZGlyZWN0b3JpZXMgYmFzZWQgb24gbXkgZXhpc3Rpbmcga25vd2xlZGdlPyBUaGUgc2NvcGUgd2lsbCBzaWduaWZpY2FudGx5IGltcGFjdCBib3RoIHRoZSB0aW1lIHRvIHJ1biBhbmQgdGhlIG5vaXNlLXRvLXNpZ25hbCByYXRpbyBvZiB0aGUgcmVzdWx0cy4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBjaGVjayBhbnkgY29uZmlndXJhdGlvbiBmaWxlcywgZG9jdW1lbnRhdGlvbiwgYW5kIGV2ZW4gdGVzdCBjYXNlcywgYXMgdGhvc2UgYXJlIG9mdGVuIHdoZXJlIHRoZXNlIHR5cGVzIG9mIHRoaW5ncyBhcmUgZGVmaW5lZCBhbmQgdXNlZC4gTGV0JiMzOTtzIGdldCBzZWFyY2hpbmcgYW5kIHNlZSB3aGF0IHdlIHVuY292ZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z3B0X2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI2OS0gKi9cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjcxLVx0XHRcdFx0XHQgZ3B0X2hlYWRlciAqZ3B0KVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjczLVx0c2l6ZV90IGNvdW50O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzoyNzQ6XHRncHRfZW50cnkgKnB0ZTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MzM0PXN0YXRpYyBpbnQgaXNfZ3B0X3ZhbGlkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHU2NCBsYmEsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcdFx0XHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0zMzYte1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVx0LyogQ2hlY2sgdGhhdCBzaXplb2ZfcGFydGl0aW9uX2VudHJ5IGhhcyB0aGUgY29ycmVjdCB2YWx1ZSAqL1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0MTU6XHRpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKSB7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQxNi1cdFx0cHJfZGVidWcoXCYjMzQ7R1VJRCBQYXJ0aXRpb24gRW50cnkgU2l6ZSBjaGVjayBmYWlsZWQuXFxuXCYjMzQ7KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTQ1OT1zdGF0aWMgaW5saW5lIGludFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0NjA6aXNfcHRlX3ZhbGlkKGNvbnN0IGdwdF9lbnRyeSAqcHRlLCBjb25zdCB1NjQgbGFzdGxiYSlcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTU4MD1zdGF0aWMgaW50IGZpbmRfdmFsaWRfZ3B0KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGdwdF9oZWFkZXIgKipncHQsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcdFx0XHQgIGdwdF9lbnRyeSAqKnB0ZXMpXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Mi17XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXHRncHRfaGVhZGVyICpwZ3B0ID0gTlVMTCwgKmFncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo1ODU6XHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNTg2LVx0bGVnYWN5X21iciAqbGVnYWN5bWJyO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NzEyPWludCBlZmlfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXHRncHRfaGVhZGVyICpncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3MTU6XHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTYtXHR1MzIgaTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oPTU1PXR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo3ODp0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNzktXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC04NC1cdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oOjg1On0gX19wYWNrZWQgZ3B0X2VudHJ5O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuaC04Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTg5CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMTI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1BUIFBhcnRpdGlvbiBUYWJsZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHN3aXRjaGluZyB0aGUgYGF0dHJpYnV0ZXNgIGZpZWxkIHdpdGhpbiB0aGUgYGdwdF9lbnRyeWAgc3RydWN0dXJlIGZyb20gYSBiaXRmaWVsZCBzdHJ1Y3QgdG8gYSBgX19sZTY0YCB0eXBlLiBUaGF0JiMzOTtzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBhIGdvb2Qgb25lIGF0IHRoYXQuIEl0IGxvb2tzIGxpa2UgaXQmIzM5O3MgYWRkcmVzc2luZyBlbmRpYW5uZXNzIG9yIGxheW91dCBwcm9ibGVtcywgd2hpY2ggaXMgY3JpdGljYWwgd2hlbiBkZWFsaW5nIHdpdGggRUZJIEdVSUQgUGFydGl0aW9uIFRhYmxlcyAoR1BUcykuCgpUaGUgcmVsZXZhbnQgZmlsZSBpcyBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AsIHdoaWNoIG1ha2VzIHBlcmZlY3Qgc2Vuc2UuIFRoaXMgY29kZSBpcyByZXNwb25zaWJsZSBmb3IgcGFyc2luZyBHUFQgcGFydGl0aW9uIHRhYmxlcy4gSSBjYW4gc2VlIHRoZSByZWxldmFuY2UsIGdpdmVuIHRoYXQgdGhpcyBpcyBhIGNvcmUgY29tcG9uZW50IG9mIHRoZSBibG9jayBkZXZpY2UgaW50ZXJhY3Rpb24sIHNwZWNpZmljYWxseSBoYW5kbGluZyBob3cgdGhlIHN5c3RlbSB1bmRlcnN0YW5kcyBhbmQgdXRpbGl6ZXMgc3RvcmFnZSBkZXZpY2VzLgoKVGhlIHBhdGggdG8gdGhpcyBjb2RlIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYSBibG9jayBkZXZpY2Ugd2l0aCBhIEdQVCBwYXJ0aXRpb24gdGFibGUuIEFuZCB0aGUgZW50cnkgcG9pbnQgZm9yIEVGSSBwYXJ0aXRpb24gcGFyc2luZyBpcyB0aGUgYGVmaV9wYXJ0aXRpb25gIGZ1bmN0aW9uLCBhbHNvIGluIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYC4KCk5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgYmVpbmcgdXNlZC4gU2VlaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2Ugd2lsbCBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIGhvdyB0aGlzIGFmZmVjdHMgb3RoZXIgcmVsYXRlZCBzdHJ1Y3R1cmVzIG9yIGZ1bmN0aW9ucy4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXR0cmlidXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMjgKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZS4uLiBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgLCBhbmQgSSYjMzk7bSBhIGJpdCBwdXp6bGVkLiBJIHdhcyBleHBlY3RpbmcgdG8gZmluZCByZWZlcmVuY2VzIHRvIHRoZSBgYXR0cmlidXRlc2AgdmFyaWFibGUgaW4gdGhlcmUsIGJ1dCBpdCYjMzk7cyBub3QgcHJlc2VudC4gVGhhdCBzZWVtcyBvZGQsIHJpZ2h0PyBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhhdCB2YXJpYWJsZSBpcyB1c2VkIGluIG90aGVyIHBsYWNlcyB3aXRoaW4gdGhlIGNvZGViYXNlLiBJdCYjMzk7cyBjcnVjaWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgYSB2YXJpYWJsZSBpcyBkZWZpbmVkIGFuZCBob3cgaXQmIzM5O3MgdXNlZCwgZXZlbiBpZiBpdCYjMzk7cyBub3QgaW4gdGhlIGV4cGVjdGVkIGxvY2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IHdpbGwgaGVscCBtZSB3aXRoIGFueSBjaGFuZ2VzIHRvIHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSB1c2FnZSBvZiBgYXR0cmlidXRlc2AgdG8gc2VlIHdoZXJlIGl0IGNvbWVzIGludG8gcGxheS4gSSBhbSBzdXJlIEkgd2lsbCBmaW5kIHNvbWUgY29ubmVjdGlvbnMhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2F0dHJpYnV0ZXMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5oPTc4PXR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnkge1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODItXHRfX2xlNjQgZW5kaW5nX2xiYTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6ODM6XHRfX2xlNjQgYXR0cmlidXRlcztcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODQtXHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MzQxCgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBHUFQgUGFydGl0aW9uIEVudHJ5IEF0dHJpYnV0ZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGludG8gdGhpcyBgYXR0cmlidXRlc2AgZmllbGQgd2l0aGluIHRoZSBgZ3B0X2VudHJ5YCBzdHJ1Y3R1cmUuIEl0IGluaXRpYWxseSBzZWVtZWQgdW51c2VkIHdpdGhpbiB0aGUga2VybmVsJiMzOTtzIGFjdHVhbCBjb2RlLCBqdXN0IGRlZmluZWQgYXMgcGFydCBvZiB0aGUgc3RydWN0dXJlLiBCdXQgaG9sZCBvbiwgdGhlIGBzaXplb2YoZ3B0X2VudHJ5KWAgaXMgaW5kZWVkIHVzZWQsIHNwZWNpZmljYWxseSBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AsIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIFRoZSBjb2RlIGNoZWNrcyBgaWYgKGxlMzJfdG9fY3B1KCgqZ3B0KS0mZ3Q7c2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSkgIT0gc2l6ZW9mKGdwdF9lbnRyeSkpYC4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzaXplLiBCZWZvcmUsIHRoZSBgZ3B0X2VudHJ5YCBzaXplIHdhcyAxMjggYnl0ZXMsIGFuZCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpdCAqc3RpbGwqIGlzIDEyOCBieXRlcy4gR29vZCwgdGhhdCBtYXRjaGVzIG15IGludHVpdGlvbi4gU28sIHRoZSBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdhczoKYGBgYwp0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5X2F0dHJpYnV0ZXMgewoJdTY0IHJlcXVpcmVkX3RvX2Z1bmN0aW9uOjE7Cgl1NjQgcmVzZXJ2ZWQ6NDc7CiAgICAgICAgdTY0IHR5cGVfZ3VpZF9zcGVjaWZpYzoxNjsKfSBfX3BhY2tlZCBncHRfZW50cnlfYXR0cmlidXRlczsKYGBgCgpUaGF0JiMzOTtzIGFuIDgtYnl0ZSBzdHJ1Y3R1cmUsIHdoaWNoIG1ha2VzIHNlbnNlLiBBbmQgdGhlIGBfX2xlNjQgYXR0cmlidXRlcztgIG1lbWJlciBpcyBhbHNvIDggYnl0ZXMuIFNvIHRoZSBjaGFuZ2UgdG8gdGhlIGBhdHRyaWJ1dGVzYCBkZWZpbml0aW9uIGRpZG4mIzM5O3QgYWZmZWN0IHRoZSBvdmVyYWxsIGBncHRfZW50cnlgIHNpemUuIEkgd2FzIG9uIHRoZSByaWdodCB0cmFjayB0aGVyZS4gSG93ZXZlciwganVzdCBiZWNhdXNlIHRoZSBzaXplIGlzIGNvcnJlY3QgZG9lc24mIzM5O3QgbWVhbiBpdCYjMzk7cyByaWdodC4gSSYjMzk7bSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGZvciBtb3JlIHVzZXMgb2YgYGF0dHJpYnV0ZXNgIHRvIGJlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgcG90ZW50aWFsIHNpZGUgZWZmZWN0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Z3B0X2VudHJ5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI2OS0gKi9cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjcxLVx0XHRcdFx0XHQgZ3B0X2hlYWRlciAqZ3B0KVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjczLVx0c2l6ZV90IGNvdW50O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzoyNzQ6XHRncHRfZW50cnkgKnB0ZTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MzM0PXN0YXRpYyBpbnQgaXNfZ3B0X3ZhbGlkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHU2NCBsYmEsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcdFx0XHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0zMzYte1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVx0LyogQ2hlY2sgdGhhdCBzaXplb2ZfcGFydGl0aW9uX2VudHJ5IGhhcyB0aGUgY29ycmVjdCB2YWx1ZSAqL1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0MTU6XHRpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKSB7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQxNi1cdFx0cHJfZGVidWcoXCYjMzQ7R1VJRCBQYXJ0aXRpb24gRW50cnkgU2l6ZSBjaGVjayBmYWlsZWQuXFxuXCYjMzQ7KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTQ1OT1zdGF0aWMgaW5saW5lIGludFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0NjA6aXNfcHRlX3ZhbGlkKGNvbnN0IGdwdF9lbnRyeSAqcHRlLCBjb25zdCB1NjQgbGFzdGxiYSlcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTU4MD1zdGF0aWMgaW50IGZpbmRfdmFsaWRfZ3B0KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGdwdF9oZWFkZXIgKipncHQsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcdFx0XHQgIGdwdF9lbnRyeSAqKnB0ZXMpXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Mi17XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXHRncHRfaGVhZGVyICpwZ3B0ID0gTlVMTCwgKmFncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo1ODU6XHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNTg2LVx0bGVnYWN5X21iciAqbGVnYWN5bWJyO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NzEyPWludCBlZmlfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXHRncHRfaGVhZGVyICpncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3MTU6XHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTYtXHR1MzIgaTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oPTU1PXR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo3ODp0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNzktXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC04NC1cdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oOjg1On0gX19wYWNrZWQgZ3B0X2VudHJ5O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuaC04Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTcyMAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDIwNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIFR5cGUgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHByb3Bvc2VkIGNoYW5nZSBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O1dhaXQgYSBtaW51dGUsIGlmIGBhdHRyaWJ1dGVzYCBpc24mIzM5O3QgYWN0dWFsbHkgKnVzZWQqIGFueXdoZXJlLCB0aGVuIGFsdGVyaW5nIGl0cyB0eXBlIHNob3VsZG4mIzM5O3QgY2hhbmdlIHRoZSBleGVjdXRpb24gZmxvdyBhdCBhbGwsIHJpZ2h0PyYjMzQ7IFRoZSBvbmx5IHNpdHVhdGlvbiB3aGVyZSB0aGlzIG1pZ2h0ICpub3QqIGJlIHRydWUgaXMgaWYgdGhlIGBncHRfZW50cnlfYXR0cmlidXRlc2Agc3RydWN0IHNvbWVob3cgaGFkIGEgZGlmZmVyZW50IHNpemUgdGhhbiA4IGJ5dGVzIG9uIHNvbWUgYXJjaGl0ZWN0dXJlcy4gVGhpcyBjb3VsZCBoYXBwZW4gZHVlIHRvIGJpdGZpZWxkIHBhY2tpbmcgcnVsZXMsIHdoaWNoIGNvdWxkIHRoZW4gYWx0ZXIgdGhlIGBzaXplb2YoZ3B0X2VudHJ5KWAuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0JiMzOTtzIHRoZSBjYXNlLiBMZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgdGhlIGRlZmluaXRpb24gb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYDoKCmBgYGMKdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHsKCXU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxOwoJdTY0IHJlc2VydmVkOjQ3OwogICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7Cn0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7CmBgYAoKQWhhISBJdCYjMzk7cyBnb3QgYF9fcGFja2VkYC4gVGhhdCBzaG91bGQgZm9yY2UgaXQgdG8gYmUgZXhhY3RseSA4IGJ5dGVzLCByZWdhcmRsZXNzIG9mIHRoZSBhcmNoaXRlY3R1cmUuIFNvLCBpZiBpdCBpcyBpbmRlZWQgOCBieXRlcywgYW5kIG5ldmVyIGFjdHVhbGx5IGFjY2Vzc2VkLCB0aGVuIHRoaXMgd2hvbGUgdGhpbmcgaXMgZXNzZW50aWFsbHkgYSBjb3NtZXRpYyBjaGFuZ2Ugb3IgY2xlYW51cCBvcGVyYXRpb24uCgpOb3csIEkgcmVhbGx5IG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IHdvcmsuIExldCYjMzk7cyB0aG9yb3VnaGx5IHNlYXJjaCB0aGUga2VybmVsIGNvZGUgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIHRoYXQgdGhpcyBgYXR0cmlidXRlc2AgZmllbGQgaXNuJiMzOTt0IGJlaW5nIGFjY2Vzc2VkIGFueXdoZXJlLiBJIG5lZWQgdG8gYmUgMTAwJSBzdXJlIGJlZm9yZSBJIGNvbWUgdG8gYSBjb25jbHVzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtcXC5hdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiA2MzcgbGluZXMuXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXG5cbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHk9NTExPWRlZiB2aXNpdF9rZXJuZWxfcmVuZGVyKHNlbGYsIG5vZGUpOlxuLS1cbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHktNTM1LSAgICBjb2RlICAgICAgPSBsaXRlcmFsX2Jsb2NrLmFzdGV4dCgpXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5OjUzNjogICAgaGFzaG9iaiAgID0gY29kZS5lbmNvZGUoJiMzOTt1dGYtOCYjMzk7KSAjICBzdHIobm9kZS5hdHRyaWJ1dGVzKVxuRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weS01MzctICAgIGZuYW1lICAgICA9IHBhdGguam9pbigmIzM5OyVzLSVzJiMzOTsgJSAoc3JjbGFuZywgc2hhMShoYXNob2JqKS5oZXhkaWdlc3QoKSkpXG4tLVxuRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weS01NDYtXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5OjU0NzogICAgaW1nX25vZGUgPSBub2Rlcy5pbWFnZShub2RlLnJhd3NvdXJjZSwgKipub2RlLmF0dHJpYnV0ZXMpXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5LTU0OC0gICAgaW1nX25vZGVbJiMzOTt1cmkmIzM5O10gPSBwYXRoLmpvaW4oc2VsZi5idWlsZGVyLmltZ3BhdGgsIGZuYW1lICYjNDM7IHRtcF9leHQpXG4tLVxuRG9jdW1lbnRhdGlvbi9zcGhpbngvcnN0RmxhdFRhYmxlLnB5PTEzNj1jbGFzcyBMaXN0VGFibGVCdWlsZGVyKG9iamVjdCk6XG4tLVxuRG9jdW1lbnRhdGlvbi9zcGhpbngvcnN0RmxhdFRhYmxlLnB5LTE3MC0gICAgICAgICAgICBpZiBzdHViX2NvbHVtbnM6XG5Eb2N1bWVudGF0aW9uL3NwaGlueC9yc3RGbGF0VGFibGUucHk6MTcxOiAgICAgICAgICAgICAgICBjb2xzcGVjLmF0dHJpYnV0ZXNbJiMzOTtzdHViJiMzOTtdID0gMVxuRG9jdW1lbnRhdGlvbi9zcGhpbngvcnN0RmxhdFRhYmxlLnB5LTE3Mi0gICAgICAgICAgICAgICAgc3R1Yl9jb2x1bW5zIC09IDFcbi0tXG5hcmNoL2FybS9pbmNsdWRlL2FzbS92bWxpbnV4Lmxkcy5oLTg2LVx0XHRFTEZfREVUQUlMU1x0XHRcdFx0XHRcdFxcXG5hcmNoL2FybS9pbmNsdWRlL2FzbS92bWxpbnV4Lmxkcy5oOjg3Olx0XHQuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgKiguQVJNLmF0dHJpYnV0ZXMpIH1cbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3ZtbGludXgubGRzLmgtODgtXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TPTIxPVNFQ1RJT05TXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TLTQwLVx0XHQqKC5ub3RlLkdOVS1zdGFjayAubm90ZS5nbnUucHJvcGVydHkpXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlM6NDE6XHRcdCooLkFSTS5hdHRyaWJ1dGVzKVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TLTQyLVx0fVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TPTIwPVNFQ1RJT05TXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdmRzbzMyL3Zkc28ubGRzLlMtNjAtXHRFTEZfREVUQUlMU1xuYXJjaC9hcm02NC9rZXJuZWwvdmRzbzMyL3Zkc28ubGRzLlM6NjE6XHQuQVJNLmF0dHJpYnV0ZXMgMCA6IHsgKiguQVJNLmF0dHJpYnV0ZXMpIH1cbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TLTYyLVxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM9MTc0PVNFQ1RJT05TXG4tLVxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUy0xODUtXHRcdCooLmR5bnN5bSAuZHluc3RyIC5oYXNoIC5nbnUuaGFzaClcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlM6MTg2Olx0XHQqKC5BUk0uYXR0cmlidXRlcylcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtMTg3LVx0fVxuLS1cbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUz0yNj1TRUNUSU9OU1xuLS1cbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUy02Ni1cdEVMRl9ERVRBSUxTXG5hcmNoL2hleGFnb24va2VybmVsL3ZtbGludXgubGRzLlM6Njc6XHQuaGV4YWdvbi5hdHRyaWJ1dGVzIDAgOiB7ICooLmhleGFnb24uYXR0cmlidXRlcykgfVxuYXJjaC9oZXhhZ29uL2tlcm5lbC92bWxpbnV4Lmxkcy5TLTY4LVxuLS1cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92bWxpbnV4Lmxkcy5TPTQxPVNFQ1RJT05TXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3ZtbGludXgubGRzLlMtMTc4LVx0XHQqKC5keW5hbWljIC5keW5zeW0gLmR5bnN0ciAuaGFzaCAuZ251Lmhhc2gpXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdm1saW51eC5sZHMuUzoxNzk6XHRcdCooLmdudS5hdHRyaWJ1dGVzKVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL3ZtbGludXgubGRzLlMtMTgwLVx0XHQqKC5vcHRpb25zKVxuLS1cbmFyY2gvbG9vbmdhcmNoL3Zkc28vdmRzby5sZHMuUz0xMj1TRUNUSU9OU1xuLS1cbmFyY2gvbG9vbmdhcmNoL3Zkc28vdmRzby5sZHMuUy00My1cdC9ESVNDQVJEL1x0OiB7XG5hcmNoL2xvb25nYXJjaC92ZHNvL3Zkc28ubGRzLlM6NDQ6XHRcdCooLmdudS5hdHRyaWJ1dGVzKVxuYXJjaC9sb29uZ2FyY2gvdmRzby92ZHNvLmxkcy5TLTQ1LVx0XHQqKC5ub3RlLkdOVS1zdGFjaylcbi0tXG5hcmNoL21pcHMva2VybmVsL3ZtbGludXgubGRzLlM9NDM9U0VDVElPTlNcbi0tXG5hcmNoL21pcHMva2VybmVsL3ZtbGludXgubGRzLlMtMjM4LVx0XHQqKC5NSVBTLm9wdGlvbnMpXG5hcmNoL21pcHMva2VybmVsL3ZtbGludXgubGRzLlM6MjM5Olx0XHQqKC5nbnUuYXR0cmlidXRlcylcbmFyY2gvbWlwcy9rZXJuZWwvdm1saW51eC5sZHMuUy0yNDAtXHRcdCooLm9wdGlvbnMpXG4tLVxuYXJjaC9taXBzL3Zkc28vdmRzby5sZHMuUz0yMT1TRUNUSU9OU1xuLS1cbmFyY2gvbWlwcy92ZHNvL3Zkc28ubGRzLlMtNjUtXHRcdCooLk1JUFMuYWJpZmxhZ3MpXG5hcmNoL21pcHMvdmRzby92ZHNvLmxkcy5TOjY2Olx0XHQqKC5nbnUuYXR0cmlidXRlcylcbmFyY2gvbWlwcy92ZHNvL3Zkc28ubGRzLlMtNjctXHRcdCooLm5vdGUuR05VLXN0YWNrKVxuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUz00OD1TRUNUSU9OU1xuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUy00MDctXHRcdCooLmdudS52ZXJzaW9uKilcbmFyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUzo0MDg6XHRcdCooLmdudS5hdHRyaWJ1dGVzKVxuYXJjaC9wb3dlcnBjL2tlcm5lbC92bWxpbnV4Lmxkcy5TLTQwOS1cdFx0KiguZWhfZnJhbWUpXG4tLVxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUz0yNj1TRUNUSU9OU1xuLS1cbmFyY2gvcmlzY3Yva2VybmVsL3ZtbGludXgubGRzLlMtMTcwLVx0RUxGX0RFVEFJTFNcbmFyY2gvcmlzY3Yva2VybmVsL3ZtbGludXgubGRzLlM6MTcxOlx0LnJpc2N2LmF0dHJpYnV0ZXMgMCA6IHsgKigucmlzY3YuYXR0cmlidXRlcykgfVxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUy0xNzItXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvL3Zkc28ubGRzLlM9MTY9U0VDVElPTlNcbi0tXG5hcmNoL3MzOTAva2VybmVsL3Zkc28vdmRzby5sZHMuUy02NS1cdC5jb21tZW50ICAgICAgIDAgOiB7ICooLmNvbW1lbnQpIH1cbmFyY2gvczM5MC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TOjY2Olx0LmdudS5hdHRyaWJ1dGVzIDAgOiB7IEtFRVAgKCooLmdudS5hdHRyaWJ1dGVzKSkgfVxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvL3Zkc28ubGRzLlMtNjctXG4tLVxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jPTEzND1zdGF0aWMgaW50IGh2X3Z0bF9icmluZ3VwX3ZjcHUodTMyIHRhcmdldF92cF9pbmRleCwgaW50IGNwdSwgdTY0IGVpcF9pZ25vcmVkKVxuLS1cbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMDEtXHRpbnB1dC1cdTAwM2V2cF9jb250ZXh0LmNzLmxpbWl0ID0gMHhmZmZmZmZmZjtcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYzoyMDI6XHRpbnB1dC1cdTAwM2V2cF9jb250ZXh0LmNzLmF0dHJpYnV0ZXMgPSAweGEwOWI7XG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmMtMjAzLVx0LyogTm9uLXN5c3RlbSBkZXNjICg2NGJpdCksIGRhdGEsIHByZXNlbnQsIGdyYW51bGFyaXR5LCBkZWZhdWx0ICovXG4tLVxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIwNi1cdGlucHV0LVx1MDAzZXZwX2NvbnRleHQuc3MubGltaXQgPSAweGZmZmZmZmZmO1xuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jOjIwNzpcdGlucHV0LVx1MDAzZXZwX2NvbnRleHQuc3MuYXR0cmlidXRlcyA9IDB4YzA5MztcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMDgtXG4tLVxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIxMi1cdGlucHV0LVx1MDAzZXZwX2NvbnRleHQubGR0ci5saW1pdCA9IGh2X3Z0bF9zeXN0ZW1fZGVzY19saW1pdChsZHQpO1xuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jOjIxMzpcdGlucHV0LVx1MDAzZXZwX2NvbnRleHQubGR0ci5hdHRyaWJ1dGVzID0gMHg4MjtcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMTQtXG4tLVxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIxOC1cdGlucHV0LVx1MDAzZXZwX2NvbnRleHQudHIubGltaXQgPSBodl92dGxfc3lzdGVtX2Rlc2NfbGltaXQodHNzKTtcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYzoyMTk6XHRpbnB1dC1cdTAwM2V2cF9jb250ZXh0LnRyLmF0dHJpYnV0ZXMgPSAweDhiO1xuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIyMC1cbi0tXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L3NneC9pb2N0bC5jPTQ2Nz1zdGF0aWMgaW50IHNneF9lbmNsX2luaXQoc3RydWN0IHNneF9lbmNsICplbmNsLCBzdHJ1Y3Qgc2d4X3NpZ3N0cnVjdCAqc2lnc3RydWN0LFxuLS1cbmFyY2gveDg2L2tlcm5lbC9jcHUvc2d4L2lvY3RsLmMtNDg2LVx0ICogb3B0IHRvIHNpZ24gd2l0aCBBVlggYml0IGluIHhmcm0sIGJ1dCBzdGlsbCBiZSBsb2FkYWJsZSBvbiBhIHBsYXRmb3JtXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L3NneC9pb2N0bC5jOjQ4NzpcdCAqIHdpdGhvdXQgaXQgaWYgdGhlIHNpZ3N0cnVjdC1cdTAwM2Vib2R5LmF0dHJpYnV0ZXNfbWFzayBkb2VzIG5vdCB0dXJuIHRoYXRcbmFyY2gveDg2L2tlcm5lbC9jcHUvc2d4L2lvY3RsLmMtNDg4LVx0ICogYml0IG9uLlxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYy00ODktXHQgKi9cbmFyY2gveDg2L2tlcm5lbC9jcHUvc2d4L2lvY3RsLmM6NDkwOlx0aWYgKHNpZ3N0cnVjdC1cdTAwM2Vib2R5LmF0dHJpYnV0ZXMgXHUwMDI2IHNpZ3N0cnVjdC1cdTAwM2Vib2R5LmF0dHJpYnV0ZXNfbWFzayBcdTAwMjZcbmFyY2gveDg2L2tlcm5lbC9jcHUvc2d4L2lvY3RsLmMtNDkxLVx0ICAgIHNneF9hdHRyaWJ1dGVzX3Jlc2VydmVkX21hc2spXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYz04MDIxPWJvb2wga3ZtX2FyY2hfcHJlX3NldF9tZW1vcnlfYXR0cmlidXRlcyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MDczLVx0LyogVW5tYXAgdGhlIG9sZCBhdHRyaWJ1dGUgcGFnZS4gKi9cbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODA3NDpcdGlmIChyYW5nZS1cdTAwM2VhcmcuYXR0cmlidXRlcyBcdTAwMjYgS1ZNX01FTU9SWV9BVFRSSUJVVEVfUFJJVkFURSlcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtODA3NS1cdFx0cmFuZ2UtXHUwMDNlYXR0cl9maWx0ZXIgPSBLVk1fRklMVEVSX1NIQVJFRDtcbi0tXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTgxMDE9Ym9vbCBrdm1fYXJjaF9wb3N0X3NldF9tZW1vcnlfYXR0cmlidXRlcyhzdHJ1Y3Qga3ZtICprdm0sXG4tLVxuYXJjaC94ODYva3ZtL21tdS9tbXUuYy04MTAzLXtcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODEwNDpcdHVuc2lnbmVkIGxvbmcgYXR0cnMgPSByYW5nZS1cdTAwM2VhcmcuYXR0cmlidXRlcztcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtODEwNS1cdHN0cnVjdCBrdm1fbWVtb3J5X3Nsb3QgKnNsb3QgPSByYW5nZS1cdTAwM2VzbG90O1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHBjLmM9MTAzPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2FjbnRwYyA9IHtcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRwYy5jLTEzMi1cdH0sXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRwYy5jOjEzMzpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hY250cGMuYy0xMzQtXHRcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmM9ODk9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYWNudHNhID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmMtMTE5LVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmM6MTIwOlx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRzYS5jLTEyMS1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hcG9sbG8uYz0xMDE9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYXBvbGxvID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYXBvbGxvLmMtMTMxLVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYXBvbGxvLmM6MTMyOlx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Fwb2xsby5jLTEzMy1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hdWRwdHIuYz05Mj1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9hdWRwdHIgPSB7XG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hdWRwdHIuYy0xMjItXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hdWRwdHIuYzoxMjM6XHQuYXR0cmlidXRlcyA9IHtcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYXVkcHRyLmMtMTI0LVx0XHQuYXR0cnMgPSBzeW50aF9hdHRycyxcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jPTg1PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2JucyA9IHtcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jLTExNS1cdH0sXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jOjExNjpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9ibnMuYy0xMTctXHRcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjZXh0LmM9MTE1PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2RlY2V4dCA9IHtcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY2V4dC5jLTE0Ni1cdH0sXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY2V4dC5jOjE0NzpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNleHQuYy0xNDgtXHRcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjcGMuYz0yMTM9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfZGVjX3BjID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjcGMuYy0yNDItXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNwYy5jOjI0MzpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNwYy5jLTI0NC1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWN0bGsuYz0xMjI9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfZGVjdGxrID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjdGxrLmMtMTU1LVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjdGxrLmM6MTU2Olx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3Rsay5jLTE1Ny1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmM9MTE5PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2R0bGsgPSB7XG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmMtMTQ4LVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZHRsay5jOjE0OTpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmMtMTUwLVx0XHQuYXR0cnMgPSBzeW50aF9hdHRycyxcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2R1bW15LmM9MTA1PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2R1bW15ID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZHVtbXkuYy0xMzUtXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdW1teS5jOjEzNjpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdW1teS5jLTEzNy1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9rZXlwYy5jPTk0PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2tleXBjID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfa2V5cGMuYy0xMjMtXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9rZXlwYy5jOjEyNDpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9rZXlwYy5jLTEyNS1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmM9MTAxPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2x0bGsgPSB7XG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmMtMTMxLVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfbHRsay5jOjEzMjpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmMtMTMzLVx0XHQuYXR0cnMgPSBzeW50aF9hdHRycyxcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYz0xMjg9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfc29mdCA9IHtcbi0tXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYy0xNTYtXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9zb2Z0LmM6MTU3Olx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYy0xNTgtXHRcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmM9OTI9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfc3Brb3V0ID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmMtMTIyLVx0fSxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmM6MTIzOlx0LmF0dHJpYnV0ZXMgPSB7XG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3Nwa291dC5jLTEyNC1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jPTkwPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX3R4cHJ0ID0ge1xuLS1cbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfdHhwcnQuYy0xMjAtXHR9LFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jOjEyMTpcdC5hdHRyaWJ1dGVzID0ge1xuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jLTEyMi1cdFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXG4tLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi94ODYtc3R1Yi5jPTM2Nz1lZmlfc3RhdHVzX3QgZWZpX2FkanVzdF9tZW1vcnlfcmFuZ2VfcHJvdGVjdGlvbih1bnNpZ25lZCBsb25nIHN0YXJ0LFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYy00MjMtXHRcdCAgICAgZGVzYy5nY2RfbWVtb3J5X3R5cGUgIT0gRWZpR2NkTWVtb3J5VHlwZU1vcmVSZWxpYWJsZSkgfHxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYzo0MjQ6XHRcdCAgICAoZGVzYy5hdHRyaWJ1dGVzIFx1MDAyNiAoRUZJX01FTU9SWV9STyB8IEVGSV9NRU1PUllfWFApKSA9PSAwKVxuZHJpdmVycy9maXJtd2FyZS9lZmkvbGlic3R1Yi94ODYtc3R1Yi5jLTQyNS1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM9MTM5PXN0YXRpYyBsb25nIGVmaV9ydW50aW1lX2dldF92YXJpYWJsZSh1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtMTcxLVxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjE3MjpcdGF0ID0gZ2V0dmFyaWFibGUuYXR0cmlidXRlcyA/IFx1MDAyNmF0dHIgOiBOVUxMO1xuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTE3My1cdGR6ID0gZ2V0dmFyaWFibGUuZGF0YV9zaXplID8gXHUwMDI2ZGF0YXNpemUgOiBOVUxMO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0yMTQtXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM6MjE1Olx0aWYgKGF0IFx1MDAyNlx1MDAyNiBwdXRfdXNlcihhdHRyLCBnZXR2YXJpYWJsZS5hdHRyaWJ1dGVzKSkge1xuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTIxNi1cdFx0cnYgPSAtRUZBVUxUO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYz0yMjk9c3RhdGljIGxvbmcgZWZpX3J1bnRpbWVfc2V0X3ZhcmlhYmxlKHVuc2lnbmVkIGxvbmcgYXJnKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0yNTktXHRzdGF0dXMgPSBlZmkuc2V0X3ZhcmlhYmxlKG5hbWUsIFx1MDAyNnZlbmRvcl9ndWlkLFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjI2MDpcdFx0XHRcdHNldHZhcmlhYmxlLmF0dHJpYnV0ZXMsXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtMjYxLVx0XHRcdFx0c2V0dmFyaWFibGUuZGF0YV9zaXplLCBkYXRhKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM9NTYzPXN0YXRpYyBsb25nIGVmaV9ydW50aW1lX3F1ZXJ5X3ZhcmlhYmxlaW5mbyh1bnNpZ25lZCBsb25nIGFyZylcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtNTc1LVxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjU3NjpcdHN0YXR1cyA9IGVmaS5xdWVyeV92YXJpYWJsZV9pbmZvKHF1ZXJ5dmFyaWFibGVpbmZvLmF0dHJpYnV0ZXMsXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtNTc3LVx0XHRcdFx0XHQgXHUwMDI2bWF4X3N0b3JhZ2UsIFx1MDAyNnJlbWFpbmluZywgXHUwMDI2bWF4X3NpemUpO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvZ29vZ2xlL2dzbWkuYz00MzI9c3RhdGljIGVmaV9zdGF0dXNfdCBnc21pX3NldF92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsXG4tLVxuZHJpdmVycy9maXJtd2FyZS9nb29nbGUvZ3NtaS5jLTQ0MS1cdFx0LmRhdGFfbGVuID0gKHUzMilkYXRhX3NpemUsXG5kcml2ZXJzL2Zpcm13YXJlL2dvb2dsZS9nc21pLmM6NDQyOlx0XHQuYXR0cmlidXRlcyA9IEVGSV9WQVJJQUJMRV9OT05fVk9MQVRJTEUgfFxuZHJpdmVycy9maXJtd2FyZS9nb29nbGUvZ3NtaS5jLTQ0My1cdFx0XHQgICAgICBFRklfVkFSSUFCTEVfQk9PVFNFUlZJQ0VfQUNDRVNTIHxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz03MzE9dm9pZCBod3NzX2J1aWxkX2Zhc3Rfc2VxdWVuY2Uoc3RydWN0IGRjICpkYyxcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy04ODAtXHRcdFx0XHRjdXJyZW50X3BpcGUtXHUwMDNlcGxhbmVfcmVzLmh1YnA7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzo4ODE6XHRcdFx0YmxvY2tfc2VxdWVuY2VbKm51bV9zdGVwc10ucGFyYW1zLmh1YnBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzID1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTg4Mi1cdFx0XHRcdFx1MDAyNmN1cnJlbnRfcGlwZS1cdTAwM2VzdHJlYW0tXHUwMDNlY3Vyc29yX2F0dHJpYnV0ZXM7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtODg3LVx0XHRcdFx0Y3VycmVudF9waXBlLVx1MDAzZXBsYW5lX3Jlcy5kcHA7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzo4ODg6XHRcdFx0YmxvY2tfc2VxdWVuY2VbKm51bV9zdGVwc10ucGFyYW1zLmRwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXMgPVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtODg5LVx0XHRcdFx0XHUwMDI2Y3VycmVudF9waXBlLVx1MDAzZXN0cmVhbS1cdTAwM2VjdXJzb3JfYXR0cmlidXRlcztcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz0zNTY4PXZvaWQgaHdzc19odWJwX3NldF9jdXJzb3JfYXR0cmlidXRlcyh1bmlvbiBibG9ja19zZXF1ZW5jZV9wYXJhbXMgKnBhcmFtcylcbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy0zNTcwLVx0c3RydWN0IGh1YnAgKmh1YnAgPSBwYXJhbXMtXHUwMDNlaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmh1YnA7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzozNTcxOlx0Y29uc3Qgc3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzICphdHRyaWJ1dGVzID0gcGFyYW1zLVx1MDAzZWh1YnBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtMzU3Mi1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz0zNTc3PXZvaWQgaHdzc19kcHBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzKHVuaW9uIGJsb2NrX3NlcXVlbmNlX3BhcmFtcyAqcGFyYW1zKVxuLS1cbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTM1NzktXHRzdHJ1Y3QgZHBwICpkcHAgPSBwYXJhbXMtXHUwMDNlZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuZHBwO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM6MzU4MDpcdHN0cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyAqYXR0cmlidXRlcyA9IHBhcmFtcy1cdTAwM2VkcHBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtMzU4MS1cbi0tXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz00NjkyPXZvaWQgaHdzc19hZGRfaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXMoc3RydWN0IGJsb2NrX3NlcXVlbmNlX3N0YXRlICpzZXFfc3RhdGUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtNDY5OC1cdFx0c2VxX3N0YXRlLVx1MDAzZXN0ZXBzWypzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmh1YnAgPSBodWJwO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM6NDY5OTpcdFx0c2VxX3N0YXRlLVx1MDAzZXN0ZXBzWypzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtNDcwMC1cdFx0KCpzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzKSYjNDM7JiM0Mzs7XG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM9NDcwND12b2lkIGh3c3NfYWRkX2RwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXMoc3RydWN0IGJsb2NrX3NlcXVlbmNlX3N0YXRlICpzZXFfc3RhdGUsXG4tLVxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtNDcxMC1cdFx0c2VxX3N0YXRlLVx1MDAzZXN0ZXBzWypzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuZHBwID0gZHBwO1xuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM6NDcxMTpcdFx0c2VxX3N0YXRlLVx1MDAzZXN0ZXBzWypzZXFfc3RhdGUtXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy00NzEyLVx0XHQoKnNlcV9zdGF0ZS1cdTAwM2VudW1fc3RlcHMpJiM0MzsmIzQzOztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvYWN4LmM9ODI4PWludCB3bDEyNTFfYWN4X21lbV9jZmcoc3RydWN0IHdsMTI1MSAqd2wpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvdGkvd2wxMjUxL2FjeC5jLTg1Ny1cdFx0bWVtX2NvbmYtXHUwMDNldHhfcXVldWVfY29uZmlnW2ldLm51bV9kZXNjcyA9IEFDWF9UWF9ERVNDX0RFRjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9hY3guYzo4NTg6XHRcdG1lbV9jb25mLVx1MDAzZXR4X3F1ZXVlX2NvbmZpZ1tpXS5hdHRyaWJ1dGVzID0gaTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9hY3guYy04NTktXHR9XG4tLVxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jPTg0MD1zdGF0aWMgYmxrX3N0YXR1c190IG52bWVfc2V0dXBfZGlzY2FyZChzdHJ1Y3QgbnZtZV9ucyAqbnMsIHN0cnVjdCByZXF1ZXN0ICpyZXEsXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTkwMS1cdGNtbmQtXHUwMDNlZHNtLm5yID0gY3B1X3RvX2xlMzIoc2VnbWVudHMgLSAxKTtcbmRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYzo5MDI6XHRjbW5kLVx1MDAzZWRzbS5hdHRyaWJ1dGVzID0gY3B1X3RvX2xlMzIoTlZNRV9EU01HTVRfQUQpO1xuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTkwMy1cbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1iZGV2LmM9NDEwPXN0YXRpYyB2b2lkIG52bWV0X2JkZXZfZXhlY3V0ZV9kc20oc3RydWN0IG52bWV0X3JlcSAqcmVxKVxuLS1cbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWJkZXYuYy00MTQtXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1iZGV2LmM6NDE1Olx0c3dpdGNoIChsZTMyX3RvX2NwdShyZXEtXHUwMDNlY21kLVx1MDAzZWRzbS5hdHRyaWJ1dGVzKSkge1xuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtYmRldi5jLTQxNi1cdGNhc2UgTlZNRV9EU01HTVRfQUQ6XG4tLVxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtZmlsZS5jPTMwNz1zdGF0aWMgdm9pZCBudm1ldF9maWxlX2RzbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcbi0tXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1maWxlLmMtMzEwLVxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtZmlsZS5jOjMxMTpcdHN3aXRjaCAobGUzMl90b19jcHUocmVxLVx1MDAzZWNtZC1cdTAwM2Vkc20uYXR0cmlidXRlcykpIHtcbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWZpbGUuYy0zMTItXHRjYXNlIE5WTUVfRFNNR01UX0FEOlxuLS1cbmRyaXZlcnMvczM5MC9jaGFyL2NvbjMyNzAuYz0xMzI5PXN0YXRpYyB2b2lkIHR0eTMyNzBfaW5zZXJ0X2NoYXJhY3RlcnMoc3RydWN0IHR0eTMyNzAgKnRwLCBpbnQgbilcbi0tXG5kcml2ZXJzL3MzOTAvY2hhci9jb24zMjcwLmMtMTM0Ni1cdFx0bGluZS1cdTAwM2VjZWxsc1t0cC1cdTAwM2VjeCAmIzQzOyBuXS5jaGFyYWN0ZXIgPSAmIzM5OyAmIzM5OztcbmRyaXZlcnMvczM5MC9jaGFyL2NvbjMyNzAuYzoxMzQ3Olx0XHRsaW5lLVx1MDAzZWNlbGxzW3RwLVx1MDAzZWN4ICYjNDM7IG5dLmF0dHJpYnV0ZXMgPSB0cC1cdTAwM2VhdHRyaWJ1dGVzO1xuZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3MC5jLTEzNDgtXHR9XG4tLVxuZHJpdmVycy9zMzkwL2NyeXB0by9wa2V5X2FwaS5jPTI3Nj1zdGF0aWMgaW50IHBrZXlfaW9jdGxfdmVyaWZ5a2V5KHN0cnVjdCBwa2V5X3ZlcmlmeWtleSBfX3VzZXIgKnV2aylcbi0tXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmMtMjkzLVx0XHRyYyA9IC1FSU5WQUw7XG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmM6Mjk0Olx0a3ZrLmF0dHJpYnV0ZXMgPSBQS0VZX1ZFUklGWV9BVFRSX0FFUztcbmRyaXZlcnMvczM5MC9jcnlwdG8vcGtleV9hcGkuYy0yOTUtXHRrdmsua2V5c2l6ZSA9ICh1MTYpa2V5Yml0c2l6ZTtcbmRyaXZlcnMvczM5MC9jcnlwdG8vcGtleV9hcGkuYy0yOTYtXHRpZiAoZmxhZ3MgXHUwMDI2IFBLRVlfRkxBR1NfTUFUQ0hfQUxUX01LVlApXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmM6Mjk3Olx0XHRrdmsuYXR0cmlidXRlcyB8PSBQS0VZX1ZFUklGWV9BVFRSX09MRF9NS1ZQO1xuZHJpdmVycy9zMzkwL2NyeXB0by9wa2V5X2FwaS5jLTI5OC1cdGlmICghcmMgXHUwMDI2XHUwMDI2IGNvcHlfdG9fdXNlcih1dmssIFx1MDAyNmt2aywgc2l6ZW9mKGt2aykpKVxuLS1cbmRyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvcHN5LmM9MzU9c3RhdGljIGludCB1Y3NpX3BzeV9nZXRfc2NvcGUoc3RydWN0IHVjc2lfY29ubmVjdG9yICpjb24sXG4tLVxuZHJpdmVycy91c2IvdHlwZWMvdWNzaS9wc3kuYy00NS1cbmRyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvcHN5LmM6NDY6XHRcdGlmIChjb24tXHUwMDNldWNzaS1cdTAwM2VjYXAuYXR0cmlidXRlcyBcdTAwMjYgbWFzaylcbmRyaXZlcnMvdXNiL3R5cGVjL3Vjc2kvcHN5LmMtNDctXHRcdFx0c2NvcGUgPSBQT1dFUl9TVVBQTFlfU0NPUEVfU1lTVEVNO1xuLS1cbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jPTQzMT1zdGF0aWMgdm9pZCBzdGlfZHVtcF9vdXRwdHIoc3RydWN0IHN0aV9zdHJ1Y3QgKnN0aSlcbi0tXG5kcml2ZXJzL3ZpZGVvL3N0aWNvcmUuYy00MzktXHRcdCBzdGktXHUwMDNlc3RpX2RhdGEtXHUwMDNlaW5xX291dHB0ci5wbGFuZXMsXG5kcml2ZXJzL3ZpZGVvL3N0aWNvcmUuYzo0NDA6XHRcdCBzdGktXHUwMDNlc3RpX2RhdGEtXHUwMDNlaW5xX291dHB0ci5hdHRyaWJ1dGVzKTtcbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jLTQ0MS19XG4tLVxuZnMvb3JhbmdlZnMvbmFtZWkuYz0xOD1zdGF0aWMgaW50IG9yYW5nZWZzX2NyZWF0ZShzdHJ1Y3QgbW50X2lkbWFwICppZG1hcCxcbi0tXG5mcy9vcmFuZ2Vmcy9uYW1laS5jLTQwLVxuZnMvb3JhbmdlZnMvbmFtZWkuYzo0MTpcdGZpbGxfZGVmYXVsdF9zeXNfYXR0cnMobmV3X29wLVx1MDAzZXVwY2FsbC5yZXEuY3JlYXRlLmF0dHJpYnV0ZXMsIG1vZGUpO1xuZnMvb3JhbmdlZnMvbmFtZWkuYy00Mi1cbi0tXG5mcy9vcmFuZ2Vmcy9uYW1laS5jPTIxNT1zdGF0aWMgaW50IG9yYW5nZWZzX3N5bWxpbmsoc3RydWN0IG1udF9pZG1hcCAqaWRtYXAsXG4tLVxuZnMvb3JhbmdlZnMvbmFtZWkuYy0yNDEtXG5mcy9vcmFuZ2Vmcy9uYW1laS5jOjI0MjpcdGZpbGxfZGVmYXVsdF9zeXNfYXR0cnMobmV3X29wLVx1MDAzZXVwY2FsbC5yZXEuc3ltLmF0dHJpYnV0ZXMsIG1vZGUpO1xuZnMvb3JhbmdlZnMvbmFtZWkuYy0yNDMtXG4tLVxuZnMvb3JhbmdlZnMvbmFtZWkuYz0zMDA9c3RhdGljIHN0cnVjdCBkZW50cnkgKm9yYW5nZWZzX21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcbi0tXG5mcy9vcmFuZ2Vmcy9uYW1laS5jLTMxNS1cbmZzL29yYW5nZWZzL25hbWVpLmM6MzE2Olx0ZmlsbF9kZWZhdWx0X3N5c19hdHRycyhuZXdfb3AtXHUwMDNldXBjYWxsLnJlcS5ta2Rpci5hdHRyaWJ1dGVzLCBtb2RlKTtcbmZzL29yYW5nZWZzL25hbWVpLmMtMzE3LVxuLS1cbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM9MjM2PWludCBvcmFuZ2Vmc19pbm9kZV9nZXRhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBmbGFncylcbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMwMS1cdFx0cmV0ID0gb3JhbmdlZnNfaW5vZGVfaXNfc3RhbGUoaW5vZGUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjMwMjpcdFx0ICAgIFx1MDAyNm5ld19vcC1cdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcyxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzAzLVx0XHQgICAgbmV3X29wLVx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5saW5rX3RhcmdldCk7XG4tLVxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zMTAtXHR0eXBlID0gb3JhbmdlZnNfaW5vZGVfdHlwZShuZXdfb3AtXHUwMDNlXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjMxMTpcdCAgICBkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5vYmp0eXBlKTtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzEyLVx0c3dpdGNoICh0eXBlKSB7XG4tLVxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zMTQtXHRcdGlub2RlLVx1MDAzZWlfZmxhZ3MgPSBvcmFuZ2Vmc19pbm9kZV9mbGFncyhcdTAwMjZuZXdfb3AtXHUwMDNlXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjMxNTpcdFx0ICAgIGRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzKTtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzE2LVx0XHRpZiAoZmxhZ3MpIHtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzE3LVx0XHRcdGlub2RlX3NpemUgPSAobG9mZl90KW5ld19vcC1cdTAwM2VcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzE4Olx0XHRcdCAgICBkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5zaXplO1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zMTktXHRcdFx0aW5vZGUtXHUwMDNlaV9zaXplID0gaW5vZGVfc2l6ZTtcbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM1Ni1cdGlub2RlLVx1MDAzZWlfdWlkID0gbWFrZV9rdWlkKFx1MDAyNmluaXRfdXNlcl9ucywgbmV3X29wLVx1MDAzZVxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozNTc6XHQgICAgZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMub3duZXIpO1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNTgtXHRpbm9kZS1cdTAwM2VpX2dpZCA9IG1ha2Vfa2dpZChcdTAwMjZpbml0X3VzZXJfbnMsIG5ld19vcC1cdTAwM2VcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzU5Olx0ICAgIGRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLmdyb3VwKTtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzYwLVx0aW5vZGVfc2V0X2F0aW1lKGlub2RlLFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozNjE6XHRcdFx0KHRpbWU2NF90KW5ld19vcC1cdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5hdGltZSxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzYyLVx0XHRcdDApO1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNjMtXHRpbm9kZV9zZXRfbXRpbWUoaW5vZGUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjM2NDpcdFx0XHQodGltZTY0X3QpbmV3X29wLVx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLm10aW1lLFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNjUtXHRcdFx0MCk7XG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM2Ni1cdGlub2RlX3NldF9jdGltZShpbm9kZSxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzY3Olx0XHRcdCh0aW1lNjRfdCluZXdfb3AtXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMuY3RpbWUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM2OC1cdFx0XHQwKTtcbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM3MS1cdGlub2RlLVx1MDAzZWlfbW9kZSA9IHR5cGUgfCAoaXNfcm9vdF9oYW5kbGUoaW5vZGUpID8gU19JU1ZUWCA6IDApIHxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzcyOlx0ICAgIG9yYW5nZWZzX2lub2RlX3Blcm1zKFx1MDAyNm5ld19vcC1cdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcyk7XG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM3My1cbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jPTM4ND1pbnQgb3JhbmdlZnNfaW5vZGVfY2hlY2tfY2hhbmdlZChzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtNDA1LVx0cmV0ID0gb3JhbmdlZnNfaW5vZGVfaXNfc3RhbGUoaW5vZGUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjQwNjpcdCAgICBcdTAwMjZuZXdfb3AtXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTQwNy1cdCAgICBuZXdfb3AtXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmxpbmtfdGFyZ2V0KTtcbi0tXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jPTQxNz1pbnQgb3JhbmdlZnNfaW5vZGVfc2V0YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlKVxuLS1cbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtNDMxLVx0Y29weV9hdHRyaWJ1dGVzX2Zyb21faW5vZGUoaW5vZGUsXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjQzMjpcdCAgICBcdTAwMjZuZXdfb3AtXHUwMDNldXBjYWxsLnJlcS5zZXRhdHRyLmF0dHJpYnV0ZXMpO1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy00MzMtXHRvcmFuZ2Vmc19pbm9kZS1cdTAwM2VhdHRyX3ZhbGlkID0gMDtcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6NDM0Olx0aWYgKCFuZXdfb3AtXHUwMDNldXBjYWxsLnJlcS5zZXRhdHRyLmF0dHJpYnV0ZXMubWFzaykge1xuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy00MzUtXHRcdHNwaW5fdW5sb2NrKFx1MDAyNmlub2RlLVx1MDAzZWlfbG9jayk7XG4tLVxuaW5jbHVkZS9saW51eC9jYWNoZWluZm8uaD0xMjI9c3RhdGljIGlubGluZSBzdHJ1Y3QgY2FjaGVpbmZvICpnZXRfY3B1X2NhY2hlaW5mb19sZXZlbChpbnQgY3B1LCBpbnQgbGV2ZWwpXG4tLVxuaW5jbHVkZS9saW51eC9jYWNoZWluZm8uaC0xMzAtXHRcdGlmIChjaS1cdTAwM2VpbmZvX2xpc3RbaV0ubGV2ZWwgPT0gbGV2ZWwpIHtcbmluY2x1ZGUvbGludXgvY2FjaGVpbmZvLmg6MTMxOlx0XHRcdGlmIChjaS1cdTAwM2VpbmZvX2xpc3RbaV0uYXR0cmlidXRlcyBcdTAwMjYgQ0FDSEVfSUQpXG5pbmNsdWRlL2xpbnV4L2NhY2hlaW5mby5oLTEzMi1cdFx0XHRcdHJldHVybiBcdTAwMjZjaS1cdTAwM2VpbmZvX2xpc3RbaV07XG4tLVxuc291bmQvcGNpL2FzaWhwaS9ocGlmdW5jLmM9Mjg0PXUxNiBocGlfZm9ybWF0X2NyZWF0ZShzdHJ1Y3QgaHBpX2Zvcm1hdCAqcF9mb3JtYXQsIHUxNiBjaGFubmVscywgdTE2IGZvcm1hdCxcbi0tXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYy0zNjgtXHRcdH1cbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jOjM2OTpcdFx0Zm10LmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuc291bmQvcGNpL2FzaWhwaS9ocGlmdW5jLmMtMzcwLVx0XHRicmVhaztcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTM3MS1cdGRlZmF1bHQ6XG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYzozNzI6XHRcdGZtdC5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTM3My1cdH1cbi0tXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYz0xMDI2PXUxNiBocGlfaW5zdHJlYW1fYW5jaWxsYXJ5X3Jlc2V0KHUzMiBoX2luc3RyZWFtLCB1MTYgYnl0ZXNfcGVyX2ZyYW1lLFxuLS1cbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTEwMzQtXHRcdHJldHVybiBIUElfRVJST1JfSU5WQUxJRF9IQU5ETEU7XG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYzoxMDM1Olx0aG0udS5kLnUuZGF0YS5mb3JtYXQuYXR0cmlidXRlcyA9IGJ5dGVzX3Blcl9mcmFtZTtcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTEwMzYtXHRobS51LmQudS5kYXRhLmZvcm1hdC5mb3JtYXQgPSAobW9kZSBcdTAwM2NcdTAwM2MgOCkgfCAoYWxpZ25tZW50IFx1MDAyNiAweGZmKTtcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04MTU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBza2xfZGVzYyA9IHtcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04MTktXHQuY29yZV9pbml0X21hc2sgPSAxLFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM6ODIwOlx0LmF0dHJpYnV0ZXMgPSBBVlNfUExBVEFUVFJfQ0xETUEsXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04MjEtXHQuc3JhbSA9IFx1MDAyNnNrbF9zcmFtX3NwZWMsXG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM9ODI1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXZzX3NwZWMgYXBsX2Rlc2MgPSB7XG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODI5LVx0LmNvcmVfaW5pdF9tYXNrID0gMyxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjgzMDpcdC5hdHRyaWJ1dGVzID0gQVZTX1BMQVRBVFRSX0lNUixcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTgzMS1cdC5zcmFtID0gXHUwMDI2YXBsX3NyYW1fc3BlYyxcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBjbmxfZGVzYyA9IHtcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04MzktXHQuY29yZV9pbml0X21hc2sgPSAxLFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM6ODQwOlx0LmF0dHJpYnV0ZXMgPSBBVlNfUExBVEFUVFJfSU1SLFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODQxLVx0LnNyYW0gPSBcdTAwMjZhcGxfc3JhbV9zcGVjLFxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jPTg0NT1zdGF0aWMgY29uc3Qgc3RydWN0IGF2c19zcGVjIGljbF9kZXNjID0ge1xuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg0OS1cdC5jb3JlX2luaXRfbWFzayA9IDEsXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYzo4NTA6XHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04NTEtXHQuc3JhbSA9IFx1MDAyNmFwbF9zcmFtX3NwZWMsXG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM9ODU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXZzX3NwZWMganNsX2Rlc2MgPSB7XG4tLVxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODU5LVx0LmNvcmVfaW5pdF9tYXNrID0gMSxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg2MDpcdC5hdHRyaWJ1dGVzID0gQVZTX1BMQVRBVFRSX0lNUixcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg2MS1cdC5zcmFtID0gXHUwMDI2YXBsX3NyYW1fc3BlYyxcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBzbmFtZSMjX2Rlc2MgPSB7XHRcXFxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg3MC1cdC5jb3JlX2luaXRfbWFzayA9IDEsXHRcdFx0XFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg3MTpcdC5hdHRyaWJ1dGVzID0gQVZTX1BMQVRBVFRSX0lNUixcdFx0XFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg3Mi1cdC5zcmFtID0gXHUwMDI2YXBsX3NyYW1fc3BlYyxcdFx0XHRcXFxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jPTg4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGF2c19zcGVjIGZjbF9kZXNjID0ge1xuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg4Ni1cdC5jb3JlX2luaXRfbWFzayA9IDEsXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYzo4ODc6XHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIgfCBBVlNfUExBVEFUVFJfQUNFIHwgQVZTX1BMQVRBVFRSX0FMVEhEQSxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg4OC1cdC5zcmFtID0gXHUwMDI2bXRsX3NyYW1fc3BlYyxcbi0tXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmM9Njc9aW50IGF2c19pcGNfY3JlYXRlX3BpcGVsaW5lKHN0cnVjdCBhdnNfZGV2ICphZGV2LCB1MTYgcmVxX3NpemUsIHU4IHByaW9yaXR5LFxuLS1cbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy03Ni1cdG1zZy5leHQuY3JlYXRlX3BwbC5scCA9IGxwO1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jOjc3Olx0bXNnLmV4dC5jcmVhdGVfcHBsLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jLTc4LVx0cmVxdWVzdC5oZWFkZXIgPSBtc2cudmFsO1xuLS1cbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC0xMzctXHRcdFx0LmVwX2F0dHIgPSBVU0JfRU5EUE9JTlRfWEZFUl9JU09DLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjEzODpcdFx0XHQuYXR0cmlidXRlcyA9IDAsXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTM5LVx0XHRcdC5yYXRlcyA9IFNORFJWX1BDTV9SQVRFX0NPTlRJTlVPVVMsXG4tLVxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oPTQ0MT1ZQU1BSEFfREVWSUNFKDB4NzAxMCwgXCYjMzQ7VUI5OVwmIzM0OyksXG4tLVxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ3MS1cdFx0XHRcdFx0LmFsdHNldF9pZHggPSAxLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjQ3MjpcdFx0XHRcdFx0LmF0dHJpYnV0ZXMgPSAwLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ3My1cdFx0XHRcdFx0LmVuZHBvaW50ID0gMHgwMSxcbi0tXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtNDg2LVx0XHRcdFx0XHQuYWx0c2V0X2lkeCA9IDEsXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg6NDg3Olx0XHRcdFx0XHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX0ZJTExfTUFYLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ4OC1cdFx0XHRcdFx0LmVuZHBvaW50ID0gMHg4MSxcbi0tXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtNzk2LVx0XHRcdFx0XHQuYWx0c2V0X2lkeCA9IDEsXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg6Nzk3Olx0XHRcdFx0XHQuYXR0cmlidXRlcyA9IDAsXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtNzk4LVx0XHRcdFx0XHQuZW5kcG9pbnQgPSAweDAxLFxuLS1cbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC04MTEtXHRcdFx0XHRcdC5hbHRzZXRfaWR4ID0gMSxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDo4MTI6XHRcdFx0XHRcdC5hdHRyaWJ1dGVzID0gMCxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC04MTMtXHRcdFx0XHRcdC5lbmRwb2ludCA9IDB4ODIsXG4tLVxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTE1OTktXHRcdFx0XHRcdC5hbHRzZXRfaWR4ID0gMSxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDoxNjAwOlx0XHRcdFx0XHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX1NBTVBMRV9SQVRFLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTE2MDEtXHRcdFx0XHRcdC5lbmRwb2ludCA9IDB4MDEsXG4tLVxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTE2MjMtXHRcdFx0XHRcdC5hbHRzZXRfaWR4ID0gMSxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDoxNjI0Olx0XHRcdFx0XHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX1NBTVBMRV9SQVRFLFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTE2MjUtXHRcdFx0XHRcdC5lbmRwb2ludCA9IDB4ODEsXG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3NTMzCgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBVbnVzZWQgQ29kZSBhbmQgQXR0cmlidXRlIEFjY2VzcyoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBzcG90dGVkIHNvbWV0aGluZyBpbW1lZGlhdGVseTogaXQgbG9va3MgbGlrZSBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIGlzbiYjMzk7dCBhY3R1YWxseSBiZWluZyB1dGlsaXplZCBhbnl3aGVyZSBpbiB0aGUgY29kZWJhc2UuIFRoYXQmIzM5O3MgYWx3YXlzIGEgcmVkIGZsYWcg4oCTIHVudXNlZCBjb2RlIGlzIG9mdGVuIGEgc3ltcHRvbSBvZiBzb21ldGhpbmcsIGFuZCBpdCYjMzk7cyB3b3J0aCB1bmRlcnN0YW5kaW5nIHRoZSBpbXBsaWNhdGlvbnMuCgpOb3csIG15IG5leHQgdGhvdWdodCBpcywgd2hhdCBhYm91dCB0aGUgYGF0dHJpYnV0ZXNgIGZpZWxkICp3aXRoaW4qIGBncHRfZW50cnlgIGl0c2VsZj8gSXQmIzM5O3MgcG9zc2libGUgd2UgaGF2ZSBhIHJlbGF0ZWQgaXNzdWUsIG9yIHBlcmhhcHMgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgaW50ZW5kZWQgYXMgYSBzdGFuZGFsb25lIHN0cnVjdHVyZSwgYW5kIHRoZSBsb2dpYyB3YXMgcmV3b3JrZWQuIFNvLCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgYGdwdF9lbnRyeWAgaXMgYWN0dWFsbHkgKnVzZWQqLgoKTXkgcHJpbWFyeSBmb2N1cyBpcyBvbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2Agc2luY2UgdGhhdCYjMzk7cyB3aGVyZSBHUFQgcGFydGl0aW9uaW5nIGlzIHR5cGljYWxseSBoYW5kbGVkLiBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgaWYgYGdwdF9lbnRyeWAgaXMgdXNlZCB0aGVyZSwgYW5kLCBjcnVjaWFsbHksIGlmIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgYmVpbmcgYWNjZXNzZWQuIEtub3dpbmcgdGhhdCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB3aGV0aGVyIHRoaXMgdW51c2VkIHZhcmlhYmxlIGlzIGFuIG9ycGhhbiwgYSBsZWdhY3kgcGllY2UsIG9yIGlmIGl0IGhhcyBzb21lIHN1YnRsZSBjb25uZWN0aW9uIHRvIHRoZSBtYWluIGxvZ2ljLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3B0ZS1cdTAwM2VhdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9lZmkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3ODcwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGVidWdnaW5nIE1lbW9yeSBBdHRyaWJ1dGVzKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byB6ZXJvIGluIG9uIHRoZSBtZW1vcnkgYXR0cmlidXRlIHN0cnVjdHVyZXMuIEkmIzM5O2Qgc3RhcnQgYnkgaW5zcGVjdGluZyBzb21ldGhpbmcgbGlrZSBgcHRlXFsuKlxdXC5hdHRyaWJ1dGVzYOKAlG9yIHBlcmhhcHMgYSBzaW1pbGFyIG5hbWluZyBjb252ZW50aW9uIHVzZWQgaW4gdGhlIHNwZWNpZmljIGFyY2hpdGVjdHVyZSBvciBrZXJuZWwgSSYjMzk7bSB3b3JraW5nIHdpdGguIFRoZSBgLipgIGFjdHMgYXMgYSB3aWxkY2FyZDsgSSBuZWVkIHRvIGJlIGZsZXhpYmxlIGFuZCBhY2NvdW50IGZvciBwb3RlbnRpYWwgdmFyaWF0aW9ucyBpbiB0aGUgZXhhY3QgZmllbGQgbmFtZS4gVGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgaG93IHRoZXNlIG1lbW9yeSBhdHRyaWJ1dGVzIGFyZSBzZXQgYW5kIHdoYXQgdGhlaXIgY3VycmVudCB2YWx1ZXMgYXJlLCBiZWNhdXNlIHRob3NlIGF0dHJpYnV0ZXMgYXJlIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgb2JzZXJ2ZWQgYmVoYXZpb3IuIEl0IHNlZW1zIGxpa2UgaXQgd2lsbCBiZSBzb21lIGtpbmQgb2YgUFRFIChQYWdlIFRhYmxlIEVudHJ5KSBhdHRyaWJ1dGUgdGhhdCBpcyBjYXVzaW5nIHRoZSBwcm9ibGVtLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IHZhbHVlcyBpdCBzaG91bGQgYmUgc2V0IHRvIHRvIHNvbHZlIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwdGVzXFxbLipcXF1cXC5hdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9lZmkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MTE2CgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiBzb21lb25lIGtub3dsZWRnZWFibGUgaW4gdGhlIGZpZWxkIGFuZCBwcm9jZXNzaW5nIHRoaXMgaW5mb3JtYXRpb246CgoqKkFuYWx5emluZyBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgVXNhZ2Ugb2YgYGF0dHJpYnV0ZXNgKioKCkFscmlnaHQsIGxldCYjMzk7cyB6ZXJvIGluIG9uIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoZSBjb2RlIGluIHRoaXMgZmlsZSBpbnRlcmFjdHMgd2l0aCB0aGUgYGF0dHJpYnV0ZXNgIHZhcmlhYmxlLiBJcyBpdCBldmVuIHJlZmVyZW5jZWQ/IERvZXMgdGhlIGNvZGUgcmVseSBvbiByZWFkaW5nIG9yIG1vZGlmeWluZyB0aGVzZSBhdHRyaWJ1dGVzPyBLbm93aW5nIHRoaXMgd2lsbCBoZWxwIG1lIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIHdoZXRoZXIgaXQmIzM5O3MgZXNzZW50aWFsIGZvciB0aGUgbG9naWMuIEkgbmVlZCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHVzYWdlIHdpdGhpbiB0aGlzIHNwZWNpZmljIHBhcnRpdGlvbmluZyBjb250ZXh0IHRvIGFzc2VzcyBwb3RlbnRpYWwgaW1wYWN0cyBvciBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBrbm93IHRoZSBzY29wZSBhbmQgaG93IGl0IGlzIHVzZWQgdG8gYXNzZXNzIGlmIHRoaXMgYSBwb3RlbnRpYWwgc2VjdXJpdHkgZmxhdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9lZmkuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MzM2CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkludmVzdGlnYXRpbmcgRUZJIFBhcnRpdGlvbiBBdHRyaWJ1dGUgVXNhZ2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZS4uLiB0aGUgY29kZSYjMzk7cyBwb2ludGluZyBtZSBhdCBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgY29tbWVudCBtZW50aW9uaW5nICYjMzQ7YXR0cmlidXRlcy4mIzM0OyBJdCYjMzk7cyBzdWdnZXN0aW5nIGBhdHRyaWJ1dGVzYCAqYXJlbiYjMzk7dCogYmVpbmcgZGlyZWN0bHkgdXNlZCBpbiB0aGlzIHNwZWNpZmljIGZpbGUsIHdoaWNoIGlzIGludGVyZXN0aW5nLgoKTm93LCB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnIGluIG15IG1pbmQuIElmIGBhdHRyaWJ1dGVzYCBhcmVuJiMzOTt0IGFjY2Vzc2VkICpoZXJlKiwgdGhhdCBkb2VzbiYjMzk7dCBtZWFuIHRoZXkgYXJlbiYjMzk7dCBjcnVjaWFsLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhleSBhcmUgdXNlZCBlbHNld2hlcmUsIGJlY2F1c2Ugd2h5IGVsc2Ugd291bGQgdGhleSBiZSBtZW50aW9uZWQgaGVyZT8gSSBzaG91bGQgbWFrZSBhIG5vdGUgdG8gY2hlY2sgaG93IHRoZSBhdHRyaWJ1dGVzIGFyZSB1c2VkLCBhbmQgd2hldGhlciB0aGVpciBiZWluZyBvbWl0dGVkIGhlcmUgaXMgYSBzaWduLgoKSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhlcmUgYXJlIGFueSBvdGhlciBmaWxlcyBvciBmdW5jdGlvbnMgdGhhdCByZWx5IG9uIHRoaXMgZGF0YS4gQSBxdWljayBzZWFyY2ggb2YgdGhlIGNvZGViYXNlIHdvdWxkIGJlIG15IG5leHQgbG9naWNhbCBzdGVwLiBJJiMzOTtsbCBuZWVkIHRvIHVzZSBteSBwcmVmZXJyZWQgc2VhcmNoIHRvb2xzIGFuZCBtYXliZSBzb21lIGdyZXBwaW5nIHRvIHNlZSB0aGUgb3RoZXIgZmlsZXMgd2hlcmUgdGhlIGBhdHRyaWJ1dGVzYCB2YXJpYWJsZSBvciBzdHJ1Y3QgbWlnaHQgYmUgcmVmZXJlbmNlZC4gVGhpcyBpcyBhbiBpbXBvcnRhbnQgZGV0YWlsLCBhbmQgSSBuZWVkIHRvIGtub3cgd2hlcmUgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSWYgaXQmIzM5O3Mgbm90IGJlaW5nIHVzZWQsIHRoZW4gdGhhdCYjMzk7cyBhIGRpZmZlcmVudCBwcm9ibGVtIGFsdG9nZXRoZXIhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2dwdF9lbnRyeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jPTIzND1zdGF0aWMgc2l6ZV90IHJlYWRfbGJhKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNjktICovXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjI3MDpzdGF0aWMgZ3B0X2VudHJ5ICphbGxvY19yZWFkX2dwdF9lbnRyaWVzKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cdFx0XHRcdFx0IGdwdF9oZWFkZXIgKmdwdClcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3My1cdHNpemVfdCBjb3VudDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0Olx0Z3B0X2VudHJ5ICpwdGU7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3NS1cbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTMzND1zdGF0aWMgaW50IGlzX2dwdF92YWxpZChzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCB1NjQgbGJhLFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzozMzU6XHRcdFx0Z3B0X2hlYWRlciAqKmdwdCwgZ3B0X2VudHJ5ICoqcHRlcylcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQxNC1cdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6NDE1Olx0aWYgKGxlMzJfdG9fY3B1KCgqZ3B0KS1cdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy00MTYtXHRcdHByX2RlYnVnKFwmIzM0O0dVSUQgUGFydGl0aW9uIEVudHJ5IFNpemUgY2hlY2sgZmFpbGVkLlxcblwmIzM0Oyk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6NDYwOmlzX3B0ZV92YWxpZChjb25zdCBncHRfZW50cnkgKnB0ZSwgY29uc3QgdTY0IGxhc3RsYmEpXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQ2MS17XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz01ODA9c3RhdGljIGludCBmaW5kX3ZhbGlkX2dwdChzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlLCBncHRfaGVhZGVyICoqZ3B0LFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo1ODE6XHRcdFx0ICBncHRfZW50cnkgKipwdGVzKVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNTg0LVx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6NTg1Olx0Z3B0X2VudHJ5ICpwcHRlcyA9IE5VTEwsICphcHRlcyA9IE5VTEw7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cdGxlZ2FjeV9tYnIgKmxlZ2FjeW1icjtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE0LVx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6NzE1Olx0Z3B0X2VudHJ5ICpwdGVzID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVx0dTMyIGk7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaD01NT10eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC03Ny1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6Nzg6dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc5LVx0ZWZpX2d1aWRfdCBwYXJ0aXRpb25fdHlwZV9ndWlkO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODQtXHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4NTp9IF9fcGFja2VkIGdwdF9lbnRyeTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5NDQzCgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgSW1wYWN0cyBvZiBhIEdQVCBFbnRyeSBTdHJ1Y3R1cmUgQ2hhbmdlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHNwZWNpZmljYWxseSBhdCBgZ3B0X2VudHJ5YC4gSXQgbG9va3MgbGlrZSBgZ3B0X2VudHJ5YCBpcyBvbmx5IHVzZWQgd2l0aGluIHRoZSBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgYW5kIGAuaGAgZmlsZXMuIEluaXRpYWxseSwgbXkgY29uY2VybiB3YXMgc3BhcmtlZCBieSB0aGUgc2VlbWluZ2x5IHVudXNlZCBgYXR0cmlidXRlc2AgZmllbGQgd2l0aGluIHRoZSBgZ3B0X2VudHJ5YCBzdHJ1Y3QuIEkgd29uZGVyZWQgaWYgdGhlIGNoYW5nZSBpbiBob3cgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgZGVmaW5lZCBjb3VsZCBhZmZlY3QgdGhlIG92ZXJhbGwgc2l6ZSBvZiBgZ3B0X2VudHJ5YCBnaXZlbiB0aGF0IGBzaXplb2YoZ3B0X2VudHJ5KWAgKmlzKiB1c2VkLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYSBiaXRmaWVsZCwgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGNvbXBpbGVyLCBjb3VsZCByZXN1bHQgaW4gc2l6ZSBvciBhbGlnbm1lbnQgZGlmZmVyZW5jZXMuCgpIb3dldmVyLCBhIHF1aWNrIGNoZWNrIG9mIHRoZSBkZWZpbml0aW9uIG9mIGBncHRfZW50cnlfYXR0cmlidXRlc2AgcmV2ZWFscyB0aGUgYF9fcGFja2VkYCBhdHRyaWJ1dGUuIFRoaXMgY29uZmlybXMgdGhhdCB0aGUgc3RydWN0dXJlIGlzIGluZGVlZCA4IGJ5dGVzLiBHb2luZyBhIHN0ZXAgZnVydGhlciB0byBkb3VibGUtY2hlY2ssIEkgY2FuIHNlZSB0aGF0IHRoZSBzdHJ1Y3QgYGdwdF9lbnRyeWAgaXRzZWxmIGlzIGFsc28gYF9fcGFja2VkYC4KClNvLCB0aGUgbmV3IHN0cnVjdCBgZ3B0X2VudHJ5YCBkZWZpbml0aW9uIHVzaW5nIGBfX3BhY2tlZGAgc2hvdWxkIGJlOiAxNiAoZm9yIHBhcnRpdGlvbl90eXBlX2d1aWQpICYjNDM7IDE2IChmb3IgdW5pcXVlX3BhcnRpdGlvbl9ndWlkKSAmIzQzOyA4ICYjNDM7IDggJiM0MzsgOCAoYXR0cmlidXRlcykgJiM0MzsgNzIgPSAxMjggYnl0ZXMuIFRoZSBvbGQgZGVmaW5pdGlvbiwgd2l0aCBgX19sZTY0IGF0dHJpYnV0ZXM7YCwgd291bGQgYWxzbyBoYXZlIGJlZW4gMTI4IGJ5dGVzLiBUaGUgYHNpemVvZihncHRfZW50cnkpYCBpcyB0aGVyZWZvcmUgaWRlbnRpY2FsLiBUaGVyZSYjMzk7cyBubyBzaXplIGNoYW5nZSBhdCBhbGwuCgpIb3dldmVyLCBJIHN0YXJ0ZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIG9mIHRoaXMgZmllbGQgYmVpbmcgYSBiaXRmaWVsZCwgcGFydGljdWxhcmx5IHNpbmNlIGl0JiMzOTtzIGEgYHU2NGAuIEJpdGZpZWxkcyBvZiB0aGlzIHNpemUgY2FuIHNvbWV0aW1lcyBiZSBwcm9ibGVtYXRpYyBpbiBDLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIHdhcm5pbmdzIGRlcGVuZGluZyBvbiB0aGUgY29tcGlsZXIgdXNlZCwgb3IgbW9yZSBzaWduaWZpY2FudGx5LCBpbnRyb2R1Y2luZyBlbmRpYW5uZXNzIGlzc3Vlcy4gQnV0LCB3YWl0Li4udGhlIGNyaXRpY2FsIHBvaW50IGhlcmUgaXMgdGhhdCB0aGUgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCBmaWVsZCBpdHNlbGYgaXMgKm5ldmVyKiBhY2Nlc3NlZC4gVGhlcmVmb3JlLCB0aGUgZW5kaWFubmVzcyBvZiB0aGUgYml0ZmllbGQgZG9lc24mIzM5O3QgbWF0dGVyLCBhbmQgdGhlcmUgaXMgbm8gZnVuY3Rpb25hbCBjaGFuZ2UuCgpTdGlsbCwgdG8gYmUgY29tcGxldGVseSB0aG9yb3VnaCwgSSBzaG91bGQgbG9vayBhdCBhbGwgb3RoZXIgZmlsZXMgdGhhdCBpbmNsdWRlIGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYCwganVzdCB0byBiZSBjZXJ0YWluIHRoYXQgSSBhbSBzZWVpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VmaVxcLmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jLTkwLSNpbmNsdWRlIFwmIzM0O2NoZWNrLmhcJiMzNDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6OTE6I2luY2x1ZGUgXCYjMzQ7ZWZpLmhcJiMzNDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtOTItXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC00LSAqIFBlciBJbnRlbCBFRkkgU3BlY2lmaWNhdGlvbiB2MS4wMlxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo1OiAqIGh0dHA6Ly9kZXZlbG9wZXIuaW50ZWwuY29tL3RlY2hub2xvZ3kvZWZpL2VmaS5odG1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNi0gKlxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtMTgtI2luY2x1ZGUgXHUwMDNjbGludXgvc3RyaW5nLmhcdTAwM2VcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6MTk6I2luY2x1ZGUgXHUwMDNjbGludXgvZWZpLmhcdTAwM2VcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtMjAtI2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zMS0jaW5jbHVkZSBcJiMzNDtjaGVjay5oXCYjMzQ7XG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzI6I2luY2x1ZGUgXCYjMzQ7ZWZpLmhcJiMzNDtcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zMy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2NTQKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyBNU0RPUyBQYXJ0aXRpb24gQXR0cmlidXRlIEFjY2VzcyoqCgpBbHJpZ2h0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpZiB0aGUgYGJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuY2AgY29kZSBpcyBpbnRlcmFjdGluZyB3aXRoIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgaW4gdGhlIGNvbnRleHQgb2YgTVNET1MgcGFydGl0aW9uIHRhYmxlcy4gVGhhdCYjMzk7cyB0aGUgY3J1eCBvZiB0aGlzIGludmVzdGlnYXRpb24uIFNwZWNpZmljYWxseSwgSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgZmlsZSBgYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jYC4gVGhpcyBpcyB3aGVyZSB0aGUgY29yZSBsb2dpYyBmb3IgaGFuZGxpbmcgTVNET1MtZm9ybWF0dGVkIHBhcnRpdGlvbiB0YWJsZXMgcmVzaWRlcywgc28gaWYgdGhlcmUmIzM5O3MgYW55IGFjY2VzcyB0byBhdHRyaWJ1dGVzLCBpdCYjMzk7cyBoaWdobHkgbGlrZWx5IHRvIGJlIGZvdW5kIGhlcmUuIE15IGdvYWwgaXMgdG8gY29uZmlybSBvciBkZW55IHRoaXMgYXR0cmlidXRlIGludGVyYWN0aW9uLiBJIHdpbGwgbm93IGV4YW1pbmUgdGhpcyBmaWxlIGluIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdHRyaWJ1dGVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA4ODIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTZWVtaW5nbHkgVXNlbGVzcyBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBJIHNlZSB0aGlzIHZhcmlhYmxlLi4uIGl0JiMzOTtzIGp1c3QgKm5ldmVyKiB1c2VkLiBUaGF0JiMzOTtzIGEgYml0IHBlcnBsZXhpbmcuIFRoZSBxdWVzdGlvbiBpcywgd2h5IHdhcyB0aGlzIHBhdGNoIGV2ZW4gc3VibWl0dGVkPyBXaGF0JiMzOTtzIHRoZSByYXRpb25hbGU/CgpNeSBpbml0aWFsIHRob3VnaHRzIGFyZSwgd2FzIGl0IHNvbWV0aGluZyBzdWJ0bGU/IERpZCB0aGUgY29tcGlsZXIgc3RhcnQgdGhyb3dpbmcgdXAgc3BhcnNlIHdhcm5pbmdzIG9yIHRyaWdnZXIgYml0ZmllbGQtcmVsYXRlZCB3YXJuaW5ncz8gVGhhdCYjMzk7cyBhIHBvc3NpYmlsaXR5LCBidXQgSSYjMzk7bSBub3QgdG90YWxseSBjb252aW5jZWQuIE9yLCBwZXJoYXBzIGl0JiMzOTtzIHNpbXBseSBhIGNsZWFudXAgZWZmb3J0LCBzb21lb25lIHN0cmVhbWxpbmluZyB0aGUgY29kZWJhc2UuIEJ1dCB3YWl0Li4uIGlmIGl0JiMzOTtzIGdlbnVpbmVseSBpbmFjY2Vzc2libGUsIHRoZW4gZnVuY3Rpb25hbGx5LCBub3RoaW5nIGFjdHVhbGx5ICpjaGFuZ2VkKi4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgYnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuCgpJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgc2NhbiB0aHJvdWdoIGBlZmkuaGAgdG8gbWFrZSBzdXJlIHRoZXJlIGlzbiYjMzk7dCBzb21lIHNuZWFreSBtYWNybyBvciBpbmxpbmUgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSBpbmRpcmVjdGx5IHVzaW5nIHRoaXMgdmFsdWUuIEp1c3Qgd2FudCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIGx1cmtpbmcgaW4gdGhpcyBmaWxlLiBHb3R0YSBkb3QgdGhlIGkmIzM5O3MgYW5kIGNyb3NzIHRoZSB0JiMzOTtzIGJlZm9yZSBtb3Zpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7YmxvY2svcGFydGl0aW9ucy9lZmkuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqL1xuICAgMjpcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgIDM6XHQgKiBFRkkgR1VJRCBQYXJ0aXRpb24gVGFibGVcbiAgIDQ6XHQgKiBQZXIgSW50ZWwgRUZJIFNwZWNpZmljYXRpb24gdjEuMDJcbiAgIDU6XHQgKiBodHRwOi8vZGV2ZWxvcGVyLmludGVsLmNvbS90ZWNobm9sb2d5L2VmaS9lZmkuaHRtXG4gICA2Olx0ICpcbiAgIDc6XHQgKiBCeSBNYXR0IERvbXNjaCBcdTAwM2NNYXR0X0RvbXNjaEBkZWxsLmNvbVx1MDAzZSAgRnJpIFNlcCAyMiAyMjoxNTo1NiBDRFQgMjAwMCAgXG4gICA4Olx0ICogICBDb3B5cmlnaHQgMjAwMCwyMDAxIERlbGwgSW5jLlxuICAgOTpcdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gIDEwOlx0XG4gIDExOlx0I2lmbmRlZiBGU19QQVJUX0VGSV9IX0lOQ0xVREVEXG4gIDEyOlx0I2RlZmluZSBGU19QQVJUX0VGSV9IX0lOQ0xVREVEXG4gIDEzOlx0XG4gIDE0Olx0I2luY2x1ZGUgXHUwMDNjbGludXgvdHlwZXMuaFx1MDAzZVxuICAxNTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2ZzLmhcdTAwM2VcbiAgMTY6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICAxNzpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L21ham9yLmhcdTAwM2VcbiAgMTg6XHQjaW5jbHVkZSBcdTAwM2NsaW51eC9zdHJpbmcuaFx1MDAzZVxuICAxOTpcdCNpbmNsdWRlIFx1MDAzY2xpbnV4L2VmaS5oXHUwMDNlXG4gIDIwOlx0I2luY2x1ZGUgXHUwMDNjbGludXgvY29tcGlsZXIuaFx1MDAzZVxuICAyMTpcdFxuICAyMjpcdCNkZWZpbmUgTVNET1NfTUJSX1NJR05BVFVSRSAweGFhNTVcbiAgMjM6XHQjZGVmaW5lIEVGSV9QTUJSX09TVFlQRV9FRkkgMHhFRlxuICAyNDpcdCNkZWZpbmUgRUZJX1BNQlJfT1NUWVBFX0VGSV9HUFQgMHhFRVxuICAyNTpcdFxuICAyNjpcdCNkZWZpbmUgR1BUX01CUl9QUk9URUNUSVZFICAxXG4gIDI3Olx0I2RlZmluZSBHUFRfTUJSX0hZQlJJRCAgICAgIDJcbiAgMjg6XHRcbiAgMjk6XHQjZGVmaW5lIEdQVF9IRUFERVJfU0lHTkFUVVJFIDB4NTQ1MjQxNTAyMDQ5NDY0NVVMTFxuICAzMDpcdCNkZWZpbmUgR1BUX0hFQURFUl9SRVZJU0lPTl9WMSAweDAwMDEwMDAwXG4gIDMxOlx0I2RlZmluZSBHUFRfUFJJTUFSWV9QQVJUSVRJT05fVEFCTEVfTEJBIDFcbiAgMzI6XHRcbiAgMzM6XHQjZGVmaW5lIFBBUlRJVElPTl9TWVNURU1fR1VJRCBcXFxuICAzNDpcdCAgICBFRklfR1VJRCggMHhDMTJBNzMyOCwgMHhGODFGLCAweDExZDIsIFxcXG4gIDM1Olx0ICAgICAgICAgICAgICAweEJBLCAweDRCLCAweDAwLCAweEEwLCAweEM5LCAweDNFLCAweEM5LCAweDNCKSBcbiAgMzY6XHQjZGVmaW5lIExFR0FDWV9NQlJfUEFSVElUSU9OX0dVSUQgXFxcbiAgMzc6XHQgICAgRUZJX0dVSUQoIDB4MDI0REVFNDEsIDB4MzNFNywgMHgxMWQzLCBcXFxuICAzODpcdCAgICAgICAgICAgICAgMHg5RCwgMHg2OSwgMHgwMCwgMHgwOCwgMHhDNywgMHg4MSwgMHhGMywgMHg5RilcbiAgMzk6XHQjZGVmaW5lIFBBUlRJVElPTl9NU0ZUX1JFU0VSVkVEX0dVSUQgXFxcbiAgNDA6XHQgICAgRUZJX0dVSUQoIDB4RTNDOUUzMTYsIDB4MEI1QywgMHg0REI4LCBcXFxuICA0MTpcdCAgICAgICAgICAgICAgMHg4MSwgMHg3RCwgMHhGOSwgMHgyRCwgMHhGMCwgMHgwMiwgMHgxNSwgMHhBRSlcbiAgNDI6XHQjZGVmaW5lIFBBUlRJVElPTl9CQVNJQ19EQVRBX0dVSUQgXFxcbiAgNDM6XHQgICAgRUZJX0dVSUQoIDB4RUJEMEEwQTIsIDB4QjlFNSwgMHg0NDMzLCBcXFxuICA0NDpcdCAgICAgICAgICAgICAgMHg4NywgMHhDMCwgMHg2OCwgMHhCNiwgMHhCNywgMHgyNiwgMHg5OSwgMHhDNylcbiAgNDU6XHQjZGVmaW5lIFBBUlRJVElPTl9MSU5VWF9SQUlEX0dVSUQgXFxcbiAgNDY6XHQgICAgRUZJX0dVSUQoIDB4YTE5ZDg4MGYsIDB4MDVmYywgMHg0ZDNiLCBcXFxuICA0NzpcdCAgICAgICAgICAgICAgMHhhMCwgMHgwNiwgMHg3NCwgMHgzZiwgMHgwZiwgMHg4NCwgMHg5MSwgMHgxZSlcbiAgNDg6XHQjZGVmaW5lIFBBUlRJVElPTl9MSU5VWF9TV0FQX0dVSUQgXFxcbiAgNDk6XHQgICAgRUZJX0dVSUQoIDB4MDY1N2ZkNmQsIDB4YTRhYiwgMHg0M2M0LCBcXFxuICA1MDpcdCAgICAgICAgICAgICAgMHg4NCwgMHhlNSwgMHgwOSwgMHgzMywgMHhjOCwgMHg0YiwgMHg0ZiwgMHg0ZilcbiAgNTE6XHQjZGVmaW5lIFBBUlRJVElPTl9MSU5VWF9MVk1fR1VJRCBcXFxuICA1MjpcdCAgICBFRklfR1VJRCggMHhlNmQ2ZDM3OSwgMHhmNTA3LCAweDQ0YzIsIFxcXG4gIDUzOlx0ICAgICAgICAgICAgICAweGEyLCAweDNjLCAweDIzLCAweDhmLCAweDJhLCAweDNkLCAweGY5LCAweDI4KVxuICA1NDpcdFxuICA1NTpcdHR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHtcbiAgNTY6XHRcdF9fbGU2NCBzaWduYXR1cmU7XG4gIDU3Olx0XHRfX2xlMzIgcmV2aXNpb247XG4gIDU4Olx0XHRfX2xlMzIgaGVhZGVyX3NpemU7XG4gIDU5Olx0XHRfX2xlMzIgaGVhZGVyX2NyYzMyO1xuICA2MDpcdFx0X19sZTMyIHJlc2VydmVkMTtcbiAgNjE6XHRcdF9fbGU2NCBteV9sYmE7XG4gIDYyOlx0XHRfX2xlNjQgYWx0ZXJuYXRlX2xiYTtcbiAgNjM6XHRcdF9fbGU2NCBmaXJzdF91c2FibGVfbGJhO1xuICA2NDpcdFx0X19sZTY0IGxhc3RfdXNhYmxlX2xiYTtcbiAgNjU6XHRcdGVmaV9ndWlkX3QgZGlza19ndWlkO1xuICA2NjpcdFx0X19sZTY0IHBhcnRpdGlvbl9lbnRyeV9sYmE7XG4gIDY3Olx0XHRfX2xlMzIgbnVtX3BhcnRpdGlvbl9lbnRyaWVzO1xuICA2ODpcdFx0X19sZTMyIHNpemVvZl9wYXJ0aXRpb25fZW50cnk7XG4gIDY5Olx0XHRfX2xlMzIgcGFydGl0aW9uX2VudHJ5X2FycmF5X2NyYzMyO1xuICA3MDpcdFxuICA3MTpcdFx0LyogVGhlIHJlc3Qgb2YgdGhlIGxvZ2ljYWwgYmxvY2sgaXMgcmVzZXJ2ZWQgYnkgVUVGSSBhbmQgbXVzdCBiZSB6ZXJvLlxuICA3MjpcdFx0ICogRUZJIHN0YW5kYXJkIGhhbmRsZXMgdGhpcyBieTpcbiAgNzM6XHRcdCAqXG4gIDc0Olx0XHQgKiB1aW50OF90XHRcdHJlc2VydmVkMlsgQmxvY2tTaXplIC0gOTIgXTtcbiAgNzU6XHRcdCAqL1xuICA3NjpcdH0gX19wYWNrZWQgZ3B0X2hlYWRlcjtcbiAgNzc6XHRcbiAgNzg6XHR0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcbiAgNzk6XHRcdGVmaV9ndWlkX3QgcGFydGl0aW9uX3R5cGVfZ3VpZDtcbiAgODA6XHRcdGVmaV9ndWlkX3QgdW5pcXVlX3BhcnRpdGlvbl9ndWlkO1xuICA4MTpcdFx0X19sZTY0IHN0YXJ0aW5nX2xiYTtcbiAgODI6XHRcdF9fbGU2NCBlbmRpbmdfbGJhO1xuICA4MzpcdFx0X19sZTY0IGF0dHJpYnV0ZXM7XG4gIDg0Olx0XHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xuICA4NTpcdH0gX19wYWNrZWQgZ3B0X2VudHJ5O1xuICA4NjpcdFxuICA4NzpcdHR5cGVkZWYgc3RydWN0IF9ncHRfbWJyX3JlY29yZCB7XG4gIDg4Olx0XHR1OFx0Ym9vdF9pbmRpY2F0b3I7IC8qIHVudXNlZCBieSBFRkksIHNldCB0byAweDgwIGZvciBib290YWJsZSAqL1xuICA4OTpcdFx0dThcdHN0YXJ0X2hlYWQ7ICAgICAvKiB1bnVzZWQgYnkgRUZJLCBwdCBzdGFydCBpbiBDSFMgKi9cbiAgOTA6XHRcdHU4XHRzdGFydF9zZWN0b3I7ICAgLyogdW51c2VkIGJ5IEVGSSwgcHQgc3RhcnQgaW4gQ0hTICovXG4gIDkxOlx0XHR1OFx0c3RhcnRfdHJhY2s7XG4gIDkyOlx0XHR1OFx0b3NfdHlwZTsgICAgICAgIC8qIEVGSSBhbmQgbGVnYWN5IG5vbi1FRkkgT1MgdHlwZXMgKi9cbiAgOTM6XHRcdHU4XHRlbmRfaGVhZDsgICAgICAgLyogdW51c2VkIGJ5IEVGSSwgcHQgZW5kIGluIENIUyAqL1xuICA5NDpcdFx0dThcdGVuZF9zZWN0b3I7ICAgICAvKiB1bnVzZWQgYnkgRUZJLCBwdCBlbmQgaW4gQ0hTICovXG4gIDk1Olx0XHR1OFx0ZW5kX3RyYWNrOyAgICAgIC8qIHVudXNlZCBieSBFRkksIHB0IGVuZCBpbiBDSFMgKi9cbiAgOTY6XHRcdF9fbGUzMlx0c3RhcnRpbmdfbGJhOyAgIC8qIHVzZWQgYnkgRUZJIC0gc3RhcnQgYWRkciBvZiB0aGUgb24gZGlzayBwdCAqL1xuICA5NzpcdFx0X19sZTMyXHRzaXplX2luX2xiYTsgICAgLyogdXNlZCBieSBFRkkgLSBzaXplIG9mIHB0IGluIExCQSAqL1xuICA5ODpcdH0gX19wYWNrZWQgZ3B0X21icl9yZWNvcmQ7XG4gIDk5Olx0XG4gMTAwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMjU4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNjU1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgR1BUIEVudHJ5IEF0dHJpYnV0ZSBDaGFuZ2UqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgZ3B0X2VudHJ5YCBpcyBkZWZpbmVkIGluIGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYC4gVGhlIHZhcmlhYmxlIGBhdHRyaWJ1dGVzYCB3aXRoaW4gdGhhdCBzdHJ1Y3QgaXMgdGhlIHNwZWNpZmljIHRoaW5nIEkmIzM5O20gZm9jdXNlZCBvbi4gSW5pdGlhbGx5LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoaXMgYWN0dWFsbHkgKnVzZWQqIGFueXdoZXJlPyYjMzQ7IEEgcXVpY2sgZ3JlcCBkaWRuJiMzOTt0IHR1cm4gdXAgYW55dGhpbmcgaW4gYGJsb2NrL3BhcnRpdGlvbnMvYCBiZXlvbmQgdGhlIGRlZmluaXRpb24gaXRzZWxmLiBJIGRvdWJsZS1jaGVja2VkLCBncmVwcGluZyBmb3IgYGdwdF9lbnRyeWAsIGFuZCBjb25maXJtZWQgaXRzIHVzYWdlIGlzIGxpbWl0ZWQgdG8gdGhlIGBlZmkuY2AgYW5kIGBlZmkuaGAgZmlsZXMgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBTbywgaXQgcmVhbGx5ICppcyogbmV2ZXIgYWNjZXNzZWQsIGF0IGxlYXN0IG5vdCBkaXJlY3RseS4gVGhhdCYjMzk7cyBvZGQuCgpXaHkgdGhlIGNoYW5nZSB0aGVuPyBUaGUgb3JpZ2luYWwgaW1wbGVtZW50YXRpb24gb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgYSBiaXRmaWVsZC4gQWgsIHRoZSBkYW5nZXIgb2YgYml0ZmllbGRzISBNYXBwaW5nIHN0cnVjdHVyZXMgd2l0aCBiaXRmaWVsZHMgZGlyZWN0bHkgdG8gb24tZGlzayBkYXRhIGlzIGdlbmVyYWxseSBhIG5vLW5vLiBDb21waWxlciBiZWhhdmlvciByZWdhcmRpbmcgYml0ZmllbGQgcGFja2luZyBjYW4gdmFyeSB3aWxkbHkgYmV0d2VlbiBhcmNoaXRlY3R1cmVzIGFuZCBlbmRpYW5uZXNzLiBIb3dldmVyLCB0aGUga2VybmVsICpuZXZlciogcmVhZHMgb3Igd3JpdGVzIHRoYXQgZmllbGQ7IHRoZSBleGVjdXRpb24gZmxvdyBpc24mIzM5O3QgaW1wYWN0ZWQgaGVyZS4KCkJ1dCB3YWl0IGEgc2Vjb25kLi4uIGBzaXplb2YoZ3B0X2VudHJ5KWAgaXMgdXNlZCBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgaW4gYSBjcnVjaWFsIHNpemUgY2hlY2s6CgpgYGBjCglpZiAobGUzMl90b19jcHUoKCpncHQpLSZndDtzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkgewoJCXByX2RlYnVnKCYjMzQ7R1VJRCBQYXJ0aXRpb24gRW50cnkgU2l6ZSBjaGVjayBmYWlsZWQuXG4mIzM0Oyk7CmBgYAoKSWYgdGhlIHNpemUgb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgKmRpZmZlcmVudCogZHVlIHRvIHRoZSBiaXRmaWVsZCBjaGFuZ2UsIGBzaXplb2YoZ3B0X2VudHJ5KWAgd291bGQgaGF2ZSBiZWVuIGFmZmVjdGVkIGFuZCBwb3RlbnRpYWxseSBicm9rZW4gdGhlIGNoZWNrISBCdXQsIHRoZSBvcmlnaW5hbCBzdHJ1Y3QsIGBncHRfZW50cnlfYXR0cmlidXRlc2AsIHdhczoKCmBgYGMKdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHsKCXU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxOwoJdTY0IHJlc2VydmVkOjQ3OwogICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7Cn0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7CmBgYAoKSXQgd2FzIGEgYHU2NGAgYml0ZmllbGQgd2l0aCBhIHRvdGFsIG9mIDY0IGJpdHMgd2l0aCB0aGUgYF9fcGFja2VkYCBhdHRyaWJ1dGUgdG8gZW5zdXJlIG5vIHBhZGRpbmcuIFNvIHRoZSBzaXplIHdhcyA4IGJ5dGVzIGJlZm9yZSAqYW5kKiBhZnRlciB0aGUgY2hhbmdlLCBtYWtpbmcgYHNpemVvZihncHRfZW50cnkpYCBzdGF5IGF0IDEyOCBieXRlcyBpbiBib3RoIGNhc2VzLiBJcyB0aGVyZSAqYW55KiBmdW5jdGlvbmFsIGNoYW5nZSB0aGVuPwoKSG9sZCBvbi4uLiBldmVuIGlmIHRoZSBzaXplIHJlbWFpbnMgdGhlIHNhbWUsIGEgYml0ZmllbGQgYHU2NGAgbWlnaHQgdHJpZ2dlciBjb21waWxlciB3YXJuaW5ncywgb3IgZXZlbiBzcGFyc2UgZXJyb3JzLiBBbHNvLCBhbmQgbW9yZSBpbXBvcnRhbnRseSwgdGhlIG9yaWdpbmFsIGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2FzbiYjMzk7dCB1c2luZyBgX19sZTY0YC4gSWYgaXQgKndlcmUqIHJlYWQsIGl0IHdvdWxkIGJlIGludGVycHJldGVkIGluIGhvc3QgYnl0ZSBvcmRlciwgd2hpY2ggaXMgKndyb25nKiBmb3Igb24tZGlzayBHUFQgZGF0YSAobGl0dGxlLWVuZGlhbikuIEJ1dCBzaW5jZSBpdCYjMzk7cyBuZXZlciByZWFkLCBpdCYjMzk7cyBub3QgYSBwcm9ibGVtLgoKSG1tLCBidXQgKmNvdWxkKiBgZ3B0X2VudHJ5YCBnZXQgY29waWVkIHRvIHVzZXJzcGFjZT8gTGV0JiMzOTtzIGNoZWNrLiBJZiBgZ3B0X2VudHJ5YCB3ZXJlIGV4cG9zZWQgdG8gdXNlcmxhbmQsIHRoZW4gdGhpcyBjaGFuZ2UgKndvdWxkKiBiZSBpbnRlcmVzdGluZywgYnV0IGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYCBpc24mIzM5O3QgaW4gYGluY2x1ZGUvdWFwaS9gLCBzbyBpdCYjMzk7cyBpbnRlcm5hbCB0byB0aGUga2VybmVsLiBJcyBpdCBleHBvc2VkIHRvIHVzZXJzcGFjZSB2aWEgc29tZSBJT0NUTD8gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgdG8gYmUgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb3B5X3RvX3VzZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ2NzUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBkaXJlY3QgcmVmbGVjdGlvbiBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBgZ3B0X2VudHJ5YCBVc2FnZSoqCgpBbHJpZ2h0LCBmaXJzdCB0aGluZ3MgZmlyc3QsIGxldCYjMzk7cyBnZXQgYSBoYW5kbGUgb24gdGhpcyBgZ3B0X2VudHJ5YCB0aGluZy4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaXRzIHNjb3BlIGFuZCBob3cgaXQmIzM5O3MgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyB2YXJpYWJsZSBvciBmdW5jdGlvbiDigJMgd2hhdGV2ZXIgaXQgaXMg4oCTIGlzIGJlaW5nIHBhc3NlZCBhcm91bmQgdG8gb3RoZXIgc3Vic3lzdGVtcy4gVW5kZXJzdGFuZGluZyBpdHMgcHJvcGFnYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMsIHNpZGUgZWZmZWN0cywgYW5kIG92ZXJhbGwgYXJjaGl0ZWN0dXJhbCBpbXBhY3QuIElzIGl0IGlzb2xhdGVkLCBvciBpcyBpdCBhIGNlbnRyYWwgcG9pbnQgb2YgaW50ZWdyYXRpb24/IEtub3dpbmcgdGhlIGFuc3dlciB0byB0aGF0IHF1ZXN0aW9uIHdpbGwgaW5mb3JtIGFueSBmdXJ0aGVyIGFuYWx5c2lzIEkgbmVlZCB0byBkby4gSSBuZWVkIHRvIG1hcCB3aGVyZSBpdCB0b3VjaGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNiAwNzoxMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtncHRfZW50cnkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI2OS0gKi9cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjcxLVx0XHRcdFx0XHQgZ3B0X2hlYWRlciAqZ3B0KVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjczLVx0c2l6ZV90IGNvdW50O1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzoyNzQ6XHRncHRfZW50cnkgKnB0ZTtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MzM0PXN0YXRpYyBpbnQgaXNfZ3B0X3ZhbGlkKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIHU2NCBsYmEsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcdFx0XHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0zMzYte1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVx0LyogQ2hlY2sgdGhhdCBzaXplb2ZfcGFydGl0aW9uX2VudHJ5IGhhcyB0aGUgY29ycmVjdCB2YWx1ZSAqL1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0MTU6XHRpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKSB7XG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTQxNi1cdFx0cHJfZGVidWcoXCYjMzQ7R1VJRCBQYXJ0aXRpb24gRW50cnkgU2l6ZSBjaGVjayBmYWlsZWQuXFxuXCYjMzQ7KTtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTQ1OT1zdGF0aWMgaW5saW5lIGludFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo0NjA6aXNfcHRlX3ZhbGlkKGNvbnN0IGdwdF9lbnRyeSAqcHRlLCBjb25zdCB1NjQgbGFzdGxiYSlcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcbi0tXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTU4MD1zdGF0aWMgaW50IGZpbmRfdmFsaWRfZ3B0KHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUsIGdwdF9oZWFkZXIgKipncHQsXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcdFx0XHQgIGdwdF9lbnRyeSAqKnB0ZXMpXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Mi17XG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXHRncHRfaGVhZGVyICpwZ3B0ID0gTlVMTCwgKmFncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo1ODU6XHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNTg2LVx0bGVnYWN5X21iciAqbGVnYWN5bWJyO1xuLS1cbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NzEyPWludCBlZmlfcGFydGl0aW9uKHN0cnVjdCBwYXJzZWRfcGFydGl0aW9ucyAqc3RhdGUpXG4tLVxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXHRncHRfaGVhZGVyICpncHQgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo3MTU6XHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTYtXHR1MzIgaTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU1MjMKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nIGFzIGFuIGV4cGVydDoKCioqSW50ZXJuYWwgR1BUIFBhcnNpbmcgQW5hbHlzaXMqKgoKUmlnaHQsIGl0IGxvb2tzIGxpa2UgYGdwdF9lbnRyeWAgaXMgc3RyaWN0bHkgYSAqcHJpdmF0ZSogZnVuY3Rpb24sIGEgaGVscGVyIHByaW1hcmlseSBmb3IgdGhlIHBhcnRpdGlvbiB0YWJsZSBwYXJzaW5nIHByb2Nlc3MuIEl0JiMzOTtzIG5vdCBleHBvc2VkIGV4dGVybmFsbHksIHdoaWNoIG1ha2VzIHNlbnNlLiBJdHMgb25seSBqb2IgaXMgdG8gYnJlYWsgZG93biB0aGUgR1BUIHN0cnVjdHVyZXMsIGFuZCB0aGVuIGZlZWQgdGhlIHJlc3VsdHMgaW50byBgc3RhdGVgLCB3aGljaCwgSSBzZWUsIGlzIGEgYHBhcnNlZF9wYXJ0aXRpb25zYCBzdHJ1Y3QuIE1ha2VzIHRoZSBhcmNoaXRlY3R1cmUgcHJldHR5IGNsZWFyLiBMZXQgbWUgcXVpY2tseSBqdW1wIG92ZXIgdG8gYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgIGFuZCB0YWtlIGEgbG9vayBhdCB0aGUgYGVmaV9wYXJ0aXRpb25gIGNvZGUg4oCTIEkgd2FudCB0byBjb25maXJtIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhhdCBwYXJzaW5nIHByb2Nlc3MuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0aGlua2luZyBJJiMzOTtsbCBmb2N1cyBvbiBob3cgYGVmaV9wYXJ0aXRpb25gIGhhbmRsZXMgdGhhdCBwYXJzZWQgZGF0YSB0aGF0IG9yaWdpbmF0ZXMgZnJvbSBgZ3B0X2VudHJ5YC4gSSYjMzk7bSBndWVzc2luZyB0aGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGxvZ2ljIGlzLCBob3cgdGhlIHBhcnNlZCBHUFQgZW50cmllcyB1bHRpbWF0ZWx5IHRyYW5zbGF0ZSBpbnRvIHVzYWJsZSBwYXJ0aXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzeXN0ZW0uIFRoYXQmIzM5O3Mgd2hlcmUgdGhlIGRldmlsIGlzIGluIHRoZSBkZXRhaWxzLCBzbyBsZXQmIzM5O3MgZGlnIGludG8gYGVmaS5jYCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtibG9jay9wYXJ0aXRpb25zL2VmaS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNzEyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzEyOlx0aW50IGVmaV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcbiA3MTM6XHR7XG4gNzE0Olx0XHRncHRfaGVhZGVyICpncHQgPSBOVUxMO1xuIDcxNTpcdFx0Z3B0X2VudHJ5ICpwdGVzID0gTlVMTDtcbiA3MTY6XHRcdHUzMiBpO1xuIDcxNzpcdFx0dW5zaWduZWQgc3N6ID0gcXVldWVfbG9naWNhbF9ibG9ja19zaXplKHN0YXRlLVx1MDAzZWRpc2stXHUwMDNlcXVldWUpIC8gNTEyO1xuIDcxODpcdFxuIDcxOTpcdFx0aWYgKCFmaW5kX3ZhbGlkX2dwdChzdGF0ZSwgXHUwMDI2Z3B0LCBcdTAwMjZwdGVzKSB8fCAhZ3B0IHx8ICFwdGVzKSB7XG4gNzIwOlx0XHRcdGtmcmVlKGdwdCk7XG4gNzIxOlx0XHRcdGtmcmVlKHB0ZXMpO1xuIDcyMjpcdFx0XHRyZXR1cm4gMDtcbiA3MjM6XHRcdH1cbiA3MjQ6XHRcbiA3MjU6XHRcdHByX2RlYnVnKFwmIzM0O0dVSUQgUGFydGl0aW9uIFRhYmxlIGlzIHZhbGlkISAgWWVhIVxcblwmIzM0Oyk7XG4gNzI2Olx0XG4gNzI3Olx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBsZTMyX3RvX2NwdShncHQtXHUwMDNlbnVtX3BhcnRpdGlvbl9lbnRyaWVzKSBcdTAwMjZcdTAwMjYgaSBcdTAwM2Mgc3RhdGUtXHUwMDNlbGltaXQtMTsgaSYjNDM7JiM0MzspIHtcbiA3Mjg6XHRcdFx0c3RydWN0IHBhcnRpdGlvbl9tZXRhX2luZm8gKmluZm87XG4gNzI5Olx0XHRcdHVuc2lnbmVkIGxhYmVsX21heDtcbiA3MzA6XHRcdFx0dTY0IHN0YXJ0ID0gbGU2NF90b19jcHUocHRlc1tpXS5zdGFydGluZ19sYmEpO1xuIDczMTpcdFx0XHR1NjQgc2l6ZSA9IGxlNjRfdG9fY3B1KHB0ZXNbaV0uZW5kaW5nX2xiYSkgLVxuIDczMjpcdFx0XHRcdCAgIGxlNjRfdG9fY3B1KHB0ZXNbaV0uc3RhcnRpbmdfbGJhKSAmIzQzOyAxVUxMO1xuIDczMzpcdFxuIDczNDpcdFx0XHRpZiAoIWlzX3B0ZV92YWxpZChcdTAwMjZwdGVzW2ldLCBsYXN0X2xiYShzdGF0ZS1cdTAwM2VkaXNrKSkpXG4gNzM1Olx0XHRcdFx0Y29udGludWU7XG4gNzM2Olx0XG4gNzM3Olx0XHRcdHB1dF9wYXJ0aXRpb24oc3RhdGUsIGkmIzQzOzEsIHN0YXJ0ICogc3N6LCBzaXplICogc3N6KTtcbiA3Mzg6XHRcbiA3Mzk6XHRcdFx0LyogSWYgdGhpcyBpcyBhIFJBSUQgdm9sdW1lLCB0ZWxsIG1kICovXG4gNzQwOlx0XHRcdGlmICghZWZpX2d1aWRjbXAocHRlc1tpXS5wYXJ0aXRpb25fdHlwZV9ndWlkLCBQQVJUSVRJT05fTElOVVhfUkFJRF9HVUlEKSlcbiA3NDE6XHRcdFx0XHRzdGF0ZS1cdTAwM2VwYXJ0c1tpICYjNDM7IDFdLmZsYWdzID0gQUREUEFSVF9GTEFHX1JBSUQ7XG4gNzQyOlx0XG4gNzQzOlx0XHRcdGluZm8gPSBcdTAwMjZzdGF0ZS1cdTAwM2VwYXJ0c1tpICYjNDM7IDFdLmluZm87XG4gNzQ0Olx0XHRcdGVmaV9ndWlkX3RvX3N0cihcdTAwMjZwdGVzW2ldLnVuaXF1ZV9wYXJ0aXRpb25fZ3VpZCwgaW5mby1cdTAwM2V1dWlkKTtcbiA3NDU6XHRcbiA3NDY6XHRcdFx0LyogTmFpdmVseSBjb252ZXJ0IFVURjE2LUxFIHRvIDcgYml0cy4gKi9cbiA3NDc6XHRcdFx0bGFiZWxfbWF4ID0gbWluKEFSUkFZX1NJWkUoaW5mby1cdTAwM2V2b2xuYW1lKSAtIDEsXG4gNzQ4Olx0XHRcdFx0XHRBUlJBWV9TSVpFKHB0ZXNbaV0ucGFydGl0aW9uX25hbWUpKTtcbiA3NDk6XHRcdFx0dXRmMTZfbGVfdG9fN2JpdChwdGVzW2ldLnBhcnRpdGlvbl9uYW1lLCBsYWJlbF9tYXgsIGluZm8tXHUwMDNldm9sbmFtZSk7XG4gNzUwOlx0XHRcdHN0YXRlLVx1MDAzZXBhcnRzW2kgJiM0MzsgMV0uaGFzX2luZm8gPSB0cnVlO1xuIDc1MTpcdFx0fVxuIDc1MjpcdFx0a2ZyZWUocHRlcyk7XG4gNzUzOlx0XHRrZnJlZShncHQpO1xuIDc1NDpcdFx0c2VxX2J1Zl9wdXRzKFx1MDAyNnN0YXRlLVx1MDAzZXBwX2J1ZiwgXCYjMzQ7XFxuXCYjMzQ7KTtcbiA3NTU6XHRcdHJldHVybiAxO1xuIDc1NjpcdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjY2NzUKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgYSBiaXQgcHV6emxpbmcgYXQgZmlyc3QgZ2xhbmNlLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIGNoYW5naW5nIHRoZSBkYXRhIHR5cGUgb2YgdGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCBmcm9tIGEgYml0ZmllbGQgc3RydWN0IHRvIGEgYF9fbGU2NGAuIFRoZSBrZXJuZWwmIzM5O3MgYWN0dWFsbHkgKm5vdCogdXNpbmcgdGhvc2UgYGF0dHJpYnV0ZXNgIGFueXdoZXJlLCBzbyBvbiB0aGUgZmFjZSBvZiBpdCwgdGhpcyBjaGFuZ2Ugc2hvdWxkIGJlIGNvbXBsZXRlbHkgaW5lcnQuIEl0IHdvbiYjMzk7dCBhZmZlY3QgdGhlIGV4ZWN1dGlvbiBwYXRoIGluIHRoZSBzbGlnaHRlc3QuCgpJdCYjMzk7cyBwcm9iYWJseSBqdXN0IGEgY2xlYW51cCwgcmlnaHQ/IFBlcmhhcHMgdGhleSYjMzk7cmUgZ2V0dGluZyByaWQgb2YgdGhlIGJpdGZpZWxkIGJlY2F1c2UgaXQmIzM5O3Mgbm9uLXN0YW5kYXJkLCBvciBtYXliZSBpdCB3YXMgZ2VuZXJhdGluZyBzcGFyc2Ugd2FybmluZ3MuIE9yLCBtb3JlIGxpa2VseSwgdGhleSYjMzk7cmUgYWxpZ25pbmcgdGhlIGRhdGEgdHlwZSB0byBtYXRjaCBob3cgdGhlIGZpZWxkIGlzIHJlcHJlc2VudGVkIG9uIGRpc2ssIGFzc3VtaW5nIGxpdHRsZS1lbmRpYW5uZXNzIGlzIHJlbGV2YW50LgoKSG9sZCBvbiBhIHNlY29uZCwgbGV0IG1lIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCBpc24mIzM5O3QgKnVzZWQqIGFueXdoZXJlIGVsc2UgaW4gdGhlIGtlcm5lbC4gR290dGEgYmUgdGhvcm91Z2guIEp1c3Qgd2FudCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYSBjcnVjaWFsIGRldGFpbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjYgMDc6MTA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtncHRfZW50cnlfYXR0cmlidXRlcyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjEwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MDQ4CgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEZWNpc2lvbjogTm8gRnV6emluZyBOZWNlc3NhcnkqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIHRocm91Z2ggdGhlIGNoYW5nZXMuIE5vIG1hdGNoZXMsIHdoaWNoIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHB1cmVseSB3aXRoIGRlY29yYXRpdmUgdXBkYXRlcyBvciBjb2RlIGNsZWFudXAuIENvbnNlcXVlbnRseSwgYFdvcnRoRnV6emluZ2Agc2hvdWxkIGRlZmluaXRlbHkgYmUgc2V0IHRvIGBmYWxzZWAuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGZvciBhbnkgc3VidGxlLCB1bmV4cGVjdGVkIGltcGFjdHMuIEhtbW0sIGNvdWxkIHRoZSBgc2l6ZW9mKGdwdF9lbnRyeSlgIGhhdmUgY2hhbmdlZCwgZXZlbiBzdWJ0bHk/IExldCYjMzk7cyByZWZyZXNoIG91ciBtZW1vcnkgb24gYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYDoKCmBgYGMKdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHsKCXU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxOwoJdTY0IHJlc2VydmVkOjQ3OwogICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7Cn0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7CmBgYAoKUmlnaHQsIGl0JiMzOTtzIGBfX3BhY2tlZGAuIEEgcGFja2VkIHN0cnVjdCwgdXNpbmcgNjQgYml0cyB3aXRoIGJpdGZpZWxkcywgKmFsd2F5cyogZW5kcyB1cCBiZWluZyBleGFjdGx5IDggYnl0ZXMuIEFuZCBgX19sZTY0YCBpcyBhbHNvIHByZWNpc2VseSA4IGJ5dGVzLiBTbywgYmFzZWQgb24gdGhpcyByZXZpZXcgb2YgdGhlIGNoYW5nZXMsIHRoZSBgc2l6ZW9mKGdwdF9lbnRyeSlgIHJlbWFpbnMgKmlkZW50aWNhbCouIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aGF0c29ldmVyLgoKVGhlcmVmb3JlLCBteSBmaW5hbCBkZWNpc2lvbiBpcyBjbGVhcjogSSYjMzk7bSByZXR1cm5pbmcgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI2IDA3OjEwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYSBiaXRmaWVsZCBzdHJ1Y3QgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3aXRoIGEgc2ltcGxlIGBfX2xlNjQgYXR0cmlidXRlc2AgaW4gYGdwdF9lbnRyeWAuIFRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgbmV2ZXIgYWNjZXNzZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlLiBUaGUgc2l6ZSBvZiBgZ3B0X2VudHJ5YCByZW1haW5zIGV4YWN0bHkgdGhlIHNhbWUgKDEyOCBieXRlcykgYmVjYXVzZSB0aGUgb2xkIHN0cnVjdCB3YXMgYF9fcGFja2VkYCBhbmQgY29udGFpbmVkIGV4YWN0bHkgNjQgYml0cyBvZiBiaXRmaWVsZHMuIFRoZXJlZm9yZSwgdGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2NsZWFudXAgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gZXhlY3V0aW9uIGZsb3cuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBhIGJpdGZpZWxkIHN0cnVjdCBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdpdGggYSBzaW1wbGUgYF9fbGU2NCBhdHRyaWJ1dGVzYCBpbiBgZ3B0X2VudHJ5YC4gVGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCBpcyBuZXZlciBhY2Nlc3NlZCBhbnl3aGVyZSBpbiB0aGUga2VybmVsIGNvZGUuIFRoZSBzaXplIG9mIGBncHRfZW50cnlgIHJlbWFpbnMgZXhhY3RseSB0aGUgc2FtZSAoMTI4IGJ5dGVzKSBiZWNhdXNlIHRoZSBvbGQgc3RydWN0IHdhcyBgX19wYWNrZWRgIGFuZCBjb250YWluZWQgZXhhY3RseSA2NCBiaXRzIG9mIGJpdGZpZWxkcy4gVGhlcmVmb3JlLCB0aGlzIGlzIGEgcHVyZWx5IGRlY29yYXRpdmUvY2xlYW51cCBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiBleGVjdXRpb24gZmxvdy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowODo0MS4zMjYwMTk1NjRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE4Nzk3NjYyODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHJlcGxhY2VzIGEgYml0ZmllbGQgc3RydWN0IGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2l0aCBhIHNpbXBsZSBgX19sZTY0IGF0dHJpYnV0ZXNgIGluIGBncHRfZW50cnlgLiBUaGUgYGF0dHJpYnV0ZXNgIGZpZWxkIGlzIG5ldmVyIGFjY2Vzc2VkIGFueXdoZXJlIGluIHRoZSBrZXJuZWwgY29kZS4gVGhlIHNpemUgb2YgYGdwdF9lbnRyeWAgcmVtYWlucyBleGFjdGx5IHRoZSBzYW1lICgxMjggYnl0ZXMpIGJlY2F1c2UgdGhlIG9sZCBzdHJ1Y3Qgd2FzIGBfX3BhY2tlZGAgYW5kIGNvbnRhaW5lZCBleGFjdGx5IDY0IGJpdHMgb2YgYml0ZmllbGRzLiBUaGVyZWZvcmUsIHRoaXMgaXMgYSBwdXJlbHkgZGVjb3JhdGl2ZS9jbGVhbnVwIGNoYW5nZSB3aXRoIG5vIGZ1bmN0aW9uYWwgaW1wYWN0IG9uIGV4ZWN1dGlvbiBmbG93LlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDg6NDEuMzI2MDI3MzM0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MDU3MTM3MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhZTg3MWYzYzZlNmQ5NGNlNzI4YzQ1N2ZmMTVlOGRmNDljMjA3Y2NiXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gSnVsIDI2IDA3OjA4OjM5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmggYi9ibG9jay9wYXJ0aXRpb25zL2VmaS5oXFxuaW5kZXggODRiOWYzNmI5ZTQ3OTcuLjFmNTZmOTNiMjgwNDhmIDEwMDY0NFxcbi0tLSBhL2Jsb2NrL3BhcnRpdGlvbnMvZWZpLmhcXG4rKysgYi9ibG9jay9wYXJ0aXRpb25zL2VmaS5oXFxuQEAgLTc1LDE4ICs3NSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XFxuIFxcdCAqL1xcbiB9IF9fcGFja2VkIGdwdF9oZWFkZXI7XFxuIFxcbi10eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5X2F0dHJpYnV0ZXMge1xcbi1cXHR1NjQgcmVxdWlyZWRfdG9fZnVuY3Rpb246MTtcXG4tXFx0dTY0IHJlc2VydmVkOjQ3O1xcbi0gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7XFxuLX0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7XFxuLVxcbiB0eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcXG4gXFx0ZWZpX2d1aWRfdCBwYXJ0aXRpb25fdHlwZV9ndWlkO1xcbiBcXHRlZmlfZ3VpZF90IHVuaXF1ZV9wYXJ0aXRpb25fZ3VpZDtcXG4gXFx0X19sZTY0IHN0YXJ0aW5nX2xiYTtcXG4gXFx0X19sZTY0IGVuZGluZ19sYmE7XFxuLVxcdGdwdF9lbnRyeV9hdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7XFxuK1xcdF9fbGU2NCBhdHRyaWJ1dGVzO1xcbiBcXHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xcbiB9IF9fcGFja2VkIGdwdF9lbnRyeTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA4OjQyLjAzMjg2NDk5MVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExMTE3MjkxMzU0NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBiaXRmaWVsZCBzdHJ1Y3QgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3aXRoIGEgc2ltcGxlIGBfX2xlNjQgYXR0cmlidXRlc2AgaW4gYGdwdF9lbnRyeWAuIFRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgbmV2ZXIgYWNjZXNzZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlLiBUaGUgc2l6ZSBvZiBgZ3B0X2VudHJ5YCByZW1haW5zIGV4YWN0bHkgdGhlIHNhbWUgKDEyOCBieXRlcykgYmVjYXVzZSB0aGUgb2xkIHN0cnVjdCB3YXMgYF9fcGFja2VkYCBhbmQgY29udGFpbmVkIGV4YWN0bHkgNjQgYml0cyBvZiBiaXRmaWVsZHMuIFRoZXJlZm9yZSwgdGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2NsZWFudXAgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhZTg3MWYzYzZlNmQ5NGNlNzI4YzQ1N2ZmMTVlOGRmNDljMjA3Y2NiXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBKdWwgMjYgMDc6MDg6MzkgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9ibG9jay9wYXJ0aXRpb25zL2VmaS5oIGIvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuaW5kZXggODRiOWYzNmI5ZTQ3OTcuLjFmNTZmOTNiMjgwNDhmIDEwMDY0NFxuLS0tIGEvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuKysrIGIvYmxvY2svcGFydGl0aW9ucy9lZmkuaFxuQEAgLTc1LDE4ICs3NSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XG4gXHQgKi9cbiB9IF9fcGFja2VkIGdwdF9oZWFkZXI7XG4gXG4tdHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHtcbi1cdHU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxO1xuLVx0dTY0IHJlc2VydmVkOjQ3O1xuLSAgICAgICAgdTY0IHR5cGVfZ3VpZF9zcGVjaWZpYzoxNjtcbi19IF9fcGFja2VkIGdwdF9lbnRyeV9hdHRyaWJ1dGVzO1xuLVxuIHR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnkge1xuIFx0ZWZpX2d1aWRfdCBwYXJ0aXRpb25fdHlwZV9ndWlkO1xuIFx0ZWZpX2d1aWRfdCB1bmlxdWVfcGFydGl0aW9uX2d1aWQ7XG4gXHRfX2xlNjQgc3RhcnRpbmdfbGJhO1xuIFx0X19sZTY0IGVuZGluZ19sYmE7XG4tXHRncHRfZW50cnlfYXR0cmlidXRlcyBhdHRyaWJ1dGVzO1xuK1x0X19sZTY0IGF0dHJpYnV0ZXM7XG4gXHRfX2xlMTYgcGFydGl0aW9uX25hbWVbNzIvc2l6ZW9mKF9fbGUxNildO1xuIH0gX19wYWNrZWQgZ3B0X2VudHJ5O1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDg6NDIuMDMyODY3MDkxWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzg3NTM3MTQxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEVGSSBQYXJ0aXRpb24gUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgYmxvY2svcGFydGl0aW9ucy9lZmkuaGAsIGFuZCBpdCBsb29rcyBsaWtlIGEgZ29vZCBvbmUuIFRoZXkncmUgcmVtb3ZpbmcgdGhlIGBncHRfZW50cnlfYXR0cmlidXRlc2Agc3RydWN0LCB3aGljaCB3YXMgdXNpbmcgYml0ZmllbGRzLCBhbmQgcmVwbGFjaW5nIGl0IHdpdGggYSBzaW1wbGUgYF9fbGU2NCBhdHRyaWJ1dGVzYCBmaWVsZCBkaXJlY3RseSB3aXRoaW4gdGhlIGBncHRfZW50cnlgIHN0cnVjdC4gVGhpcyBpcyBhIHNtYXJ0IG1vdmUsIEkgaW1tZWRpYXRlbHkgc2VlIHRoZSBiZW5lZml0LiBCaXRmaWVsZHMgYXJlIG5vdG9yaW91cyBmb3IgYmVpbmcgaW1wbGVtZW50YXRpb24tZGVmaW5lZDsgdGhlIGxheW91dCBpc24ndCBndWFyYW50ZWVkIHRvIGJlIGNvbnNpc3RlbnQgYWNyb3NzIGRpZmZlcmVudCBhcmNoaXRlY3R1cmVzLCBhbmQgdGhhdCBjYW4gbGVhZCB0byBzb21lIG5hc3R5IGVuZGlhbm5lc3MgYW5kIGxheW91dCBidWdzIGRvd24gdGhlIGxpbmUuIFVzaW5nIGBfX2xlNjRgIHByb3ZpZGVzIGEgbXVjaCBtb3JlIHByZWRpY3RhYmxlIGFuZCBwb3J0YWJsZSB3YXkgdG8gaGFuZGxlIHRoZXNlIGF0dHJpYnV0ZXMsIGVmZmVjdGl2ZWx5IGVuc3VyaW5nIHRoZSBkYXRhIGlzIGNvcnJlY3RseSBpbnRlcnByZXRlZCByZWdhcmRsZXNzIG9mIHRoZSBzeXN0ZW0ncyBieXRlIG9yZGVyLiBJdCdzIGEgY2xlYW4gYW5kIGVmZmljaWVudCBmaXggdG8gYSBwb3RlbnRpYWwgbG9uZy10ZXJtIHByb2JsZW0uIEkgbGlrZSB0aGlzLiBCdXQsIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEkgc2hvdWxkIGNoZWNrIGlmIHRoaXMgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgdXNlZCBhbnl3aGVyZSBlbHNlLiBHb3R0YSBtYWtlIHN1cmUgd2UncmUgbm90IG1pc3NpbmcgYW55IGRlcGVuZGVuY2llcyBvciBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGZyb20gdGhpcyBjaGFuZ2UuIEFsd2F5cyBkb3VibGUgY2hlY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxMzIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5OCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA4OjQ1LjkwODI0MTIxOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTYzMTI1NjQwLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncHRfZW50cnlfYXR0cmlidXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA4OjUxLjQ3MTM3NjMzOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMDkwNzcyOTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyBgZ3B0X2VudHJ5YCBVc2FnZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZGl2ZSBpbi4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaXMgZ2VhcmVkIHRvd2FyZHMgYSB0YXJnZXRlZCBzZWFyY2guIEkgbmVlZCB0byBwaW5wb2ludCBldmVyeSBpbnN0YW5jZSBvZiBgZ3B0X2VudHJ5YC4gVGhpcyBpcyBsaWtlbHkgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIGEgc3BlY2lmaWMgbW9kdWxlLCBmdW5jdGlvbiwgb3IgZGF0YSBzdHJ1Y3R1cmUgd2l0aGluIHRoaXMgY29kZSBiYXNlLiBJJ20gaW1tZWRpYXRlbHkgdGhpbmtpbmcgYWJvdXQgdGhlIGJlc3Qgc2VhcmNoIHRvb2xzIHRvIHVzZSDigJMgZ3JlcCwgcmlwZ3JlcCwgdGhlIElERSdzIGJ1aWx0LWluIHNlYXJjaCB3aXRoIGFkdmFuY2VkIG9wdGlvbnMuLi4gSSBuZWVkIGEgc2VhcmNoIHRoYXQncyBwcmVjaXNlIGJ1dCBhbHNvIGNvdmVycyBwb3RlbnRpYWwgdmFyaWF0aW9ucy4gQW0gSSBsb29raW5nIGZvciBhIGxpdGVyYWwgc3RyaW5nIG1hdGNoLCBvciBzaG91bGQgSSBjb25zaWRlciByZWd1bGFyIGV4cHJlc3Npb25zIHRvIGFjY291bnQgZm9yIGRpZmZlcmVudCBjYXBpdGFsaXphdGlvbiBvciBuYW1pbmcgY29udmVudGlvbnMgKGBHUFRfRU5UUllgLCBgR3B0RW50cnlgLCBldGMuKT8gQWxzbywgSSBuZWVkIHRvIGNvbnNpZGVyIHdoZXJlIEkgc2hvdWxkIGJlIHNlYXJjaGluZy4gSXMgaXQgdGhlIGVudGlyZSBwcm9qZWN0LCBvciBhIHN1YnNldCBvZiBkaXJlY3RvcmllcyBiYXNlZCBvbiBteSBleGlzdGluZyBrbm93bGVkZ2U/IFRoZSBzY29wZSB3aWxsIHNpZ25pZmljYW50bHkgaW1wYWN0IGJvdGggdGhlIHRpbWUgdG8gcnVuIGFuZCB0aGUgbm9pc2UtdG8tc2lnbmFsIHJhdGlvIG9mIHRoZSByZXN1bHRzLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdG8gY2hlY2sgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGRvY3VtZW50YXRpb24sIGFuZCBldmVuIHRlc3QgY2FzZXMsIGFzIHRob3NlIGFyZSBvZnRlbiB3aGVyZSB0aGVzZSB0eXBlcyBvZiB0aGluZ3MgYXJlIGRlZmluZWQgYW5kIHVzZWQuIExldCdzIGdldCBzZWFyY2hpbmcgYW5kIHNlZSB3aGF0IHdlIHVuY292ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1MDMsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowODo1NC41ODA0NTU5ODJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDY2OTg0NTk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncHRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjY5LSAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cXHRcXHRcXHRcXHRcXHQgZ3B0X2hlYWRlciAqZ3B0KVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNzMtXFx0c2l6ZV90IGNvdW50O1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0OlxcdGdwdF9lbnRyeSAqcHRlO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz0zMzQ9c3RhdGljIGludCBpc19ncHRfdmFsaWQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTY0IGxiYSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcXHRcXHRcXHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVxcdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQxNTpcXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVxcdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE2LVxcdFxcdHByX2RlYnVnKFxcXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXFxcblxcXCIpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQ2MDppc19wdGVfdmFsaWQoY29uc3QgZ3B0X2VudHJ5ICpwdGUsIGNvbnN0IHU2NCBsYXN0bGJhKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NTgwPXN0YXRpYyBpbnQgZmluZF92YWxpZF9ncHQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgZ3B0X2hlYWRlciAqKmdwdCxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcXHRcXHRcXHQgIGdwdF9lbnRyeSAqKnB0ZXMpXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXFx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4NTpcXHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cXHRsZWdhY3lfbWJyICpsZWdhY3ltYnI7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXFx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjcxNTpcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVxcdHUzMiBpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaD01NT10eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6Nzg6dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC03OS1cXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg0LVxcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4NTp9IF9fcGFja2VkIGdwdF9lbnRyeTtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowODo1OS4yNTAzMDc5NTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODIyMTc4Mzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgR1BUIFBhcnRpdGlvbiBUYWJsZSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgc3dpdGNoaW5nIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgd2l0aGluIHRoZSBgZ3B0X2VudHJ5YCBzdHJ1Y3R1cmUgZnJvbSBhIGJpdGZpZWxkIHN0cnVjdCB0byBhIGBfX2xlNjRgIHR5cGUuIFRoYXQncyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLCBhbmQgYSBnb29kIG9uZSBhdCB0aGF0LiBJdCBsb29rcyBsaWtlIGl0J3MgYWRkcmVzc2luZyBlbmRpYW5uZXNzIG9yIGxheW91dCBwcm9ibGVtcywgd2hpY2ggaXMgY3JpdGljYWwgd2hlbiBkZWFsaW5nIHdpdGggRUZJIEdVSUQgUGFydGl0aW9uIFRhYmxlcyAoR1BUcykuXG5cblRoZSByZWxldmFudCBmaWxlIGlzIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZS4gVGhpcyBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBwYXJzaW5nIEdQVCBwYXJ0aXRpb24gdGFibGVzLiBJIGNhbiBzZWUgdGhlIHJlbGV2YW5jZSwgZ2l2ZW4gdGhhdCB0aGlzIGlzIGEgY29yZSBjb21wb25lbnQgb2YgdGhlIGJsb2NrIGRldmljZSBpbnRlcmFjdGlvbiwgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIGhvdyB0aGUgc3lzdGVtIHVuZGVyc3RhbmRzIGFuZCB1dGlsaXplcyBzdG9yYWdlIGRldmljZXMuXG5cblRoZSBwYXRoIHRvIHRoaXMgY29kZSBpcyBzdHJhaWdodGZvcndhcmQ6IGEgYmxvY2sgZGV2aWNlIHdpdGggYSBHUFQgcGFydGl0aW9uIHRhYmxlLiBBbmQgdGhlIGVudHJ5IHBvaW50IGZvciBFRkkgcGFydGl0aW9uIHBhcnNpbmcgaXMgdGhlIGBlZmlfcGFydGl0aW9uYCBmdW5jdGlvbiwgYWxzbyBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AuXG5cbk5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBpdHNlbGYuIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgYmVpbmcgdXNlZC4gU2VlaW5nIHRoZSBjb250ZXh0IG9mIHRoZSBjaGFuZ2Ugd2lsbCBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UuIEl0IHdvdWxkIGJlIGdvb2QgdG8gc2VlIGhvdyB0aGlzIGFmZmVjdHMgb3RoZXIgcmVsYXRlZCBzdHJ1Y3R1cmVzIG9yIGZ1bmN0aW9ucy4gTGV0J3Mgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1ODksIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MDMuMDcyNDg5NDI5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMzQxMjEzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXR0cmlidXRlc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL2VmaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOTowMy42NzU5MDk3NTRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDA2NTA4NzU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBzZWUuLi4gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlLCBzcGVjaWZpY2FsbHkgYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgLCBhbmQgSSdtIGEgYml0IHB1enpsZWQuIEkgd2FzIGV4cGVjdGluZyB0byBmaW5kIHJlZmVyZW5jZXMgdG8gdGhlIGBhdHRyaWJ1dGVzYCB2YXJpYWJsZSBpbiB0aGVyZSwgYnV0IGl0J3Mgbm90IHByZXNlbnQuIFRoYXQgc2VlbXMgb2RkLCByaWdodD8gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgdGhhdCB2YXJpYWJsZSBpcyB1c2VkIGluIG90aGVyIHBsYWNlcyB3aXRoaW4gdGhlIGNvZGViYXNlLiBJdCdzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCB3aGVyZSBhIHZhcmlhYmxlIGlzIGRlZmluZWQgYW5kIGhvdyBpdCdzIHVzZWQsIGV2ZW4gaWYgaXQncyBub3QgaW4gdGhlIGV4cGVjdGVkIGxvY2F0aW9uLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IHdpbGwgaGVscCBtZSB3aXRoIGFueSBjaGFuZ2VzIHRvIHRoZSBjb2RlLiBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIHVzYWdlIG9mIGBhdHRyaWJ1dGVzYCB0byBzZWUgd2hlcmUgaXQgY29tZXMgaW50byBwbGF5LiBJIGFtIHN1cmUgSSB3aWxsIGZpbmQgc29tZSBjb25uZWN0aW9ucyFcblxuXG4iLCJJbnB1dFRva2VucyI6NDAyOCwiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjA3LjA4MjQyMTA4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMzNzM3NjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0dHJpYnV0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svcGFydGl0aW9ucy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYmxvY2svcGFydGl0aW9ucy9lZmkuaD03OD10eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5IHtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtODItXFx0X19sZTY0IGVuZGluZ19sYmE7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4MzpcXHRfX2xlNjQgYXR0cmlidXRlcztcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg0LVxcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjA3LjIxNjE3NzcwOFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NTc5NTM2MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBHUFQgUGFydGl0aW9uIEVudHJ5IEF0dHJpYnV0ZXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBpbnRvIHRoaXMgYGF0dHJpYnV0ZXNgIGZpZWxkIHdpdGhpbiB0aGUgYGdwdF9lbnRyeWAgc3RydWN0dXJlLiBJdCBpbml0aWFsbHkgc2VlbWVkIHVudXNlZCB3aXRoaW4gdGhlIGtlcm5lbCdzIGFjdHVhbCBjb2RlLCBqdXN0IGRlZmluZWQgYXMgcGFydCBvZiB0aGUgc3RydWN0dXJlLiBCdXQgaG9sZCBvbiwgdGhlIGBzaXplb2YoZ3B0X2VudHJ5KWAgaXMgaW5kZWVkIHVzZWQsIHNwZWNpZmljYWxseSBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AsIHRoYXQncyBpbnRlcmVzdGluZy4gVGhlIGNvZGUgY2hlY2tzIGBpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKWAuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBzaXplLiBCZWZvcmUsIHRoZSBgZ3B0X2VudHJ5YCBzaXplIHdhcyAxMjggYnl0ZXMsIGFuZCBhcyBmYXIgYXMgSSBjYW4gc2VlLCBpdCAqc3RpbGwqIGlzIDEyOCBieXRlcy4gR29vZCwgdGhhdCBtYXRjaGVzIG15IGludHVpdGlvbi4gU28sIHRoZSBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdhczpcbmBgYGNcbnR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnlfYXR0cmlidXRlcyB7XG5cdHU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxO1xuXHR1NjQgcmVzZXJ2ZWQ6NDc7XG4gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7XG59IF9fcGFja2VkIGdwdF9lbnRyeV9hdHRyaWJ1dGVzO1xuYGBgXG5cblRoYXQncyBhbiA4LWJ5dGUgc3RydWN0dXJlLCB3aGljaCBtYWtlcyBzZW5zZS4gQW5kIHRoZSBgX19sZTY0IGF0dHJpYnV0ZXM7YCBtZW1iZXIgaXMgYWxzbyA4IGJ5dGVzLiBTbyB0aGUgY2hhbmdlIHRvIHRoZSBgYXR0cmlidXRlc2AgZGVmaW5pdGlvbiBkaWRuJ3QgYWZmZWN0IHRoZSBvdmVyYWxsIGBncHRfZW50cnlgIHNpemUuIEkgd2FzIG9uIHRoZSByaWdodCB0cmFjayB0aGVyZS4gSG93ZXZlciwganVzdCBiZWNhdXNlIHRoZSBzaXplIGlzIGNvcnJlY3QgZG9lc24ndCBtZWFuIGl0J3MgcmlnaHQuIEknbSBnb2luZyB0byBzY2FuIHRoZSBjb2RlIGZvciBtb3JlIHVzZXMgb2YgYGF0dHJpYnV0ZXNgIHRvIGJlIHN1cmUgdGhlcmUgYXJlbid0IGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzQxLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjExLjc5NTcxNzAwNloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxODYyMDgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncHRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjY5LSAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cXHRcXHRcXHRcXHRcXHQgZ3B0X2hlYWRlciAqZ3B0KVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNzMtXFx0c2l6ZV90IGNvdW50O1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0OlxcdGdwdF9lbnRyeSAqcHRlO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz0zMzQ9c3RhdGljIGludCBpc19ncHRfdmFsaWQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTY0IGxiYSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcXHRcXHRcXHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVxcdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQxNTpcXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVxcdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE2LVxcdFxcdHByX2RlYnVnKFxcXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXFxcblxcXCIpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQ2MDppc19wdGVfdmFsaWQoY29uc3QgZ3B0X2VudHJ5ICpwdGUsIGNvbnN0IHU2NCBsYXN0bGJhKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NTgwPXN0YXRpYyBpbnQgZmluZF92YWxpZF9ncHQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgZ3B0X2hlYWRlciAqKmdwdCxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcXHRcXHRcXHQgIGdwdF9lbnRyeSAqKnB0ZXMpXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXFx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4NTpcXHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cXHRsZWdhY3lfbWJyICpsZWdhY3ltYnI7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXFx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjcxNTpcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVxcdHUzMiBpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaD01NT10eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6Nzg6dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC03OS1cXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg0LVxcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4NTp9IF9fcGFja2VkIGdwdF9lbnRyeTtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOToxNi42MTQzNDMwMTZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3MTkxOTMzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiBhIFR5cGUgQ2hhbmdlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwcm9wb3NlZCBjaGFuZ2UgYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgXCJXYWl0IGEgbWludXRlLCBpZiBgYXR0cmlidXRlc2AgaXNuJ3QgYWN0dWFsbHkgKnVzZWQqIGFueXdoZXJlLCB0aGVuIGFsdGVyaW5nIGl0cyB0eXBlIHNob3VsZG4ndCBjaGFuZ2UgdGhlIGV4ZWN1dGlvbiBmbG93IGF0IGFsbCwgcmlnaHQ/XCIgVGhlIG9ubHkgc2l0dWF0aW9uIHdoZXJlIHRoaXMgbWlnaHQgKm5vdCogYmUgdHJ1ZSBpcyBpZiB0aGUgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCBzdHJ1Y3Qgc29tZWhvdyBoYWQgYSBkaWZmZXJlbnQgc2l6ZSB0aGFuIDggYnl0ZXMgb24gc29tZSBhcmNoaXRlY3R1cmVzLiBUaGlzIGNvdWxkIGhhcHBlbiBkdWUgdG8gYml0ZmllbGQgcGFja2luZyBydWxlcywgd2hpY2ggY291bGQgdGhlbiBhbHRlciB0aGUgYHNpemVvZihncHRfZW50cnkpYC5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhhdCdzIHRoZSBjYXNlLiBMZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgZGVmaW5pdGlvbiBvZiBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgOlxuXG5gYGBjXG50eXBlZGVmIHN0cnVjdCBfZ3B0X2VudHJ5X2F0dHJpYnV0ZXMge1xuXHR1NjQgcmVxdWlyZWRfdG9fZnVuY3Rpb246MTtcblx0dTY0IHJlc2VydmVkOjQ3O1xuICAgICAgICB1NjQgdHlwZV9ndWlkX3NwZWNpZmljOjE2O1xufSBfX3BhY2tlZCBncHRfZW50cnlfYXR0cmlidXRlcztcbmBgYFxuXG5BaGEhIEl0J3MgZ290IGBfX3BhY2tlZGAuIFRoYXQgc2hvdWxkIGZvcmNlIGl0IHRvIGJlIGV4YWN0bHkgOCBieXRlcywgcmVnYXJkbGVzcyBvZiB0aGUgYXJjaGl0ZWN0dXJlLiBTbywgaWYgaXQgaXMgaW5kZWVkIDggYnl0ZXMsIGFuZCBuZXZlciBhY3R1YWxseSBhY2Nlc3NlZCwgdGhlbiB0aGlzIHdob2xlIHRoaW5nIGlzIGVzc2VudGlhbGx5IGEgY29zbWV0aWMgY2hhbmdlIG9yIGNsZWFudXAgb3BlcmF0aW9uLlxuXG5Ob3csIEkgcmVhbGx5IG5lZWQgdG8gZG91YmxlLWNoZWNrIG15IHdvcmsuIExldCdzIHRob3JvdWdobHkgc2VhcmNoIHRoZSBrZXJuZWwgY29kZSB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhhdCB0aGlzIGBhdHRyaWJ1dGVzYCBmaWVsZCBpc24ndCBiZWluZyBhY2Nlc3NlZCBhbnl3aGVyZS4gSSBuZWVkIHRvIGJlIDEwMCUgc3VyZSBiZWZvcmUgSSBjb21lIHRvIGEgY29uY2x1c2lvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NTcyMCwiT3V0cHV0VG9rZW5zIjoyMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOToyMC45ODYyNjYwMzZaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4Nzg3ODU2ODcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXFxcXC5hdHRyaWJ1dGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJcXG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDYzNyBsaW5lcy5cXG5Vc2UgbW9yZSBwcmVjaXNlIGV4cHJlc3Npb24gaWYgcG9zc2libGUuXFxuXFxuRG9jdW1lbnRhdGlvbi9zcGhpbngva2ZpZ3VyZS5weT01MTE9ZGVmIHZpc2l0X2tlcm5lbF9yZW5kZXIoc2VsZiwgbm9kZSk6XFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5LTUzNS0gICAgY29kZSAgICAgID0gbGl0ZXJhbF9ibG9jay5hc3RleHQoKVxcbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHk6NTM2OiAgICBoYXNob2JqICAgPSBjb2RlLmVuY29kZSgndXRmLTgnKSAjICBzdHIobm9kZS5hdHRyaWJ1dGVzKVxcbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHktNTM3LSAgICBmbmFtZSAgICAgPSBwYXRoLmpvaW4oJyVzLSVzJyAlIChzcmNsYW5nLCBzaGExKGhhc2hvYmopLmhleGRpZ2VzdCgpKSlcXG4tLVxcbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHktNTQ2LVxcbkRvY3VtZW50YXRpb24vc3BoaW54L2tmaWd1cmUucHk6NTQ3OiAgICBpbWdfbm9kZSA9IG5vZGVzLmltYWdlKG5vZGUucmF3c291cmNlLCAqKm5vZGUuYXR0cmlidXRlcylcXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9rZmlndXJlLnB5LTU0OC0gICAgaW1nX25vZGVbJ3VyaSddID0gcGF0aC5qb2luKHNlbGYuYnVpbGRlci5pbWdwYXRoLCBmbmFtZSArIHRtcF9leHQpXFxuLS1cXG5Eb2N1bWVudGF0aW9uL3NwaGlueC9yc3RGbGF0VGFibGUucHk9MTM2PWNsYXNzIExpc3RUYWJsZUJ1aWxkZXIob2JqZWN0KTpcXG4tLVxcbkRvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weS0xNzAtICAgICAgICAgICAgaWYgc3R1Yl9jb2x1bW5zOlxcbkRvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weToxNzE6ICAgICAgICAgICAgICAgIGNvbHNwZWMuYXR0cmlidXRlc1snc3R1YiddID0gMVxcbkRvY3VtZW50YXRpb24vc3BoaW54L3JzdEZsYXRUYWJsZS5weS0xNzItICAgICAgICAgICAgICAgIHN0dWJfY29sdW1ucyAtPSAxXFxuLS1cXG5hcmNoL2FybS9pbmNsdWRlL2FzbS92bWxpbnV4Lmxkcy5oLTg2LVxcdFxcdEVMRl9ERVRBSUxTXFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmFyY2gvYXJtL2luY2x1ZGUvYXNtL3ZtbGludXgubGRzLmg6ODc6XFx0XFx0LkFSTS5hdHRyaWJ1dGVzIDAgOiB7ICooLkFSTS5hdHRyaWJ1dGVzKSB9XFxuYXJjaC9hcm0vaW5jbHVkZS9hc20vdm1saW51eC5sZHMuaC04OC1cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28vdmRzby5sZHMuUz0yMT1TRUNUSU9OU1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TLTQwLVxcdFxcdCooLm5vdGUuR05VLXN0YWNrIC5ub3RlLmdudS5wcm9wZXJ0eSlcXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvL3Zkc28ubGRzLlM6NDE6XFx0XFx0KiguQVJNLmF0dHJpYnV0ZXMpXFxuYXJjaC9hcm02NC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TLTQyLVxcdH1cXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TPTIwPVNFQ1RJT05TXFxuLS1cXG5hcmNoL2FybTY0L2tlcm5lbC92ZHNvMzIvdmRzby5sZHMuUy02MC1cXHRFTEZfREVUQUlMU1xcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TOjYxOlxcdC5BUk0uYXR0cmlidXRlcyAwIDogeyAqKC5BUk0uYXR0cmlidXRlcykgfVxcbmFyY2gvYXJtNjQva2VybmVsL3Zkc28zMi92ZHNvLmxkcy5TLTYyLVxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvdm1saW51eC5sZHMuUz0xNzQ9U0VDVElPTlNcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3ZtbGludXgubGRzLlMtMTg1LVxcdFxcdCooLmR5bnN5bSAuZHluc3RyIC5oYXNoIC5nbnUuaGFzaClcXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjE4NjpcXHRcXHQqKC5BUk0uYXR0cmlidXRlcylcXG5hcmNoL2FybTY0L2tlcm5lbC92bWxpbnV4Lmxkcy5TLTE4Ny1cXHR9XFxuLS1cXG5hcmNoL2hleGFnb24va2VybmVsL3ZtbGludXgubGRzLlM9MjY9U0VDVElPTlNcXG4tLVxcbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUy02Ni1cXHRFTEZfREVUQUlMU1xcbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUzo2NzpcXHQuaGV4YWdvbi5hdHRyaWJ1dGVzIDAgOiB7ICooLmhleGFnb24uYXR0cmlidXRlcykgfVxcbmFyY2gvaGV4YWdvbi9rZXJuZWwvdm1saW51eC5sZHMuUy02OC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92bWxpbnV4Lmxkcy5TPTQxPVNFQ1RJT05TXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdm1saW51eC5sZHMuUy0xNzgtXFx0XFx0KiguZHluYW1pYyAuZHluc3ltIC5keW5zdHIgLmhhc2ggLmdudS5oYXNoKVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC92bWxpbnV4Lmxkcy5TOjE3OTpcXHRcXHQqKC5nbnUuYXR0cmlidXRlcylcXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvdm1saW51eC5sZHMuUy0xODAtXFx0XFx0Kigub3B0aW9ucylcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL3Zkc28vdmRzby5sZHMuUz0xMj1TRUNUSU9OU1xcbi0tXFxuYXJjaC9sb29uZ2FyY2gvdmRzby92ZHNvLmxkcy5TLTQzLVxcdC9ESVNDQVJEL1xcdDoge1xcbmFyY2gvbG9vbmdhcmNoL3Zkc28vdmRzby5sZHMuUzo0NDpcXHRcXHQqKC5nbnUuYXR0cmlidXRlcylcXG5hcmNoL2xvb25nYXJjaC92ZHNvL3Zkc28ubGRzLlMtNDUtXFx0XFx0Kigubm90ZS5HTlUtc3RhY2spXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL3ZtbGludXgubGRzLlM9NDM9U0VDVElPTlNcXG4tLVxcbmFyY2gvbWlwcy9rZXJuZWwvdm1saW51eC5sZHMuUy0yMzgtXFx0XFx0KiguTUlQUy5vcHRpb25zKVxcbmFyY2gvbWlwcy9rZXJuZWwvdm1saW51eC5sZHMuUzoyMzk6XFx0XFx0KiguZ251LmF0dHJpYnV0ZXMpXFxuYXJjaC9taXBzL2tlcm5lbC92bWxpbnV4Lmxkcy5TLTI0MC1cXHRcXHQqKC5vcHRpb25zKVxcbi0tXFxuYXJjaC9taXBzL3Zkc28vdmRzby5sZHMuUz0yMT1TRUNUSU9OU1xcbi0tXFxuYXJjaC9taXBzL3Zkc28vdmRzby5sZHMuUy02NS1cXHRcXHQqKC5NSVBTLmFiaWZsYWdzKVxcbmFyY2gvbWlwcy92ZHNvL3Zkc28ubGRzLlM6NjY6XFx0XFx0KiguZ251LmF0dHJpYnV0ZXMpXFxuYXJjaC9taXBzL3Zkc28vdmRzby5sZHMuUy02Ny1cXHRcXHQqKC5ub3RlLkdOVS1zdGFjaylcXG4tLVxcbmFyY2gvcG93ZXJwYy9rZXJuZWwvdm1saW51eC5sZHMuUz00OD1TRUNUSU9OU1xcbi0tXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC92bWxpbnV4Lmxkcy5TLTQwNy1cXHRcXHQqKC5nbnUudmVyc2lvbiopXFxuYXJjaC9wb3dlcnBjL2tlcm5lbC92bWxpbnV4Lmxkcy5TOjQwODpcXHRcXHQqKC5nbnUuYXR0cmlidXRlcylcXG5hcmNoL3Bvd2VycGMva2VybmVsL3ZtbGludXgubGRzLlMtNDA5LVxcdFxcdCooLmVoX2ZyYW1lKVxcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUz0yNj1TRUNUSU9OU1xcbi0tXFxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUy0xNzAtXFx0RUxGX0RFVEFJTFNcXG5hcmNoL3Jpc2N2L2tlcm5lbC92bWxpbnV4Lmxkcy5TOjE3MTpcXHQucmlzY3YuYXR0cmlidXRlcyAwIDogeyAqKC5yaXNjdi5hdHRyaWJ1dGVzKSB9XFxuYXJjaC9yaXNjdi9rZXJuZWwvdm1saW51eC5sZHMuUy0xNzItXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL3Zkc28vdmRzby5sZHMuUz0xNj1TRUNUSU9OU1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC92ZHNvL3Zkc28ubGRzLlMtNjUtXFx0LmNvbW1lbnQgICAgICAgMCA6IHsgKiguY29tbWVudCkgfVxcbmFyY2gvczM5MC9rZXJuZWwvdmRzby92ZHNvLmxkcy5TOjY2OlxcdC5nbnUuYXR0cmlidXRlcyAwIDogeyBLRUVQICgqKC5nbnUuYXR0cmlidXRlcykpIH1cXG5hcmNoL3MzOTAva2VybmVsL3Zkc28vdmRzby5sZHMuUy02Ny1cXG4tLVxcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYz0xMzQ9c3RhdGljIGludCBodl92dGxfYnJpbmd1cF92Y3B1KHUzMiB0YXJnZXRfdnBfaW5kZXgsIGludCBjcHUsIHU2NCBlaXBfaWdub3JlZClcXG4tLVxcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMDEtXFx0aW5wdXQtXFx1MDAzZXZwX2NvbnRleHQuY3MubGltaXQgPSAweGZmZmZmZmZmO1xcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYzoyMDI6XFx0aW5wdXQtXFx1MDAzZXZwX2NvbnRleHQuY3MuYXR0cmlidXRlcyA9IDB4YTA5YjtcXG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmMtMjAzLVxcdC8qIE5vbi1zeXN0ZW0gZGVzYyAoNjRiaXQpLCBkYXRhLCBwcmVzZW50LCBncmFudWxhcml0eSwgZGVmYXVsdCAqL1xcbi0tXFxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIwNi1cXHRpbnB1dC1cXHUwMDNldnBfY29udGV4dC5zcy5saW1pdCA9IDB4ZmZmZmZmZmY7XFxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jOjIwNzpcXHRpbnB1dC1cXHUwMDNldnBfY29udGV4dC5zcy5hdHRyaWJ1dGVzID0gMHhjMDkzO1xcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMDgtXFxuLS1cXG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmMtMjEyLVxcdGlucHV0LVxcdTAwM2V2cF9jb250ZXh0LmxkdHIubGltaXQgPSBodl92dGxfc3lzdGVtX2Rlc2NfbGltaXQobGR0KTtcXG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmM6MjEzOlxcdGlucHV0LVxcdTAwM2V2cF9jb250ZXh0LmxkdHIuYXR0cmlidXRlcyA9IDB4ODI7XFxuYXJjaC94ODYvaHlwZXJ2L2h2X3Z0bC5jLTIxNC1cXG4tLVxcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMTgtXFx0aW5wdXQtXFx1MDAzZXZwX2NvbnRleHQudHIubGltaXQgPSBodl92dGxfc3lzdGVtX2Rlc2NfbGltaXQodHNzKTtcXG5hcmNoL3g4Ni9oeXBlcnYvaHZfdnRsLmM6MjE5OlxcdGlucHV0LVxcdTAwM2V2cF9jb250ZXh0LnRyLmF0dHJpYnV0ZXMgPSAweDhiO1xcbmFyY2gveDg2L2h5cGVydi9odl92dGwuYy0yMjAtXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L3NneC9pb2N0bC5jPTQ2Nz1zdGF0aWMgaW50IHNneF9lbmNsX2luaXQoc3RydWN0IHNneF9lbmNsICplbmNsLCBzdHJ1Y3Qgc2d4X3NpZ3N0cnVjdCAqc2lnc3RydWN0LFxcbi0tXFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYy00ODYtXFx0ICogb3B0IHRvIHNpZ24gd2l0aCBBVlggYml0IGluIHhmcm0sIGJ1dCBzdGlsbCBiZSBsb2FkYWJsZSBvbiBhIHBsYXRmb3JtXFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYzo0ODc6XFx0ICogd2l0aG91dCBpdCBpZiB0aGUgc2lnc3RydWN0LVxcdTAwM2Vib2R5LmF0dHJpYnV0ZXNfbWFzayBkb2VzIG5vdCB0dXJuIHRoYXRcXG5hcmNoL3g4Ni9rZXJuZWwvY3B1L3NneC9pb2N0bC5jLTQ4OC1cXHQgKiBiaXQgb24uXFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYy00ODktXFx0ICovXFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYzo0OTA6XFx0aWYgKHNpZ3N0cnVjdC1cXHUwMDNlYm9keS5hdHRyaWJ1dGVzIFxcdTAwMjYgc2lnc3RydWN0LVxcdTAwM2Vib2R5LmF0dHJpYnV0ZXNfbWFzayBcXHUwMDI2XFxuYXJjaC94ODYva2VybmVsL2NwdS9zZ3gvaW9jdGwuYy00OTEtXFx0ICAgIHNneF9hdHRyaWJ1dGVzX3Jlc2VydmVkX21hc2spXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTgwMjE9Ym9vbCBrdm1fYXJjaF9wcmVfc2V0X21lbW9yeV9hdHRyaWJ1dGVzKHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtODA3My1cXHQvKiBVbm1hcCB0aGUgb2xkIGF0dHJpYnV0ZSBwYWdlLiAqL1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODA3NDpcXHRpZiAocmFuZ2UtXFx1MDAzZWFyZy5hdHRyaWJ1dGVzIFxcdTAwMjYgS1ZNX01FTU9SWV9BVFRSSUJVVEVfUFJJVkFURSlcXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTgwNzUtXFx0XFx0cmFuZ2UtXFx1MDAzZWF0dHJfZmlsdGVyID0gS1ZNX0ZJTFRFUl9TSEFSRUQ7XFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jPTgxMDE9Ym9vbCBrdm1fYXJjaF9wb3N0X3NldF9tZW1vcnlfYXR0cmlidXRlcyhzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG5hcmNoL3g4Ni9rdm0vbW11L21tdS5jLTgxMDMte1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmM6ODEwNDpcXHR1bnNpZ25lZCBsb25nIGF0dHJzID0gcmFuZ2UtXFx1MDAzZWFyZy5hdHRyaWJ1dGVzO1xcbmFyY2gveDg2L2t2bS9tbXUvbW11LmMtODEwNS1cXHRzdHJ1Y3Qga3ZtX21lbW9yeV9zbG90ICpzbG90ID0gcmFuZ2UtXFx1MDAzZXNsb3Q7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRwYy5jPTEwMz1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9hY250cGMgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRwYy5jLTEzMi1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHBjLmM6MTMzOlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHBjLmMtMTM0LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hY250c2EuYz04OT1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9hY250c2EgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2FjbnRzYS5jLTExOS1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmM6MTIwOlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYWNudHNhLmMtMTIxLVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hcG9sbG8uYz0xMDE9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYXBvbGxvID0ge1xcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hcG9sbG8uYy0xMzEtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Fwb2xsby5jOjEzMjpcXHQuYXR0cmlidXRlcyA9IHtcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Fwb2xsby5jLTEzMy1cXHRcXHQuYXR0cnMgPSBzeW50aF9hdHRycyxcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYXVkcHRyLmM9OTI9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYXVkcHRyID0ge1xcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9hdWRwdHIuYy0xMjItXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2F1ZHB0ci5jOjEyMzpcXHQuYXR0cmlidXRlcyA9IHtcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2F1ZHB0ci5jLTEyNC1cXHRcXHQuYXR0cnMgPSBzeW50aF9hdHRycyxcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfYm5zLmM9ODU9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfYm5zID0ge1xcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9ibnMuYy0xMTUtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jOjExNjpcXHQuYXR0cmlidXRlcyA9IHtcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2Jucy5jLTExNy1cXHRcXHQuYXR0cnMgPSBzeW50aF9hdHRycyxcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjZXh0LmM9MTE1PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2RlY2V4dCA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjZXh0LmMtMTQ2LVxcdH0sXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNleHQuYzoxNDc6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kZWNleHQuYy0xNDgtXFx0XFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3BjLmM9MjEzPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2RlY19wYyA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjcGMuYy0yNDItXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3BjLmM6MjQzOlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjcGMuYy0yNDQtXFx0XFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3Rsay5jPTEyMj1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9kZWN0bGsgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2RlY3Rsay5jLTE1NS1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjdGxrLmM6MTU2OlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZGVjdGxrLmMtMTU3LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmM9MTE5PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2R0bGsgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2R0bGsuYy0xNDgtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2R0bGsuYzoxNDk6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdGxrLmMtMTUwLVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9kdW1teS5jPTEwNT1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9kdW1teSA9IHtcXG4tLVxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZHVtbXkuYy0xMzUtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2R1bW15LmM6MTM2OlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfZHVtbXkuYy0xMzctXFx0XFx0LmF0dHJzID0gc3ludGhfYXR0cnMsXFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2tleXBjLmM9OTQ9c3RhdGljIHN0cnVjdCBzcGtfc3ludGggc3ludGhfa2V5cGMgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2tleXBjLmMtMTIzLVxcdH0sXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9rZXlwYy5jOjEyNDpcXHQuYXR0cmlidXRlcyA9IHtcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2tleXBjLmMtMTI1LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmM9MTAxPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX2x0bGsgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2x0bGsuYy0xMzEtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX2x0bGsuYzoxMzI6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9sdGxrLmMtMTMzLVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9zb2Z0LmM9MTI4PXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX3NvZnQgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYy0xNTYtXFx0fSxcXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3NvZnQuYzoxNTc6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9zb2Z0LmMtMTU4LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF9zcGtvdXQuYz05Mj1zdGF0aWMgc3RydWN0IHNwa19zeW50aCBzeW50aF9zcGtvdXQgPSB7XFxuLS1cXG5kcml2ZXJzL2FjY2Vzc2liaWxpdHkvc3BlYWt1cC9zcGVha3VwX3Nwa291dC5jLTEyMi1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmM6MTIzOlxcdC5hdHRyaWJ1dGVzID0ge1xcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfc3Brb3V0LmMtMTI0LVxcdFxcdC5hdHRycyA9IHN5bnRoX2F0dHJzLFxcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jPTkwPXN0YXRpYyBzdHJ1Y3Qgc3BrX3N5bnRoIHN5bnRoX3R4cHJ0ID0ge1xcbi0tXFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jLTEyMC1cXHR9LFxcbmRyaXZlcnMvYWNjZXNzaWJpbGl0eS9zcGVha3VwL3NwZWFrdXBfdHhwcnQuYzoxMjE6XFx0LmF0dHJpYnV0ZXMgPSB7XFxuZHJpdmVycy9hY2Nlc3NpYmlsaXR5L3NwZWFrdXAvc3BlYWt1cF90eHBydC5jLTEyMi1cXHRcXHQuYXR0cnMgPSBzeW50aF9hdHRycyxcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYz0zNjc9ZWZpX3N0YXR1c190IGVmaV9hZGp1c3RfbWVtb3J5X3JhbmdlX3Byb3RlY3Rpb24odW5zaWduZWQgbG9uZyBzdGFydCxcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYy00MjMtXFx0XFx0ICAgICBkZXNjLmdjZF9tZW1vcnlfdHlwZSAhPSBFZmlHY2RNZW1vcnlUeXBlTW9yZVJlbGlhYmxlKSB8fFxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYzo0MjQ6XFx0XFx0ICAgIChkZXNjLmF0dHJpYnV0ZXMgXFx1MDAyNiAoRUZJX01FTU9SWV9STyB8IEVGSV9NRU1PUllfWFApKSA9PSAwKVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL2xpYnN0dWIveDg2LXN0dWIuYy00MjUtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM9MTM5PXN0YXRpYyBsb25nIGVmaV9ydW50aW1lX2dldF92YXJpYWJsZSh1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0xNzEtXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjE3MjpcXHRhdCA9IGdldHZhcmlhYmxlLmF0dHJpYnV0ZXMgPyBcXHUwMDI2YXR0ciA6IE5VTEw7XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTE3My1cXHRkeiA9IGdldHZhcmlhYmxlLmRhdGFfc2l6ZSA/IFxcdTAwMjZkYXRhc2l6ZSA6IE5VTEw7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmMtMjE0LVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYzoyMTU6XFx0aWYgKGF0IFxcdTAwMjZcXHUwMDI2IHB1dF91c2VyKGF0dHIsIGdldHZhcmlhYmxlLmF0dHJpYnV0ZXMpKSB7XFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTIxNi1cXHRcXHRydiA9IC1FRkFVTFQ7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM9MjI5PXN0YXRpYyBsb25nIGVmaV9ydW50aW1lX3NldF92YXJpYWJsZSh1bnNpZ25lZCBsb25nIGFyZylcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0yNTktXFx0c3RhdHVzID0gZWZpLnNldF92YXJpYWJsZShuYW1lLCBcXHUwMDI2dmVuZG9yX2d1aWQsXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jOjI2MDpcXHRcXHRcXHRcXHRzZXR2YXJpYWJsZS5hdHRyaWJ1dGVzLFxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYy0yNjEtXFx0XFx0XFx0XFx0c2V0dmFyaWFibGUuZGF0YV9zaXplLCBkYXRhKTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZWZpL3Rlc3QvZWZpX3Rlc3QuYz01NjM9c3RhdGljIGxvbmcgZWZpX3J1bnRpbWVfcXVlcnlfdmFyaWFibGVpbmZvKHVuc2lnbmVkIGxvbmcgYXJnKVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTU3NS1cXG5kcml2ZXJzL2Zpcm13YXJlL2VmaS90ZXN0L2VmaV90ZXN0LmM6NTc2OlxcdHN0YXR1cyA9IGVmaS5xdWVyeV92YXJpYWJsZV9pbmZvKHF1ZXJ5dmFyaWFibGVpbmZvLmF0dHJpYnV0ZXMsXFxuZHJpdmVycy9maXJtd2FyZS9lZmkvdGVzdC9lZmlfdGVzdC5jLTU3Ny1cXHRcXHRcXHRcXHRcXHQgXFx1MDAyNm1heF9zdG9yYWdlLCBcXHUwMDI2cmVtYWluaW5nLCBcXHUwMDI2bWF4X3NpemUpO1xcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9nb29nbGUvZ3NtaS5jPTQzMj1zdGF0aWMgZWZpX3N0YXR1c190IGdzbWlfc2V0X3ZhcmlhYmxlKGVmaV9jaGFyMTZfdCAqbmFtZSxcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvZ29vZ2xlL2dzbWkuYy00NDEtXFx0XFx0LmRhdGFfbGVuID0gKHUzMilkYXRhX3NpemUsXFxuZHJpdmVycy9maXJtd2FyZS9nb29nbGUvZ3NtaS5jOjQ0MjpcXHRcXHQuYXR0cmlidXRlcyA9IEVGSV9WQVJJQUJMRV9OT05fVk9MQVRJTEUgfFxcbmRyaXZlcnMvZmlybXdhcmUvZ29vZ2xlL2dzbWkuYy00NDMtXFx0XFx0XFx0ICAgICAgRUZJX1ZBUklBQkxFX0JPT1RTRVJWSUNFX0FDQ0VTUyB8XFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz03MzE9dm9pZCBod3NzX2J1aWxkX2Zhc3Rfc2VxdWVuY2Uoc3RydWN0IGRjICpkYyxcXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTg4MC1cXHRcXHRcXHRcXHRjdXJyZW50X3BpcGUtXFx1MDAzZXBsYW5lX3Jlcy5odWJwO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jOjg4MTpcXHRcXHRcXHRibG9ja19zZXF1ZW5jZVsqbnVtX3N0ZXBzXS5wYXJhbXMuaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXMgPVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTg4Mi1cXHRcXHRcXHRcXHRcXHUwMDI2Y3VycmVudF9waXBlLVxcdTAwM2VzdHJlYW0tXFx1MDAzZWN1cnNvcl9hdHRyaWJ1dGVzO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtODg3LVxcdFxcdFxcdFxcdGN1cnJlbnRfcGlwZS1cXHUwMDNlcGxhbmVfcmVzLmRwcDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzo4ODg6XFx0XFx0XFx0YmxvY2tfc2VxdWVuY2VbKm51bV9zdGVwc10ucGFyYW1zLmRwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXMgPVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTg4OS1cXHRcXHRcXHRcXHRcXHUwMDI2Y3VycmVudF9waXBlLVxcdTAwM2VzdHJlYW0tXFx1MDAzZWN1cnNvcl9hdHRyaWJ1dGVzO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM9MzU2OD12b2lkIGh3c3NfaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXModW5pb24gYmxvY2tfc2VxdWVuY2VfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy0zNTcwLVxcdHN0cnVjdCBodWJwICpodWJwID0gcGFyYW1zLVxcdTAwM2VodWJwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuaHVicDtcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYzozNTcxOlxcdGNvbnN0IHN0cnVjdCBkY19jdXJzb3JfYXR0cmlidXRlcyAqYXR0cmlidXRlcyA9IHBhcmFtcy1cXHUwMDNlaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmF0dHJpYnV0ZXM7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtMzU3Mi1cXG4tLVxcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jPTM1Nzc9dm9pZCBod3NzX2RwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXModW5pb24gYmxvY2tfc2VxdWVuY2VfcGFyYW1zICpwYXJhbXMpXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy0zNTc5LVxcdHN0cnVjdCBkcHAgKmRwcCA9IHBhcmFtcy1cXHUwMDNlZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuZHBwO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jOjM1ODA6XFx0c3RydWN0IGRjX2N1cnNvcl9hdHRyaWJ1dGVzICphdHRyaWJ1dGVzID0gcGFyYW1zLVxcdTAwM2VkcHBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jLTM1ODEtXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYz00NjkyPXZvaWQgaHdzc19hZGRfaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXMoc3RydWN0IGJsb2NrX3NlcXVlbmNlX3N0YXRlICpzZXFfc3RhdGUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy00Njk4LVxcdFxcdHNlcV9zdGF0ZS1cXHUwMDNlc3RlcHNbKnNlcV9zdGF0ZS1cXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuaHVicF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXNfcGFyYW1zLmh1YnAgPSBodWJwO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jOjQ2OTk6XFx0XFx0c2VxX3N0YXRlLVxcdTAwM2VzdGVwc1sqc2VxX3N0YXRlLVxcdTAwM2VudW1fc3RlcHNdLnBhcmFtcy5odWJwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXM7XFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmMtNDcwMC1cXHRcXHQoKnNlcV9zdGF0ZS1cXHUwMDNlbnVtX3N0ZXBzKSsrO1xcbi0tXFxuZHJpdmVycy9ncHUvZHJtL2FtZC9kaXNwbGF5L2RjL2NvcmUvZGNfaHdfc2VxdWVuY2VyLmM9NDcwND12b2lkIGh3c3NfYWRkX2RwcF9zZXRfY3Vyc29yX2F0dHJpYnV0ZXMoc3RydWN0IGJsb2NrX3NlcXVlbmNlX3N0YXRlICpzZXFfc3RhdGUsXFxuLS1cXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy00NzEwLVxcdFxcdHNlcV9zdGF0ZS1cXHUwMDNlc3RlcHNbKnNlcV9zdGF0ZS1cXHUwMDNlbnVtX3N0ZXBzXS5wYXJhbXMuZHBwX3NldF9jdXJzb3JfYXR0cmlidXRlc19wYXJhbXMuZHBwID0gZHBwO1xcbmRyaXZlcnMvZ3B1L2RybS9hbWQvZGlzcGxheS9kYy9jb3JlL2RjX2h3X3NlcXVlbmNlci5jOjQ3MTE6XFx0XFx0c2VxX3N0YXRlLVxcdTAwM2VzdGVwc1sqc2VxX3N0YXRlLVxcdTAwM2VudW1fc3RlcHNdLnBhcmFtcy5kcHBfc2V0X2N1cnNvcl9hdHRyaWJ1dGVzX3BhcmFtcy5hdHRyaWJ1dGVzID0gYXR0cmlidXRlcztcXG5kcml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvZGMvY29yZS9kY19od19zZXF1ZW5jZXIuYy00NzEyLVxcdFxcdCgqc2VxX3N0YXRlLVxcdTAwM2VudW1fc3RlcHMpKys7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvYWN4LmM9ODI4PWludCB3bDEyNTFfYWN4X21lbV9jZmcoc3RydWN0IHdsMTI1MSAqd2wpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvYWN4LmMtODU3LVxcdFxcdG1lbV9jb25mLVxcdTAwM2V0eF9xdWV1ZV9jb25maWdbaV0ubnVtX2Rlc2NzID0gQUNYX1RYX0RFU0NfREVGO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3RpL3dsMTI1MS9hY3guYzo4NTg6XFx0XFx0bWVtX2NvbmYtXFx1MDAzZXR4X3F1ZXVlX2NvbmZpZ1tpXS5hdHRyaWJ1dGVzID0gaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bDEyNTEvYWN4LmMtODU5LVxcdH1cXG4tLVxcbmRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYz04NDA9c3RhdGljIGJsa19zdGF0dXNfdCBudm1lX3NldHVwX2Rpc2NhcmQoc3RydWN0IG52bWVfbnMgKm5zLCBzdHJ1Y3QgcmVxdWVzdCAqcmVxLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTkwMS1cXHRjbW5kLVxcdTAwM2Vkc20ubnIgPSBjcHVfdG9fbGUzMihzZWdtZW50cyAtIDEpO1xcbmRyaXZlcnMvbnZtZS9ob3N0L2NvcmUuYzo5MDI6XFx0Y21uZC1cXHUwMDNlZHNtLmF0dHJpYnV0ZXMgPSBjcHVfdG9fbGUzMihOVk1FX0RTTUdNVF9BRCk7XFxuZHJpdmVycy9udm1lL2hvc3QvY29yZS5jLTkwMy1cXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWJkZXYuYz00MTA9c3RhdGljIHZvaWQgbnZtZXRfYmRldl9leGVjdXRlX2RzbShzdHJ1Y3QgbnZtZXRfcmVxICpyZXEpXFxuLS1cXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1iZGV2LmMtNDE0LVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWJkZXYuYzo0MTU6XFx0c3dpdGNoIChsZTMyX3RvX2NwdShyZXEtXFx1MDAzZWNtZC1cXHUwMDNlZHNtLmF0dHJpYnV0ZXMpKSB7XFxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtYmRldi5jLTQxNi1cXHRjYXNlIE5WTUVfRFNNR01UX0FEOlxcbi0tXFxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtZmlsZS5jPTMwNz1zdGF0aWMgdm9pZCBudm1ldF9maWxlX2RzbV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqdylcXG4tLVxcbmRyaXZlcnMvbnZtZS90YXJnZXQvaW8tY21kLWZpbGUuYy0zMTAtXFxuZHJpdmVycy9udm1lL3RhcmdldC9pby1jbWQtZmlsZS5jOjMxMTpcXHRzd2l0Y2ggKGxlMzJfdG9fY3B1KHJlcS1cXHUwMDNlY21kLVxcdTAwM2Vkc20uYXR0cmlidXRlcykpIHtcXG5kcml2ZXJzL252bWUvdGFyZ2V0L2lvLWNtZC1maWxlLmMtMzEyLVxcdGNhc2UgTlZNRV9EU01HTVRfQUQ6XFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9jb24zMjcwLmM9MTMyOT1zdGF0aWMgdm9pZCB0dHkzMjcwX2luc2VydF9jaGFyYWN0ZXJzKHN0cnVjdCB0dHkzMjcwICp0cCwgaW50IG4pXFxuLS1cXG5kcml2ZXJzL3MzOTAvY2hhci9jb24zMjcwLmMtMTM0Ni1cXHRcXHRsaW5lLVxcdTAwM2VjZWxsc1t0cC1cXHUwMDNlY3ggKyBuXS5jaGFyYWN0ZXIgPSAnICc7XFxuZHJpdmVycy9zMzkwL2NoYXIvY29uMzI3MC5jOjEzNDc6XFx0XFx0bGluZS1cXHUwMDNlY2VsbHNbdHAtXFx1MDAzZWN4ICsgbl0uYXR0cmlidXRlcyA9IHRwLVxcdTAwM2VhdHRyaWJ1dGVzO1xcbmRyaXZlcnMvczM5MC9jaGFyL2NvbjMyNzAuYy0xMzQ4LVxcdH1cXG4tLVxcbmRyaXZlcnMvczM5MC9jcnlwdG8vcGtleV9hcGkuYz0yNzY9c3RhdGljIGludCBwa2V5X2lvY3RsX3ZlcmlmeWtleShzdHJ1Y3QgcGtleV92ZXJpZnlrZXkgX191c2VyICp1dmspXFxuLS1cXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmMtMjkzLVxcdFxcdHJjID0gLUVJTlZBTDtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmM6Mjk0OlxcdGt2ay5hdHRyaWJ1dGVzID0gUEtFWV9WRVJJRllfQVRUUl9BRVM7XFxuZHJpdmVycy9zMzkwL2NyeXB0by9wa2V5X2FwaS5jLTI5NS1cXHRrdmsua2V5c2l6ZSA9ICh1MTYpa2V5Yml0c2l6ZTtcXG5kcml2ZXJzL3MzOTAvY3J5cHRvL3BrZXlfYXBpLmMtMjk2LVxcdGlmIChmbGFncyBcXHUwMDI2IFBLRVlfRkxBR1NfTUFUQ0hfQUxUX01LVlApXFxuZHJpdmVycy9zMzkwL2NyeXB0by9wa2V5X2FwaS5jOjI5NzpcXHRcXHRrdmsuYXR0cmlidXRlcyB8PSBQS0VZX1ZFUklGWV9BVFRSX09MRF9NS1ZQO1xcbmRyaXZlcnMvczM5MC9jcnlwdG8vcGtleV9hcGkuYy0yOTgtXFx0aWYgKCFyYyBcXHUwMDI2XFx1MDAyNiBjb3B5X3RvX3VzZXIodXZrLCBcXHUwMDI2a3ZrLCBzaXplb2Yoa3ZrKSkpXFxuLS1cXG5kcml2ZXJzL3VzYi90eXBlYy91Y3NpL3BzeS5jPTM1PXN0YXRpYyBpbnQgdWNzaV9wc3lfZ2V0X3Njb3BlKHN0cnVjdCB1Y3NpX2Nvbm5lY3RvciAqY29uLFxcbi0tXFxuZHJpdmVycy91c2IvdHlwZWMvdWNzaS9wc3kuYy00NS1cXG5kcml2ZXJzL3VzYi90eXBlYy91Y3NpL3BzeS5jOjQ2OlxcdFxcdGlmIChjb24tXFx1MDAzZXVjc2ktXFx1MDAzZWNhcC5hdHRyaWJ1dGVzIFxcdTAwMjYgbWFzaylcXG5kcml2ZXJzL3VzYi90eXBlYy91Y3NpL3BzeS5jLTQ3LVxcdFxcdFxcdHNjb3BlID0gUE9XRVJfU1VQUExZX1NDT1BFX1NZU1RFTTtcXG4tLVxcbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jPTQzMT1zdGF0aWMgdm9pZCBzdGlfZHVtcF9vdXRwdHIoc3RydWN0IHN0aV9zdHJ1Y3QgKnN0aSlcXG4tLVxcbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jLTQzOS1cXHRcXHQgc3RpLVxcdTAwM2VzdGlfZGF0YS1cXHUwMDNlaW5xX291dHB0ci5wbGFuZXMsXFxuZHJpdmVycy92aWRlby9zdGljb3JlLmM6NDQwOlxcdFxcdCBzdGktXFx1MDAzZXN0aV9kYXRhLVxcdTAwM2VpbnFfb3V0cHRyLmF0dHJpYnV0ZXMpO1xcbmRyaXZlcnMvdmlkZW8vc3RpY29yZS5jLTQ0MS19XFxuLS1cXG5mcy9vcmFuZ2Vmcy9uYW1laS5jPTE4PXN0YXRpYyBpbnQgb3JhbmdlZnNfY3JlYXRlKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuZnMvb3JhbmdlZnMvbmFtZWkuYy00MC1cXG5mcy9vcmFuZ2Vmcy9uYW1laS5jOjQxOlxcdGZpbGxfZGVmYXVsdF9zeXNfYXR0cnMobmV3X29wLVxcdTAwM2V1cGNhbGwucmVxLmNyZWF0ZS5hdHRyaWJ1dGVzLCBtb2RlKTtcXG5mcy9vcmFuZ2Vmcy9uYW1laS5jLTQyLVxcbi0tXFxuZnMvb3JhbmdlZnMvbmFtZWkuYz0yMTU9c3RhdGljIGludCBvcmFuZ2Vmc19zeW1saW5rKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLFxcbi0tXFxuZnMvb3JhbmdlZnMvbmFtZWkuYy0yNDEtXFxuZnMvb3JhbmdlZnMvbmFtZWkuYzoyNDI6XFx0ZmlsbF9kZWZhdWx0X3N5c19hdHRycyhuZXdfb3AtXFx1MDAzZXVwY2FsbC5yZXEuc3ltLmF0dHJpYnV0ZXMsIG1vZGUpO1xcbmZzL29yYW5nZWZzL25hbWVpLmMtMjQzLVxcbi0tXFxuZnMvb3JhbmdlZnMvbmFtZWkuYz0zMDA9c3RhdGljIHN0cnVjdCBkZW50cnkgKm9yYW5nZWZzX21rZGlyKHN0cnVjdCBtbnRfaWRtYXAgKmlkbWFwLCBzdHJ1Y3QgaW5vZGUgKmRpcixcXG4tLVxcbmZzL29yYW5nZWZzL25hbWVpLmMtMzE1LVxcbmZzL29yYW5nZWZzL25hbWVpLmM6MzE2OlxcdGZpbGxfZGVmYXVsdF9zeXNfYXR0cnMobmV3X29wLVxcdTAwM2V1cGNhbGwucmVxLm1rZGlyLmF0dHJpYnV0ZXMsIG1vZGUpO1xcbmZzL29yYW5nZWZzL25hbWVpLmMtMzE3LVxcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYz0yMzY9aW50IG9yYW5nZWZzX2lub2RlX2dldGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgaW50IGZsYWdzKVxcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zMDEtXFx0XFx0cmV0ID0gb3JhbmdlZnNfaW5vZGVfaXNfc3RhbGUoaW5vZGUsXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozMDI6XFx0XFx0ICAgIFxcdTAwMjZuZXdfb3AtXFx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzAzLVxcdFxcdCAgICBuZXdfb3AtXFx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5saW5rX3RhcmdldCk7XFxuLS1cXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMxMC1cXHR0eXBlID0gb3JhbmdlZnNfaW5vZGVfdHlwZShuZXdfb3AtXFx1MDAzZVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzExOlxcdCAgICBkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5vYmp0eXBlKTtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMxMi1cXHRzd2l0Y2ggKHR5cGUpIHtcXG4tLVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzE0LVxcdFxcdGlub2RlLVxcdTAwM2VpX2ZsYWdzID0gb3JhbmdlZnNfaW5vZGVfZmxhZ3MoXFx1MDAyNm5ld19vcC1cXHUwMDNlXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozMTU6XFx0XFx0ICAgIGRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzKTtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMxNi1cXHRcXHRpZiAoZmxhZ3MpIHtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTMxNy1cXHRcXHRcXHRpbm9kZV9zaXplID0gKGxvZmZfdCluZXdfb3AtXFx1MDAzZVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzE4OlxcdFxcdFxcdCAgICBkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5zaXplO1xcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzE5LVxcdFxcdFxcdGlub2RlLVxcdTAwM2VpX3NpemUgPSBpbm9kZV9zaXplO1xcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNTYtXFx0aW5vZGUtXFx1MDAzZWlfdWlkID0gbWFrZV9rdWlkKFxcdTAwMjZpbml0X3VzZXJfbnMsIG5ld19vcC1cXHUwMDNlXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozNTc6XFx0ICAgIGRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLm93bmVyKTtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM1OC1cXHRpbm9kZS1cXHUwMDNlaV9naWQgPSBtYWtlX2tnaWQoXFx1MDAyNmluaXRfdXNlcl9ucywgbmV3X29wLVxcdTAwM2VcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjM1OTpcXHQgICAgZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMuZ3JvdXApO1xcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzYwLVxcdGlub2RlX3NldF9hdGltZShpbm9kZSxcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjM2MTpcXHRcXHRcXHQodGltZTY0X3QpbmV3X29wLVxcdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcy5hdGltZSxcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM2Mi1cXHRcXHRcXHQwKTtcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTM2My1cXHRpbm9kZV9zZXRfbXRpbWUoaW5vZGUsXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYzozNjQ6XFx0XFx0XFx0KHRpbWU2NF90KW5ld19vcC1cXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMubXRpbWUsXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNjUtXFx0XFx0XFx0MCk7XFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNjYtXFx0aW5vZGVfc2V0X2N0aW1lKGlub2RlLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6MzY3OlxcdFxcdFxcdCh0aW1lNjRfdCluZXdfb3AtXFx1MDAzZWRvd25jYWxsLnJlc3AuZ2V0YXR0ci5hdHRyaWJ1dGVzLmN0aW1lLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzY4LVxcdFxcdFxcdDApO1xcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy0zNzEtXFx0aW5vZGUtXFx1MDAzZWlfbW9kZSA9IHR5cGUgfCAoaXNfcm9vdF9oYW5kbGUoaW5vZGUpID8gU19JU1ZUWCA6IDApIHxcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jOjM3MjpcXHQgICAgb3JhbmdlZnNfaW5vZGVfcGVybXMoXFx1MDAyNm5ld19vcC1cXHUwMDNlZG93bmNhbGwucmVzcC5nZXRhdHRyLmF0dHJpYnV0ZXMpO1xcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtMzczLVxcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYz0zODQ9aW50IG9yYW5nZWZzX2lub2RlX2NoZWNrX2NoYW5nZWQoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtNDA1LVxcdHJldCA9IG9yYW5nZWZzX2lub2RlX2lzX3N0YWxlKGlub2RlLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6NDA2OlxcdCAgICBcXHUwMDI2bmV3X29wLVxcdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIuYXR0cmlidXRlcyxcXG5mcy9vcmFuZ2Vmcy9vcmFuZ2Vmcy11dGlscy5jLTQwNy1cXHQgICAgbmV3X29wLVxcdTAwM2Vkb3duY2FsbC5yZXNwLmdldGF0dHIubGlua190YXJnZXQpO1xcbi0tXFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYz00MTc9aW50IG9yYW5nZWZzX2lub2RlX3NldGF0dHIoc3RydWN0IGlub2RlICppbm9kZSlcXG4tLVxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmMtNDMxLVxcdGNvcHlfYXR0cmlidXRlc19mcm9tX2lub2RlKGlub2RlLFxcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6NDMyOlxcdCAgICBcXHUwMDI2bmV3X29wLVxcdTAwM2V1cGNhbGwucmVxLnNldGF0dHIuYXR0cmlidXRlcyk7XFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy00MzMtXFx0b3JhbmdlZnNfaW5vZGUtXFx1MDAzZWF0dHJfdmFsaWQgPSAwO1xcbmZzL29yYW5nZWZzL29yYW5nZWZzLXV0aWxzLmM6NDM0OlxcdGlmICghbmV3X29wLVxcdTAwM2V1cGNhbGwucmVxLnNldGF0dHIuYXR0cmlidXRlcy5tYXNrKSB7XFxuZnMvb3JhbmdlZnMvb3JhbmdlZnMtdXRpbHMuYy00MzUtXFx0XFx0c3Bpbl91bmxvY2soXFx1MDAyNmlub2RlLVxcdTAwM2VpX2xvY2spO1xcbi0tXFxuaW5jbHVkZS9saW51eC9jYWNoZWluZm8uaD0xMjI9c3RhdGljIGlubGluZSBzdHJ1Y3QgY2FjaGVpbmZvICpnZXRfY3B1X2NhY2hlaW5mb19sZXZlbChpbnQgY3B1LCBpbnQgbGV2ZWwpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2NhY2hlaW5mby5oLTEzMC1cXHRcXHRpZiAoY2ktXFx1MDAzZWluZm9fbGlzdFtpXS5sZXZlbCA9PSBsZXZlbCkge1xcbmluY2x1ZGUvbGludXgvY2FjaGVpbmZvLmg6MTMxOlxcdFxcdFxcdGlmIChjaS1cXHUwMDNlaW5mb19saXN0W2ldLmF0dHJpYnV0ZXMgXFx1MDAyNiBDQUNIRV9JRClcXG5pbmNsdWRlL2xpbnV4L2NhY2hlaW5mby5oLTEzMi1cXHRcXHRcXHRcXHRyZXR1cm4gXFx1MDAyNmNpLVxcdTAwM2VpbmZvX2xpc3RbaV07XFxuLS1cXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYz0yODQ9dTE2IGhwaV9mb3JtYXRfY3JlYXRlKHN0cnVjdCBocGlfZm9ybWF0ICpwX2Zvcm1hdCwgdTE2IGNoYW5uZWxzLCB1MTYgZm9ybWF0LFxcbi0tXFxuc291bmQvcGNpL2FzaWhwaS9ocGlmdW5jLmMtMzY4LVxcdFxcdH1cXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYzozNjk6XFx0XFx0Zm10LmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTM3MC1cXHRcXHRicmVhaztcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYy0zNzEtXFx0ZGVmYXVsdDpcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYzozNzI6XFx0XFx0Zm10LmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jLTM3My1cXHR9XFxuLS1cXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYz0xMDI2PXUxNiBocGlfaW5zdHJlYW1fYW5jaWxsYXJ5X3Jlc2V0KHUzMiBoX2luc3RyZWFtLCB1MTYgYnl0ZXNfcGVyX2ZyYW1lLFxcbi0tXFxuc291bmQvcGNpL2FzaWhwaS9ocGlmdW5jLmMtMTAzNC1cXHRcXHRyZXR1cm4gSFBJX0VSUk9SX0lOVkFMSURfSEFORExFO1xcbnNvdW5kL3BjaS9hc2locGkvaHBpZnVuYy5jOjEwMzU6XFx0aG0udS5kLnUuZGF0YS5mb3JtYXQuYXR0cmlidXRlcyA9IGJ5dGVzX3Blcl9mcmFtZTtcXG5zb3VuZC9wY2kvYXNpaHBpL2hwaWZ1bmMuYy0xMDM2LVxcdGhtLnUuZC51LmRhdGEuZm9ybWF0LmZvcm1hdCA9IChtb2RlIFxcdTAwM2NcXHUwMDNjIDgpIHwgKGFsaWdubWVudCBcXHUwMDI2IDB4ZmYpO1xcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM9ODE1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXZzX3NwZWMgc2tsX2Rlc2MgPSB7XFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYy04MTktXFx0LmNvcmVfaW5pdF9tYXNrID0gMSxcXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYzo4MjA6XFx0LmF0dHJpYnV0ZXMgPSBBVlNfUExBVEFUVFJfQ0xETUEsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODIxLVxcdC5zcmFtID0gXFx1MDAyNnNrbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04MjU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBhcGxfZGVzYyA9IHtcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTgyOS1cXHQuY29yZV9pbml0X21hc2sgPSAzLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjgzMDpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODMxLVxcdC5zcmFtID0gXFx1MDAyNmFwbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04MzU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBjbmxfZGVzYyA9IHtcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTgzOS1cXHQuY29yZV9pbml0X21hc2sgPSAxLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg0MDpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODQxLVxcdC5zcmFtID0gXFx1MDAyNmFwbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04NDU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBpY2xfZGVzYyA9IHtcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg0OS1cXHQuY29yZV9pbml0X21hc2sgPSAxLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg1MDpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODUxLVxcdC5zcmFtID0gXFx1MDAyNmFwbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04NTU9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBqc2xfZGVzYyA9IHtcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg1OS1cXHQuY29yZV9pbml0X21hc2sgPSAxLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg2MDpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODYxLVxcdC5zcmFtID0gXFx1MDAyNmFwbF9zcmFtX3NwZWMsXFxuLS1cXG5zb3VuZC9zb2MvaW50ZWwvYXZzL2NvcmUuYz04NjY9c3RhdGljIGNvbnN0IHN0cnVjdCBhdnNfc3BlYyBzbmFtZSMjX2Rlc2MgPSB7XFx0XFxcXFxcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODcwLVxcdC5jb3JlX2luaXRfbWFzayA9IDEsXFx0XFx0XFx0XFxcXFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jOjg3MTpcXHQuYXR0cmlidXRlcyA9IEFWU19QTEFUQVRUUl9JTVIsXFx0XFx0XFxcXFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg3Mi1cXHQuc3JhbSA9IFxcdTAwMjZhcGxfc3JhbV9zcGVjLFxcdFxcdFxcdFxcXFxcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jPTg4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGF2c19zcGVjIGZjbF9kZXNjID0ge1xcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmMtODg2LVxcdC5jb3JlX2luaXRfbWFzayA9IDEsXFxuc291bmQvc29jL2ludGVsL2F2cy9jb3JlLmM6ODg3OlxcdC5hdHRyaWJ1dGVzID0gQVZTX1BMQVRBVFRSX0lNUiB8IEFWU19QTEFUQVRUUl9BQ0UgfCBBVlNfUExBVEFUVFJfQUxUSERBLFxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvY29yZS5jLTg4OC1cXHQuc3JhbSA9IFxcdTAwMjZtdGxfc3JhbV9zcGVjLFxcbi0tXFxuc291bmQvc29jL2ludGVsL2F2cy9tZXNzYWdlcy5jPTY3PWludCBhdnNfaXBjX2NyZWF0ZV9waXBlbGluZShzdHJ1Y3QgYXZzX2RldiAqYWRldiwgdTE2IHJlcV9zaXplLCB1OCBwcmlvcml0eSxcXG4tLVxcbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy03Ni1cXHRtc2cuZXh0LmNyZWF0ZV9wcGwubHAgPSBscDtcXG5zb3VuZC9zb2MvaW50ZWwvYXZzL21lc3NhZ2VzLmM6Nzc6XFx0bXNnLmV4dC5jcmVhdGVfcHBsLmF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzO1xcbnNvdW5kL3NvYy9pbnRlbC9hdnMvbWVzc2FnZXMuYy03OC1cXHRyZXF1ZXN0LmhlYWRlciA9IG1zZy52YWw7XFxuLS1cXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTM3LVxcdFxcdFxcdC5lcF9hdHRyID0gVVNCX0VORFBPSU5UX1hGRVJfSVNPQyxcXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg6MTM4OlxcdFxcdFxcdC5hdHRyaWJ1dGVzID0gMCxcXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTM5LVxcdFxcdFxcdC5yYXRlcyA9IFNORFJWX1BDTV9SQVRFX0NPTlRJTlVPVVMsXFxuLS1cXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg9NDQxPVlBTUFIQV9ERVZJQ0UoMHg3MDEwLCBcXFwiVUI5OVxcXCIpLFxcbi0tXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ3MS1cXHRcXHRcXHRcXHRcXHQuYWx0c2V0X2lkeCA9IDEsXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjQ3MjpcXHRcXHRcXHRcXHRcXHQuYXR0cmlidXRlcyA9IDAsXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ3My1cXHRcXHRcXHRcXHRcXHQuZW5kcG9pbnQgPSAweDAxLFxcbi0tXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oLTQ4Ni1cXHRcXHRcXHRcXHRcXHQuYWx0c2V0X2lkeCA9IDEsXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjQ4NzpcXHRcXHRcXHRcXHRcXHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX0ZJTExfTUFYLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC00ODgtXFx0XFx0XFx0XFx0XFx0LmVuZHBvaW50ID0gMHg4MSxcXG4tLVxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC03OTYtXFx0XFx0XFx0XFx0XFx0LmFsdHNldF9pZHggPSAxLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDo3OTc6XFx0XFx0XFx0XFx0XFx0LmF0dHJpYnV0ZXMgPSAwLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC03OTgtXFx0XFx0XFx0XFx0XFx0LmVuZHBvaW50ID0gMHgwMSxcXG4tLVxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC04MTEtXFx0XFx0XFx0XFx0XFx0LmFsdHNldF9pZHggPSAxLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaDo4MTI6XFx0XFx0XFx0XFx0XFx0LmF0dHJpYnV0ZXMgPSAwLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC04MTMtXFx0XFx0XFx0XFx0XFx0LmVuZHBvaW50ID0gMHg4MixcXG4tLVxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC0xNTk5LVxcdFxcdFxcdFxcdFxcdC5hbHRzZXRfaWR4ID0gMSxcXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmg6MTYwMDpcXHRcXHRcXHRcXHRcXHQuYXR0cmlidXRlcyA9IFVBQ19FUF9DU19BVFRSX1NBTVBMRV9SQVRFLFxcbnNvdW5kL3VzYi9xdWlya3MtdGFibGUuaC0xNjAxLVxcdFxcdFxcdFxcdFxcdC5lbmRwb2ludCA9IDB4MDEsXFxuLS1cXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTYyMy1cXHRcXHRcXHRcXHRcXHQuYWx0c2V0X2lkeCA9IDEsXFxuc291bmQvdXNiL3F1aXJrcy10YWJsZS5oOjE2MjQ6XFx0XFx0XFx0XFx0XFx0LmF0dHJpYnV0ZXMgPSBVQUNfRVBfQ1NfQVRUUl9TQU1QTEVfUkFURSxcXG5zb3VuZC91c2IvcXVpcmtzLXRhYmxlLmgtMTYyNS1cXHRcXHRcXHRcXHRcXHQuZW5kcG9pbnQgPSAweDgxLFxcbi0tXFxuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjI2Ljg2NTA2MDM1NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzE3OTM2NTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgVW51c2VkIENvZGUgYW5kIEF0dHJpYnV0ZSBBY2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ3ZlIHNwb3R0ZWQgc29tZXRoaW5nIGltbWVkaWF0ZWx5OiBpdCBsb29rcyBsaWtlIGBncHRfZW50cnlfYXR0cmlidXRlc2AgaXNuJ3QgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQgYW55d2hlcmUgaW4gdGhlIGNvZGViYXNlLiBUaGF0J3MgYWx3YXlzIGEgcmVkIGZsYWcg4oCTIHVudXNlZCBjb2RlIGlzIG9mdGVuIGEgc3ltcHRvbSBvZiBzb21ldGhpbmcsIGFuZCBpdCdzIHdvcnRoIHVuZGVyc3RhbmRpbmcgdGhlIGltcGxpY2F0aW9ucy5cblxuTm93LCBteSBuZXh0IHRob3VnaHQgaXMsIHdoYXQgYWJvdXQgdGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCAqd2l0aGluKiBgZ3B0X2VudHJ5YCBpdHNlbGY/IEl0J3MgcG9zc2libGUgd2UgaGF2ZSBhIHJlbGF0ZWQgaXNzdWUsIG9yIHBlcmhhcHMgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgaW50ZW5kZWQgYXMgYSBzdGFuZGFsb25lIHN0cnVjdHVyZSwgYW5kIHRoZSBsb2dpYyB3YXMgcmV3b3JrZWQuIFNvLCBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgYGdwdF9lbnRyeWAgaXMgYWN0dWFsbHkgKnVzZWQqLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGlzIG9uIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBzaW5jZSB0aGF0J3Mgd2hlcmUgR1BUIHBhcnRpdGlvbmluZyBpcyB0eXBpY2FsbHkgaGFuZGxlZC4gSSBuZWVkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIGlmIGBncHRfZW50cnlgIGlzIHVzZWQgdGhlcmUsIGFuZCwgY3J1Y2lhbGx5LCBpZiB0aGUgYGF0dHJpYnV0ZXNgIGZpZWxkIGlzIGJlaW5nIGFjY2Vzc2VkLiBLbm93aW5nIHRoYXQgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2Ygd2hldGhlciB0aGlzIHVudXNlZCB2YXJpYWJsZSBpcyBhbiBvcnBoYW4sIGEgbGVnYWN5IHBpZWNlLCBvciBpZiBpdCBoYXMgc29tZSBzdWJ0bGUgY29ubmVjdGlvbiB0byB0aGUgbWFpbiBsb2dpYy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc1MzMsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOTozMC41ODMwMDAzNjdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5MzM2Mjg0OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicHRlLVxcdTAwM2VhdHRyaWJ1dGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjMwLjc3NjM3MjAyNVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjYyNTE3MTkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZWJ1Z2dpbmcgTWVtb3J5IEF0dHJpYnV0ZXMqKlxuXG5SaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIE15IGluaXRpYWwgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byB6ZXJvIGluIG9uIHRoZSBtZW1vcnkgYXR0cmlidXRlIHN0cnVjdHVyZXMuIEknZCBzdGFydCBieSBpbnNwZWN0aW5nIHNvbWV0aGluZyBsaWtlIGBwdGVcXFsuKlxcXVxcLmF0dHJpYnV0ZXNg4oCUb3IgcGVyaGFwcyBhIHNpbWlsYXIgbmFtaW5nIGNvbnZlbnRpb24gdXNlZCBpbiB0aGUgc3BlY2lmaWMgYXJjaGl0ZWN0dXJlIG9yIGtlcm5lbCBJJ20gd29ya2luZyB3aXRoLiBUaGUgYC4qYCBhY3RzIGFzIGEgd2lsZGNhcmQ7IEkgbmVlZCB0byBiZSBmbGV4aWJsZSBhbmQgYWNjb3VudCBmb3IgcG90ZW50aWFsIHZhcmlhdGlvbnMgaW4gdGhlIGV4YWN0IGZpZWxkIG5hbWUuIFRoZSBnb2FsIGlzIHRvIGlkZW50aWZ5IGhvdyB0aGVzZSBtZW1vcnkgYXR0cmlidXRlcyBhcmUgc2V0IGFuZCB3aGF0IHRoZWlyIGN1cnJlbnQgdmFsdWVzIGFyZSwgYmVjYXVzZSB0aG9zZSBhdHRyaWJ1dGVzIGFyZSB0aGUga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG9ic2VydmVkIGJlaGF2aW9yLiBJdCBzZWVtcyBsaWtlIGl0IHdpbGwgYmUgc29tZSBraW5kIG9mIFBURSAoUGFnZSBUYWJsZSBFbnRyeSkgYXR0cmlidXRlIHRoYXQgaXMgY2F1c2luZyB0aGUgcHJvYmxlbS4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB2YWx1ZXMgaXQgc2hvdWxkIGJlIHNldCB0byB0byBzb2x2ZSB0aGUgaXNzdWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3ODcwLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MzQuMDM4ODkzMzU1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzU1NjEzNDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInB0ZXNcXFxcWy4qXFxcXF1cXFxcLmF0dHJpYnV0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svcGFydGl0aW9ucy9lZmkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MzQuMTc0NDY2OTg1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNzA0NTAwOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHNvbWVvbmUga25vd2xlZGdlYWJsZSBpbiB0aGUgZmllbGQgYW5kIHByb2Nlc3NpbmcgdGhpcyBpbmZvcm1hdGlvbjpcblxuKipBbmFseXppbmcgYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgIFVzYWdlIG9mIGBhdHRyaWJ1dGVzYCoqXG5cbkFscmlnaHQsIGxldCdzIHplcm8gaW4gb24gYGJsb2NrL3BhcnRpdGlvbnMvZWZpLmNgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhlIGNvZGUgaW4gdGhpcyBmaWxlIGludGVyYWN0cyB3aXRoIHRoZSBgYXR0cmlidXRlc2AgdmFyaWFibGUuIElzIGl0IGV2ZW4gcmVmZXJlbmNlZD8gRG9lcyB0aGUgY29kZSByZWx5IG9uIHJlYWRpbmcgb3IgbW9kaWZ5aW5nIHRoZXNlIGF0dHJpYnV0ZXM/IEtub3dpbmcgdGhpcyB3aWxsIGhlbHAgbWUgdW5kZXJzdGFuZCBpdHMgcm9sZSBhbmQgd2hldGhlciBpdCdzIGVzc2VudGlhbCBmb3IgdGhlIGxvZ2ljLiBJIG5lZWQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyB1c2FnZSB3aXRoaW4gdGhpcyBzcGVjaWZpYyBwYXJ0aXRpb25pbmcgY29udGV4dCB0byBhc3Nlc3MgcG90ZW50aWFsIGltcGFjdHMgb3IgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8ga25vdyB0aGUgc2NvcGUgYW5kIGhvdyBpdCBpcyB1c2VkIHRvIGFzc2VzcyBpZiB0aGlzIGEgcG90ZW50aWFsIHNlY3VyaXR5IGZsYXcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4MTE2LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MzcuMzQ0OTIwMDkyWiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTAzNTE5MDAsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0dHJpYnV0ZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiYmxvY2svcGFydGl0aW9ucy9lZmkuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6MzcuNDk1Mjc5OTQxWiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2MzE4NDkzMjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkludmVzdGlnYXRpbmcgRUZJIFBhcnRpdGlvbiBBdHRyaWJ1dGUgVXNhZ2UqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuLi4gdGhlIGNvZGUncyBwb2ludGluZyBtZSBhdCBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AuIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGUgY29tbWVudCBtZW50aW9uaW5nIFwiYXR0cmlidXRlcy5cIiBJdCdzIHN1Z2dlc3RpbmcgYGF0dHJpYnV0ZXNgICphcmVuJ3QqIGJlaW5nIGRpcmVjdGx5IHVzZWQgaW4gdGhpcyBzcGVjaWZpYyBmaWxlLCB3aGljaCBpcyBpbnRlcmVzdGluZy5cblxuTm93LCB0aGF0IGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnIGluIG15IG1pbmQuIElmIGBhdHRyaWJ1dGVzYCBhcmVuJ3QgYWNjZXNzZWQgKmhlcmUqLCB0aGF0IGRvZXNuJ3QgbWVhbiB0aGV5IGFyZW4ndCBjcnVjaWFsLiBUaGlzIHN1Z2dlc3RzIHRoYXQgdGhleSBhcmUgdXNlZCBlbHNld2hlcmUsIGJlY2F1c2Ugd2h5IGVsc2Ugd291bGQgdGhleSBiZSBtZW50aW9uZWQgaGVyZT8gSSBzaG91bGQgbWFrZSBhIG5vdGUgdG8gY2hlY2sgaG93IHRoZSBhdHRyaWJ1dGVzIGFyZSB1c2VkLCBhbmQgd2hldGhlciB0aGVpciBiZWluZyBvbWl0dGVkIGhlcmUgaXMgYSBzaWduLlxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGZpbGVzIG9yIGZ1bmN0aW9ucyB0aGF0IHJlbHkgb24gdGhpcyBkYXRhLiBBIHF1aWNrIHNlYXJjaCBvZiB0aGUgY29kZWJhc2Ugd291bGQgYmUgbXkgbmV4dCBsb2dpY2FsIHN0ZXAuIEknbGwgbmVlZCB0byB1c2UgbXkgcHJlZmVycmVkIHNlYXJjaCB0b29scyBhbmQgbWF5YmUgc29tZSBncmVwcGluZyB0byBzZWUgdGhlIG90aGVyIGZpbGVzIHdoZXJlIHRoZSBgYXR0cmlidXRlc2AgdmFyaWFibGUgb3Igc3RydWN0IG1pZ2h0IGJlIHJlZmVyZW5jZWQuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbCwgYW5kIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0J3MgYmVpbmcgdXNlZC4gSWYgaXQncyBub3QgYmVpbmcgdXNlZCwgdGhlbiB0aGF0J3MgYSBkaWZmZXJlbnQgcHJvYmxlbSBhbHRvZ2V0aGVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxODMzNiwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjQxLjEyNzEzMjAyOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxOTI5OTU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJncHRfZW50cnlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjY5LSAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cXHRcXHRcXHRcXHRcXHQgZ3B0X2hlYWRlciAqZ3B0KVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNzMtXFx0c2l6ZV90IGNvdW50O1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0OlxcdGdwdF9lbnRyeSAqcHRlO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz0zMzQ9c3RhdGljIGludCBpc19ncHRfdmFsaWQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTY0IGxiYSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcXHRcXHRcXHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVxcdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQxNTpcXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVxcdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE2LVxcdFxcdHByX2RlYnVnKFxcXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXFxcblxcXCIpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQ2MDppc19wdGVfdmFsaWQoY29uc3QgZ3B0X2VudHJ5ICpwdGUsIGNvbnN0IHU2NCBsYXN0bGJhKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NTgwPXN0YXRpYyBpbnQgZmluZF92YWxpZF9ncHQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgZ3B0X2hlYWRlciAqKmdwdCxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcXHRcXHRcXHQgIGdwdF9lbnRyeSAqKnB0ZXMpXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXFx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4NTpcXHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cXHRsZWdhY3lfbWJyICpsZWdhY3ltYnI7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXFx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjcxNTpcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVxcdHUzMiBpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaD01NT10eXBlZGVmIHN0cnVjdCBfZ3B0X2hlYWRlciB7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTc3LVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmg6Nzg6dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC03OS1cXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg0LVxcdF9fbGUxNiBwYXJ0aXRpb25fbmFtZVs3Mi9zaXplb2YoX19sZTE2KV07XFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDo4NTp9IF9fcGFja2VkIGdwdF9lbnRyeTtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oLTg2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzowOTo0NS42NDY0MzY3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyODMxNTA5MzAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFBvdGVudGlhbCBJbXBhY3RzIG9mIGEgR1BUIEVudHJ5IFN0cnVjdHVyZSBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHNwZWNpZmljYWxseSBhdCBgZ3B0X2VudHJ5YC4gSXQgbG9va3MgbGlrZSBgZ3B0X2VudHJ5YCBpcyBvbmx5IHVzZWQgd2l0aGluIHRoZSBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgYW5kIGAuaGAgZmlsZXMuIEluaXRpYWxseSwgbXkgY29uY2VybiB3YXMgc3BhcmtlZCBieSB0aGUgc2VlbWluZ2x5IHVudXNlZCBgYXR0cmlidXRlc2AgZmllbGQgd2l0aGluIHRoZSBgZ3B0X2VudHJ5YCBzdHJ1Y3QuIEkgd29uZGVyZWQgaWYgdGhlIGNoYW5nZSBpbiBob3cgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgZGVmaW5lZCBjb3VsZCBhZmZlY3QgdGhlIG92ZXJhbGwgc2l6ZSBvZiBgZ3B0X2VudHJ5YCBnaXZlbiB0aGF0IGBzaXplb2YoZ3B0X2VudHJ5KWAgKmlzKiB1c2VkLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYSBiaXRmaWVsZCwgZGVwZW5kaW5nIG9uIHRoZSBhcmNoaXRlY3R1cmUgYW5kIGNvbXBpbGVyLCBjb3VsZCByZXN1bHQgaW4gc2l6ZSBvciBhbGlnbm1lbnQgZGlmZmVyZW5jZXMuXG5cbkhvd2V2ZXIsIGEgcXVpY2sgY2hlY2sgb2YgdGhlIGRlZmluaXRpb24gb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCByZXZlYWxzIHRoZSBgX19wYWNrZWRgIGF0dHJpYnV0ZS4gVGhpcyBjb25maXJtcyB0aGF0IHRoZSBzdHJ1Y3R1cmUgaXMgaW5kZWVkIDggYnl0ZXMuIEdvaW5nIGEgc3RlcCBmdXJ0aGVyIHRvIGRvdWJsZS1jaGVjaywgSSBjYW4gc2VlIHRoYXQgdGhlIHN0cnVjdCBgZ3B0X2VudHJ5YCBpdHNlbGYgaXMgYWxzbyBgX19wYWNrZWRgLlxuXG5TbywgdGhlIG5ldyBzdHJ1Y3QgYGdwdF9lbnRyeWAgZGVmaW5pdGlvbiB1c2luZyBgX19wYWNrZWRgIHNob3VsZCBiZTogMTYgKGZvciBwYXJ0aXRpb25fdHlwZV9ndWlkKSArIDE2IChmb3IgdW5pcXVlX3BhcnRpdGlvbl9ndWlkKSArIDggKyA4ICsgOCAoYXR0cmlidXRlcykgKyA3MiA9IDEyOCBieXRlcy4gVGhlIG9sZCBkZWZpbml0aW9uLCB3aXRoIGBfX2xlNjQgYXR0cmlidXRlcztgLCB3b3VsZCBhbHNvIGhhdmUgYmVlbiAxMjggYnl0ZXMuIFRoZSBgc2l6ZW9mKGdwdF9lbnRyeSlgIGlzIHRoZXJlZm9yZSBpZGVudGljYWwuIFRoZXJlJ3Mgbm8gc2l6ZSBjaGFuZ2UgYXQgYWxsLlxuXG5Ib3dldmVyLCBJIHN0YXJ0ZWQgdG8gdGhpbmsgYWJvdXQgdGhlIGJyb2FkZXIgaW1wbGljYXRpb25zIG9mIHRoaXMgZmllbGQgYmVpbmcgYSBiaXRmaWVsZCwgcGFydGljdWxhcmx5IHNpbmNlIGl0J3MgYSBgdTY0YC4gQml0ZmllbGRzIG9mIHRoaXMgc2l6ZSBjYW4gc29tZXRpbWVzIGJlIHByb2JsZW1hdGljIGluIEMsIHBvdGVudGlhbGx5IGxlYWRpbmcgdG8gd2FybmluZ3MgZGVwZW5kaW5nIG9uIHRoZSBjb21waWxlciB1c2VkLCBvciBtb3JlIHNpZ25pZmljYW50bHksIGludHJvZHVjaW5nIGVuZGlhbm5lc3MgaXNzdWVzLiBCdXQsIHdhaXQuLi50aGUgY3JpdGljYWwgcG9pbnQgaGVyZSBpcyB0aGF0IHRoZSBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIGZpZWxkIGl0c2VsZiBpcyAqbmV2ZXIqIGFjY2Vzc2VkLiBUaGVyZWZvcmUsIHRoZSBlbmRpYW5uZXNzIG9mIHRoZSBiaXRmaWVsZCBkb2Vzbid0IG1hdHRlciwgYW5kIHRoZXJlIGlzIG5vIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5TdGlsbCwgdG8gYmUgY29tcGxldGVseSB0aG9yb3VnaCwgSSBzaG91bGQgbG9vayBhdCBhbGwgb3RoZXIgZmlsZXMgdGhhdCBpbmNsdWRlIGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYCwganVzdCB0byBiZSBjZXJ0YWluIHRoYXQgSSBhbSBzZWVpbmcgdGhlIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NDQzLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjUyLjkyOTU5MDYyWiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NzQ3NjA5MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZWZpXFxcXC5oXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtOTAtI2luY2x1ZGUgXFxcImNoZWNrLmhcXFwiXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYzo5MTojaW5jbHVkZSBcXFwiZWZpLmhcXFwiXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy05Mi1cXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNC0gKiBQZXIgSW50ZWwgRUZJIFNwZWNpZmljYXRpb24gdjEuMDJcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5oOjU6ICogaHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20vdGVjaG5vbG9neS9lZmkvZWZpLmh0bVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmgtNi0gKlxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC0xOC0jaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nLmhcXHUwMDNlXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaDoxOTojaW5jbHVkZSBcXHUwMDNjbGludXgvZWZpLmhcXHUwMDNlXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuaC0yMC0jaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zMS0jaW5jbHVkZSBcXFwiY2hlY2suaFxcXCJcXG5ibG9jay9wYXJ0aXRpb25zL21zZG9zLmM6MzI6I2luY2x1ZGUgXFxcImVmaS5oXFxcIlxcbmJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuYy0zMy1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6NTMuNjA0MzYwNTQyWiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODM1ODI4NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzLiBIZXJlJ3MgaG93IEknZCBhcHByb2FjaCB0aGlzIHRhc2ssIGFzIGlmIHRoZXNlIHdlcmUgbXkgaW50ZXJuYWwgdGhvdWdodHM6XG5cbioqSW52ZXN0aWdhdGluZyBNU0RPUyBQYXJ0aXRpb24gQXR0cmlidXRlIEFjY2VzcyoqXG5cbkFscmlnaHQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGlmIHRoZSBgYmxvY2svcGFydGl0aW9ucy9tc2Rvcy5jYCBjb2RlIGlzIGludGVyYWN0aW5nIHdpdGggdGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCBpbiB0aGUgY29udGV4dCBvZiBNU0RPUyBwYXJ0aXRpb24gdGFibGVzLiBUaGF0J3MgdGhlIGNydXggb2YgdGhpcyBpbnZlc3RpZ2F0aW9uLiBTcGVjaWZpY2FsbHksIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIGZpbGUgYGJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuY2AuIFRoaXMgaXMgd2hlcmUgdGhlIGNvcmUgbG9naWMgZm9yIGhhbmRsaW5nIE1TRE9TLWZvcm1hdHRlZCBwYXJ0aXRpb24gdGFibGVzIHJlc2lkZXMsIHNvIGlmIHRoZXJlJ3MgYW55IGFjY2VzcyB0byBhdHRyaWJ1dGVzLCBpdCdzIGhpZ2hseSBsaWtlbHkgdG8gYmUgZm91bmQgaGVyZS4gTXkgZ29hbCBpcyB0byBjb25maXJtIG9yIGRlbnkgdGhpcyBhdHRyaWJ1dGUgaW50ZXJhY3Rpb24uIEkgd2lsbCBub3cgZXhhbWluZSB0aGlzIGZpbGUgaW4gZGV0YWlsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDY1NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjA5OjU2Ljk4Nzk0NjMwMloiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI1NjU1MjAzLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdHRyaWJ1dGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvbXNkb3MuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MDk6NTcuMjEzNjA5MDY2WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQwMDk0NTk3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgU2VlbWluZ2x5IFVzZWxlc3MgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IEkgc2VlIHRoaXMgdmFyaWFibGUuLi4gaXQncyBqdXN0ICpuZXZlciogdXNlZC4gVGhhdCdzIGEgYml0IHBlcnBsZXhpbmcuIFRoZSBxdWVzdGlvbiBpcywgd2h5IHdhcyB0aGlzIHBhdGNoIGV2ZW4gc3VibWl0dGVkPyBXaGF0J3MgdGhlIHJhdGlvbmFsZT9cblxuTXkgaW5pdGlhbCB0aG91Z2h0cyBhcmUsIHdhcyBpdCBzb21ldGhpbmcgc3VidGxlPyBEaWQgdGhlIGNvbXBpbGVyIHN0YXJ0IHRocm93aW5nIHVwIHNwYXJzZSB3YXJuaW5ncyBvciB0cmlnZ2VyIGJpdGZpZWxkLXJlbGF0ZWQgd2FybmluZ3M/IFRoYXQncyBhIHBvc3NpYmlsaXR5LCBidXQgSSdtIG5vdCB0b3RhbGx5IGNvbnZpbmNlZC4gT3IsIHBlcmhhcHMgaXQncyBzaW1wbHkgYSBjbGVhbnVwIGVmZm9ydCwgc29tZW9uZSBzdHJlYW1saW5pbmcgdGhlIGNvZGViYXNlLiBCdXQgd2FpdC4uLiBpZiBpdCdzIGdlbnVpbmVseSBpbmFjY2Vzc2libGUsIHRoZW4gZnVuY3Rpb25hbGx5LCBub3RoaW5nIGFjdHVhbGx5ICpjaGFuZ2VkKi4gVGhhdCBzaW1wbGlmaWVzIHRoaW5ncywgYnV0IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUuXG5cbkknbSBnb2luZyB0byBxdWlja2x5IHNjYW4gdGhyb3VnaCBgZWZpLmhgIHRvIG1ha2Ugc3VyZSB0aGVyZSBpc24ndCBzb21lIHNuZWFreSBtYWNybyBvciBpbmxpbmUgZnVuY3Rpb24gdGhhdCBtaWdodCBiZSBpbmRpcmVjdGx5IHVzaW5nIHRoaXMgdmFsdWUuIEp1c3Qgd2FudCB0byBtYWtlIGFic29sdXRlbHkgY2VydGFpbiB0aGVyZSBhcmUgbm8gc3VycHJpc2VzIGx1cmtpbmcgaW4gdGhpcyBmaWxlLiBHb3R0YSBkb3QgdGhlIGkncyBhbmQgY3Jvc3MgdGhlIHQncyBiZWZvcmUgbW92aW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDg4MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjEwOjAxLjIyMzA3MzU2NFoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTI1OTk0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIgKi9cXG4gICAyOlxcdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcXG4gICAzOlxcdCAqIEVGSSBHVUlEIFBhcnRpdGlvbiBUYWJsZVxcbiAgIDQ6XFx0ICogUGVyIEludGVsIEVGSSBTcGVjaWZpY2F0aW9uIHYxLjAyXFxuICAgNTpcXHQgKiBodHRwOi8vZGV2ZWxvcGVyLmludGVsLmNvbS90ZWNobm9sb2d5L2VmaS9lZmkuaHRtXFxuICAgNjpcXHQgKlxcbiAgIDc6XFx0ICogQnkgTWF0dCBEb21zY2ggXFx1MDAzY01hdHRfRG9tc2NoQGRlbGwuY29tXFx1MDAzZSAgRnJpIFNlcCAyMiAyMjoxNTo1NiBDRFQgMjAwMCAgXFxuICAgODpcXHQgKiAgIENvcHlyaWdodCAyMDAwLDIwMDEgRGVsbCBJbmMuXFxuICAgOTpcXHQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xcbiAgMTA6XFx0XFxuICAxMTpcXHQjaWZuZGVmIEZTX1BBUlRfRUZJX0hfSU5DTFVERURcXG4gIDEyOlxcdCNkZWZpbmUgRlNfUEFSVF9FRklfSF9JTkNMVURFRFxcbiAgMTM6XFx0XFxuICAxNDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvdHlwZXMuaFxcdTAwM2VcXG4gIDE1OlxcdCNpbmNsdWRlIFxcdTAwM2NsaW51eC9mcy5oXFx1MDAzZVxcbiAgMTY6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAgMTc6XFx0I2luY2x1ZGUgXFx1MDAzY2xpbnV4L21ham9yLmhcXHUwMDNlXFxuICAxODpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvc3RyaW5nLmhcXHUwMDNlXFxuICAxOTpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvZWZpLmhcXHUwMDNlXFxuICAyMDpcXHQjaW5jbHVkZSBcXHUwMDNjbGludXgvY29tcGlsZXIuaFxcdTAwM2VcXG4gIDIxOlxcdFxcbiAgMjI6XFx0I2RlZmluZSBNU0RPU19NQlJfU0lHTkFUVVJFIDB4YWE1NVxcbiAgMjM6XFx0I2RlZmluZSBFRklfUE1CUl9PU1RZUEVfRUZJIDB4RUZcXG4gIDI0OlxcdCNkZWZpbmUgRUZJX1BNQlJfT1NUWVBFX0VGSV9HUFQgMHhFRVxcbiAgMjU6XFx0XFxuICAyNjpcXHQjZGVmaW5lIEdQVF9NQlJfUFJPVEVDVElWRSAgMVxcbiAgMjc6XFx0I2RlZmluZSBHUFRfTUJSX0hZQlJJRCAgICAgIDJcXG4gIDI4OlxcdFxcbiAgMjk6XFx0I2RlZmluZSBHUFRfSEVBREVSX1NJR05BVFVSRSAweDU0NTI0MTUwMjA0OTQ2NDVVTExcXG4gIDMwOlxcdCNkZWZpbmUgR1BUX0hFQURFUl9SRVZJU0lPTl9WMSAweDAwMDEwMDAwXFxuICAzMTpcXHQjZGVmaW5lIEdQVF9QUklNQVJZX1BBUlRJVElPTl9UQUJMRV9MQkEgMVxcbiAgMzI6XFx0XFxuICAzMzpcXHQjZGVmaW5lIFBBUlRJVElPTl9TWVNURU1fR1VJRCBcXFxcXFxuICAzNDpcXHQgICAgRUZJX0dVSUQoIDB4QzEyQTczMjgsIDB4RjgxRiwgMHgxMWQyLCBcXFxcXFxuICAzNTpcXHQgICAgICAgICAgICAgIDB4QkEsIDB4NEIsIDB4MDAsIDB4QTAsIDB4QzksIDB4M0UsIDB4QzksIDB4M0IpIFxcbiAgMzY6XFx0I2RlZmluZSBMRUdBQ1lfTUJSX1BBUlRJVElPTl9HVUlEIFxcXFxcXG4gIDM3OlxcdCAgICBFRklfR1VJRCggMHgwMjRERUU0MSwgMHgzM0U3LCAweDExZDMsIFxcXFxcXG4gIDM4OlxcdCAgICAgICAgICAgICAgMHg5RCwgMHg2OSwgMHgwMCwgMHgwOCwgMHhDNywgMHg4MSwgMHhGMywgMHg5RilcXG4gIDM5OlxcdCNkZWZpbmUgUEFSVElUSU9OX01TRlRfUkVTRVJWRURfR1VJRCBcXFxcXFxuICA0MDpcXHQgICAgRUZJX0dVSUQoIDB4RTNDOUUzMTYsIDB4MEI1QywgMHg0REI4LCBcXFxcXFxuICA0MTpcXHQgICAgICAgICAgICAgIDB4ODEsIDB4N0QsIDB4RjksIDB4MkQsIDB4RjAsIDB4MDIsIDB4MTUsIDB4QUUpXFxuICA0MjpcXHQjZGVmaW5lIFBBUlRJVElPTl9CQVNJQ19EQVRBX0dVSUQgXFxcXFxcbiAgNDM6XFx0ICAgIEVGSV9HVUlEKCAweEVCRDBBMEEyLCAweEI5RTUsIDB4NDQzMywgXFxcXFxcbiAgNDQ6XFx0ICAgICAgICAgICAgICAweDg3LCAweEMwLCAweDY4LCAweEI2LCAweEI3LCAweDI2LCAweDk5LCAweEM3KVxcbiAgNDU6XFx0I2RlZmluZSBQQVJUSVRJT05fTElOVVhfUkFJRF9HVUlEIFxcXFxcXG4gIDQ2OlxcdCAgICBFRklfR1VJRCggMHhhMTlkODgwZiwgMHgwNWZjLCAweDRkM2IsIFxcXFxcXG4gIDQ3OlxcdCAgICAgICAgICAgICAgMHhhMCwgMHgwNiwgMHg3NCwgMHgzZiwgMHgwZiwgMHg4NCwgMHg5MSwgMHgxZSlcXG4gIDQ4OlxcdCNkZWZpbmUgUEFSVElUSU9OX0xJTlVYX1NXQVBfR1VJRCBcXFxcXFxuICA0OTpcXHQgICAgRUZJX0dVSUQoIDB4MDY1N2ZkNmQsIDB4YTRhYiwgMHg0M2M0LCBcXFxcXFxuICA1MDpcXHQgICAgICAgICAgICAgIDB4ODQsIDB4ZTUsIDB4MDksIDB4MzMsIDB4YzgsIDB4NGIsIDB4NGYsIDB4NGYpXFxuICA1MTpcXHQjZGVmaW5lIFBBUlRJVElPTl9MSU5VWF9MVk1fR1VJRCBcXFxcXFxuICA1MjpcXHQgICAgRUZJX0dVSUQoIDB4ZTZkNmQzNzksIDB4ZjUwNywgMHg0NGMyLCBcXFxcXFxuICA1MzpcXHQgICAgICAgICAgICAgIDB4YTIsIDB4M2MsIDB4MjMsIDB4OGYsIDB4MmEsIDB4M2QsIDB4ZjksIDB4MjgpXFxuICA1NDpcXHRcXG4gIDU1OlxcdHR5cGVkZWYgc3RydWN0IF9ncHRfaGVhZGVyIHtcXG4gIDU2OlxcdFxcdF9fbGU2NCBzaWduYXR1cmU7XFxuICA1NzpcXHRcXHRfX2xlMzIgcmV2aXNpb247XFxuICA1ODpcXHRcXHRfX2xlMzIgaGVhZGVyX3NpemU7XFxuICA1OTpcXHRcXHRfX2xlMzIgaGVhZGVyX2NyYzMyO1xcbiAgNjA6XFx0XFx0X19sZTMyIHJlc2VydmVkMTtcXG4gIDYxOlxcdFxcdF9fbGU2NCBteV9sYmE7XFxuICA2MjpcXHRcXHRfX2xlNjQgYWx0ZXJuYXRlX2xiYTtcXG4gIDYzOlxcdFxcdF9fbGU2NCBmaXJzdF91c2FibGVfbGJhO1xcbiAgNjQ6XFx0XFx0X19sZTY0IGxhc3RfdXNhYmxlX2xiYTtcXG4gIDY1OlxcdFxcdGVmaV9ndWlkX3QgZGlza19ndWlkO1xcbiAgNjY6XFx0XFx0X19sZTY0IHBhcnRpdGlvbl9lbnRyeV9sYmE7XFxuICA2NzpcXHRcXHRfX2xlMzIgbnVtX3BhcnRpdGlvbl9lbnRyaWVzO1xcbiAgNjg6XFx0XFx0X19sZTMyIHNpemVvZl9wYXJ0aXRpb25fZW50cnk7XFxuICA2OTpcXHRcXHRfX2xlMzIgcGFydGl0aW9uX2VudHJ5X2FycmF5X2NyYzMyO1xcbiAgNzA6XFx0XFxuICA3MTpcXHRcXHQvKiBUaGUgcmVzdCBvZiB0aGUgbG9naWNhbCBibG9jayBpcyByZXNlcnZlZCBieSBVRUZJIGFuZCBtdXN0IGJlIHplcm8uXFxuICA3MjpcXHRcXHQgKiBFRkkgc3RhbmRhcmQgaGFuZGxlcyB0aGlzIGJ5OlxcbiAgNzM6XFx0XFx0ICpcXG4gIDc0OlxcdFxcdCAqIHVpbnQ4X3RcXHRcXHRyZXNlcnZlZDJbIEJsb2NrU2l6ZSAtIDkyIF07XFxuICA3NTpcXHRcXHQgKi9cXG4gIDc2OlxcdH0gX19wYWNrZWQgZ3B0X2hlYWRlcjtcXG4gIDc3OlxcdFxcbiAgNzg6XFx0dHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeSB7XFxuICA3OTpcXHRcXHRlZmlfZ3VpZF90IHBhcnRpdGlvbl90eXBlX2d1aWQ7XFxuICA4MDpcXHRcXHRlZmlfZ3VpZF90IHVuaXF1ZV9wYXJ0aXRpb25fZ3VpZDtcXG4gIDgxOlxcdFxcdF9fbGU2NCBzdGFydGluZ19sYmE7XFxuICA4MjpcXHRcXHRfX2xlNjQgZW5kaW5nX2xiYTtcXG4gIDgzOlxcdFxcdF9fbGU2NCBhdHRyaWJ1dGVzO1xcbiAgODQ6XFx0XFx0X19sZTE2IHBhcnRpdGlvbl9uYW1lWzcyL3NpemVvZihfX2xlMTYpXTtcXG4gIDg1OlxcdH0gX19wYWNrZWQgZ3B0X2VudHJ5O1xcbiAgODY6XFx0XFxuICA4NzpcXHR0eXBlZGVmIHN0cnVjdCBfZ3B0X21icl9yZWNvcmQge1xcbiAgODg6XFx0XFx0dThcXHRib290X2luZGljYXRvcjsgLyogdW51c2VkIGJ5IEVGSSwgc2V0IHRvIDB4ODAgZm9yIGJvb3RhYmxlICovXFxuICA4OTpcXHRcXHR1OFxcdHN0YXJ0X2hlYWQ7ICAgICAvKiB1bnVzZWQgYnkgRUZJLCBwdCBzdGFydCBpbiBDSFMgKi9cXG4gIDkwOlxcdFxcdHU4XFx0c3RhcnRfc2VjdG9yOyAgIC8qIHVudXNlZCBieSBFRkksIHB0IHN0YXJ0IGluIENIUyAqL1xcbiAgOTE6XFx0XFx0dThcXHRzdGFydF90cmFjaztcXG4gIDkyOlxcdFxcdHU4XFx0b3NfdHlwZTsgICAgICAgIC8qIEVGSSBhbmQgbGVnYWN5IG5vbi1FRkkgT1MgdHlwZXMgKi9cXG4gIDkzOlxcdFxcdHU4XFx0ZW5kX2hlYWQ7ICAgICAgIC8qIHVudXNlZCBieSBFRkksIHB0IGVuZCBpbiBDSFMgKi9cXG4gIDk0OlxcdFxcdHU4XFx0ZW5kX3NlY3RvcjsgICAgIC8qIHVudXNlZCBieSBFRkksIHB0IGVuZCBpbiBDSFMgKi9cXG4gIDk1OlxcdFxcdHU4XFx0ZW5kX3RyYWNrOyAgICAgIC8qIHVudXNlZCBieSBFRkksIHB0IGVuZCBpbiBDSFMgKi9cXG4gIDk2OlxcdFxcdF9fbGUzMlxcdHN0YXJ0aW5nX2xiYTsgICAvKiB1c2VkIGJ5IEVGSSAtIHN0YXJ0IGFkZHIgb2YgdGhlIG9uIGRpc2sgcHQgKi9cXG4gIDk3OlxcdFxcdF9fbGUzMlxcdHNpemVfaW5fbGJhOyAgICAvKiB1c2VkIGJ5IEVGSSAtIHNpemUgb2YgcHQgaW4gTEJBICovXFxuICA5ODpcXHR9IF9fcGFja2VkIGdwdF9tYnJfcmVjb3JkO1xcbiAgOTk6XFx0XFxuIDEwMDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MDEuMjMxMDA1MTI4WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk4MzYxMzc1NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBHUFQgRW50cnkgQXR0cmlidXRlIENoYW5nZSoqXG5cbkFscmlnaHQsIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSSBzZWUgdGhhdCBgZ3B0X2VudHJ5YCBpcyBkZWZpbmVkIGluIGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYC4gVGhlIHZhcmlhYmxlIGBhdHRyaWJ1dGVzYCB3aXRoaW4gdGhhdCBzdHJ1Y3QgaXMgdGhlIHNwZWNpZmljIHRoaW5nIEknbSBmb2N1c2VkIG9uLiBJbml0aWFsbHksIEknbSB0aGlua2luZywgXCJJcyB0aGlzIGFjdHVhbGx5ICp1c2VkKiBhbnl3aGVyZT9cIiBBIHF1aWNrIGdyZXAgZGlkbid0IHR1cm4gdXAgYW55dGhpbmcgaW4gYGJsb2NrL3BhcnRpdGlvbnMvYCBiZXlvbmQgdGhlIGRlZmluaXRpb24gaXRzZWxmLiBJIGRvdWJsZS1jaGVja2VkLCBncmVwcGluZyBmb3IgYGdwdF9lbnRyeWAsIGFuZCBjb25maXJtZWQgaXRzIHVzYWdlIGlzIGxpbWl0ZWQgdG8gdGhlIGBlZmkuY2AgYW5kIGBlZmkuaGAgZmlsZXMgd2l0aGluIHRoYXQgZGlyZWN0b3J5LiBTbywgaXQgcmVhbGx5ICppcyogbmV2ZXIgYWNjZXNzZWQsIGF0IGxlYXN0IG5vdCBkaXJlY3RseS4gVGhhdCdzIG9kZC5cblxuV2h5IHRoZSBjaGFuZ2UgdGhlbj8gVGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uIG9mIGBncHRfZW50cnlfYXR0cmlidXRlc2Agd2FzIGEgYml0ZmllbGQuIEFoLCB0aGUgZGFuZ2VyIG9mIGJpdGZpZWxkcyEgTWFwcGluZyBzdHJ1Y3R1cmVzIHdpdGggYml0ZmllbGRzIGRpcmVjdGx5IHRvIG9uLWRpc2sgZGF0YSBpcyBnZW5lcmFsbHkgYSBuby1uby4gQ29tcGlsZXIgYmVoYXZpb3IgcmVnYXJkaW5nIGJpdGZpZWxkIHBhY2tpbmcgY2FuIHZhcnkgd2lsZGx5IGJldHdlZW4gYXJjaGl0ZWN0dXJlcyBhbmQgZW5kaWFubmVzcy4gSG93ZXZlciwgdGhlIGtlcm5lbCAqbmV2ZXIqIHJlYWRzIG9yIHdyaXRlcyB0aGF0IGZpZWxkOyB0aGUgZXhlY3V0aW9uIGZsb3cgaXNuJ3QgaW1wYWN0ZWQgaGVyZS5cblxuQnV0IHdhaXQgYSBzZWNvbmQuLi4gYHNpemVvZihncHRfZW50cnkpYCBpcyB1c2VkIGluIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBpbiBhIGNydWNpYWwgc2l6ZSBjaGVjazpcblxuYGBgY1xuXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVx1MDAzZXNpemVvZl9wYXJ0aXRpb25fZW50cnkpICE9IHNpemVvZihncHRfZW50cnkpKSB7XG5cdFx0cHJfZGVidWcoXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXG5cIik7XG5gYGBcblxuSWYgdGhlIHNpemUgb2YgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXMgKmRpZmZlcmVudCogZHVlIHRvIHRoZSBiaXRmaWVsZCBjaGFuZ2UsIGBzaXplb2YoZ3B0X2VudHJ5KWAgd291bGQgaGF2ZSBiZWVuIGFmZmVjdGVkIGFuZCBwb3RlbnRpYWxseSBicm9rZW4gdGhlIGNoZWNrISBCdXQsIHRoZSBvcmlnaW5hbCBzdHJ1Y3QsIGBncHRfZW50cnlfYXR0cmlidXRlc2AsIHdhczpcblxuYGBgY1xudHlwZWRlZiBzdHJ1Y3QgX2dwdF9lbnRyeV9hdHRyaWJ1dGVzIHtcblx0dTY0IHJlcXVpcmVkX3RvX2Z1bmN0aW9uOjE7XG5cdHU2NCByZXNlcnZlZDo0NztcbiAgICAgICAgdTY0IHR5cGVfZ3VpZF9zcGVjaWZpYzoxNjtcbn0gX19wYWNrZWQgZ3B0X2VudHJ5X2F0dHJpYnV0ZXM7XG5gYGBcblxuSXQgd2FzIGEgYHU2NGAgYml0ZmllbGQgd2l0aCBhIHRvdGFsIG9mIDY0IGJpdHMgd2l0aCB0aGUgYF9fcGFja2VkYCBhdHRyaWJ1dGUgdG8gZW5zdXJlIG5vIHBhZGRpbmcuIFNvIHRoZSBzaXplIHdhcyA4IGJ5dGVzIGJlZm9yZSAqYW5kKiBhZnRlciB0aGUgY2hhbmdlLCBtYWtpbmcgYHNpemVvZihncHRfZW50cnkpYCBzdGF5IGF0IDEyOCBieXRlcyBpbiBib3RoIGNhc2VzLiBJcyB0aGVyZSAqYW55KiBmdW5jdGlvbmFsIGNoYW5nZSB0aGVuP1xuXG5Ib2xkIG9uLi4uIGV2ZW4gaWYgdGhlIHNpemUgcmVtYWlucyB0aGUgc2FtZSwgYSBiaXRmaWVsZCBgdTY0YCBtaWdodCB0cmlnZ2VyIGNvbXBpbGVyIHdhcm5pbmdzLCBvciBldmVuIHNwYXJzZSBlcnJvcnMuIEFsc28sIGFuZCBtb3JlIGltcG9ydGFudGx5LCB0aGUgb3JpZ2luYWwgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3YXNuJ3QgdXNpbmcgYF9fbGU2NGAuIElmIGl0ICp3ZXJlKiByZWFkLCBpdCB3b3VsZCBiZSBpbnRlcnByZXRlZCBpbiBob3N0IGJ5dGUgb3JkZXIsIHdoaWNoIGlzICp3cm9uZyogZm9yIG9uLWRpc2sgR1BUIGRhdGEgKGxpdHRsZS1lbmRpYW4pLiBCdXQgc2luY2UgaXQncyBuZXZlciByZWFkLCBpdCdzIG5vdCBhIHByb2JsZW0uXG5cbkhtbSwgYnV0ICpjb3VsZCogYGdwdF9lbnRyeWAgZ2V0IGNvcGllZCB0byB1c2Vyc3BhY2U/IExldCdzIGNoZWNrLiBJZiBgZ3B0X2VudHJ5YCB3ZXJlIGV4cG9zZWQgdG8gdXNlcmxhbmQsIHRoZW4gdGhpcyBjaGFuZ2UgKndvdWxkKiBiZSBpbnRlcmVzdGluZywgYnV0IGBibG9jay9wYXJ0aXRpb25zL2VmaS5oYCBpc24ndCBpbiBgaW5jbHVkZS91YXBpL2AsIHNvIGl0J3MgaW50ZXJuYWwgdG8gdGhlIGtlcm5lbC4gSXMgaXQgZXhwb3NlZCB0byB1c2Vyc3BhY2UgdmlhIHNvbWUgSU9DVEw/IEknbGwgbmVlZCB0byBjaGVjayB0aGUgY29kZSBpbiBgYmxvY2svcGFydGl0aW9ucy9lZmkuY2AgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjMyNTgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NTUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzoxMDoxMS4wNjcxNDY0NjJaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNjgyODU4MiwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29weV90b191c2VyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjEwOjExLjI5NDAxMDQ4NFoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDcyMzUzNDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgZGlyZWN0IHJlZmxlY3Rpb24gb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBgZ3B0X2VudHJ5YCBVc2FnZSoqXG5cbkFscmlnaHQsIGZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0J3MgZ2V0IGEgaGFuZGxlIG9uIHRoaXMgYGdwdF9lbnRyeWAgdGhpbmcuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGl0cyBzY29wZSBhbmQgaG93IGl0J3MgYmVpbmcgdXNlZC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgdGhpcyB2YXJpYWJsZSBvciBmdW5jdGlvbiDigJMgd2hhdGV2ZXIgaXQgaXMg4oCTIGlzIGJlaW5nIHBhc3NlZCBhcm91bmQgdG8gb3RoZXIgc3Vic3lzdGVtcy4gVW5kZXJzdGFuZGluZyBpdHMgcHJvcGFnYXRpb24gaXMgY3J1Y2lhbCBmb3IgYXNzZXNzaW5nIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMsIHNpZGUgZWZmZWN0cywgYW5kIG92ZXJhbGwgYXJjaGl0ZWN0dXJhbCBpbXBhY3QuIElzIGl0IGlzb2xhdGVkLCBvciBpcyBpdCBhIGNlbnRyYWwgcG9pbnQgb2YgaW50ZWdyYXRpb24/IEtub3dpbmcgdGhlIGFuc3dlciB0byB0aGF0IHF1ZXN0aW9uIHdpbGwgaW5mb3JtIGFueSBmdXJ0aGVyIGFuYWx5c2lzIEkgbmVlZCB0byBkby4gSSBuZWVkIHRvIG1hcCB3aGVyZSBpdCB0b3VjaGVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDY3NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI2VDA3OjEwOjE0LjM2NjM2NjUxNVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTI3OTM3MTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdwdF9lbnRyeVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJibG9jay9wYXJ0aXRpb25zL2VmaS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9MjM0PXN0YXRpYyBzaXplX3QgcmVhZF9sYmEoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjY5LSAqL1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6MjcwOnN0YXRpYyBncHRfZW50cnkgKmFsbG9jX3JlYWRfZ3B0X2VudHJpZXMoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTI3MS1cXHRcXHRcXHRcXHRcXHQgZ3B0X2hlYWRlciAqZ3B0KVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy0yNzMtXFx0c2l6ZV90IGNvdW50O1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM6Mjc0OlxcdGdwdF9lbnRyeSAqcHRlO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMjc1LVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz0zMzQ9c3RhdGljIGludCBpc19ncHRfdmFsaWQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgdTY0IGxiYSxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjMzNTpcXHRcXHRcXHRncHRfaGVhZGVyICoqZ3B0LCBncHRfZW50cnkgKipwdGVzKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtMzM2LXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE0LVxcdC8qIENoZWNrIHRoYXQgc2l6ZW9mX3BhcnRpdGlvbl9lbnRyeSBoYXMgdGhlIGNvcnJlY3QgdmFsdWUgKi9cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQxNTpcXHRpZiAobGUzMl90b19jcHUoKCpncHQpLVxcdTAwM2VzaXplb2ZfcGFydGl0aW9uX2VudHJ5KSAhPSBzaXplb2YoZ3B0X2VudHJ5KSkge1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDE2LVxcdFxcdHByX2RlYnVnKFxcXCJHVUlEIFBhcnRpdGlvbiBFbnRyeSBTaXplIGNoZWNrIGZhaWxlZC5cXFxcblxcXCIpO1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYz00NTk9c3RhdGljIGlubGluZSBpbnRcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjQ2MDppc19wdGVfdmFsaWQoY29uc3QgZ3B0X2VudHJ5ICpwdGUsIGNvbnN0IHU2NCBsYXN0bGJhKVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNDYxLXtcXG4tLVxcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmM9NTgwPXN0YXRpYyBpbnQgZmluZF92YWxpZF9ncHQoc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSwgZ3B0X2hlYWRlciAqKmdwdCxcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4MTpcXHRcXHRcXHQgIGdwdF9lbnRyeSAqKnB0ZXMpXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODIte1xcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy01ODQtXFx0Z3B0X2hlYWRlciAqcGdwdCA9IE5VTEwsICphZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjU4NTpcXHRncHRfZW50cnkgKnBwdGVzID0gTlVMTCwgKmFwdGVzID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jLTU4Ni1cXHRsZWdhY3lfbWJyICpsZWdhY3ltYnI7XFxuLS1cXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jPTcxMj1pbnQgZWZpX3BhcnRpdGlvbihzdHJ1Y3QgcGFyc2VkX3BhcnRpdGlvbnMgKnN0YXRlKVxcbi0tXFxuYmxvY2svcGFydGl0aW9ucy9lZmkuYy03MTQtXFx0Z3B0X2hlYWRlciAqZ3B0ID0gTlVMTDtcXG5ibG9jay9wYXJ0aXRpb25zL2VmaS5jOjcxNTpcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbmJsb2NrL3BhcnRpdGlvbnMvZWZpLmMtNzE2LVxcdHUzMiBpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzoxMDoxNC40OTQzMDk4MloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTc5MTQzMTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93biBtZW50YWwgcHJvY2Vzc2luZyBhcyBhbiBleHBlcnQ6XG5cbioqSW50ZXJuYWwgR1BUIFBhcnNpbmcgQW5hbHlzaXMqKlxuXG5SaWdodCwgaXQgbG9va3MgbGlrZSBgZ3B0X2VudHJ5YCBpcyBzdHJpY3RseSBhICpwcml2YXRlKiBmdW5jdGlvbiwgYSBoZWxwZXIgcHJpbWFyaWx5IGZvciB0aGUgcGFydGl0aW9uIHRhYmxlIHBhcnNpbmcgcHJvY2Vzcy4gSXQncyBub3QgZXhwb3NlZCBleHRlcm5hbGx5LCB3aGljaCBtYWtlcyBzZW5zZS4gSXRzIG9ubHkgam9iIGlzIHRvIGJyZWFrIGRvd24gdGhlIEdQVCBzdHJ1Y3R1cmVzLCBhbmQgdGhlbiBmZWVkIHRoZSByZXN1bHRzIGludG8gYHN0YXRlYCwgd2hpY2gsIEkgc2VlLCBpcyBhIGBwYXJzZWRfcGFydGl0aW9uc2Agc3RydWN0LiBNYWtlcyB0aGUgYXJjaGl0ZWN0dXJlIHByZXR0eSBjbGVhci4gTGV0IG1lIHF1aWNrbHkganVtcCBvdmVyIHRvIGBibG9jay9wYXJ0aXRpb25zL2VmaS5jYCBhbmQgdGFrZSBhIGxvb2sgYXQgdGhlIGBlZmlfcGFydGl0aW9uYCBjb2RlIOKAkyBJIHdhbnQgdG8gY29uZmlybSBteSB1bmRlcnN0YW5kaW5nIG9mIHRoYXQgcGFyc2luZyBwcm9jZXNzLiBTcGVjaWZpY2FsbHksIEknbSB0aGlua2luZyBJJ2xsIGZvY3VzIG9uIGhvdyBgZWZpX3BhcnRpdGlvbmAgaGFuZGxlcyB0aGF0IHBhcnNlZCBkYXRhIHRoYXQgb3JpZ2luYXRlcyBmcm9tIGBncHRfZW50cnlgLiBJJ20gZ3Vlc3NpbmcgdGhhdCdzIHdoZXJlIHRoZSByZWFsIGxvZ2ljIGlzLCBob3cgdGhlIHBhcnNlZCBHUFQgZW50cmllcyB1bHRpbWF0ZWx5IHRyYW5zbGF0ZSBpbnRvIHVzYWJsZSBwYXJ0aXRpb24gaW5mb3JtYXRpb24gZm9yIHRoZSBzeXN0ZW0uIFRoYXQncyB3aGVyZSB0aGUgZGV2aWwgaXMgaW4gdGhlIGRldGFpbHMsIHNvIGxldCdzIGRpZyBpbnRvIGBlZmkuY2AhXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI1NTIzLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MTguNjczNDU1ODUzWiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNDE2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJibG9jay9wYXJ0aXRpb25zL2VmaS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDcxMixcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MTI6XFx0aW50IGVmaV9wYXJ0aXRpb24oc3RydWN0IHBhcnNlZF9wYXJ0aXRpb25zICpzdGF0ZSlcXG4gNzEzOlxcdHtcXG4gNzE0OlxcdFxcdGdwdF9oZWFkZXIgKmdwdCA9IE5VTEw7XFxuIDcxNTpcXHRcXHRncHRfZW50cnkgKnB0ZXMgPSBOVUxMO1xcbiA3MTY6XFx0XFx0dTMyIGk7XFxuIDcxNzpcXHRcXHR1bnNpZ25lZCBzc3ogPSBxdWV1ZV9sb2dpY2FsX2Jsb2NrX3NpemUoc3RhdGUtXFx1MDAzZWRpc2stXFx1MDAzZXF1ZXVlKSAvIDUxMjtcXG4gNzE4OlxcdFxcbiA3MTk6XFx0XFx0aWYgKCFmaW5kX3ZhbGlkX2dwdChzdGF0ZSwgXFx1MDAyNmdwdCwgXFx1MDAyNnB0ZXMpIHx8ICFncHQgfHwgIXB0ZXMpIHtcXG4gNzIwOlxcdFxcdFxcdGtmcmVlKGdwdCk7XFxuIDcyMTpcXHRcXHRcXHRrZnJlZShwdGVzKTtcXG4gNzIyOlxcdFxcdFxcdHJldHVybiAwO1xcbiA3MjM6XFx0XFx0fVxcbiA3MjQ6XFx0XFxuIDcyNTpcXHRcXHRwcl9kZWJ1ZyhcXFwiR1VJRCBQYXJ0aXRpb24gVGFibGUgaXMgdmFsaWQhICBZZWEhXFxcXG5cXFwiKTtcXG4gNzI2OlxcdFxcbiA3Mjc6XFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGxlMzJfdG9fY3B1KGdwdC1cXHUwMDNlbnVtX3BhcnRpdGlvbl9lbnRyaWVzKSBcXHUwMDI2XFx1MDAyNiBpIFxcdTAwM2Mgc3RhdGUtXFx1MDAzZWxpbWl0LTE7IGkrKykge1xcbiA3Mjg6XFx0XFx0XFx0c3RydWN0IHBhcnRpdGlvbl9tZXRhX2luZm8gKmluZm87XFxuIDcyOTpcXHRcXHRcXHR1bnNpZ25lZCBsYWJlbF9tYXg7XFxuIDczMDpcXHRcXHRcXHR1NjQgc3RhcnQgPSBsZTY0X3RvX2NwdShwdGVzW2ldLnN0YXJ0aW5nX2xiYSk7XFxuIDczMTpcXHRcXHRcXHR1NjQgc2l6ZSA9IGxlNjRfdG9fY3B1KHB0ZXNbaV0uZW5kaW5nX2xiYSkgLVxcbiA3MzI6XFx0XFx0XFx0XFx0ICAgbGU2NF90b19jcHUocHRlc1tpXS5zdGFydGluZ19sYmEpICsgMVVMTDtcXG4gNzMzOlxcdFxcbiA3MzQ6XFx0XFx0XFx0aWYgKCFpc19wdGVfdmFsaWQoXFx1MDAyNnB0ZXNbaV0sIGxhc3RfbGJhKHN0YXRlLVxcdTAwM2VkaXNrKSkpXFxuIDczNTpcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4gNzM2OlxcdFxcbiA3Mzc6XFx0XFx0XFx0cHV0X3BhcnRpdGlvbihzdGF0ZSwgaSsxLCBzdGFydCAqIHNzeiwgc2l6ZSAqIHNzeik7XFxuIDczODpcXHRcXG4gNzM5OlxcdFxcdFxcdC8qIElmIHRoaXMgaXMgYSBSQUlEIHZvbHVtZSwgdGVsbCBtZCAqL1xcbiA3NDA6XFx0XFx0XFx0aWYgKCFlZmlfZ3VpZGNtcChwdGVzW2ldLnBhcnRpdGlvbl90eXBlX2d1aWQsIFBBUlRJVElPTl9MSU5VWF9SQUlEX0dVSUQpKVxcbiA3NDE6XFx0XFx0XFx0XFx0c3RhdGUtXFx1MDAzZXBhcnRzW2kgKyAxXS5mbGFncyA9IEFERFBBUlRfRkxBR19SQUlEO1xcbiA3NDI6XFx0XFxuIDc0MzpcXHRcXHRcXHRpbmZvID0gXFx1MDAyNnN0YXRlLVxcdTAwM2VwYXJ0c1tpICsgMV0uaW5mbztcXG4gNzQ0OlxcdFxcdFxcdGVmaV9ndWlkX3RvX3N0cihcXHUwMDI2cHRlc1tpXS51bmlxdWVfcGFydGl0aW9uX2d1aWQsIGluZm8tXFx1MDAzZXV1aWQpO1xcbiA3NDU6XFx0XFxuIDc0NjpcXHRcXHRcXHQvKiBOYWl2ZWx5IGNvbnZlcnQgVVRGMTYtTEUgdG8gNyBiaXRzLiAqL1xcbiA3NDc6XFx0XFx0XFx0bGFiZWxfbWF4ID0gbWluKEFSUkFZX1NJWkUoaW5mby1cXHUwMDNldm9sbmFtZSkgLSAxLFxcbiA3NDg6XFx0XFx0XFx0XFx0XFx0QVJSQVlfU0laRShwdGVzW2ldLnBhcnRpdGlvbl9uYW1lKSk7XFxuIDc0OTpcXHRcXHRcXHR1dGYxNl9sZV90b183Yml0KHB0ZXNbaV0ucGFydGl0aW9uX25hbWUsIGxhYmVsX21heCwgaW5mby1cXHUwMDNldm9sbmFtZSk7XFxuIDc1MDpcXHRcXHRcXHRzdGF0ZS1cXHUwMDNlcGFydHNbaSArIDFdLmhhc19pbmZvID0gdHJ1ZTtcXG4gNzUxOlxcdFxcdH1cXG4gNzUyOlxcdFxcdGtmcmVlKHB0ZXMpO1xcbiA3NTM6XFx0XFx0a2ZyZWUoZ3B0KTtcXG4gNzU0OlxcdFxcdHNlcV9idWZfcHV0cyhcXHUwMDI2c3RhdGUtXFx1MDAzZXBwX2J1ZiwgXFxcIlxcXFxuXFxcIik7XFxuIDc1NTpcXHRcXHRyZXR1cm4gMTtcXG4gNzU2OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MTguNjczNTk0NjAzWiIsIlNlcSI6MzUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNzI4NDc3MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGJpdCBwdXp6bGluZyBhdCBmaXJzdCBnbGFuY2UuIEl0IGxvb2tzIGxpa2UgdGhleSdyZSBjaGFuZ2luZyB0aGUgZGF0YSB0eXBlIG9mIHRoZSBgYXR0cmlidXRlc2AgZmllbGQgZnJvbSBhIGJpdGZpZWxkIHN0cnVjdCB0byBhIGBfX2xlNjRgLiBUaGUga2VybmVsJ3MgYWN0dWFsbHkgKm5vdCogdXNpbmcgdGhvc2UgYGF0dHJpYnV0ZXNgIGFueXdoZXJlLCBzbyBvbiB0aGUgZmFjZSBvZiBpdCwgdGhpcyBjaGFuZ2Ugc2hvdWxkIGJlIGNvbXBsZXRlbHkgaW5lcnQuIEl0IHdvbid0IGFmZmVjdCB0aGUgZXhlY3V0aW9uIHBhdGggaW4gdGhlIHNsaWdodGVzdC5cblxuSXQncyBwcm9iYWJseSBqdXN0IGEgY2xlYW51cCwgcmlnaHQ/IFBlcmhhcHMgdGhleSdyZSBnZXR0aW5nIHJpZCBvZiB0aGUgYml0ZmllbGQgYmVjYXVzZSBpdCdzIG5vbi1zdGFuZGFyZCwgb3IgbWF5YmUgaXQgd2FzIGdlbmVyYXRpbmcgc3BhcnNlIHdhcm5pbmdzLiBPciwgbW9yZSBsaWtlbHksIHRoZXkncmUgYWxpZ25pbmcgdGhlIGRhdGEgdHlwZSB0byBtYXRjaCBob3cgdGhlIGZpZWxkIGlzIHJlcHJlc2VudGVkIG9uIGRpc2ssIGFzc3VtaW5nIGxpdHRsZS1lbmRpYW5uZXNzIGlzIHJlbGV2YW50LlxuXG5Ib2xkIG9uIGEgc2Vjb25kLCBsZXQgbWUganVzdCBkb3VibGUtY2hlY2sgdGhhdCBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIGlzbid0ICp1c2VkKiBhbnl3aGVyZSBlbHNlIGluIHRoZSBrZXJuZWwuIEdvdHRhIGJlIHRob3JvdWdoLiBKdXN0IHdhbnQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYSBjcnVjaWFsIGRldGFpbC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY2NzUsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNlQwNzoxMDoyMi45NDY0NDcyODZaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4NzgyNjcxOTYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImdwdF9lbnRyeV9hdHRyaWJ1dGVzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MjcuODI0NzIzMzYzWiIsIlNlcSI6MzcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUzODEwMjE2MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVjaXNpb246IE5vIEZ1enppbmcgTmVjZXNzYXJ5KipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgdGhyb3VnaCB0aGUgY2hhbmdlcy4gTm8gbWF0Y2hlcywgd2hpY2ggbWVhbnMgd2UncmUgZGVhbGluZyBwdXJlbHkgd2l0aCBkZWNvcmF0aXZlIHVwZGF0ZXMgb3IgY29kZSBjbGVhbnVwLiBDb25zZXF1ZW50bHksIGBXb3J0aEZ1enppbmdgIHNob3VsZCBkZWZpbml0ZWx5IGJlIHNldCB0byBgZmFsc2VgLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiwgSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgZm9yIGFueSBzdWJ0bGUsIHVuZXhwZWN0ZWQgaW1wYWN0cy4gSG1tbSwgY291bGQgdGhlIGBzaXplb2YoZ3B0X2VudHJ5KWAgaGF2ZSBjaGFuZ2VkLCBldmVuIHN1YnRseT8gTGV0J3MgcmVmcmVzaCBvdXIgbWVtb3J5IG9uIGBncHRfZW50cnlfYXR0cmlidXRlc2A6XG5cbmBgYGNcbnR5cGVkZWYgc3RydWN0IF9ncHRfZW50cnlfYXR0cmlidXRlcyB7XG5cdHU2NCByZXF1aXJlZF90b19mdW5jdGlvbjoxO1xuXHR1NjQgcmVzZXJ2ZWQ6NDc7XG4gICAgICAgIHU2NCB0eXBlX2d1aWRfc3BlY2lmaWM6MTY7XG59IF9fcGFja2VkIGdwdF9lbnRyeV9hdHRyaWJ1dGVzO1xuYGBgXG5cblJpZ2h0LCBpdCdzIGBfX3BhY2tlZGAuIEEgcGFja2VkIHN0cnVjdCwgdXNpbmcgNjQgYml0cyB3aXRoIGJpdGZpZWxkcywgKmFsd2F5cyogZW5kcyB1cCBiZWluZyBleGFjdGx5IDggYnl0ZXMuIEFuZCBgX19sZTY0YCBpcyBhbHNvIHByZWNpc2VseSA4IGJ5dGVzLiBTbywgYmFzZWQgb24gdGhpcyByZXZpZXcgb2YgdGhlIGNoYW5nZXMsIHRoZSBgc2l6ZW9mKGdwdF9lbnRyeSlgIHJlbWFpbnMgKmlkZW50aWNhbCouIE5vIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aGF0c29ldmVyLlxuXG5UaGVyZWZvcmUsIG15IGZpbmFsIGRlY2lzaW9uIGlzIGNsZWFyOiBJJ20gcmV0dXJuaW5nIGBXb3J0aEZ1enppbmc9ZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzA0OCwiT3V0cHV0VG9rZW5zIjoxMzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjZUMDc6MTA6MzMuMjA1NzQ4Mjc4WiIsIlNlcSI6MzgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYSBiaXRmaWVsZCBzdHJ1Y3QgYGdwdF9lbnRyeV9hdHRyaWJ1dGVzYCB3aXRoIGEgc2ltcGxlIGBfX2xlNjQgYXR0cmlidXRlc2AgaW4gYGdwdF9lbnRyeWAuIFRoZSBgYXR0cmlidXRlc2AgZmllbGQgaXMgbmV2ZXIgYWNjZXNzZWQgYW55d2hlcmUgaW4gdGhlIGtlcm5lbCBjb2RlLiBUaGUgc2l6ZSBvZiBgZ3B0X2VudHJ5YCByZW1haW5zIGV4YWN0bHkgdGhlIHNhbWUgKDEyOCBieXRlcykgYmVjYXVzZSB0aGUgb2xkIHN0cnVjdCB3YXMgYF9fcGFja2VkYCBhbmQgY29udGFpbmVkIGV4YWN0bHkgNjQgYml0cyBvZiBiaXRmaWVsZHMuIFRoZXJlZm9yZSwgdGhpcyBpcyBhIHB1cmVseSBkZWNvcmF0aXZlL2NsZWFudXAgY2hhbmdlIHdpdGggbm8gZnVuY3Rpb25hbCBpbXBhY3Qgb24gZXhlY3V0aW9uIGZsb3cuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBhIGJpdGZpZWxkIHN0cnVjdCBgZ3B0X2VudHJ5X2F0dHJpYnV0ZXNgIHdpdGggYSBzaW1wbGUgYF9fbGU2NCBhdHRyaWJ1dGVzYCBpbiBgZ3B0X2VudHJ5YC4gVGhlIGBhdHRyaWJ1dGVzYCBmaWVsZCBpcyBuZXZlciBhY2Nlc3NlZCBhbnl3aGVyZSBpbiB0aGUga2VybmVsIGNvZGUuIFRoZSBzaXplIG9mIGBncHRfZW50cnlgIHJlbWFpbnMgZXhhY3RseSB0aGUgc2FtZSAoMTI4IGJ5dGVzKSBiZWNhdXNlIHRoZSBvbGQgc3RydWN0IHdhcyBgX19wYWNrZWRgIGFuZCBjb250YWluZWQgZXhhY3RseSA2NCBiaXRzIG9mIGJpdGZpZWxkcy4gVGhlcmVmb3JlLCB0aGlzIGlzIGEgcHVyZWx5IGRlY29yYXRpdmUvY2xlYW51cCBjaGFuZ2Ugd2l0aCBubyBmdW5jdGlvbmFsIGltcGFjdCBvbiBleGVjdXRpb24gZmxvdy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow42nxx[1] Phase: Running StartedAt: 2026-07-26 07:10:44 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflow42nxx[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-26 07:10:44 +0000 UTC FinishedAt: 2026-07-26 07:10:51 +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,}